@c8y/ngx-components 1021.13.3 → 1021.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alarms/alarms-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +1 -0
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +30 -0
- package/alarms/alarms.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +1 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +7 -5
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +4 -7
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +4 -4
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/core/action-bar/action-bar-item.component.d.ts +1 -1
- package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
- package/core/action-bar/action-bar.module.d.ts +6 -6
- package/core/action-bar/action-bar.module.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts +3 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts +39 -0
- package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/common/aggregation/aggregation.service.d.ts +17 -0
- package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/common/index.d.ts +4 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +48 -0
- package/core/common/inter-app.service.d.ts.map +1 -0
- package/core/common/interval-based-reload.abstract.d.ts +120 -0
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
- package/core/dashboard/dashboard.module.d.ts +24 -18
- package/core/dashboard/dashboard.module.d.ts.map +1 -1
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
- package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +11 -8
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +6 -12
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/header/header.module.d.ts +18 -18
- package/core/header/header.module.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +1 -1
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
- package/core/i18n/i18n.module.d.ts +0 -4
- package/core/i18n/i18n.module.d.ts.map +1 -1
- package/core/i18n/index.d.ts +2 -1
- package/core/i18n/index.d.ts.map +1 -1
- package/core/i18n/translation-loader.service.d.ts +50 -0
- package/core/i18n/translation-loader.service.d.ts.map +1 -0
- package/core/i18n/translation-utils.d.ts +14 -0
- package/core/i18n/translation-utils.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +7 -10
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
- package/datapoints-export-selector/index.d.ts +15 -0
- package/datapoints-export-selector/index.d.ts.map +1 -0
- package/device-list/device-list.module.d.ts +4 -2
- package/device-list/device-list.module.d.ts.map +1 -1
- package/esm2022/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-view.service.mjs +2 -1
- package/esm2022/alarms/alarms.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
- package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
- package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
- package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
- package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
- package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
- package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
- package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
- package/esm2022/core/common/index.mjs +5 -1
- package/esm2022/core/common/inter-app.service.mjs +76 -0
- package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
- package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
- package/esm2022/core/dashboard/dashboard.module.mjs +18 -1
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -37
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -3
- package/esm2022/core/header/header.module.mjs +7 -5
- package/esm2022/core/header/title/title.component.mjs +3 -3
- package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
- package/esm2022/core/i18n/i18n.module.mjs +7 -14
- package/esm2022/core/i18n/index.mjs +3 -2
- package/esm2022/core/i18n/translate.parser.mjs +2 -2
- package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
- package/esm2022/core/i18n/translation-utils.mjs +24 -0
- package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
- package/esm2022/datapoints-export-selector/index.mjs +15 -0
- package/esm2022/device-list/add-smart-group.component.mjs +4 -3
- package/esm2022/device-list/device-list.module.mjs +22 -4
- package/esm2022/map/cluster-map.component.mjs +41 -13
- package/esm2022/map/map-status.component.mjs +6 -5
- package/esm2022/map/map.component.mjs +9 -5
- package/esm2022/map/map.model.mjs +1 -1
- package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
- package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
- package/esm2022/translation-editor/data/index.mjs +2 -0
- package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
- package/esm2022/translation-editor/index.mjs +10 -0
- package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
- package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -0
- package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
- package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
- package/esm2022/widgets/cockpit/index.mjs +4 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/map/index.mjs +4 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
- package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
- package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
- package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
- package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +5 -15
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +52 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +5080 -4272
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +289 -18
- package/locales/en.po +12 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +253 -18
- package/locales/fr.po +253 -18
- package/locales/ja_JP.po +282 -18
- package/locales/locales.pot +257 -18
- package/locales/nl.po +253 -18
- package/locales/pl.po +253 -18
- package/locales/pt_BR.po +253 -18
- package/map/cluster-map.component.d.ts +8 -3
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +0 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +4 -2
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +2 -1
- package/map/map.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
- package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
- package/translation-editor/data/index.d.ts +2 -0
- package/translation-editor/data/index.d.ts.map +1 -0
- package/translation-editor/data/translation-store.service.d.ts +61 -0
- package/translation-editor/data/translation-store.service.d.ts.map +1 -0
- package/translation-editor/index.d.ts +2 -0
- package/translation-editor/index.d.ts.map +1 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
- package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +2 -0
- package/translation-editor/lazy/index.d.ts.map +1 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
- package/widgets/cockpit/index.d.ts +13 -0
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
- package/widgets/definitions/datapoints-table/index.d.ts +14 -0
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +2 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/index.d.ts +10 -0
- package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +8 -3
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.model.d.ts +4 -3
- package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
- package/core/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -35,21 +35,10 @@ export class AlarmsListComponent {
|
|
|
35
35
|
* clicks on an alarm.
|
|
36
36
|
*/
|
|
37
37
|
this.navigationOptions = {
|
|
38
|
-
/**
|
|
39
|
-
* Defines if the alarm should navigate to a detail view when clicked.
|
|
40
|
-
*/
|
|
41
38
|
allowNavigationToAlarmsView: true,
|
|
42
|
-
/**
|
|
43
|
-
* Defines if the component should try to determine the context to navigate
|
|
44
|
-
* to the correct alarm detail view or not. If set to true, the component will
|
|
45
|
-
* not try to determine the context and will always navigate to the all alarms view.
|
|
46
|
-
*/
|
|
47
39
|
alwaysNavigateToAllAlarms: false,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* the alarm is cleared.
|
|
51
|
-
*/
|
|
52
|
-
includeClearedQueryParams: false
|
|
40
|
+
includeClearedQueryParams: false,
|
|
41
|
+
queryParamsHandling: 'merge'
|
|
53
42
|
};
|
|
54
43
|
/**
|
|
55
44
|
* Controls the visibility of the loading bar
|
|
@@ -158,11 +147,11 @@ export class AlarmsListComponent {
|
|
|
158
147
|
this.activeChildParam$.subscribe();
|
|
159
148
|
}
|
|
160
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AlarmsViewService }, { token: i3.ContextRouteService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"merge\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
162
151
|
}
|
|
163
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, decorators: [{
|
|
164
153
|
type: Component,
|
|
165
|
-
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"
|
|
154
|
+
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
|
|
166
155
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.AlarmsViewService }, { type: i3.ContextRouteService }, { type: i1.Router }], propDecorators: { alarms: [{
|
|
167
156
|
type: Input
|
|
168
157
|
}], hasPermissions: [{
|
|
@@ -185,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
185
174
|
type: ViewChild,
|
|
186
175
|
args: ['scrollWrapper']
|
|
187
176
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sbUJBQW1CO0lBOEc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWpIZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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e1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIExvYWRNb3JlTW9kZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50LCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsYXJtc1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hbGFybXMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSBhbGFybSBzaG91bGQgbmF2aWdhdGUgdG8gYSBkZXRhaWwgdmlldyB3aGVuIGNsaWNrZWQuXG4gICAgICovXG4gICAgYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3OiB0cnVlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdHJ5IHRvIGRldGVybWluZSB0aGUgY29udGV4dCB0byBuYXZpZ2F0ZVxuICAgICAqIHRvIHRoZSBjb3JyZWN0IGFsYXJtIGRldGFpbCB2aWV3IG9yIG5vdC4gSWYgc2V0IHRvIHRydWUsIHRoZSBjb21wb25lbnQgd2lsbFxuICAgICAqIG5vdCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGFuZCB3aWxsIGFsd2F5cyBuYXZpZ2F0ZSB0byB0aGUgYWxsIGFsYXJtcyB2aWV3LlxuICAgICAqL1xuICAgIGFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNsZWFyZWQgcXVlcnkgcGFyYW1ldGVyIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbmF2aWdhdGlvbiBpZlxuICAgICAqIHRoZSBhbGFybSBpcyBjbGVhcmVkLlxuICAgICAqL1xuICAgIGluY2x1ZGVDbGVhcmVkUXVlcnlQYXJhbXM6IGZhbHNlXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBsb2FkaW5nIGJhclxuICAgKiBXaGVuIHNldCB0byBgZmFsc2VgLCB0aGUgYWxhcm0gbGlzdCBpcyBkaXNwbGF5ZWQuIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIG9wYWNpdHkgb2YgYWxhcm1zIGxpc3QgaXMgY2hhbmdlZCBhbmQgYSBsb2FkaW5nIGJhciBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzSW5pdGlhbExvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgYW5kIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBjb21wb25lbnRzXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgbWVhbnMgdGhlIGxpc3QgaXMgZGlzcGxheWVkIGluIGEgc3BsaXQgdmlldyBsYXlvdXQ6XG4gICAqIHRoZSBsaXN0IG9uIHRoZSBmaXJzdCBjb2x1bW4gYW5kIHRoZSBzZWxlY3RlZCByZWNvcmQgZGV0YWlsIG9uIHRoZSBzZWNvbmQgY29sdW1uICh0aGUgY29ja3BpdFxuICAgKiBhbGFybXMgdmlldyBmb3IgZXhhbXBsZSlcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBhcyBhIHN0YW5kYWxvbmUgY29tcG9uZW50LCBvcGVuaW5nIHRoZSBkZXRhaWwgd2lsbFxuICAgKiByZWRpcmVjdCB0byB0aGUgYWxhcm1zXG4gICAqL1xuICBASW5wdXQoKVxuICBzcGxpdFZpZXcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gaW5zdGFuY2Ugb2YgYSBzZWxlY3RlZCBhbGFybSB3aGVuIG9uZSBpcyBjaG9zZW4gZnJvbSB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdGVkQWxhcm0gPSBuZXcgRXZlbnRFbWl0dGVyPElBbGFybT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhlIHNjcm9sbGluZyBzdGF0ZTogdHJ1ZSB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBzY3JvbGxpbmcsIGFuZCBmYWxzZSB3aGVuIHRoZSB1c2VyIHJlYWNoZXMgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNjcm9sbGluZ1N0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGFsYXJtIG9yIGxhc3QgYWxhcm0gbWFya2VkIGFzIGFjdGl2ZSBieSB0aGUgcm91dGVyTGlua0FjdGl2ZSBkaXJlY3RpdmUuXG4gICAqL1xuICBhY3RpdmVBbGFybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBbGFybT4obnVsbCk7XG4gIGFjdGl2ZUNoaWxkUGFyYW0kID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbFdyYXBwZXInKVxuICBpbm5lclNjcm9sbFdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNTY3JvbGxpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgYzh5LWxvYWRpbmcgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqIFRoZSBsb2FkaW5nIGNvbXBvbmVudCBpcyBzaG93biB3aGVuIG5vIGFsYXJtcyBhcmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IG9yIHdoZW4gdGhlIHJlcXVlc3QgaXMgaW5pdGlhbCxcbiAgICogYXMgd2UgZG9uJ3Qgd2FudCB0byBzZWUgZW1wdHkgc3BhY2Ugb24gYWxhcm0gbGlzdCBkdXJpbmcgbG9hZGluZy5cbiAgICovXG4gIGlzRW1wdHlMaXN0TG9hZGluZyA9IHRydWU7XG5cbiAgYWxlcnRBZ2dyZWdhdG9yID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IoKTtcblxuICBtYXBBbGFybUxpbmsgPSBwaXBlKFxuICAgIG1hcCgoYWxhcm1zOiBJQWxhcm1bXSkgPT5cbiAgICAgIGFsYXJtcy5tYXAoKGFsYXJtOiBJQWxhcm0pID0+IHtcbiAgICAgICAgYWxhcm0ubGluayA9IHRoaXMuZ2V0Um91dGVyTGluayhhbGFybSk7XG4gICAgICAgIHJldHVybiBhbGFybTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIEhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTCA9IDUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMudmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNoYW5nZSBvZiB0aGUgYWN0aXZlIHJvdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gaXNBY3RpdmUgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3V0ZSBpcyBhY3RpdmUgb3Igbm90LlxuICAgKiBAcGFyYW0gc2Nyb2xsQW5jaG9yIC0gVGhlIExpc3RJdGVtQ29tcG9uZW50IHVzZWQgYXMgYSBzY3JvbGwgYW5jaG9yLlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgSUFsYXJtIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGFjdGl2ZSBhbGFybS5cbiAgICovXG4gIGFjdGl2ZVJvdXRlQ2hhbmdlZChpc0FjdGl2ZTogYm9vbGVhbiwgc2Nyb2xsQW5jaG9yOiBMaXN0SXRlbUNvbXBvbmVudCwgYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgc2Nyb2xsQW5jaG9yLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgYmxvY2s6ICduZWFyZXN0J1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KGFsYXJtKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWxhcm1zICYmIGNoYW5nZXMuYWxhcm1zKSB7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5pc0VtcHR5TGlzdExvYWRpbmcgPSAhdGhpcy5hbGFybXM/LmRhdGE/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oYXNQZXJtaXNzaW9ucz8uY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5hbGVydEFnZ3JlZ2F0b3IuYWRkQWxlcnRzKFxuICAgICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgICB0eXBlOiAnc3lzdGVtJyxcbiAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFsYXJtcy5cIilcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLmlubmVyU2Nyb2xsV3JhcHBlci5uYXRpdmVFbGVtZW50O1xuICAgICAgZnJvbUV2ZW50KHNjcm9sbEVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRoaXMuc2hvdWxkQ291bnRkb3duSW50ZXJ2YWxCZUhpZGRlbih0YXJnZXQpO1xuICAgICAgICAgIHRoaXMub25TY3JvbGxpbmdTdGF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNTY3JvbGxpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbkFsYXJtT3BlbihhbGFybTogSUFsYXJtKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdGVkQWxhcm0uZW1pdChhbGFybSk7XG4gIH1cblxuICBnZXRSb3V0ZXJMaW5rKGFsYXJtOiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25PcHRpb25zLmFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmdldFJvdXRlckxpbmsobnVsbCwgYWxhcm0pO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhLCBhbGFybSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNjcm9sbFRvcFBpeGVscyA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgcmV0dXJuIHNjcm9sbFRvcFBpeGVscyA+IHRoaXMuSElERV9JTlRFUlZBTF9DT1VOVERPV05fU0NST0xMO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJZkZpbHRlcnNNYXRjaGluZ0FsYXJtKCkge1xuICAgIHRoaXMuYWN0aXZlQ2hpbGRQYXJhbSQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlblswXS5wYXJhbXMpLFxuICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgLy8gZG9uZSB0byBnZXQgdGhlIGZpcnN0IG5hdmlnYXRpb25cbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaW5uZXItc2Nyb2xsXCJcbiAgW25nQ2xhc3NdPVwieyAnc3BsaXQtdmlld19fbGlzdCBiZy1sZXZlbC0xJzogc3BsaXRWaWV3LCAnYmctY29tcG9uZW50JzogIXNwbGl0VmlldyB9XCJcbiAgZGF0YS1jeT1cImM4eS1hbGFybXMtbGlzdFwiXG4gICNzY3JvbGxXcmFwcGVyXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZsZXgtd3JhcCBmbGV4LW5vLXNocmluayBzdGlja3ktdG9wIG0tYi0xNlwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NlcGFyYXRvci1ib3R0b20gY2FyZC1oZWFkZXIgcC1iLTAnOiBzcGxpdFZpZXcsXG4gICAgICAnZC1mbGV4IGZpdC13IHNlcGFyYXRvci10b3AtYm90dG9tIHdpZGdldC1iYXIgcC1sLTE2IHAtci0xNic6XG4gICAgICAgICFzcGxpdFZpZXcgJiYgbmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3XG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImg0IGNhcmQtdGl0bGVcIlxuICAgICAgKm5nSWY9XCJzcGxpdFZpZXdcIlxuICAgID5cbiAgICAgIHt7ICdBbGFybXMgbGlzdCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7ICdmaXQtdyBkLWZsZXggYS1pLWNlbnRlciBnYXAtMTYnOiAhc3BsaXRWaWV3LCAnZml0LWgtMjAgbS1sLWF1dG8nOiBzcGxpdFZpZXcgfVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gIExvYWRpbmcgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaXQtdyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgW25nQ2xhc3NdPVwieyAncC10LTE2Jzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsb2FkaW5nLWJhclwiXG4gICAgICAgIHN0eWxlPVwiei1pbmRleDogMTAxXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGlzSW5pdGlhbExvYWRpbmcgJiYgIWlzRW1wdHlMaXN0TG9hZGluZyB9XCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhaXNFbXB0eUxpc3RMb2FkaW5nICYmXG4gICAgICAgIChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKSAmJlxuICAgICAgICAoYWN0aXZlQWxhcm0kIHwgYXN5bmMpPy5pZCAhPT0gKGFjdGl2ZUNoaWxkUGFyYW0kIHwgYXN5bmMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIFRoZSBzZWxlY3RlZCBhbGFybSBpcyBub3QgY3VycmVudGx5IGluIHRoZSBsaXN0LCBjaGFuZ2UgeW91ciBmaWx0ZXIuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Yzh5LWxpc3QtZ3JvdXBcbiAgICBjbGFzcz1cInAtci0xNiBpbnRlcmFjdGl2ZVwiXG4gICAgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgPyAwLjIgOiAxIH1cIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXJcIlxuICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tZ3JvdXBcIlxuICA+XG4gICAgPGM4eS1saS10aW1lbGluZVxuICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImM4eS1hbGFybS1saXN0LS10aW1lbGluZS1yZXBlYXRcIlxuICAgICAgKmM4eUZvcj1cImxldCBhbGFybSBvZiBhbGFybXM7IGxldCBpID0gaW5kZXg7IHBpcGU6IG1hcEFsYXJtTGluazsgbG9hZE1vcmU6IGxvYWRNb3JlTW9kZVwiXG4gICAgICBbcm91dGVyTGlua109XCJuYXZpZ2F0aW9uT3B0aW9ucy5hbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXcgPyBhbGFybS5saW5rIDogbnVsbFwiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc9XCJtZXJnZVwiXG4gICAgICAoaXNBY3RpdmVDaGFuZ2UpPVwiYWN0aXZlUm91dGVDaGFuZ2VkKCRldmVudCwgbGlTY3JvbGxBbmNob3IsIGFsYXJtKVwiXG4gICAgICAoY2xpY2spPVwib25BbGFybU9wZW4oYWxhcm0pXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJcbiAgICAgICAgbmF2aWdhdGlvbk9wdGlvbnMuaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtc1xuICAgICAgICAgID8geyBzaG93Q2xlYXJlZDogYWxhcm0uc3RhdHVzID09PSAnQ0xFQVJFRCcgfVxuICAgICAgICAgIDoge31cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAge3sgYWxhcm0udGltZSB8IGM4eURhdGU6ICdtZWRpdW1EYXRlJyB9fVxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bVRpbWUnIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIHN0eWxlPVwic2Nyb2xsLW1hcmdpbi10b3A6IDU2cHhcIlxuICAgICAgICAjbGlTY3JvbGxBbmNob3JcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwiYS1zLXN0YXJ0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFsYXJtLWljb25zXCI+XG4gICAgICAgICAgICA8Yzh5LWFsYXJtcy1pY29uIFt0eXBlRmlsdGVyc109XCJ0eXBlRmlsdGVyc1wiIFthbGFybV09XCJhbGFybVwiPjwvYzh5LWFsYXJtcy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uY291bnQgPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgYWxhcm0uY291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiYS1zLXN0cmV0Y2hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1zdGFydCBmaXQtaFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi13aWR0aC0wIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcCBwLWItNFwiPlxuICAgICAgICAgICAgICAgIHt7IGFsYXJtLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZCB0ZXh0LXRydW5jYXRlIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYWxhcm0uc291cmNlLm5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidleGNoYW5nZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICB7eyBhbGFybS5zb3VyY2UubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWxhcm0gfCBhbGFybUxpc3RJbmRpY2F0b3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjOHlJY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICAgIDxjOHktbG9hZGluZyAqbmdJZj1cImlzSW5pdGlhbExvYWRpbmcgJiYgaXNFbXB0eUxpc3RMb2FkaW5nXCI+PC9jOHktbG9hZGluZz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInAtcmVsYXRpdmUgcC1sLTI0XCJcbiAgICAgICpuZ0lmPVwiaXNFbXB0eUxpc3RMb2FkaW5nICYmICFpc0luaXRpYWxMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIidjOHktYWxlcnQtaWRsZSdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGFsYXJtcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBkYXRhLWN5PVwiYWxhcm0tbGlzdC0tZW1wdHktc3RhdGVcIlxuICAgICAgICAqbmdJZj1cImhhc1Blcm1pc3Npb25zOyBlbHNlIGFsZXJ0c0FcIlxuICAgICAgPlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2RldmljZS1tYW5hZ2VtZW50LWFwcGxpY2F0aW9uL21vbml0b3JpbmctYW5kLWNvbnRyb2xsaW5nLWRldmljZXMvI3dvcmtpbmctd2l0aC1hbGFybXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIC5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGlzdC1ncm91cD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FsZXJ0c0E+XG4gIDxjOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzIFthbGVydHNdPVwiYWxlcnRBZ2dyZWdhdG9yXCI+PC9jOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRHZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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d0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQWxhcm0sIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgTG9hZE1vcmVNb2RlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICcuL2FsYXJtcy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9uczogQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICBhbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXc6IHRydWUsXG4gICAgYWx3YXlzTmF2aWdhdGVUb0FsbEFsYXJtczogZmFsc2UsXG4gICAgaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtczogZmFsc2UsXG4gICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbG9hZGluZyBiYXJcbiAgICogV2hlbiBzZXQgdG8gYGZhbHNlYCwgdGhlIGFsYXJtIGxpc3QgaXMgZGlzcGxheWVkLiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBvcGFjaXR5IG9mIGFsYXJtcyBsaXN0IGlzIGNoYW5nZWQgYW5kIGEgbG9hZGluZyBiYXIgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpc0luaXRpYWxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgY29tcG9uZW50c1xuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIG1lYW5zIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBpbiBhIHNwbGl0IHZpZXcgbGF5b3V0OlxuICAgKiB0aGUgbGlzdCBvbiB0aGUgZmlyc3QgY29sdW1uIGFuZCB0aGUgc2VsZWN0ZWQgcmVjb3JkIGRldGFpbCBvbiB0aGUgc2Vjb25kIGNvbHVtbiAodGhlIGNvY2twaXRcbiAgICogYWxhcm1zIHZpZXcgZm9yIGV4YW1wbGUpXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgYXMgYSBzdGFuZGFsb25lIGNvbXBvbmVudCwgb3BlbmluZyB0aGUgZGV0YWlsIHdpbGxcbiAgICogcmVkaXJlY3QgdG8gdGhlIGFsYXJtc1xuICAgKi9cbiAgQElucHV0KClcbiAgc3BsaXRWaWV3ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGluc3RhbmNlIG9mIGEgc2VsZWN0ZWQgYWxhcm0gd2hlbiBvbmUgaXMgY2hvc2VuIGZyb20gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TZWxlY3RlZEFsYXJtID0gbmV3IEV2ZW50RW1pdHRlcjxJQWxhcm0+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBzY3JvbGxpbmcgc3RhdGU6IHRydWUgd2hlbiB0aGUgdXNlciBzdGFydHMgc2Nyb2xsaW5nLCBhbmQgZmFsc2Ugd2hlbiB0aGUgdXNlciByZWFjaGVzIHRoZSB0b3Agb2YgdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxpbmdTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQ3VycmVudCBhbGFybSBvciBsYXN0IGFsYXJtIG1hcmtlZCBhcyBhY3RpdmUgYnkgdGhlIHJvdXRlckxpbmtBY3RpdmUgZGlyZWN0aXZlLlxuICAgKi9cbiAgYWN0aXZlQWxhcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQWxhcm0+KG51bGwpO1xuICBhY3RpdmVDaGlsZFBhcmFtJCA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxXcmFwcGVyJylcbiAgaW5uZXJTY3JvbGxXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gIGlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGM4eS1sb2FkaW5nIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKiBUaGUgbG9hZGluZyBjb21wb25lbnQgaXMgc2hvd24gd2hlbiBubyBhbGFybXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgdmlldyBvciB3aGVuIHRoZSByZXF1ZXN0IGlzIGluaXRpYWwsXG4gICAqIGFzIHdlIGRvbid0IHdhbnQgdG8gc2VlIGVtcHR5IHNwYWNlIG9uIGFsYXJtIGxpc3QgZHVyaW5nIGxvYWRpbmcuXG4gICAqL1xuICBpc0VtcHR5TGlzdExvYWRpbmcgPSB0cnVlO1xuXG4gIGFsZXJ0QWdncmVnYXRvciA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yKCk7XG5cbiAgbWFwQWxhcm1MaW5rID0gcGlwZShcbiAgICBtYXAoKGFsYXJtczogSUFsYXJtW10pID0+XG4gICAgICBhbGFybXMubWFwKChhbGFybTogSUFsYXJtKSA9PiB7XG4gICAgICAgIGFsYXJtLmxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoYWxhcm0pO1xuICAgICAgICByZXR1cm4gYWxhcm07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBISURFX0lOVEVSVkFMX0NPVU5URE9XTl9TQ1JPTEwgPSA1MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFsYXJtc1ZpZXdTZXJ2aWNlOiBBbGFybXNWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLnZlcmlmeUlmRmlsdGVyc01hdGNoaW5nQWxhcm0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb2YgdGhlIGFjdGl2ZSByb3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGlzQWN0aXZlIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm91dGUgaXMgYWN0aXZlIG9yIG5vdC5cbiAgICogQHBhcmFtIHNjcm9sbEFuY2hvciAtIFRoZSBMaXN0SXRlbUNvbXBvbmVudCB1c2VkIGFzIGEgc2Nyb2xsIGFuY2hvci5cbiAgICogQHBhcmFtIGFsYXJtIC0gVGhlIElBbGFybSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhY3RpdmUgYWxhcm0uXG4gICAqL1xuICBhY3RpdmVSb3V0ZUNoYW5nZWQoaXNBY3RpdmU6IGJvb2xlYW4sIHNjcm9sbEFuY2hvcjogTGlzdEl0ZW1Db21wb25lbnQsIGFsYXJtOiBJQWxhcm0pOiB2b2lkIHtcbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHNjcm9sbEFuY2hvci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChhbGFybSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtcyAmJiBjaGFuZ2VzLmFsYXJtcykge1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuaXNFbXB0eUxpc3RMb2FkaW5nID0gIXRoaXMuYWxhcm1zPy5kYXRhPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzUGVybWlzc2lvbnM/LmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWxlcnRBZ2dyZWdhdG9yLmFkZEFsZXJ0cyhcbiAgICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N5c3RlbScsXG4gICAgICAgICAgdGV4dDogZ2V0dGV4dChcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhbGFybXMuXCIpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGFybXNWaWV3U2VydmljZS5pc0ludGVydmFsUmVmcmVzaCgpKSB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5pbm5lclNjcm9sbFdyYXBwZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIGZyb21FdmVudChzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIHRoaXMuaXNTY3JvbGxpbmcgPSB0aGlzLnNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0KTtcbiAgICAgICAgICB0aGlzLm9uU2Nyb2xsaW5nU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmlzU2Nyb2xsaW5nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25BbGFybU9wZW4oYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3RlZEFsYXJtLmVtaXQoYWxhcm0pO1xuICB9XG5cbiAgZ2V0Um91dGVyTGluayhhbGFybTogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uT3B0aW9ucy5hbHdheXNOYXZpZ2F0ZVRvQWxsQWxhcm1zKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKG51bGwsIGFsYXJtKTtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRDb3VudGRvd25JbnRlcnZhbEJlSGlkZGVuKHRhcmdldDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzY3JvbGxUb3BQaXhlbHMgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgIHJldHVybiBzY3JvbGxUb3BQaXhlbHMgPiB0aGlzLkhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTDtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpIHtcbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLmxlbmd0aCA+IDApLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0ucGFyYW1zKSxcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIC8vIGRvbmUgdG8gZ2V0IHRoZSBmaXJzdCBuYXZpZ2F0aW9uXG4gICAgdGhpcy5hY3RpdmVDaGlsZFBhcmFtJC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImlubmVyLXNjcm9sbFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2xpc3QgYmctbGV2ZWwtMSc6IHNwbGl0VmlldywgJ2JnLWNvbXBvbmVudCc6ICFzcGxpdFZpZXcgfVwiXG4gIGRhdGEtY3k9XCJjOHktYWxhcm1zLWxpc3RcIlxuICAjc2Nyb2xsV3JhcHBlclxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4LXdyYXAgZmxleC1uby1zaHJpbmsgc3RpY2t5LXRvcCBtLWItMTZcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdzZXBhcmF0b3ItYm90dG9tIGNhcmQtaGVhZGVyIHAtYi0wJzogc3BsaXRWaWV3LFxuICAgICAgJ2QtZmxleCBmaXQtdyBzZXBhcmF0b3ItdG9wLWJvdHRvbSB3aWRnZXQtYmFyIHAtbC0xNiBwLXItMTYnOlxuICAgICAgICAhc3BsaXRWaWV3ICYmIG5hdmlnYXRpb25PcHRpb25zLmFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlld1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoNCBjYXJkLXRpdGxlXCJcbiAgICAgICpuZ0lmPVwic3BsaXRWaWV3XCJcbiAgICA+XG4gICAgICB7eyAnQWxhcm1zIGxpc3QnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwieyAnZml0LXcgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTE2JzogIXNwbGl0VmlldywgJ2ZpdC1oLTIwIG0tbC1hdXRvJzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8IS0tICBMb2FkaW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZml0LXcgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtdC0xNic6IHNwbGl0VmlldyB9XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibG9hZGluZy1iYXJcIlxuICAgICAgICBzdHlsZT1cInotaW5kZXg6IDEwMVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgfVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgIWlzRW1wdHlMaXN0TG9hZGluZyAmJlxuICAgICAgICAoYWN0aXZlQ2hpbGRQYXJhbSQgfCBhc3luYykgJiZcbiAgICAgICAgKGFjdGl2ZUFsYXJtJCB8IGFzeW5jKT8uaWQgIT09IChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKVxuICAgICAgXCJcbiAgICA+XG4gICAgICBUaGUgc2VsZWN0ZWQgYWxhcm0gaXMgbm90IGN1cnJlbnRseSBpbiB0aGUgbGlzdCwgY2hhbmdlIHlvdXIgZmlsdGVyLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGM4eS1saXN0LWdyb3VwXG4gICAgY2xhc3M9XCJwLXItMTYgaW50ZXJhY3RpdmVcIlxuICAgIFtuZ1N0eWxlXT1cInsgb3BhY2l0eTogaXNJbml0aWFsTG9hZGluZyAmJiAhaXNFbXB0eUxpc3RMb2FkaW5nID8gMC4yIDogMSB9XCJcbiAgICBzdHlsZT1cInRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyXCJcbiAgICBkYXRhLWN5PVwiYzh5LWFsYXJtLWxpc3QtLWdyb3VwXCJcbiAgPlxuICAgIDxjOHktbGktdGltZWxpbmVcbiAgICAgIGNsYXNzPVwicG9pbnRlclwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tdGltZWxpbmUtcmVwZWF0XCJcbiAgICAgICpjOHlGb3I9XCJsZXQgYWxhcm0gb2YgYWxhcm1zOyBsZXQgaSA9IGluZGV4OyBwaXBlOiBtYXBBbGFybUxpbms7IGxvYWRNb3JlOiBsb2FkTW9yZU1vZGVcIlxuICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3ID8gYWxhcm0ubGluayA6IG51bGxcIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJuYXZpZ2F0aW9uT3B0aW9ucy5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgIChpc0FjdGl2ZUNoYW5nZSk9XCJhY3RpdmVSb3V0ZUNoYW5nZWQoJGV2ZW50LCBsaVNjcm9sbEFuY2hvciwgYWxhcm0pXCJcbiAgICAgIChjbGljayk9XCJvbkFsYXJtT3BlbihhbGFybSlcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIlxuICAgICAgICBuYXZpZ2F0aW9uT3B0aW9ucy5pbmNsdWRlQ2xlYXJlZFF1ZXJ5UGFyYW1zXG4gICAgICAgICAgPyB7IHNob3dDbGVhcmVkOiBhbGFybS5zdGF0dXMgPT09ICdDTEVBUkVEJyB9XG4gICAgICAgICAgOiB7fVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bURhdGUnIH19XG4gICAgICAgIHt7IGFsYXJtLnRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtVGltZScgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgc3R5bGU9XCJzY3JvbGwtbWFyZ2luLXRvcDogNTZweFwiXG4gICAgICAgICNsaVNjcm9sbEFuY2hvclxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJhLXMtc3RhcnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxhcm0taWNvbnNcIj5cbiAgICAgICAgICAgIDxjOHktYWxhcm1zLWljb24gW3R5cGVGaWx0ZXJzXT1cInR5cGVGaWx0ZXJzXCIgW2FsYXJtXT1cImFsYXJtXCI+PC9jOHktYWxhcm1zLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5maXJzdE9jY3VycmVuY2VUaW1lXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5jb3VudCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhbGFybS5jb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJhLXMtc3RyZXRjaFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLXN0YXJ0IGZpdC1oXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXdpZHRoLTAgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwIHAtYi00XCI+XG4gICAgICAgICAgICAgICAge3sgYWxhcm0udGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGUgZmxleC1ncm93XCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJhbGFybS5zb3VyY2UubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2V4Y2hhbmdlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IGFsYXJtLnNvdXJjZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbGFybSB8IGFsYXJtTGlzdEluZGljYXRvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2M4eUljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9jOHktbGktdGltZWxpbmU+XG4gICAgPGM4eS1sb2FkaW5nICpuZ0lmPVwiaXNJbml0aWFsTG9hZGluZyAmJiBpc0VtcHR5TGlzdExvYWRpbmdcIj48L2M4eS1sb2FkaW5nPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicC1yZWxhdGl2ZSBwLWwtMjRcIlxuICAgICAgKm5nSWY9XCJpc0VtcHR5TGlzdExvYWRpbmcgJiYgIWlzSW5pdGlhbExvYWRpbmdcIlxuICAgID5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ2M4eS1hbGVydC1pZGxlJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gYWxhcm1zIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGRhdGEtY3k9XCJhbGFybS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiaGFzUGVybWlzc2lvbnM7IGVsc2UgYWxlcnRzQVwiXG4gICAgICA+XG4gICAgICAgIDxwIGM4eS1ndWlkZS1kb2NzPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGM4eS1ndWlkZS1ocmVmPVwiL2RvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vbW9uaXRvcmluZy1hbmQtY29udHJvbGxpbmctZGV2aWNlcy8jd29ya2luZy13aXRoLWFsYXJtc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHVzZXIgZG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYWxlcnRzQT5cbiAgPGM4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHMgW2FsZXJ0c109XCJhbGVydEFnZ3JlZ2F0b3JcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -21,6 +21,7 @@ export class AlarmsViewService {
|
|
|
21
21
|
this.optionsService = optionsService;
|
|
22
22
|
this.ALARM_REFRESH_TYPE_KEY = 'alarmsRefreshType';
|
|
23
23
|
this.DEFAULT_INTERVAL_VALUE = 30_000;
|
|
24
|
+
this.DEFAULT_REFRESH_OPTION_VALUE = 'interval';
|
|
24
25
|
this.DEFAULT_INTERVAL_VALUES = [5_000, 10_000, 15_000, 30_000, 60_000];
|
|
25
26
|
this.REALTIME_UPDATE_ALARMS_MESSAGE = gettext('The list was updated, click to refresh.');
|
|
26
27
|
this.reloadAlarmsList$ = new Subject();
|
|
@@ -241,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
241
242
|
providedIn: 'root'
|
|
242
243
|
}]
|
|
243
244
|
}], ctorParameters: () => [{ type: i1.AlarmService }, { type: i2.OptionsService }] });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsV0FBVyxFQUtYLFFBQVEsRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBSUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsNEJBQXVCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsbUNBQThCLEdBQUcsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFHN0Ysc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF0QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtC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TUFBTSxnQkFBZ0IsR0FBRyxXQUFXO1lBQ2xDLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0E5UFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIEFsYXJtU2VydmljZSxcbiAgQUxBUk1fU1RBVFVTX0xBQkVMUyxcbiAgQWxhcm1TdGF0dXNUeXBlLFxuICBBbGFybVN0YXR1cyxcbiAgSUFsYXJtLFxuICBJUmVzdWx0TGlzdCxcbiAgU2V2ZXJpdHlGaWx0ZXIsXG4gIFNldmVyaXR5VHlwZSxcbiAgU2V2ZXJpdHlcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25PcHRpb25zLFxuICBDb250ZXh0RGF0YSxcbiAgRGF0ZVRpbWVDb250ZXh0LFxuICBPcHRpb25zU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFMQVJNU19QQVRIIH0gZnJvbSAnLi9hbGFybXMubW9kZWwnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIGFuZCByZXRyaWV2aW5nIGFsYXJtcyBkYXRhIHdpdGhpbiB0aGUgYWxhcm1zIHZpZXcuXG4gKlxuICogVGhlIGBBbGFybXNWaWV3U2VydmljZWAgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBpbnRlcmFjdCB3aXRoIGFsYXJtcyxcbiAqIGluY2x1ZGluZyBmaWx0ZXJpbmcsIGNvdW50aW5nLCBhbmQgdHJhbnNsYXRpb24tcmVsYXRlZCBvcGVyYXRpb25zIGluIGFuIGFsYXJtcyB2aWV3LlxuICpcbiAqIFRoaXMgc2VydmljZSByZWxpZXMgb24gdGhlIGBBbGFybVNlcnZpY2VgIGZvciBmZXRjaGluZyBhbGFybSBkYXRhIGFuZCB0aGUgYE9wdGlvbnNTZXJ2aWNlYFxuICogZm9yIGNvbmZpZ3VyaW5nIGFsYXJtcyB2aWV3IG9wdGlvbnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc1ZpZXdTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgQUxBUk1fUkVGUkVTSF9UWVBFX0tFWToga2V5b2YgQXBwbGljYXRpb25PcHRpb25zID0gJ2FsYXJtc1JlZnJlc2hUeXBlJztcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTF9WQUxVRSA9IDMwXzAwMDtcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTF9WQUxVRVMgPSBbNV8wMDAsIDEwXzAwMCwgMTVfMDAwLCAzMF8wMDAsIDYwXzAwMF07XG4gIHJlYWRvbmx5IFJFQUxUSU1FX1VQREFURV9BTEFSTVNfTUVTU0FHRSA9IGdldHRleHQoJ1RoZSBsaXN0IHdhcyB1cGRhdGVkLCBjbGljayB0byByZWZyZXNoLicpO1xuXG4gIGlzSW50ZXJ2YWxFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVsb2FkQWxhcm1zTGlzdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2lzSW50ZXJ2YWxFbmFibGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGFybVNlcnZpY2U6IEFsYXJtU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZVxuICApIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsUmVmcmVzaCgpKSB7XG4gICAgICB0aGlzLl9pc0ludGVydmFsRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxFbmFibGVkJCA9IHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHN1YmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgYWxhcm1zIHJlbG9hZGluZy5cbiAgICovXG4gIHVwZGF0ZUFsYXJtTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZEFsYXJtc0xpc3QkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsYXJtcyBmaWx0ZXJlZCBieSBzcGVjaWZpZWQgc2V2ZXJpdGllcyBhbmQgb3RoZXIgb3B0aW9uYWwgcXVlcnkgZmlsdGVycy5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXRpZXMgYW4gYXJyYXkgb2Ygc2V2ZXJpdGllcyB0byBmaWx0ZXIgdGhlIGFsYXJtcy5cbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHNob3cgY2xlYXJlZCBhbGFybXMuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWREYXRlcyBhbiBhcnJheSBvZiB0d28gZGF0ZXMgdG8gZmlsdGVyIGFsYXJtcyBieSBjcmVhdGlvbiBhbmQgbGFzdCB1cGRhdGUgZGF0ZXMuXG4gICAqIEBwYXJhbSBmaWx0ZXIgYWRkaXRpb25hbCBxdWVyeSBmaWx0ZXJzIGZvciByZXRyaWV2aW5nIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBsaXN0IG9mIGFsYXJtcyBzYXRpc2Z5aW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVycy5cbiAgICovXG4gIHJldHJpZXZlRmlsdGVyZWRBbGFybXMoXG4gICAgc2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10sXG4gICAgc2hvd0NsZWFyZWQgPSBmYWxzZSxcbiAgICBzZWxlY3RlZERhdGVzPzogW0RhdGUsIERhdGVdLFxuICAgIGZpbHRlcj86IEFsYXJtUXVlcnlGaWx0ZXJcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJQWxhcm0+PiB7XG4gICAgY29uc3Qgc2V2ZXJpdGllc1F1ZXJ5ID0gdGhpcy5nZXRTZXZlcml0eVF1ZXJ5UGFyYW1ldGVyKHNldmVyaXRpZXMpO1xuICAgIGNvbnN0IHN0YXR1c2VzUXVlcnkgPSB0aGlzLmdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkKTtcblxuICAgIGNvbnN0IF9maWx0ZXI6IEFsYXJtUXVlcnlGaWx0ZXIgPSB7XG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICAgIC4uLihzZXZlcml0aWVzUXVlcnkgJiYgeyBzZXZlcml0eTogc2V2ZXJpdGllc1F1ZXJ5IH0pLFxuICAgICAgLi4uKHN0YXR1c2VzUXVlcnkgJiYgeyBzdGF0dXM6IHN0YXR1c2VzUXVlcnkgfSksXG4gICAgICAuLi4oc2VsZWN0ZWREYXRlcyAmJiB7XG4gICAgICAgIGxhc3RVcGRhdGVkRnJvbTogc2VsZWN0ZWREYXRlc1swXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjcmVhdGVkVG86IHNlbGVjdGVkRGF0ZXNbMV0udG9JU09TdHJpbmcoKVxuICAgICAgfSksXG4gICAgICAuLi5maWx0ZXJcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS5saXN0KF9maWx0ZXIpO1xuICB9XG5cbiAgcmV0cmlldmVBbGFybXNCeURhdGUoZGF0ZXM6IERhdGVUaW1lQ29udGV4dCkge1xuICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS5saXN0KHtcbiAgICAgIGxhc3RVcGRhdGVkRnJvbTogZGF0ZXNbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGNyZWF0ZWRUbzogZGF0ZXNbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgaW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUgd2hldGhlciB0byBlbmFibGUgaW50ZXJ2YWxzLlxuICAgKi9cbiAgdXBkYXRlSW50ZXJ2YWxTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkPy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjb3VudCBvZiBhbGFybXMgZmlsdGVyZWQgYnkgc2V2ZXJpdHkgYW5kIGNsZWFyYW5jZSBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIFRoZSBzZXZlcml0eSBsZXZlbCB0byBmaWx0ZXIgYnkgKGUuZy4sIENSSVRJQ0FMLCBNQUpPUiwgZXRjLikuXG4gICAqIEBwYXJhbSBzaG93Q2xlYXJlZCAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgY2xlYXJlZCBhbGFybXMgaW4gdGhlIGNvdW50LlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXIgY3JpdGVyaWEgZm9yIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG51bWJlciBvZiBhbGFybXMgdGhhdCBtYXRjaCB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxhcm1zQ291bnRCeVNldmVyaXR5KFxuICAgIHNldmVyaXR5OiBTZXZlcml0eVR5cGUsXG4gICAgc2hvd0NsZWFyZWQ6IGJvb2xlYW4sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHN0YXR1c2VzUXVlcnkgPSB0aGlzLmdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkKTtcbiAgICBjb25zdCBfZmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyID0ge1xuICAgICAgLi4uKHNldmVyaXR5ICYmIHsgc2V2ZXJpdHk6IHNldmVyaXR5IH0pLFxuICAgICAgLi4uKHN0YXR1c2VzUXVlcnkgJiYgeyBzdGF0dXM6IHN0YXR1c2VzUXVlcnkgfSksXG4gICAgICAuLi5maWx0ZXJcbiAgICB9O1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hbGFybVNlcnZpY2UuY291bnQoX2ZpbHRlcik7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgYWxhcm1zIHJlZnJlc2ggdHlwZSBmcm9tIHRoZSBPcHRpb25zU2VydmljZVxuICAgKiBhbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIHNldCB0byBcImludGVydmFsXCIuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm1zIHJlZnJlc2ggdHlwZSBpcyBcImludGVydmFsLFwiIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldCh0aGlzLkFMQVJNX1JFRlJFU0hfVFlQRV9LRVksICdpbnRlcnZhbCcpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2ludGVydmFsJztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMgYmFzZWQgb24gdGhlIG5ldyBzZXZlcml0eSBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eVVwZGF0ZXMgLSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlcyB0byBlYWNoIHNldmVyaXR5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHVwZGF0ZWQgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICovXG4gIHVwZGF0ZVNlbGVjdGVkU2V2ZXJpdGllcyhzZXZlcml0eVVwZGF0ZXM6IFNldmVyaXR5RmlsdGVyKTogU2V2ZXJpdHlUeXBlW10ge1xuICAgIHJldHVybiAoT2JqZWN0LmtleXMoc2V2ZXJpdHlVcGRhdGVzKSBhcyBTZXZlcml0eVR5cGVbXSlcbiAgICAgIC5maWx0ZXIoa2V5ID0+IHNldmVyaXR5VXBkYXRlc1trZXldKVxuICAgICAgLm1hcChrZXkgPT4ga2V5LnRvVXBwZXJDYXNlKCkgYXMgU2V2ZXJpdHlUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGFjdGl2ZSBhbGFybXMgb2YgdGhlIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBmb3IgdGhlIGdpdmVuIGxpc3Qgb2Ygc2V2ZXJpdGllcyBieSBtYWtpbmcgYnVsayB1cGRhdGUgY2FsbHMuIElmIG5vIHNldmVyaXRpZXMgYXJlIHNlbGVjdGVkLCBpdCBkZWZhdWx0cyB0byB1c2luZyBhbGwgYXZhaWxhYmxlIHNldmVyaXRpZXMuXG4gICAqIEl0IHdvcmtzIGJ5IHNlbmRpbmcgYSBzZXJpZXMgb2YgdXBkYXRlIHJlcXVlc3RzIGZvciBlYWNoIHNldmVyaXR5IGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGluZGljYXRpbmcgaWYgYWxsIGFsYXJtcyB3ZXJlIHJlc29sdmVkIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRTZXZlcml0aWVzIEFuIGFycmF5IG9mIHNldmVyaXRpZXMgdG8gYmUgY2xlYXJlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgc2V2ZXJpdGllcyB3aWxsIGJlIGNsZWFyZWQuXG4gICAqIEBwYXJhbSBzb3VyY2VJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGFybXMgdG8gYmUgY2xlYXJlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGZsYWcgYHJlc29sdmVkSW1tZWRpYXRlbHlgLiBUaGUgZmxhZyBpcyB0cnVlIGlmIGFsbCBhbGFybXMgZm9yIGFsbCBzZWxlY3RlZCBzZXZlcml0aWVzIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHk7IG90aGVyd2lzZSBmYWxzZS5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzZXZlcml0aWVzVG9DbGVhcjogU2V2ZXJpdHlUeXBlW10gPSBbU2V2ZXJpdHkuTUFKT1IsIFNldmVyaXR5Lk1JTk9SXTtcbiAgICpcbiAgICogY2xlYXJBbGxBY3RpdmVBbGFybXMoc2V2ZXJpdGllc1RvQ2xlYXIpLnRoZW4oKHsgcmVzb2x2ZWRJbW1lZGlhdGVseSB9KSA9PiB7XG4gICAqICAgaWYgKHJlc29sdmVkSW1tZWRpYXRlbHkpIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdBbGwgc2VsZWN0ZWQgYWxhcm1zIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdTb21lIGFsYXJtcyBjb3VsZCBub3QgYmUgY2xlYXJlZC4nKTtcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogKipOb3RlKipcbiAgICogLSBUaGUgbWV0aG9kIHVzZXMgdGhlIGBhbGFybVNlcnZpY2UudXBkYXRlQnVsa2AgZm9yIGVhY2ggc2V2ZXJpdHkgdG8gY2xlYXIgdGhlIGFjdGl2ZSBhbGFybXMuXG4gICAqIC0gSXQgbWF5IGZldGNoIHRoZSBgc291cmNlSWRgIGJhc2VkIG9uIHRoZSB2aWV3IChpZiBhcHBsaWNhYmxlKSBhbmQgaW5jbHVkZSBpdCBhcyBhIHF1ZXJ5IHBhcmFtZXRlciBpbiB0aGUgdXBkYXRlIGNhbGxzLlxuICAgKiAtIFRoZSBtZXRob2QgcmV0dXJucyBpbW1lZGlhdGVseSBidXQgdGhlIHJldHVybmVkIFByb21pc2UgbmVlZHMgdG8gaGF2ZSBhIGB0aGVuYCBvciBgY2F0Y2hgIG1ldGhvZCBjYWxsIHRvIGhhbmRsZSB0aGUgcmVzdWx0IG9yIGVycm9yIHJlc3BlY3RpdmVseS5cbiAgICogLSBVc2VzIGBQcm9taXNlLmFsbGAgdG8gd2FpdCBmb3IgYWxsIHVwZGF0ZSByZXF1ZXN0cyB0byBjb21wbGV0ZSBiZWZvcmUgcmVzb2x2aW5nIHRoZSBmaW5hbCByZXN1bHQuXG4gICAqL1xuICBhc3luYyBjbGVhckFsbEFjdGl2ZUFsYXJtcyhcbiAgICBzZWxlY3RlZFNldmVyaXRpZXM6IFNldmVyaXR5VHlwZVtdLFxuICAgIHNvdXJjZUlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTx7IHJlc29sdmVkSW1tZWRpYXRlbHk6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHNldmVyaXRpZXNUb1VwZGF0ZSA9IHNlbGVjdGVkU2V2ZXJpdGllcyB8fCBTZXZlcml0eTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzVG9VcGRhdGUpLm1hcCgoc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSkgPT4ge1xuICAgICAgY29uc3QgY29tbW9uUGFyYW1zID0geyByZXNvbHZlZDogZmFsc2UsIHNldmVyaXR5IH07XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBzb3VyY2VJZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmNvbW1vblBhcmFtcyxcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICB3aXRoU291cmNlQXNzZXRzOiB0cnVlLFxuICAgICAgICAgICAgd2l0aFNvdXJjZURldmljZXM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIDogY29tbW9uUGFyYW1zO1xuXG4gICAgICByZXR1cm4gdGhpcy5hbGFybVNlcnZpY2UudXBkYXRlQnVsayh7IHN0YXR1czogQWxhcm1TdGF0dXMuQ0xFQVJFRCB9LCBwYXJhbWV0ZXJzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb2x2ZWRJbW1lZGlhdGVseTogcmVzcG9uc2VzLmV2ZXJ5KHJlcyA9PiByZXMpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbnRleHQgZGF0YS5cbiAgICogQHBhcmFtIGNvbnRleHREYXRhIFRoZSBjb250ZXh0IHRoZSBuYXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQgZnJvbS5cbiAgICogQHBhcmFtIGFsYXJtIFRoZSBhbGFybSB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBsaW5rIHRvIGJlIHVzZWQgYXMgYW4gdXJsIG5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBsZXQgZGV0YWlsVXJsID0gYC8ke0FMQVJNU19QQVRIfWA7XG4gICAgaWYgKGFsYXJtKSB7XG4gICAgICBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9LyR7YWxhcm0uaWR9YDtcbiAgICB9XG4gICAgaWYgKCFjb250ZXh0RGF0YSkge1xuICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbnRleHREYXRhLmNvbnRleHQpIHtcbiAgICAgIGNhc2UgVmlld0NvbnRleHQuRGV2aWNlOlxuICAgICAgICByZXR1cm4gYC9kZXZpY2UvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5Hcm91cDpcbiAgICAgICAgcmV0dXJuIGAvZ3JvdXAvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVjdCBhcnJheSBuYXZpZ2F0aW9uLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhIHJvdXRlci5uYXZpZ2F0aW9uLlxuICAgKi9cbiAgZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlckxpbmsoY29udGV4dERhdGEsIGFsYXJtKS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdmFsdWUgZm9yIHF1ZXJ5IHBhcmFtZXRlciBmb3IgZmlsdGVyaW5nIGFsYXJtcyBieSBzZXZlcml0eSBiYXNlZCBvbiBhcnJheSBvZiBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyAtIEFuIGFycmF5IG9mIGFsYXJtIHNldmVyaXR5IHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGZpbHRlci5cbiAgICogSWYgdGhlIGFycmF5IGlzIGVtcHR5IG9yIHVuZGVmaW5lZCwgbm8gc2V2ZXJpdHkgZmlsdGVyIHdpbGwgYmUgYXBwbGllZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHNlbGVjdGVkIGFsYXJtIHNldmVyaXRpZXMsXG4gICAqIG9yIG51bGwgaWYgbm8gc2V2ZXJpdGllcyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBwcml2YXRlIGdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXNldmVyaXRpZXMgfHwgc2V2ZXJpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldmVyaXRpZXMubGVuZ3RoID09PSBPYmplY3Qua2V5cyhTZXZlcml0eSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldmVyaXRpZXMuam9pbignLCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHN0YXR1c2VzIGJhc2VkIG9uIHNob3dDbGVhcmVkIG9wdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBpbmNsdWRlIGNsZWFyZWQgc3RhdHVzZXMuXG4gICAqIElmIHRydWUsIGFsbCBzdGF0dXNlcywgaW5jbHVkaW5nICdDTEVBUkVEJywgd2lsbCBiZSBpbmNsdWRlZDsgaWYgZmFsc2UsICdDTEVBUkVEJyB3aWxsIGJlIGV4Y2x1ZGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgYWxhcm0gc3RhdHVzZXMuXG4gICAqL1xuICBwcml2YXRlIGdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXNlcyA9IE9iamVjdC5rZXlzKEFMQVJNX1NUQVRVU19MQUJFTFMpIGFzIEFsYXJtU3RhdHVzVHlwZVtdO1xuICAgIGNvbnN0IGZpbHRlcmVkU3RhdHVzZXMgPSBzaG93Q2xlYXJlZFxuICAgICAgPyBzdGF0dXNlc1xuICAgICAgOiBzdGF0dXNlcy5maWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ0NMRUFSRUQnKTtcbiAgICByZXR1cm4gZmlsdGVyZWRTdGF0dXNlcy5qb2luKCcsJyk7XG4gIH1cbn1cbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsV0FBVyxFQUtYLFFBQVEsRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBSUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBWTVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBYi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsaUNBQTRCLEdBQUcsVUFBVSxDQUFDO1FBQzFDLDRCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLG1DQUE4QixHQUFHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBRzdGLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFRdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxzQkFBc0IsQ0FDcEIsVUFBMEIsRUFDMUIsV0FBVyxHQUFHLEtBQUssRUFDbkIsYUFBNEIsRUFDNUIsTUFBeUI7UUFFekIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVoRSxNQUFNLE9BQU8sR0FBcUI7WUFDaEMsUUFBUSxFQUFFLEVBQUU7WUFDWixjQUFjLEVBQUUsSUFBSTtZQUNwQixHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsR0FBRyxDQUFDLGFBQWEsSUFBSTtnQkFDbkIsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9DLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO2FBQzFDLENBQUM7WUFDRixHQUFHLE1BQU07U0FDVixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBc0I7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUM1QixlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUN2QyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNqQyxRQUFRLEVBQUUsRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyx3QkFBd0IsQ0FDNUIsUUFBc0IsRUFDdEIsV0FBb0IsRUFDcEIsTUFBeUI7UUFFekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sT0FBTyxHQUFxQjtZQUNoQyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsR0FBRyxNQUFNO1NBQ1YsQ0FBQztRQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQUMsZUFBK0I7UUFDdEQsT0FBUSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBb0I7YUFDcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQWtCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BNkJHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUN4QixrQkFBa0MsRUFDbEMsUUFBeUI7UUFFekIsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsSUFBSSxRQUFRLENBQUM7UUFFMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRTtZQUNoRixNQUFNLFlBQVksR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFFbkQsTUFBTSxVQUFVLEdBQUcsUUFBUTtnQkFDekIsQ0FBQyxDQUFDO29CQUNFLEdBQUcsWUFBWTtvQkFDZixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtvQkFDdEIsaUJBQWlCLEVBQUUsSUFBSTtpQkFDeEI7Z0JBQ0gsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUVqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFdBQXlCLEVBQUUsS0FBYztRQUNyRCxJQUFJLFNBQVMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixTQUFTLEdBQUcsSUFBSSxXQUFXLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELFFBQVEsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssV0FBVyxDQUFDLE1BQU07Z0JBQ3JCLE9BQU8sV0FBVyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM3RCxLQUFLLFdBQVcsQ0FBQyxLQUFLO2dCQUNwQixPQUFPLFVBQVUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDNUQ7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdCQUF3QixDQUFDLFdBQXlCLEVBQUUsS0FBYztRQUNoRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0sseUJBQXlCLENBQUMsVUFBMEI7UUFDMUQsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyx1QkFBdUIsQ0FBQyxXQUFvQjtRQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFzQixDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVztZQUNsQyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBL1BVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGFybVF1ZXJ5RmlsdGVyLFxuICBBbGFybVNlcnZpY2UsXG4gIEFMQVJNX1NUQVRVU19MQUJFTFMsXG4gIEFsYXJtU3RhdHVzVHlwZSxcbiAgQWxhcm1TdGF0dXMsXG4gIElBbGFybSxcbiAgSVJlc3VsdExpc3QsXG4gIFNldmVyaXR5RmlsdGVyLFxuICBTZXZlcml0eVR5cGUsXG4gIFNldmVyaXR5XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgQ29udGV4dERhdGEsXG4gIERhdGVUaW1lQ29udGV4dCxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFZpZXdDb250ZXh0LFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBTEFSTVNfUEFUSCB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBhbmQgcmV0cmlldmluZyBhbGFybXMgZGF0YSB3aXRoaW4gdGhlIGFsYXJtcyB2aWV3LlxuICpcbiAqIFRoZSBgQWxhcm1zVmlld1NlcnZpY2VgIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCBhbGFybXMsXG4gKiBpbmNsdWRpbmcgZmlsdGVyaW5nLCBjb3VudGluZywgYW5kIHRyYW5zbGF0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyBpbiBhbiBhbGFybXMgdmlldy5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgcmVsaWVzIG9uIHRoZSBgQWxhcm1TZXJ2aWNlYCBmb3IgZmV0Y2hpbmcgYWxhcm0gZGF0YSBhbmQgdGhlIGBPcHRpb25zU2VydmljZWBcbiAqIGZvciBjb25maWd1cmluZyBhbGFybXMgdmlldyBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNWaWV3U2VydmljZSB7XG4gIHJlYWRvbmx5IEFMQVJNX1JFRlJFU0hfVFlQRV9LRVk6IGtleW9mIEFwcGxpY2F0aW9uT3B0aW9ucyA9ICdhbGFybXNSZWZyZXNoVHlwZSc7XG4gIHJlYWRvbmx5IERFRkFVTFRfSU5URVJWQUxfVkFMVUUgPSAzMF8wMDA7XG4gIHJlYWRvbmx5IERFRkFVTFRfUkVGUkVTSF9PUFRJT05fVkFMVUUgPSAnaW50ZXJ2YWwnO1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFUyA9IFs1XzAwMCwgMTBfMDAwLCAxNV8wMDAsIDMwXzAwMCwgNjBfMDAwXTtcbiAgcmVhZG9ubHkgUkVBTFRJTUVfVVBEQVRFX0FMQVJNU19NRVNTQUdFID0gZ2V0dGV4dCgnVGhlIGxpc3Qgd2FzIHVwZGF0ZWQsIGNsaWNrIHRvIHJlZnJlc2guJyk7XG5cbiAgaXNJbnRlcnZhbEVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWxvYWRBbGFybXNMaXN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaXNJbnRlcnZhbEVuYWJsZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtU2VydmljZTogQWxhcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbEVuYWJsZWQkID0gdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgc3ViamVjdCB0byBpbml0aWFsaXplIHRoZSBhbGFybXMgcmVsb2FkaW5nLlxuICAgKi9cbiAgdXBkYXRlQWxhcm1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxhcm1zIGZpbHRlcmVkIGJ5IHNwZWNpZmllZCBzZXZlcml0aWVzIGFuZCBvdGhlciBvcHRpb25hbCBxdWVyeSBmaWx0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyBhbiBhcnJheSBvZiBzZXZlcml0aWVzIHRvIGZpbHRlciB0aGUgYWxhcm1zLlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gc2hvdyBjbGVhcmVkIGFsYXJtcy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZERhdGVzIGFuIGFycmF5IG9mIHR3byBkYXRlcyB0byBmaWx0ZXIgYWxhcm1zIGJ5IGNyZWF0aW9uIGFuZCBsYXN0IHVwZGF0ZSBkYXRlcy5cbiAgICogQHBhcmFtIGZpbHRlciBhZGRpdGlvbmFsIHF1ZXJ5IGZpbHRlcnMgZm9yIHJldHJpZXZpbmcgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGxpc3Qgb2YgYWxhcm1zIHNhdGlzZnlpbmcgdGhlIHNwZWNpZmllZCBmaWx0ZXJzLlxuICAgKi9cbiAgcmV0cmlldmVGaWx0ZXJlZEFsYXJtcyhcbiAgICBzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSxcbiAgICBzaG93Q2xlYXJlZCA9IGZhbHNlLFxuICAgIHNlbGVjdGVkRGF0ZXM/OiBbRGF0ZSwgRGF0ZV0sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICBjb25zdCBzZXZlcml0aWVzUXVlcnkgPSB0aGlzLmdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllcyk7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuXG4gICAgY29uc3QgX2ZpbHRlcjogQWxhcm1RdWVyeUZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgLi4uKHNldmVyaXRpZXNRdWVyeSAmJiB7IHNldmVyaXR5OiBzZXZlcml0aWVzUXVlcnkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLihzZWxlY3RlZERhdGVzICYmIHtcbiAgICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBzZWxlY3RlZERhdGVzWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNyZWF0ZWRUbzogc2VsZWN0ZWREYXRlc1sxXS50b0lTT1N0cmluZygpXG4gICAgICB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3QoX2ZpbHRlcik7XG4gIH1cblxuICByZXRyaWV2ZUFsYXJtc0J5RGF0ZShkYXRlczogRGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3Qoe1xuICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBkYXRlc1swXS50b0lTT1N0cmluZygpLFxuICAgICAgY3JlYXRlZFRvOiBkYXRlc1sxXS50b0lTT1N0cmluZygpLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGVuYWJsZSBpbnRlcnZhbHMuXG4gICAqL1xuICB1cGRhdGVJbnRlcnZhbFN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQ/Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGNvdW50IG9mIGFsYXJtcyBmaWx0ZXJlZCBieSBzZXZlcml0eSBhbmQgY2xlYXJhbmNlIHN0YXR1cy5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5IC0gVGhlIHNldmVyaXR5IGxldmVsIHRvIGZpbHRlciBieSAoZS5nLiwgQ1JJVElDQUwsIE1BSk9SLCBldGMuKS5cbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBjbGVhcmVkIGFsYXJtcyBpbiB0aGUgY291bnQuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSBBZGRpdGlvbmFsIGZpbHRlciBjcml0ZXJpYSBmb3IgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGFsYXJtcyB0aGF0IG1hdGNoIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqXG4gICAqL1xuICBhc3luYyBnZXRBbGFybXNDb3VudEJ5U2V2ZXJpdHkoXG4gICAgc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSxcbiAgICBzaG93Q2xlYXJlZDogYm9vbGVhbixcbiAgICBmaWx0ZXI/OiBBbGFybVF1ZXJ5RmlsdGVyXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuICAgIGNvbnN0IF9maWx0ZXI6IEFsYXJtUXVlcnlGaWx0ZXIgPSB7XG4gICAgICAuLi4oc2V2ZXJpdHkgJiYgeyBzZXZlcml0eTogc2V2ZXJpdHkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFsYXJtU2VydmljZS5jb3VudChfZmlsdGVyKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBhbGFybXMgcmVmcmVzaCB0eXBlIGZyb20gdGhlIE9wdGlvbnNTZXJ2aWNlXG4gICAqIGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgaXQgaXMgc2V0IHRvIFwiaW50ZXJ2YWxcIi5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBhbGFybXMgcmVmcmVzaCB0eXBlIGlzIFwiaW50ZXJ2YWwsXCIgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0KHRoaXMuQUxBUk1fUkVGUkVTSF9UWVBFX0tFWSwgJ2ludGVydmFsJyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnaW50ZXJ2YWwnO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgc2V2ZXJpdGllcyBiYXNlZCBvbiB0aGUgbmV3IHNldmVyaXR5IGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5VXBkYXRlcyAtIFRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB1cGRhdGVzIHRvIGVhY2ggc2V2ZXJpdHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlZCBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKi9cbiAgdXBkYXRlU2VsZWN0ZWRTZXZlcml0aWVzKHNldmVyaXR5VXBkYXRlczogU2V2ZXJpdHlGaWx0ZXIpOiBTZXZlcml0eVR5cGVbXSB7XG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhzZXZlcml0eVVwZGF0ZXMpIGFzIFNldmVyaXR5VHlwZVtdKVxuICAgICAgLmZpbHRlcihrZXkgPT4gc2V2ZXJpdHlVcGRhdGVzW2tleV0pXG4gICAgICAubWFwKGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSBhcyBTZXZlcml0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBvZiB0aGUgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBhY3RpdmUgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gbGlzdCBvZiBzZXZlcml0aWVzIGJ5IG1ha2luZyBidWxrIHVwZGF0ZSBjYWxscy4gSWYgbm8gc2V2ZXJpdGllcyBhcmUgc2VsZWN0ZWQsIGl0IGRlZmF1bHRzIHRvIHVzaW5nIGFsbCBhdmFpbGFibGUgc2V2ZXJpdGllcy5cbiAgICogSXQgd29ya3MgYnkgc2VuZGluZyBhIHNlcmllcyBvZiB1cGRhdGUgcmVxdWVzdHMgZm9yIGVhY2ggc2V2ZXJpdHkgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgaW5kaWNhdGluZyBpZiBhbGwgYWxhcm1zIHdlcmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBzZWxlY3RlZFNldmVyaXRpZXMgQW4gYXJyYXkgb2Ygc2V2ZXJpdGllcyB0byBiZSBjbGVhcmVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBzZXZlcml0aWVzIHdpbGwgYmUgY2xlYXJlZC5cbiAgICogQHBhcmFtIHNvdXJjZUlkIC0gSWRlbnRpZmllciBmb3IgdGhlIHNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGFsYXJtcyB0byBiZSBjbGVhcmVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgZmxhZyBgcmVzb2x2ZWRJbW1lZGlhdGVseWAuIFRoZSBmbGFnIGlzIHRydWUgaWYgYWxsIGFsYXJtcyBmb3IgYWxsIHNlbGVjdGVkIHNldmVyaXRpZXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseTsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHNldmVyaXRpZXNUb0NsZWFyOiBTZXZlcml0eVR5cGVbXSA9IFtTZXZlcml0eS5NQUpPUiwgU2V2ZXJpdHkuTUlOT1JdO1xuICAgKlxuICAgKiBjbGVhckFsbEFjdGl2ZUFsYXJtcyhzZXZlcml0aWVzVG9DbGVhcikudGhlbigoeyByZXNvbHZlZEltbWVkaWF0ZWx5IH0pID0+IHtcbiAgICogICBpZiAocmVzb2x2ZWRJbW1lZGlhdGVseSkge1xuICAgKiAgICAgY29uc29sZS5sb2coJ0FsbCBzZWxlY3RlZCBhbGFybXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICogICB9IGVsc2Uge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1NvbWUgYWxhcm1zIGNvdWxkIG5vdCBiZSBjbGVhcmVkLicpO1xuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiAqKk5vdGUqKlxuICAgKiAtIFRoZSBtZXRob2QgdXNlcyB0aGUgYGFsYXJtU2VydmljZS51cGRhdGVCdWxrYCBmb3IgZWFjaCBzZXZlcml0eSB0byBjbGVhciB0aGUgYWN0aXZlIGFsYXJtcy5cbiAgICogLSBJdCBtYXkgZmV0Y2ggdGhlIGBzb3VyY2VJZGAgYmFzZWQgb24gdGhlIHZpZXcgKGlmIGFwcGxpY2FibGUpIGFuZCBpbmNsdWRlIGl0IGFzIGEgcXVlcnkgcGFyYW1ldGVyIGluIHRoZSB1cGRhdGUgY2FsbHMuXG4gICAqIC0gVGhlIG1ldGhvZCByZXR1cm5zIGltbWVkaWF0ZWx5IGJ1dCB0aGUgcmV0dXJuZWQgUHJvbWlzZSBuZWVkcyB0byBoYXZlIGEgYHRoZW5gIG9yIGBjYXRjaGAgbWV0aG9kIGNhbGwgdG8gaGFuZGxlIHRoZSByZXN1bHQgb3IgZXJyb3IgcmVzcGVjdGl2ZWx5LlxuICAgKiAtIFVzZXMgYFByb21pc2UuYWxsYCB0byB3YWl0IGZvciBhbGwgdXBkYXRlIHJlcXVlc3RzIHRvIGNvbXBsZXRlIGJlZm9yZSByZXNvbHZpbmcgdGhlIGZpbmFsIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGNsZWFyQWxsQWN0aXZlQWxhcm1zKFxuICAgIHNlbGVjdGVkU2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10sXG4gICAgc291cmNlSWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPHsgcmVzb2x2ZWRJbW1lZGlhdGVseTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgc2V2ZXJpdGllc1RvVXBkYXRlID0gc2VsZWN0ZWRTZXZlcml0aWVzIHx8IFNldmVyaXR5O1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3QudmFsdWVzKHNldmVyaXRpZXNUb1VwZGF0ZSkubWFwKChzZXZlcml0eTogU2V2ZXJpdHlUeXBlKSA9PiB7XG4gICAgICBjb25zdCBjb21tb25QYXJhbXMgPSB7IHJlc29sdmVkOiBmYWxzZSwgc2V2ZXJpdHkgfTtcblxuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHNvdXJjZUlkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uY29tbW9uUGFyYW1zLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIHdpdGhTb3VyY2VBc3NldHM6IHRydWUsXG4gICAgICAgICAgICB3aXRoU291cmNlRGV2aWNlczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgOiBjb21tb25QYXJhbXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS51cGRhdGVCdWxrKHsgc3RhdHVzOiBBbGFybVN0YXR1cy5DTEVBUkVEIH0sIHBhcmFtZXRlcnMpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIHJldHVybiB7XG4gICAgICByZXNvbHZlZEltbWVkaWF0ZWx5OiByZXNwb25zZXMuZXZlcnkocmVzID0+IHJlcylcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvcnJlY3QgbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udGV4dCBkYXRhLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhbiB1cmwgbmF2aWdhdGlvbi5cbiAgICovXG4gIGdldFJvdXRlckxpbmsoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGxldCBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9YDtcbiAgICBpZiAoYWxhcm0pIHtcbiAgICAgIGRldGFpbFVybCA9IGAvJHtBTEFSTVNfUEFUSH0vJHthbGFybS5pZH1gO1xuICAgIH1cbiAgICBpZiAoIWNvbnRleHREYXRhKSB7XG4gICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29udGV4dERhdGEuY29udGV4dCkge1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5EZXZpY2U6XG4gICAgICAgIHJldHVybiBgL2RldmljZS8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBjYXNlIFZpZXdDb250ZXh0Lkdyb3VwOlxuICAgICAgICByZXR1cm4gYC9ncm91cC8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGFycmF5IG5hdmlnYXRpb24uXG4gICAqIEBwYXJhbSBjb250ZXh0RGF0YSBUaGUgY29udGV4dCB0aGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20uXG4gICAqIEBwYXJhbSBhbGFybSBUaGUgYWxhcm0gdG8gbmF2aWdhdGUgdG8uXG4gICAqIEByZXR1cm5zIEEgbGluayB0byBiZSB1c2VkIGFzIGEgcm91dGVyLm5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJOYXZpZ2F0aW9uQXJyYXkoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHNldmVyaXR5IGJhc2VkIG9uIGFycmF5IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0aWVzIC0gQW4gYXJyYXkgb2YgYWxhcm0gc2V2ZXJpdHkgdHlwZXMgdG8gaW5jbHVkZSBpbiB0aGUgZmlsdGVyLlxuICAgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHkgb3IgdW5kZWZpbmVkLCBubyBzZXZlcml0eSBmaWx0ZXIgd2lsbCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2Ygc2VsZWN0ZWQgYWxhcm0gc2V2ZXJpdGllcyxcbiAgICogb3IgbnVsbCBpZiBubyBzZXZlcml0aWVzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0U2V2ZXJpdHlRdWVyeVBhcmFtZXRlcihzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghc2V2ZXJpdGllcyB8fCBzZXZlcml0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2V2ZXJpdGllcy5sZW5ndGggPT09IE9iamVjdC5rZXlzKFNldmVyaXR5KS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V2ZXJpdGllcy5qb2luKCcsJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZhbHVlIGZvciBxdWVyeSBwYXJhbWV0ZXIgZm9yIGZpbHRlcmluZyBhbGFybXMgYnkgc3RhdHVzZXMgYmFzZWQgb24gc2hvd0NsZWFyZWQgb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgY2xlYXJlZCBzdGF0dXNlcy5cbiAgICogSWYgdHJ1ZSwgYWxsIHN0YXR1c2VzLCBpbmNsdWRpbmcgJ0NMRUFSRUQnLCB3aWxsIGJlIGluY2x1ZGVkOyBpZiBmYWxzZSwgJ0NMRUFSRUQnIHdpbGwgYmUgZXhjbHVkZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiBhbGFybSBzdGF0dXNlcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gT2JqZWN0LmtleXMoQUxBUk1fU1RBVFVTX0xBQkVMUykgYXMgQWxhcm1TdGF0dXNUeXBlW107XG4gICAgY29uc3QgZmlsdGVyZWRTdGF0dXNlcyA9IHNob3dDbGVhcmVkXG4gICAgICA/IHN0YXR1c2VzXG4gICAgICA6IHN0YXR1c2VzLmZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnQ0xFQVJFRCcpO1xuICAgIHJldHVybiBmaWx0ZXJlZFN0YXR1c2VzLmpvaW4oJywnKTtcbiAgfVxufVxuIl19
|
|
@@ -79,4 +79,4 @@ export const ALARM_DEFAULT_PROPERTIES = [
|
|
|
79
79
|
'lastUpdated'
|
|
80
80
|
];
|
|
81
81
|
export const THROTTLE_REALTIME_REFRESH = 1_000;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxXQUFXLEVBS1gsUUFBUSxFQUdULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFFTCxPQUFPLEVBSVIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBWSxNQUFNLHFDQUFxQyxDQUFDO0FBd0IzRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBSTdFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFVBQVUsRUFBRSxnQkFBZ0I7SUFDNUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDO0FBSVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTZDO0lBQ3BFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLFVBQVU7SUFDbkQsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtJQUN4RCxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO0NBQ3BDLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixhQUFhLEVBQUUsZUFBZTtJQUM5QixPQUFPLEVBQUUsU0FBUztJQUNsQixrQkFBa0IsRUFBRSxvQkFBb0I7Q0FDaEMsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFHaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBNEM7SUFDOUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsa0JBQWtCO0lBQzNELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLG1CQUFtQixDQUFDLE9BQU87SUFDN0MsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsYUFBYTtJQUNuRCxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO0NBQ3RDLENBQUM7QUFnQlg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBOEM7SUFDakYsR0FBRyxlQUFlO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUEwQjtJQUN2RDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztLQUNqQztJQUNELEdBQUcsU0FBUztDQUNiLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBZSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBbUI7SUFDckQsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO0lBQ3RCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUk7SUFDdEIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSTtDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXdCO0lBQ3hELENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7SUFDMUIsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSTtJQUNoQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJO0NBQzVCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBTXBDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsVUFBVTtJQUNWLFFBQVE7SUFDUixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixJQUFJO0lBQ0osUUFBUTtJQUNSLE9BQU87SUFDUCxNQUFNO0lBQ04sU0FBUztJQUNULE1BQU07SUFDTixjQUFjO0lBQ2QscUJBQXFCO0lBQ3JCLGFBQWE7Q0FDaUMsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWxhcm1TdGF0dXMsXG4gIEFsYXJtU3RhdHVzU2V0dGluZ3MsXG4gIEFsYXJtU3RhdHVzVHlwZSxcbiAgSUFsYXJtLFxuICBJTWFuYWdlZE9iamVjdCxcbiAgU2V2ZXJpdHksXG4gIFNldmVyaXR5RmlsdGVyLFxuICBTZXZlcml0eVR5cGVcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgRGF0ZVRpbWVDb250ZXh0LFxuICBnZXR0ZXh0LFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JOb2RlRGF0YSxcbiAgUm91dGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IFN1cHBvcnRlZEljb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElOVEVSVkFMUywgSU5URVJWQUxfVElUTEVTLCBJbnRlcnZhbCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaW50ZXJ2YWwtcGlja2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGFybXNNb2R1bGVDb25maWcge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGEgY29tYmluYXRpb24gb2YgQW5ndWxhciBhbmQgQW5ndWxhckpTLlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIGh5YnJpZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb290IG5vZGUgb2YgdGhlIG5hdmlnYXRvciwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIGBOYXZpZ2F0b3JOb2RlYCBvciBgTmF2aWdhdG9yTm9kZURhdGFgLlxuICAgKiBUaGlzIHNlcnZlcyBhcyB0aGUgZW50cnkgcG9pbnQgZm9yIG5hdmlnYXRpb24gc3RydWN0dXJlIGZvciBBbGFybXMgdmlld3MuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgcm9vdE5hdmlnYXRvck5vZGU/OiBOYXZpZ2F0b3JOb2RlIHwgTmF2aWdhdG9yTm9kZURhdGE7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGBSb3V0ZWAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG5hdmlnYXRpb24gcm91dGVzIGF2YWlsYWJsZS5cbiAgICogRWFjaCByb3V0ZSBkZWZpbmVzIGEgbmF2aWdhdGlvbiBwYXRoIGFuZCBpdHMgYXNzb2NpYXRlZCBjb21wb25lbnRzIHJlbGF0ZWQgdG8gQWxhcm1zLlxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIHJvdXRlPzogUm91dGVbXTtcbn1cblxuZXhwb3J0IGNvbnN0IEFMQVJNU19NT0RVTEVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdBbGFybXNNb2R1bGVDb25maWcnKTtcblxuZXhwb3J0IHR5cGUgQWxhcm1Db3VudCA9IHsgW2tleSBpbiBTZXZlcml0eVR5cGVdOiBudW1iZXIgfTtcblxuZXhwb3J0IGNvbnN0IEFMQVJNX1NUQVRVU19JQ09OID0ge1xuICBBTEVSVF9JRExFOiAnYzh5LWFsZXJ0LWlkbGUnLFxuICBCRUxMX1NMQVNIOiAnYmVsbC1zbGFzaCcsXG4gIEJFTEw6ICdiZWxsJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxhcm1TdGF0dXNJY29uID0gKHR5cGVvZiBBTEFSTV9TVEFUVVNfSUNPTilba2V5b2YgdHlwZW9mIEFMQVJNX1NUQVRVU19JQ09OXTtcblxuLyoqXG4gKiBBIGxvb2t1cCB0YWJsZSB0byBtYXAgYWxhcm0gc3RhdHVzZXMgdG8gY29ycmVzcG9uZGluZyBpY29ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFsYXJtSWNvbk1hcDogUmVjb3JkPEFsYXJtU3RhdHVzVHlwZSwgQWxhcm1TdGF0dXNJY29uPiA9IHtcbiAgW0FsYXJtU3RhdHVzLkNMRUFSRURdOiBBTEFSTV9TVEFUVVNfSUNPTi5BTEVSVF9JRExFLFxuICBbQWxhcm1TdGF0dXMuQUNLTk9XTEVER0VEXTogQUxBUk1fU1RBVFVTX0lDT04uQkVMTF9TTEFTSCxcbiAgW0FsYXJtU3RhdHVzLkFDVElWRV06IEFMQVJNX1NUQVRVU19JQ09OLkJFTExcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBBTEFSTV9TRVZFUklUWV9JQ09OID0ge1xuICBDSVJDTEU6ICdjaXJjbGUnLFxuICBISUdIX1BSSU9SSVRZOiAnaGlnaC1wcmlvcml0eScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgRVhDTEFNQVRJT05fQ0lSQ0xFOiAnZXhjbGFtYXRpb24tY2lyY2xlJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEhFTFBfSUNPTiA9ICdoZWxwJztcblxuZXhwb3J0IHR5cGUgQWxhcm1TZXZlcml0eUljb24gPSAodHlwZW9mIEFMQVJNX1NFVkVSSVRZX0lDT04pW2tleW9mIHR5cGVvZiBBTEFSTV9TRVZFUklUWV9JQ09OXTtcbi8qKlxuICogQSBsb29rdXAgdGFibGUgdG8gbWFwIGFsYXJtIHNldmVyaXR5IHR5cGVzIHRvIGNvcnJlc3BvbmRpbmcgaWNvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBBTEFSTV9TRVZFUklUWV9JQ09OX01BUDogUmVjb3JkPFNldmVyaXR5VHlwZSwgQWxhcm1TZXZlcml0eUljb24+ID0ge1xuICBbU2V2ZXJpdHkuQ1JJVElDQUxdOiBBTEFSTV9TRVZFUklUWV9JQ09OLkVYQ0xBTUFUSU9OX0NJUkNMRSxcbiAgW1NldmVyaXR5Lk1BSk9SXTogQUxBUk1fU0VWRVJJVFlfSUNPTi5XQVJOSU5HLFxuICBbU2V2ZXJpdHkuTUlOT1JdOiBBTEFSTV9TRVZFUklUWV9JQ09OLkhJR0hfUFJJT1JJVFksXG4gIFtTZXZlcml0eS5XQVJOSU5HXTogQUxBUk1fU0VWRVJJVFlfSUNPTi5DSVJDTEVcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsYXJtTGlzdEZvcm1GaWx0ZXJzID0ge1xuICBzaG93Q2xlYXJlZDogYm9vbGVhbjtcbiAgc2V2ZXJpdHlPcHRpb25zOiBTZXZlcml0eUZpbHRlcjtcbiAgc2VsZWN0ZWREYXRlcz86IERhdGVUaW1lQ29udGV4dDtcbn07XG5cbmV4cG9ydCB0eXBlIEFsYXJtRmlsdGVySW50ZXJ2YWwgPVxuICB8IEludGVydmFsXG4gIHwge1xuICAgICAgaWQ6ICdub25lJztcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICB0aW1lc3BhbkluTXM/OiBudW1iZXI7XG4gICAgfTtcblxuLyoqXG4gKiBFeHRlbmRlZCBpbnRlcnZhbCB0aXRsZXMgd2l0aCBhbiBhZGRpdGlvbmFsIHRpdGxlIGZvciB0aGUgY2FzZSB3aGVuIG5vIGRhdGUgaXMgc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFUlZBTF9USVRMRVNfRVhURU5ERUQ6IFJlY29yZDxBbGFybUZpbHRlckludGVydmFsWydpZCddLCBzdHJpbmc+ID0ge1xuICAuLi5JTlRFUlZBTF9USVRMRVMsXG4gIG5vbmU6IGdldHRleHQoJ05vIGRhdGUgZmlsdGVyJylcbn07XG5cbmV4cG9ydCBjb25zdCBJTlRFUlZBTFNfRVhURU5ERUQ6IEFsYXJtRmlsdGVySW50ZXJ2YWxbXSA9IFtcbiAge1xuICAgIGlkOiAnbm9uZScsXG4gICAgdGl0bGU6IGdldHRleHQoJ05vIGRhdGUgZmlsdGVyJylcbiAgfSxcbiAgLi4uSU5URVJWQUxTXG5dO1xuXG5leHBvcnQgdHlwZSBXaWRnZXRUaW1lQ29udGV4dFN0YXRlRXh0ZW5kZWQgPSB7XG4gIGRhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgaW50ZXJ2YWw6IEFsYXJtRmlsdGVySW50ZXJ2YWxbJ2lkJ107XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RlZEFsYXJtID0gSUFsYXJtIHwgbnVsbDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUxBUk1fQ09VTlRTOiBBbGFybUNvdW50ID0geyBDUklUSUNBTDogMCwgTUFKT1I6IDAsIE1JTk9SOiAwLCBXQVJOSU5HOiAwIH07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVkVSSVRZX1ZBTFVFUzogU2V2ZXJpdHlGaWx0ZXIgPSB7XG4gIFtTZXZlcml0eS5DUklUSUNBTF06IHRydWUsXG4gIFtTZXZlcml0eS5NQUpPUl06IHRydWUsXG4gIFtTZXZlcml0eS5NSU5PUl06IHRydWUsXG4gIFtTZXZlcml0eS5XQVJOSU5HXTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RBVFVTX1ZBTFVFUzogQWxhcm1TdGF0dXNTZXR0aW5ncyA9IHtcbiAgW0FsYXJtU3RhdHVzLkFDVElWRV06IHRydWUsXG4gIFtBbGFybVN0YXR1cy5BQ0tOT1dMRURHRURdOiB0cnVlLFxuICBbQWxhcm1TdGF0dXMuQ0xFQVJFRF06IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBBTEFSTVNfUEFUSCA9ICdhbGFybXMnO1xuXG5leHBvcnQgdHlwZSBDdXN0b21GcmFnbWVudCA9IHtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbi8qKlxuICogRGVmYXVsdCBwcm9wZXJ0aWVzIG9mIGEgYWxhcm0uIFVzZWQgdG8gZXh0cmFjdCB0aGUgY3VzdG9tIHByb3BlcnRpZXMgZnJvbSBhIEFsYXJtIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFMQVJNX0RFRkFVTFRfUFJPUEVSVElFUyA9IFtcbiAgJ3NldmVyaXR5JyxcbiAgJ3NvdXJjZScsXG4gICd0eXBlJyxcbiAgJ3RpbWUnLFxuICAndGV4dCcsXG4gICdpZCcsXG4gICdzdGF0dXMnLFxuICAnY291bnQnLFxuICAnbmFtZScsXG4gICdoaXN0b3J5JyxcbiAgJ3NlbGYnLFxuICAnY3JlYXRpb25UaW1lJyxcbiAgJ2ZpcnN0T2NjdXJyZW5jZVRpbWUnLFxuICAnbGFzdFVwZGF0ZWQnXG5dIGFzIGNvbnN0IHNhdGlzZmllcyBSZWFkb25seUFycmF5PGtleW9mIElBbGFybT47XG5cbmV4cG9ydCBjb25zdCBUSFJPVFRMRV9SRUFMVElNRV9SRUZSRVNIID0gMV8wMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1EZXRhaWxzQnV0dG9uIHtcbiAgYWRkaXRpb25hbEJ1dHRvbkNsYXNzZXM/OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb246IFN1cHBvcnRlZEljb25zO1xuICBhZGRpdGlvbmFsSWNvbkNsYXNzZXM/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIEBwYXJhbSBhbGFybSBUaGUgYWxhcm0gdG8gYXBwbHkgdGhpcyBhY3Rpb24gdG9cbiAgICogQHJldHVybnMgQSBib29sZWFuIG9yIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBvciB0byB0aGUgdXBkYXRlZCBhbGFybS4gSWYgdGhlIHJlc3VsdCBpcyB0cnVlLCBhIHJlbG9hZCB3aWxsIGJlIHRyaWdnZXJlZC4gSWYgdGhlIHJlc3VsdCBpcyBhbiBhbGFybSwgdGhlIGFsYXJtIHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWVzLlxuICAgKi9cbiAgYWN0aW9uOiAoYWxhcm06IElBbGFybSkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbiB8IElBbGFybT47XG4gIHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtTGlzdEluZGljYXRvckJhc2Uge1xuICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGFybUxpc3RJbmRpY2F0b3JJY29uIGV4dGVuZHMgQWxhcm1MaXN0SW5kaWNhdG9yQmFzZSB7XG4gIGljb246IFN1cHBvcnRlZEljb25zO1xuICB0aXRsZTogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQWxhcm1MaXN0SW5kaWNhdG9yID0gQWxhcm1MaXN0SW5kaWNhdG9ySWNvbjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgQ3VtdWxvY2l0eVNlcnZpY2VSZWdpc3RyeSB7XG4gICAgaW50ZXJmYWNlIFNwZWNpZmljRXh0ZW5zaW9uS2V5cyB7XG4gICAgICBhbGFybURldGFpbHNCdXR0b246IEFsYXJtRGV0YWlsc0J1dHRvblByb3ZpZGVyO1xuICAgICAgYWxhcm1MaXN0SW5kaWNhdG9yOiBBbGFybUxpc3RJbmRpY2F0b3JQcm92aWRlcjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgQWxhcm1EZXRhaWxzQnV0dG9uUHJvdmlkZXIge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgYmUgc2hvd24gZm9yIGEgZ2l2ZW4gYWxhcm0uXG4gICAgICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIGZvciB3aGljaCB0byBkZXRlcm1pbmUgYnV0dG9uIHZpc2liaWxpdHkuXG4gICAgICAgKiBAcGFyYW0gc291cmNlIFRoZSBtYW5hZ2VkIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGFsYXJtLlxuICAgICAgICogQHJldHVybnMgVGhlIGJ1dHRvbiBkZXRhaWxzIG9yIGZhbHNlLlxuICAgICAgICovXG4gICAgICBnZXRBbGFybURldGFpbHNCdXR0b24kKFxuICAgICAgICBhbGFybTogSUFsYXJtLFxuICAgICAgICBzb3VyY2U6IElNYW5hZ2VkT2JqZWN0XG4gICAgICApOiBPYnNlcnZhYmxlPEFsYXJtRGV0YWlsc0J1dHRvbiB8IGZhbHNlPjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgQWxhcm1MaXN0SW5kaWNhdG9yUHJvdmlkZXIge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGluZGljYXRvciBzaG91bGQgYmUgc2hvd24gZm9yIGEgZ2l2ZW4gYWxhcm0uXG4gICAgICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIGZvciB3aGljaCB0byBkZXRlcm1pbmUgaW5kaWNhdG9yIHZpc2liaWxpdHkuXG4gICAgICAgKiBAcmV0dXJucyBUaGUgaW5kaWNhdG9yIGRldGFpbHMgb3IgZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGdldEFsYXJtTGlzdEluZGljYXRvciQoYWxhcm06IElBbGFybSk6IE9ic2VydmFibGU8QWxhcm1MaXN0SW5kaWNhdG9yIHwgZmFsc2U+O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxXQUFXLEVBS1gsUUFBUSxFQUdULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFFTCxPQUFPLEVBSVIsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBWSxNQUFNLHFDQUFxQyxDQUFDO0FBd0IzRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBSTdFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFVBQVUsRUFBRSxnQkFBZ0I7SUFDNUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDO0FBSVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTZDO0lBQ3BFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLFVBQVU7SUFDbkQsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtJQUN4RCxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO0NBQ3BDLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixhQUFhLEVBQUUsZUFBZTtJQUM5QixPQUFPLEVBQUUsU0FBUztJQUNsQixrQkFBa0IsRUFBRSxvQkFBb0I7Q0FDaEMsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFHaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBNEM7SUFDOUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsa0JBQWtCO0lBQzNELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLG1CQUFtQixDQUFDLE9BQU87SUFDN0MsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsYUFBYTtJQUNuRCxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO0NBQ3RDLENBQUM7QUFnQlg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBOEM7SUFDakYsR0FBRyxlQUFlO0lBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUEwQjtJQUN2RDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztLQUNqQztJQUNELEdBQUcsU0FBUztDQUNiLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBZSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBbUI7SUFDckQsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO0lBQ3RCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUk7SUFDdEIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSTtDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXdCO0lBQ3hELENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7SUFDMUIsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSTtJQUNoQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJO0NBQzVCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBTXBDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsVUFBVTtJQUNWLFFBQVE7SUFDUixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixJQUFJO0lBQ0osUUFBUTtJQUNSLE9BQU87SUFDUCxNQUFNO0lBQ04sU0FBUztJQUNULE1BQU07SUFDTixjQUFjO0lBQ2QscUJBQXFCO0lBQ3JCLGFBQWE7Q0FDaUMsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWxhcm1TdGF0dXMsXG4gIEFsYXJtU3RhdHVzU2V0dGluZ3MsXG4gIEFsYXJtU3RhdHVzVHlwZSxcbiAgSUFsYXJtLFxuICBJTWFuYWdlZE9iamVjdCxcbiAgU2V2ZXJpdHksXG4gIFNldmVyaXR5RmlsdGVyLFxuICBTZXZlcml0eVR5cGVcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgRGF0ZVRpbWVDb250ZXh0LFxuICBnZXR0ZXh0LFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JOb2RlRGF0YSxcbiAgUm91dGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB0eXBlIHsgU3VwcG9ydGVkSWNvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5URVJWQUxTLCBJTlRFUlZBTF9USVRMRVMsIEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtc01vZHVsZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMgYSBjb21iaW5hdGlvbiBvZiBBbmd1bGFyIGFuZCBBbmd1bGFySlMuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgaHlicmlkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJvb3Qgbm9kZSBvZiB0aGUgbmF2aWdhdG9yLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgYE5hdmlnYXRvck5vZGVgIG9yIGBOYXZpZ2F0b3JOb2RlRGF0YWAuXG4gICAqIFRoaXMgc2VydmVzIGFzIHRoZSBlbnRyeSBwb2ludCBmb3IgbmF2aWdhdGlvbiBzdHJ1Y3R1cmUgZm9yIEFsYXJtcyB2aWV3cy5cbiAgICogQG9wdGlvbmFsXG4gICAqL1xuICByb290TmF2aWdhdG9yTm9kZT86IE5hdmlnYXRvck5vZGUgfCBOYXZpZ2F0b3JOb2RlRGF0YTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYFJvdXRlYCBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgbmF2aWdhdGlvbiByb3V0ZXMgYXZhaWxhYmxlLlxuICAgKiBFYWNoIHJvdXRlIGRlZmluZXMgYSBuYXZpZ2F0aW9uIHBhdGggYW5kIGl0cyBhc3NvY2lhdGVkIGNvbXBvbmVudHMgcmVsYXRlZCB0byBBbGFybXMuXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgcm91dGU/OiBSb3V0ZVtdO1xufVxuXG5leHBvcnQgY29uc3QgQUxBUk1TX01PRFVMRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0FsYXJtc01vZHVsZUNvbmZpZycpO1xuXG5leHBvcnQgdHlwZSBBbGFybUNvdW50ID0geyBba2V5IGluIFNldmVyaXR5VHlwZV06IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgQUxBUk1fU1RBVFVTX0lDT04gPSB7XG4gIEFMRVJUX0lETEU6ICdjOHktYWxlcnQtaWRsZScsXG4gIEJFTExfU0xBU0g6ICdiZWxsLXNsYXNoJyxcbiAgQkVMTDogJ2JlbGwnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGFybVN0YXR1c0ljb24gPSAodHlwZW9mIEFMQVJNX1NUQVRVU19JQ09OKVtrZXlvZiB0eXBlb2YgQUxBUk1fU1RBVFVTX0lDT05dO1xuXG4vKipcbiAqIEEgbG9va3VwIHRhYmxlIHRvIG1hcCBhbGFybSBzdGF0dXNlcyB0byBjb3JyZXNwb25kaW5nIGljb25zLlxuICovXG5leHBvcnQgY29uc3QgQWxhcm1JY29uTWFwOiBSZWNvcmQ8QWxhcm1TdGF0dXNUeXBlLCBBbGFybVN0YXR1c0ljb24+ID0ge1xuICBbQWxhcm1TdGF0dXMuQ0xFQVJFRF06IEFMQVJNX1NUQVRVU19JQ09OLkFMRVJUX0lETEUsXG4gIFtBbGFybVN0YXR1cy5BQ0tOT1dMRURHRURdOiBBTEFSTV9TVEFUVVNfSUNPTi5CRUxMX1NMQVNILFxuICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogQUxBUk1fU1RBVFVTX0lDT04uQkVMTFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEFMQVJNX1NFVkVSSVRZX0lDT04gPSB7XG4gIENJUkNMRTogJ2NpcmNsZScsXG4gIEhJR0hfUFJJT1JJVFk6ICdoaWdoLXByaW9yaXR5JyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBFWENMQU1BVElPTl9DSVJDTEU6ICdleGNsYW1hdGlvbi1jaXJjbGUnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSEVMUF9JQ09OID0gJ2hlbHAnO1xuXG5leHBvcnQgdHlwZSBBbGFybVNldmVyaXR5SWNvbiA9ICh0eXBlb2YgQUxBUk1fU0VWRVJJVFlfSUNPTilba2V5b2YgdHlwZW9mIEFMQVJNX1NFVkVSSVRZX0lDT05dO1xuLyoqXG4gKiBBIGxvb2t1cCB0YWJsZSB0byBtYXAgYWxhcm0gc2V2ZXJpdHkgdHlwZXMgdG8gY29ycmVzcG9uZGluZyBpY29ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFMQVJNX1NFVkVSSVRZX0lDT05fTUFQOiBSZWNvcmQ8U2V2ZXJpdHlUeXBlLCBBbGFybVNldmVyaXR5SWNvbj4gPSB7XG4gIFtTZXZlcml0eS5DUklUSUNBTF06IEFMQVJNX1NFVkVSSVRZX0lDT04uRVhDTEFNQVRJT05fQ0lSQ0xFLFxuICBbU2V2ZXJpdHkuTUFKT1JdOiBBTEFSTV9TRVZFUklUWV9JQ09OLldBUk5JTkcsXG4gIFtTZXZlcml0eS5NSU5PUl06IEFMQVJNX1NFVkVSSVRZX0lDT04uSElHSF9QUklPUklUWSxcbiAgW1NldmVyaXR5LldBUk5JTkddOiBBTEFSTV9TRVZFUklUWV9JQ09OLkNJUkNMRVxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxhcm1MaXN0Rm9ybUZpbHRlcnMgPSB7XG4gIHNob3dDbGVhcmVkOiBib29sZWFuO1xuICBzZXZlcml0eU9wdGlvbnM6IFNldmVyaXR5RmlsdGVyO1xuICBzZWxlY3RlZERhdGVzPzogRGF0ZVRpbWVDb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgQWxhcm1GaWx0ZXJJbnRlcnZhbCA9XG4gIHwgSW50ZXJ2YWxcbiAgfCB7XG4gICAgICBpZDogJ25vbmUnO1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIHRpbWVzcGFuSW5Ncz86IG51bWJlcjtcbiAgICB9O1xuXG4vKipcbiAqIEV4dGVuZGVkIGludGVydmFsIHRpdGxlcyB3aXRoIGFuIGFkZGl0aW9uYWwgdGl0bGUgZm9yIHRoZSBjYXNlIHdoZW4gbm8gZGF0ZSBpcyBzZWxlY3RlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVSVkFMX1RJVExFU19FWFRFTkRFRDogUmVjb3JkPEFsYXJtRmlsdGVySW50ZXJ2YWxbJ2lkJ10sIHN0cmluZz4gPSB7XG4gIC4uLklOVEVSVkFMX1RJVExFUyxcbiAgbm9uZTogZ2V0dGV4dCgnTm8gZGF0ZSBmaWx0ZXInKVxufTtcblxuZXhwb3J0IGNvbnN0IElOVEVSVkFMU19FWFRFTkRFRDogQWxhcm1GaWx0ZXJJbnRlcnZhbFtdID0gW1xuICB7XG4gICAgaWQ6ICdub25lJyxcbiAgICB0aXRsZTogZ2V0dGV4dCgnTm8gZGF0ZSBmaWx0ZXInKVxuICB9LFxuICAuLi5JTlRFUlZBTFNcbl07XG5cbmV4cG9ydCB0eXBlIFdpZGdldFRpbWVDb250ZXh0U3RhdGVFeHRlbmRlZCA9IHtcbiAgZGF0ZTogRGF0ZVRpbWVDb250ZXh0O1xuICBpbnRlcnZhbDogQWxhcm1GaWx0ZXJJbnRlcnZhbFsnaWQnXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGVkQWxhcm0gPSBJQWxhcm0gfCBudWxsO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTEFSTV9DT1VOVFM6IEFsYXJtQ291bnQgPSB7IENSSVRJQ0FMOiAwLCBNQUpPUjogMCwgTUlOT1I6IDAsIFdBUk5JTkc6IDAgfTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VWRVJJVFlfVkFMVUVTOiBTZXZlcml0eUZpbHRlciA9IHtcbiAgW1NldmVyaXR5LkNSSVRJQ0FMXTogdHJ1ZSxcbiAgW1NldmVyaXR5Lk1BSk9SXTogdHJ1ZSxcbiAgW1NldmVyaXR5Lk1JTk9SXTogdHJ1ZSxcbiAgW1NldmVyaXR5LldBUk5JTkddOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVEFUVVNfVkFMVUVTOiBBbGFybVN0YXR1c1NldHRpbmdzID0ge1xuICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogdHJ1ZSxcbiAgW0FsYXJtU3RhdHVzLkFDS05PV0xFREdFRF06IHRydWUsXG4gIFtBbGFybVN0YXR1cy5DTEVBUkVEXTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IEFMQVJNU19QQVRIID0gJ2FsYXJtcyc7XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZyYWdtZW50ID0ge1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IHByb3BlcnRpZXMgb2YgYSBhbGFybS4gVXNlZCB0byBleHRyYWN0IHRoZSBjdXN0b20gcHJvcGVydGllcyBmcm9tIGEgQWxhcm0gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgQUxBUk1fREVGQVVMVF9QUk9QRVJUSUVTID0gW1xuICAnc2V2ZXJpdHknLFxuICAnc291cmNlJyxcbiAgJ3R5cGUnLFxuICAndGltZScsXG4gICd0ZXh0JyxcbiAgJ2lkJyxcbiAgJ3N0YXR1cycsXG4gICdjb3VudCcsXG4gICduYW1lJyxcbiAgJ2hpc3RvcnknLFxuICAnc2VsZicsXG4gICdjcmVhdGlvblRpbWUnLFxuICAnZmlyc3RPY2N1cnJlbmNlVGltZScsXG4gICdsYXN0VXBkYXRlZCdcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlYWRvbmx5QXJyYXk8a2V5b2YgSUFsYXJtPjtcblxuZXhwb3J0IGNvbnN0IFRIUk9UVExFX1JFQUxUSU1FX1JFRlJFU0ggPSAxXzAwMDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuYXZpZ2F0aW9uIG9wdGlvbnMgZm9yIGFuIGFsYXJtIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIERlZmluZXMgaWYgdGhlIGFsYXJtIHNob3VsZCBuYXZpZ2F0ZSB0byBhIGRldGFpbCB2aWV3IHdoZW4gY2xpY2tlZC5cbiAgICovXG4gIGFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlldzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdHJ5IHRvIGRldGVybWluZSB0aGUgY29udGV4dCB0byBuYXZpZ2F0ZVxuICAgKiB0byB0aGUgY29ycmVjdCBhbGFybSBkZXRhaWwgdmlldyBvciBub3QuIElmIHNldCB0byB0cnVlLCB0aGUgY29tcG9uZW50IHdpbGxcbiAgICogbm90IHRyeSB0byBkZXRlcm1pbmUgdGhlIGNvbnRleHQgYW5kIHdpbGwgYWx3YXlzIG5hdmlnYXRlIHRvIHRoZSBhbGwgYWxhcm1zIHZpZXcuXG4gICAqL1xuICBhbHdheXNOYXZpZ2F0ZVRvQWxsQWxhcm1zOiBib29sZWFuO1xuICAvKipcbiAgICogRGVmaW5lcyBpZiB0aGUgY2xlYXJlZCBxdWVyeSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBuYXZpZ2F0aW9uIGlmXG4gICAqIHRoZSBhbGFybSBpcyBjbGVhcmVkLlxuICAgKi9cbiAgaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IHF1ZXJ5IHBhcmFtZXRlcnMgc2hvdWxkIGJlIGhhbmRsZWQgZHVyaW5nIG5hdmlnYXRpb24uXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhyZWUgdmFsdWVzOlxuICAgKlxuICAgKiAtIGBcIm1lcmdlXCJgIDogTWVyZ2UgbmV3IHBhcmFtZXRlcnMgd2l0aCBjdXJyZW50IHBhcmFtZXRlcnMuXG4gICAqIC0gYFwicHJlc2VydmVcImAgOiBQcmVzZXJ2ZSBjdXJyZW50IHBhcmFtZXRlcnMuXG4gICAqIC0gYFwiXCJgIDogUmVwbGFjZSBjdXJyZW50IHBhcmFtZXRlcnMgd2l0aCBuZXcgcGFyYW1ldGVycy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiAgICovXG4gIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFF1ZXJ5UGFyYW1zSGFuZGxpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtRGV0YWlsc0J1dHRvbiB7XG4gIGFkZGl0aW9uYWxCdXR0b25DbGFzc2VzPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uOiBTdXBwb3J0ZWRJY29ucztcbiAgYWRkaXRpb25hbEljb25DbGFzc2VzPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIGFwcGx5IHRoaXMgYWN0aW9uIHRvXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiBvciBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gb3IgdG8gdGhlIHVwZGF0ZWQgYWxhcm0uIElmIHRoZSByZXN1bHQgaXMgdHJ1ZSwgYSByZWxvYWQgd2lsbCBiZSB0cmlnZ2VyZWQuIElmIHRoZSByZXN1bHQgaXMgYW4gYWxhcm0sIHRoZSBhbGFybSB3aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHZhbHVlcy5cbiAgICovXG4gIGFjdGlvbjogKGFsYXJtOiBJQWxhcm0pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4gfCBJQWxhcm0+O1xuICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGFybUxpc3RJbmRpY2F0b3JCYXNlIHtcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1MaXN0SW5kaWNhdG9ySWNvbiBleHRlbmRzIEFsYXJtTGlzdEluZGljYXRvckJhc2Uge1xuICBpY29uOiBTdXBwb3J0ZWRJY29ucztcbiAgdGl0bGU6IHN0cmluZztcbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFsYXJtTGlzdEluZGljYXRvciA9IEFsYXJtTGlzdEluZGljYXRvckljb247XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgbmFtZXNwYWNlIEN1bXVsb2NpdHlTZXJ2aWNlUmVnaXN0cnkge1xuICAgIGludGVyZmFjZSBTcGVjaWZpY0V4dGVuc2lvbktleXMge1xuICAgICAgYWxhcm1EZXRhaWxzQnV0dG9uOiBBbGFybURldGFpbHNCdXR0b25Qcm92aWRlcjtcbiAgICAgIGFsYXJtTGlzdEluZGljYXRvcjogQWxhcm1MaXN0SW5kaWNhdG9yUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEFsYXJtRGV0YWlsc0J1dHRvblByb3ZpZGVyIHtcbiAgICAgIC8qKlxuICAgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBidXR0b24gc2hvdWxkIGJlIHNob3duIGZvciBhIGdpdmVuIGFsYXJtLlxuICAgICAgICogQHBhcmFtIGFsYXJtIFRoZSBhbGFybSBmb3Igd2hpY2ggdG8gZGV0ZXJtaW5lIGJ1dHRvbiB2aXNpYmlsaXR5LlxuICAgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgbWFuYWdlZCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGFybS5cbiAgICAgICAqIEByZXR1cm5zIFRoZSBidXR0b24gZGV0YWlscyBvciBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZ2V0QWxhcm1EZXRhaWxzQnV0dG9uJChcbiAgICAgICAgYWxhcm06IElBbGFybSxcbiAgICAgICAgc291cmNlOiBJTWFuYWdlZE9iamVjdFxuICAgICAgKTogT2JzZXJ2YWJsZTxBbGFybURldGFpbHNCdXR0b24gfCBmYWxzZT47XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEFsYXJtTGlzdEluZGljYXRvclByb3ZpZGVyIHtcbiAgICAgIC8qKlxuICAgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRpY2F0b3Igc2hvdWxkIGJlIHNob3duIGZvciBhIGdpdmVuIGFsYXJtLlxuICAgICAgICogQHBhcmFtIGFsYXJtIFRoZSBhbGFybSBmb3Igd2hpY2ggdG8gZGV0ZXJtaW5lIGluZGljYXRvciB2aXNpYmlsaXR5LlxuICAgICAgICogQHJldHVybnMgVGhlIGluZGljYXRvciBkZXRhaWxzIG9yIGZhbHNlLlxuICAgICAgICovXG4gICAgICBnZXRBbGFybUxpc3RJbmRpY2F0b3IkKGFsYXJtOiBJQWxhcm0pOiBPYnNlcnZhYmxlPEFsYXJtTGlzdEluZGljYXRvciB8IGZhbHNlPjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|