@nova-ui/dashboards
Version:
Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and
122 lines • 17.6 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { StackComponent } from "../../components/layouts/stack/stack.component";
import { TimeframeSelectionComponent } from "../../components/time-frame-selection/timeframe-selection.component";
import { TimeseriesWidgetComponent } from "../../components/timeseries-widget/timeseries-widget.component";
import { TimeseriesChartPreset, TimeseriesScaleType, } from "../../components/timeseries-widget/types";
import { DEFAULT_PIZZAGNA_ROOT, NOVA_TIMESERIES_DATASOURCE_ADAPTER, } from "../../services/types";
import { PizzagnaLayer, WellKnownProviders, } from "../../types";
import { widgetBodyContentNodes, WIDGET_BODY, WIDGET_HEADER, WIDGET_LOADING, } from "../common/widget/components";
import { EVENT_PROXY, refresher } from "../common/widget/providers";
export const timeseriesWidget = {
[PizzagnaLayer.Structure]: {
[DEFAULT_PIZZAGNA_ROOT]: {
id: DEFAULT_PIZZAGNA_ROOT,
// base layout of the widget - all components referenced herein will be stacked in a column
componentType: StackComponent.lateLoadKey,
providers: {
// When enabled, this provider emits the REFRESH event on the pizzagna event bus every X seconds
[WellKnownProviders.Refresher]: refresher(),
// event proxy manages the transmission of events between widget and dashboard
[WellKnownProviders.EventProxy]: EVENT_PROXY,
},
properties: {
// these values reference other components in this structure
nodes: ["header", "loading", "body"],
},
},
// widget header
header: WIDGET_HEADER,
// this is the loading bar below the header
loading: WIDGET_LOADING,
// widget body
body: {
...WIDGET_BODY,
properties: {
...WIDGET_BODY.properties,
elementClass: "overflow-auto",
},
},
// retrieving the definitions for the body content nodes. the argument corresponds to the main content node key
...widgetBodyContentNodes("mainContent"),
mainContent: {
id: "mainContent",
componentType: StackComponent.lateLoadKey,
properties: {
// these values reference other components in this configuration
nodes: ["timeframeSelection", "chart"],
},
},
// component that filters the widget's timeseries data by timeframe
timeframeSelection: {
id: "timeframeSelection",
componentType: TimeframeSelectionComponent.lateLoadKey,
},
// component that displays the widget's timeseries data as a line chart
chart: {
id: "chart",
componentType: TimeseriesWidgetComponent.lateLoadKey,
properties: {
elementClass: "d-flex flex-column justify-content-center h-100 overflow-auto",
configuration: {
preset: TimeseriesChartPreset.Line,
// this scales configuration defines default scale types for the chart
scales: {
y: {
// linear numeric scale for the y axis
type: TimeseriesScaleType.Linear,
},
x: {
// continuous time scale for the x axis
type: TimeseriesScaleType.Time,
},
},
},
},
providers: {
// provider for mapping the timeseries data source output to the format required by the widget
[WellKnownProviders.Adapter]: {
providerId: NOVA_TIMESERIES_DATASOURCE_ADAPTER,
properties: {
componentId: "chart",
propertyPath: "widgetData",
series: [],
},
},
},
},
},
[PizzagnaLayer.Configuration]: {
[DEFAULT_PIZZAGNA_ROOT]: {
id: DEFAULT_PIZZAGNA_ROOT,
providers: {
// default refresher configuration
[WellKnownProviders.Refresher]: refresher(false, 60),
},
},
// default header configuration
header: {
properties: {
title: $localize `Empty Timeseries Widget`,
},
},
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllcy13aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3dpZGdldC10eXBlcy90aW1lc2VyaWVzL3RpbWVzZXJpZXMtd2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDtBQUN6RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDhFQUE4RTtBQUM5RSw0REFBNEQ7QUFDNUQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBQy9FLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUVqQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDbEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDM0csT0FBTyxFQUdILHFCQUFxQixFQUNyQixtQkFBbUIsR0FDdEIsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGtDQUFrQyxHQUNyQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFFSCxhQUFhLEVBQ2Isa0JBQWtCLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEdBQ2pCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN2QixDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDckIsRUFBRSxFQUFFLHFCQUFxQjtZQUN6QiwyRkFBMkY7WUFDM0YsYUFBYSxFQUFFLGNBQWMsQ0FBQyxXQUFXO1lBQ3pDLFNBQVMsRUFBRTtnQkFDUCxnR0FBZ0c7Z0JBQ2hHLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxFQUFFO2dCQUMzQyw4RUFBOEU7Z0JBQzlFLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVzthQUMvQztZQUNELFVBQVUsRUFBRTtnQkFDUiw0REFBNEQ7Z0JBQzVELEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO2FBQ3ZDO1NBQ0o7UUFDRCxnQkFBZ0I7UUFDaEIsTUFBTSxFQUFFLGFBQWE7UUFDckIsMkNBQTJDO1FBQzNDLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLGNBQWM7UUFDZCxJQUFJLEVBQUU7WUFDRixHQUFHLFdBQVc7WUFDZCxVQUFVLEVBQUU7Z0JBQ1IsR0FBRyxXQUFXLENBQUMsVUFBVTtnQkFDekIsWUFBWSxFQUFFLGVBQWU7YUFDaEM7U0FDSjtRQUVELCtHQUErRztRQUMvRyxHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQztRQUV4QyxXQUFXLEVBQUU7WUFDVCxFQUFFLEVBQUUsYUFBYTtZQUNqQixhQUFhLEVBQUUsY0FBYyxDQUFDLFdBQVc7WUFDekMsVUFBVSxFQUFFO2dCQUNSLGdFQUFnRTtnQkFDaEUsS0FBSyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO2FBQ3pDO1NBQ0o7UUFDRCxtRUFBbUU7UUFDbkUsa0JBQWtCLEVBQUU7WUFDaEIsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixhQUFhLEVBQUUsMkJBQTJCLENBQUMsV0FBVztTQUN6RDtRQUNELHVFQUF1RTtRQUN2RSxLQUFLLEVBQUU7WUFDSCxFQUFFLEVBQUUsT0FBTztZQUNYLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXO1lBQ3BELFVBQVUsRUFBRTtnQkFDUixZQUFZLEVBQ1IsK0RBQStEO2dCQUNuRSxhQUFhLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLHFCQUFxQixDQUFDLElBQUk7b0JBQ2xDLHNFQUFzRTtvQkFDdEUsTUFBTSxFQUFFO3dCQUNKLENBQUMsRUFBRTs0QkFDQyxzQ0FBc0M7NEJBQ3RDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO3lCQUNUO3dCQUMzQixDQUFDLEVBQUU7NEJBQ0MsdUNBQXVDOzRCQUN2QyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsSUFBSTt5QkFDUDtxQkFDOUI7aUJBQ3VCO2FBQy9CO1lBQ0QsU0FBUyxFQUFFO2dCQUNQLDhGQUE4RjtnQkFDOUYsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDMUIsVUFBVSxFQUFFLGtDQUFrQztvQkFDOUMsVUFBVSxFQUFFO3dCQUNSLFdBQVcsRUFBRSxPQUFPO3dCQUNwQixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsTUFBTSxFQUFFLEVBQW9DO3FCQUMvQztpQkFDc0I7YUFDOUI7U0FDSjtLQUNKO0lBQ0QsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDM0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQ3JCLEVBQUUsRUFBRSxxQkFBcUI7WUFDekIsU0FBUyxFQUFFO2dCQUNQLGtDQUFrQztnQkFDbEMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUN2RDtTQUNKO1FBQ0QsK0JBQStCO1FBQy9CLE1BQU0sRUFBRTtZQUNKLFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsU0FBUyxDQUFBLHlCQUF5QjthQUM1QztTQUNKO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IFN0YWNrQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvbGF5b3V0cy9zdGFjay9zdGFjay5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRpbWVmcmFtZVNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3RpbWUtZnJhbWUtc2VsZWN0aW9uL3RpbWVmcmFtZS1zZWxlY3Rpb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUaW1lc2VyaWVzV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdGltZXNlcmllcy13aWRnZXQvdGltZXNlcmllcy13aWRnZXQuY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIElUaW1lc2VyaWVzU2NhbGVDb25maWcsXG4gICAgSVRpbWVzZXJpZXNXaWRnZXRDb25maWcsXG4gICAgVGltZXNlcmllc0NoYXJ0UHJlc2V0LFxuICAgIFRpbWVzZXJpZXNTY2FsZVR5cGUsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3RpbWVzZXJpZXMtd2lkZ2V0L3R5cGVzXCI7XG5pbXBvcnQgeyBJVGltZXNlcmllc0l0ZW1Db25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2NvbmZpZ3VyYXRvci9jb21wb25lbnRzL3dpZGdldHMvdGltZXNlcmllcy90eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBERUZBVUxUX1BJWlpBR05BX1JPT1QsXG4gICAgTk9WQV9USU1FU0VSSUVTX0RBVEFTT1VSQ0VfQURBUFRFUixcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3R5cGVzXCI7XG5pbXBvcnQge1xuICAgIElQcm92aWRlckNvbmZpZ3VyYXRpb24sXG4gICAgUGl6emFnbmFMYXllcixcbiAgICBXZWxsS25vd25Qcm92aWRlcnMsXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgICB3aWRnZXRCb2R5Q29udGVudE5vZGVzLFxuICAgIFdJREdFVF9CT0RZLFxuICAgIFdJREdFVF9IRUFERVIsXG4gICAgV0lER0VUX0xPQURJTkcsXG59IGZyb20gXCIuLi9jb21tb24vd2lkZ2V0L2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVWRU5UX1BST1hZLCByZWZyZXNoZXIgfSBmcm9tIFwiLi4vY29tbW9uL3dpZGdldC9wcm92aWRlcnNcIjtcblxuZXhwb3J0IGNvbnN0IHRpbWVzZXJpZXNXaWRnZXQgPSB7XG4gICAgW1BpenphZ25hTGF5ZXIuU3RydWN0dXJlXToge1xuICAgICAgICBbREVGQVVMVF9QSVpaQUdOQV9ST09UXToge1xuICAgICAgICAgICAgaWQ6IERFRkFVTFRfUElaWkFHTkFfUk9PVCxcbiAgICAgICAgICAgIC8vIGJhc2UgbGF5b3V0IG9mIHRoZSB3aWRnZXQgLSBhbGwgY29tcG9uZW50cyByZWZlcmVuY2VkIGhlcmVpbiB3aWxsIGJlIHN0YWNrZWQgaW4gYSBjb2x1bW5cbiAgICAgICAgICAgIGNvbXBvbmVudFR5cGU6IFN0YWNrQ29tcG9uZW50LmxhdGVMb2FkS2V5LFxuICAgICAgICAgICAgcHJvdmlkZXJzOiB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiBlbmFibGVkLCB0aGlzIHByb3ZpZGVyIGVtaXRzIHRoZSBSRUZSRVNIIGV2ZW50IG9uIHRoZSBwaXp6YWduYSBldmVudCBidXMgZXZlcnkgWCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgW1dlbGxLbm93blByb3ZpZGVycy5SZWZyZXNoZXJdOiByZWZyZXNoZXIoKSxcbiAgICAgICAgICAgICAgICAvLyBldmVudCBwcm94eSBtYW5hZ2VzIHRoZSB0cmFuc21pc3Npb24gb2YgZXZlbnRzIGJldHdlZW4gd2lkZ2V0IGFuZCBkYXNoYm9hcmRcbiAgICAgICAgICAgICAgICBbV2VsbEtub3duUHJvdmlkZXJzLkV2ZW50UHJveHldOiBFVkVOVF9QUk9YWSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgLy8gdGhlc2UgdmFsdWVzIHJlZmVyZW5jZSBvdGhlciBjb21wb25lbnRzIGluIHRoaXMgc3RydWN0dXJlXG4gICAgICAgICAgICAgICAgbm9kZXM6IFtcImhlYWRlclwiLCBcImxvYWRpbmdcIiwgXCJib2R5XCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gd2lkZ2V0IGhlYWRlclxuICAgICAgICBoZWFkZXI6IFdJREdFVF9IRUFERVIsXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGxvYWRpbmcgYmFyIGJlbG93IHRoZSBoZWFkZXJcbiAgICAgICAgbG9hZGluZzogV0lER0VUX0xPQURJTkcsXG4gICAgICAgIC8vIHdpZGdldCBib2R5XG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIC4uLldJREdFVF9CT0RZLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIC4uLldJREdFVF9CT0RZLnByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgZWxlbWVudENsYXNzOiBcIm92ZXJmbG93LWF1dG9cIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gcmV0cmlldmluZyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBib2R5IGNvbnRlbnQgbm9kZXMuIHRoZSBhcmd1bWVudCBjb3JyZXNwb25kcyB0byB0aGUgbWFpbiBjb250ZW50IG5vZGUga2V5XG4gICAgICAgIC4uLndpZGdldEJvZHlDb250ZW50Tm9kZXMoXCJtYWluQ29udGVudFwiKSxcblxuICAgICAgICBtYWluQ29udGVudDoge1xuICAgICAgICAgICAgaWQ6IFwibWFpbkNvbnRlbnRcIixcbiAgICAgICAgICAgIGNvbXBvbmVudFR5cGU6IFN0YWNrQ29tcG9uZW50LmxhdGVMb2FkS2V5LFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIC8vIHRoZXNlIHZhbHVlcyByZWZlcmVuY2Ugb3RoZXIgY29tcG9uZW50cyBpbiB0aGlzIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgICAgICBub2RlczogW1widGltZWZyYW1lU2VsZWN0aW9uXCIsIFwiY2hhcnRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBjb21wb25lbnQgdGhhdCBmaWx0ZXJzIHRoZSB3aWRnZXQncyB0aW1lc2VyaWVzIGRhdGEgYnkgdGltZWZyYW1lXG4gICAgICAgIHRpbWVmcmFtZVNlbGVjdGlvbjoge1xuICAgICAgICAgICAgaWQ6IFwidGltZWZyYW1lU2VsZWN0aW9uXCIsXG4gICAgICAgICAgICBjb21wb25lbnRUeXBlOiBUaW1lZnJhbWVTZWxlY3Rpb25Db21wb25lbnQubGF0ZUxvYWRLZXksXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHRoZSB3aWRnZXQncyB0aW1lc2VyaWVzIGRhdGEgYXMgYSBsaW5lIGNoYXJ0XG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICBpZDogXCJjaGFydFwiLFxuICAgICAgICAgICAgY29tcG9uZW50VHlwZTogVGltZXNlcmllc1dpZGdldENvbXBvbmVudC5sYXRlTG9hZEtleSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M6XG4gICAgICAgICAgICAgICAgICAgIFwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgb3ZlcmZsb3ctYXV0b1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgcHJlc2V0OiBUaW1lc2VyaWVzQ2hhcnRQcmVzZXQuTGluZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzY2FsZXMgY29uZmlndXJhdGlvbiBkZWZpbmVzIGRlZmF1bHQgc2NhbGUgdHlwZXMgZm9yIHRoZSBjaGFydFxuICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5lYXIgbnVtZXJpYyBzY2FsZSBmb3IgdGhlIHkgYXhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRpbWVzZXJpZXNTY2FsZVR5cGUuTGluZWFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBJVGltZXNlcmllc1NjYWxlQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVvdXMgdGltZSBzY2FsZSBmb3IgdGhlIHggYXhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRpbWVzZXJpZXNTY2FsZVR5cGUuVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgSVRpbWVzZXJpZXNTY2FsZUNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9IGFzIElUaW1lc2VyaWVzV2lkZ2V0Q29uZmlnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3ZpZGVyczoge1xuICAgICAgICAgICAgICAgIC8vIHByb3ZpZGVyIGZvciBtYXBwaW5nIHRoZSB0aW1lc2VyaWVzIGRhdGEgc291cmNlIG91dHB1dCB0byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSB3aWRnZXRcbiAgICAgICAgICAgICAgICBbV2VsbEtub3duUHJvdmlkZXJzLkFkYXB0ZXJdOiB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVySWQ6IE5PVkFfVElNRVNFUklFU19EQVRBU09VUkNFX0FEQVBURVIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudElkOiBcImNoYXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVBhdGg6IFwid2lkZ2V0RGF0YVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBbXSBhcyBJVGltZXNlcmllc0l0ZW1Db25maWd1cmF0aW9uW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSBhcyBJUHJvdmlkZXJDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIFtQaXp6YWduYUxheWVyLkNvbmZpZ3VyYXRpb25dOiB7XG4gICAgICAgIFtERUZBVUxUX1BJWlpBR05BX1JPT1RdOiB7XG4gICAgICAgICAgICBpZDogREVGQVVMVF9QSVpaQUdOQV9ST09ULFxuICAgICAgICAgICAgcHJvdmlkZXJzOiB7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCByZWZyZXNoZXIgY29uZmlndXJhdGlvblxuICAgICAgICAgICAgICAgIFtXZWxsS25vd25Qcm92aWRlcnMuUmVmcmVzaGVyXTogcmVmcmVzaGVyKGZhbHNlLCA2MCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBkZWZhdWx0IGhlYWRlciBjb25maWd1cmF0aW9uXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAkbG9jYWxpemVgRW1wdHkgVGltZXNlcmllcyBXaWRnZXRgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbiJdfQ==