@kepler.gl/constants 3.1.0-alpha.1 → 3.1.0-alpha.3

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.
@@ -0,0 +1,1282 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PANEL_VIEW_TOGGLES = exports.PANELS = exports.OneXResolutionOption = exports.OVERWRITE_MAP_ID = exports.OVERLAY_BLENDINGS = exports.NO_VALUE_COLOR = exports.NO_MAP_ID = exports.NO_BASEMAP_ICON = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.LOADING_METHODS = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT = exports.LAYER_BLENDINGS = exports.KEPLER_UNFOLDED_BUCKET = exports.KEPLER_GL_WEBSITE = exports.KEPLER_GL_VERSION = exports.KEPLER_GL_NAME = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = exports.ICON_FIELDS = exports.HIGHLIGH_COLOR_3D = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_VIEW_TYPES = exports.FILTER_TYPES = exports.FIELD_TYPE_DISPLAY = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.EXPORT_MAP_ID = exports.EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMATS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIOS = exports.EXPORT_IMAGE_ID = exports.EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODES = exports.EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE = exports.EXPORT_DATA_ID = exports.EMPTY_MAPBOX_STYLE = exports.EFFECT_DESCRIPTIONS = exports.EDITOR_MODES = exports.EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_ID = exports.DIMENSIONS = exports.DELETE_DATA_ID = exports.DEFAULT_UUID_COUNT = exports.DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TIME_FORMAT = exports.DEFAULT_TIMEZONE = exports.DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_COLOR = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_PICKING_RADIUS = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPBOX_API_URL = exports.DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR = exports.DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FEATURE_FLAGS = exports.DEFAULT_BLDG_COLOR = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALES = exports.BASE_SPEED = exports.BASE_MAP_COLOR_MODES = exports.BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASEMAP_ICON_PREFIX = exports.BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP = exports.ANIMATION_WINDOW = exports.ALTITUDE_FIELDS = exports.ALL_FIELD_TYPES = exports.AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPES = exports.ADD_MAP_STYLE_ID = exports.ADD_DATA_ID = exports.ACTION_PREFIX = void 0;
8
+ exports.dataTestIds = exports.TwoXResolutionOption = exports.TRIP_POINT_FIELDS = exports.TRIP_ARC_FIELDS = exports.TRANSITION_DURATION = exports.THROTTLE_NOTIFICATION_TIME = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THEME = exports.TEXT_OUTLINE_MULTIPLIER = exports.TABLE_OPTION_LIST = exports.TABLE_OPTION = exports.SixteenByNineRatioOption = exports.ScreenRatioOption = exports.SYNC_TIMELINE_MODES = exports.SPEED_CONTROL_STEP = exports.SPEED_CONTROL_RANGE = exports.SORT_ORDER = exports.SIDEBAR_PANELS = exports.SHARE_MAP_ID = exports.SCALE_TYPE_NAMES = exports.SCALE_TYPES = exports.SCALE_FUNC = exports.SAVE_MAP_ID = exports.RESOLUTIONS = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.POSTPROCESSING_EFFECTS = exports.PLOT_TYPES = void 0;
9
+ exports.getHTMLMapModeTileUrl = getHTMLMapModeTileUrl;
10
+ exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = void 0;
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _keymirror = _interopRequireDefault(require("keymirror"));
15
+ var _d3Scale = require("d3-scale");
16
+ var _tooltip = require("./tooltip");
17
+ var _FIELD_TYPE_DISPLAY, _FIELD_OPTS; // SPDX-License-Identifier: MIT
18
+ // Copyright contributors to the kepler.gl project
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var ACTION_PREFIX = exports.ACTION_PREFIX = '@@kepler.gl/';
22
+ var KEPLER_UNFOLDED_BUCKET = exports.KEPLER_UNFOLDED_BUCKET = 'https://studio-public-data.foursquare.com/statics/keplergl';
23
+ var BASEMAP_ICON_PREFIX = exports.BASEMAP_ICON_PREFIX = "".concat(KEPLER_UNFOLDED_BUCKET, "/geodude");
24
+ var DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbox.com';
25
+ var TRANSITION_DURATION = exports.TRANSITION_DURATION = 0;
26
+
27
+ // Modal Ids
28
+ /**
29
+ * Modal id: data table
30
+ * @constant
31
+ * @type {string}
32
+ * @public
33
+ */
34
+ var DATA_TABLE_ID = exports.DATA_TABLE_ID = 'dataTable';
35
+ /**
36
+ * Modal id: delete dataset confirm dialog
37
+ * @constant
38
+ * @type {string}
39
+ * @public
40
+ */
41
+ var DELETE_DATA_ID = exports.DELETE_DATA_ID = 'deleteData';
42
+ /**
43
+ * Modal id: add data modal
44
+ * @constant
45
+ * @type {string}
46
+ * @public
47
+ */
48
+ var ADD_DATA_ID = exports.ADD_DATA_ID = 'addData';
49
+ /**
50
+ * Modal id: export image modal
51
+ * @constant
52
+ * @type {string}
53
+ * @public
54
+ */
55
+ var EXPORT_IMAGE_ID = exports.EXPORT_IMAGE_ID = 'exportImage';
56
+ /**
57
+ * Modal id: export data modal
58
+ * @constant
59
+ * @type {string}
60
+ * @public
61
+ */
62
+ var EXPORT_DATA_ID = exports.EXPORT_DATA_ID = 'exportData';
63
+ /**
64
+ * Modal id: add custom map style modal
65
+ * @constant
66
+ * @type {string}
67
+ * @public
68
+ */
69
+ var ADD_MAP_STYLE_ID = exports.ADD_MAP_STYLE_ID = 'addMapStyle';
70
+ /**
71
+ * Modal id: export map modal
72
+ * @constant
73
+ * @type {string}
74
+ * @public
75
+ */
76
+ var EXPORT_MAP_ID = exports.EXPORT_MAP_ID = 'exportMap';
77
+ /**
78
+ * Modal id: save map modal
79
+ * @constant
80
+ * @type {string}
81
+ * @public
82
+ */
83
+ var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
84
+ /**
85
+ * Modal id: confirm to overwrite saved map
86
+ * @constant
87
+ * @type {string}
88
+ * @public
89
+ */
90
+ var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
91
+ /**
92
+ * Modal id: share map url modal
93
+ * @constant
94
+ * @type {string}
95
+ * @public
96
+ */
97
+ var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
98
+ var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
99
+
100
+ // __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
101
+ // Since we are injecting this during the build process with babel
102
+ // while developing VERSION is not defined, we capture the exception and return
103
+ // an empty string which will allow us to retrieve the latest umd version
104
+ var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.1.0-alpha.3";
105
+ var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
106
+ var DIMENSIONS = exports.DIMENSIONS = {
107
+ sidePanel: {
108
+ width: 300,
109
+ margin: {
110
+ top: 20,
111
+ left: 20,
112
+ bottom: 30,
113
+ right: 20
114
+ },
115
+ headerHeight: 96
116
+ },
117
+ mapControl: {
118
+ width: 184,
119
+ padding: 12,
120
+ mapLegend: {
121
+ pinned: {
122
+ bottom: 22,
123
+ right: 12
124
+ }
125
+ }
126
+ }
127
+ };
128
+
129
+ /**
130
+ * Theme name that can be passed to `KeplerGl` `prop.theme`.
131
+ * Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
132
+ * @constant
133
+ * @type {object}
134
+ * @public
135
+ * @example
136
+ * ```js
137
+ * const Map = () => <KeplerGl theme={THEME.light} id="map"/>
138
+ * ```
139
+ */
140
+ var THEME = exports.THEME = (0, _keymirror["default"])({
141
+ light: null,
142
+ dark: null,
143
+ base: null
144
+ });
145
+ var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
146
+ id: 'layer',
147
+ label: 'sidebar.panels.layer',
148
+ onClick: null
149
+ }, {
150
+ id: 'filter',
151
+ label: 'sidebar.panels.filter',
152
+ onClick: null
153
+ }, {
154
+ id: 'interaction',
155
+ label: 'sidebar.panels.interaction',
156
+ onClick: null
157
+ }, {
158
+ id: 'map',
159
+ label: 'sidebar.panels.basemap',
160
+ onClick: null
161
+ }];
162
+ var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
163
+ list: null,
164
+ byDataset: null
165
+ });
166
+
167
+ // backward compatibility
168
+ var PANELS = exports.PANELS = SIDEBAR_PANELS;
169
+
170
+ // MAP STYLES
171
+
172
+ var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
173
+ var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
174
+
175
+ // assists in identifying basemap background layers when auto-determining the backgroundColor
176
+ var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
177
+ var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
178
+ var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
179
+ var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
180
+ slug: BACKGROUND_LAYER_GROUP_SLUG,
181
+ filter: function filter() {
182
+ return false;
183
+ },
184
+ defaultVisibility: false,
185
+ isVisibilityToggleAvailable: false,
186
+ isMoveToTopAvailable: false,
187
+ isColorPickerAvailable: true
188
+ };
189
+ var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
190
+ slug: 'label',
191
+ filter: function filter(_ref) {
192
+ var id = _ref.id;
193
+ return id.match(/(?=(label|place-|poi-))/);
194
+ },
195
+ defaultVisibility: true,
196
+ isVisibilityToggleAvailable: true,
197
+ isMoveToTopAvailable: true,
198
+ isColorPickerAvailable: false
199
+ }, {
200
+ slug: 'road',
201
+ filter: function filter(_ref2) {
202
+ var id = _ref2.id;
203
+ return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
204
+ },
205
+ defaultVisibility: true,
206
+ isVisibilityToggleAvailable: true,
207
+ isMoveToTopAvailable: true,
208
+ isColorPickerAvailable: false
209
+ }, {
210
+ slug: 'border',
211
+ filter: function filter(_ref3) {
212
+ var id = _ref3.id;
213
+ return id.match(/border|boundaries|boundary/);
214
+ },
215
+ defaultVisibility: false,
216
+ isVisibilityToggleAvailable: true,
217
+ isMoveToTopAvailable: true,
218
+ isColorPickerAvailable: false
219
+ }, {
220
+ slug: 'building',
221
+ filter: function filter(_ref4) {
222
+ var id = _ref4.id;
223
+ return id.match(/building/);
224
+ },
225
+ defaultVisibility: true,
226
+ isVisibilityToggleAvailable: true,
227
+ isMoveToTopAvailable: true,
228
+ isColorPickerAvailable: false
229
+ }, {
230
+ slug: 'water',
231
+ filter: function filter(_ref5) {
232
+ var id = _ref5.id;
233
+ return id.match(/(?=(water|stream|ferry))/);
234
+ },
235
+ defaultVisibility: true,
236
+ isVisibilityToggleAvailable: true,
237
+ isMoveToTopAvailable: true,
238
+ isColorPickerAvailable: false
239
+ }, {
240
+ slug: 'land',
241
+ filter: function filter(_ref6) {
242
+ var id = _ref6.id;
243
+ return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
244
+ },
245
+ defaultVisibility: true,
246
+ isVisibilityToggleAvailable: true,
247
+ isMoveToTopAvailable: true,
248
+ isColorPickerAvailable: false
249
+ }, {
250
+ slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
251
+ filter: function filter() {
252
+ return false;
253
+ },
254
+ defaultVisibility: false,
255
+ isVisibilityToggleAvailable: true,
256
+ isMoveToTopAvailable: true,
257
+ isColorPickerAvailable: true
258
+ }];
259
+ var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
260
+ NONE: null,
261
+ DARK: null,
262
+ LIGHT: null
263
+ });
264
+ var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
265
+
266
+ // Fallback style to use when styles are being fetched, or when
267
+ // a style fails to fetch
268
+ var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
269
+ version: 8,
270
+ sources: {},
271
+ layers: []
272
+ };
273
+ var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
274
+ var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [{
275
+ id: NO_MAP_ID,
276
+ label: 'No Basemap',
277
+ url: '',
278
+ icon: NO_BASEMAP_ICON,
279
+ layerGroups: [BACKGROUND_LAYER_GROUP],
280
+ colorMode: BASE_MAP_COLOR_MODES.NONE,
281
+ style: EMPTY_MAPBOX_STYLE
282
+ }, {
283
+ id: 'dark-matter',
284
+ label: 'DarkMatter',
285
+ url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
286
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
287
+ layerGroups: DEFAULT_LAYER_GROUPS,
288
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
289
+ complimentaryStyleId: 'positron'
290
+ }, {
291
+ id: 'dark-matter-nolabels',
292
+ label: 'DarkMatterNoLabels',
293
+ url: 'https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json',
294
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER_NOLABELS.png"),
295
+ layerGroups: DEFAULT_LAYER_GROUPS,
296
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
297
+ complimentaryStyleId: 'positron-nolabels'
298
+ }, {
299
+ id: 'positron',
300
+ label: 'Positron',
301
+ url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
302
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
303
+ layerGroups: DEFAULT_LAYER_GROUPS,
304
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
305
+ complimentaryStyleId: 'dark-matter'
306
+ }, {
307
+ id: 'positron-nolabels',
308
+ label: 'PositronNoLabels',
309
+ url: 'https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json',
310
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON_NOLABELS.png"),
311
+ layerGroups: DEFAULT_LAYER_GROUPS,
312
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
313
+ complimentaryStyleId: 'dark-matter-nolabels'
314
+ }, {
315
+ id: 'voyager',
316
+ label: 'Voyager',
317
+ url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
318
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
319
+ layerGroups: DEFAULT_LAYER_GROUPS,
320
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
321
+ complimentaryStyleId: 'dark-matter'
322
+ }, {
323
+ id: 'voyager-nolabels',
324
+ label: 'VoyagerNoLabels',
325
+ url: 'https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json',
326
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER_NOLABELS.png"),
327
+ layerGroups: DEFAULT_LAYER_GROUPS,
328
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
329
+ complimentaryStyleId: 'dark-matter-nolabels'
330
+ }];
331
+ var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
332
+ geojson: ['_geojson', 'all_points', 'geojson']
333
+ };
334
+ var ICON_FIELDS = exports.ICON_FIELDS = {
335
+ icon: ['icon']
336
+ };
337
+ var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
338
+ var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
339
+ var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
340
+ lat0: 'begintrip',
341
+ lng0: 'begintrip',
342
+ lat1: 'dropoff',
343
+ lng1: 'dropoff'
344
+ };
345
+ var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
346
+ range: null,
347
+ select: null,
348
+ input: null,
349
+ timeRange: null,
350
+ multiSelect: null,
351
+ polygon: null
352
+ });
353
+ var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
354
+ side: null,
355
+ enlarged: null,
356
+ minified: null
357
+ });
358
+ var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
359
+ var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
360
+ ordinal: null,
361
+ quantile: null,
362
+ quantize: null,
363
+ linear: null,
364
+ sqrt: null,
365
+ log: null,
366
+ threshold: null,
367
+ custom: null,
368
+ // ordinal domain to linear range
369
+ point: null
370
+ });
371
+ var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
372
+ ordinal: 'Ordinal',
373
+ quantile: 'Quantile',
374
+ quantize: 'Quantize',
375
+ linear: 'Linear',
376
+ sqrt: 'Sqrt',
377
+ log: 'Log',
378
+ threshold: 'Threshold',
379
+ custom: 'Custom Breaks',
380
+ point: 'Point'
381
+ };
382
+ var SCALE_FUNC = exports.SCALE_FUNC = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, SCALE_TYPES.linear, _d3Scale.scaleLinear), SCALE_TYPES.quantize, _d3Scale.scaleQuantize), SCALE_TYPES.quantile, _d3Scale.scaleQuantile), SCALE_TYPES.ordinal, _d3Scale.scaleOrdinal), SCALE_TYPES.sqrt, _d3Scale.scaleSqrt), SCALE_TYPES.log, _d3Scale.scaleLog), SCALE_TYPES.point, _d3Scale.scalePoint), SCALE_TYPES.threshold, _d3Scale.scaleThreshold), SCALE_TYPES.custom, _d3Scale.scaleThreshold);
383
+ var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
384
+ "boolean": null,
385
+ date: null,
386
+ geojson: null,
387
+ integer: null,
388
+ real: null,
389
+ string: null,
390
+ timestamp: null,
391
+ point: null,
392
+ array: null,
393
+ object: null,
394
+ geoarrow: null,
395
+ h3: null
396
+ });
397
+
398
+ // Data Table
399
+ var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
400
+ ASCENDING: null,
401
+ DESCENDING: null,
402
+ UNSORT: null
403
+ });
404
+ var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
405
+ SORT_ASC: null,
406
+ SORT_DES: null,
407
+ UNSORT: null,
408
+ PIN: null,
409
+ UNPIN: null,
410
+ COPY: null,
411
+ FORMAT_COLUMN: null
412
+ });
413
+ var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
414
+ value: TABLE_OPTION.SORT_ASC,
415
+ display: 'Sort Ascending',
416
+ icon: 'ArrowUp',
417
+ condition: function condition(props) {
418
+ return props.sortMode !== SORT_ORDER.ASCENDING;
419
+ }
420
+ }, {
421
+ value: TABLE_OPTION.SORT_DES,
422
+ display: 'Sort Descending',
423
+ icon: 'ArrowDown',
424
+ condition: function condition(props) {
425
+ return props.sortMode !== SORT_ORDER.DESCENDING;
426
+ }
427
+ }, {
428
+ value: TABLE_OPTION.UNSORT,
429
+ display: 'Unsort Column',
430
+ icon: 'Cancel',
431
+ condition: function condition(props) {
432
+ return props.isSorted;
433
+ }
434
+ }, {
435
+ value: TABLE_OPTION.PIN,
436
+ display: 'Pin Column',
437
+ icon: 'Pin',
438
+ condition: function condition(props) {
439
+ return !props.isPinned;
440
+ }
441
+ }, {
442
+ value: TABLE_OPTION.UNPIN,
443
+ display: 'Unpin Column',
444
+ icon: 'Cancel',
445
+ condition: function condition(props) {
446
+ return props.isPinned;
447
+ }
448
+ }, {
449
+ value: TABLE_OPTION.COPY,
450
+ display: 'Copy Column',
451
+ icon: 'Clipboard'
452
+ }, {
453
+ value: TABLE_OPTION.FORMAT_COLUMN,
454
+ display: 'Format Column',
455
+ icon: 'Hash'
456
+ }];
457
+ var YELLOW = '248, 194, 28';
458
+ var PINK = '242, 152, 163';
459
+ var PURPLE = '160, 106, 206';
460
+ var BLUE = '140, 210, 205';
461
+ var BLUE2 = '106, 160, 206';
462
+ var BLUE3 = '0, 172, 237';
463
+ var GREEN = '106, 160, 56';
464
+ var GREEN2 = '74, 165, 150';
465
+ var RED = '237, 88, 106';
466
+ var ORANGE = '231, 110, 58';
467
+ var FIELD_TYPE_DISPLAY = exports.FIELD_TYPE_DISPLAY = (_FIELD_TYPE_DISPLAY = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES["boolean"], {
468
+ label: 'bool',
469
+ color: PINK
470
+ }), ALL_FIELD_TYPES.date, {
471
+ label: 'date',
472
+ color: PURPLE
473
+ }), ALL_FIELD_TYPES.geojson, {
474
+ label: 'geo',
475
+ color: BLUE2
476
+ }), ALL_FIELD_TYPES.geoarrow, {
477
+ label: 'geo',
478
+ color: BLUE2
479
+ }), ALL_FIELD_TYPES.integer, {
480
+ label: 'int',
481
+ color: YELLOW
482
+ }), ALL_FIELD_TYPES.real, {
483
+ label: 'float',
484
+ color: YELLOW
485
+ }), ALL_FIELD_TYPES.string, {
486
+ label: 'string',
487
+ color: BLUE
488
+ }), ALL_FIELD_TYPES.timestamp, {
489
+ label: 'time',
490
+ color: GREEN
491
+ }), ALL_FIELD_TYPES.point, {
492
+ label: 'point',
493
+ color: BLUE3
494
+ }), ALL_FIELD_TYPES.array, {
495
+ label: 'array',
496
+ color: ORANGE
497
+ }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
498
+ label: 'object',
499
+ color: GREEN2
500
+ }), ALL_FIELD_TYPES.h3, {
501
+ label: 'h3',
502
+ color: BLUE
503
+ }));
504
+ var FIELD_COLORS = exports.FIELD_COLORS = {
505
+ "default": RED
506
+ };
507
+ var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
508
+ var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
509
+ color: null,
510
+ radius: null,
511
+ size: null,
512
+ colorAggr: null,
513
+ sizeAggr: null
514
+ });
515
+ var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
516
+ // default
517
+ count: 'count',
518
+ // linear
519
+ average: 'average',
520
+ maximum: 'maximum',
521
+ minimum: 'minimum',
522
+ median: 'median',
523
+ stdev: 'stdev',
524
+ sum: 'sum',
525
+ variance: 'variance',
526
+ // ordinal
527
+ mode: 'mode',
528
+ countUnique: 'countUnique'
529
+ };
530
+ var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
531
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
532
+ key = _ref8[0],
533
+ value = _ref8[1];
534
+ return {
535
+ id: key,
536
+ label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
537
+ };
538
+ });
539
+ var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]), CHANNEL_SCALES.radius, [SCALE_TYPES.sqrt]), CHANNEL_SCALES.size, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]);
540
+ var linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.median, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.sum, [SCALE_TYPES.quantize, SCALE_TYPES.quantile]), AGGREGATION_TYPES.variance, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.median, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.sum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.variance, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
541
+ var ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.ordinal]), CHANNEL_SCALES.radius, [SCALE_TYPES.point]), CHANNEL_SCALES.size, [SCALE_TYPES.point]);
542
+ var ordinalFieldAggrScaleFunctions = exports.ordinalFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.mode, [SCALE_TYPES.ordinal]), AGGREGATION_TYPES.countUnique, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, {});
543
+ var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
544
+ var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
545
+
546
+ /**
547
+ * Default aggregation are based on ocunt
548
+ */
549
+ var DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
550
+
551
+ /**
552
+ * Define what type of scale operation is allowed on each type of fields
553
+ */
554
+ var FIELD_OPTS = exports.FIELD_OPTS = (_FIELD_OPTS = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.string, {
555
+ type: 'categorical',
556
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
557
+ format: {
558
+ legend: function legend(d) {
559
+ return d;
560
+ },
561
+ tooltip: []
562
+ }
563
+ }), ALL_FIELD_TYPES.real, {
564
+ type: 'numerical',
565
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
566
+ format: {
567
+ legend: function legend(d) {
568
+ return d;
569
+ },
570
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
571
+ }
572
+ }), ALL_FIELD_TYPES.timestamp, {
573
+ type: 'time',
574
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
575
+ format: {
576
+ legend: function legend(d) {
577
+ return d;
578
+ },
579
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
580
+ }
581
+ }), ALL_FIELD_TYPES.integer, {
582
+ type: 'numerical',
583
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
584
+ format: {
585
+ legend: function legend(d) {
586
+ return d;
587
+ },
588
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
589
+ }
590
+ }), ALL_FIELD_TYPES["boolean"], {
591
+ type: 'boolean',
592
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
593
+ format: {
594
+ legend: function legend(d) {
595
+ return d;
596
+ },
597
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
598
+ }
599
+ }), ALL_FIELD_TYPES.date, {
600
+ type: 'time',
601
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
602
+ format: {
603
+ legend: function legend(d) {
604
+ return d;
605
+ },
606
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
607
+ }
608
+ }), ALL_FIELD_TYPES.geojson, {
609
+ type: 'geometry',
610
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
611
+ format: {
612
+ legend: function legend() {
613
+ return '...';
614
+ },
615
+ tooltip: []
616
+ }
617
+ }), ALL_FIELD_TYPES.geoarrow, {
618
+ type: 'geometry',
619
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
620
+ format: {
621
+ legend: function legend() {
622
+ return '...';
623
+ },
624
+ tooltip: []
625
+ }
626
+ }), ALL_FIELD_TYPES.object, {
627
+ type: 'numerical',
628
+ scale: {},
629
+ format: {
630
+ legend: function legend() {
631
+ return '...';
632
+ },
633
+ tooltip: []
634
+ }
635
+ }), ALL_FIELD_TYPES.array, {
636
+ type: 'numerical',
637
+ scale: {},
638
+ format: {
639
+ legend: function legend() {
640
+ return '...';
641
+ },
642
+ tooltip: []
643
+ }
644
+ }), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
645
+ type: 'h3',
646
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
647
+ format: {
648
+ legend: function legend(d) {
649
+ return '...';
650
+ },
651
+ tooltip: []
652
+ }
653
+ }));
654
+ var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
655
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
656
+ return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
657
+ })));
658
+ }, {});
659
+ var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
660
+ tripArc: '#9226C6',
661
+ begintrip_lat: '#1E96BE',
662
+ dropoff_lat: '#FF991F',
663
+ request_lat: '#52A353'
664
+ };
665
+ var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
666
+ var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
667
+
668
+ // let user pass in default tooltip fields
669
+ var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
670
+ var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
671
+ var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
672
+ var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
673
+ normal: {
674
+ label: 'overlayBlending.normal',
675
+ value: 'normal'
676
+ },
677
+ screen: {
678
+ label: 'overlayBlending.screen',
679
+ value: 'screen'
680
+ },
681
+ darken: {
682
+ label: 'overlayBlending.darken',
683
+ value: 'darken'
684
+ }
685
+ };
686
+ var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
687
+ additive: {
688
+ label: 'layerBlending.additive',
689
+ blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
690
+ blendEquation: 'FUNC_ADD'
691
+ },
692
+ normal: {
693
+ // reference to
694
+ // https://limnu.com/webgl-blending-youre-probably-wrong/
695
+ label: 'layerBlending.normal',
696
+ blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
697
+ blendEquation: ['FUNC_ADD', 'FUNC_ADD']
698
+ },
699
+ subtractive: {
700
+ label: 'layerBlending.subtractive',
701
+ blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
702
+ blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
703
+ }
704
+ };
705
+ var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
706
+ var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
707
+ ONE_X: null,
708
+ TWO_X: null
709
+ });
710
+ var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
711
+ SCREEN: null,
712
+ FOUR_BY_THREE: null,
713
+ SIXTEEN_BY_NINE: null,
714
+ CUSTOM: null
715
+ });
716
+ var ScreenRatioOption = exports.ScreenRatioOption = {
717
+ id: EXPORT_IMG_RATIOS.SCREEN,
718
+ label: 'modal.exportImage.ratioOriginalScreen',
719
+ getSize: function getSize(screenW, screenH) {
720
+ return {
721
+ width: screenW,
722
+ height: screenH
723
+ };
724
+ }
725
+ };
726
+ var CustomRatioOption = exports.CustomRatioOption = {
727
+ id: EXPORT_IMG_RATIOS.CUSTOM,
728
+ hidden: true,
729
+ label: 'modal.exportImage.ratioCustom',
730
+ getSize: function getSize(mapW, mapH) {
731
+ return {
732
+ width: mapW,
733
+ height: mapH
734
+ };
735
+ }
736
+ };
737
+ var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
738
+ id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
739
+ label: 'modal.exportImage.ratio4_3',
740
+ getSize: function getSize(screenW) {
741
+ return {
742
+ width: screenW,
743
+ height: Math.round(screenW * 0.75)
744
+ };
745
+ }
746
+ };
747
+ var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
748
+ id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
749
+ label: 'modal.exportImage.ratio16_9',
750
+ getSize: function getSize(screenW) {
751
+ return {
752
+ width: screenW,
753
+ height: Math.round(screenW * 0.5625)
754
+ };
755
+ }
756
+ };
757
+ var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, CustomRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption];
758
+ var OneXResolutionOption = exports.OneXResolutionOption = {
759
+ id: RESOLUTIONS.ONE_X,
760
+ label: '1x',
761
+ available: true,
762
+ scale: 1,
763
+ getSize: function getSize(screenW, screenH) {
764
+ return {
765
+ width: screenW,
766
+ height: screenH
767
+ };
768
+ }
769
+ };
770
+ var TwoXResolutionOption = exports.TwoXResolutionOption = {
771
+ id: RESOLUTIONS.TWO_X,
772
+ label: '2x',
773
+ available: true,
774
+ scale: 2,
775
+ getSize: function getSize(screenW, screenH) {
776
+ return {
777
+ width: screenW * 2,
778
+ height: screenH * 2
779
+ };
780
+ }
781
+ };
782
+ var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption];
783
+ var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
784
+ CSV: null
785
+ // SHAPEFILE: null,
786
+ // JSON: null,
787
+ // GEOJSON: null,
788
+ // TOPOJSON: null
789
+ });
790
+ var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
791
+ id: EXPORT_DATA_TYPE.CSV,
792
+ label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
793
+ available: true
794
+ }
795
+ // {
796
+ // id: EXPORT_DATA_TYPE.SHAPEFILE,
797
+ // label: 'shapefile',
798
+ // available: false
799
+ // },
800
+ // {
801
+ // id: EXPORT_DATA_TYPE.JSON,
802
+ // label: 'json',
803
+ // available: false
804
+ // },
805
+ // {
806
+ // id: EXPORT_DATA_TYPE.GEOJSON,
807
+ // label: 'geojson',
808
+ // available: false
809
+ // },
810
+ // {
811
+ // id: EXPORT_DATA_TYPE.TOPOJSON,
812
+ // label: 'topojson',
813
+ // available: false
814
+ // }
815
+ ];
816
+
817
+ // Export map types
818
+ var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
819
+ HTML: null,
820
+ JSON: null
821
+ });
822
+ var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
823
+ READ: null,
824
+ EDIT: null
825
+ });
826
+
827
+ // Export map options
828
+ var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
829
+ return {
830
+ id: entry[0],
831
+ label: entry[1].toLowerCase(),
832
+ available: true
833
+ };
834
+ });
835
+ function getHTMLMapModeTileUrl(mode) {
836
+ return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
837
+ }
838
+ var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
839
+ return {
840
+ id: entry[0],
841
+ label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
842
+ available: true,
843
+ url: getHTMLMapModeTileUrl(entry[1])
844
+ };
845
+ });
846
+ var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
847
+ var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
848
+ var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
849
+ info: null,
850
+ error: null,
851
+ warning: null,
852
+ success: null
853
+ });
854
+ var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
855
+ global: null,
856
+ file: null
857
+ });
858
+
859
+ // Minimum time between identical notifications about deck.gl errors
860
+ var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
861
+
862
+ // Animation
863
+ var BASE_SPEED = exports.BASE_SPEED = 600;
864
+ var FPS = exports.FPS = 60;
865
+
866
+ /**
867
+ * 4 Animation Window Types
868
+ * 1. free
869
+ * |-> |->
870
+ * Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
871
+ * The increment id based on domain / BASE_SPEED * SPEED
872
+ *
873
+ * 2. incremental
874
+ * | |->
875
+ * Same as free, current time is a growing range, only the max value of range increment during animation.
876
+ * The increment is also based on domain / BASE_SPEED * SPEED
877
+ *
878
+ * 3. point
879
+ * o -> o
880
+ * Current time is a point, animation controller calls next animation frame continuously to animation a moving point
881
+ * The increment is based on domain / BASE_SPEED * SPEED
882
+ *
883
+ * 4. interval
884
+ * o ~> o
885
+ * Current time is a point. An array of sorted time steps need to be provided.
886
+ * animation controller calls next animation at a interval when the point jumps to the next step
887
+ */
888
+ var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
889
+ free: null,
890
+ incremental: null,
891
+ point: null,
892
+ interval: null
893
+ });
894
+ var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
895
+ var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
896
+ var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
897
+
898
+ // Geocoder
899
+ var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
900
+ var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
901
+ var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
902
+ var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
903
+ var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 80;
904
+
905
+ // Editor
906
+ var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
907
+ var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
908
+ var EDITOR_MODES = exports.EDITOR_MODES = {
909
+ DRAW_POLYGON: 'DRAW_POLYGON',
910
+ DRAW_RECTANGLE: 'DRAW_RECTANGLE',
911
+ EDIT: 'EDIT_VERTEX'
912
+ };
913
+ var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
914
+ histogram: null,
915
+ lineChart: null
916
+ });
917
+
918
+ // Filter
919
+ var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
920
+
921
+ // GPU Filtering
922
+ /**
923
+ * Max number of filter value buffers that deck.gl provides
924
+ */
925
+ var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
926
+ var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
927
+ width: 300,
928
+ height: 200
929
+ };
930
+ var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
931
+ title: 100,
932
+ description: 100
933
+ };
934
+
935
+ // Load data
936
+ var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
937
+ upload: null,
938
+ storage: null,
939
+ tileset: null
940
+ });
941
+ var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
942
+ var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
943
+ row: null,
944
+ geojson: null,
945
+ csv: null,
946
+ keplergl: null,
947
+ arrow: null
948
+ });
949
+ var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
950
+ visibleLayers: null,
951
+ mapLegend: null,
952
+ toggle3d: null,
953
+ splitMap: null,
954
+ mapDraw: null,
955
+ mapLocale: null,
956
+ effect: null,
957
+ aiAssistant: null
958
+ });
959
+
960
+ /**
961
+ * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
962
+ * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
963
+ * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
964
+ */
965
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
966
+
967
+ /**
968
+ * Maximum value for text outline width
969
+ */
970
+ var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
971
+ var dataTestIds = exports.dataTestIds = {
972
+ infoIcon: 'info-icon',
973
+ warningIcon: 'warning-icon',
974
+ errorIcon: 'error-icon',
975
+ successIcon: 'success-icon',
976
+ checkmarkIcon: 'checkmark-icon',
977
+ sortableLayerItem: 'sortable-layer-item',
978
+ staticLayerItem: 'static-layer-item',
979
+ layerTitleEditor: 'layer__title__editor',
980
+ removeLayerAction: 'remove-layer-action',
981
+ layerPanel: 'layer-panel',
982
+ sortableEffectItem: 'sortable-effect-item',
983
+ staticEffectItem: 'static-effect-item',
984
+ providerLoading: 'provider-loading',
985
+ providerMapInfoPanel: 'provider-map-info-panel',
986
+ providerSelect: 'provider-select',
987
+ cloudHeader: 'cloud-header',
988
+ providerShareMap: 'provider-share-map'
989
+ };
990
+
991
+ // Effects
992
+ var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
993
+ var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
994
+ var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
995
+ var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
996
+ var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
997
+ var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
998
+ var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
999
+ pick: 'pick',
1000
+ current: 'current',
1001
+ animation: 'animation'
1002
+ };
1003
+ var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
1004
+ timestamp: Date.now(),
1005
+ timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
1006
+ shadowIntensity: DEFAULT_SHADOW_INTENSITY,
1007
+ shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
1008
+ sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1009
+ sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
1010
+ ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1011
+ ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
1012
+ };
1013
+ var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
1014
+ type: 'lightAndShadow',
1015
+ name: 'Light & Shadow',
1016
+ parameters: [{
1017
+ name: 'timestamp',
1018
+ min: 0,
1019
+ max: Number.MAX_SAFE_INTEGER
1020
+ }, {
1021
+ name: 'shadowIntensity',
1022
+ min: 0,
1023
+ max: 1,
1024
+ defaultValue: DEFAULT_SHADOW_INTENSITY
1025
+ }, {
1026
+ name: 'sunLightIntensity',
1027
+ min: 0,
1028
+ max: 1,
1029
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1030
+ }, {
1031
+ name: 'ambientLightIntensity',
1032
+ min: 0,
1033
+ max: 1,
1034
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1035
+ }, {
1036
+ name: 'shadowColor',
1037
+ type: 'color',
1038
+ min: 0,
1039
+ max: 255,
1040
+ defaultValue: DEFAULT_SHADOW_COLOR
1041
+ }, {
1042
+ name: 'sunLightColor',
1043
+ type: 'color',
1044
+ min: 0,
1045
+ max: 255,
1046
+ defaultValue: DEFAULT_LIGHT_COLOR
1047
+ }, {
1048
+ name: 'ambientLightColor',
1049
+ type: 'color',
1050
+ min: 0,
1051
+ max: 255,
1052
+ defaultValue: DEFAULT_LIGHT_COLOR
1053
+ }]
1054
+ };
1055
+ var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
1056
+ ink: {
1057
+ type: 'ink',
1058
+ name: 'Ink',
1059
+ parameters: [{
1060
+ name: 'strength',
1061
+ min: 0,
1062
+ max: 1
1063
+ }]
1064
+ },
1065
+ brightnessContrast: {
1066
+ type: 'brightnessContrast',
1067
+ name: 'Brightness & Contrast',
1068
+ parameters: [{
1069
+ name: 'brightness',
1070
+ min: -1,
1071
+ max: 1
1072
+ }, {
1073
+ name: 'contrast',
1074
+ min: -1,
1075
+ max: 1
1076
+ }]
1077
+ },
1078
+ hueSaturation: {
1079
+ type: 'hueSaturation',
1080
+ name: 'Hue & Saturation',
1081
+ parameters: [{
1082
+ name: 'hue',
1083
+ min: -1,
1084
+ max: 1
1085
+ }, {
1086
+ name: 'saturation',
1087
+ defaultValue: 0.25,
1088
+ min: -1,
1089
+ max: 1
1090
+ }]
1091
+ },
1092
+ vibrance: {
1093
+ type: 'vibrance',
1094
+ name: 'Vibrance',
1095
+ parameters: [{
1096
+ name: 'amount',
1097
+ defaultValue: 0.5,
1098
+ min: -1,
1099
+ max: 1
1100
+ }]
1101
+ },
1102
+ sepia: {
1103
+ type: 'sepia',
1104
+ name: 'Sepia',
1105
+ parameters: [{
1106
+ name: 'amount',
1107
+ min: 0,
1108
+ max: 1
1109
+ }]
1110
+ },
1111
+ dotScreen: {
1112
+ type: 'dotScreen',
1113
+ name: 'Dot Screen',
1114
+ parameters: [{
1115
+ name: 'angle',
1116
+ min: 0,
1117
+ max: Math.PI / 2
1118
+ }, {
1119
+ name: 'size',
1120
+ min: 1,
1121
+ max: 20
1122
+ }, {
1123
+ name: 'center',
1124
+ type: 'array',
1125
+ label: ['Center X', 'Center Y'],
1126
+ defaultValue: [0.5, 0.5],
1127
+ min: 0,
1128
+ max: 1
1129
+ }]
1130
+ },
1131
+ colorHalftone: {
1132
+ type: 'colorHalftone',
1133
+ name: 'Color Halftone',
1134
+ parameters: [{
1135
+ name: 'angle',
1136
+ min: 0,
1137
+ max: Math.PI / 2
1138
+ }, {
1139
+ name: 'size',
1140
+ min: 1,
1141
+ max: 20
1142
+ }, {
1143
+ name: 'center',
1144
+ type: 'array',
1145
+ label: ['Center X', 'Center Y'],
1146
+ defaultValue: [0.5, 0.5],
1147
+ min: 0,
1148
+ max: 1
1149
+ }]
1150
+ },
1151
+ noise: {
1152
+ type: 'noise',
1153
+ name: 'Noise',
1154
+ parameters: [{
1155
+ name: 'amount',
1156
+ min: 0,
1157
+ max: 1
1158
+ }]
1159
+ },
1160
+ triangleBlur: {
1161
+ type: 'triangleBlur',
1162
+ name: 'Blur (Triangle)',
1163
+ parameters: [{
1164
+ name: 'radius',
1165
+ min: 0,
1166
+ max: 100
1167
+ }]
1168
+ },
1169
+ zoomBlur: {
1170
+ type: 'zoomBlur',
1171
+ name: 'Blur (Zoom)',
1172
+ parameters: [{
1173
+ name: 'strength',
1174
+ defaultValue: 0.05,
1175
+ min: 0,
1176
+ max: 1
1177
+ }, {
1178
+ name: 'center',
1179
+ type: 'array',
1180
+ label: ['Center X', 'Center Y'],
1181
+ defaultValue: [0.5, 0.5],
1182
+ min: 0,
1183
+ max: 1
1184
+ }]
1185
+ },
1186
+ tiltShift: {
1187
+ type: 'tiltShift',
1188
+ name: 'Blur (Tilt Shift)',
1189
+ parameters: [{
1190
+ name: 'blurRadius',
1191
+ label: 'Blur',
1192
+ min: 0,
1193
+ max: 50
1194
+ }, {
1195
+ name: 'gradientRadius',
1196
+ label: 'Gradient',
1197
+ min: 0,
1198
+ max: 400
1199
+ }, {
1200
+ name: 'start',
1201
+ type: 'array',
1202
+ label: ['Start', false],
1203
+ defaultValue: [0.0, 0.0],
1204
+ min: 0,
1205
+ max: 1
1206
+ }, {
1207
+ name: 'end',
1208
+ type: 'array',
1209
+ label: ['End', false],
1210
+ defaultValue: [1, 1],
1211
+ min: 0,
1212
+ max: 1
1213
+ }]
1214
+ },
1215
+ edgeWork: {
1216
+ type: 'edgeWork',
1217
+ name: 'Edge work',
1218
+ parameters: [{
1219
+ name: 'radius',
1220
+ min: 1,
1221
+ max: 50
1222
+ }]
1223
+ },
1224
+ vignette: {
1225
+ type: 'vignette',
1226
+ name: 'Vignette',
1227
+ parameters: [{
1228
+ name: 'amount',
1229
+ min: 0,
1230
+ max: 1
1231
+ }, {
1232
+ name: 'radius',
1233
+ min: 0,
1234
+ max: 1
1235
+ }]
1236
+ },
1237
+ magnify: {
1238
+ type: 'magnify',
1239
+ name: 'Magnify',
1240
+ parameters: [{
1241
+ name: 'screenXY',
1242
+ type: 'array',
1243
+ label: ['Position X', 'Position Y'],
1244
+ defaultValue: [0.5, 0.5],
1245
+ min: 0,
1246
+ max: 1
1247
+ }, {
1248
+ name: 'radiusPixels',
1249
+ label: 'Size',
1250
+ min: 10,
1251
+ max: 500
1252
+ }, {
1253
+ name: 'zoom',
1254
+ min: 0.5,
1255
+ max: 50
1256
+ }, {
1257
+ name: 'borderWidthPixels',
1258
+ label: 'Border Width',
1259
+ defaultValue: 3,
1260
+ min: 0,
1261
+ max: 50
1262
+ }]
1263
+ },
1264
+ hexagonalPixelate: {
1265
+ type: 'hexagonalPixelate',
1266
+ name: 'Hexagonal Pixelate',
1267
+ parameters: [{
1268
+ name: 'scale',
1269
+ defaultValue: 20,
1270
+ min: 1,
1271
+ max: 50
1272
+ }]
1273
+ }
1274
+ };
1275
+ var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
1276
+ return POSTPROCESSING_EFFECTS[keyName];
1277
+ })));
1278
+ var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
1279
+ start: 0,
1280
+ end: 1
1281
+ };
1282
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiY29uY2F0IiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwibWF0Y2giLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiQkFTRV9NQVBfQ09MT1JfTU9ERVMiLCJOT05FIiwiREFSSyIsIkxJR0hUIiwiTk9fTUFQX0lEIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwidmVyc2lvbiIsInNvdXJjZXMiLCJsYXllcnMiLCJOT19CQVNFTUFQX0lDT04iLCJERUZBVUxUX01BUF9TVFlMRVMiLCJ1cmwiLCJpY29uIiwibGF5ZXJHcm91cHMiLCJjb2xvck1vZGUiLCJzdHlsZSIsImNvbXBsaW1lbnRhcnlTdHlsZUlkIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9qc29uIiwiSUNPTl9GSUVMRFMiLCJUUklQX1BPSU5UX0ZJRUxEUyIsIkFMVElUVURFX0ZJRUxEUyIsIlRSSVBfQVJDX0ZJRUxEUyIsImxhdDAiLCJsbmcwIiwibGF0MSIsImxuZzEiLCJGSUxURVJfVFlQRVMiLCJyYW5nZSIsInNlbGVjdCIsImlucHV0IiwidGltZVJhbmdlIiwibXVsdGlTZWxlY3QiLCJwb2x5Z29uIiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJzaWRlIiwiZW5sYXJnZWQiLCJtaW5pZmllZCIsIkRFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwidGhyZXNob2xkIiwiY3VzdG9tIiwicG9pbnQiLCJTQ0FMRV9UWVBFX05BTUVTIiwiU0NBTEVfRlVOQyIsInNjYWxlTGluZWFyIiwic2NhbGVRdWFudGl6ZSIsInNjYWxlUXVhbnRpbGUiLCJzY2FsZU9yZGluYWwiLCJzY2FsZVNxcnQiLCJzY2FsZUxvZyIsInNjYWxlUG9pbnQiLCJzY2FsZVRocmVzaG9sZCIsIkFMTF9GSUVMRF9UWVBFUyIsImRhdGUiLCJpbnRlZ2VyIiwicmVhbCIsInN0cmluZyIsInRpbWVzdGFtcCIsImFycmF5Iiwib2JqZWN0IiwiZ2VvYXJyb3ciLCJoMyIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJERVNDRU5ESU5HIiwiVU5TT1JUIiwiVEFCTEVfT1BUSU9OIiwiU09SVF9BU0MiLCJTT1JUX0RFUyIsIlBJTiIsIlVOUElOIiwiQ09QWSIsIkZPUk1BVF9DT0xVTU4iLCJUQUJMRV9PUFRJT05fTElTVCIsInZhbHVlIiwiZGlzcGxheSIsImNvbmRpdGlvbiIsInByb3BzIiwic29ydE1vZGUiLCJpc1NvcnRlZCIsImlzUGlubmVkIiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJBR0dSRUdBVElPTl9UWVBFUyIsImNvdW50IiwiYXZlcmFnZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSIsIm1vZGUiLCJjb3VudFVuaXF1ZSIsIkFHR1JFR0FUSU9OX1RZUEVfT1BUSU9OUyIsImVudHJpZXMiLCJtYXAiLCJfcmVmNyIsIl9yZWY4IiwiX3NsaWNlZFRvQXJyYXkyIiwia2V5IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMiLCJsaW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zIiwib3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zIiwibm90U3VwcG9ydGVkU2NhbGVPcHRzIiwibm90U3VwcG9ydEFnZ3JPcHRzIiwiREVGQVVMVF9BR0dSRUdBVElPTiIsIkZJRUxEX09QVFMiLCJ0eXBlIiwic2NhbGUiLCJmb3JtYXQiLCJsZWdlbmQiLCJkIiwidG9vbHRpcCIsIlRPT0xUSVBfRk9STUFUX1RZUEVTIiwiREVDSU1BTCIsIlBFUkNFTlRBR0UiLCJEQVRFIiwiREFURV9USU1FIiwiQk9PTEVBTiIsIkNIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyIsInJlZHVjZSIsImFjY3UiLCJmdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJ0cmlwQXJjIiwiYmVnaW50cmlwX2xhdCIsImRyb3BvZmZfbGF0IiwicmVxdWVzdF9sYXQiLCJERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUiLCJERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEVfU1RFUFMiLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiTk9fVkFMVUVfQ09MT1IiLCJERUZBVUxUX1BJQ0tJTkdfUkFESVVTIiwiT1ZFUkxBWV9CTEVORElOR1MiLCJub3JtYWwiLCJzY3JlZW4iLCJkYXJrZW4iLCJMQVlFUl9CTEVORElOR1MiLCJhZGRpdGl2ZSIsImJsZW5kRnVuYyIsImJsZW5kRXF1YXRpb24iLCJzdWJ0cmFjdGl2ZSIsIk1BWF9ERUZBVUxUX1RPT0xUSVBTIiwiUkVTT0xVVElPTlMiLCJPTkVfWCIsIlRXT19YIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJTQ1JFRU4iLCJGT1VSX0JZX1RIUkVFIiwiU0lYVEVFTl9CWV9OSU5FIiwiQ1VTVE9NIiwiU2NyZWVuUmF0aW9PcHRpb24iLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJDdXN0b21SYXRpb09wdGlvbiIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsIk1hdGgiLCJyb3VuZCIsIlNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbiIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiYXZhaWxhYmxlIiwiVHdvWFJlc29sdXRpb25PcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJlZmZlY3QiLCJhaUFzc2lzdGFudCIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJURVhUX09VVExJTkVfTVVMVElQTElFUiIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nSWNvbiIsImVycm9ySWNvbiIsInN1Y2Nlc3NJY29uIiwiY2hlY2ttYXJrSWNvbiIsInNvcnRhYmxlTGF5ZXJJdGVtIiwic3RhdGljTGF5ZXJJdGVtIiwibGF5ZXJUaXRsZUVkaXRvciIsInJlbW92ZUxheWVyQWN0aW9uIiwibGF5ZXJQYW5lbCIsInNvcnRhYmxlRWZmZWN0SXRlbSIsInN0YXRpY0VmZmVjdEl0ZW0iLCJwcm92aWRlckxvYWRpbmciLCJwcm92aWRlck1hcEluZm9QYW5lbCIsInByb3ZpZGVyU2VsZWN0IiwiY2xvdWRIZWFkZXIiLCJwcm92aWRlclNoYXJlTWFwIiwiREVGQVVMVF9USU1FWk9ORSIsIkRFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFIiwiREVGQVVMVF9MSUdIVF9DT0xPUiIsIkRFRkFVTFRfTElHSFRfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfQ09MT1IiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTIiwicGljayIsImN1cnJlbnQiLCJhbmltYXRpb24iLCJERUZBVUxUX0xJR0hUX0FORF9TSEFET1dfUFJPUFMiLCJEYXRlIiwibm93IiwidGltZU1vZGUiLCJzaGFkb3dJbnRlbnNpdHkiLCJzaGFkb3dDb2xvciIsInN1bkxpZ2h0Q29sb3IiLCJzdW5MaWdodEludGVuc2l0eSIsImFtYmllbnRMaWdodENvbG9yIiwiYW1iaWVudExpZ2h0SW50ZW5zaXR5IiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJuYW1lIiwicGFyYW1ldGVycyIsIm1pbiIsIm1heCIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJkZWZhdWx0VmFsdWUiLCJQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTIiwiaW5rIiwiYnJpZ2h0bmVzc0NvbnRyYXN0IiwiaHVlU2F0dXJhdGlvbiIsInZpYnJhbmNlIiwic2VwaWEiLCJkb3RTY3JlZW4iLCJQSSIsImNvbG9ySGFsZnRvbmUiLCJub2lzZSIsInRyaWFuZ2xlQmx1ciIsInpvb21CbHVyIiwidGlsdFNoaWZ0IiwiZWRnZVdvcmsiLCJ2aWduZXR0ZSIsIm1hZ25pZnkiLCJoZXhhZ29uYWxQaXhlbGF0ZSIsIkVGRkVDVF9ERVNDUklQVElPTlMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtCYXNlTWFwU3R5bGUsIEVmZmVjdERlc2NyaXB0aW9uLCBSR0JBQ29sb3IsIFN5bmNUaW1lbGluZU1vZGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgc2NhbGVMaW5lYXIsXG4gIHNjYWxlTG9nLFxuICBzY2FsZU9yZGluYWwsXG4gIHNjYWxlUG9pbnQsXG4gIHNjYWxlUXVhbnRpbGUsXG4gIHNjYWxlUXVhbnRpemUsXG4gIHNjYWxlU3FydCxcbiAgc2NhbGVUaHJlc2hvbGRcbn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVF9UWVBFU30gZnJvbSAnLi90b29sdGlwJztcblxuZXhwb3J0IGNvbnN0IEFDVElPTl9QUkVGSVggPSAnQEBrZXBsZXIuZ2wvJztcbmV4cG9ydCBjb25zdCBLRVBMRVJfVU5GT0xERURfQlVDS0VUID0gJ2h0dHBzOi8vc3R1ZGlvLXB1YmxpYy1kYXRhLmZvdXJzcXVhcmUuY29tL3N0YXRpY3Mva2VwbGVyZ2wnO1xuZXhwb3J0IGNvbnN0IEJBU0VNQVBfSUNPTl9QUkVGSVggPSBgJHtLRVBMRVJfVU5GT0xERURfQlVDS0VUfS9nZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDIwLCBsZWZ0OiAyMCwgYm90dG9tOiAzMCwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYm9yZGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYm9yZGVyfGJvdW5kYXJpZXN8Ym91bmRhcnkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnbGFuZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShwYXJrc3xsYW5kY292ZXJ8aW5kdXN0cmlhbHxzYW5kfGhpbGxzaGFkZSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcsXG4gICAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IHRydWVcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEJBU0VfTUFQX0NPTE9SX01PREVTID0ga2V5TWlycm9yKHtcbiAgTk9ORTogbnVsbCxcbiAgREFSSzogbnVsbCxcbiAgTElHSFQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTk9fTUFQX0lEID0gJ25vX21hcCc7XG5cbi8vIEZhbGxiYWNrIHN0eWxlIHRvIHVzZSB3aGVuIHN0eWxlcyBhcmUgYmVpbmcgZmV0Y2hlZCwgb3Igd2hlblxuLy8gYSBzdHlsZSBmYWlscyB0byBmZXRjaFxuZXhwb3J0IGNvbnN0IEVNUFRZX01BUEJPWF9TVFlMRSA9IHtcbiAgdmVyc2lvbjogOCxcbiAgc291cmNlczoge30sXG4gIGxheWVyczogW11cbn07XG5cbmV4cG9ydCBjb25zdCBOT19CQVNFTUFQX0lDT04gPSBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9OT19CQVNFTUFQLnBuZ2A7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9TVFlMRVM6IEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6IE5PX01BUF9JRCxcbiAgICBsYWJlbDogJ05vIEJhc2VtYXAnLFxuICAgIHVybDogJycsXG4gICAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICAgIGxheWVyR3JvdXBzOiBbQkFDS0dST1VORF9MQVlFUl9HUk9VUF0sXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5OT05FLFxuICAgIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbiAgfSxcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnLFxuICAgIGxhYmVsOiAnRGFya01hdHRlck5vTGFiZWxzJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC9kYXJrLW1hdHRlci1ub2xhYmVscy1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9EQVJLTUFUVEVSX05PTEFCRUxTLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ3Bvc2l0cm9uLW5vbGFiZWxzJ1xuICB9LFxuICB7XG4gICAgaWQ6ICdwb3NpdHJvbicsXG4gICAgbGFiZWw6ICdQb3NpdHJvbicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvcG9zaXRyb24tZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vUE9TSVRST04ucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9LFxuICB7XG4gICAgaWQ6ICdwb3NpdHJvbi1ub2xhYmVscycsXG4gICAgbGFiZWw6ICdQb3NpdHJvbk5vTGFiZWxzJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC9wb3NpdHJvbi1ub2xhYmVscy1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9QT1NJVFJPTl9OT0xBQkVMUy5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnXG4gIH0sXG4gIHtcbiAgICBpZDogJ3ZveWFnZXInLFxuICAgIGxhYmVsOiAnVm95YWdlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvdm95YWdlci1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9WT1lBR0VSLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlci1ub2xhYmVscycsXG4gICAgbGFiZWw6ICdWb3lhZ2VyTm9MYWJlbHMnLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3ZveWFnZXItbm9sYWJlbHMtZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVk9ZQUdFUl9OT0xBQkVMUy5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnZGFyay1tYXR0ZXItbm9sYWJlbHMnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnbGF0JywgJ2xuZyddLFxuICBbJ2xhdCcsICdsb24nXSxcbiAgWydsYXQnLCAnbG9uZyddLFxuICBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddXG5dO1xuXG5leHBvcnQgY29uc3QgQUxUSVRVREVfRklFTERTID0gWydhbHQnLCAnYWx0aXR1ZGUnXTtcbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVklFV19UWVBFUyA9IGtleU1pcnJvcih7XG4gIHNpZGU6IG51bGwsXG4gIGVubGFyZ2VkOiBudWxsLFxuICBtaW5pZmllZDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUgPSBGSUxURVJfVklFV19UWVBFUy5zaWRlO1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9UWVBFU19ERUYgPSB7XG4gIG9yZGluYWw6ICdvcmRpbmFsJztcbiAgcXVhbnRpbGU6ICdxdWFudGlsZSc7XG4gIHF1YW50aXplOiAncXVhbnRpemUnO1xuICBsaW5lYXI6ICdsaW5lYXInO1xuICBzcXJ0OiAnc3FydCc7XG4gIGxvZzogJ2xvZyc7XG4gIHBvaW50OiAncG9pbnQnO1xuICB0aHJlc2hvbGQ6ICd0aHJlc2hvbGQnO1xuICBjdXN0b206ICdjdXN0b20nO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX1RZUEVTOiBTQ0FMRV9UWVBFU19ERUYgPSBrZXlNaXJyb3Ioe1xuICBvcmRpbmFsOiBudWxsLFxuICBxdWFudGlsZTogbnVsbCxcbiAgcXVhbnRpemU6IG51bGwsXG4gIGxpbmVhcjogbnVsbCxcbiAgc3FydDogbnVsbCxcbiAgbG9nOiBudWxsLFxuICB0aHJlc2hvbGQ6IG51bGwsXG4gIGN1c3RvbTogbnVsbCxcbiAgLy8gb3JkaW5hbCBkb21haW4gdG8gbGluZWFyIHJhbmdlXG4gIHBvaW50OiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFX05BTUVTOiB7W2tleSBpbiBrZXlvZiBTQ0FMRV9UWVBFU19ERUZdOiBzdHJpbmd9ID0ge1xuICBvcmRpbmFsOiAnT3JkaW5hbCcsXG4gIHF1YW50aWxlOiAnUXVhbnRpbGUnLFxuICBxdWFudGl6ZTogJ1F1YW50aXplJyxcbiAgbGluZWFyOiAnTGluZWFyJyxcbiAgc3FydDogJ1NxcnQnLFxuICBsb2c6ICdMb2cnLFxuICB0aHJlc2hvbGQ6ICdUaHJlc2hvbGQnLFxuICBjdXN0b206ICdDdXN0b20gQnJlYWtzJyxcbiAgcG9pbnQ6ICdQb2ludCdcbn07XG5cbmV4cG9ydCB0eXBlIFNDQUxFX0ZVTkNfVFlQRSA9IHtcbiAgW2tleSBpbiBrZXlvZiBTQ0FMRV9UWVBFU19ERUZdOiAoKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLnRocmVzaG9sZF06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tXTogc2NhbGVUaHJlc2hvbGRcbn07XG5cbmV4cG9ydCBjb25zdCBBTExfRklFTERfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBib29sZWFuOiBudWxsLFxuICBkYXRlOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBpbnRlZ2VyOiBudWxsLFxuICByZWFsOiBudWxsLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGFycmF5OiBudWxsLFxuICBvYmplY3Q6IG51bGwsXG4gIGdlb2Fycm93OiBudWxsLFxuICBoMzogbnVsbFxufSk7XG5cbi8vIERhdGEgVGFibGVcbmV4cG9ydCBjb25zdCBTT1JUX09SREVSID0ga2V5TWlycm9yKHtcbiAgQVNDRU5ESU5HOiBudWxsLFxuICBERVNDRU5ESU5HOiBudWxsLFxuICBVTlNPUlQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OID0ga2V5TWlycm9yKHtcbiAgU09SVF9BU0M6IG51bGwsXG4gIFNPUlRfREVTOiBudWxsLFxuICBVTlNPUlQ6IG51bGwsXG4gIFBJTjogbnVsbCxcbiAgVU5QSU46IG51bGwsXG4gIENPUFk6IG51bGwsXG4gIEZPUk1BVF9DT0xVTU46IG51bGxcbn0pO1xuXG5leHBvcnQgdHlwZSBUYWJsZU9wdGlvbiA9IHtcbiAgdmFsdWU6ICdTT1JUX0FTQycgfCAnU09SVF9ERVMnIHwgJ1VOU09SVCcgfCAnUElOJyB8ICdVTlBJTicgfCAnQ09QWScgfCAnRk9STUFUX0NPTFVNTic7XG4gIGRpc3BsYXk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjb25kaXRpb24/OiAocHJvcHM6IGFueSkgPT4gYm9vbGVhbjtcbn07XG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OX0xJU1Q6IFRhYmxlT3B0aW9uW10gPSBbXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfQVNDLFxuICAgIGRpc3BsYXk6ICdTb3J0IEFzY2VuZGluZycsXG4gICAgaWNvbjogJ0Fycm93VXAnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuREVTQ0VORElOR1xuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlNPUlQsXG4gICAgZGlzcGxheTogJ1Vuc29ydCBDb2x1bW4nLFxuICAgIGljb246ICdDYW5jZWwnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuaXNTb3J0ZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uUElOLFxuICAgIGRpc3BsYXk6ICdQaW4gQ29sdW1uJyxcbiAgICBpY29uOiAnUGluJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlBJTixcbiAgICBkaXNwbGF5OiAnVW5waW4gQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246ICdDbGlwYm9hcmQnfSxcbiAge3ZhbHVlOiBUQUJMRV9PUFRJT04uRk9STUFUX0NPTFVNTiwgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLCBpY29uOiAnSGFzaCd9XG5dO1xuXG5jb25zdCBZRUxMT1cgPSAnMjQ4LCAxOTQsIDI4JztcbmNvbnN0IFBJTksgPSAnMjQyLCAxNTIsIDE2Myc7XG5jb25zdCBQVVJQTEUgPSAnMTYwLCAxMDYsIDIwNic7XG5jb25zdCBCTFVFID0gJzE0MCwgMjEwLCAyMDUnO1xuY29uc3QgQkxVRTIgPSAnMTA2LCAxNjAsIDIwNic7XG5jb25zdCBCTFVFMyA9ICcwLCAxNzIsIDIzNyc7XG5jb25zdCBHUkVFTiA9ICcxMDYsIDE2MCwgNTYnO1xuY29uc3QgR1JFRU4yID0gJzc0LCAxNjUsIDE1MCc7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcbmNvbnN0IE9SQU5HRSA9ICcyMzEsIDExMCwgNTgnO1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRV9ESVNQTEFZID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgbGFiZWw6ICdib29sJyxcbiAgICBjb2xvcjogUElOS1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgbGFiZWw6ICdkYXRlJyxcbiAgICBjb2xvcjogUFVSUExFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IHtcbiAgICBsYWJlbDogJ2dlbycsXG4gICAgY29sb3I6IEJMVUUyXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvYXJyb3ddOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdpbnQnLFxuICAgIGNvbG9yOiBZRUxMT1dcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnZmxvYXQnLFxuICAgIGNvbG9yOiBZRUxMT1dcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgbGFiZWw6ICdzdHJpbmcnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIGxhYmVsOiAndGltZScsXG4gICAgY29sb3I6IEdSRUVOXG4gIH0sXG4gIC8vIGZpZWxkIHBhaXJzXG4gIFtBTExfRklFTERfVFlQRVMucG9pbnRdOiB7XG4gICAgbGFiZWw6ICdwb2ludCcsXG4gICAgY29sb3I6IEJMVUUzXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgbGFiZWw6ICdhcnJheScsXG4gICAgY29sb3I6IE9SQU5HRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICBsYWJlbDogJ29iamVjdCcsXG4gICAgY29sb3I6IEdSRUVOMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIGxhYmVsOiAnaDMnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9DT0xPUlMgPSB7XG4gIGRlZmF1bHQ6IFJFRFxufTtcbmV4cG9ydCBjb25zdCBISUdITElHSF9DT0xPUl8zRDogUkdCQUNvbG9yID0gWzI1NSwgMjU1LCAyNTUsIDYwXTtcbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFUyA9IGtleU1pcnJvcih7XG4gIGNvbG9yOiBudWxsLFxuICByYWRpdXM6IG51bGwsXG4gIHNpemU6IG51bGwsXG4gIGNvbG9yQWdncjogbnVsbCxcbiAgc2l6ZUFnZ3I6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRVM6IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JztcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJztcbiAgbWF4aW11bTogJ21heGltdW0nO1xuICBtaW5pbXVtOiAnbWluaW11bSc7XG4gIG1lZGlhbjogJ21lZGlhbic7XG4gIHN0ZGV2OiAnc3RkZXYnO1xuICBzdW06ICdzdW0nO1xuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJztcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZSc7XG4gIGNvdW50VW5pcXVlOiAnY291bnRVbmlxdWUnO1xufSA9IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JyxcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJyxcbiAgbWF4aW11bTogJ21heGltdW0nLFxuICBtaW5pbXVtOiAnbWluaW11bScsXG4gIG1lZGlhbjogJ21lZGlhbicsXG4gIHN0ZGV2OiAnc3RkZXYnLFxuICBzdW06ICdzdW0nLFxuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJyxcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZScsXG4gIGNvdW50VW5pcXVlOiAnY291bnRVbmlxdWUnXG59O1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TOiB7aWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZ31bXSA9IE9iamVjdC5lbnRyaWVzKFxuICBBR0dSRUdBVElPTl9UWVBFU1xuKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgaWQ6IGtleSxcbiAgbGFiZWw6XG4gICAga2V5ID09PSAnc3RkZXYnXG4gICAgICA/ICdTdGQgRGV2aWF0aW9uJ1xuICAgICAgOiBrZXkgPT09ICdjb3VudFVuaXF1ZSdcbiAgICAgID8gJ0NvdW50IFVuaXF1ZSdcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgPyB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpXG4gICAgICA6IHZhbHVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbn07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV1cbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUwsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0VcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU5dXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXToge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvYXJyb3ddOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7fSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICB0eXBlOiAnaDMnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSUNLSU5HX1JBRElVUyA9IDM7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX0JMRU5ESU5HUyA9IHtcbiAgbm9ybWFsOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcubm9ybWFsJyxcbiAgICB2YWx1ZTogJ25vcm1hbCdcbiAgfSxcbiAgc2NyZWVuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuc2NyZWVuJyxcbiAgICB2YWx1ZTogJ3NjcmVlbidcbiAgfSxcbiAgZGFya2VuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuZGFya2VuJyxcbiAgICB2YWx1ZTogJ2RhcmtlbidcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEV4cG9ydEltYWdlID0ge1xuICByYXRpbzoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICByZXNvbHV0aW9uOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG4gIGxlZ2VuZDogYm9vbGVhbjtcbiAgbWFwSDogbnVtYmVyO1xuICBtYXBXOiBudW1iZXI7XG4gIGltYWdlU2l6ZToge1xuICAgIHpvb21PZmZzZXQ6IG51bWJlcjtcbiAgICBzY2FsZTogbnVtYmVyO1xuICAgIGltYWdlVzogbnVtYmVyO1xuICAgIGltYWdlSDogbnVtYmVyO1xuICB9O1xuICAvLyBleHBvcnRpbmcgc3RhdGVcbiAgaW1hZ2VEYXRhVXJpOiBzdHJpbmc7XG4gIGV4cG9ydGluZzogYm9vbGVhbjtcbiAgcHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgZXJyb3I6IEVycm9yIHwgZmFsc2U7XG4gIGVzY2FwZVhodG1sRm9yV2VicGFjaz86IGJvb2xlYW47XG4gIC8vIFRoaXMgZmllbGQgd2FzIG5vdCBpbiB0aGUgLmQudHMgZmlsZVxuICBjZW50ZXI6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICBsYWJlbDogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBnZXRTaXplOiAoc2NyZWVuVzogbnVtYmVyLCBzY3JlZW5IOiBudW1iZXIpID0+IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG59O1xuXG5leHBvcnQgY29uc3QgU2NyZWVuUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TQ1JFRU4sXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9PcmlnaW5hbFNjcmVlbicsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxufTtcbmV4cG9ydCBjb25zdCBDdXN0b21SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgaGlkZGVuOiB0cnVlLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvQ3VzdG9tJyxcbiAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG59O1xuZXhwb3J0IGNvbnN0IEZvdXJCeVRocmVlUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5GT1VSX0JZX1RIUkVFLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC43NSlcbiAgfSlcbn07XG5leHBvcnQgY29uc3QgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvMTZfOScsXG4gIGdldFNpemU6IHNjcmVlblcgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNTYyNSlcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSYXRpb09wdGlvbj4gPSBbXG4gIFNjcmVlblJhdGlvT3B0aW9uLFxuICBDdXN0b21SYXRpb09wdGlvbixcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uXG5dO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgc2NhbGU6IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uXG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRSA9IGtleU1pcnJvcih7XG4gIENTVjogbnVsbFxuICAvLyBTSEFQRUZJTEU6IG51bGwsXG4gIC8vIEpTT046IG51bGwsXG4gIC8vIEdFT0pTT046IG51bGwsXG4gIC8vIFRPUE9KU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgICBsYWJlbDogRVhQT1JUX0RBVEFfVFlQRS5DU1YudG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfVxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuU0hBUEVGSUxFLFxuICAvLyAgIGxhYmVsOiAnc2hhcGVmaWxlJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5KU09OLFxuICAvLyAgIGxhYmVsOiAnanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuR0VPSlNPTixcbiAgLy8gICBsYWJlbDogJ2dlb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlRPUE9KU09OLFxuICAvLyAgIGxhYmVsOiAndG9wb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfVxuXTtcblxuLy8gRXhwb3J0IG1hcCB0eXBlc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIEhUTUw6IG51bGwsXG4gIEpTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVTID0ga2V5TWlycm9yKHtcbiAgUkVBRDogbnVsbCxcbiAgRURJVDogbnVsbFxufSk7XG5cbi8vIEV4cG9ydCBtYXAgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfTUFQX0ZPUk1BVFMpLm1hcChcbiAgKGVudHJ5OiBbc3RyaW5nLCBhbnldKSA9PiAoe1xuICAgIGlkOiBlbnRyeVswXSxcbiAgICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwobW9kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9kb2N1bWVudGF0aW9uL21hcC0ke21vZGUudG9Mb3dlckNhc2UoKX0tbW9kZS5wbmdgO1xufVxuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9IVE1MX01BUF9NT0RFUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBgbW9kYWwuZXhwb3J0TWFwLmh0bWwuJHtlbnRyeVsxXS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVVJRF9DT1VOVCA9IDY7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFID0gJ01FU1NBR0VfTk9UX1BST1ZJREVEJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaW5mbzogbnVsbCxcbiAgZXJyb3I6IG51bGwsXG4gIHdhcm5pbmc6IG51bGwsXG4gIHN1Y2Nlc3M6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTID0ga2V5TWlycm9yKHtcbiAgZ2xvYmFsOiBudWxsLFxuICBmaWxlOiBudWxsXG59KTtcblxuLy8gTWluaW11bSB0aW1lIGJldHdlZW4gaWRlbnRpY2FsIG5vdGlmaWNhdGlvbnMgYWJvdXQgZGVjay5nbCBlcnJvcnNcbmV4cG9ydCBjb25zdCBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSA9IDMzMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMF07XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gODA7XG5cbi8vIEVkaXRvclxuZXhwb3J0IGNvbnN0IEVESVRPUl9MQVlFUl9JRCA9ICdrZXBsZXJfZWRpdG9yX2xheWVyJztcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfUElDS0lOR19SQURJVVMgPSA2O1xuZXhwb3J0IGNvbnN0IEVESVRPUl9NT0RFUyA9IHtcbiAgRFJBV19QT0xZR09OOiAnRFJBV19QT0xZR09OJyxcbiAgRFJBV19SRUNUQU5HTEU6ICdEUkFXX1JFQ1RBTkdMRScsXG4gIEVESVQ6ICdFRElUX1ZFUlRFWCdcbn07XG5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaGlzdG9ncmFtOiBudWxsLFxuICBsaW5lQ2hhcnQ6IG51bGxcbn0pO1xuXG4vLyBGaWx0ZXJcbmV4cG9ydCBjb25zdCBJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiA9IDEwMDtcblxuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbCxcbiAgdGlsZXNldDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZFQVRVUkVfRkxBR1MgPSB7fTtcblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIHJvdzogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgY3N2OiBudWxsLFxuICBrZXBsZXJnbDogbnVsbCxcbiAgYXJyb3c6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbi8qKlxuICogQSBtdWx0aXBsaWVyIGZvciBzY3JlZW4tc3BhY2Ugd2lkdGgvc2NhbGUgZm9yIEFyYywgTGluZSwgSWNvbiBhbmQgVGV4dCBsYXllcnMuXG4gKiBSZXF1aXJlZCBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgc2FtZSBhcHBlYXJhbmNlIGFmdGVyIHVwZ3JhZGluZyB0byBkZWNrLmdsIHY4LjUuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGUtZ3VpZGUubWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgPSAyIC8gMztcblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGZvciB0ZXh0IG91dGxpbmUgd2lkdGhcbiAqL1xuZXhwb3J0IGNvbnN0IFRFWFRfT1VUTElORV9NVUxUSVBMSUVSID0gNTtcblxuZXhwb3J0IGNvbnN0IGRhdGFUZXN0SWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbmZvSWNvbjogJ2luZm8taWNvbicsXG4gIHdhcm5pbmdJY29uOiAnd2FybmluZy1pY29uJyxcbiAgZXJyb3JJY29uOiAnZXJyb3ItaWNvbicsXG4gIHN1Y2Nlc3NJY29uOiAnc3VjY2Vzcy1pY29uJyxcbiAgY2hlY2ttYXJrSWNvbjogJ2NoZWNrbWFyay1pY29uJyxcbiAgc29ydGFibGVMYXllckl0ZW06ICdzb3J0YWJsZS1sYXllci1pdGVtJyxcbiAgc3RhdGljTGF5ZXJJdGVtOiAnc3RhdGljLWxheWVyLWl0ZW0nLFxuICBsYXllclRpdGxlRWRpdG9yOiAnbGF5ZXJfX3RpdGxlX19lZGl0b3InLFxuICByZW1vdmVMYXllckFjdGlvbjogJ3JlbW92ZS1sYXllci1hY3Rpb24nLFxuICBsYXllclBhbmVsOiAnbGF5ZXItcGFuZWwnLFxuICBzb3J0YWJsZUVmZmVjdEl0ZW06ICdzb3J0YWJsZS1lZmZlY3QtaXRlbScsXG4gIHN0YXRpY0VmZmVjdEl0ZW06ICdzdGF0aWMtZWZmZWN0LWl0ZW0nLFxuICBwcm92aWRlckxvYWRpbmc6ICdwcm92aWRlci1sb2FkaW5nJyxcbiAgcHJvdmlkZXJNYXBJbmZvUGFuZWw6ICdwcm92aWRlci1tYXAtaW5mby1wYW5lbCcsXG4gIHByb3ZpZGVyU2VsZWN0OiAncHJvdmlkZXItc2VsZWN0JyxcbiAgY2xvdWRIZWFkZXI6ICdjbG91ZC1oZWFkZXInLFxuICBwcm92aWRlclNoYXJlTWFwOiAncHJvdmlkZXItc2hhcmUtbWFwJ1xufTtcblxuLy8gRWZmZWN0c1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVpPTkUgPSAnVVRDJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSA9ICdpbmsnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMjU1LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfSU5URU5TSVRZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19JTlRFTlNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TSEFET1dfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMgPSB7XG4gIHBpY2s6ICdwaWNrJyBhcyBjb25zdCxcbiAgY3VycmVudDogJ2N1cnJlbnQnIGFzIGNvbnN0LFxuICBhbmltYXRpb246ICdhbmltYXRpb24nIGFzIGNvbnN0XG59O1xuZXhwb3J0IHR5cGUgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSA9ICdwaWNrJyB8ICdjdXJyZW50JyB8ICdhbmltYXRpb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfQU5EX1NIQURPV19QUk9QUzoge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgdGltZU1vZGU6IExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGU7XG4gIHNoYWRvd0ludGVuc2l0eTogbnVtYmVyO1xuICBzaGFkb3dDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdW5MaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG4gIGFtYmllbnRMaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogbnVtYmVyO1xufSA9IHtcbiAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICB0aW1lTW9kZTogTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5waWNrIGFzIExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGUsXG4gIHNoYWRvd0ludGVuc2l0eTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZLFxuICBzaGFkb3dDb2xvcjogWy4uLkRFRkFVTFRfU0hBRE9XX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSxcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFlcbn07XG5cbmV4cG9ydCBjb25zdCBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVDogRWZmZWN0RGVzY3JpcHRpb24gPSB7XG4gIHR5cGU6ICdsaWdodEFuZFNoYWRvdycsXG4gIG5hbWU6ICdMaWdodCAmIFNoYWRvdycsXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7bmFtZTogJ3RpbWVzdGFtcCcsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0sXG4gICAge25hbWU6ICdzaGFkb3dJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdzaGFkb3dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfQ09MT1J9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFM6IHtba2V5OiBzdHJpbmddOiBFZmZlY3REZXNjcmlwdGlvbn0gPSB7XG4gIGluazoge1xuICAgIHR5cGU6ICdpbmsnLFxuICAgIG5hbWU6ICdJbmsnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3N0cmVuZ3RoJywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICBicmlnaHRuZXNzQ29udHJhc3Q6IHtcbiAgICB0eXBlOiAnYnJpZ2h0bmVzc0NvbnRyYXN0JyxcbiAgICBuYW1lOiAnQnJpZ2h0bmVzcyAmIENvbnRyYXN0JyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2JyaWdodG5lc3MnLCBtaW46IC0xLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdjb250cmFzdCcsIG1pbjogLTEsIG1heDogMX1cbiAgICBdXG4gIH0sXG4gIGh1ZVNhdHVyYXRpb246IHtcbiAgICB0eXBlOiAnaHVlU2F0dXJhdGlvbicsXG4gICAgbmFtZTogJ0h1ZSAmIFNhdHVyYXRpb24nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnaHVlJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnc2F0dXJhdGlvbicsIGRlZmF1bHRWYWx1ZTogMC4yNSwgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgdmlicmFuY2U6IHtcbiAgICB0eXBlOiAndmlicmFuY2UnLFxuICAgIG5hbWU6ICdWaWJyYW5jZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogLTEsIG1heDogMX1dXG4gIH0sXG4gIHNlcGlhOiB7XG4gICAgdHlwZTogJ3NlcGlhJyxcbiAgICBuYW1lOiAnU2VwaWEnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgZG90U2NyZWVuOiB7XG4gICAgdHlwZTogJ2RvdFNjcmVlbicsXG4gICAgbmFtZTogJ0RvdCBTY3JlZW4nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FuZ2xlJyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IE1hdGguUEkgLyAyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2l6ZScsXG4gICAgICAgIG1pbjogMSxcbiAgICAgICAgbWF4OiAyMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGNvbG9ySGFsZnRvbmU6IHtcbiAgICB0eXBlOiAnY29sb3JIYWxmdG9uZScsXG4gICAgbmFtZTogJ0NvbG9yIEhhbGZ0b25lJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBub2lzZToge1xuICAgIHR5cGU6ICdub2lzZScsXG4gICAgbmFtZTogJ05vaXNlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIHRyaWFuZ2xlQmx1cjoge1xuICAgIHR5cGU6ICd0cmlhbmdsZUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChUcmlhbmdsZSknLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxMDB9XVxuICB9LFxuICB6b29tQmx1cjoge1xuICAgIHR5cGU6ICd6b29tQmx1cicsXG4gICAgbmFtZTogJ0JsdXIgKFpvb20pJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdHJlbmd0aCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMC4wNSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICB0aWx0U2hpZnQ6IHtcbiAgICB0eXBlOiAndGlsdFNoaWZ0JyxcbiAgICBuYW1lOiAnQmx1ciAoVGlsdCBTaGlmdCknLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JsdXJSYWRpdXMnLFxuICAgICAgICBsYWJlbDogJ0JsdXInLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdncmFkaWVudFJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnR3JhZGllbnQnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNDAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RhcnQnLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydTdGFydCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC4wLCAwLjBdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VuZCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0VuZCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMSwgMV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBlZGdlV29yazoge1xuICAgIHR5cGU6ICdlZGdlV29yaycsXG4gICAgbmFtZTogJ0VkZ2Ugd29yaycsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgdmlnbmV0dGU6IHtcbiAgICB0eXBlOiAndmlnbmV0dGUnLFxuICAgIG5hbWU6ICdWaWduZXR0ZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgbWFnbmlmeToge1xuICAgIHR5cGU6ICdtYWduaWZ5JyxcbiAgICBuYW1lOiAnTWFnbmlmeScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc2NyZWVuWFknLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydQb3NpdGlvbiBYJywgJ1Bvc2l0aW9uIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JhZGl1c1BpeGVscycsXG4gICAgICAgIGxhYmVsOiAnU2l6ZScsXG4gICAgICAgIG1pbjogMTAsXG4gICAgICAgIG1heDogNTAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnem9vbScsXG4gICAgICAgIG1pbjogMC41LFxuICAgICAgICBtYXg6IDUwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYm9yZGVyV2lkdGhQaXhlbHMnLFxuICAgICAgICBsYWJlbDogJ0JvcmRlciBXaWR0aCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDUwXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBoZXhhZ29uYWxQaXhlbGF0ZToge1xuICAgIHR5cGU6ICdoZXhhZ29uYWxQaXhlbGF0ZScsXG4gICAgbmFtZTogJ0hleGFnb25hbCBQaXhlbGF0ZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnc2NhbGUnLCBkZWZhdWx0VmFsdWU6IDIwLCBtaW46IDEsIG1heDogNTB9XVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRUZGRUNUX0RFU0NSSVBUSU9OUzogRWZmZWN0RGVzY3JpcHRpb25bXSA9IFtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIC4uLk9iamVjdC5rZXlzKFBPU1RQUk9DRVNTSU5HX0VGRkVDVFMpLm1hcChrZXlOYW1lID0+IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFNba2V5TmFtZV0pXG5dO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RUeXBlID1cbiAgfCAnaW5rJ1xuICB8ICdicmlnaHRuZXNzQ29udHJhc3QnXG4gIHwgJ2h1ZVNhdHVyYXRpb24nXG4gIHwgJ3ZpYnJhbmNlJ1xuICB8ICdzZXBpYSdcbiAgfCAnZG90U2NyZWVuJ1xuICB8ICdjb2xvckhhbGZ0b25lJ1xuICB8ICdub2lzZSdcbiAgfCAndHJpYW5nbGVCbHVyJ1xuICB8ICd6b29tQmx1cidcbiAgfCAndGlsdFNoaWZ0J1xuICB8ICdlZGdlV29yaydcbiAgfCAndmlnbmV0dGUnXG4gIHwgJ21hZ25pZnknXG4gIHwgJ2hleGFnb25hbFBpeGVsYXRlJ1xuICB8ICdsaWdodEFuZFNoYWRvdyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DX1RJTUVMSU5FX01PREVTOiBSZWNvcmQ8c3RyaW5nLCBTeW5jVGltZWxpbmVNb2RlPiA9IHtcbiAgc3RhcnQ6IDAsXG4gIGVuZDogMVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUErQyxJQUFBRyxtQkFBQSxFQUFBQyxXQUFBLEVBaEIvQztBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FB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