@grafana/scenes 6.7.0--canary.1091.14350229100.0 → 6.8.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/CHANGELOG.md +25 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { from, of } from 'rxjs';
|
|
2
|
+
import { map, mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { rangeUtil, CoreApp, DataTopic } from '@grafana/data';
|
|
4
|
+
import { getTemplateSrv, getRunRequest } from '@grafana/runtime';
|
|
5
|
+
import { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnnotationsSupport.js';
|
|
6
|
+
import { LoadingState } from '@grafana/schema';
|
|
7
|
+
import { getEnrichedDataRequest } from '../../getEnrichedDataRequest.js';
|
|
8
|
+
import { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject.js';
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __defProps = Object.defineProperties;
|
|
12
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
13
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
14
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
15
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
16
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
17
|
+
var __spreadValues = (a, b) => {
|
|
18
|
+
for (var prop in b || (b = {}))
|
|
19
|
+
if (__hasOwnProp.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
if (__getOwnPropSymbols)
|
|
22
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
23
|
+
if (__propIsEnum.call(b, prop))
|
|
24
|
+
__defNormalProp(a, prop, b[prop]);
|
|
25
|
+
}
|
|
26
|
+
return a;
|
|
27
|
+
};
|
|
28
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
29
|
+
let counter = 100;
|
|
30
|
+
function getNextRequestId() {
|
|
31
|
+
return "AQ" + counter++;
|
|
32
|
+
}
|
|
33
|
+
function executeAnnotationQuery(datasource, timeRange, query, layer) {
|
|
34
|
+
var _a;
|
|
35
|
+
if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {
|
|
36
|
+
console.warn("Using deprecated annotationQuery method, please upgrade your datasource");
|
|
37
|
+
return from(
|
|
38
|
+
datasource.annotationQuery({
|
|
39
|
+
range: timeRange.state.value,
|
|
40
|
+
rangeRaw: timeRange.state.value.raw,
|
|
41
|
+
annotation: query,
|
|
42
|
+
dashboard: {
|
|
43
|
+
getVariables: getTemplateSrv().getVariables
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
).pipe(
|
|
47
|
+
map((events) => ({
|
|
48
|
+
state: LoadingState.Done,
|
|
49
|
+
events
|
|
50
|
+
}))
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
const processor = __spreadValues(__spreadValues({}, standardAnnotationSupport), datasource.annotations);
|
|
54
|
+
const annotationWithDefaults = __spreadValues(__spreadValues({}, (_a = processor.getDefaultQuery) == null ? void 0 : _a.call(processor)), query);
|
|
55
|
+
const annotation = processor.prepareAnnotation(annotationWithDefaults);
|
|
56
|
+
if (!annotation) {
|
|
57
|
+
return of({
|
|
58
|
+
state: LoadingState.Done,
|
|
59
|
+
events: []
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const processedQuery = processor.prepareQuery(annotation);
|
|
63
|
+
if (!processedQuery) {
|
|
64
|
+
return of({
|
|
65
|
+
state: LoadingState.Done,
|
|
66
|
+
events: []
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const maxDataPoints = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
|
|
70
|
+
const interval = rangeUtil.calculateInterval(timeRange.state.value, maxDataPoints, datasource.interval);
|
|
71
|
+
const scopedVars = {
|
|
72
|
+
__interval: { text: interval.interval, value: interval.interval },
|
|
73
|
+
__interval_ms: { text: interval.intervalMs.toString(), value: interval.intervalMs },
|
|
74
|
+
__annotation: { text: annotation.name, value: annotation },
|
|
75
|
+
__sceneObject: wrapInSafeSerializableSceneObject(layer)
|
|
76
|
+
};
|
|
77
|
+
const queryRequest = __spreadValues(__spreadProps(__spreadValues({
|
|
78
|
+
startTime: Date.now(),
|
|
79
|
+
requestId: getNextRequestId(),
|
|
80
|
+
range: timeRange.state.value,
|
|
81
|
+
maxDataPoints,
|
|
82
|
+
scopedVars
|
|
83
|
+
}, interval), {
|
|
84
|
+
app: CoreApp.Dashboard,
|
|
85
|
+
timezone: timeRange.getTimeZone(),
|
|
86
|
+
targets: [
|
|
87
|
+
__spreadProps(__spreadValues({}, processedQuery), {
|
|
88
|
+
refId: "Anno"
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}), getEnrichedDataRequest(layer));
|
|
92
|
+
const runRequest = getRunRequest();
|
|
93
|
+
return runRequest(datasource, queryRequest).pipe(
|
|
94
|
+
mergeMap((panelData) => {
|
|
95
|
+
const data = (panelData == null ? void 0 : panelData.series.length) ? panelData.series : panelData.annotations;
|
|
96
|
+
if (!(data == null ? void 0 : data.length)) {
|
|
97
|
+
return of({
|
|
98
|
+
state: panelData.state,
|
|
99
|
+
events: []
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
data.forEach((frame) => {
|
|
103
|
+
var _a2;
|
|
104
|
+
if (!((_a2 = frame.meta) == null ? void 0 : _a2.dataTopic)) {
|
|
105
|
+
frame.meta = __spreadProps(__spreadValues({}, frame.meta || {}), { dataTopic: DataTopic.Annotations });
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return processor.processEvents(annotation, data).pipe(
|
|
109
|
+
map((events) => {
|
|
110
|
+
return {
|
|
111
|
+
state: panelData.state,
|
|
112
|
+
events: events || []
|
|
113
|
+
};
|
|
114
|
+
})
|
|
115
|
+
);
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export { executeAnnotationQuery };
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRBbm5vdGF0aW9uUXVlcnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3F1ZXJ5aW5nL2xheWVycy9hbm5vdGF0aW9ucy9zdGFuZGFyZEFubm90YXRpb25RdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJhbmdlVXRpbCwgQ29yZUFwcCwgRGF0YVRvcGljIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBnZXRUZW1wbGF0ZVNydiwgZ2V0UnVuUmVxdWVzdCB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IHsgc2hvdWxkVXNlTGVnYWN5UnVubmVyLCBzdGFuZGFyZEFubm90YXRpb25TdXBwb3J0IH0gZnJvbSAnLi9zdGFuZGFyZEFubm90YXRpb25zU3VwcG9ydC5qcyc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGUgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgZ2V0RW5yaWNoZWREYXRhUmVxdWVzdCB9IGZyb20gJy4uLy4uL2dldEVucmljaGVkRGF0YVJlcXVlc3QuanMnO1xuaW1wb3J0IHsgd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0LmpzJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5sZXQgY291bnRlciA9IDEwMDtcbmZ1bmN0aW9uIGdldE5leHRSZXF1ZXN0SWQoKSB7XG4gIHJldHVybiBcIkFRXCIgKyBjb3VudGVyKys7XG59XG5mdW5jdGlvbiBleGVjdXRlQW5ub3RhdGlvblF1ZXJ5KGRhdGFzb3VyY2UsIHRpbWVSYW5nZSwgcXVlcnksIGxheWVyKSB7XG4gIHZhciBfYTtcbiAgaWYgKGRhdGFzb3VyY2UuYW5ub3RhdGlvblF1ZXJ5ICYmIHNob3VsZFVzZUxlZ2FjeVJ1bm5lcihkYXRhc291cmNlKSkge1xuICAgIGNvbnNvbGUud2FybihcIlVzaW5nIGRlcHJlY2F0ZWQgYW5ub3RhdGlvblF1ZXJ5IG1ldGhvZCwgcGxlYXNlIHVwZ3JhZGUgeW91ciBkYXRhc291cmNlXCIpO1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgZGF0YXNvdXJjZS5hbm5vdGF0aW9uUXVlcnkoe1xuICAgICAgICByYW5nZTogdGltZVJhbmdlLnN0YXRlLnZhbHVlLFxuICAgICAgICByYW5nZVJhdzogdGltZVJhbmdlLnN0YXRlLnZhbHVlLnJhdyxcbiAgICAgICAgYW5ub3RhdGlvbjogcXVlcnksXG4gICAgICAgIGRhc2hib2FyZDoge1xuICAgICAgICAgIGdldFZhcmlhYmxlczogZ2V0VGVtcGxhdGVTcnYoKS5nZXRWYXJpYWJsZXNcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50cykgPT4gKHtcbiAgICAgICAgc3RhdGU6IExvYWRpbmdTdGF0ZS5Eb25lLFxuICAgICAgICBldmVudHNcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cbiAgY29uc3QgcHJvY2Vzc29yID0gX19zcHJlYWRWYWx1ZXMoX19zcHJlYWRWYWx1ZXMoe30sIHN0YW5kYXJkQW5ub3RhdGlvblN1cHBvcnQpLCBkYXRhc291cmNlLmFubm90YXRpb25zKTtcbiAgY29uc3QgYW5ub3RhdGlvbldpdGhEZWZhdWx0cyA9IF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCAoX2EgPSBwcm9jZXNzb3IuZ2V0RGVmYXVsdFF1ZXJ5KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChwcm9jZXNzb3IpKSwgcXVlcnkpO1xuICBjb25zdCBhbm5vdGF0aW9uID0gcHJvY2Vzc29yLnByZXBhcmVBbm5vdGF0aW9uKGFubm90YXRpb25XaXRoRGVmYXVsdHMpO1xuICBpZiAoIWFubm90YXRpb24pIHtcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgc3RhdGU6IExvYWRpbmdTdGF0ZS5Eb25lLFxuICAgICAgZXZlbnRzOiBbXVxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHByb2Nlc3NlZFF1ZXJ5ID0gcHJvY2Vzc29yLnByZXBhcmVRdWVyeShhbm5vdGF0aW9uKTtcbiAgaWYgKCFwcm9jZXNzZWRRdWVyeSkge1xuICAgIHJldHVybiBvZih7XG4gICAgICBzdGF0ZTogTG9hZGluZ1N0YXRlLkRvbmUsXG4gICAgICBldmVudHM6IFtdXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWF4RGF0YVBvaW50cyA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuICBjb25zdCBpbnRlcnZhbCA9IHJhbmdlVXRpbC5jYWxjdWxhdGVJbnRlcnZhbCh0aW1lUmFuZ2Uuc3RhdGUudmFsdWUsIG1heERhdGFQb2ludHMsIGRhdGFzb3VyY2UuaW50ZXJ2YWwpO1xuICBjb25zdCBzY29wZWRWYXJzID0ge1xuICAgIF9faW50ZXJ2YWw6IHsgdGV4dDogaW50ZXJ2YWwuaW50ZXJ2YWwsIHZhbHVlOiBpbnRlcnZhbC5pbnRlcnZhbCB9LFxuICAgIF9faW50ZXJ2YWxfbXM6IHsgdGV4dDogaW50ZXJ2YWwuaW50ZXJ2YWxNcy50b1N0cmluZygpLCB2YWx1ZTogaW50ZXJ2YWwuaW50ZXJ2YWxNcyB9LFxuICAgIF9fYW5ub3RhdGlvbjogeyB0ZXh0OiBhbm5vdGF0aW9uLm5hbWUsIHZhbHVlOiBhbm5vdGF0aW9uIH0sXG4gICAgX19zY2VuZU9iamVjdDogd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0KGxheWVyKVxuICB9O1xuICBjb25zdCBxdWVyeVJlcXVlc3QgPSBfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHtcbiAgICBzdGFydFRpbWU6IERhdGUubm93KCksXG4gICAgcmVxdWVzdElkOiBnZXROZXh0UmVxdWVzdElkKCksXG4gICAgcmFuZ2U6IHRpbWVSYW5nZS5zdGF0ZS52YWx1ZSxcbiAgICBtYXhEYXRhUG9pbnRzLFxuICAgIHNjb3BlZFZhcnNcbiAgfSwgaW50ZXJ2YWwpLCB7XG4gICAgYXBwOiBDb3JlQXBwLkRhc2hib2FyZCxcbiAgICB0aW1lem9uZTogdGltZVJhbmdlLmdldFRpbWVab25lKCksXG4gICAgdGFyZ2V0czogW1xuICAgICAgX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgcHJvY2Vzc2VkUXVlcnkpLCB7XG4gICAgICAgIHJlZklkOiBcIkFubm9cIlxuICAgICAgfSlcbiAgICBdXG4gIH0pLCBnZXRFbnJpY2hlZERhdGFSZXF1ZXN0KGxheWVyKSk7XG4gIGNvbnN0IHJ1blJlcXVlc3QgPSBnZXRSdW5SZXF1ZXN0KCk7XG4gIHJldHVybiBydW5SZXF1ZXN0KGRhdGFzb3VyY2UsIHF1ZXJ5UmVxdWVzdCkucGlwZShcbiAgICBtZXJnZU1hcCgocGFuZWxEYXRhKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gKHBhbmVsRGF0YSA9PSBudWxsID8gdm9pZCAwIDogcGFuZWxEYXRhLnNlcmllcy5sZW5ndGgpID8gcGFuZWxEYXRhLnNlcmllcyA6IHBhbmVsRGF0YS5hbm5vdGF0aW9ucztcbiAgICAgIGlmICghKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IGRhdGEubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgIHN0YXRlOiBwYW5lbERhdGEuc3RhdGUsXG4gICAgICAgICAgZXZlbnRzOiBbXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRhdGEuZm9yRWFjaCgoZnJhbWUpID0+IHtcbiAgICAgICAgdmFyIF9hMjtcbiAgICAgICAgaWYgKCEoKF9hMiA9IGZyYW1lLm1ldGEpID09IG51bGwgPyB2b2lkIDAgOiBfYTIuZGF0YVRvcGljKSkge1xuICAgICAgICAgIGZyYW1lLm1ldGEgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBmcmFtZS5tZXRhIHx8IHt9KSwgeyBkYXRhVG9waWM6IERhdGFUb3BpYy5Bbm5vdGF0aW9ucyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvY2Vzc29yLnByb2Nlc3NFdmVudHMoYW5ub3RhdGlvbiwgZGF0YSkucGlwZShcbiAgICAgICAgbWFwKChldmVudHMpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGU6IHBhbmVsRGF0YS5zdGF0ZSxcbiAgICAgICAgICAgIGV2ZW50czogZXZlbnRzIHx8IFtdXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IHsgZXhlY3V0ZUFubm90YXRpb25RdWVyeSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljM1JoYm1SaGNtUkJibTV2ZEdGMGFXOXVVWFZsY25rdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUx5NHVMM055WXk5eGRXVnllV2x1Wnk5c1lYbGxjbk12WVc1dWIzUmhkR2x2Ym5NdmMzUmhibVJoY21SQmJtNXZkR0YwYVc5dVVYVmxjbmt1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dabkp2YlN3Z1QySnpaWEoyWVdKc1pTd2diMllnZlNCbWNtOXRJQ2R5ZUdwekp6dGNibWx0Y0c5eWRDQjdJRzFoY0N3Z2JXVnlaMlZOWVhBZ2ZTQm1jbTl0SUNkeWVHcHpMMjl3WlhKaGRHOXljeWM3WEc1Y2JtbHRjRzl5ZENCN1hHNGdJRUZ1Ym05MFlYUnBiMjVGZG1WdWRDeGNiaUFnUVc1dWIzUmhkR2x2YmxGMVpYSjVMRnh1SUNCRGIzSmxRWEJ3TEZ4dUlDQkVZWFJoVVhWbGNubFNaWEYxWlhOMExGeHVJQ0JFWVhSaFUyOTFjbU5sUVhCcExGeHVJQ0JFWVhSaFZHOXdhV01zWEc0Z0lGQmhibVZzVFc5a1pXd3NYRzRnSUhKaGJtZGxWWFJwYkN4Y2JpQWdVMk52Y0dWa1ZtRnljeXhjYm4wZ1puSnZiU0FuUUdkeVlXWmhibUV2WkdGMFlTYzdYRzVjYm1sdGNHOXlkQ0I3SUdkbGRGSjFibEpsY1hWbGMzUXNJR2RsZEZSbGJYQnNZWFJsVTNKMklIMGdabkp2YlNBblFHZHlZV1poYm1FdmNuVnVkR2x0WlNjN1hHNXBiWEJ2Y25RZ2V5QnphRzkxYkdSVmMyVk1aV2RoWTNsU2RXNXVaWElzSUhOMFlXNWtZWEprUVc1dWIzUmhkR2x2YmxOMWNIQnZjblFnZlNCbWNtOXRJQ2N1TDNOMFlXNWtZWEprUVc1dWIzUmhkR2x2Ym5OVGRYQndiM0owSnp0Y2JtbHRjRzl5ZENCN0lFUmhjMmhpYjJGeVpDd2dURzloWkdsdVoxTjBZWFJsSUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2YzJOb1pXMWhKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMExDQlRZMlZ1WlZScGJXVlNZVzVuWlV4cGEyVWdmU0JtY205dElDY3VMaTh1TGk4dUxpOWpiM0psTDNSNWNHVnpKenRjYm1sdGNHOXlkQ0I3SUdkbGRFVnVjbWxqYUdWa1JHRjBZVkpsY1hWbGMzUWdmU0JtY205dElDY3VMaTh1TGk5blpYUkZibkpwWTJobFpFUmhkR0ZTWlhGMVpYTjBKenRjYm1sdGNHOXlkQ0I3SUhkeVlYQkpibE5oWm1WVFpYSnBZV3hwZW1GaWJHVlRZMlZ1WlU5aWFtVmpkQ0I5SUdaeWIyMGdKeTR1THk0dUx5NHVMM1YwYVd4ekwzZHlZWEJKYmxOaFptVlRaWEpwWVd4cGVtRmliR1ZUWTJWdVpVOWlhbVZqZENjN1hHNWNibXhsZENCamIzVnVkR1Z5SUQwZ01UQXdPMXh1Wm5WdVkzUnBiMjRnWjJWMFRtVjRkRkpsY1hWbGMzUkpaQ2dwSUh0Y2JpQWdjbVYwZFhKdUlDZEJVU2NnS3lCamIzVnVkR1Z5S3lzN1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnUVc1dWIzUmhkR2x2YmxGMVpYSjVUM0IwYVc5dWN5QjdYRzRnSUdSaGMyaGliMkZ5WkRvZ1JHRnphR0p2WVhKa08xeHVJQ0J3WVc1bGJEb2dVR0Z1Wld4TmIyUmxiRHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkJibTV2ZEdGMGFXOXVVWFZsY25sU1pYTjFiSFJ6SUh0Y2JpQWdjM1JoZEdVNklFeHZZV1JwYm1kVGRHRjBaVHRjYmlBZ1pYWmxiblJ6T2lCQmJtNXZkR0YwYVc5dVJYWmxiblJiWFR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Y0WldOMWRHVkJibTV2ZEdGMGFXOXVVWFZsY25rb1hHNGdJR1JoZEdGemIzVnlZMlU2SUVSaGRHRlRiM1Z5WTJWQmNHa3NYRzRnSUhScGJXVlNZVzVuWlRvZ1UyTmxibVZVYVcxbFVtRnVaMlZNYVd0bExGeHVJQ0J4ZFdWeWVUb2dRVzV1YjNSaGRHbHZibEYxWlhKNUxGeHVJQ0JzWVhsbGNqb2dVMk5sYm1WUFltcGxZM1JjYmlrNklFOWljMlZ5ZG1GaWJHVThRVzV1YjNSaGRHbHZibEYxWlhKNVVtVnpkV3gwY3o0Z2UxeHVJQ0F2THlCRGFHVmpheUJwWmlCM1pTQnphRzkxYkdRZ2RYTmxJSFJvWlNCdmJHUWdZVzV1YjNSaGRHbHZibEYxWlhKNUlHMWxkR2h2WkZ4dUlDQnBaaUFvWkdGMFlYTnZkWEpqWlM1aGJtNXZkR0YwYVc5dVVYVmxjbmtnSmlZZ2MyaHZkV3hrVlhObFRHVm5ZV041VW5WdWJtVnlLR1JoZEdGemIzVnlZMlVwS1NCN1hHNGdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtDZFZjMmx1WnlCa1pYQnlaV05oZEdWa0lHRnVibTkwWVhScGIyNVJkV1Z5ZVNCdFpYUm9iMlFzSUhCc1pXRnpaU0IxY0dkeVlXUmxJSGx2ZFhJZ1pHRjBZWE52ZFhKalpTY3BPMXh1SUNBZ0lISmxkSFZ5YmlCbWNtOXRLRnh1SUNBZ0lDQWdaR0YwWVhOdmRYSmpaUzVoYm01dmRHRjBhVzl1VVhWbGNua29lMXh1SUNBZ0lDQWdJQ0J5WVc1blpUb2dkR2x0WlZKaGJtZGxMbk4wWVhSbExuWmhiSFZsTEZ4dUlDQWdJQ0FnSUNCeVlXNW5aVkpoZHpvZ2RHbHRaVkpoYm1kbExuTjBZWFJsTG5aaGJIVmxMbkpoZHl4Y2JpQWdJQ0FnSUNBZ1lXNXViM1JoZEdsdmJqb2djWFZsY25rc1hHNGdJQ0FnSUNBZ0lHUmhjMmhpYjJGeVpEb2dlMXh1SUNBZ0lDQWdJQ0FnSUdkbGRGWmhjbWxoWW14bGN6b2daMlYwVkdWdGNHeGhkR1ZUY25Zb0tTNW5aWFJXWVhKcFlXSnNaWE1zWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtWeHVJQ0FnSUNrdWNHbHdaU2hjYmlBZ0lDQWdJRzFoY0Nnb1pYWmxiblJ6S1NBOVBpQW9lMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpUb2dURzloWkdsdVoxTjBZWFJsTGtSdmJtVXNYRzRnSUNBZ0lDQWdJR1YyWlc1MGN5eGNiaUFnSUNBZ0lIMHBLVnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0F2THlCVGRHRnVaR0Z5WkNCQlVFa2dabTl5SUdGdWJtOTBZWFJwYjI1eklITjFjSEJ2Y25RdUlGTndjbVZoWkNCcGJpQmtZWFJoYzI5MWNtTmxJR0Z1Ym05MFlYUnBiMjV6SUhOMWNIQnZjblFnYjNabGNuSnBaR1Z6WEc0Z0lHTnZibk4wSUhCeWIyTmxjM052Y2lBOUlIdGNiaUFnSUNBdUxpNXpkR0Z1WkdGeVpFRnVibTkwWVhScGIyNVRkWEJ3YjNKMExGeHVJQ0FnSUM0dUxtUmhkR0Z6YjNWeVkyVXVZVzV1YjNSaGRHbHZibk1zWEc0Z0lIMDdYRzVjYmlBZ1kyOXVjM1FnWVc1dWIzUmhkR2x2YmxkcGRHaEVaV1poZFd4MGN5QTlJSHRjYmlBZ0lDQXZMeUJFWldaaGRXeDBJSEYxWlhKNUlIQnliM1pwWkdWa0lHSjVJR0VnWkdGMFlTQnpiM1Z5WTJWY2JpQWdJQ0F1TGk1d2NtOWpaWE56YjNJdVoyVjBSR1ZtWVhWc2RGRjFaWEo1UHk0b0tTeGNiaUFnSUNBdUxpNXhkV1Z5ZVN4Y2JpQWdmVHRjYmx4dUlDQXZMeUJFWVhSaElITnZkWEpqWlNCeGRXVnllU0J0YVdkeVlYUnBiMjV6WEc0Z0lHTnZibk4wSUdGdWJtOTBZWFJwYjI0Z1BTQndjbTlqWlhOemIzSXVjSEpsY0dGeVpVRnVibTkwWVhScGIyNGhLR0Z1Ym05MFlYUnBiMjVYYVhSb1JHVm1ZWFZzZEhNcE8xeHVJQ0JwWmlBb0lXRnVibTkwWVhScGIyNHBJSHRjYmlBZ0lDQnlaWFIxY200Z2IyWW9lMXh1SUNBZ0lDQWdjM1JoZEdVNklFeHZZV1JwYm1kVGRHRjBaUzVFYjI1bExGeHVJQ0FnSUNBZ1pYWmxiblJ6T2lCYlhTeGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElIQnliMk5sYzNObFpGRjFaWEo1SUQwZ2NISnZZMlZ6YzI5eUxuQnlaWEJoY21WUmRXVnllU0VvWVc1dWIzUmhkR2x2YmlrN1hHNGdJR2xtSUNnaGNISnZZMlZ6YzJWa1VYVmxjbmtwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiMllvZTF4dUlDQWdJQ0FnYzNSaGRHVTZJRXh2WVdScGJtZFRkR0YwWlM1RWIyNWxMRnh1SUNBZ0lDQWdaWFpsYm5Sek9pQmJYU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUM4dklFNXZJRzF2Y21VZ2NHOXBiblJ6SUhSb1lXNGdjR2w0Wld4elhHNGdJR052Ym5OMElHMWhlRVJoZEdGUWIybHVkSE1nUFNCM2FXNWtiM2N1YVc1dVpYSlhhV1IwYUNCOGZDQmtiMk4xYldWdWRDNWtiMk4xYldWdWRFVnNaVzFsYm5RdVkyeHBaVzUwVjJsa2RHZ2dmSHdnWkc5amRXMWxiblF1WW05a2VTNWpiR2xsYm5SWGFXUjBhRHRjYmx4dUlDQXZMeUJCWkdRZ2FXNTBaWEoyWVd3Z2RHOGdZVzV1YjNSaGRHbHZiaUJ4ZFdWeWFXVnpYRzRnSUdOdmJuTjBJR2x1ZEdWeWRtRnNJRDBnY21GdVoyVlZkR2xzTG1OaGJHTjFiR0YwWlVsdWRHVnlkbUZzS0hScGJXVlNZVzVuWlM1emRHRjBaUzUyWVd4MVpTd2diV0Y0UkdGMFlWQnZhVzUwY3l3Z1pHRjBZWE52ZFhKalpTNXBiblJsY25aaGJDazdYRzVjYmlBZ1kyOXVjM1FnYzJOdmNHVmtWbUZ5Y3pvZ1UyTnZjR1ZrVm1GeWN5QTlJSHRjYmlBZ0lDQmZYMmx1ZEdWeWRtRnNPaUI3SUhSbGVIUTZJR2x1ZEdWeWRtRnNMbWx1ZEdWeWRtRnNMQ0IyWVd4MVpUb2dhVzUwWlhKMllXd3VhVzUwWlhKMllXd2dmU3hjYmlBZ0lDQmZYMmx1ZEdWeWRtRnNYMjF6T2lCN0lIUmxlSFE2SUdsdWRHVnlkbUZzTG1sdWRHVnlkbUZzVFhNdWRHOVRkSEpwYm1jb0tTd2dkbUZzZFdVNklHbHVkR1Z5ZG1Gc0xtbHVkR1Z5ZG1Gc1RYTWdmU3hjYmlBZ0lDQmZYMkZ1Ym05MFlYUnBiMjQ2SUhzZ2RHVjRkRG9nWVc1dWIzUmhkR2x2Ymk1dVlXMWxMQ0IyWVd4MVpUb2dZVzV1YjNSaGRHbHZiaUI5TEZ4dUlDQWdJRjlmYzJObGJtVlBZbXBsWTNRNklIZHlZWEJKYmxOaFptVlRaWEpwWVd4cGVtRmliR1ZUWTJWdVpVOWlhbVZqZENoc1lYbGxjaWtzWEc0Z0lIMDdYRzVjYmlBZ1kyOXVjM1FnY1hWbGNubFNaWEYxWlhOME9pQkVZWFJoVVhWbGNubFNaWEYxWlhOMElEMGdlMXh1SUNBZ0lITjBZWEowVkdsdFpUb2dSR0YwWlM1dWIzY29LU3hjYmlBZ0lDQnlaWEYxWlhOMFNXUTZJR2RsZEU1bGVIUlNaWEYxWlhOMFNXUW9LU3hjYmlBZ0lDQnlZVzVuWlRvZ2RHbHRaVkpoYm1kbExuTjBZWFJsTG5aaGJIVmxMRnh1SUNBZ0lHMWhlRVJoZEdGUWIybHVkSE1zWEc0Z0lDQWdjMk52Y0dWa1ZtRnljeXhjYmlBZ0lDQXVMaTVwYm5SbGNuWmhiQ3hjYmlBZ0lDQmhjSEE2SUVOdmNtVkJjSEF1UkdGemFHSnZZWEprTEZ4dUlDQWdJSFJwYldWNmIyNWxPaUIwYVcxbFVtRnVaMlV1WjJWMFZHbHRaVnB2Ym1Vb0tTeGNiaUFnSUNCMFlYSm5aWFJ6T2lCYlhHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lDNHVMbkJ5YjJObGMzTmxaRkYxWlhKNUxGeHVJQ0FnSUNBZ0lDQnlaV1pKWkRvZ0owRnVibThuTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0JkTEZ4dUlDQWdJQzR1TG1kbGRFVnVjbWxqYUdWa1JHRjBZVkpsY1hWbGMzUW9iR0Y1WlhJcExGeHVJQ0I5TzF4dVhHNGdJR052Ym5OMElISjFibEpsY1hWbGMzUWdQU0JuWlhSU2RXNVNaWEYxWlhOMEtDazdYRzVjYmlBZ2NtVjBkWEp1SUhKMWJsSmxjWFZsYzNRb1pHRjBZWE52ZFhKalpTd2djWFZsY25sU1pYRjFaWE4wS1M1d2FYQmxLRnh1SUNBZ0lHMWxjbWRsVFdGd0tDaHdZVzVsYkVSaGRHRXBJRDArSUh0Y2JpQWdJQ0FnSUM4dklGTnZiV1VnWVc1dWIzUmhkR2x2Ym5NZ2MyVjBJSFJvWlNCMGIzQnBZeUJoYkhKbFlXUjVYRzRnSUNBZ0lDQmpiMjV6ZENCa1lYUmhJRDBnY0dGdVpXeEVZWFJoUHk1elpYSnBaWE11YkdWdVozUm9JRDhnY0dGdVpXeEVZWFJoTG5ObGNtbGxjeUE2SUhCaGJtVnNSR0YwWVM1aGJtNXZkR0YwYVc5dWN6dGNibHh1SUNBZ0lDQWdhV1lnS0NGa1lYUmhQeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzltS0h0Y2JpQWdJQ0FnSUNBZ0lDQnpkR0YwWlRvZ2NHRnVaV3hFWVhSaExuTjBZWFJsTEZ4dUlDQWdJQ0FnSUNBZ0lHVjJaVzUwY3pvZ1cxMHNYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBdkx5QkJaR1FnWkdGMFlTQjBiM0JwWXlCMGJ5QmxZV05vSUdaeVlXMWxYRzRnSUNBZ0lDQmtZWFJoTG1admNrVmhZMmdvS0daeVlXMWxLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDOHZJRWxtSUdSaGRHRWdkRzl3YVdNZ2FHRnpJRzV2ZENCaVpXVnVJSEJ5YjNacFpHVmtJR0o1SUhSb1pTQmtZWFJoSUhOdmRYSmpaU3dnYldGclpTQnpkWEpsSUdsMEozTWdjMlYwSUdOdmNuSmxZM1JzZVZ4dUlDQWdJQ0FnSUNCcFppQW9JV1p5WVcxbExtMWxkR0UvTG1SaGRHRlViM0JwWXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p5WVcxbExtMWxkR0VnUFNCN0lDNHVMaWhtY21GdFpTNXRaWFJoSUh4OElIdDlLU3dnWkdGMFlWUnZjR2xqT2lCRVlYUmhWRzl3YVdNdVFXNXViM1JoZEdsdmJuTWdmVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCd2NtOWpaWE56YjNJdWNISnZZMlZ6YzBWMlpXNTBjeUVvWVc1dWIzUmhkR2x2Yml3Z1pHRjBZU2t1Y0dsd1pTaGNiaUFnSUNBZ0lDQWdiV0Z3S0NobGRtVnVkSE1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhkR1U2SUhCaGJtVnNSR0YwWVM1emRHRjBaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjJaVzUwY3pvZ1pYWmxiblJ6SUh4OElGdGRMRnh1SUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMHBYRzRnSUNrN1hHNTlYRzRpWFN3aWJtRnRaWE1pT2xzaVgyRWlYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1FVRnpRa0VzU1VGQlNTeFBRVUZWTEVkQlFVRXNSMEZCUVN4RFFVRkJPMEZCUTJRc1UwRkJVeXhuUWtGQmJVSXNSMEZCUVR0QlFVTXhRaXhGUVVGQkxFOUJRVThzU1VGQlR5eEhRVUZCTEU5QlFVRXNSVUZCUVN4RFFVRkJPMEZCUTJoQ0xFTkJRVUU3UVVGWlR5eFRRVUZUTEhOQ1FVTmtMRU5CUVVFc1ZVRkJRU3hGUVVOQkxGTkJRMEVzUlVGQlFTeExRVUZCTEVWQlEwRXNTMEZEYjBNc1JVRkJRVHRCUVRGRGRFTXNSVUZCUVN4SlFVRkJMRVZCUVVFc1EwRkJRVHRCUVRSRFJTeEZRVUZCTEVsQlFVa3NWVUZCVnl4RFFVRkJMR1ZCUVVFc1NVRkJiVUlzY1VKQlFYTkNMRU5CUVVFc1ZVRkJWU3hEUVVGSExFVkJRVUU3UVVGRGJrVXNTVUZCUVN4UFFVRkJMRU5CUVZFc1MwRkJTeXg1UlVGQmVVVXNRMEZCUVN4RFFVRkJPMEZCUTNSR0xFbEJRVThzVDBGQlFTeEpRVUZCTzBGQlFVRXNUVUZEVEN4WFFVRlhMR1ZCUVdkQ0xFTkJRVUU3UVVGQlFTeFJRVU42UWl4TFFVRkJMRVZCUVU4c1ZVRkJWU3hMUVVGTkxFTkJRVUVzUzBGQlFUdEJRVUZCTEZGQlEzWkNMRkZCUVVFc1JVRkJWU3hUUVVGVkxFTkJRVUVzUzBGQlFTeERRVUZOTEV0QlFVMHNRMEZCUVN4SFFVRkJPMEZCUVVFc1VVRkRhRU1zVlVGQldTeEZRVUZCTEV0QlFVRTdRVUZCUVN4UlFVTmFMRk5CUVZjc1JVRkJRVHRCUVVGQkxGVkJRMVFzV1VGQlFTeEZRVUZqTEdkQ1FVRnBRaXhEUVVGQkxGbEJRVUU3UVVGQlFTeFRRVU5xUXp0QlFVRkJMRTlCUTBRc1EwRkJRVHRCUVVGQkxFdEJRMFFzUTBGQlFTeEpRVUZCTzBGQlFVRXNUVUZEUVN4SFFVRkJMRU5CUVVrc1EwRkJReXhOUVVGWkxFMUJRVUU3UVVGQlFTeFJRVU5tTEU5QlFVOHNXVUZCWVN4RFFVRkJMRWxCUVVFN1FVRkJRU3hSUVVOd1FpeE5RVUZCTzBGQlFVRXNUMEZEUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOS0xFTkJRVUU3UVVGQlFTeEhRVU5HTzBGQlIwRXNSVUZCVFN4TlFVRkJMRk5CUVVFc1IwRkJXU3hqUVVOaUxFTkJRVUVzWTBGQlFTeERRVUZCTEVWQlFVRXNSVUZCUVN4NVFrRkJRU3hEUVVGQkxFVkJRMEVzVlVGQlZ5eERRVUZCTEZkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUjJoQ0xFVkJRVUVzVFVGQlRTeHpRa0ZCZVVJc1IwRkJRU3hqUVVGQkxFTkJRVUVzWTBGQlFTeERRVUZCTEVWQlFVRXNSVUZCUVN4RFFVVXhRaXhGUVVGVkxFZEJRVUVzVTBGQlFTeERRVUZCTEdWQlFVRXNTMEZCVml4SlFVTkJMRWRCUVVFc1MwRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFTeERRVUZCTEVsQlFVRXNRMEZCUVN4VFFVRkJMRU5CUVVFc1EwRkJRU3hGUVVGQkxFdEJRVUVzUTBGQlFTeERRVUZCTzBGQlNVd3NSVUZCVFN4TlFVRkJMRlZCUVVFc1IwRkJZU3hUUVVGVkxFTkJRVUVzYVVKQlFVRXNRMEZCYlVJc2MwSkJRWE5DTEVOQlFVRXNRMEZCUVR0QlFVTjBSU3hGUVVGQkxFbEJRVWtzUTBGQlF5eFZRVUZaTEVWQlFVRTdRVUZEWml4SlFVRkJMRTlCUVU4c1JVRkJSeXhEUVVGQk8wRkJRVUVzVFVGRFVpeFBRVUZQTEZsQlFXRXNRMEZCUVN4SlFVRkJPMEZCUVVFc1RVRkRjRUlzVVVGQlVTeEZRVUZETzBGQlFVRXNTMEZEVml4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOSU8wRkJSVUVzUlVGQlRTeE5RVUZCTEdOQlFVRXNSMEZCYVVJc1UwRkJWU3hEUVVGQkxGbEJRVUVzUTBGQll5eFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVTjZSQ3hGUVVGQkxFbEJRVWtzUTBGQlF5eGpRVUZuUWl4RlFVRkJPMEZCUTI1Q0xFbEJRVUVzVDBGQlR5eEZRVUZITEVOQlFVRTdRVUZCUVN4TlFVTlNMRTlCUVU4c1dVRkJZU3hEUVVGQkxFbEJRVUU3UVVGQlFTeE5RVU53UWl4UlFVRlJMRVZCUVVNN1FVRkJRU3hMUVVOV0xFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEwZzdRVUZIUVN4RlFVRkJMRTFCUVUwc1owSkJRV2RDTEUxQlFVOHNRMEZCUVN4VlFVRkJMRWxCUVdNc1UwRkJVeXhsUVVGblFpeERRVUZCTEZkQlFVRXNTVUZCWlN4VFFVRlRMRWxCUVVzc1EwRkJRU3hYUVVGQkxFTkJRVUU3UVVGSGFrY3NSVUZCVFN4TlFVRkJMRkZCUVVFc1IwRkJWeXhWUVVGVkxHbENRVUZyUWl4RFFVRkJMRk5CUVVFc1EwRkJWU3hOUVVGTkxFdEJRVThzUlVGQlFTeGhRVUZCTEVWQlFXVXNWMEZCVnl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVWMFJ5eEZRVUZCTEUxQlFVMHNWVUZCZVVJc1IwRkJRVHRCUVVGQkxFbEJRemRDTEZsQlFWa3NSVUZCUlN4SlFVRkJMRVZCUVUwc1UwRkJVeXhSUVVGVkxFVkJRVUVzUzBGQlFTeEZRVUZQTEZOQlFWTXNVVUZCVXl4RlFVRkJPMEZCUVVFc1NVRkRhRVVzWVVGQlFTeEZRVUZsTEVWQlFVVXNTVUZCVFN4RlFVRkJMRkZCUVVFc1EwRkJVeXhYUVVGWExGRkJRVk1zUlVGQlFTeEZRVUZITEV0QlFVOHNSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWeXhGUVVGQk8wRkJRVUVzU1VGRGJFWXNZMEZCWXl4RlFVRkZMRWxCUVVFc1JVRkJUU3hWUVVGWExFTkJRVUVzU1VGQlFTeEZRVUZOTEU5QlFVOHNWVUZCVnl4RlFVRkJPMEZCUVVFc1NVRkRla1FzWVVGQlFTeEZRVUZsTEd0RFFVRnJReXhMUVVGTExFTkJRVUU3UVVGQlFTeEhRVU40UkN4RFFVRkJPMEZCUlVFc1JVRkJRU3hOUVVGTkxGbEJRV2xETEVkQlFVRXNZMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hqUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU55UXl4VFFVRkJMRVZCUVZjc1MwRkJTeXhIUVVGSkxFVkJRVUU3UVVGQlFTeEpRVU53UWl4WFFVRlhMR2RDUVVGcFFpeEZRVUZCTzBGQlFVRXNTVUZETlVJc1MwRkJRU3hGUVVGUExGVkJRVlVzUzBGQlRTeERRVUZCTEV0QlFVRTdRVUZCUVN4SlFVTjJRaXhoUVVGQk8wRkJRVUVzU1VGRFFTeFZRVUZCTzBGQlFVRXNSMEZCUVN4RlFVTkhMRkZCVG10RExFTkJRVUVzUlVGQlFUdEJRVUZCTEVsQlQzSkRMRXRCUVVzc1QwRkJVU3hEUVVGQkxGTkJRVUU3UVVGQlFTeEpRVU5pTEZGQlFVRXNSVUZCVlN4VlFVRlZMRmRCUVZrc1JVRkJRVHRCUVVGQkxFbEJRMmhETEU5QlFWTXNSVUZCUVR0QlFVRkJMRTFCUTFBc2FVTkJRMHNzWTBGRVRDeERRVUZCTEVWQlFVRTdRVUZCUVN4UlFVVkZMRXRCUVU4c1JVRkJRU3hOUVVGQk8wRkJRVUVzVDBGRFZDeERRVUZCTzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUVVFc1EwRkJRU3hGUVVOSExIVkNRVUYxUWl4TFFVRkxMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJSMnBETEVWQlFVRXNUVUZCVFN4aFFVRmhMR0ZCUVdNc1JVRkJRU3hEUVVGQk8wRkJSV3BETEVWQlFVOHNUMEZCUVN4VlFVRkJMRU5CUVZjc1ZVRkJXU3hGUVVGQkxGbEJRVmtzUTBGQlJTeERRVUZCTEVsQlFVRTdRVUZCUVN4SlFVTXhReXhSUVVGQkxFTkJRVk1zUTBGQlF5eFRRVUZqTEV0QlFVRTdRVUZGZEVJc1RVRkJRU3hOUVVGTkxGRkJRVThzVTBGQlZ5eEpRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hUUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZQTEUxQlFWTXNTVUZCUVN4VFFVRkJMRU5CUVZVc1UwRkJVeXhUUVVGVkxFTkJRVUVzVjBGQlFTeERRVUZCTzBGQlJYSkZMRTFCUVVrc1NVRkJRU3hGUVVGRExEWkNRVUZOTEUxQlFWRXNRMEZCUVN4RlFVRkJPMEZCUTJwQ0xGRkJRVUVzVDBGQlR5eEZRVUZITEVOQlFVRTdRVUZCUVN4VlFVTlNMRTlCUVU4c1UwRkJWU3hEUVVGQkxFdEJRVUU3UVVGQlFTeFZRVU5xUWl4UlFVRlJMRVZCUVVNN1FVRkJRU3hUUVVOV0xFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEwZzdRVUZIUVN4TlFVRkxMRWxCUVVFc1EwRkJRU3hQUVVGQkxFTkJRVkVzUTBGQlF5eExRVUZWTEV0QlFVRTdRVUV4U1RsQ0xGRkJRVUZCTEVsQlFVRkJMRWRCUVVGQkxFTkJRVUZCTzBGQk5FbFJMRkZCUVVFc1NVRkJTU3hIUVVGRFFTeEhRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRk5MRWxCUVU0c1MwRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRkJMRWxCUVZrc1UwRkJWeXhEUVVGQkxFVkJRVUU3UVVGRE1VSXNWVUZCVFN4TFFVRkJMRU5CUVVFc1NVRkJRU3hIUVVGUExHbERRVUZOTEV0QlFVMHNRMEZCUVN4SlFVRkJMRWxCUVZFc1JVRkJjRUlzUTBGQlFTeEZRVUZCTEVWQlFYbENMRk5CUVZjc1JVRkJRU3hUUVVGQkxFTkJRVlVzVjBGQldTeEZRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRk5CUTNwRk8wRkJRVUVzVDBGRFJDeERRVUZCTEVOQlFVRTdRVUZGUkN4TlFVRkJMRTlCUVU4c1UwRkJWU3hEUVVGQkxHRkJRVUVzUTBGQlpTeFZRVUZaTEVWQlFVRXNTVUZCU1N4RFFVRkZMRU5CUVVFc1NVRkJRVHRCUVVGQkxGRkJRMmhFTEVkQlFVRXNRMEZCU1N4RFFVRkRMRTFCUVZjc1MwRkJRVHRCUVVOa0xGVkJRVThzVDBGQlFUdEJRVUZCTEZsQlEwd3NUMEZCVHl4VFFVRlZMRU5CUVVFc1MwRkJRVHRCUVVGQkxGbEJRMnBDTEUxQlFVRXNSVUZCVVN4VlFVRlZMRVZCUVVNN1FVRkJRU3hYUVVOeVFpeERRVUZCTzBGQlFVRXNVMEZEUkN4RFFVRkJPMEZCUVVFc1QwRkRTQ3hEUVVGQk8wRkJRVUVzUzBGRFJDeERRVUZCTzBGQlFVRXNSMEZEU0N4RFFVRkJPMEZCUTBZN096czdJbjA9XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsSUFBSSxPQUFVLEdBQUEsR0FBQSxDQUFBO0FBQ2QsU0FBUyxnQkFBbUIsR0FBQTtBQUMxQixFQUFBLE9BQU8sSUFBTyxHQUFBLE9BQUEsRUFBQSxDQUFBO0FBQ2hCLENBQUE7QUFZTyxTQUFTLHNCQUNkLENBQUEsVUFBQSxFQUNBLFNBQ0EsRUFBQSxLQUFBLEVBQ0EsS0FDb0MsRUFBQTtBQTFDdEMsRUFBQSxJQUFBLEVBQUEsQ0FBQTtBQTRDRSxFQUFBLElBQUksVUFBVyxDQUFBLGVBQUEsSUFBbUIscUJBQXNCLENBQUEsVUFBVSxDQUFHLEVBQUE7QUFDbkUsSUFBQSxPQUFBLENBQVEsS0FBSyx5RUFBeUUsQ0FBQSxDQUFBO0FBQy9FLElBQUEsT0FBQSxJQUFBO0FBQ0wsTUFBQSxVQUFBLENBQVcsZUFBZ0IsQ0FBQTtBQUN6QixRQUFBLEtBQUEsRUFBTyxVQUFVLEtBQU0sQ0FBQSxLQUFBO1FBQ3ZCLFFBQVUsRUFBQSxTQUFBLENBQVUsTUFBTSxLQUFNLENBQUEsR0FBQTtRQUNoQyxVQUFZLEVBQUEsS0FBQTtRQUNaLFNBQVcsRUFBQTtBQUNULFVBQUEsWUFBQSxFQUFjLGdCQUFpQixDQUFBLFlBQUE7QUFBQSxTQUFBO09BRWxDLENBQUE7S0FDRCxDQUFBLElBQUE7QUFDQSxNQUFBLEdBQUEsQ0FBSSxDQUFDLE1BQVksTUFBQTtBQUNmLFFBQUEsS0FBQSxFQUFPLFlBQWEsQ0FBQSxJQUFBO0FBQ3BCLFFBQUEsTUFBQTtPQUNBLENBQUEsQ0FBQTtBQUFBLEtBQUEsQ0FBQTtBQUNKLEdBQUE7QUFJSSxFQUFBLE1BQUEsU0FBQSxHQUFZLGVBQ2IsY0FBQSxDQUFBLElBQUEseUJBQUEsQ0FBQSxFQUNBLFdBQVcsV0FBQSxDQUFBLENBQUE7QUFHaEIsRUFBQSxNQUFNLHNCQUF5QixHQUFBLGNBQUEsQ0FBQSxjQUFBLENBQUEsS0FFMUIsRUFBVSxHQUFBLFNBQUEsQ0FBQSxlQUFWLEtBQUEsSUFBQSxHQUNBLFNBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsQ0FBQTtBQUlDLEVBQUEsTUFBQSxVQUFBLEdBQWEsU0FBVSxDQUFBLGlCQUFBLENBQW1CLHNCQUFzQixDQUFBLENBQUE7QUFDdEUsRUFBQSxJQUFJLENBQUMsVUFBWSxFQUFBO0FBQ2YsSUFBQSxPQUFPLEVBQUcsQ0FBQTtBQUNSLE1BQUEsS0FBQSxFQUFPLFlBQWEsQ0FBQSxJQUFBO0FBQ3BCLE1BQUEsTUFBQSxFQUFRLEVBQUE7S0FDVCxDQUFBLENBQUE7QUFBQSxHQUFBO0FBR0csRUFBQSxNQUFBLGNBQUEsR0FBaUIsU0FBVSxDQUFBLFlBQUEsQ0FBYyxVQUFVLENBQUEsQ0FBQTtBQUN6RCxFQUFBLElBQUksQ0FBQyxjQUFnQixFQUFBO0FBQ25CLElBQUEsT0FBTyxFQUFHLENBQUE7QUFDUixNQUFBLEtBQUEsRUFBTyxZQUFhLENBQUEsSUFBQTtBQUNwQixNQUFBLE1BQUEsRUFBUSxFQUFBO0tBQ1QsQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUlILEVBQUEsTUFBTSxnQkFBZ0IsTUFBTyxDQUFBLFVBQUEsSUFBYyxTQUFTLGVBQWdCLENBQUEsV0FBQSxJQUFlLFNBQVMsSUFBSyxDQUFBLFdBQUEsQ0FBQTtBQUczRixFQUFBLE1BQUEsUUFBQSxHQUFXLFVBQVUsaUJBQWtCLENBQUEsU0FBQSxDQUFVLE1BQU0sS0FBTyxFQUFBLGFBQUEsRUFBZSxXQUFXLFFBQVEsQ0FBQSxDQUFBO0FBRXRHLEVBQUEsTUFBTSxVQUF5QixHQUFBO0FBQzdCLElBQUEsVUFBQSxFQUFZLEVBQUUsSUFBTSxFQUFBLFFBQUEsQ0FBUyxRQUFVLEVBQUEsS0FBQSxFQUFPLFNBQVMsUUFBUyxFQUFBO0lBQ2hFLGFBQWUsRUFBQSxFQUFFLE1BQU0sUUFBUyxDQUFBLFVBQUEsQ0FBVyxVQUFZLEVBQUEsS0FBQSxFQUFPLFNBQVMsVUFBVyxFQUFBO0FBQ2xGLElBQUEsWUFBQSxFQUFjLEVBQUUsSUFBQSxFQUFNLFVBQVcsQ0FBQSxJQUFBLEVBQU0sT0FBTyxVQUFXLEVBQUE7QUFDekQsSUFBQSxhQUFBLEVBQWUsa0NBQWtDLEtBQUssQ0FBQTtBQUFBLEdBQUEsQ0FBQTtBQUd4RCxFQUFNLE1BQUEsWUFBQSxHQUFpQyxjQUFBLENBQUEsYUFBQSxDQUFBLGNBQUEsQ0FBQTtBQUNyQyxJQUFBLFNBQUEsRUFBVyxLQUFLLEdBQUksRUFBQTtBQUNwQixJQUFBLFNBQUEsRUFBVyxnQkFBaUIsRUFBQTtBQUM1QixJQUFBLEtBQUEsRUFBTyxVQUFVLEtBQU0sQ0FBQSxLQUFBO0FBQ3ZCLElBQUEsYUFBQTtBQUNBLElBQUEsVUFBQTtBQUFBLEdBQUEsRUFDRyxRQU5rQyxDQUFBLEVBQUE7QUFPckMsSUFBQSxHQUFBLEVBQUssT0FBUSxDQUFBLFNBQUE7QUFDYixJQUFBLFFBQUEsRUFBVSxVQUFVLFdBQVksRUFBQTtJQUNoQyxPQUFTLEVBQUE7QUFDUCxNQUFBLGFBQUEsQ0FBQSxjQUFBLENBQUEsRUFDSyxFQUFBLGNBREwsQ0FBQSxFQUFBO1FBRUUsS0FBTyxFQUFBLE1BQUE7T0FDVCxDQUFBO0FBQUEsS0FBQTtHQUNGLENBQUEsRUFDRyxzQkFBdUIsQ0FBQSxLQUFLLENBQUEsQ0FBQSxDQUFBO0FBR2pDLEVBQUEsTUFBTSxhQUFhLGFBQWMsRUFBQSxDQUFBO0FBRTFCLEVBQUEsT0FBQSxVQUFBLENBQVcsVUFBWSxFQUFBLFlBQVksQ0FBRSxDQUFBLElBQUE7QUFDMUMsSUFBQSxRQUFBLENBQVMsQ0FBQyxTQUFjLEtBQUE7QUFFdEIsTUFBTSxNQUFBLElBQUEsR0FBQSxDQUFPLGFBQVcsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLFVBQUEsTUFBTyxDQUFBLE1BQUEsSUFBUyxTQUFVLENBQUEsTUFBQSxHQUFTLFNBQVUsQ0FBQSxXQUFBLENBQUE7QUFFakUsTUFBQSxJQUFBLEVBQUMsSUFBQSxJQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxLQUFNLE1BQVEsQ0FBQSxFQUFBO0FBQ2pCLFFBQUEsT0FBTyxFQUFHLENBQUE7QUFDUixVQUFBLEtBQUEsRUFBTyxTQUFVLENBQUEsS0FBQTtBQUNqQixVQUFBLE1BQUEsRUFBUSxFQUFBO1NBQ1QsQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUlFLE1BQUEsSUFBQSxDQUFBLE9BQUEsQ0FBUSxDQUFDLEtBQVUsS0FBQTtBQTFJOUJBLFFBQUFBLElBQUFBLEdBQUFBLENBQUFBO0FBNElRLFFBQUEsSUFBSSxHQUFDQSxHQUFBLEdBQUEsS0FBQSxDQUFNLFNBQU4sSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxJQUFZLFNBQVcsQ0FBQSxFQUFBO0FBQ3BCLFVBQUEsS0FBQSxDQUFBLElBQU8sR0FBQSxhQUFBLENBQUEsY0FBQSxDQUFBLElBQU0sS0FBTSxDQUFBLElBQUEsSUFBUSxFQUFwQixDQUFBLEVBQUEsRUFBeUIsU0FBVyxFQUFBLFNBQUEsQ0FBVSxhQUFZLENBQUEsQ0FBQTtBQUFBLFNBQUE7T0FFMUUsQ0FBQSxDQUFBO0FBRUQsTUFBQSxPQUFPLFNBQVUsQ0FBQSxhQUFBLENBQWUsVUFBWSxFQUFBLElBQUksQ0FBRSxDQUFBLElBQUE7QUFDaEQsUUFBQSxHQUFBLENBQUksQ0FBQyxNQUFXLEtBQUE7QUFDUCxVQUFBLE9BQUE7QUFDTCxZQUFBLEtBQUEsRUFBTyxTQUFVLENBQUEsS0FBQTtBQUNqQixZQUFBLE1BQUEsRUFBUSxVQUFVLEVBQUE7QUFBQyxXQUFBLENBQUE7U0FFdEIsQ0FBQTtBQUFBLE9BQUEsQ0FBQTtLQUVKLENBQUE7QUFBQSxHQUFBLENBQUE7QUFFTDs7OzsifQ==
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { isString } from 'lodash';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { map, mergeMap } from 'rxjs/operators';
|
|
4
|
+
import { FieldType, getFieldDisplayName, AnnotationEventFieldSource, standardTransformers } from '@grafana/data';
|
|
5
|
+
import { config } from '@grafana/runtime';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __defProps = Object.defineProperties;
|
|
9
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
10
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __spreadValues = (a, b) => {
|
|
15
|
+
for (var prop in b || (b = {}))
|
|
16
|
+
if (__hasOwnProp.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
if (__getOwnPropSymbols)
|
|
19
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
+
if (__propIsEnum.call(b, prop))
|
|
21
|
+
__defNormalProp(a, prop, b[prop]);
|
|
22
|
+
}
|
|
23
|
+
return a;
|
|
24
|
+
};
|
|
25
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
+
var __objRest = (source, exclude) => {
|
|
27
|
+
var target = {};
|
|
28
|
+
for (var prop in source)
|
|
29
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
if (source != null && __getOwnPropSymbols)
|
|
32
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
33
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
34
|
+
target[prop] = source[prop];
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
};
|
|
38
|
+
const standardAnnotationSupport = {
|
|
39
|
+
prepareAnnotation: (json) => {
|
|
40
|
+
if (isString(json == null ? void 0 : json.query)) {
|
|
41
|
+
const _a = json, { query } = _a, rest = __objRest(_a, ["query"]);
|
|
42
|
+
return __spreadProps(__spreadValues({}, rest), {
|
|
43
|
+
target: {
|
|
44
|
+
refId: "annotation_query",
|
|
45
|
+
query
|
|
46
|
+
},
|
|
47
|
+
mappings: {}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return json;
|
|
51
|
+
},
|
|
52
|
+
prepareQuery: (anno) => anno.target,
|
|
53
|
+
processEvents: (anno, data) => {
|
|
54
|
+
return getAnnotationsFromData(data, anno.mappings);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function singleFrameFromPanelData() {
|
|
58
|
+
return (source) => source.pipe(
|
|
59
|
+
mergeMap((data) => {
|
|
60
|
+
if (!(data == null ? void 0 : data.length)) {
|
|
61
|
+
return of(void 0);
|
|
62
|
+
}
|
|
63
|
+
if (data.length === 1) {
|
|
64
|
+
return of(data[0]);
|
|
65
|
+
}
|
|
66
|
+
const ctx = {
|
|
67
|
+
interpolate: (v) => v
|
|
68
|
+
};
|
|
69
|
+
return of(data).pipe(
|
|
70
|
+
standardTransformers.mergeTransformer.operator({}, ctx),
|
|
71
|
+
map((d) => d[0])
|
|
72
|
+
);
|
|
73
|
+
})
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
const annotationEventNames = [
|
|
77
|
+
{
|
|
78
|
+
key: "time",
|
|
79
|
+
field: (frame) => frame.fields.find((f) => f.type === FieldType.time),
|
|
80
|
+
placeholder: "time, or the first time field"
|
|
81
|
+
},
|
|
82
|
+
{ key: "timeEnd", help: "When this field is defined, the annotation will be treated as a range" },
|
|
83
|
+
{
|
|
84
|
+
key: "title"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
key: "text",
|
|
88
|
+
field: (frame) => frame.fields.find((f) => f.type === FieldType.string),
|
|
89
|
+
placeholder: "text, or the first text field"
|
|
90
|
+
},
|
|
91
|
+
{ key: "tags", split: ",", help: "The results will be split on comma (,)" },
|
|
92
|
+
{
|
|
93
|
+
key: "id"
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
const publicDashboardEventNames = [
|
|
97
|
+
{
|
|
98
|
+
key: "color"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
key: "isRegion"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
key: "source"
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
const alertEventAndAnnotationFields = [
|
|
108
|
+
...config.publicDashboardAccessToken ? publicDashboardEventNames : [],
|
|
109
|
+
...annotationEventNames,
|
|
110
|
+
{ key: "userId" },
|
|
111
|
+
{ key: "login" },
|
|
112
|
+
{ key: "email" },
|
|
113
|
+
{ key: "prevState" },
|
|
114
|
+
{ key: "newState" },
|
|
115
|
+
{ key: "data" },
|
|
116
|
+
{ key: "panelId" },
|
|
117
|
+
{ key: "alertId" },
|
|
118
|
+
{ key: "dashboardId" },
|
|
119
|
+
{ key: "dashboardUID" }
|
|
120
|
+
];
|
|
121
|
+
function getAnnotationsFromData(data, options) {
|
|
122
|
+
return of(data).pipe(
|
|
123
|
+
singleFrameFromPanelData(),
|
|
124
|
+
map((frame) => {
|
|
125
|
+
if (!(frame == null ? void 0 : frame.length)) {
|
|
126
|
+
return [];
|
|
127
|
+
}
|
|
128
|
+
let hasTime = false;
|
|
129
|
+
let hasText = false;
|
|
130
|
+
const byName = {};
|
|
131
|
+
for (const f of frame.fields) {
|
|
132
|
+
const name = getFieldDisplayName(f, frame);
|
|
133
|
+
byName[name.toLowerCase()] = f;
|
|
134
|
+
}
|
|
135
|
+
if (!options) {
|
|
136
|
+
options = {};
|
|
137
|
+
}
|
|
138
|
+
const fields = [];
|
|
139
|
+
for (const evts of alertEventAndAnnotationFields) {
|
|
140
|
+
const opt = options[evts.key] || {};
|
|
141
|
+
if (opt.source === AnnotationEventFieldSource.Skip) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const setter = { key: evts.key, split: evts.split };
|
|
145
|
+
if (opt.source === AnnotationEventFieldSource.Text) {
|
|
146
|
+
setter.text = opt.value;
|
|
147
|
+
} else {
|
|
148
|
+
const lower = (opt.value || evts.key).toLowerCase();
|
|
149
|
+
setter.field = byName[lower];
|
|
150
|
+
if (!setter.field && evts.field) {
|
|
151
|
+
setter.field = evts.field(frame);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (setter.field || setter.text) {
|
|
155
|
+
fields.push(setter);
|
|
156
|
+
if (setter.key === "time") {
|
|
157
|
+
hasTime = true;
|
|
158
|
+
} else if (setter.key === "text") {
|
|
159
|
+
hasText = true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!hasTime || !hasText) {
|
|
164
|
+
console.error("Cannot process annotation fields. No time or text present.");
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
const events = [];
|
|
168
|
+
for (let i = 0; i < frame.length; i++) {
|
|
169
|
+
const anno = {
|
|
170
|
+
type: "default",
|
|
171
|
+
color: "red"
|
|
172
|
+
};
|
|
173
|
+
for (const f of fields) {
|
|
174
|
+
let v = void 0;
|
|
175
|
+
if (f.text) {
|
|
176
|
+
v = f.text;
|
|
177
|
+
} else if (f.field) {
|
|
178
|
+
v = f.field.values.get(i);
|
|
179
|
+
if (v !== void 0 && f.regex) {
|
|
180
|
+
const match = f.regex.exec(v);
|
|
181
|
+
if (match) {
|
|
182
|
+
v = match[1] ? match[1] : match[0];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (v !== null && v !== void 0) {
|
|
187
|
+
if (f.split && typeof v === "string") {
|
|
188
|
+
v = v.split(",");
|
|
189
|
+
}
|
|
190
|
+
anno[f.key] = v;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
events.push(anno);
|
|
194
|
+
}
|
|
195
|
+
return events;
|
|
196
|
+
})
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
const legacyRunner = [
|
|
200
|
+
"prometheus",
|
|
201
|
+
"loki",
|
|
202
|
+
"elasticsearch",
|
|
203
|
+
"grafana-opensearch-datasource"
|
|
204
|
+
];
|
|
205
|
+
function shouldUseLegacyRunner(datasource) {
|
|
206
|
+
const { type } = datasource;
|
|
207
|
+
return !datasource.annotations || legacyRunner.includes(type);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export { annotationEventNames, getAnnotationsFromData, publicDashboardEventNames, shouldUseLegacyRunner, singleFrameFromPanelData, standardAnnotationSupport };
|
|
211
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRBbm5vdGF0aW9uc1N1cHBvcnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3F1ZXJ5aW5nL2xheWVycy9hbm5vdGF0aW9ucy9zdGFuZGFyZEFubm90YXRpb25zU3VwcG9ydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgZ2V0RmllbGREaXNwbGF5TmFtZSwgQW5ub3RhdGlvbkV2ZW50RmllbGRTb3VyY2UsIHN0YW5kYXJkVHJhbnNmb3JtZXJzIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0uY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmNvbnN0IHN0YW5kYXJkQW5ub3RhdGlvblN1cHBvcnQgPSB7XG4gIHByZXBhcmVBbm5vdGF0aW9uOiAoanNvbikgPT4ge1xuICAgIGlmIChpc1N0cmluZyhqc29uID09IG51bGwgPyB2b2lkIDAgOiBqc29uLnF1ZXJ5KSkge1xuICAgICAgY29uc3QgX2EgPSBqc29uLCB7IHF1ZXJ5IH0gPSBfYSwgcmVzdCA9IF9fb2JqUmVzdChfYSwgW1wicXVlcnlcIl0pO1xuICAgICAgcmV0dXJuIF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIHJlc3QpLCB7XG4gICAgICAgIHRhcmdldDoge1xuICAgICAgICAgIHJlZklkOiBcImFubm90YXRpb25fcXVlcnlcIixcbiAgICAgICAgICBxdWVyeVxuICAgICAgICB9LFxuICAgICAgICBtYXBwaW5nczoge31cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ganNvbjtcbiAgfSxcbiAgcHJlcGFyZVF1ZXJ5OiAoYW5ubykgPT4gYW5uby50YXJnZXQsXG4gIHByb2Nlc3NFdmVudHM6IChhbm5vLCBkYXRhKSA9PiB7XG4gICAgcmV0dXJuIGdldEFubm90YXRpb25zRnJvbURhdGEoZGF0YSwgYW5uby5tYXBwaW5ncyk7XG4gIH1cbn07XG5mdW5jdGlvbiBzaW5nbGVGcmFtZUZyb21QYW5lbERhdGEoKSB7XG4gIHJldHVybiAoc291cmNlKSA9PiBzb3VyY2UucGlwZShcbiAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuICAgICAgaWYgKCEoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBvZihkYXRhWzBdKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgaW50ZXJwb2xhdGU6ICh2KSA9PiB2XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG9mKGRhdGEpLnBpcGUoXG4gICAgICAgIHN0YW5kYXJkVHJhbnNmb3JtZXJzLm1lcmdlVHJhbnNmb3JtZXIub3BlcmF0b3Ioe30sIGN0eCksXG4gICAgICAgIG1hcCgoZCkgPT4gZFswXSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcbn1cbmNvbnN0IGFubm90YXRpb25FdmVudE5hbWVzID0gW1xuICB7XG4gICAga2V5OiBcInRpbWVcIixcbiAgICBmaWVsZDogKGZyYW1lKSA9PiBmcmFtZS5maWVsZHMuZmluZCgoZikgPT4gZi50eXBlID09PSBGaWVsZFR5cGUudGltZSksXG4gICAgcGxhY2Vob2xkZXI6IFwidGltZSwgb3IgdGhlIGZpcnN0IHRpbWUgZmllbGRcIlxuICB9LFxuICB7IGtleTogXCJ0aW1lRW5kXCIsIGhlbHA6IFwiV2hlbiB0aGlzIGZpZWxkIGlzIGRlZmluZWQsIHRoZSBhbm5vdGF0aW9uIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHJhbmdlXCIgfSxcbiAge1xuICAgIGtleTogXCJ0aXRsZVwiXG4gIH0sXG4gIHtcbiAgICBrZXk6IFwidGV4dFwiLFxuICAgIGZpZWxkOiAoZnJhbWUpID0+IGZyYW1lLmZpZWxkcy5maW5kKChmKSA9PiBmLnR5cGUgPT09IEZpZWxkVHlwZS5zdHJpbmcpLFxuICAgIHBsYWNlaG9sZGVyOiBcInRleHQsIG9yIHRoZSBmaXJzdCB0ZXh0IGZpZWxkXCJcbiAgfSxcbiAgeyBrZXk6IFwidGFnc1wiLCBzcGxpdDogXCIsXCIsIGhlbHA6IFwiVGhlIHJlc3VsdHMgd2lsbCBiZSBzcGxpdCBvbiBjb21tYSAoLClcIiB9LFxuICB7XG4gICAga2V5OiBcImlkXCJcbiAgfVxuXTtcbmNvbnN0IHB1YmxpY0Rhc2hib2FyZEV2ZW50TmFtZXMgPSBbXG4gIHtcbiAgICBrZXk6IFwiY29sb3JcIlxuICB9LFxuICB7XG4gICAga2V5OiBcImlzUmVnaW9uXCJcbiAgfSxcbiAge1xuICAgIGtleTogXCJzb3VyY2VcIlxuICB9XG5dO1xuY29uc3QgYWxlcnRFdmVudEFuZEFubm90YXRpb25GaWVsZHMgPSBbXG4gIC4uLmNvbmZpZy5wdWJsaWNEYXNoYm9hcmRBY2Nlc3NUb2tlbiA/IHB1YmxpY0Rhc2hib2FyZEV2ZW50TmFtZXMgOiBbXSxcbiAgLi4uYW5ub3RhdGlvbkV2ZW50TmFtZXMsXG4gIHsga2V5OiBcInVzZXJJZFwiIH0sXG4gIHsga2V5OiBcImxvZ2luXCIgfSxcbiAgeyBrZXk6IFwiZW1haWxcIiB9LFxuICB7IGtleTogXCJwcmV2U3RhdGVcIiB9LFxuICB7IGtleTogXCJuZXdTdGF0ZVwiIH0sXG4gIHsga2V5OiBcImRhdGFcIiB9LFxuICB7IGtleTogXCJwYW5lbElkXCIgfSxcbiAgeyBrZXk6IFwiYWxlcnRJZFwiIH0sXG4gIHsga2V5OiBcImRhc2hib2FyZElkXCIgfSxcbiAgeyBrZXk6IFwiZGFzaGJvYXJkVUlEXCIgfVxuXTtcbmZ1bmN0aW9uIGdldEFubm90YXRpb25zRnJvbURhdGEoZGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gb2YoZGF0YSkucGlwZShcbiAgICBzaW5nbGVGcmFtZUZyb21QYW5lbERhdGEoKSxcbiAgICBtYXAoKGZyYW1lKSA9PiB7XG4gICAgICBpZiAoIShmcmFtZSA9PSBudWxsID8gdm9pZCAwIDogZnJhbWUubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBsZXQgaGFzVGltZSA9IGZhbHNlO1xuICAgICAgbGV0IGhhc1RleHQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGJ5TmFtZSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZyYW1lLmZpZWxkcykge1xuICAgICAgICBjb25zdCBuYW1lID0gZ2V0RmllbGREaXNwbGF5TmFtZShmLCBmcmFtZSk7XG4gICAgICAgIGJ5TmFtZVtuYW1lLnRvTG93ZXJDYXNlKCldID0gZjtcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZXZ0cyBvZiBhbGVydEV2ZW50QW5kQW5ub3RhdGlvbkZpZWxkcykge1xuICAgICAgICBjb25zdCBvcHQgPSBvcHRpb25zW2V2dHMua2V5XSB8fCB7fTtcbiAgICAgICAgaWYgKG9wdC5zb3VyY2UgPT09IEFubm90YXRpb25FdmVudEZpZWxkU291cmNlLlNraXApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXR0ZXIgPSB7IGtleTogZXZ0cy5rZXksIHNwbGl0OiBldnRzLnNwbGl0IH07XG4gICAgICAgIGlmIChvcHQuc291cmNlID09PSBBbm5vdGF0aW9uRXZlbnRGaWVsZFNvdXJjZS5UZXh0KSB7XG4gICAgICAgICAgc2V0dGVyLnRleHQgPSBvcHQudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbG93ZXIgPSAob3B0LnZhbHVlIHx8IGV2dHMua2V5KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHNldHRlci5maWVsZCA9IGJ5TmFtZVtsb3dlcl07XG4gICAgICAgICAgaWYgKCFzZXR0ZXIuZmllbGQgJiYgZXZ0cy5maWVsZCkge1xuICAgICAgICAgICAgc2V0dGVyLmZpZWxkID0gZXZ0cy5maWVsZChmcmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0ZXIuZmllbGQgfHwgc2V0dGVyLnRleHQpIHtcbiAgICAgICAgICBmaWVsZHMucHVzaChzZXR0ZXIpO1xuICAgICAgICAgIGlmIChzZXR0ZXIua2V5ID09PSBcInRpbWVcIikge1xuICAgICAgICAgICAgaGFzVGltZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChzZXR0ZXIua2V5ID09PSBcInRleHRcIikge1xuICAgICAgICAgICAgaGFzVGV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWhhc1RpbWUgfHwgIWhhc1RleHQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNhbm5vdCBwcm9jZXNzIGFubm90YXRpb24gZmllbGRzLiBObyB0aW1lIG9yIHRleHQgcHJlc2VudC5cIik7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV2ZW50cyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhbm5vID0ge1xuICAgICAgICAgIHR5cGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgIGNvbG9yOiBcInJlZFwiXG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZHMpIHtcbiAgICAgICAgICBsZXQgdiA9IHZvaWQgMDtcbiAgICAgICAgICBpZiAoZi50ZXh0KSB7XG4gICAgICAgICAgICB2ID0gZi50ZXh0O1xuICAgICAgICAgIH0gZWxzZSBpZiAoZi5maWVsZCkge1xuICAgICAgICAgICAgdiA9IGYuZmllbGQudmFsdWVzLmdldChpKTtcbiAgICAgICAgICAgIGlmICh2ICE9PSB2b2lkIDAgJiYgZi5yZWdleCkge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGYucmVnZXguZXhlYyh2KTtcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgdiA9IG1hdGNoWzFdID8gbWF0Y2hbMV0gOiBtYXRjaFswXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodiAhPT0gbnVsbCAmJiB2ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmIChmLnNwbGl0ICYmIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgIHYgPSB2LnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFubm9bZi5rZXldID0gdjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnRzLnB1c2goYW5ubyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0pXG4gICk7XG59XG5jb25zdCBsZWdhY3lSdW5uZXIgPSBbXG4gIFwicHJvbWV0aGV1c1wiLFxuICBcImxva2lcIixcbiAgXCJlbGFzdGljc2VhcmNoXCIsXG4gIFwiZ3JhZmFuYS1vcGVuc2VhcmNoLWRhdGFzb3VyY2VcIlxuXTtcbmZ1bmN0aW9uIHNob3VsZFVzZUxlZ2FjeVJ1bm5lcihkYXRhc291cmNlKSB7XG4gIGNvbnN0IHsgdHlwZSB9ID0gZGF0YXNvdXJjZTtcbiAgcmV0dXJuICFkYXRhc291cmNlLmFubm90YXRpb25zIHx8IGxlZ2FjeVJ1bm5lci5pbmNsdWRlcyh0eXBlKTtcbn1cblxuZXhwb3J0IHsgYW5ub3RhdGlvbkV2ZW50TmFtZXMsIGdldEFubm90YXRpb25zRnJvbURhdGEsIHB1YmxpY0Rhc2hib2FyZEV2ZW50TmFtZXMsIHNob3VsZFVzZUxlZ2FjeVJ1bm5lciwgc2luZ2xlRnJhbWVGcm9tUGFuZWxEYXRhLCBzdGFuZGFyZEFubm90YXRpb25TdXBwb3J0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzUmhibVJoY21SQmJtNXZkR0YwYVc5dWMxTjFjSEJ2Y25RdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUx5NHVMM055WXk5eGRXVnllV2x1Wnk5c1lYbGxjbk12WVc1dWIzUmhkR2x2Ym5NdmMzUmhibVJoY21SQmJtNXZkR0YwYVc5dWMxTjFjSEJ2Y25RdWRITWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnYVhOVGRISnBibWNnZlNCbWNtOXRJQ2RzYjJSaGMyZ25PMXh1YVcxd2IzSjBJSHNnVDJKelpYSjJZV0pzWlN3Z2IyWXNJRTl3WlhKaGRHOXlSblZ1WTNScGIyNGdmU0JtY205dElDZHllR3B6Snp0Y2JtbHRjRzl5ZENCN0lHMWhjQ3dnYldWeVoyVk5ZWEFnZlNCbWNtOXRJQ2R5ZUdwekwyOXdaWEpoZEc5eWN5YzdYRzVjYm1sdGNHOXlkQ0I3WEc0Z0lFRnVibTkwWVhScGIyNUZkbVZ1ZEN4Y2JpQWdRVzV1YjNSaGRHbHZia1YyWlc1MFJtbGxiR1JUYjNWeVkyVXNYRzRnSUVGdWJtOTBZWFJwYjI1RmRtVnVkRTFoY0hCcGJtZHpMRnh1SUNCQmJtNXZkR0YwYVc5dVVYVmxjbmtzWEc0Z0lFRnVibTkwWVhScGIyNVRkWEJ3YjNKMExGeHVJQ0JFWVhSaFJuSmhiV1VzWEc0Z0lFUmhkR0ZUYjNWeVkyVkJjR2tzWEc0Z0lFUmhkR0ZVY21GdWMyWnZjbTFEYjI1MFpYaDBMRnh1SUNCR2FXVnNaQ3hjYmlBZ1JtbGxiR1JVZVhCbExGeHVJQ0JuWlhSR2FXVnNaRVJwYzNCc1lYbE9ZVzFsTEZ4dUlDQkxaWGxXWVd4MVpTeGNiaUFnYzNSaGJtUmhjbVJVY21GdWMyWnZjbTFsY25Nc1hHNTlJR1p5YjIwZ0owQm5jbUZtWVc1aEwyUmhkR0VuTzF4dWFXMXdiM0owSUhzZ1kyOXVabWxuSUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2Y25WdWRHbHRaU2M3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0J6ZEdGdVpHRnlaRUZ1Ym05MFlYUnBiMjVUZFhCd2IzSjBPaUJCYm01dmRHRjBhVzl1VTNWd2NHOXlkQ0E5SUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRUZ6YzNWdFpTQjBhR1VnYzNSdmNtVmtJSFpoYkhWbElHbHpJSE4wWVc1a1lYSmtJRzF2WkdWc0xseHVJQ0FnS2k5Y2JpQWdjSEpsY0dGeVpVRnVibTkwWVhScGIyNDZJQ2hxYzI5dU9pQmhibmtwSUQwK0lIdGNiaUFnSUNCcFppQW9hWE5UZEhKcGJtY29hbk52Ymo4dWNYVmxjbmtwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0I3SUhGMVpYSjVMQ0F1TGk1eVpYTjBJSDBnUFNCcWMyOXVPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lDQWdMaTR1Y21WemRDeGNiaUFnSUNBZ0lDQWdkR0Z5WjJWME9pQjdYRzRnSUNBZ0lDQWdJQ0FnY21WbVNXUTZJQ2RoYm01dmRHRjBhVzl1WDNGMVpYSjVKeXhjYmlBZ0lDQWdJQ0FnSUNCeGRXVnllU3hjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ2JXRndjR2x1WjNNNklIdDlMRnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdwemIyNGdZWE1nUVc1dWIzUmhkR2x2YmxGMVpYSjVPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpXWmhkV3gwSUhkcGJHd2dhblZ6ZENCeVpYUjFjbTRnZEdGeVoyVjBJR1p5YjIwZ2RHaGxJR0Z1Ym05MFlYUnBiMjR1WEc0Z0lDQXFMMXh1SUNCd2NtVndZWEpsVVhWbGNuazZJQ2hoYm01dk9pQkJibTV2ZEdGMGFXOXVVWFZsY25rcElEMCtJR0Z1Ym04dWRHRnlaMlYwTEZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJRY205MmFXUmxjeUJrWldaaGRXeDBJSEJ5YjJObGMzTnBibWNnWm5KdmJTQmtZWFJoUm5KaGJXVWdkRzhnWVc1dWIzUmhkR2x2YmlCbGRtVnVkSE11WEc0Z0lDQXFMMXh1SUNCd2NtOWpaWE56UlhabGJuUnpPaUFvWVc1dWJ6b2dRVzV1YjNSaGRHbHZibEYxWlhKNUxDQmtZWFJoT2lCRVlYUmhSbkpoYldWYlhTa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQm5aWFJCYm01dmRHRjBhVzl1YzBaeWIyMUVZWFJoS0dSaGRHRXNJR0Z1Ym04dWJXRndjR2x1WjNNcE8xeHVJQ0I5TEZ4dWZUdGNibHh1THlvcVhHNGdLaUJHYkdGMGRHVnVJR0ZzYkNCbWNtRnRaWE1nYVc1MGJ5QmhJSE5wYm1kc1pTQm1jbUZ0WlNCM2FYUm9JRzFsY21kbFZISmhibk5tYjNKdFpYSXVYRzRnS2k5Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlITnBibWRzWlVaeVlXMWxSbkp2YlZCaGJtVnNSR0YwWVNncE9pQlBjR1Z5WVhSdmNrWjFibU4wYVc5dVBFUmhkR0ZHY21GdFpWdGRMQ0JFWVhSaFJuSmhiV1VnZkNCMWJtUmxabWx1WldRK0lIdGNiaUFnY21WMGRYSnVJQ2h6YjNWeVkyVXBJRDArWEc0Z0lDQWdjMjkxY21ObExuQnBjR1VvWEc0Z0lDQWdJQ0J0WlhKblpVMWhjQ2dvWkdGMFlTa2dQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9JV1JoZEdFL0xteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnZaaWgxYm1SbFptbHVaV1FwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdhV1lnS0dSaGRHRXViR1Z1WjNSb0lEMDlQU0F4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHOW1LR1JoZEdGYk1GMHBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTNSNE9pQkVZWFJoVkhKaGJuTm1iM0p0UTI5dWRHVjRkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQnBiblJsY25CdmJHRjBaVG9nS0hZNklITjBjbWx1WnlrZ1BUNGdkaXhjYmlBZ0lDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2IyWW9aR0YwWVNrdWNHbHdaU2hjYmlBZ0lDQWdJQ0FnSUNCemRHRnVaR0Z5WkZSeVlXNXpabTl5YldWeWN5NXRaWEpuWlZSeVlXNXpabTl5YldWeUxtOXdaWEpoZEc5eUtIdDlMQ0JqZEhncExGeHVJQ0FnSUNBZ0lDQWdJRzFoY0Nnb1pDa2dQVDRnWkZzd1hTbGNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDBwWEc0Z0lDQWdLVHRjYm4xY2JseHVhVzUwWlhKbVlXTmxJRUZ1Ym05MFlYUnBiMjVGZG1WdWRFWnBaV3hrVTJWMGRHVnlJSHRjYmlBZ2EyVjVPaUJyWlhsdlppQkJibTV2ZEdGMGFXOXVSWFpsYm5RN1hHNGdJR1pwWld4a1B6b2dSbWxsYkdRN1hHNGdJSFJsZUhRL09pQnpkSEpwYm1jN1hHNGdJSEpsWjJWNFB6b2dVbVZuUlhod08xeHVJQ0J6Y0d4cGREODZJSE4wY21sdVp6c2dMeThnWm05eUlIUmhaM05jYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkJibTV2ZEdGMGFXOXVSbWxsYkdSSmJtWnZJSHRjYmlBZ2EyVjVPaUJyWlhsdlppQkJibTV2ZEdGMGFXOXVSWFpsYm5RN1hHNWNiaUFnYzNCc2FYUS9PaUJ6ZEhKcGJtYzdYRzRnSUdacFpXeGtQem9nS0daeVlXMWxPaUJFWVhSaFJuSmhiV1VwSUQwK0lFWnBaV3hrSUh3Z2RXNWtaV1pwYm1Wa08xeHVJQ0J3YkdGalpXaHZiR1JsY2o4NklITjBjbWx1Wnp0Y2JpQWdhR1ZzY0Q4NklITjBjbWx1Wnp0Y2JuMWNibHh1THk4Z1ZHaGxjMlVnWm1sbGJHUnpJR2RsZENCaFpHUmxaQ0IwYnlCMGFHVWdjM1JoYm1SaGNtUWdWVWxjYm1WNGNHOXlkQ0JqYjI1emRDQmhibTV2ZEdGMGFXOXVSWFpsYm5ST1lXMWxjem9nUVc1dWIzUmhkR2x2YmtacFpXeGtTVzVtYjF0ZElEMGdXMXh1SUNCN1hHNGdJQ0FnYTJWNU9pQW5kR2x0WlNjc1hHNGdJQ0FnWm1sbGJHUTZJQ2htY21GdFpUb2dSR0YwWVVaeVlXMWxLU0E5UGlCbWNtRnRaUzVtYVdWc1pITXVabWx1WkNnb1ppa2dQVDRnWmk1MGVYQmxJRDA5UFNCR2FXVnNaRlI1Y0dVdWRHbHRaU2tzWEc0Z0lDQWdjR3hoWTJWb2IyeGtaWEk2SUNkMGFXMWxMQ0J2Y2lCMGFHVWdabWx5YzNRZ2RHbHRaU0JtYVdWc1pDY3NYRzRnSUgwc1hHNGdJSHNnYTJWNU9pQW5kR2x0WlVWdVpDY3NJR2hsYkhBNklDZFhhR1Z1SUhSb2FYTWdabWxsYkdRZ2FYTWdaR1ZtYVc1bFpDd2dkR2hsSUdGdWJtOTBZWFJwYjI0Z2QybHNiQ0JpWlNCMGNtVmhkR1ZrSUdGeklHRWdjbUZ1WjJVbklIMHNYRzRnSUh0Y2JpQWdJQ0JyWlhrNklDZDBhWFJzWlNjc1hHNGdJSDBzWEc0Z0lIdGNiaUFnSUNCclpYazZJQ2QwWlhoMEp5eGNiaUFnSUNCbWFXVnNaRG9nS0daeVlXMWxPaUJFWVhSaFJuSmhiV1VwSUQwK0lHWnlZVzFsTG1acFpXeGtjeTVtYVc1a0tDaG1LU0E5UGlCbUxuUjVjR1VnUFQwOUlFWnBaV3hrVkhsd1pTNXpkSEpwYm1jcExGeHVJQ0FnSUhCc1lXTmxhRzlzWkdWeU9pQW5kR1Y0ZEN3Z2IzSWdkR2hsSUdacGNuTjBJSFJsZUhRZ1ptbGxiR1FuTEZ4dUlDQjlMRnh1SUNCN0lHdGxlVG9nSjNSaFozTW5MQ0J6Y0d4cGREb2dKeXduTENCb1pXeHdPaUFuVkdobElISmxjM1ZzZEhNZ2QybHNiQ0JpWlNCemNHeHBkQ0J2YmlCamIyMXRZU0FvTENrbklIMHNYRzRnSUh0Y2JpQWdJQ0JyWlhrNklDZHBaQ2NzWEc0Z0lIMHNYRzVkTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnY0hWaWJHbGpSR0Z6YUdKdllYSmtSWFpsYm5ST1lXMWxjem9nUVc1dWIzUmhkR2x2YmtacFpXeGtTVzVtYjF0ZElEMGdXMXh1SUNCN1hHNGdJQ0FnYTJWNU9pQW5ZMjlzYjNJbkxGeHVJQ0I5TEZ4dUlDQjdYRzRnSUNBZ2EyVjVPaUFuYVhOU1pXZHBiMjRuTEZ4dUlDQjlMRnh1SUNCN1hHNGdJQ0FnYTJWNU9pQW5jMjkxY21ObEp5eGNiaUFnZlN4Y2JsMDdYRzVjYmk4dklFZHBkbVZ1SUd4bFoyRmplU0JwYm1aeVlYTjBjblZqZEhWeVpTd2dZV3hsY25RZ1pYWmxiblJ6SUdGeVpTQndZWE56WldRZ2RHaHZkV2RvSUhSb1pTQnpZVzFsSUdGdWJtOTBZWFJwYjI1Y2JpOHZJSEJwY0dWc2FXNWxMQ0JpZFhRZ2FXNWpiSFZrWlNCbWFXVnNaSE1nZEdoaGRDQnphRzkxYkdRZ2JtOTBJR0psSUdWNGNHOXpaV1FnWjJWdVpYSmhiR3g1WEc1amIyNXpkQ0JoYkdWeWRFVjJaVzUwUVc1a1FXNXViM1JoZEdsdmJrWnBaV3hrY3pvZ1FXNXViM1JoZEdsdmJrWnBaV3hrU1c1bWIxdGRJRDBnVzF4dUlDQXVMaTRvWTI5dVptbG5MbkIxWW14cFkwUmhjMmhpYjJGeVpFRmpZMlZ6YzFSdmEyVnVJRDhnY0hWaWJHbGpSR0Z6YUdKdllYSmtSWFpsYm5ST1lXMWxjeUE2SUZ0ZEtTeGNiaUFnTGk0dVlXNXViM1JoZEdsdmJrVjJaVzUwVG1GdFpYTXNYRzRnSUhzZ2EyVjVPaUFuZFhObGNrbGtKeUI5TEZ4dUlDQjdJR3RsZVRvZ0oyeHZaMmx1SnlCOUxGeHVJQ0I3SUd0bGVUb2dKMlZ0WVdsc0p5QjlMRnh1SUNCN0lHdGxlVG9nSjNCeVpYWlRkR0YwWlNjZ2ZTeGNiaUFnZXlCclpYazZJQ2R1WlhkVGRHRjBaU2NnZlN4Y2JpQWdleUJyWlhrNklDZGtZWFJoSnlCaGN5QmhibmtnZlN4Y2JpQWdleUJyWlhrNklDZHdZVzVsYkVsa0p5QjlMRnh1SUNCN0lHdGxlVG9nSjJGc1pYSjBTV1FuSUgwc1hHNGdJSHNnYTJWNU9pQW5aR0Z6YUdKdllYSmtTV1FuSUgwc1hHNGdJSHNnYTJWNU9pQW5aR0Z6YUdKdllYSmtWVWxFSnlCOUxGeHVYVHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnVibTkwWVhScGIyNXpSbkp2YlVSaGRHRW9YRzRnSUdSaGRHRTZJRVJoZEdGR2NtRnRaVnRkTEZ4dUlDQnZjSFJwYjI1elB6b2dRVzV1YjNSaGRHbHZia1YyWlc1MFRXRndjR2x1WjNOY2JpazZJRTlpYzJWeWRtRmliR1U4UVc1dWIzUmhkR2x2YmtWMlpXNTBXMTArSUh0Y2JpQWdjbVYwZFhKdUlHOW1LR1JoZEdFcExuQnBjR1VvWEc0Z0lDQWdjMmx1WjJ4bFJuSmhiV1ZHY205dFVHRnVaV3hFWVhSaEtDa3NYRzRnSUNBZ2JXRndLQ2htY21GdFpTa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tDRm1jbUZ0WlQ4dWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYlhUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdiR1YwSUdoaGMxUnBiV1VnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJR3hsZENCb1lYTlVaWGgwSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0JqYjI1emRDQmllVTVoYldVNklFdGxlVlpoYkhWbFBFWnBaV3hrUGlBOUlIdDlPMXh1WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdZZ2IyWWdabkpoYldVdVptbGxiR1J6S1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc1aGJXVWdQU0JuWlhSR2FXVnNaRVJwYzNCc1lYbE9ZVzFsS0dZc0lHWnlZVzFsS1R0Y2JpQWdJQ0FnSUNBZ1lubE9ZVzFsVzI1aGJXVXVkRzlNYjNkbGNrTmhjMlVvS1YwZ1BTQm1PMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb0lXOXdkR2x2Ym5NcElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5QTlJSHQ5TzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCamIyNXpkQ0JtYVdWc1pITTZJRUZ1Ym05MFlYUnBiMjVGZG1WdWRFWnBaV3hrVTJWMGRHVnlXMTBnUFNCYlhUdGNibHh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JsZG5SeklHOW1JR0ZzWlhKMFJYWmxiblJCYm1SQmJtNXZkR0YwYVc5dVJtbGxiR1J6S1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc5d2RDQTlJRzl3ZEdsdmJuTmJaWFowY3k1clpYbGRJSHg4SUh0OU95QXZMMEZ1Ym05MFlYUnBiMjVGZG1WdWRFWnBaV3hrVFdGd2NHbHVaMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHZjSFF1YzI5MWNtTmxJRDA5UFNCQmJtNXZkR0YwYVc5dVJYWmxiblJHYVdWc1pGTnZkWEpqWlM1VGEybHdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpaWFIwWlhJNklFRnVibTkwWVhScGIyNUZkbVZ1ZEVacFpXeGtVMlYwZEdWeUlEMGdleUJyWlhrNklHVjJkSE11YTJWNUxDQnpjR3hwZERvZ1pYWjBjeTV6Y0d4cGRDQjlPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaHZjSFF1YzI5MWNtTmxJRDA5UFNCQmJtNXZkR0YwYVc5dVJYWmxiblJHYVdWc1pGTnZkWEpqWlM1VVpYaDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2MyVjBkR1Z5TG5SbGVIUWdQU0J2Y0hRdWRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYkc5M1pYSWdQU0FvYjNCMExuWmhiSFZsSUh4OElHVjJkSE11YTJWNUtTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lITmxkSFJsY2k1bWFXVnNaQ0E5SUdKNVRtRnRaVnRzYjNkbGNsMDdYRzVjYmlBZ0lDQWdJQ0FnSUNCcFppQW9JWE5sZEhSbGNpNW1hV1ZzWkNBbUppQmxkblJ6TG1acFpXeGtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaWFIwWlhJdVptbGxiR1FnUFNCbGRuUnpMbVpwWld4a0tHWnlZVzFsS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9jMlYwZEdWeUxtWnBaV3hrSUh4OElITmxkSFJsY2k1MFpYaDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1ptbGxiR1J6TG5CMWMyZ29jMlYwZEdWeUtUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2MyVjBkR1Z5TG10bGVTQTlQVDBnSjNScGJXVW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm9ZWE5VYVcxbElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSE5sZEhSbGNpNXJaWGtnUFQwOUlDZDBaWGgwSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYUdGelZHVjRkQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2doYUdGelZHbHRaU0I4ZkNBaGFHRnpWR1Y0ZENrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0NkRFlXNXViM1FnY0hKdlkyVnpjeUJoYm01dmRHRjBhVzl1SUdacFpXeGtjeTRnVG04Z2RHbHRaU0J2Y2lCMFpYaDBJSEJ5WlhObGJuUXVKeWs3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdRV1JrSUdWaFkyZ2dkbUZzZFdVZ2RHOGdkR2hsSUhOMGNtbHVaMXh1SUNBZ0lDQWdZMjl1YzNRZ1pYWmxiblJ6T2lCQmJtNXZkR0YwYVc5dVJYWmxiblJiWFNBOUlGdGRPMXh1WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdaeVlXMWxMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdGdWJtODZJRUZ1Ym05MFlYUnBiMjVGZG1WdWRDQTlJSHRjYmlBZ0lDQWdJQ0FnSUNCMGVYQmxPaUFuWkdWbVlYVnNkQ2NzWEc0Z0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUNkeVpXUW5MRnh1SUNBZ0lDQWdJQ0I5TzF4dVhHNGdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdaaUJ2WmlCbWFXVnNaSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnZGpvZ1lXNTVJRDBnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dZdWRHVjRkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkaUE5SUdZdWRHVjRkRHNnTHk4Z1ZFOUVUeUJ6ZFhCd2IzSjBJSFJsYlhCc1lYUmxjeUZjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHWXVabWxsYkdRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhZZ1BTQm1MbVpwWld4a0xuWmhiSFZsY3k1blpYUW9hU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZGlBaFBUMGdkVzVrWldacGJtVmtJQ1ltSUdZdWNtVm5aWGdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiV0YwWTJnZ1BTQm1MbkpsWjJWNExtVjRaV01vZGlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHRZWFJqYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWWdQU0J0WVhSamFGc3hYU0EvSUcxaGRHTm9XekZkSURvZ2JXRjBZMmhiTUYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2RpQWhQVDBnYm5Wc2JDQW1KaUIySUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2htTG5Od2JHbDBJQ1ltSUhSNWNHVnZaaUIySUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjJJRDBnZGk1emNHeHBkQ2duTENjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdLR0Z1Ym04Z1lYTWdZVzU1S1Z0bUxtdGxlVjBnUFNCMk8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHVjJaVzUwY3k1d2RYTm9LR0Z1Ym04cE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdWMlpXNTBjenRjYmlBZ0lDQjlLVnh1SUNBcE8xeHVmVnh1WEc0dkx5QlVhR1Z6WlNCdmNIUWdiM1YwY3lCaGNtVWdhR1Z5WlNCdmJteDVJR1p2Y2lCeGRXbGphMlZ5SUdGdVpDQmxZWE5wWlhJZ2JXbG5jbUYwYVc5dUlIUnZJSEpsWVdOMElHSmhjMlZrSUdGdWJtOTBZWFJwYjI1eklHVmthWFJ2Y25NZ1lXNWtJR0psWTJGMWMyVmNiaTh2SUdGdWJtOTBZWFJwYjI0Z2MzVndjRzl5ZENCQlVFa2dibVZsWkhNZ2MyOXRaU0IzYjNKcklIUnZJSE4xY0hCdmNuUWdiR1Z6Y3lCY0luTjBZVzVrWVhKa1hDSWdaV1JwZEc5eWN5QnNhV3RsSUhCeWIyMWxkR2hsZFhNZ1lXNWtJR2hsY21VZ2FYUWdhWE1nYm05MFhHNHZMeUJ3YjJ4c2RYUnBibWNnY0hWaWJHbGpJRUZRU1M1Y2JseHVZMjl1YzNRZ2JHVm5ZV041VW5WdWJtVnlJRDBnVzF4dUlDQW5jSEp2YldWMGFHVjFjeWNzWEc0Z0lDZHNiMnRwSnl4Y2JpQWdKMlZzWVhOMGFXTnpaV0Z5WTJnbkxGeHVJQ0FuWjNKaFptRnVZUzF2Y0dWdWMyVmhjbU5vTFdSaGRHRnpiM1Z5WTJVbkxDQXZMeUJsZUhSbGNtNWhiRnh1WFR0Y2JseHVMeW9xWEc0Z0tpQlZjMlVnYkdWbllXTjVJSEoxYm01bGNpNGdWWE5sWkNCdmJteDVJR0Z6SUdGdUlHVnpZMkZ3WlNCb1lYUmphQ0JtYjNJZ1pXRnphV1Z5SUhSeVlXNXphWFJwYjI0Z2RHOGdVbVZoWTNRZ1ltRnpaV1FnWVc1dWIzUmhkR2x2YmlCbFpHbDBiM0l1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnphRzkxYkdSVmMyVk1aV2RoWTNsU2RXNXVaWElvWkdGMFlYTnZkWEpqWlRvZ1JHRjBZVk52ZFhKalpVRndhU2s2SUdKdmIyeGxZVzRnZTF4dUlDQmpiMjV6ZENCN0lIUjVjR1VnZlNBOUlHUmhkR0Z6YjNWeVkyVTdYRzRnSUhKbGRIVnliaUFoWkdGMFlYTnZkWEpqWlM1aGJtNXZkR0YwYVc5dWN5QjhmQ0JzWldkaFkzbFNkVzV1WlhJdWFXNWpiSFZrWlhNb2RIbHdaU2s3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEJRWEZDVHl4TlFVRk5MSGxDUVVFclF5eEhRVUZCTzBGQlFVRXNSVUZKTVVRc2FVSkJRVUVzUlVGQmJVSXNRMEZCUXl4SlFVRmpMRXRCUVVFN1FVRkRhRU1zU1VGQlNTeEpRVUZCTEZGQlFVRXNRMEZCVXl4SlFVRk5MRWxCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVsQlFVRXNRMEZCUVN4TFFVRkxMRU5CUVVjc1JVRkJRVHRCUVVONlFpeE5RVUZCTEUxQlFUSkNMRmRCUVc1Q0xFVkJNMEprTEV0QlFVRXNSVUZCUVN4SFFUSkNhVU1zUlVGQlZDeEZRVUZCTEVsQlFVRXNSMEZCUVN4VFFVRkJMRU5CUVZNc1NVRkJWQ3hEUVVGV0xFOUJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZEVWl4TlFVRkJMRTlCUVU4c2FVTkJRMFlzU1VGRVJTeERRVUZCTEVWQlFVRTdRVUZCUVN4UlFVVk1MRTFCUVZFc1JVRkJRVHRCUVVGQkxGVkJRMDRzUzBGQlR5eEZRVUZCTEd0Q1FVRkJPMEZCUVVFc1ZVRkRVQ3hMUVVGQk8wRkJRVUVzVTBGRFJqdEJRVUZCTEZGQlEwRXNWVUZCVlN4RlFVRkRPMEZCUVVFc1QwRkRZaXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5HTzBGQlEwRXNTVUZCVHl4UFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMVE3UVVGQlFTeEZRVXRCTEZsQlFVRXNSVUZCWXl4RFFVRkRMRWxCUVVFc1MwRkJNRUlzU1VGQlN5eERRVUZCTEUxQlFVRTdRVUZCUVN4RlFVczVReXhoUVVGQkxFVkJRV1VzUTBGQlF5eEpRVUZCTEVWQlFYVkNMRWxCUVhOQ0xFdEJRVUU3UVVGRE0wUXNTVUZCVHl4UFFVRkJMSE5DUVVGQkxFTkJRWFZDTEVsQlFVMHNSVUZCUVN4SlFVRkJMRU5CUVVzc1VVRkJVU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU51UkR0QlFVTkdMRVZCUVVFN1FVRk5UeXhUUVVGVExIZENRVUZwUml4SFFVRkJPMEZCUXk5R0xFVkJRVThzVDBGQlFTeERRVUZETEZkQlEwNHNUVUZCVHl4RFFVRkJMRWxCUVVFN1FVRkJRU3hKUVVOTUxGRkJRVUVzUTBGQlV5eERRVUZETEVsQlFWTXNTMEZCUVR0QlFVTnFRaXhOUVVGSkxFbEJRVUVzUlVGQlF5dzJRa0ZCVFN4TlFVRlJMRU5CUVVFc1JVRkJRVHRCUVVOcVFpeFJRVUZCTEU5QlFVOHNSMEZCUnl4TFFVRlRMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRGNrSTdRVUZGUVN4TlFVRkpMRWxCUVVFc1NVRkJRU3hEUVVGTExGZEJRVmNzUTBGQlJ5eEZRVUZCTzBGQlEzSkNMRkZCUVU4c1QwRkJRU3hGUVVGQkxFTkJRVWNzUzBGQlN5eERRVUZGTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRia0k3UVVGRlFTeE5RVUZCTEUxQlFVMHNSMEZCTkVJc1IwRkJRVHRCUVVGQkxGRkJRMmhETEZkQlFVRXNSVUZCWVN4RFFVRkRMRU5CUVdNc1MwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRE9VSXNRMEZCUVR0QlFVVkJMRTFCUVU4c1QwRkJRU3hGUVVGQkxFTkJRVWNzU1VGQlNTeERRVUZGTEVOQlFVRXNTVUZCUVR0QlFVRkJMRkZCUTJRc2IwSkJRWEZDTEVOQlFVRXNaMEpCUVVFc1EwRkJhVUlzVVVGQlV5eERRVUZCTEVsQlFVa3NSMEZCUnl4RFFVRkJPMEZCUVVFc1VVRkRkRVFzUjBGQlNTeERRVUZCTEVOQlFVTXNRMEZCVFN4TFFVRkJMRU5CUVVFc1EwRkJSU3hEUVVGRkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEycENMRU5CUVVFN1FVRkJRU3hMUVVORUxFTkJRVUU3UVVGQlFTeEhRVU5JTEVOQlFVRTdRVUZEU2l4RFFVRkJPMEZCYjBKUExFMUJRVTBzYjBKQlFUaERMRWRCUVVFN1FVRkJRU3hGUVVONlJEdEJRVUZCTEVsQlEwVXNSMEZCU3l4RlFVRkJMRTFCUVVFN1FVRkJRU3hKUVVOTUxFdEJRVUVzUlVGQlR5eERRVUZETEV0QlFVRXNTMEZCY1VJc1MwRkJUU3hEUVVGQkxFMUJRVUVzUTBGQlR5eEpRVUZMTEVOQlFVRXNRMEZCUXl4RFFVRk5MRXRCUVVFc1EwRkJRU3hEUVVGRkxFbEJRVk1zUzBGQlFTeFRRVUZCTEVOQlFWVXNTVUZCU1N4RFFVRkJPMEZCUVVFc1NVRkRMMFVzVjBGQllTeEZRVUZCTEN0Q1FVRkJPMEZCUVVFc1IwRkRaanRCUVVGQkxFVkJRMEVzUlVGQlJTeEhRVUZCTEVWQlFVc3NVMEZCVnl4RlFVRkJMRWxCUVVFc1JVRkJUU3gxUlVGQmQwVXNSVUZCUVR0QlFVRkJMRVZCUTJoSE8wRkJRVUVzU1VGRFJTeEhRVUZMTEVWQlFVRXNUMEZCUVR0QlFVRkJMRWRCUTFBN1FVRkJRU3hGUVVOQk8wRkJRVUVzU1VGRFJTeEhRVUZMTEVWQlFVRXNUVUZCUVR0QlFVRkJMRWxCUTB3c1MwRkJRU3hGUVVGUExFTkJRVU1zUzBGQlFTeExRVUZ4UWl4TFFVRk5MRU5CUVVFc1RVRkJRU3hEUVVGUExFbEJRVXNzUTBGQlFTeERRVUZETEVOQlFVMHNTMEZCUVN4RFFVRkJMRU5CUVVVc1NVRkJVeXhMUVVGQkxGTkJRVUVzUTBGQlZTeE5RVUZOTEVOQlFVRTdRVUZCUVN4SlFVTnFSaXhYUVVGaExFVkJRVUVzSzBKQlFVRTdRVUZCUVN4SFFVTm1PMEZCUVVFc1JVRkRRU3hGUVVGRkxFZEJRVXNzUlVGQlFTeE5RVUZCTEVWQlFWRXNTMEZCVHl4RlFVRkJMRWRCUVVFc1JVRkJTeXhOUVVGTkxIZERRVUY1UXl4RlFVRkJPMEZCUVVFc1JVRkRNVVU3UVVGQlFTeEpRVU5GTEVkQlFVc3NSVUZCUVN4SlFVRkJPMEZCUVVFc1IwRkRVRHRCUVVOR0xFVkJRVUU3UVVGRlR5eE5RVUZOTEhsQ1FVRnRSQ3hIUVVGQk8wRkJRVUVzUlVGRE9VUTdRVUZCUVN4SlFVTkZMRWRCUVVzc1JVRkJRU3hQUVVGQk8wRkJRVUVzUjBGRFVEdEJRVUZCTEVWQlEwRTdRVUZCUVN4SlFVTkZMRWRCUVVzc1JVRkJRU3hWUVVGQk8wRkJRVUVzUjBGRFVEdEJRVUZCTEVWQlEwRTdRVUZCUVN4SlFVTkZMRWRCUVVzc1JVRkJRU3hSUVVGQk8wRkJRVUVzUjBGRFVEdEJRVU5HTEVWQlFVRTdRVUZKUVN4TlFVRk5MRFpDUVVGMVJDeEhRVUZCTzBGQlFVRXNSVUZETTBRc1IwRkJTU3hOUVVGQkxFTkJRVThzTUVKQlFUWkNMRWRCUVVFc2VVSkJRVUVzUjBGQk5FSXNSVUZCUXp0QlFVRkJMRVZCUTNKRkxFZEJRVWNzYjBKQlFVRTdRVUZCUVN4RlFVTklMRVZCUVVVc1MwRkJTeXhSUVVGVExFVkJRVUU3UVVGQlFTeEZRVU5vUWl4RlFVRkZMRXRCUVVzc1QwRkJVU3hGUVVGQk8wRkJRVUVzUlVGRFppeEZRVUZGTEV0QlFVc3NUMEZCVVN4RlFVRkJPMEZCUVVFc1JVRkRaaXhGUVVGRkxFdEJRVXNzVjBGQldTeEZRVUZCTzBGQlFVRXNSVUZEYmtJc1JVRkJSU3hMUVVGTExGVkJRVmNzUlVGQlFUdEJRVUZCTEVWQlEyeENMRVZCUVVVc1MwRkJTeXhOUVVGakxFVkJRVUU3UVVGQlFTeEZRVU55UWl4RlFVRkZMRXRCUVVzc1UwRkJWU3hGUVVGQk8wRkJRVUVzUlVGRGFrSXNSVUZCUlN4TFFVRkxMRk5CUVZVc1JVRkJRVHRCUVVGQkxFVkJRMnBDTEVWQlFVVXNTMEZCU3l4aFFVRmpMRVZCUVVFN1FVRkJRU3hGUVVOeVFpeEZRVUZGTEV0QlFVc3NZMEZCWlN4RlFVRkJPMEZCUTNoQ0xFTkJRVUVzUTBGQlFUdEJRVVZuUWl4VFFVRkJMSE5DUVVGQkxFTkJRMlFzVFVGRFFTeFBRVU1yUWl4RlFVRkJPMEZCUXk5Q0xFVkJRVThzVDBGQlFTeEZRVUZCTEVOQlFVY3NTVUZCU1N4RFFVRkZMRU5CUVVFc1NVRkJRVHRCUVVGQkxFbEJRMlFzZDBKQlFYbENMRVZCUVVFN1FVRkJRU3hKUVVONlFpeEhRVUZCTEVOQlFVa3NRMEZCUXl4TFFVRlZMRXRCUVVFN1FVRkRZaXhOUVVGSkxFbEJRVUVzUlVGQlF5d3JRa0ZCVHl4TlFVRlJMRU5CUVVFc1JVRkJRVHRCUVVOc1FpeFJRVUZCTEU5QlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1QwRkRWanRCUVVWQkxFMUJRVUVzU1VGQlNTeFBRVUZWTEVkQlFVRXNTMEZCUVN4RFFVRkJPMEZCUTJRc1RVRkJRU3hKUVVGSkxFOUJRVlVzUjBGQlFTeExRVUZCTEVOQlFVRTdRVUZEWkN4TlFVRkJMRTFCUVUwc1UwRkJNRUlzUlVGQlF5eERRVUZCTzBGQlJXcERMRTFCUVZjc1MwRkJRU3hOUVVGQkxFTkJRVUVzU1VGQlN5eE5RVUZOTEUxQlFWRXNSVUZCUVR0QlFVTTFRaXhSUVVGTkxFMUJRVUVzU1VGQlFTeEhRVUZQTEcxQ1FVRnZRaXhEUVVGQkxFTkJRVUVzUlVGQlJ5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTjZReXhSUVVGUExFMUJRVUVzUTBGQlFTeEpRVUZCTEVOQlFVc3NZVUZCYVVJc1EwRkJRU3hIUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlF5OUNPMEZCUlVFc1RVRkJRU3hKUVVGSkxFTkJRVU1zVDBGQlV5eEZRVUZCTzBGQlExb3NVVUZCUVN4UFFVRkJMRWRCUVZVc1JVRkJReXhEUVVGQk8wRkJRVUVzVDBGRFlqdEJRVVZCTEUxQlFVRXNUVUZCVFN4VFFVRjFReXhGUVVGRExFTkJRVUU3UVVGRk9VTXNUVUZCUVN4TFFVRkJMRTFCUVZjc1VVRkJVU3cyUWtGQkswSXNSVUZCUVR0QlFVTm9SQ3hSUVVGQkxFMUJRVTBzUjBGQlRTeEhRVUZCTEU5QlFVRXNRMEZCVVN4SlFVRkxMRU5CUVVFc1IwRkJRU3hEUVVGQkxFbEJRVkVzUlVGQlF5eERRVUZCTzBGQlJXeERMRkZCUVVrc1NVRkJRU3hIUVVGQkxFTkJRVWtzVFVGQlZ5eExRVUZCTERCQ1FVRkJMRU5CUVRKQ0xFbEJRVTBzUlVGQlFUdEJRVU5zUkN4VlFVRkJMRk5CUVVFN1FVRkJRU3hUUVVOR08wRkJSVUVzVVVGQlFTeE5RVUZOTEZOQlFYRkRMRVZCUVVVc1IwRkJRU3hGUVVGTExFdEJRVXNzUjBGQlN5eEZRVUZCTEV0QlFVRXNSVUZCVHl4TFFVRkxMRXRCUVUwc1JVRkJRU3hEUVVGQk8wRkJSVGxGTEZGQlFVa3NTVUZCUVN4SFFVRkJMRU5CUVVrc1RVRkJWeXhMUVVGQkxEQkNRVUZCTEVOQlFUSkNMRWxCUVUwc1JVRkJRVHRCUVVOc1JDeFZRVUZCTEUxQlFVRXNRMEZCVHl4UFFVRlBMRWRCUVVrc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGQlFTeFRRVU5pTEUxQlFVRTdRVUZEVEN4VlFVRkJMRTFCUVUwc1MwRkJVeXhIUVVGQkxFTkJRVUVzUjBGQlFTeERRVUZKTEV0QlFWTXNTVUZCUVN4SlFVRkJMRU5CUVVzc1MwRkJTeXhYUVVGWkxFVkJRVUVzUTBGQlFUdEJRVU5zUkN4VlFVRkJMRTFCUVVFc1EwRkJUeXhSUVVGUkxFMUJRVThzUTBGQlFTeExRVUZCTEVOQlFVRXNRMEZCUVR0QlFVVjBRaXhWUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZCTEVOQlFVOHNTMEZCVXl4SlFVRkJMRWxCUVVFc1EwRkJTeXhMUVVGUExFVkJRVUU3UVVGREwwSXNXVUZCVHl4TlFVRkJMRU5CUVVFc1MwRkJRU3hIUVVGUkxFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkJRU3hYUVVOcVF6dEJRVUZCTEZOQlEwWTdRVUZGUVN4UlFVRkpMRWxCUVVFc1RVRkJRU3hEUVVGUExFdEJRVk1zU1VGQlFTeE5RVUZCTEVOQlFVOHNTVUZCVFN4RlFVRkJPMEZCUXk5Q0xGVkJRVUVzVFVGQlFTeERRVUZQTEV0QlFVc3NUVUZCVFN4RFFVRkJMRU5CUVVFN1FVRkRiRUlzVlVGQlNTeEpRVUZCTEUxQlFVRXNRMEZCVHl4UlFVRlJMRTFCUVZFc1JVRkJRVHRCUVVONlFpeFpRVUZWTEU5QlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hYUVVOYUxFMUJRVUVzU1VGQlZ5eE5RVUZQTEVOQlFVRXNSMEZCUVN4TFFVRlJMRTFCUVZFc1JVRkJRVHRCUVVOb1F5eFpRVUZWTEU5QlFVRXNSMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hYUVVOYU8wRkJRVUVzVTBGRFJqdEJRVUZCTEU5QlEwWTdRVUZGUVN4TlFVRkpMRWxCUVVFc1EwRkJReXhQUVVGWExFbEJRVUVzUTBGQlF5eFBRVUZUTEVWQlFVRTdRVUZEZUVJc1VVRkJRU3hQUVVGQkxFTkJRVkVzVFVGQlRTdzBSRUZCTkVRc1EwRkJRU3hEUVVGQk8wRkJRekZGTEZGQlFVRXNUMEZCVHl4RlFVRkRMRU5CUVVFN1FVRkJRU3hQUVVOV08wRkJSMEVzVFVGQlFTeE5RVUZOTEZOQlFUUkNMRVZCUVVNc1EwRkJRVHRCUVVWdVF5eE5RVUZCTEV0QlFVRXNTVUZCVXl4RFFVRkpMRWRCUVVFc1EwRkJRU3hGUVVGSExFTkJRVWtzUjBGQlFTeExRVUZCTEVOQlFVMHNVVUZCVVN4RFFVRkxMRVZCUVVFc1JVRkJRVHRCUVVOeVF5eFJRVUZCTEUxQlFVMHNTVUZCZDBJc1IwRkJRVHRCUVVGQkxGVkJRelZDTEVsQlFVMHNSVUZCUVN4VFFVRkJPMEZCUVVFc1ZVRkRUaXhMUVVGUExFVkJRVUVzUzBGQlFUdEJRVUZCTEZOQlExUXNRMEZCUVR0QlFVVkJMRkZCUVVFc1MwRkJRU3hOUVVGWExFdEJRVXNzVFVGQlVTeEZRVUZCTzBGQlEzUkNMRlZCUVVFc1NVRkJTU3hEUVVGVExFZEJRVUVzUzBGQlFTeERRVUZCTEVOQlFVRTdRVUZGWWl4VlFVRkJMRWxCUVVrc1JVRkJSU3hKUVVGTkxFVkJRVUU3UVVGRFZpeFpRVUZCTEVOQlFVRXNSMEZCU1N4RFFVRkZMRU5CUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzVjBGRFVpeE5RVUZCTEVsQlFWY3NSVUZCUlN4TFFVRlBMRVZCUVVFN1FVRkRiRUlzV1VGQlFTeERRVUZCTEVkQlFVa3NRMEZCUlN4RFFVRkJMRXRCUVVFc1EwRkJUU3hOUVVGUExFTkJRVUVzUjBGQlFTeERRVUZKTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUTNoQ0xGbEJRVWtzU1VGQlFTeERRVUZCTEV0QlFVMHNTMEZCWVN4RFFVRkJMRWxCUVVFc1EwRkJRU3hEUVVGRkxFdEJRVThzUlVGQlFUdEJRVU01UWl4alFVRkJMRTFCUVUwc1MwRkJVU3hIUVVGQkxFTkJRVUVzUTBGQlJTeExRVUZOTEVOQlFVRXNTVUZCUVN4RFFVRkxMRU5CUVVNc1EwRkJRU3hEUVVGQk8wRkJRelZDTEdOQlFVRXNTVUZCU1N4TFFVRlBMRVZCUVVFN1FVRkRWQ3huUWtGQlFTeERRVUZCTEVkQlFVa3NTMEZCVFN4RFFVRkJMRU5CUVVFc1EwRkJRU3hIUVVGTExFdEJRVTBzUTBGQlFTeERRVUZCTEVOQlFVRXNSMEZCU3l4TFFVRk5MRU5CUVVFc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeGxRVU5zUXp0QlFVRkJMR0ZCUTBZN1FVRkJRU3hYUVVOR08wRkJSVUVzVlVGQlNTeEpRVUZCTEVOQlFVRXNTMEZCVFN4SlFVRlJMRWxCUVVFc1EwRkJRU3hMUVVGTkxFdEJRVmNzUTBGQlFTeEZRVUZCTzBGQlEycERMRmxCUVVFc1NVRkJTU3hEUVVGRkxFTkJRVUVzUzBGQlFTeEpRVUZUTEU5QlFVOHNRMEZCUVN4TFFVRk5MRkZCUVZVc1JVRkJRVHRCUVVOd1F5eGpRVUZKTEVOQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVVc1RVRkJUU3hIUVVGSExFTkJRVUVzUTBGQlFUdEJRVUZCTEdGQlEycENPMEZCUTBFc1dVRkJReXhKUVVGQkxFTkJRV0VzUlVGQlJTeEhRVUZQTEVOQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hYUVVONlFqdEJRVUZCTEZOQlEwWTdRVUZGUVN4UlFVRkJMRTFCUVVFc1EwRkJUeXhMUVVGTExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZEYkVJN1FVRkRRU3hOUVVGUExFOUJRVUVzVFVGQlFTeERRVUZCTzBGQlFVRXNTMEZEVWl4RFFVRkJPMEZCUVVFc1IwRkRTQ3hEUVVGQk8wRkJRMFlzUTBGQlFUdEJRVTFCTEUxQlFVMHNXVUZCWlN4SFFVRkJPMEZCUVVFc1JVRkRia0lzV1VGQlFUdEJRVUZCTEVWQlEwRXNUVUZCUVR0QlFVRkJMRVZCUTBFc1pVRkJRVHRCUVVGQkxFVkJRMEVzSzBKQlFVRTdRVUZEUml4RFFVRkJMRU5CUVVFN1FVRkxUeXhUUVVGVExITkNRVUZ6UWl4VlFVRnZReXhGUVVGQk8wRkJRM2hGTEVWQlFVMHNUVUZCUVN4RlFVRkZMRTFCUVZNc1IwRkJRU3hWUVVGQkxFTkJRVUU3UVVGRGFrSXNSVUZCUVN4UFFVRlBMRU5CUVVNc1ZVRkJRU3hEUVVGWExGZEJRV1VzU1VGQlFTeFpRVUZCTEVOQlFXRXNVMEZCVXl4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVNNVJEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQk8sTUFBTSx5QkFBK0MsR0FBQTtBQUkxRCxFQUFBLGlCQUFBLEVBQW1CLENBQUMsSUFBYyxLQUFBO0FBQzVCLElBQUEsSUFBQSxTQUFTLElBQU0sSUFBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsSUFBQSxDQUFBLEtBQUssQ0FBRyxFQUFBO0FBQ3pCLE1BQTJCLE1BQUEsRUFBQSxHQUFBLElBQW5CLEVBQUEsRUEzQmQsS0FBQSxFQUFBLEdBMkJpQyxFQUFULEVBQUEsSUFBQSxHQUFBLFNBQVMsQ0FBQSxFQUFBLEVBQVQsQ0FBVixPQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsTUFBQSxPQUFPLGFBQUEsQ0FBQSxjQUFBLENBQUEsRUFBQSxFQUNGLElBREUsQ0FBQSxFQUFBO1FBRUwsTUFBUSxFQUFBO1VBQ04sS0FBTyxFQUFBLGtCQUFBO0FBQ1As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
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { config } from '@grafana/runtime';
|
|
2
|
+
import { cloneDeep, partition, groupBy, map, every, find, head, concat } from 'lodash';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
function postProcessQueryResult(annotation, results) {
|
|
21
|
+
if (annotation.snapshotData) {
|
|
22
|
+
annotation = cloneDeep(annotation);
|
|
23
|
+
delete annotation.snapshotData;
|
|
24
|
+
}
|
|
25
|
+
const processed = results.map((item) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const processedItem = __spreadValues({}, item);
|
|
28
|
+
processedItem.source = annotation;
|
|
29
|
+
processedItem.color = config.theme2.visualization.getColorByName(annotation.iconColor);
|
|
30
|
+
processedItem.type = annotation.name;
|
|
31
|
+
processedItem.isRegion = Boolean(processedItem.timeEnd && processedItem.time !== processedItem.timeEnd);
|
|
32
|
+
switch ((_a = processedItem.newState) == null ? void 0 : _a.toLowerCase()) {
|
|
33
|
+
case "pending":
|
|
34
|
+
processedItem.color = "yellow";
|
|
35
|
+
break;
|
|
36
|
+
case "alerting":
|
|
37
|
+
processedItem.color = "red";
|
|
38
|
+
break;
|
|
39
|
+
case "ok":
|
|
40
|
+
processedItem.color = "green";
|
|
41
|
+
break;
|
|
42
|
+
case "normal":
|
|
43
|
+
processedItem.color = "green";
|
|
44
|
+
break;
|
|
45
|
+
case "no_data":
|
|
46
|
+
processedItem.color = "gray";
|
|
47
|
+
break;
|
|
48
|
+
case "nodata":
|
|
49
|
+
processedItem.color = "gray";
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
return processedItem;
|
|
53
|
+
});
|
|
54
|
+
return processed;
|
|
55
|
+
}
|
|
56
|
+
function dedupAnnotations(annotations) {
|
|
57
|
+
let dedup = [];
|
|
58
|
+
const events = partition(annotations, "id");
|
|
59
|
+
const eventsById = groupBy(events[0], "id");
|
|
60
|
+
dedup = map(eventsById, (eventGroup) => {
|
|
61
|
+
if (eventGroup.length > 1 && !every(eventGroup, isPanelAlert)) {
|
|
62
|
+
return find(eventGroup, (event) => {
|
|
63
|
+
return event.eventType !== "panel-alert";
|
|
64
|
+
});
|
|
65
|
+
} else {
|
|
66
|
+
return head(eventGroup);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
dedup = concat(dedup, events[1]);
|
|
70
|
+
return dedup;
|
|
71
|
+
}
|
|
72
|
+
function isPanelAlert(event) {
|
|
73
|
+
return event.eventType === "panel-alert";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { dedupAnnotations, postProcessQueryResult };
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3F1ZXJ5aW5nL2xheWVycy9hbm5vdGF0aW9ucy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IGNsb25lRGVlcCwgcGFydGl0aW9uLCBncm91cEJ5LCBtYXAsIGV2ZXJ5LCBmaW5kLCBoZWFkLCBjb25jYXQgfSBmcm9tICdsb2Rhc2gnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5mdW5jdGlvbiBwb3N0UHJvY2Vzc1F1ZXJ5UmVzdWx0KGFubm90YXRpb24sIHJlc3VsdHMpIHtcbiAgaWYgKGFubm90YXRpb24uc25hcHNob3REYXRhKSB7XG4gICAgYW5ub3RhdGlvbiA9IGNsb25lRGVlcChhbm5vdGF0aW9uKTtcbiAgICBkZWxldGUgYW5ub3RhdGlvbi5zbmFwc2hvdERhdGE7XG4gIH1cbiAgY29uc3QgcHJvY2Vzc2VkID0gcmVzdWx0cy5tYXAoKGl0ZW0pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IF9fc3ByZWFkVmFsdWVzKHt9LCBpdGVtKTtcbiAgICBwcm9jZXNzZWRJdGVtLnNvdXJjZSA9IGFubm90YXRpb247XG4gICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9IGNvbmZpZy50aGVtZTIudmlzdWFsaXphdGlvbi5nZXRDb2xvckJ5TmFtZShhbm5vdGF0aW9uLmljb25Db2xvcik7XG4gICAgcHJvY2Vzc2VkSXRlbS50eXBlID0gYW5ub3RhdGlvbi5uYW1lO1xuICAgIHByb2Nlc3NlZEl0ZW0uaXNSZWdpb24gPSBCb29sZWFuKHByb2Nlc3NlZEl0ZW0udGltZUVuZCAmJiBwcm9jZXNzZWRJdGVtLnRpbWUgIT09IHByb2Nlc3NlZEl0ZW0udGltZUVuZCk7XG4gICAgc3dpdGNoICgoX2EgPSBwcm9jZXNzZWRJdGVtLm5ld1N0YXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2EudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcInBlbmRpbmdcIjpcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9IFwieWVsbG93XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFsZXJ0aW5nXCI6XG4gICAgICAgIHByb2Nlc3NlZEl0ZW0uY29sb3IgPSBcInJlZFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJva1wiOlxuICAgICAgICBwcm9jZXNzZWRJdGVtLmNvbG9yID0gXCJncmVlblwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJub3JtYWxcIjpcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9IFwiZ3JlZW5cIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibm9fZGF0YVwiOlxuICAgICAgICBwcm9jZXNzZWRJdGVtLmNvbG9yID0gXCJncmF5XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm5vZGF0YVwiOlxuICAgICAgICBwcm9jZXNzZWRJdGVtLmNvbG9yID0gXCJncmF5XCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbTtcbiAgfSk7XG4gIHJldHVybiBwcm9jZXNzZWQ7XG59XG5mdW5jdGlvbiBkZWR1cEFubm90YXRpb25zKGFubm90YXRpb25zKSB7XG4gIGxldCBkZWR1cCA9IFtdO1xuICBjb25zdCBldmVudHMgPSBwYXJ0aXRpb24oYW5ub3RhdGlvbnMsIFwiaWRcIik7XG4gIGNvbnN0IGV2ZW50c0J5SWQgPSBncm91cEJ5KGV2ZW50c1swXSwgXCJpZFwiKTtcbiAgZGVkdXAgPSBtYXAoZXZlbnRzQnlJZCwgKGV2ZW50R3JvdXApID0+IHtcbiAgICBpZiAoZXZlbnRHcm91cC5sZW5ndGggPiAxICYmICFldmVyeShldmVudEdyb3VwLCBpc1BhbmVsQWxlcnQpKSB7XG4gICAgICByZXR1cm4gZmluZChldmVudEdyb3VwLCAoZXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmV2ZW50VHlwZSAhPT0gXCJwYW5lbC1hbGVydFwiO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBoZWFkKGV2ZW50R3JvdXApO1xuICAgIH1cbiAgfSk7XG4gIGRlZHVwID0gY29uY2F0KGRlZHVwLCBldmVudHNbMV0pO1xuICByZXR1cm4gZGVkdXA7XG59XG5mdW5jdGlvbiBpc1BhbmVsQWxlcnQoZXZlbnQpIHtcbiAgcmV0dXJuIGV2ZW50LmV2ZW50VHlwZSA9PT0gXCJwYW5lbC1hbGVydFwiO1xufVxuXG5leHBvcnQgeyBkZWR1cEFubm90YXRpb25zLCBwb3N0UHJvY2Vzc1F1ZXJ5UmVzdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYUnBiSE11YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1THk0dUwzTnlZeTl4ZFdWeWVXbHVaeTlzWVhsbGNuTXZZVzV1YjNSaGRHbHZibk12ZFhScGJITXVkSE1pWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5OGdWR2hsYzJVZ2IzQjBJRzkxZEhNZ1lYSmxJR2hsY21VZ2IyNXNlU0JtYjNJZ2NYVnBZMnRsY2lCaGJtUWdaV0Z6YVdWeUlHMXBaM0poZEdsdmJpQjBieUJ5WldGamRDQmlZWE5sWkNCaGJtNXZkR0YwYVc5dWN5QmxaR2wwYjNKeklHRnVaQ0JpWldOaGRYTmxYRzR2THlCaGJtNXZkR0YwYVc5dUlITjFjSEJ2Y25RZ1FWQkpJRzVsWldSeklITnZiV1VnZDI5eWF5QjBieUJ6ZFhCd2IzSjBJR3hsYzNNZ1hDSnpkR0Z1WkdGeVpGd2lJR1ZrYVhSdmNuTWdiR2xyWlNCd2NtOXRaWFJvWlhWeklHRnVaQ0JvWlhKbElHbDBJR2x6SUc1dmRGeHVMeThnY0c5c2JIVjBhVzVuSUhCMVlteHBZeUJCVUVrdVhHNWNibWx0Y0c5eWRDQjdJRUZ1Ym05MFlYUnBiMjVGZG1WdWRDd2dRVzV1YjNSaGRHbHZibEYxWlhKNUxDQkVZWFJoVTI5MWNtTmxRWEJwSUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WkdGMFlTYzdYRzVwYlhCdmNuUWdleUJqYjI1bWFXY2dmU0JtY205dElDZEFaM0poWm1GdVlTOXlkVzUwYVcxbEp6dGNibWx0Y0c5eWRDQjdJR05zYjI1bFJHVmxjQ3dnWTI5dVkyRjBMQ0JsZG1WeWVTd2dabWx1WkN3Z1ozSnZkWEJDZVN3Z2FHVmhaQ3dnYldGd0xDQndZWEowYVhScGIyNGdmU0JtY205dElDZHNiMlJoYzJnbk8xeHVYRzVqYjI1emRDQnNaV2RoWTNsU2RXNXVaWElnUFNCYlhHNGdJQ2R3Y205dFpYUm9aWFZ6Snl4Y2JpQWdKMnh2YTJrbkxGeHVJQ0FuWld4aGMzUnBZM05sWVhKamFDY3NYRzRnSUNkbmNtRm1ZVzVoTFc5d1pXNXpaV0Z5WTJndFpHRjBZWE52ZFhKalpTY3NJQzh2SUdWNGRHVnlibUZzWEc1ZE8xeHVYRzR2S2lwY2JpQXFJRlZ6WlNCc1pXZGhZM2tnY25WdWJtVnlMaUJWYzJWa0lHOXViSGtnWVhNZ1lXNGdaWE5qWVhCbElHaGhkR05vSUdadmNpQmxZWE5wWlhJZ2RISmhibk5wZEdsdmJpQjBieUJTWldGamRDQmlZWE5sWkNCaGJtNXZkR0YwYVc5dUlHVmthWFJ2Y2k1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5vYjNWc1pGVnpaVXhsWjJGamVWSjFibTVsY2loa1lYUmhjMjkxY21ObE9pQkVZWFJoVTI5MWNtTmxRWEJwS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJR052Ym5OMElIc2dkSGx3WlNCOUlEMGdaR0YwWVhOdmRYSmpaVHRjYmlBZ2NtVjBkWEp1SUNGa1lYUmhjMjkxY21ObExtRnVibTkwWVhScGIyNXpJSHg4SUd4bFoyRmplVkoxYm01bGNpNXBibU5zZFdSbGN5aDBlWEJsS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJ2YzNSUWNtOWpaWE56VVhWbGNubFNaWE4xYkhRb1lXNXViM1JoZEdsdmJqb2dRVzV1YjNSaGRHbHZibEYxWlhKNUxDQnlaWE4xYkhSek9pQkJibTV2ZEdGMGFXOXVSWFpsYm5SYlhTazZJRUZ1Ym05MFlYUnBiMjVGZG1WdWRGdGRJSHRjYmlBZ0x5OGdhV1lnWVc1dWIzUmhkR2x2YmlCb1lYTWdjMjVoY0hOb2IzUkVZWFJoWEc0Z0lDOHZJRzFoYTJVZ1kyeHZibVVnWVc1a0lISmxiVzkyWlNCcGRGeHVJQ0JwWmlBb1lXNXViM1JoZEdsdmJpNXpibUZ3YzJodmRFUmhkR0VwSUh0Y2JpQWdJQ0JoYm01dmRHRjBhVzl1SUQwZ1kyeHZibVZFWldWd0tHRnVibTkwWVhScGIyNHBPMXh1SUNBZ0lHUmxiR1YwWlNCaGJtNXZkR0YwYVc5dUxuTnVZWEJ6YUc5MFJHRjBZVHRjYmlBZ2ZWeHVYRzRnSUM4dlhHNGdJR052Ym5OMElIQnliMk5sYzNObFpDQTlJSEpsYzNWc2RITXViV0Z3S0NocGRHVnRLU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdjSEp2WTJWemMyVmtTWFJsYlNBOUlIc2dMaTR1YVhSbGJTQjlPMXh1WEc0Z0lDQWdjSEp2WTJWemMyVmtTWFJsYlM1emIzVnlZMlVnUFNCaGJtNXZkR0YwYVc5dU8xeHVJQ0FnSUhCeWIyTmxjM05sWkVsMFpXMHVZMjlzYjNJZ1BTQmpiMjVtYVdjdWRHaGxiV1V5TG5acGMzVmhiR2w2WVhScGIyNHVaMlYwUTI5c2IzSkNlVTVoYldVb1lXNXViM1JoZEdsdmJpNXBZMjl1UTI5c2IzSXBPMXh1SUNBZ0lIQnliMk5sYzNObFpFbDBaVzB1ZEhsd1pTQTlJR0Z1Ym05MFlYUnBiMjR1Ym1GdFpUdGNiaUFnSUNCd2NtOWpaWE56WldSSmRHVnRMbWx6VW1WbmFXOXVJRDBnUW05dmJHVmhiaWh3Y205alpYTnpaV1JKZEdWdExuUnBiV1ZGYm1RZ0ppWWdjSEp2WTJWemMyVmtTWFJsYlM1MGFXMWxJQ0U5UFNCd2NtOWpaWE56WldSSmRHVnRMblJwYldWRmJtUXBPMXh1WEc0Z0lDQWdjM2RwZEdOb0lDaHdjbTlqWlhOelpXUkpkR1Z0TG01bGQxTjBZWFJsUHk1MGIweHZkMlZ5UTJGelpTZ3BLU0I3WEc0Z0lDQWdJQ0JqWVhObElDZHdaVzVrYVc1bkp6cGNiaUFnSUNBZ0lDQWdjSEp2WTJWemMyVmtTWFJsYlM1amIyeHZjaUE5SUNkNVpXeHNiM2NuTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyRnNaWEowYVc1bkp6cGNiaUFnSUNBZ0lDQWdjSEp2WTJWemMyVmtTWFJsYlM1amIyeHZjaUE5SUNkeVpXUW5PMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjI5ckp6cGNiaUFnSUNBZ0lDQWdjSEp2WTJWemMyVmtTWFJsYlM1amIyeHZjaUE5SUNkbmNtVmxiaWM3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmJtOXliV0ZzSnpvZ0x5OGdibWRoYkdWeWRDQW9YQ0p1YjNKdFlXeGNJaUJwYm5OMFpXRmtJRzltSUZ3aWIydGNJaWxjYmlBZ0lDQWdJQ0FnY0hKdlkyVnpjMlZrU1hSbGJTNWpiMnh2Y2lBOUlDZG5jbVZsYmljN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5ibTlmWkdGMFlTYzZYRzRnSUNBZ0lDQWdJSEJ5YjJObGMzTmxaRWwwWlcwdVkyOXNiM0lnUFNBblozSmhlU2M3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBbmJtOWtZWFJoSnpvZ0x5OGdibWRoYkdWeWRGeHVJQ0FnSUNBZ0lDQndjbTlqWlhOelpXUkpkR1Z0TG1OdmJHOXlJRDBnSjJkeVlYa25PMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY0hKdlkyVnpjMlZrU1hSbGJUdGNiaUFnZlNrN1hHNWNiaUFnY21WMGRYSnVJSEJ5YjJObGMzTmxaRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUmxaSFZ3UVc1dWIzUmhkR2x2Ym5Nb1lXNXViM1JoZEdsdmJuTTZJR0Z1ZVNrZ2UxeHVJQ0JzWlhRZ1pHVmtkWEFnUFNCYlhUdGNibHh1SUNBdkx5QlRjR3hwZENCbGRtVnVkSE1nWW5rZ1lXNXViM1JoZEdsdmJrbGtJSEJ5YjNCbGNuUjVJR1Y0YVhOMFpXNWpaVnh1SUNCamIyNXpkQ0JsZG1WdWRITWdQU0J3WVhKMGFYUnBiMjRvWVc1dWIzUmhkR2x2Ym5Nc0lDZHBaQ2NwTzF4dVhHNGdJR052Ym5OMElHVjJaVzUwYzBKNVNXUWdQU0JuY205MWNFSjVLR1YyWlc1MGMxc3dYU3dnSjJsa0p5azdYRzRnSUdSbFpIVndJRDBnYldGd0tHVjJaVzUwYzBKNVNXUXNJQ2hsZG1WdWRFZHliM1Z3S1NBOVBpQjdYRzRnSUNBZ2FXWWdLR1YyWlc1MFIzSnZkWEF1YkdWdVozUm9JRDRnTVNBbUppQWhaWFpsY25rb1pYWmxiblJIY205MWNDd2dhWE5RWVc1bGJFRnNaWEowS1NrZ2UxeHVJQ0FnSUNBZ0x5OGdSMlYwSUdacGNuTjBJRzV2Ymkxd1lXNWxiQ0JoYkdWeWRGeHVJQ0FnSUNBZ2NtVjBkWEp1SUdacGJtUW9aWFpsYm5SSGNtOTFjQ3dnS0dWMlpXNTBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGRtVnVkQzVsZG1WdWRGUjVjR1VnSVQwOUlDZHdZVzVsYkMxaGJHVnlkQ2M3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHaGxZV1FvWlhabGJuUkhjbTkxY0NrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYmx4dUlDQmtaV1IxY0NBOUlHTnZibU5oZENoa1pXUjFjQ3dnWlhabGJuUnpXekZkS1R0Y2JpQWdjbVYwZFhKdUlHUmxaSFZ3TzF4dWZWeHVYRzVtZFc1amRHbHZiaUJwYzFCaGJtVnNRV3hsY25Rb1pYWmxiblE2SUhzZ1pYWmxiblJVZVhCbE9pQnpkSEpwYm1jZ2ZTa2dlMXh1SUNCeVpYUjFjbTRnWlhabGJuUXVaWFpsYm5SVWVYQmxJRDA5UFNBbmNHRnVaV3d0WVd4bGNuUW5PMXh1ZlZ4dUlsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenM3T3pzN1FVRjFRbWRDTEZOQlFVRXNjMEpCUVVFc1EwRkJkVUlzV1VGQk5rSXNUMEZCSzBNc1JVRkJRVHRCUVVkcVNDeEZRVUZCTEVsQlFVa3NWMEZCVnl4WlFVRmpMRVZCUVVFN1FVRkRNMElzU1VGQlFTeFZRVUZCTEVkQlFXRXNWVUZCVlN4VlFVRlZMRU5CUVVFc1EwRkJRVHRCUVVOcVF5eEpRVUZCTEU5QlFVOHNWVUZCVnl4RFFVRkJMRmxCUVVFc1EwRkJRVHRCUVVGQkxFZEJRM0JDTzBGQlIwRXNSVUZCUVN4TlFVRk5MRk5CUVZrc1IwRkJRU3hQUVVGQkxFTkJRVkVzUjBGQlNTeERRVUZCTEVOQlFVTXNTVUZCVXl4TFFVRkJPMEZCYUVNeFF5eEpRVUZCTEVsQlFVRXNSVUZCUVN4RFFVRkJPMEZCYVVOSkxFbEJRVUVzVFVGQlRTeG5Ra0ZCWjBJc1kwRkJTeXhEUVVGQkxFVkJRVUVzUlVGQlFTeEpRVUZCTEVOQlFVRXNRMEZCUVR0QlFVVXpRaXhKUVVGQkxHRkJRVUVzUTBGQll5eE5RVUZUTEVkQlFVRXNWVUZCUVN4RFFVRkJPMEZCUTNaQ0xFbEJRVUVzWVVGQlFTeERRVUZqTEZGQlFWRXNUVUZCVHl4RFFVRkJMRTFCUVVFc1EwRkJUeXhoUVVGakxFTkJRVUVzWTBGQlFTeERRVUZsTEZkQlFWY3NVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkRja1lzU1VGQlFTeGhRVUZCTEVOQlFXTXNUMEZCVHl4VlFVRlhMRU5CUVVFc1NVRkJRU3hEUVVGQk8wRkJRMmhETEVsQlFVRXNZVUZCUVN4RFFVRmpMRmRCUVZjc1QwRkJVU3hEUVVGQkxHRkJRVUVzUTBGQll5eFhRVUZYTEdGQlFXTXNRMEZCUVN4SlFVRkJMRXRCUVZNc1kwRkJZeXhQUVVGUExFTkJRVUVzUTBGQlFUdEJRVVYwUnl4SlFVRlJMRkZCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzWVVGQlFTeERRVUZqTEdGQlFXUXNTVUZCZDBJc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFVRXNWMEZCUVN4RlFVRkJPMEZCUVVFc1RVRkRla0lzUzBGQlFTeFRRVUZCTzBGQlEwZ3NVVUZCUVN4aFFVRkJMRU5CUVdNc1MwRkJVU3hIUVVGQkxGRkJRVUVzUTBGQlFUdEJRVU4wUWl4UlFVRkJMRTFCUVVFN1FVRkJRU3hOUVVOSExFdEJRVUVzVlVGQlFUdEJRVU5JTEZGQlFVRXNZVUZCUVN4RFFVRmpMRXRCUVZFc1IwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGRFSXNVVUZCUVN4TlFVRkJPMEZCUVVFc1RVRkRSeXhMUVVGQkxFbEJRVUU3UVVGRFNDeFJRVUZCTEdGQlFVRXNRMEZCWXl4TFFVRlJMRWRCUVVFc1QwRkJRU3hEUVVGQk8wRkJRM1JDTEZGQlFVRXNUVUZCUVR0QlFVRkJMRTFCUTBjc1MwRkJRU3hSUVVGQk8wRkJRMGdzVVVGQlFTeGhRVUZCTEVOQlFXTXNTMEZCVVN4SFFVRkJMRTlCUVVFc1EwRkJRVHRCUVVOMFFpeFJRVUZCTEUxQlFVRTdRVUZCUVN4TlFVTkhMRXRCUVVFc1UwRkJRVHRCUVVOSUxGRkJRVUVzWVVGQlFTeERRVUZqTEV0QlFWRXNSMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkRkRUlzVVVGQlFTeE5RVUZCTzBGQlFVRXNUVUZEUnl4TFFVRkJMRkZCUVVFN1FVRkRTQ3hSUVVGQkxHRkJRVUVzUTBGQll5eExRVUZSTEVkQlFVRXNUVUZCUVN4RFFVRkJPMEZCUTNSQ0xGRkJRVUVzVFVGQlFUdEJRVUZCTEV0QlFVRTdRVUZIU2l4SlFVRlBMRTlCUVVFc1lVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFVpeERRVUZCTEVOQlFVRTdRVUZGUkN4RlFVRlBMRTlCUVVFc1UwRkJRU3hEUVVGQk8wRkJRMVFzUTBGQlFUdEJRVVZQTEZOQlFWTXNhVUpCUVdsQ0xGZEJRV3RDTEVWQlFVRTdRVUZEYWtRc1JVRkJRU3hKUVVGSkxGRkJRVkVzUlVGQlF5eERRVUZCTzBGQlIySXNSVUZCVFN4TlFVRkJMRTFCUVVFc1IwRkJVeXhUUVVGVkxFTkJRVUVzVjBGQlFTeEZRVUZoTEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCUlRGRExFVkJRVUVzVFVGQlRTeFZRVUZoTEVkQlFVRXNUMEZCUVN4RFFVRlJMRTFCUVU4c1EwRkJRU3hEUVVGQkxFTkJRVUVzUlVGQlNTeEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVTXhReXhGUVVGUkxFdEJRVUVzUjBGQlFTeEhRVUZCTEVOQlFVa3NWVUZCV1N4RlFVRkJMRU5CUVVNc1ZVRkJaU3hMUVVGQk8wRkJRM1JETEVsQlFVRXNTVUZCU1N4WFFVRlhMRTFCUVZNc1IwRkJRU3hEUVVGQkxFbEJRVXNzUTBGQlF5eExRVUZOTEVOQlFVRXNWVUZCUVN4RlFVRlpMRmxCUVZrc1EwRkJSeXhGUVVGQk8wRkJSVGRFTEUxQlFVOHNUMEZCUVN4SlFVRkJMRU5CUVVzc1ZVRkJXU3hGUVVGQkxFTkJRVU1zUzBGQlZTeExRVUZCTzBGQlEycERMRkZCUVVFc1QwRkJUeXhOUVVGTkxGTkJRV01zUzBGQlFTeGhRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTTFRaXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5KTEUxQlFVRTdRVUZEVEN4TlFVRkJMRTlCUVU4c1MwRkJTeXhWUVVGVkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzaENPMEZCUVVFc1IwRkRSQ3hEUVVGQkxFTkJRVUU3UVVGRlJDeEZRVUZSTEV0QlFVRXNSMEZCUVN4TlFVRkJMRU5CUVU4c1MwRkJUeXhGUVVGQkxFMUJRVUVzUTBGQlR5eERRVUZGTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUXk5Q0xFVkJRVThzVDBGQlFTeExRVUZCTEVOQlFVRTdRVUZEVkN4RFFVRkJPMEZCUlVFc1UwRkJVeXhoUVVGaExFdEJRVGhDTEVWQlFVRTdRVUZEYkVRc1JVRkJRU3hQUVVGUExFMUJRVTBzVTBGQll5eExRVUZCTEdGQlFVRXNRMEZCUVR0QlFVTTNRanM3T3pzaWZRPT1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJnQixTQUFBLHNCQUFBLENBQXVCLFlBQTZCLE9BQStDLEVBQUE7QUFHakgsRUFBQSxJQUFJLFdBQVcsWUFBYyxFQUFBO0FBQzNCLElBQUEsVUFBQSxHQUFhLFVBQVUsVUFBVSxDQUFBLENBQUE7QUFDakMsSUFBQSxPQUFPLFVBQVcsQ0FBQSxZQUFBLENBQUE7QUFBQSxHQUFBO0FBSXBCLEVBQUEsTUFBTSxTQUFZLEdBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxDQUFDLElBQVMsS0FBQTtBQWhDMUMsSUFBQSxJQUFBLEVBQUEsQ0FBQTtBQWlDSSxJQUFBLE1BQU0sYUFBZ0IsR0FBQSxjQUFBLENBQUssRUFBQSxFQUFBLElBQUEs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
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { LoadingState } from '@grafana/schema';
|
|
3
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
4
|
+
|
|
5
|
+
function registerQueryWithController(entry) {
|
|
6
|
+
return (queryStream) => {
|
|
7
|
+
const queryControler = sceneGraph.getQueryController(entry.origin);
|
|
8
|
+
if (!queryControler) {
|
|
9
|
+
return queryStream;
|
|
10
|
+
}
|
|
11
|
+
return new Observable((observer) => {
|
|
12
|
+
if (!entry.cancel) {
|
|
13
|
+
entry.cancel = () => observer.complete();
|
|
14
|
+
}
|
|
15
|
+
queryControler.queryStarted(entry);
|
|
16
|
+
let markedAsCompleted = false;
|
|
17
|
+
const sub = queryStream.subscribe({
|
|
18
|
+
next: (v) => {
|
|
19
|
+
if (!markedAsCompleted && v.state !== LoadingState.Loading) {
|
|
20
|
+
markedAsCompleted = true;
|
|
21
|
+
queryControler.queryCompleted(entry);
|
|
22
|
+
}
|
|
23
|
+
observer.next(v);
|
|
24
|
+
},
|
|
25
|
+
error: (e) => observer.error(e),
|
|
26
|
+
complete: () => {
|
|
27
|
+
observer.complete();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return () => {
|
|
31
|
+
sub.unsubscribe();
|
|
32
|
+
if (!markedAsCompleted) {
|
|
33
|
+
queryControler.queryCompleted(entry);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { registerQueryWithController };
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJRdWVyeVdpdGhDb250cm9sbGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9xdWVyeWluZy9yZWdpc3RlclF1ZXJ5V2l0aENvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGdyYWZhbmEvc2NoZW1hJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuXG5mdW5jdGlvbiByZWdpc3RlclF1ZXJ5V2l0aENvbnRyb2xsZXIoZW50cnkpIHtcbiAgcmV0dXJuIChxdWVyeVN0cmVhbSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5Q29udHJvbGVyID0gc2NlbmVHcmFwaC5nZXRRdWVyeUNvbnRyb2xsZXIoZW50cnkub3JpZ2luKTtcbiAgICBpZiAoIXF1ZXJ5Q29udHJvbGVyKSB7XG4gICAgICByZXR1cm4gcXVlcnlTdHJlYW07XG4gICAgfVxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIGlmICghZW50cnkuY2FuY2VsKSB7XG4gICAgICAgIGVudHJ5LmNhbmNlbCA9ICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBxdWVyeUNvbnRyb2xlci5xdWVyeVN0YXJ0ZWQoZW50cnkpO1xuICAgICAgbGV0IG1hcmtlZEFzQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBzdWIgPSBxdWVyeVN0cmVhbS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodikgPT4ge1xuICAgICAgICAgIGlmICghbWFya2VkQXNDb21wbGV0ZWQgJiYgdi5zdGF0ZSAhPT0gTG9hZGluZ1N0YXRlLkxvYWRpbmcpIHtcbiAgICAgICAgICAgIG1hcmtlZEFzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHF1ZXJ5Q29udHJvbGVyLnF1ZXJ5Q29tcGxldGVkKGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlKSA9PiBvYnNlcnZlci5lcnJvcihlKSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAoIW1hcmtlZEFzQ29tcGxldGVkKSB7XG4gICAgICAgICAgcXVlcnlDb250cm9sZXIucXVlcnlDb21wbGV0ZWQoZW50cnkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgeyByZWdpc3RlclF1ZXJ5V2l0aENvbnRyb2xsZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WbmFYTjBaWEpSZFdWeWVWZHBkR2hEYjI1MGNtOXNiR1Z5TG1weklpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdmNYVmxjbmxwYm1jdmNtVm5hWE4wWlhKUmRXVnllVmRwZEdoRGIyNTBjbTlzYkdWeUxuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUU5aWMyVnlkbUZpYkdVZ2ZTQm1jbTl0SUNkeWVHcHpKenRjYm1sdGNHOXlkQ0I3SUV4dllXUnBibWRUZEdGMFpTQjlJR1p5YjIwZ0owQm5jbUZtWVc1aEwzTmphR1Z0WVNjN1hHNXBiWEJ2Y25RZ2V5QnpZMlZ1WlVkeVlYQm9JSDBnWm5KdmJTQW5MaTR2WTI5eVpTOXpZMlZ1WlVkeVlYQm9KenRjYm1sdGNHOXlkQ0I3SUZGMVpYSjVVbVZ6ZFd4MFYybDBhRk4wWVhSbExDQlRZMlZ1WlZGMVpYSjVRMjl1ZEhKdmJHeGxja1Z1ZEhKNUlIMGdabkp2YlNBbkxpNHZZbVZvWVhacGIzSnpMMU5qWlc1bFVYVmxjbmxEYjI1MGNtOXNiR1Z5Snp0Y2JseHVMeW9xWEc0Z0tpQlhhV3hzSUd4dmIyc2dabTl5SUdFZ2MyTmxibVVnYjJKcVpXTjBJSGRwZEdnZ1lTQmlaV2hoZG1sdmNpQjBhR0YwSUdseklHRWdVMk5sYm1WUmRXVnllVU52Ym5SeWIyeHNaWElnWVc1a0lISmxaMmx6ZEdWeUlIUm9aU0J4ZFdWeWVTQjNhWFJvSUdsMExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WbmFYTjBaWEpSZFdWeWVWZHBkR2hEYjI1MGNtOXNiR1Z5UEZRZ1pYaDBaVzVrY3lCUmRXVnllVkpsYzNWc2RGZHBkR2hUZEdGMFpUNG9aVzUwY25rNklGTmpaVzVsVVhWbGNubERiMjUwY205c2JHVnlSVzUwY25rcElIdGNiaUFnY21WMGRYSnVJQ2h4ZFdWeWVWTjBjbVZoYlRvZ1QySnpaWEoyWVdKc1pUeFVQaWtnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEYxWlhKNVEyOXVkSEp2YkdWeUlEMGdjMk5sYm1WSGNtRndhQzVuWlhSUmRXVnllVU52Ym5SeWIyeHNaWElvWlc1MGNua3ViM0pwWjJsdUtUdGNiaUFnSUNCcFppQW9JWEYxWlhKNVEyOXVkSEp2YkdWeUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2NYVmxjbmxUZEhKbFlXMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlBZbk5sY25aaFlteGxQRlErS0NodlluTmxjblpsY2lrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGbGJuUnllUzVqWVc1alpXd3BJSHRjYmlBZ0lDQWdJQ0FnWlc1MGNua3VZMkZ1WTJWc0lEMGdLQ2tnUFQ0Z2IySnpaWEoyWlhJdVkyOXRjR3hsZEdVb0tUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjWFZsY25sRGIyNTBjbTlzWlhJdWNYVmxjbmxUZEdGeWRHVmtLR1Z1ZEhKNUtUdGNiaUFnSUNBZ0lHeGxkQ0J0WVhKclpXUkJjME52YlhCc1pYUmxaQ0E5SUdaaGJITmxPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQnpkV0lnUFNCeGRXVnllVk4wY21WaGJTNXpkV0p6WTNKcFltVW9lMXh1SUNBZ0lDQWdJQ0J1WlhoME9pQW9kaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNnaGJXRnlhMlZrUVhORGIyMXdiR1YwWldRZ0ppWWdkaTV6ZEdGMFpTQWhQVDBnVEc5aFpHbHVaMU4wWVhSbExreHZZV1JwYm1jcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGNtdGxaRUZ6UTI5dGNHeGxkR1ZrSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIRjFaWEo1UTI5dWRISnZiR1Z5TG5GMVpYSjVRMjl0Y0d4bGRHVmtLR1Z1ZEhKNUtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQnZZbk5sY25abGNpNXVaWGgwS0hZcE8xeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0JsY25KdmNqb2dLR1VwSUQwK0lHOWljMlZ5ZG1WeUxtVnljbTl5S0dVcExGeHVJQ0FnSUNBZ0lDQmpiMjF3YkdWMFpUb2dLQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJRzlpYzJWeWRtVnlMbU52YlhCc1pYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ2MzVmlMblZ1YzNWaWMyTnlhV0psS0NrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGdFlYSnJaV1JCYzBOdmJYQnNaWFJsWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEYxWlhKNVEyOXVkSEp2YkdWeUxuRjFaWEo1UTI5dGNHeGxkR1ZrS0dWdWRISjVLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlR0Y2JpQWdJQ0I5S1R0Y2JpQWdmVHRjYm4xY2JpSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPMEZCVVU4c1UwRkJVeXcwUWtGQk5FUXNTMEZCYTBNc1JVRkJRVHRCUVVNMVJ5eEZRVUZCTEU5QlFVOHNRMEZCUXl4WFFVRXJRaXhMUVVGQk8wRkJRM0pETEVsQlFVRXNUVUZCVFN4alFVRnBRaXhIUVVGQkxGVkJRVUVzUTBGQlZ5eHJRa0ZCYlVJc1EwRkJRU3hMUVVGQkxFTkJRVTBzVFVGQlRTeERRVUZCTEVOQlFVRTdRVUZEYWtVc1NVRkJRU3hKUVVGSkxFTkJRVU1zWTBGQlowSXNSVUZCUVR0QlFVTnVRaXhOUVVGUExFOUJRVUVzVjBGQlFTeERRVUZCTzBGQlFVRXNTMEZEVkR0QlFVVkJMRWxCUVU4c1QwRkJRU3hKUVVGSkxGVkJRV01zUTBGQlFTeERRVUZETEZGQlFXRXNTMEZCUVR0QlFVTnlReXhOUVVGSkxFbEJRVUVzUTBGQlF5eE5RVUZOTEUxQlFWRXNSVUZCUVR0QlFVTnFRaXhSUVVGTkxFdEJRVUVzUTBGQlFTeE5RVUZCTEVkQlFWTXNUVUZCVFN4UlFVRkJMRU5CUVZNc1VVRkJVeXhGUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU42UXp0QlFVVkJMRTFCUVVFc1kwRkJRU3hEUVVGbExHRkJRV0VzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEYWtNc1RVRkJRU3hKUVVGSkxHbENRVUZ2UWl4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVWNFFpeE5RVUZOTEUxQlFVRXNSMEZCUVN4SFFVRk5MRmxCUVZrc1UwRkJWU3hEUVVGQk8wRkJRVUVzVVVGRGFFTXNTVUZCUVN4RlFVRk5MRU5CUVVNc1EwRkJUU3hMUVVGQk8wRkJRMWdzVlVGQlFTeEpRVUZKTEVOQlFVTXNhVUpCUVVFc1NVRkJjVUlzUTBGQlJTeERRVUZCTEV0QlFVRXNTMEZCVlN4aFFVRmhMRTlCUVZNc1JVRkJRVHRCUVVNeFJDeFpRVUZ2UWl4cFFrRkJRU3hIUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU53UWl4WlFVRkJMR05CUVVFc1EwRkJaU3hsUVVGbExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNWMEZEY2tNN1FVRkZRU3hWUVVGQkxGRkJRVUVzUTBGQlV5eExRVUZMTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRha0k3UVVGQlFTeFJRVU5CTEV0QlFVOHNSVUZCUVN4RFFVRkRMRU5CUVUwc1MwRkJRU3hSUVVGQkxFTkJRVk1zVFVGQlRTeERRVUZETEVOQlFVRTdRVUZCUVN4UlFVTTVRaXhWUVVGVkxFMUJRVTA3UVVGRFpDeFZRVUZCTEZGQlFVRXNRMEZCVXl4UlFVRlRMRVZCUVVFc1EwRkJRVHRCUVVGQkxGTkJRM0JDTzBGQlFVRXNUMEZEUkN4RFFVRkJMRU5CUVVFN1FVRkZSQ3hOUVVGQkxFOUJRVThzVFVGQlRUdEJRVU5ZTEZGQlFVRXNSMEZCUVN4RFFVRkpMRmRCUVZrc1JVRkJRU3hEUVVGQk8wRkJSV2hDTEZGQlFVRXNTVUZCU1N4RFFVRkRMR2xDUVVGdFFpeEZRVUZCTzBGQlEzUkNMRlZCUVVFc1kwRkJRU3hEUVVGbExHVkJRV1VzUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTnlRenRCUVVGQkxFOUJRMFlzUTBGQlFUdEJRVUZCTEV0QlEwUXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRTQ3hEUVVGQk8wRkJRMFk3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBUU8sU0FBUyw0QkFBNEQsS0FBa0MsRUFBQTtBQUM1RyxFQUFBLE9BQU8sQ0FBQyxXQUErQixLQUFBO0FBQ3JDLElBQUEsTUFBTSxjQUFpQixHQUFBLFVBQUEsQ0FBVyxrQkFBbUIsQ0FBQSxLQUFBLENBQU0sTUFBTSxDQUFBLENBQUE7QUFDakUsSUFBQSxJQUFJLENBQUMsY0FBZ0IsRUFBQTtBQUNaLE1BQUEsT0FBQSxXQUFBLENBQUE7QUFBQSxLQUFBO0FBR0YsSUFBQSxPQUFBLElBQUksVUFBYyxDQUFBLENBQUMsUUFBYSxLQUFBO0FBQ2pDLE1BQUEsSUFBQSxDQUFDLE1BQU0sTUFBUSxFQUFBO0FBQ1gsUUFBQSxLQUFBLENBQUEsTUFBQSxHQUFTLE1BQU0sUUFBQSxDQUFTLFFBQVMsRUFBQSxDQUFBO0FBQUEsT0FBQTtBQUd6QyxNQUFBLGNBQUEsQ0FBZSxhQUFhLEtBQUssQ0FBQSxDQUFBO0FBQ2pDLE1BQUEsSUFBSSxpQkFBb0IsR0FBQSxLQUFBLENBQUE7QUFFbEIsTUFBQSxNQUFBLEdBQUEsR0FBTSxZQUFZLFNBQVUsQ0FBQTtBQUNoQyxRQUFBLElBQUEsRUFBTSxDQUFDLENBQU0sS0FBQTtBQUNYLFVBQUEsSUFBSSxDQUFDLGlCQUFBLElBQXFCLENBQUUsQ0FBQSxLQUFBLEtBQVUsYUFBYSxPQUFTLEVBQUE7QUFDdEMsWUFBQSxpQkFBQSxHQUFBLElBQUEsQ0FBQTtBQUNwQixZQUFBLGNBQUEsQ0FBZSxlQUFlLEtBQUssQ0FBQSxDQUFBO0FBQUEsV0FBQTtBQUdyQyxVQUFBLFFBQUEsQ0FBUyxLQUFLLENBQUMsQ0FBQSxDQUFBO0FBQUEsU0FBQTtBQUVqQixRQUFBLEtBQUEsRUFBTyxDQUFDLENBQUEsS0FBTSxRQUFTLENBQUEsS0FBQSxDQUFNLENBQUMsQ0FBQTtBQUM5QixRQUFBLFFBQUEsRUFBVSxNQUFNO0FBQ2QsVUFBQSxRQUFBLENBQVMsUUFBUyxFQUFBLENBQUE7QUFBQSxTQUFBO09BRXJCLENBQUEsQ0FBQTtBQUVELE1BQUEsT0FBTyxNQUFNO0FBQ1gsUUFBQSxHQUFBLENBQUksV0FBWSxFQUFBLENBQUE7QUFFaEIsUUFBQSxJQUFJLENBQUMsaUJBQW1CLEVBQUE7QUFDdEIsVUFBQSxjQUFBLENBQWUsZUFBZSxLQUFLLENBQUEsQ0FBQTtBQUFBLFNBQUE7QUFDckMsT0FBQSxDQUFBO0tBRUgsQ0FBQSxDQUFBO0FBQUEsR0FBQSxDQUFBO0FBRUw7Ozs7In0=
|