@kepler.gl/components 3.2.5 → 3.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/bottom-widget.d.ts +4 -4
  2. package/dist/common/action-panel.d.ts +3 -3
  3. package/dist/common/animation-control/animation-control.d.ts +1 -1
  4. package/dist/common/animation-control/playback-controls.d.ts +1 -1
  5. package/dist/common/color-legend.d.ts +4 -4
  6. package/dist/common/column-stats-chart.d.ts +3 -3
  7. package/dist/common/data-table/button.d.ts +1 -1
  8. package/dist/common/data-table/canvas.d.ts +0 -1
  9. package/dist/common/data-table/cell-size.d.ts +2 -2
  10. package/dist/common/data-table/display-format.d.ts +1 -1
  11. package/dist/common/data-table/header-cell.d.ts +2 -2
  12. package/dist/common/data-table/index.d.ts +7 -9
  13. package/dist/common/data-table/index.js +1 -1
  14. package/dist/common/data-table/option-dropdown.d.ts +1 -1
  15. package/dist/common/field-selector.d.ts +5 -5
  16. package/dist/common/field-token.d.ts +1 -1
  17. package/dist/common/file-uploader/file-drop.d.ts +1 -1
  18. package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
  19. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  20. package/dist/common/flex-container.d.ts +2 -3
  21. package/dist/common/histogram-plot.d.ts +1 -1
  22. package/dist/common/icon-button.d.ts +16 -16
  23. package/dist/common/icons/base.d.ts +1 -1
  24. package/dist/common/icons/close.js +7 -6
  25. package/dist/common/icons/effects/distance-fog.d.ts +14 -0
  26. package/dist/common/icons/effects/distance-fog.js +79 -0
  27. package/dist/common/icons/effects/surface-fog.d.ts +14 -0
  28. package/dist/common/icons/effects/surface-fog.js +86 -0
  29. package/dist/common/icons/index.d.ts +3 -0
  30. package/dist/common/icons/index.js +22 -1
  31. package/dist/common/icons/zoom-out.d.ts +10 -0
  32. package/dist/common/icons/zoom-out.js +48 -0
  33. package/dist/common/item-selector/chickleted-input.d.ts +4 -4
  34. package/dist/common/item-selector/dropdown-list.d.ts +3 -3
  35. package/dist/common/item-selector/dropdown-select.d.ts +7 -7
  36. package/dist/common/item-selector/item-selector.d.ts +2 -2
  37. package/dist/common/item-selector/typeahead.d.ts +3 -3
  38. package/dist/common/loading-spinner.d.ts +2 -2
  39. package/dist/common/modal.d.ts +5 -5
  40. package/dist/common/portaled.d.ts +8 -25
  41. package/dist/common/progress-bar.d.ts +1 -1
  42. package/dist/common/radius-legend.d.ts +1 -1
  43. package/dist/common/range-brush.d.ts +1 -1
  44. package/dist/common/range-plot.d.ts +1 -1
  45. package/dist/common/slider/mouse-event.d.ts +1 -1
  46. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  47. package/dist/common/slider/slider-handle.d.ts +3 -3
  48. package/dist/common/slider/slider.d.ts +2 -2
  49. package/dist/common/styled-components.d.ts +157 -158
  50. package/dist/common/sync-timeline-control.d.ts +3 -3
  51. package/dist/common/time-range-slider-time-title.d.ts +1 -1
  52. package/dist/common/time-range-slider.d.ts +2 -2
  53. package/dist/common/timeline-slider.d.ts +1 -1
  54. package/dist/common/tippy-tooltip.d.ts +1 -1
  55. package/dist/common/toolbar-item.d.ts +1 -1
  56. package/dist/common/toolbar.d.ts +1 -1
  57. package/dist/common/vertical-toolbar.d.ts +2 -3
  58. package/dist/container.d.ts +6 -6
  59. package/dist/context.d.ts +3 -3
  60. package/dist/dnd-context.d.ts +2 -2
  61. package/dist/editor/editor.d.ts +1 -1
  62. package/dist/editor/editor.js +1 -1
  63. package/dist/editor/feature-action-panel.d.ts +1 -1
  64. package/dist/editor/feature-action-panel.js +1 -1
  65. package/dist/effects/compact-color-picker.d.ts +1 -1
  66. package/dist/effects/effect-configurator.d.ts +2 -2
  67. package/dist/effects/effect-configurator.js +52 -14
  68. package/dist/effects/effect-list.d.ts +1 -1
  69. package/dist/effects/effect-manager.d.ts +3 -3
  70. package/dist/effects/effect-manager.js +9 -2
  71. package/dist/effects/effect-panel-header.d.ts +2 -2
  72. package/dist/effects/effect-panel-header.js +2 -2
  73. package/dist/effects/effect-panel.d.ts +2 -2
  74. package/dist/effects/effect-time-configurator.d.ts +1 -1
  75. package/dist/effects/effect-time-selector.d.ts +1 -1
  76. package/dist/effects/effect-time-slider.d.ts +3 -3
  77. package/dist/effects/effect-type-dropdown-list.d.ts +2 -2
  78. package/dist/effects/effect-type-list-item.d.ts +1 -1
  79. package/dist/effects/effect-type-selector.d.ts +2 -2
  80. package/dist/effects/side-panel-title.d.ts +1 -1
  81. package/dist/effects/timezone-selector.d.ts +1 -1
  82. package/dist/filters/components.d.ts +2 -3
  83. package/dist/filters/filter-panels/types.d.ts +4 -4
  84. package/dist/filters/types.d.ts +8 -8
  85. package/dist/geocoder/geocoder.d.ts +3 -3
  86. package/dist/geocoder/geocoder.js +5 -1
  87. package/dist/geocoder-panel.d.ts +10 -2
  88. package/dist/geocoder-panel.js +3 -3
  89. package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
  90. package/dist/hooks/use-dnd-effects.d.ts +1 -1
  91. package/dist/hooks/use-dnd-layers.d.ts +1 -1
  92. package/dist/hooks/use-feature-flags.d.ts +1 -1
  93. package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
  94. package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
  95. package/dist/hooks/use-legend-position.d.ts +8 -6
  96. package/dist/hooks/use-legend-position.js +27 -4
  97. package/dist/injector.d.ts +5 -5
  98. package/dist/kepler-gl.d.ts +55 -64
  99. package/dist/loading-indicator.d.ts +4 -4
  100. package/dist/loading-indicator.js +33 -8
  101. package/dist/map/effects/effect-control.d.ts +1 -1
  102. package/dist/map/layer-hover-info.d.ts +3 -3
  103. package/dist/map/layer-hover-info.js +8 -3
  104. package/dist/map/layer-selector-panel.d.ts +1 -1
  105. package/dist/map/lazy-tippy.js +3 -3
  106. package/dist/map/locale-panel.d.ts +1 -1
  107. package/dist/map/map-control-panel.d.ts +1 -1
  108. package/dist/map/map-control-toolbar.d.ts +6 -7
  109. package/dist/map/map-control-tooltip.d.ts +1 -1
  110. package/dist/map/map-control.d.ts +3 -2
  111. package/dist/map/map-control.js +1 -1
  112. package/dist/map/map-draw-panel.d.ts +1 -1
  113. package/dist/map/map-legend-panel.d.ts +4 -3
  114. package/dist/map/map-legend-panel.js +22 -9
  115. package/dist/map/map-legend.d.ts +10 -8
  116. package/dist/map/map-legend.js +37 -7
  117. package/dist/map/map-popover-content.d.ts +2 -2
  118. package/dist/map/map-popover.d.ts +2 -2
  119. package/dist/map/split-map-button.d.ts +1 -1
  120. package/dist/map/toggle-3d-button.d.ts +1 -1
  121. package/dist/map-container.d.ts +2 -2
  122. package/dist/map-container.js +50 -25
  123. package/dist/map-view-state-context.d.ts +9 -2
  124. package/dist/map-view-state-context.js +1 -1
  125. package/dist/modal-container.d.ts +3 -6
  126. package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
  127. package/dist/modals/cloud-components/provider-select.d.ts +1 -1
  128. package/dist/modals/cloud-tile.d.ts +1 -1
  129. package/dist/modals/data-table-modal.d.ts +1 -1
  130. package/dist/modals/export-data-modal.js +2 -2
  131. package/dist/modals/export-image-modal.d.ts +1 -1
  132. package/dist/modals/export-image-modal.js +75 -7
  133. package/dist/modals/export-map-modal/components.d.ts +1 -1
  134. package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
  135. package/dist/modals/export-map-modal/export-html-map.js +3 -1
  136. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  137. package/dist/modals/image-modal-container.d.ts +1 -1
  138. package/dist/modals/load-data-modal.d.ts +2 -2
  139. package/dist/modals/modal-dialog.d.ts +0 -2
  140. package/dist/modals/overwrite-map-modal.d.ts +1 -1
  141. package/dist/modals/save-map-modal.d.ts +3 -3
  142. package/dist/modals/share-map-modal.d.ts +1 -1
  143. package/dist/modals/tilesets-modals/common.d.ts +3 -3
  144. package/dist/modals/tilesets-modals/common.js +1 -1
  145. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  146. package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
  147. package/dist/modals/tilesets-modals/load-tileset.js +8 -2
  148. package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
  149. package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
  150. package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
  151. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
  152. package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
  153. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
  154. package/dist/modals/tilesets-modals/tileset-wms-form.js +53 -10
  155. package/dist/plot-container.js +82 -11
  156. package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
  157. package/dist/side-panel/common/dataset-info.d.ts +2 -2
  158. package/dist/side-panel/common/dataset-info.js +2 -2
  159. package/dist/side-panel/common/dataset-tag.d.ts +2 -2
  160. package/dist/side-panel/common/dataset-title.d.ts +2 -2
  161. package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
  162. package/dist/side-panel/common/types.d.ts +8 -8
  163. package/dist/side-panel/custom-panel.d.ts +2 -2
  164. package/dist/side-panel/filter-manager.d.ts +3 -3
  165. package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
  166. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
  167. package/dist/side-panel/interaction-manager.d.ts +1 -1
  168. package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
  169. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
  170. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
  171. package/dist/side-panel/layer-manager.d.ts +2 -2
  172. package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
  173. package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
  174. package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
  175. package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
  176. package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
  177. package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
  178. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +4 -4
  179. package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
  180. package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
  181. package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
  182. package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
  183. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  184. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
  185. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
  186. package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
  187. package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
  188. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
  189. package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
  190. package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
  191. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
  192. package/dist/side-panel/layer-panel/layer-configurator.d.ts +2 -2
  193. package/dist/side-panel/layer-panel/layer-configurator.js +27 -17
  194. package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
  195. package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
  196. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +6 -5
  197. package/dist/side-panel/layer-panel/layer-panel-header.js +15 -5
  198. package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
  199. package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
  200. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
  201. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
  202. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
  203. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
  204. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  205. package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
  206. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +2 -2
  207. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
  208. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +1 -1
  209. package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
  210. package/dist/side-panel/map-manager.d.ts +1 -1
  211. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
  212. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
  213. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
  214. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
  215. package/dist/side-panel/panel-header-action.d.ts +1 -1
  216. package/dist/side-panel/panel-header.d.ts +12 -12
  217. package/dist/side-panel/panel-tab.d.ts +4 -4
  218. package/dist/side-panel/panel-title.d.ts +1 -1
  219. package/dist/side-panel/panel-toggle.d.ts +1 -1
  220. package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
  221. package/dist/side-panel/side-bar.d.ts +2 -2
  222. package/dist/side-panel.d.ts +1 -1
  223. package/dist/types.d.ts +3 -3
  224. package/package.json +23 -22
@@ -5,19 +5,19 @@ import FilterAnimationControllerFactory from './filter-animation-controller';
5
5
  import LayerAnimationControllerFactory from './layer-animation-controller';
6
6
  import AnimationControlFactory from './common/animation-control/animation-control';
7
7
  import { BaseComponentProps } from './types';
8
- export declare type BottomWidgetContainerProps = BaseComponentProps & {
8
+ export type BottomWidgetContainerProps = BaseComponentProps & {
9
9
  hasPadding?: boolean;
10
10
  width: number;
11
11
  ref: React.ForwardedRef<HTMLDivElement>;
12
12
  };
13
- export declare type BottomWidgetProps = {
13
+ export type BottomWidgetProps = {
14
14
  rootRef: React.ForwardedRef<HTMLDivElement>;
15
15
  containerW: number;
16
16
  } & ReturnType<typeof bottomWidgetSelector>;
17
- declare type ThemeProp = {
17
+ type ThemeProp = {
18
18
  theme: any;
19
19
  };
20
- declare type BottomWidgetThemedProps = BottomWidgetProps & ThemeProp;
20
+ type BottomWidgetThemedProps = BottomWidgetProps & ThemeProp;
21
21
  declare function BottomWidgetFactory(TimeWidget: ReturnType<typeof TimeWidgetFactory>, AnimationControl: ReturnType<typeof AnimationControlFactory>, FilterAnimationController: ReturnType<typeof FilterAnimationControllerFactory>, LayerAnimationController: ReturnType<typeof LayerAnimationControllerFactory>): React.FC<BottomWidgetThemedProps>;
22
22
  declare namespace BottomWidgetFactory {
23
23
  var deps: (typeof AnimationControlFactory | typeof TimeWidgetFactory | typeof LayerAnimationControllerFactory | typeof FilterAnimationControllerFactory)[];
@@ -1,11 +1,11 @@
1
1
  import React, { PropsWithChildren, ElementType, CSSProperties } from 'react';
2
2
  import { BaseComponentProps } from '../types';
3
- export declare type ActionPanelProps = PropsWithChildren<{
3
+ export type ActionPanelProps = PropsWithChildren<{
4
4
  color?: string;
5
5
  className?: string;
6
6
  direction?: CSSProperties['direction'];
7
7
  }>;
8
- export declare type ActionPanelItemProps = PropsWithChildren<{
8
+ export type ActionPanelItemProps = PropsWithChildren<{
9
9
  color?: string;
10
10
  className?: string;
11
11
  Icon?: ElementType;
@@ -18,7 +18,7 @@ export declare type ActionPanelItemProps = PropsWithChildren<{
18
18
  style?: CSSProperties;
19
19
  }>;
20
20
  export declare const ActionPanelItem: React.MemoExoticComponent<({ children, color, className, Icon, label, onClick, isSelection, isActive, isDisabled, tooltipText, style }: ActionPanelItemProps) => React.JSX.Element>;
21
- export declare type StyledActionPanelProps = BaseComponentProps & {
21
+ export type StyledActionPanelProps = BaseComponentProps & {
22
22
  direction?: string;
23
23
  };
24
24
  declare const ActionPanel: {
@@ -3,7 +3,7 @@ import { Timeline, Filter } from '@kepler.gl/types';
3
3
  import TimelineSliderFactory from '../timeline-slider';
4
4
  import PlaybackControlsFactory from './playback-controls';
5
5
  import FloatingTimeDisplayFactory from './floating-time-display';
6
- export declare type AnimationControlProps = {
6
+ export type AnimationControlProps = {
7
7
  filter?: Filter;
8
8
  timeline?: Timeline;
9
9
  isAnimatable?: boolean;
@@ -6,7 +6,7 @@ import AnimationWindowControlFactory, { AnimationItem } from './animation-window
6
6
  import ResetControlFactory from './reset-control';
7
7
  import PlayControlFactory from './play-control';
8
8
  import { BaseComponentProps } from '../../types';
9
- export declare type StyledAnimationControlsProps = BaseComponentProps & {
9
+ export type StyledAnimationControlsProps = BaseComponentProps & {
10
10
  width?: number;
11
11
  };
12
12
  export interface PlaybackControlsProps {
@@ -3,7 +3,7 @@ import { Layer } from '@kepler.gl/layers';
3
3
  import { ColorRange, HexColor, MapState } from '@kepler.gl/types';
4
4
  import { Reset } from './icons';
5
5
  export declare function ResetColorLabelFactory(): import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Partial<import("./icons").BaseProps> & React.RefAttributes<Reset>, never>> & Omit<typeof Reset, keyof React.Component<any, {}, any>>;
6
- export declare type LegendRowEditorProps = {
6
+ export type LegendRowEditorProps = {
7
7
  color: string;
8
8
  label: string;
9
9
  customLabel?: string;
@@ -14,7 +14,7 @@ export declare function LegendRowEditorFactory(): React.FC<LegendRowEditorProps>
14
14
  export declare function LegendColorDisplayFactory(): ({ color }: {
15
15
  color: any;
16
16
  }) => React.JSX.Element;
17
- export declare type LegendRowProps = {
17
+ export type LegendRowProps = {
18
18
  label: string;
19
19
  customLabel?: string;
20
20
  displayLabel?: boolean;
@@ -28,7 +28,7 @@ export declare namespace LegendRowFactory {
28
28
  var deps: (typeof ResetColorLabelFactory | typeof LegendColorDisplayFactory | typeof LegendRowEditorFactory)[];
29
29
  }
30
30
  export declare function useLayerColorLegends(layer: ColorLegendProps['layer'], scaleType: ColorLegendProps['scaleType'], domain: ColorLegendProps['domain'], range: ColorLegendProps['range'], isFixed: ColorLegendProps['isFixed'], fieldType: ColorLegendProps['fieldType'], labelFormat: ColorLegendProps['labelFormat'], mapState: ColorLegendProps['mapState']): Legend[];
31
- export declare type ColorLegendProps = {
31
+ export type ColorLegendProps = {
32
32
  layer: Layer;
33
33
  scaleType: string;
34
34
  domain: number[] | string[];
@@ -44,7 +44,7 @@ export declare type ColorLegendProps = {
44
44
  [key: HexColor]: string;
45
45
  }) => void;
46
46
  };
47
- export declare type Legend = {
47
+ export type Legend = {
48
48
  data: string;
49
49
  label: string;
50
50
  override?: boolean;
@@ -10,7 +10,7 @@ export declare const ColorChartHeader: ({ minVal, meanVal, maxVal }: {
10
10
  meanVal: any;
11
11
  maxVal: any;
12
12
  }) => React.JSX.Element;
13
- export declare type ColorChartTickProps = {
13
+ export type ColorChartTickProps = {
14
14
  colors: string[];
15
15
  positions: number[];
16
16
  onTickMoving: (positions: number[], dragTick: number) => void;
@@ -18,7 +18,7 @@ export declare type ColorChartTickProps = {
18
18
  histogramWidth: number;
19
19
  };
20
20
  export declare const ColorChartTick: React.FC<ColorChartTickProps>;
21
- export declare type ColumnStatsChartWLoadingProps = {
21
+ export type ColumnStatsChartWLoadingProps = {
22
22
  colorField: Field;
23
23
  dataset: KeplerTable;
24
24
  colorBreaks: ColorBreak[] | ColorBreakOrdinal[] | null;
@@ -28,7 +28,7 @@ export declare type ColumnStatsChartWLoadingProps = {
28
28
  histogramDomain: number[];
29
29
  onChangedUpdater: (ticks: ColorBreak[]) => void;
30
30
  };
31
- export declare type ColumnStatsChartProps = {
31
+ export type ColumnStatsChartProps = {
32
32
  allBins: Bin[];
33
33
  filteredBins: Bin[];
34
34
  isFiltered: boolean;
@@ -1,5 +1,5 @@
1
1
  import React, { MouseEventHandler } from 'react';
2
- declare type ButtonProps = {
2
+ type ButtonProps = {
3
3
  onClick?: MouseEventHandler<HTMLButtonElement>;
4
4
  disabled?: boolean;
5
5
  text?: string;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const _default: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").CanvasHTMLAttributes<HTMLCanvasElement>, HTMLCanvasElement>, never>>;
3
2
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import { DataContainerInterface } from '@kepler.gl/utils';
2
- declare type RenderSizeParam = {
2
+ type RenderSizeParam = {
3
3
  text: {
4
4
  dataContainer: DataContainerInterface;
5
5
  column: string;
@@ -15,7 +15,7 @@ declare type RenderSizeParam = {
15
15
  minCellSize?: number;
16
16
  optionsButton?: number;
17
17
  };
18
- export declare type CellSizeCache = {
18
+ export type CellSizeCache = {
19
19
  [key: string]: {
20
20
  row: number;
21
21
  header: number;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { TooltipFormat } from '@kepler.gl/constants';
3
3
  import { ColMeta } from '@kepler.gl/types';
4
- export declare type DataTableConfigProps = {
4
+ export type DataTableConfigProps = {
5
5
  title: string;
6
6
  id: string;
7
7
  defaultFormat: string;
@@ -2,7 +2,7 @@ import React, { CSSProperties } from 'react';
2
2
  import { ColMeta } from '@kepler.gl/types';
3
3
  import FieldTokenFactory, { FieldTokenProps } from '../../common/field-token';
4
4
  import { DataTableProps } from './index';
5
- declare type CellInfo = {
5
+ type CellInfo = {
6
6
  columnIndex: number;
7
7
  isScrolling: boolean;
8
8
  isVisible: boolean;
@@ -11,7 +11,7 @@ declare type CellInfo = {
11
11
  rowIndex: number;
12
12
  style: CSSProperties;
13
13
  };
14
- declare type HeaderCellProps = {
14
+ type HeaderCellProps = {
15
15
  cellInfo: CellInfo;
16
16
  columns: DataTableProps['columns'];
17
17
  colMeta?: ColMeta;
@@ -4,11 +4,11 @@ import { CellSizeCache } from './cell-size';
4
4
  import HeaderCellFactory from './header-cell';
5
5
  import { ColMeta } from '@kepler.gl/types';
6
6
  import { DataContainerInterface } from '@kepler.gl/utils';
7
- declare type ContainerProps = {
7
+ type ContainerProps = {
8
8
  hasCustomScrollBarStyle?: boolean;
9
9
  };
10
10
  export declare const Container: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, ContainerProps>>;
11
- export declare type SortColumn = {
11
+ export type SortColumn = {
12
12
  column?: string;
13
13
  mode?: string;
14
14
  };
@@ -85,15 +85,13 @@ declare namespace DataTableFactory {
85
85
  rowIndex: number;
86
86
  style: React.CSSProperties;
87
87
  };
88
- columns: (string & {
89
- ghost?: boolean | undefined;
90
- })[];
91
- colMeta?: ColMeta | undefined;
92
- isPinned?: boolean | undefined;
93
- showStats?: boolean | undefined;
88
+ columns: DataTableProps["columns"];
89
+ colMeta?: ColMeta;
90
+ isPinned?: boolean;
91
+ showStats?: boolean;
94
92
  props: DataTableProps;
95
93
  toggleMoreOptions: (moreOptionsColumn: string) => void;
96
- moreOptionsColumn: string | null;
94
+ moreOptionsColumn: null | string;
97
95
  style: React.CSSProperties;
98
96
  }) => React.JSX.Element;
99
97
  deps: typeof import("../field-token").default[];
@@ -468,4 +468,4 @@ function DataTableFactory(HeaderCell) {
468
468
  return (0, _styledComponents.withTheme)(DataTable);
469
469
  }
470
470
  var _default = exports["default"] = DataTableFactory;
471
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXJ0dWFsaXplZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NsYXNzbmFtZXMyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZXNlbGVjdCIsIl9nZXQiLCJfZGVib3VuY2UiLCJfaWNvbnMiLCJfZ3JpZCIsIl9oZWFkZXJDZWxsIiwiX3V0aWxzIiwiX2NlbGxTaXplIiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmF1bHRIZWFkZXJSb3dIZWlnaHQiLCJkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiZGVmYXVsdFJvd0hlaWdodCIsIm92ZXJzY2FuQ29sdW1uQ291bnQiLCJvdmVyc2NhblJvd0NvdW50IiwiYnJvd3NlclNjcm9sbEJhcldpZHRoIiwiZmllbGRUb0FsaWduUmlnaHQiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInBpbm5lZENsYXNzTGlzdCIsImhlYWRlciIsInJvd3MiLCJ1bnBpbm5lZENsYXNzTGlzdCIsIkNvbnRhaW5lciIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJkYXRhVGFibGVUZXh0Q29sb3IiLCJoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIm1vZGFsU2Nyb2xsQmFyIiwiY2VsbEJvcmRlckNvbG9yIiwicGlubmVkR3JpZEJvcmRlckNvbG9yIiwiZXZlblJvd0JhY2tncm91bmQiLCJvZGRSb3dCYWNrZ3JvdW5kIiwiY2VsbFBhZGRpbmdTaWRlIiwiY2VsbEZvbnRTaXplIiwiZWRnZUNlbGxQYWRkaW5nU2lkZSIsImRlZmF1bHRDb2x1bW5XaWR0aCIsImNvbHVtbldpZHRoRnVuY3Rpb24iLCJjb2x1bW5zIiwiY2VsbFNpemVDYWNoZSIsImdob3N0IiwiX3JlZiIsImluZGV4IiwiZGVmYXVsdEdldFJvd0NlbGwiLCJfcmVmMiIsImZvcm1hdHRlciIsImRhdGFDb250YWluZXIiLCJjb2x1bW4iLCJjb2xNZXRhIiwicm93SW5kZXgiLCJzb3J0T3JkZXIiLCJyb3dJZHgiLCJ0eXBlIiwidmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsInBhcnNlRmllbGRWYWx1ZSIsIlN0eWxlZFN0YXRzQ29udHJvbCIsImhlYWRlclN0YXRzQ29udHJvbEhlaWdodCIsInRvcCIsImZvbnRGYW1pbHlNZWRpdW0iLCJhY3RpdmVDb2xvciIsImhlYWRlckNlbGxTdGF0c0NvbnRyb2xCYWNrZ3JvdW5kIiwic2hvd1N0YXRzIiwiU3RhdHNDb250cm9sIiwiX3JlZjMiLCJ0b2dnbGVTaG93U3RhdHMiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIkFycm93RG93biIsImhlaWdodCIsIlRhYmxlU2VjdGlvbiIsIl9yZWY0IiwiY2xhc3NMaXN0IiwiaXNQaW5uZWQiLCJoZWFkZXJHcmlkUHJvcHMiLCJmaXhlZFdpZHRoIiwiX3JlZjQkZml4ZWRIZWlnaHQiLCJmaXhlZEhlaWdodCIsIm9uU2Nyb2xsIiwic2Nyb2xsVG9wIiwiZGF0YUdyaWRQcm9wcyIsImNvbHVtbldpZHRoIiwiX3JlZjQkc2V0R3JpZFJlZiIsInNldEdyaWRSZWYiLCJoZWFkZXJDZWxsUmVuZGVyIiwiZGF0YUNlbGxSZW5kZXIiLCJfcmVmNCRzY3JvbGxMZWZ0Iiwic2Nyb2xsTGVmdCIsImhlYWRlckhlaWdodCIsImhlYWRlclN0eWxlIiwidXNlTWVtbyIsImNvbmNhdCIsImNvbnRlbnRTdHlsZSIsIkF1dG9TaXplciIsIl9yZWY1Iiwid2lkdGgiLCJncmlkRGltZW5zaW9uIiwiY29sdW1uQ291bnQiLCJoZWFkZXJHcmlkV2lkdGgiLCJkYXRhR3JpZEhlaWdodCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwiX2V4dGVuZHMyIiwiY2VsbFJlbmRlcmVyIiwiYXJncyIsIkRVTU1ZX1NUWUxFIiwiRGF0YVRhYmxlRmFjdG9yeSIsImRlcHMiLCJIZWFkZXJDZWxsRmFjdG9yeSIsIkhlYWRlckNlbGwiLCJEYXRhVGFibGUiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsIkFycmF5IiwiX2tleSIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY3JlYXRlUmVmIiwicGlubmVkQ29sdW1ucyIsImNyZWF0ZVNlbGVjdG9yIiwiaXNBcnJheSIsImMiLCJpbmNsdWRlcyIsImhhc01vdW50ZWQiLCJzZXRTdGF0ZSIsInN0YXRlIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRjZWxsU2l6ZUMiLCJwcm9wc0NhY2hlIiwiX3RoaXMkcHJvcHMkcGlubmVkQ29sIiwidW5waW5uZWRDb2x1bW5zIiwicm9vdCIsImN1cnJlbnQiLCJjbGllbnRXaWR0aCIsImFkanVzdFdpZHRoIiwiX3JlZjYiLCJhZGp1c3RDZWxsc1RvQ29udGFpbmVyIiwiZ2V0Q2VsbFNpemVDYWNoZSIsImRlYm91bmNlIiwiZG9TY2FsZUNlbGxzVG9XaWR0aCIsIl90aGlzJHByb3BzJGdldFJvd0NlbCIsImdldFJvd0NlbGwiLCJEYXRhQ2VsbFJlbmRlcmVyIiwiY2VsbEluZm8iLCJjb2x1bW5JbmRleCIsImtleSIsImlzR2hvc3QiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJyb3dDZWxsIiwibGFzdFJvd0luZGV4IiwibnVtUm93cyIsImVuZENlbGwiLCJmaXJzdENlbGwiLCJib3R0b21DZWxsIiwiYWxpZ25SaWdodCIsIk51bWJlciIsImNlbGwiLCJ0aXRsZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwic2NhbGVDZWxsc1RvV2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXJIZWFkZXJDZWxsIiwidG9nZ2xlTW9yZU9wdGlvbnMiLCJfdGhpczIiLCJIZWFkZXJDZWxsUmVuZGVyZXIiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wczIkcGlubmVkQ28iLCJfdGhpcyRwcm9wczIkdGhlbWUiLCJfdGhpcyRwcm9wczIkZml4ZWRIZWkiLCJoYXNTdGF0cyIsIl90aGlzJHN0YXRlIiwiX3RoaXMkc3RhdGUkY2VsbFNpemVDIiwidW5waW5uZWRDb2x1bW5zR2hvc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicGlubmVkQ29sdW1uc1dpZHRoIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaGFzUGlubmVkQ29sdW1ucyIsIl90aGVtZSRoZWFkZXJSb3dIZWlnaCIsImhlYWRlclJvd0hlaWdodCIsIl90aGVtZSRoZWFkZXJTdGF0c0NvbiIsIl90aGVtZSRoZWFkZXJSb3dXU3RhdCIsImhlYWRlclJvd1dTdGF0c0hlaWdodCIsIl90aGVtZSRyb3dIZWlnaHQiLCJyb3dIZWlnaHQiLCJyb3dDb3VudCIsInJlZiIsIlNjcm9sbFN5bmMiLCJfcmVmNyIsInBpbm5lZEdyaWQiLCJyZW5kZXJEYXRhQ2VsbCIsIm1hcmdpbkxlZnQiLCJ1bnBpbm5lZEdyaWQiLCJDb21wb25lbnQiLCJzb3J0Q29sdW1uIiwid2l0aFRoZW1lIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1Njcm9sbFN5bmMsIEF1dG9TaXplciwgT25TY3JvbGxQYXJhbXMsIEdyaWRQcm9wcywgSW5kZXh9IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IHtBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcblxuaW1wb3J0IHtDZWxsU2l6ZUNhY2hlfSBmcm9tICcuL2NlbGwtc2l6ZSc7XG5cbmltcG9ydCBHcmlkIGZyb20gJy4vZ3JpZCc7XG5pbXBvcnQgSGVhZGVyQ2VsbEZhY3RvcnkgZnJvbSAnLi9oZWFkZXItY2VsbCc7XG5cbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgZ2V0Q29sdW1uRm9ybWF0dGVyLCBEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YWRqdXN0Q2VsbHNUb0NvbnRhaW5lcn0gZnJvbSAnLi9jZWxsLXNpemUnO1xuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0ID0gNTU7XG5jb25zdCBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0ID0gNDA7XG5jb25zdCBkZWZhdWx0Um93SGVpZ2h0ID0gMzI7XG5jb25zdCBvdmVyc2NhbkNvbHVtbkNvdW50ID0gMTA7XG5jb25zdCBvdmVyc2NhblJvd0NvdW50ID0gMTA7XG4vLyBUaGUgZGVmYXVsdCBzY3JvbGxiYXIgd2lkdGggY2FuIHJhbmdlIGFueXdoZXJlIGZyb20gMTJweCB0byAxN3B4XG5jb25zdCBicm93c2VyU2Nyb2xsQmFyV2lkdGggPSAxNztcbmNvbnN0IGZpZWxkVG9BbGlnblJpZ2h0ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB0cnVlLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB0cnVlXG59O1xuXG5jb25zdCBwaW5uZWRDbGFzc0xpc3QgPSB7XG4gIGhlYWRlcjogJ3Bpbm5lZC1jb2x1bW5zLS1oZWFkZXIgcGlubmVkLWdyaWQtY29udGFpbmVyJyxcbiAgcm93czogJ3Bpbm5lZC1jb2x1bW5zLS1yb3dzIHBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbmNvbnN0IHVucGlubmVkQ2xhc3NMaXN0ID0ge1xuICBoZWFkZXI6ICd1bnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIgdW5waW5uZWQtZ3JpZC1jb250YWluZXInLFxuICByb3dzOiAndW5waW5uZWQtY29sdW1ucy0tcm93cyB1bnBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbnR5cGUgQ29udGFpbmVyUHJvcHMgPSB7XG4gIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2PENvbnRhaW5lclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmbGV4LWdyb3c6IDE7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRhdGFUYWJsZVRleHRDb2xvcn07XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5SZWFjdFZpcnR1YWxpemVkX19HcmlkOmZvY3VzLFxuICAuUmVhY3RWaXJ0dWFsaXplZF9fR3JpZDphY3RpdmUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgLmJvZHktZ3JpZCB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy5oYXNDdXN0b21TY3JvbGxCYXJTdHlsZSAmJiBwcm9wcy50aGVtZS5tb2RhbFNjcm9sbEJhcn1cbiAgfVxuXG4gIC5jZWxsIHtcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICo6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICAucmVzdWx0cy10YWJsZS13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHticm93c2VyU2Nyb2xsQmFyV2lkdGh9cHg7XG4gICAgfVxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnVucGlubmVkLWNvbHVtbnMtLWhlYWRlciB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEJvcmRlckNvbG9yfTtcbiAgICAgIC8vIGxlYXZlIHJvb20gZm9yIHNjcm9sbGJhclxuICAgICAgcGFkZGluZy1ib3R0b206ICR7YnJvd3NlclNjcm9sbEJhcldpZHRofXB4O1xuICAgIH1cblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5ncmlkLXJvdyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgLmdyaWQtY29sdW1uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICAgIC5waW5uZWQtZ3JpZC1jb250YWluZXIge1xuICAgICAgZmxleDogMCAwIDc1cHg7XG4gICAgICB6LWluZGV4OiAxMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBpbm5lZEdyaWRCb3JkZXJDb2xvcn07XG4gICAgfVxuICAgIC5ldmVuLXJvdyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmV2ZW5Sb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLm9kZC1yb3cge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5vZGRSb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLmNlbGwsXG4gICAgLmhlYWRlci1jZWxsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC8vIGhlYWRlciBib3JkZXIgaXMgcmVuZGVyZWQgYnkgaGVhZGVyIGNvbnRhaW5lclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIC5uLXNvcnQtaWR4IHtcbiAgICAgICAgZm9udC1zaXplOiA5cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBwYWRkaW5nOiAwICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxGb250U2l6ZX1weDtcblxuICAgICAgLnJlc3VsdC1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbC5lbmQtY2VsbCxcbiAgICAuaGVhZGVyLWNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5maXJzdC1jZWxsLFxuICAgIC5oZWFkZXItY2VsbC5maXJzdC1jZWxsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5ib3R0b20tY2VsbCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgICAuY2VsbC5hbGlnbi1yaWdodCB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMjAwO1xuXG5leHBvcnQgdHlwZSBTb3J0Q29sdW1uID0ge1xuICBjb2x1bW4/OiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2x1bW5XaWR0aEZ1bmN0aW9uID1cbiAgKGNvbHVtbnMsIGNlbGxTaXplQ2FjaGUsIGdob3N0PykgPT5cbiAgKHtpbmRleH0pID0+IHtcbiAgICByZXR1cm4gKGNvbHVtbnNbaW5kZXhdIHx8IHt9KS5naG9zdFxuICAgICAgPyBnaG9zdFxuICAgICAgOiBjZWxsU2l6ZUNhY2hlW2NvbHVtbnNbaW5kZXhdXSB8fCBkZWZhdWx0Q29sdW1uV2lkdGg7XG4gIH07XG5cbmludGVyZmFjZSBHZXRSb3dDZWxsUHJvcHMge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHwgbnVsbDtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBjb2x1bW46IHN0cmluZztcbiAgY29sTWV0YTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xufVxuXG4vKlxuICogVGhpcyBpcyBhbiBhY2Nlc3NvciBtZXRob2QgdXNlZCB0byBnZW5lcmFsaXplIGdldHRpbmcgYSBjZWxsIGZyb20gYSBkYXRhIHJvd1xuICovXG5jb25zdCBkZWZhdWx0R2V0Um93Q2VsbCA9IChcbiAge2RhdGFDb250YWluZXIsIGNvbHVtbnMsIGNvbHVtbiwgY29sTWV0YSwgcm93SW5kZXgsIHNvcnRPcmRlcn06IEdldFJvd0NlbGxQcm9wcyxcbiAgZm9ybWF0dGVyXG4pID0+IHtcbiAgY29uc3Qgcm93SWR4ID0gc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGggPyBnZXQoc29ydE9yZGVyLCByb3dJbmRleCkgOiByb3dJbmRleDtcbiAgY29uc3Qge3R5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuXG4gIGNvbnN0IHZhbHVlID0gZGF0YUNvbnRhaW5lcj8udmFsdWVBdChyb3dJZHgsIGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pKTtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnXG4gICAgPyAnJ1xuICAgIDogZm9ybWF0dGVyXG4gICAgPyBmb3JtYXR0ZXIodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpO1xufTtcblxudHlwZSBTdGF0c0NvbnRyb2xQcm9wcyA9IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRTdGF0c0NvbnRyb2wgPSBzdHlsZWQuZGl2PFN0YXRzQ29udHJvbFByb3BzPmBcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclN0YXRzQ29udHJvbEhlaWdodH1weDtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudG9wfXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5TWVkaXVtfXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZH07XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gID4gZGl2IHtcbiAgICBwYWRkaW5nOiAwcHggMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzdmcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcyA9PiAocHJvcHMuc2hvd1N0YXRzID8gMTgwIDogMCl9ZGVnKTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0YXRzQ29udHJvbCA9ICh7XG4gIHRvcCxcbiAgc2hvd1N0YXRzLFxuICB0b2dnbGVTaG93U3RhdHNcbn06IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG4gIHRvZ2dsZVNob3dTdGF0czogKCkgPT4gdm9pZDtcbn0pID0+IChcbiAgPFN0eWxlZFN0YXRzQ29udHJvbCB0b3A9e3RvcH0gc2hvd1N0YXRzPXtzaG93U3RhdHN9PlxuICAgIDxkaXYgb25DbGljaz17dG9nZ2xlU2hvd1N0YXRzfT5cbiAgICAgIHtzaG93U3RhdHMgPyAnSGlkZSBDb2x1bW4gU3RhdHMnIDogJ1Nob3cgQ29sdW1uIFN0YXRzJ31cbiAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkU3RhdHNDb250cm9sPlxuKTtcblxuaW50ZXJmYWNlIFRhYmxlU2VjdGlvblByb3BzIHtcbiAgY2xhc3NMaXN0Pzoge1xuICAgIGhlYWRlcjogc3RyaW5nO1xuICAgIHJvd3M6IHN0cmluZztcbiAgfTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGhlYWRlckdyaWRQcm9wcz87XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIG9uU2Nyb2xsPzogKHBhcmFtczogT25TY3JvbGxQYXJhbXMpID0+IHZvaWQ7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZGF0YUdyaWRQcm9wczoge1xuICAgIHJvd0hlaWdodDogbnVtYmVyIHwgKChwYXJhbXM6IEluZGV4KSA9PiBudW1iZXIpO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gIH0gJiBQYXJ0aWFsPEdyaWRQcm9wcz47XG4gIGNvbHVtbldpZHRoPztcbiAgc2V0R3JpZFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbiAgaGVhZGVyQ2VsbFJlbmRlcj87XG4gIGRhdGFDZWxsUmVuZGVyPztcbiAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRhYmxlU2VjdGlvbiA9ICh7XG4gIGNsYXNzTGlzdCxcbiAgaXNQaW5uZWQsXG4gIGNvbHVtbnMsXG4gIGhlYWRlckdyaWRQcm9wcyxcbiAgZml4ZWRXaWR0aCxcbiAgZml4ZWRIZWlnaHQgPSB1bmRlZmluZWQsXG4gIG9uU2Nyb2xsLFxuICBzY3JvbGxUb3AsXG4gIGRhdGFHcmlkUHJvcHMsXG4gIGNvbHVtbldpZHRoLFxuICBzZXRHcmlkUmVmID0gdW5kZWZpbmVkLFxuICBoZWFkZXJDZWxsUmVuZGVyLFxuICBkYXRhQ2VsbFJlbmRlcixcbiAgc2Nyb2xsTGVmdCA9IDBcbn06IFRhYmxlU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGhlYWRlckhlaWdodCA9IGhlYWRlckdyaWRQcm9wcy5oZWlnaHQ7XG5cbiAgY29uc3QgaGVhZGVyU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0b3A6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9TaXplcj5cbiAgICAgIHsoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWREaW1lbnNpb24gPSB7XG4gICAgICAgICAgY29sdW1uQ291bnQ6IGNvbHVtbnMubGVuZ3RoLFxuICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgIHdpZHRoOiBmaXhlZFdpZHRoIHx8IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhlYWRlckdyaWRXaWR0aCA9IGZpeGVkV2lkdGggfHwgd2lkdGg7XG4gICAgICAgIGNvbnN0IGRhdGFHcmlkSGVpZ2h0ID0gZml4ZWRIZWlnaHQgfHwgaGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5oZWFkZXIpfVxuICAgICAgICAgICAgICBzdHlsZT17aGVhZGVyU3R5bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyPXtoZWFkZXJDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmdyaWREaW1lbnNpb259XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWFkZXJHcmlkUHJvcHMuaGVpZ2h0ICsgYnJvd3NlclNjcm9sbEJhcldpZHRofVxuICAgICAgICAgICAgICAgIHdpZHRoPXtoZWFkZXJHcmlkV2lkdGh9XG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17YXJncyA9PiBvblNjcm9sbD8uKHsuLi5hcmdzLCBzY3JvbGxUb3A6c2Nyb2xsVG9wID8/IDAgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5yb3dzKX1cbiAgICAgICAgICAgICAgc3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI9e2RhdGFDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5kYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5ncmlkRGltZW5zaW9ufVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQaW5uZWQgPyAncGlubmVkLWdyaWQnIDogJ2JvZHktZ3JpZCd9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtkYXRhR3JpZEhlaWdodCAtIGhlYWRlckdyaWRQcm9wcy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17c2V0R3JpZFJlZn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0F1dG9TaXplcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHMge1xuICBkYXRhSWQ/OiBzdHJpbmc7XG4gIGhhc1N0YXRzPzogYm9vbGVhbjtcbiAgY2VsbFNpemVDYWNoZT86IENlbGxTaXplQ2FjaGU7XG4gIHBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBmaXhlZFdpZHRoPzogbnVtYmVyIHwgbnVsbDtcbiAgdGhlbWU/OiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIGNvbE1ldGE6IENvbE1ldGE7XG4gIHNvcnRDb2x1bW46IFNvcnRDb2x1bW47XG4gIHNvcnRUYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBwaW5UYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiB2b2lkO1xuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PzogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBjb3B5VGFibGVDb2x1bW46IChjb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT86IGJvb2xlYW47XG4gIGdldFJvd0NlbGw/OiAocmVuZGVyRGF0YUNlbGxQcm9wczogR2V0Um93Q2VsbFByb3BzLCBmb3JtYXR0ZXI6IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGF0YVRhYmxlU3RhdGUge1xuICBjZWxsU2l6ZUNhY2hlPzogQ2VsbFNpemVDYWNoZTtcbiAgbW9yZU9wdGlvbnNDb2x1bW4/O1xuICBnaG9zdD87XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERVTU1ZX1NUWUxFID0ge307XG5cbkRhdGFUYWJsZUZhY3RvcnkuZGVwcyA9IFtIZWFkZXJDZWxsRmFjdG9yeV07XG5mdW5jdGlvbiBEYXRhVGFibGVGYWN0b3J5KFxuICBIZWFkZXJDZWxsOiBSZXR1cm5UeXBlPHR5cGVvZiBIZWFkZXJDZWxsRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+IHtcbiAgY2xhc3MgRGF0YVRhYmxlIGV4dGVuZHMgQ29tcG9uZW50PERhdGFUYWJsZVByb3BzLCBEYXRhVGFibGVTdGF0ZT4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBkYXRhQ29udGFpbmVyOiBudWxsLFxuICAgICAgcGlubmVkQ29sdW1uczogW10sXG4gICAgICBjb2xNZXRhOiB7fSxcbiAgICAgIGNlbGxTaXplQ2FjaGU6IHt9LFxuICAgICAgc29ydENvbHVtbjoge30sXG4gICAgICBmaXhlZFdpZHRoOiBudWxsLFxuICAgICAgZml4ZWRIZWlnaHQ6IG51bGwsXG4gICAgICB0aGVtZToge30sXG4gICAgICBoYXNTdGF0czogZmFsc2UsXG4gICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZTogdHJ1ZVxuICAgIH07XG5cbiAgICBwaW5uZWRHcmlkOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHVucGlubmVkR3JpZDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBoYXNNb3VudGVkID0gZmFsc2U7XG5cbiAgICBzdGF0ZTogRGF0YVRhYmxlU3RhdGUgPSB7XG4gICAgICBjZWxsU2l6ZUNhY2hlOiB7fSxcbiAgICAgIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsLFxuICAgICAgc2hvd1N0YXRzOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5oYXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnNjYWxlQ2VsbHNUb1dpZHRoKTtcbiAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSAhPT0gcHJldlByb3BzLmNlbGxTaXplQ2FjaGUgfHxcbiAgICAgICAgdGhpcy5wcm9wcy5waW5uZWRDb2x1bW5zICE9PSBwcmV2UHJvcHMucGlubmVkQ29sdW1uc1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuaGFzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgIH1cblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgY29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLmNvbHVtbnM7XG4gICAgcGlubmVkQ29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLnBpbm5lZENvbHVtbnM7XG4gICAgdW5waW5uZWRDb2x1bW5zID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jb2x1bW5zLCB0aGlzLnBpbm5lZENvbHVtbnMsIChjb2x1bW5zLCBwaW5uZWRDb2x1bW5zKSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkocGlubmVkQ29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5maWx0ZXIoYyA9PiAhcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjKSlcbiAgICApO1xuXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMgPSBtb3JlT3B0aW9uc0NvbHVtbiA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtbjpcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubW9yZU9wdGlvbnNDb2x1bW4gPT09IG1vcmVPcHRpb25zQ29sdW1uID8gbnVsbCA6IG1vcmVPcHRpb25zQ29sdW1uXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdG9nZ2xlU2hvd1N0YXRzID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzTW91bnRlZCkgdGhpcy5zZXRTdGF0ZSh7c2hvd1N0YXRzOiAhdGhpcy5zdGF0ZS5zaG93U3RhdHN9KTtcbiAgICB9O1xuICAgIGdldENlbGxTaXplQ2FjaGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZTogcHJvcHNDYWNoZSA9IHt9LCBmaXhlZFdpZHRoLCBwaW5uZWRDb2x1bW5zID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGZpeGVkV2lkdGggPyBmaXhlZFdpZHRoIDogdGhpcy5yb290LmN1cnJlbnQgPyB0aGlzLnJvb3QuY3VycmVudC5jbGllbnRXaWR0aCA6IDA7XG5cbiAgICAgIC8vIHBpbiBjb2x1bW4gYm9yZGVyIGlzIDIgcGl4ZWwgdnMgMSBwaXhlbFxuICAgICAgY29uc3QgYWRqdXN0V2lkdGggPSBwaW5uZWRDb2x1bW5zLmxlbmd0aCA/IHdpZHRoIC0gMSA6IHdpZHRoO1xuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUsIGdob3N0fSA9IGFkanVzdENlbGxzVG9Db250YWluZXIoXG4gICAgICAgIGFkanVzdFdpZHRoLFxuICAgICAgICBwcm9wc0NhY2hlLFxuICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICB1bnBpbm5lZENvbHVtbnNcbiAgICAgICkgYXMge2NlbGxTaXplQ2FjaGU6IENlbGxTaXplQ2FjaGU7IGdob3N0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgZ2hvc3RcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRvU2NhbGVDZWxsc1RvV2lkdGggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKSB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0Q2VsbFNpemVDYWNoZSgpKTtcbiAgICB9O1xuXG4gICAgc2NhbGVDZWxsc1RvV2lkdGggPSBkZWJvdW5jZSh0aGlzLmRvU2NhbGVDZWxsc1RvV2lkdGgsIDMwMCk7XG5cbiAgICByZW5kZXJEYXRhQ2VsbCA9IChjb2x1bW5zLCBpc1Bpbm5lZCwgcHJvcHM6IERhdGFUYWJsZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBnZXRSb3dDZWxsID0gdGhpcy5wcm9wcy5nZXRSb3dDZWxsID8/IGRlZmF1bHRHZXRSb3dDZWxsO1xuICAgICAgY29uc3QgRGF0YUNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IHtcbiAgICAgICAgY29uc3Qge2NvbHVtbkluZGV4LCBrZXksIHN0eWxlLCByb3dJbmRleH0gPSBjZWxsSW5mbztcbiAgICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGNvbE1ldGF9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGlzR2hvc3QgPyBudWxsIDogZ2V0Q29sdW1uRm9ybWF0dGVyKGNvbE1ldGFbY29sdW1uXSk7XG4gICAgICAgIGNvbnN0IHJvd0NlbGwgPSBpc0dob3N0ID8gJycgOiBnZXRSb3dDZWxsKHsuLi5wcm9wcywgY29sdW1uLCByb3dJbmRleH0sIGZvcm1hdHRlcik7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBpc0dob3N0ID8gbnVsbCA6IGNvbE1ldGFbY29sdW1uXS50eXBlO1xuXG4gICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSAtIDEgOiAwO1xuXG4gICAgICAgIGNvbnN0IGVuZENlbGwgPSBjb2x1bW5JbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBmaXJzdENlbGwgPSBjb2x1bW5JbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgYm90dG9tQ2VsbCA9IHJvd0luZGV4ID09PSBsYXN0Um93SW5kZXg7XG4gICAgICAgIGNvbnN0IGFsaWduUmlnaHQgPSBmaWVsZFRvQWxpZ25SaWdodFtOdW1iZXIodHlwZSldO1xuXG4gICAgICAgIGNvbnN0IGNlbGwgPSAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjZWxsJywge1xuICAgICAgICAgICAgICBbcm93SW5kZXggJSAyID09PSAwID8gJ2V2ZW4tcm93JyA6ICdvZGQtcm93J106IHRydWUsXG4gICAgICAgICAgICAgIFtgcm93LSR7cm93SW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgICAgICdwaW5uZWQtY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbCxcbiAgICAgICAgICAgICAgJ2VuZC1jZWxsJzogZW5kQ2VsbCxcbiAgICAgICAgICAgICAgJ2JvdHRvbS1jZWxsJzogYm90dG9tQ2VsbCxcbiAgICAgICAgICAgICAgJ2FsaWduLXJpZ2h0JzogYWxpZ25SaWdodFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIHRpdGxlPXtpc0dob3N0ID8gdW5kZWZpbmVkIDogcm93Q2VsbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YCR7cm93Q2VsbH0ke2VuZENlbGwgPyAnXFxuJyA6ICdcXHQnfWB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIERhdGFDZWxsUmVuZGVyZXI7XG4gICAgfTtcblxuICAgIHJlbmRlckhlYWRlckNlbGwoY29sdW1ucywgaXNQaW5uZWQsIHByb3BzLCB0b2dnbGVNb3JlT3B0aW9ucywgbW9yZU9wdGlvbnNDb2x1bW4pIHtcbiAgICAgIGNvbnN0IEhlYWRlckNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IChcbiAgICAgICAgPEhlYWRlckNlbGxcbiAgICAgICAgICBjZWxsSW5mbz17Y2VsbEluZm99XG4gICAgICAgICAga2V5PXtjZWxsSW5mby5jb2x1bW5JbmRleH1cbiAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgIGlzUGlubmVkPXtpc1Bpbm5lZH1cbiAgICAgICAgICBzaG93U3RhdHM9e3RoaXMuc3RhdGUuc2hvd1N0YXRzfVxuICAgICAgICAgIHByb3BzPXtwcm9wc31cbiAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW49e21vcmVPcHRpb25zQ29sdW1ufVxuICAgICAgICAgIC8vIHBhc3MgZHVtbXkgc3R5bGUgdG8gcHJldmVudCB3YXJuaW5ncyBmcm9tIHJlYWN0LXZpcnR1YWxpemVkIEdyaWRcbiAgICAgICAgICBzdHlsZT17RFVNTVlfU1RZTEV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIEhlYWRlckNlbGxSZW5kZXJlcjtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBwaW5uZWRDb2x1bW5zID0gW10sXG4gICAgICAgIHRoZW1lID0ge30sXG4gICAgICAgIGZpeGVkV2lkdGgsXG4gICAgICAgIGZpeGVkSGVpZ2h0ID0gMCxcbiAgICAgICAgaGFzU3RhdHMsXG4gICAgICAgIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZSA9IHt9LCBtb3JlT3B0aW9uc0NvbHVtbiwgZ2hvc3QsIHNob3dTdGF0c30gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgdW5waW5uZWRDb2x1bW5zR2hvc3QgPSBnaG9zdFxuICAgICAgICA/IFsuLi51bnBpbm5lZENvbHVtbnMsIHtnaG9zdDogdHJ1ZX0gYXMgc3RyaW5nICYge2dob3N0OiBib29sZWFufV1cbiAgICAgICAgOiB1bnBpbm5lZENvbHVtbnM7XG4gICAgICBjb25zdCBwaW5uZWRDb2x1bW5zV2lkdGggPSBwaW5uZWRDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGFjYywgdmFsKSA9PiBhY2MgKyAoZ2V0KGNlbGxTaXplQ2FjaGUsIHZhbCwgMCkgYXMgbnVtYmVyKSxcbiAgICAgICAgMFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGFzUGlubmVkQ29sdW1ucyA9IEJvb2xlYW4ocGlubmVkQ29sdW1ucy5sZW5ndGgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBoZWFkZXJSb3dIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICBoZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHQgPSBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICBoZWFkZXJSb3dXU3RhdHNIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICByb3dIZWlnaHQgPSBkZWZhdWx0Um93SGVpZ2h0XG4gICAgICB9ID0gdGhlbWU7XG5cbiAgICAgIGNvbnN0IGhlYWRlckdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnaGVhZGVyLWdyaWQnLFxuICAgICAgICBoZWlnaHQ6ICFoYXNTdGF0c1xuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgOiBzaG93U3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd1dTdGF0c0hlaWdodFxuICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0ICsgaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICByb3dDb3VudDogMSxcbiAgICAgICAgcm93SGVpZ2h0OiAhaGFzU3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIDogc2hvd1N0YXRzXG4gICAgICAgICAgPyBoZWFkZXJSb3dXU3RhdHNIZWlnaHRcbiAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCArIGhlYWRlclN0YXRzQ29udHJvbEhlaWdodFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZGF0YUdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudCxcbiAgICAgICAgb3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgcm93Q291bnQ6IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA6IDAsXG4gICAgICAgIHJvd0hlaWdodFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGEtdGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT17aGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2VsbFNpemVDYWNoZSkubGVuZ3RoID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNjcm9sbFN5bmM+XG4gICAgICAgICAgICAgICAgeyh7b25TY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvcH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0cy10YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hhc1Bpbm5lZENvbHVtbnMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9XCJwaW5uZWQtY29sdW1uc1wiIGNsYXNzTmFtZT1cInBpbm5lZC1jb2x1bW5zIGdyaWQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3Q9e3Bpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bpbm5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRXaWR0aD17cGlubmVkQ29sdW1uc1dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXthcmdzID0+IG9uU2Nyb2xsKHsuLi5hcmdzLCBzY3JvbGxMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZFByb3BzPXtkYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyaWRSZWY9e3Bpbm5lZEdyaWQgPT4gKHRoaXMucGlubmVkR3JpZCA9IHBpbm5lZEdyaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKHBpbm5lZENvbHVtbnMsIGNlbGxTaXplQ2FjaGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGxSZW5kZXI9e3RoaXMucmVuZGVySGVhZGVyQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNlbGxSZW5kZXI9e3RoaXMucmVuZGVyRGF0YUNlbGwocGlubmVkQ29sdW1ucywgdHJ1ZSwgdGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInVucGlubmVkLWNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogYCR7aGFzUGlubmVkQ29sdW1ucyA/IGAke3Bpbm5lZENvbHVtbnNXaWR0aH1weGAgOiAnMCd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVucGlubmVkLWNvbHVtbnMgZ3JpZC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0PXt1bnBpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaW5uZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXt1bnBpbm5lZENvbHVtbnNHaG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZpeGVkV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkSGVpZ2h0PXtmaXhlZEhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A9e3Njcm9sbFRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWRQcm9wcz17ZGF0YUdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17dW5waW5uZWRHcmlkID0+ICh0aGlzLnVucGlubmVkR3JpZCA9IHVucGlubmVkR3JpZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTaXplQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hvc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJIZWFkZXJDZWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVNb3JlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJEYXRhQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxTeW5jPlxuICAgICAgICAgICAgICB7aGFzU3RhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFN0YXRzQ29udHJvbFxuICAgICAgICAgICAgICAgICAgdG9wPXtoZWFkZXJSb3dIZWlnaHR9XG4gICAgICAgICAgICAgICAgICBzaG93U3RhdHM9e3Nob3dTdGF0c31cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZVNob3dTdGF0cz17dGhpcy50b2dnbGVTaG93U3RhdHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoRGF0YVRhYmxlIGFzIFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLElBQUEsR0FBQUYsc0JBQUEs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
471
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXJ0dWFsaXplZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NsYXNzbmFtZXMyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZXNlbGVjdCIsIl9nZXQiLCJfZGVib3VuY2UiLCJfaWNvbnMiLCJfZ3JpZCIsIl9oZWFkZXJDZWxsIiwiX3V0aWxzIiwiX2NlbGxTaXplIiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmF1bHRIZWFkZXJSb3dIZWlnaHQiLCJkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiZGVmYXVsdFJvd0hlaWdodCIsIm92ZXJzY2FuQ29sdW1uQ291bnQiLCJvdmVyc2NhblJvd0NvdW50IiwiYnJvd3NlclNjcm9sbEJhcldpZHRoIiwiZmllbGRUb0FsaWduUmlnaHQiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInBpbm5lZENsYXNzTGlzdCIsImhlYWRlciIsInJvd3MiLCJ1bnBpbm5lZENsYXNzTGlzdCIsIkNvbnRhaW5lciIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJkYXRhVGFibGVUZXh0Q29sb3IiLCJoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIm1vZGFsU2Nyb2xsQmFyIiwiY2VsbEJvcmRlckNvbG9yIiwicGlubmVkR3JpZEJvcmRlckNvbG9yIiwiZXZlblJvd0JhY2tncm91bmQiLCJvZGRSb3dCYWNrZ3JvdW5kIiwiY2VsbFBhZGRpbmdTaWRlIiwiY2VsbEZvbnRTaXplIiwiZWRnZUNlbGxQYWRkaW5nU2lkZSIsImRlZmF1bHRDb2x1bW5XaWR0aCIsImNvbHVtbldpZHRoRnVuY3Rpb24iLCJjb2x1bW5zIiwiY2VsbFNpemVDYWNoZSIsImdob3N0IiwiX3JlZiIsImluZGV4IiwiZGVmYXVsdEdldFJvd0NlbGwiLCJfcmVmMiIsImZvcm1hdHRlciIsImRhdGFDb250YWluZXIiLCJjb2x1bW4iLCJjb2xNZXRhIiwicm93SW5kZXgiLCJzb3J0T3JkZXIiLCJyb3dJZHgiLCJ0eXBlIiwidmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsInBhcnNlRmllbGRWYWx1ZSIsIlN0eWxlZFN0YXRzQ29udHJvbCIsImhlYWRlclN0YXRzQ29udHJvbEhlaWdodCIsInRvcCIsImZvbnRGYW1pbHlNZWRpdW0iLCJhY3RpdmVDb2xvciIsImhlYWRlckNlbGxTdGF0c0NvbnRyb2xCYWNrZ3JvdW5kIiwic2hvd1N0YXRzIiwiU3RhdHNDb250cm9sIiwiX3JlZjMiLCJ0b2dnbGVTaG93U3RhdHMiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIkFycm93RG93biIsImhlaWdodCIsIlRhYmxlU2VjdGlvbiIsIl9yZWY0IiwiY2xhc3NMaXN0IiwiaXNQaW5uZWQiLCJoZWFkZXJHcmlkUHJvcHMiLCJmaXhlZFdpZHRoIiwiX3JlZjQkZml4ZWRIZWlnaHQiLCJmaXhlZEhlaWdodCIsIm9uU2Nyb2xsIiwic2Nyb2xsVG9wIiwiZGF0YUdyaWRQcm9wcyIsImNvbHVtbldpZHRoIiwiX3JlZjQkc2V0R3JpZFJlZiIsInNldEdyaWRSZWYiLCJoZWFkZXJDZWxsUmVuZGVyIiwiZGF0YUNlbGxSZW5kZXIiLCJfcmVmNCRzY3JvbGxMZWZ0Iiwic2Nyb2xsTGVmdCIsImhlYWRlckhlaWdodCIsImhlYWRlclN0eWxlIiwidXNlTWVtbyIsImNvbmNhdCIsImNvbnRlbnRTdHlsZSIsIkF1dG9TaXplciIsIl9yZWY1Iiwid2lkdGgiLCJncmlkRGltZW5zaW9uIiwiY29sdW1uQ291bnQiLCJoZWFkZXJHcmlkV2lkdGgiLCJkYXRhR3JpZEhlaWdodCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwiX2V4dGVuZHMyIiwiY2VsbFJlbmRlcmVyIiwiYXJncyIsIkRVTU1ZX1NUWUxFIiwiRGF0YVRhYmxlRmFjdG9yeSIsImRlcHMiLCJIZWFkZXJDZWxsRmFjdG9yeSIsIkhlYWRlckNlbGwiLCJEYXRhVGFibGUiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsIkFycmF5IiwiX2tleSIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY3JlYXRlUmVmIiwicGlubmVkQ29sdW1ucyIsImNyZWF0ZVNlbGVjdG9yIiwiaXNBcnJheSIsImMiLCJpbmNsdWRlcyIsImhhc01vdW50ZWQiLCJzZXRTdGF0ZSIsInN0YXRlIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRjZWxsU2l6ZUMiLCJwcm9wc0NhY2hlIiwiX3RoaXMkcHJvcHMkcGlubmVkQ29sIiwidW5waW5uZWRDb2x1bW5zIiwicm9vdCIsImN1cnJlbnQiLCJjbGllbnRXaWR0aCIsImFkanVzdFdpZHRoIiwiX3JlZjYiLCJhZGp1c3RDZWxsc1RvQ29udGFpbmVyIiwiZ2V0Q2VsbFNpemVDYWNoZSIsImRlYm91bmNlIiwiZG9TY2FsZUNlbGxzVG9XaWR0aCIsIl90aGlzJHByb3BzJGdldFJvd0NlbCIsImdldFJvd0NlbGwiLCJEYXRhQ2VsbFJlbmRlcmVyIiwiY2VsbEluZm8iLCJjb2x1bW5JbmRleCIsImtleSIsImlzR2hvc3QiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJyb3dDZWxsIiwibGFzdFJvd0luZGV4IiwibnVtUm93cyIsImVuZENlbGwiLCJmaXJzdENlbGwiLCJib3R0b21DZWxsIiwiYWxpZ25SaWdodCIsIk51bWJlciIsImNlbGwiLCJ0aXRsZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwic2NhbGVDZWxsc1RvV2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXJIZWFkZXJDZWxsIiwidG9nZ2xlTW9yZU9wdGlvbnMiLCJfdGhpczIiLCJIZWFkZXJDZWxsUmVuZGVyZXIiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wczIkcGlubmVkQ28iLCJfdGhpcyRwcm9wczIkdGhlbWUiLCJfdGhpcyRwcm9wczIkZml4ZWRIZWkiLCJoYXNTdGF0cyIsIl90aGlzJHN0YXRlIiwiX3RoaXMkc3RhdGUkY2VsbFNpemVDIiwidW5waW5uZWRDb2x1bW5zR2hvc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicGlubmVkQ29sdW1uc1dpZHRoIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaGFzUGlubmVkQ29sdW1ucyIsIl90aGVtZSRoZWFkZXJSb3dIZWlnaCIsImhlYWRlclJvd0hlaWdodCIsIl90aGVtZSRoZWFkZXJTdGF0c0NvbiIsIl90aGVtZSRoZWFkZXJSb3dXU3RhdCIsImhlYWRlclJvd1dTdGF0c0hlaWdodCIsIl90aGVtZSRyb3dIZWlnaHQiLCJyb3dIZWlnaHQiLCJyb3dDb3VudCIsInJlZiIsIlNjcm9sbFN5bmMiLCJfcmVmNyIsInBpbm5lZEdyaWQiLCJyZW5kZXJEYXRhQ2VsbCIsIm1hcmdpbkxlZnQiLCJ1bnBpbm5lZEdyaWQiLCJDb21wb25lbnQiLCJzb3J0Q29sdW1uIiwid2l0aFRoZW1lIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1Njcm9sbFN5bmMsIEF1dG9TaXplciwgT25TY3JvbGxQYXJhbXMsIEdyaWRQcm9wcywgSW5kZXh9IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IHtBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcblxuaW1wb3J0IHtDZWxsU2l6ZUNhY2hlfSBmcm9tICcuL2NlbGwtc2l6ZSc7XG5cbmltcG9ydCBHcmlkIGZyb20gJy4vZ3JpZCc7XG5pbXBvcnQgSGVhZGVyQ2VsbEZhY3RvcnkgZnJvbSAnLi9oZWFkZXItY2VsbCc7XG5cbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgZ2V0Q29sdW1uRm9ybWF0dGVyLCBEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YWRqdXN0Q2VsbHNUb0NvbnRhaW5lcn0gZnJvbSAnLi9jZWxsLXNpemUnO1xuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0ID0gNTU7XG5jb25zdCBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0ID0gNDA7XG5jb25zdCBkZWZhdWx0Um93SGVpZ2h0ID0gMzI7XG5jb25zdCBvdmVyc2NhbkNvbHVtbkNvdW50ID0gMTA7XG5jb25zdCBvdmVyc2NhblJvd0NvdW50ID0gMTA7XG4vLyBUaGUgZGVmYXVsdCBzY3JvbGxiYXIgd2lkdGggY2FuIHJhbmdlIGFueXdoZXJlIGZyb20gMTJweCB0byAxN3B4XG5jb25zdCBicm93c2VyU2Nyb2xsQmFyV2lkdGggPSAxNztcbmNvbnN0IGZpZWxkVG9BbGlnblJpZ2h0ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB0cnVlLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB0cnVlXG59O1xuXG5jb25zdCBwaW5uZWRDbGFzc0xpc3QgPSB7XG4gIGhlYWRlcjogJ3Bpbm5lZC1jb2x1bW5zLS1oZWFkZXIgcGlubmVkLWdyaWQtY29udGFpbmVyJyxcbiAgcm93czogJ3Bpbm5lZC1jb2x1bW5zLS1yb3dzIHBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbmNvbnN0IHVucGlubmVkQ2xhc3NMaXN0ID0ge1xuICBoZWFkZXI6ICd1bnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIgdW5waW5uZWQtZ3JpZC1jb250YWluZXInLFxuICByb3dzOiAndW5waW5uZWQtY29sdW1ucy0tcm93cyB1bnBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbnR5cGUgQ29udGFpbmVyUHJvcHMgPSB7XG4gIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2PENvbnRhaW5lclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmbGV4LWdyb3c6IDE7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRhdGFUYWJsZVRleHRDb2xvcn07XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5SZWFjdFZpcnR1YWxpemVkX19HcmlkOmZvY3VzLFxuICAuUmVhY3RWaXJ0dWFsaXplZF9fR3JpZDphY3RpdmUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgLmJvZHktZ3JpZCB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy5oYXNDdXN0b21TY3JvbGxCYXJTdHlsZSAmJiBwcm9wcy50aGVtZS5tb2RhbFNjcm9sbEJhcn1cbiAgfVxuXG4gIC5jZWxsIHtcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICo6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICAucmVzdWx0cy10YWJsZS13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHticm93c2VyU2Nyb2xsQmFyV2lkdGh9cHg7XG4gICAgfVxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnVucGlubmVkLWNvbHVtbnMtLWhlYWRlciB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEJvcmRlckNvbG9yfTtcbiAgICAgIC8vIGxlYXZlIHJvb20gZm9yIHNjcm9sbGJhclxuICAgICAgcGFkZGluZy1ib3R0b206ICR7YnJvd3NlclNjcm9sbEJhcldpZHRofXB4O1xuICAgIH1cblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5ncmlkLXJvdyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgLmdyaWQtY29sdW1uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICAgIC5waW5uZWQtZ3JpZC1jb250YWluZXIge1xuICAgICAgZmxleDogMCAwIDc1cHg7XG4gICAgICB6LWluZGV4OiAxMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBpbm5lZEdyaWRCb3JkZXJDb2xvcn07XG4gICAgfVxuICAgIC5ldmVuLXJvdyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmV2ZW5Sb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLm9kZC1yb3cge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5vZGRSb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLmNlbGwsXG4gICAgLmhlYWRlci1jZWxsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC8vIGhlYWRlciBib3JkZXIgaXMgcmVuZGVyZWQgYnkgaGVhZGVyIGNvbnRhaW5lclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIC5uLXNvcnQtaWR4IHtcbiAgICAgICAgZm9udC1zaXplOiA5cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBwYWRkaW5nOiAwICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxGb250U2l6ZX1weDtcblxuICAgICAgLnJlc3VsdC1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbC5lbmQtY2VsbCxcbiAgICAuaGVhZGVyLWNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5maXJzdC1jZWxsLFxuICAgIC5oZWFkZXItY2VsbC5maXJzdC1jZWxsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5ib3R0b20tY2VsbCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgICAuY2VsbC5hbGlnbi1yaWdodCB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMjAwO1xuXG5leHBvcnQgdHlwZSBTb3J0Q29sdW1uID0ge1xuICBjb2x1bW4/OiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2x1bW5XaWR0aEZ1bmN0aW9uID1cbiAgKGNvbHVtbnMsIGNlbGxTaXplQ2FjaGUsIGdob3N0PykgPT5cbiAgKHtpbmRleH0pID0+IHtcbiAgICByZXR1cm4gKGNvbHVtbnNbaW5kZXhdIHx8IHt9KS5naG9zdFxuICAgICAgPyBnaG9zdFxuICAgICAgOiBjZWxsU2l6ZUNhY2hlW2NvbHVtbnNbaW5kZXhdXSB8fCBkZWZhdWx0Q29sdW1uV2lkdGg7XG4gIH07XG5cbmludGVyZmFjZSBHZXRSb3dDZWxsUHJvcHMge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHwgbnVsbDtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBjb2x1bW46IHN0cmluZztcbiAgY29sTWV0YTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xufVxuXG4vKlxuICogVGhpcyBpcyBhbiBhY2Nlc3NvciBtZXRob2QgdXNlZCB0byBnZW5lcmFsaXplIGdldHRpbmcgYSBjZWxsIGZyb20gYSBkYXRhIHJvd1xuICovXG5jb25zdCBkZWZhdWx0R2V0Um93Q2VsbCA9IChcbiAge2RhdGFDb250YWluZXIsIGNvbHVtbnMsIGNvbHVtbiwgY29sTWV0YSwgcm93SW5kZXgsIHNvcnRPcmRlcn06IEdldFJvd0NlbGxQcm9wcyxcbiAgZm9ybWF0dGVyXG4pID0+IHtcbiAgY29uc3Qgcm93SWR4ID0gc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGggPyBnZXQoc29ydE9yZGVyLCByb3dJbmRleCkgOiByb3dJbmRleDtcbiAgY29uc3Qge3R5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuXG4gIGNvbnN0IHZhbHVlID0gZGF0YUNvbnRhaW5lcj8udmFsdWVBdChyb3dJZHgsIGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pKTtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnXG4gICAgPyAnJ1xuICAgIDogZm9ybWF0dGVyXG4gICAgPyBmb3JtYXR0ZXIodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpO1xufTtcblxudHlwZSBTdGF0c0NvbnRyb2xQcm9wcyA9IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRTdGF0c0NvbnRyb2wgPSBzdHlsZWQuZGl2PFN0YXRzQ29udHJvbFByb3BzPmBcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclN0YXRzQ29udHJvbEhlaWdodH1weDtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudG9wfXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5TWVkaXVtfXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZH07XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gID4gZGl2IHtcbiAgICBwYWRkaW5nOiAwcHggMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzdmcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcyA9PiAocHJvcHMuc2hvd1N0YXRzID8gMTgwIDogMCl9ZGVnKTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0YXRzQ29udHJvbCA9ICh7XG4gIHRvcCxcbiAgc2hvd1N0YXRzLFxuICB0b2dnbGVTaG93U3RhdHNcbn06IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG4gIHRvZ2dsZVNob3dTdGF0czogKCkgPT4gdm9pZDtcbn0pID0+IChcbiAgPFN0eWxlZFN0YXRzQ29udHJvbCB0b3A9e3RvcH0gc2hvd1N0YXRzPXtzaG93U3RhdHN9PlxuICAgIDxkaXYgb25DbGljaz17dG9nZ2xlU2hvd1N0YXRzfT5cbiAgICAgIHtzaG93U3RhdHMgPyAnSGlkZSBDb2x1bW4gU3RhdHMnIDogJ1Nob3cgQ29sdW1uIFN0YXRzJ31cbiAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkU3RhdHNDb250cm9sPlxuKTtcblxuaW50ZXJmYWNlIFRhYmxlU2VjdGlvblByb3BzIHtcbiAgY2xhc3NMaXN0Pzoge1xuICAgIGhlYWRlcjogc3RyaW5nO1xuICAgIHJvd3M6IHN0cmluZztcbiAgfTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGhlYWRlckdyaWRQcm9wcz87XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIG9uU2Nyb2xsPzogKHBhcmFtczogT25TY3JvbGxQYXJhbXMpID0+IHZvaWQ7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZGF0YUdyaWRQcm9wczoge1xuICAgIHJvd0hlaWdodDogbnVtYmVyIHwgKChwYXJhbXM6IEluZGV4KSA9PiBudW1iZXIpO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gIH0gJiBQYXJ0aWFsPEdyaWRQcm9wcz47XG4gIGNvbHVtbldpZHRoPztcbiAgc2V0R3JpZFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbiAgaGVhZGVyQ2VsbFJlbmRlcj87XG4gIGRhdGFDZWxsUmVuZGVyPztcbiAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRhYmxlU2VjdGlvbiA9ICh7XG4gIGNsYXNzTGlzdCxcbiAgaXNQaW5uZWQsXG4gIGNvbHVtbnMsXG4gIGhlYWRlckdyaWRQcm9wcyxcbiAgZml4ZWRXaWR0aCxcbiAgZml4ZWRIZWlnaHQgPSB1bmRlZmluZWQsXG4gIG9uU2Nyb2xsLFxuICBzY3JvbGxUb3AsXG4gIGRhdGFHcmlkUHJvcHMsXG4gIGNvbHVtbldpZHRoLFxuICBzZXRHcmlkUmVmID0gdW5kZWZpbmVkLFxuICBoZWFkZXJDZWxsUmVuZGVyLFxuICBkYXRhQ2VsbFJlbmRlcixcbiAgc2Nyb2xsTGVmdCA9IDBcbn06IFRhYmxlU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGhlYWRlckhlaWdodCA9IGhlYWRlckdyaWRQcm9wcy5oZWlnaHQ7XG5cbiAgY29uc3QgaGVhZGVyU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0b3A6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9TaXplcj5cbiAgICAgIHsoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWREaW1lbnNpb24gPSB7XG4gICAgICAgICAgY29sdW1uQ291bnQ6IGNvbHVtbnMubGVuZ3RoLFxuICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgIHdpZHRoOiBmaXhlZFdpZHRoIHx8IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhlYWRlckdyaWRXaWR0aCA9IGZpeGVkV2lkdGggfHwgd2lkdGg7XG4gICAgICAgIGNvbnN0IGRhdGFHcmlkSGVpZ2h0ID0gZml4ZWRIZWlnaHQgfHwgaGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5oZWFkZXIpfVxuICAgICAgICAgICAgICBzdHlsZT17aGVhZGVyU3R5bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyPXtoZWFkZXJDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmdyaWREaW1lbnNpb259XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWFkZXJHcmlkUHJvcHMuaGVpZ2h0ICsgYnJvd3NlclNjcm9sbEJhcldpZHRofVxuICAgICAgICAgICAgICAgIHdpZHRoPXtoZWFkZXJHcmlkV2lkdGh9XG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17YXJncyA9PiBvblNjcm9sbD8uKHsuLi5hcmdzLCBzY3JvbGxUb3A6IHNjcm9sbFRvcCA/PyAwfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5yb3dzKX1cbiAgICAgICAgICAgICAgc3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI9e2RhdGFDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5kYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5ncmlkRGltZW5zaW9ufVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQaW5uZWQgPyAncGlubmVkLWdyaWQnIDogJ2JvZHktZ3JpZCd9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtkYXRhR3JpZEhlaWdodCAtIGhlYWRlckdyaWRQcm9wcy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17c2V0R3JpZFJlZn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0F1dG9TaXplcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHMge1xuICBkYXRhSWQ/OiBzdHJpbmc7XG4gIGhhc1N0YXRzPzogYm9vbGVhbjtcbiAgY2VsbFNpemVDYWNoZT86IENlbGxTaXplQ2FjaGU7XG4gIHBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBmaXhlZFdpZHRoPzogbnVtYmVyIHwgbnVsbDtcbiAgdGhlbWU/OiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIGNvbE1ldGE6IENvbE1ldGE7XG4gIHNvcnRDb2x1bW46IFNvcnRDb2x1bW47XG4gIHNvcnRUYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBwaW5UYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiB2b2lkO1xuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PzogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBjb3B5VGFibGVDb2x1bW46IChjb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT86IGJvb2xlYW47XG4gIGdldFJvd0NlbGw/OiAocmVuZGVyRGF0YUNlbGxQcm9wczogR2V0Um93Q2VsbFByb3BzLCBmb3JtYXR0ZXI6IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGF0YVRhYmxlU3RhdGUge1xuICBjZWxsU2l6ZUNhY2hlPzogQ2VsbFNpemVDYWNoZTtcbiAgbW9yZU9wdGlvbnNDb2x1bW4/O1xuICBnaG9zdD87XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERVTU1ZX1NUWUxFID0ge307XG5cbkRhdGFUYWJsZUZhY3RvcnkuZGVwcyA9IFtIZWFkZXJDZWxsRmFjdG9yeV07XG5mdW5jdGlvbiBEYXRhVGFibGVGYWN0b3J5KFxuICBIZWFkZXJDZWxsOiBSZXR1cm5UeXBlPHR5cGVvZiBIZWFkZXJDZWxsRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+IHtcbiAgY2xhc3MgRGF0YVRhYmxlIGV4dGVuZHMgQ29tcG9uZW50PERhdGFUYWJsZVByb3BzLCBEYXRhVGFibGVTdGF0ZT4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBkYXRhQ29udGFpbmVyOiBudWxsLFxuICAgICAgcGlubmVkQ29sdW1uczogW10sXG4gICAgICBjb2xNZXRhOiB7fSxcbiAgICAgIGNlbGxTaXplQ2FjaGU6IHt9LFxuICAgICAgc29ydENvbHVtbjoge30sXG4gICAgICBmaXhlZFdpZHRoOiBudWxsLFxuICAgICAgZml4ZWRIZWlnaHQ6IG51bGwsXG4gICAgICB0aGVtZToge30sXG4gICAgICBoYXNTdGF0czogZmFsc2UsXG4gICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZTogdHJ1ZVxuICAgIH07XG5cbiAgICBwaW5uZWRHcmlkOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHVucGlubmVkR3JpZDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBoYXNNb3VudGVkID0gZmFsc2U7XG5cbiAgICBzdGF0ZTogRGF0YVRhYmxlU3RhdGUgPSB7XG4gICAgICBjZWxsU2l6ZUNhY2hlOiB7fSxcbiAgICAgIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsLFxuICAgICAgc2hvd1N0YXRzOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5oYXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnNjYWxlQ2VsbHNUb1dpZHRoKTtcbiAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSAhPT0gcHJldlByb3BzLmNlbGxTaXplQ2FjaGUgfHxcbiAgICAgICAgdGhpcy5wcm9wcy5waW5uZWRDb2x1bW5zICE9PSBwcmV2UHJvcHMucGlubmVkQ29sdW1uc1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuaGFzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgIH1cblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgY29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLmNvbHVtbnM7XG4gICAgcGlubmVkQ29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLnBpbm5lZENvbHVtbnM7XG4gICAgdW5waW5uZWRDb2x1bW5zID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jb2x1bW5zLCB0aGlzLnBpbm5lZENvbHVtbnMsIChjb2x1bW5zLCBwaW5uZWRDb2x1bW5zKSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkocGlubmVkQ29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5maWx0ZXIoYyA9PiAhcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjKSlcbiAgICApO1xuXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMgPSBtb3JlT3B0aW9uc0NvbHVtbiA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtbjpcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubW9yZU9wdGlvbnNDb2x1bW4gPT09IG1vcmVPcHRpb25zQ29sdW1uID8gbnVsbCA6IG1vcmVPcHRpb25zQ29sdW1uXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdG9nZ2xlU2hvd1N0YXRzID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzTW91bnRlZCkgdGhpcy5zZXRTdGF0ZSh7c2hvd1N0YXRzOiAhdGhpcy5zdGF0ZS5zaG93U3RhdHN9KTtcbiAgICB9O1xuICAgIGdldENlbGxTaXplQ2FjaGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZTogcHJvcHNDYWNoZSA9IHt9LCBmaXhlZFdpZHRoLCBwaW5uZWRDb2x1bW5zID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGZpeGVkV2lkdGggPyBmaXhlZFdpZHRoIDogdGhpcy5yb290LmN1cnJlbnQgPyB0aGlzLnJvb3QuY3VycmVudC5jbGllbnRXaWR0aCA6IDA7XG5cbiAgICAgIC8vIHBpbiBjb2x1bW4gYm9yZGVyIGlzIDIgcGl4ZWwgdnMgMSBwaXhlbFxuICAgICAgY29uc3QgYWRqdXN0V2lkdGggPSBwaW5uZWRDb2x1bW5zLmxlbmd0aCA/IHdpZHRoIC0gMSA6IHdpZHRoO1xuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUsIGdob3N0fSA9IGFkanVzdENlbGxzVG9Db250YWluZXIoXG4gICAgICAgIGFkanVzdFdpZHRoLFxuICAgICAgICBwcm9wc0NhY2hlLFxuICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICB1bnBpbm5lZENvbHVtbnNcbiAgICAgICkgYXMge2NlbGxTaXplQ2FjaGU6IENlbGxTaXplQ2FjaGU7IGdob3N0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgZ2hvc3RcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRvU2NhbGVDZWxsc1RvV2lkdGggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKSB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0Q2VsbFNpemVDYWNoZSgpKTtcbiAgICB9O1xuXG4gICAgc2NhbGVDZWxsc1RvV2lkdGggPSBkZWJvdW5jZSh0aGlzLmRvU2NhbGVDZWxsc1RvV2lkdGgsIDMwMCk7XG5cbiAgICByZW5kZXJEYXRhQ2VsbCA9IChjb2x1bW5zLCBpc1Bpbm5lZCwgcHJvcHM6IERhdGFUYWJsZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBnZXRSb3dDZWxsID0gdGhpcy5wcm9wcy5nZXRSb3dDZWxsID8/IGRlZmF1bHRHZXRSb3dDZWxsO1xuICAgICAgY29uc3QgRGF0YUNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IHtcbiAgICAgICAgY29uc3Qge2NvbHVtbkluZGV4LCBrZXksIHN0eWxlLCByb3dJbmRleH0gPSBjZWxsSW5mbztcbiAgICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGNvbE1ldGF9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGlzR2hvc3QgPyBudWxsIDogZ2V0Q29sdW1uRm9ybWF0dGVyKGNvbE1ldGFbY29sdW1uXSk7XG4gICAgICAgIGNvbnN0IHJvd0NlbGwgPSBpc0dob3N0ID8gJycgOiBnZXRSb3dDZWxsKHsuLi5wcm9wcywgY29sdW1uLCByb3dJbmRleH0sIGZvcm1hdHRlcik7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBpc0dob3N0ID8gbnVsbCA6IGNvbE1ldGFbY29sdW1uXS50eXBlO1xuXG4gICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSAtIDEgOiAwO1xuXG4gICAgICAgIGNvbnN0IGVuZENlbGwgPSBjb2x1bW5JbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBmaXJzdENlbGwgPSBjb2x1bW5JbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgYm90dG9tQ2VsbCA9IHJvd0luZGV4ID09PSBsYXN0Um93SW5kZXg7XG4gICAgICAgIGNvbnN0IGFsaWduUmlnaHQgPSBmaWVsZFRvQWxpZ25SaWdodFtOdW1iZXIodHlwZSldO1xuXG4gICAgICAgIGNvbnN0IGNlbGwgPSAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjZWxsJywge1xuICAgICAgICAgICAgICBbcm93SW5kZXggJSAyID09PSAwID8gJ2V2ZW4tcm93JyA6ICdvZGQtcm93J106IHRydWUsXG4gICAgICAgICAgICAgIFtgcm93LSR7cm93SW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgICAgICdwaW5uZWQtY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbCxcbiAgICAgICAgICAgICAgJ2VuZC1jZWxsJzogZW5kQ2VsbCxcbiAgICAgICAgICAgICAgJ2JvdHRvbS1jZWxsJzogYm90dG9tQ2VsbCxcbiAgICAgICAgICAgICAgJ2FsaWduLXJpZ2h0JzogYWxpZ25SaWdodFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIHRpdGxlPXtpc0dob3N0ID8gdW5kZWZpbmVkIDogcm93Q2VsbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YCR7cm93Q2VsbH0ke2VuZENlbGwgPyAnXFxuJyA6ICdcXHQnfWB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIERhdGFDZWxsUmVuZGVyZXI7XG4gICAgfTtcblxuICAgIHJlbmRlckhlYWRlckNlbGwoY29sdW1ucywgaXNQaW5uZWQsIHByb3BzLCB0b2dnbGVNb3JlT3B0aW9ucywgbW9yZU9wdGlvbnNDb2x1bW4pIHtcbiAgICAgIGNvbnN0IEhlYWRlckNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IChcbiAgICAgICAgPEhlYWRlckNlbGxcbiAgICAgICAgICBjZWxsSW5mbz17Y2VsbEluZm99XG4gICAgICAgICAga2V5PXtjZWxsSW5mby5jb2x1bW5JbmRleH1cbiAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgIGlzUGlubmVkPXtpc1Bpbm5lZH1cbiAgICAgICAgICBzaG93U3RhdHM9e3RoaXMuc3RhdGUuc2hvd1N0YXRzfVxuICAgICAgICAgIHByb3BzPXtwcm9wc31cbiAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW49e21vcmVPcHRpb25zQ29sdW1ufVxuICAgICAgICAgIC8vIHBhc3MgZHVtbXkgc3R5bGUgdG8gcHJldmVudCB3YXJuaW5ncyBmcm9tIHJlYWN0LXZpcnR1YWxpemVkIEdyaWRcbiAgICAgICAgICBzdHlsZT17RFVNTVlfU1RZTEV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIEhlYWRlckNlbGxSZW5kZXJlcjtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBwaW5uZWRDb2x1bW5zID0gW10sXG4gICAgICAgIHRoZW1lID0ge30sXG4gICAgICAgIGZpeGVkV2lkdGgsXG4gICAgICAgIGZpeGVkSGVpZ2h0ID0gMCxcbiAgICAgICAgaGFzU3RhdHMsXG4gICAgICAgIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZSA9IHt9LCBtb3JlT3B0aW9uc0NvbHVtbiwgZ2hvc3QsIHNob3dTdGF0c30gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgdW5waW5uZWRDb2x1bW5zR2hvc3QgPSBnaG9zdFxuICAgICAgICA/IFsuLi51bnBpbm5lZENvbHVtbnMsIHtnaG9zdDogdHJ1ZX0gYXMgc3RyaW5nICYge2dob3N0OiBib29sZWFufV1cbiAgICAgICAgOiB1bnBpbm5lZENvbHVtbnM7XG4gICAgICBjb25zdCBwaW5uZWRDb2x1bW5zV2lkdGggPSBwaW5uZWRDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGFjYywgdmFsKSA9PiBhY2MgKyAoZ2V0KGNlbGxTaXplQ2FjaGUsIHZhbCwgMCkgYXMgbnVtYmVyKSxcbiAgICAgICAgMFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGFzUGlubmVkQ29sdW1ucyA9IEJvb2xlYW4ocGlubmVkQ29sdW1ucy5sZW5ndGgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBoZWFkZXJSb3dIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICBoZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHQgPSBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICBoZWFkZXJSb3dXU3RhdHNIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICByb3dIZWlnaHQgPSBkZWZhdWx0Um93SGVpZ2h0XG4gICAgICB9ID0gdGhlbWU7XG5cbiAgICAgIGNvbnN0IGhlYWRlckdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnaGVhZGVyLWdyaWQnLFxuICAgICAgICBoZWlnaHQ6ICFoYXNTdGF0c1xuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgOiBzaG93U3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd1dTdGF0c0hlaWdodFxuICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0ICsgaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICByb3dDb3VudDogMSxcbiAgICAgICAgcm93SGVpZ2h0OiAhaGFzU3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIDogc2hvd1N0YXRzXG4gICAgICAgICAgPyBoZWFkZXJSb3dXU3RhdHNIZWlnaHRcbiAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCArIGhlYWRlclN0YXRzQ29udHJvbEhlaWdodFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZGF0YUdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudCxcbiAgICAgICAgb3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgcm93Q291bnQ6IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA6IDAsXG4gICAgICAgIHJvd0hlaWdodFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGEtdGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT17aGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2VsbFNpemVDYWNoZSkubGVuZ3RoID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNjcm9sbFN5bmM+XG4gICAgICAgICAgICAgICAgeyh7b25TY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvcH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0cy10YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hhc1Bpbm5lZENvbHVtbnMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9XCJwaW5uZWQtY29sdW1uc1wiIGNsYXNzTmFtZT1cInBpbm5lZC1jb2x1bW5zIGdyaWQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3Q9e3Bpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bpbm5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRXaWR0aD17cGlubmVkQ29sdW1uc1dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXthcmdzID0+IG9uU2Nyb2xsKHsuLi5hcmdzLCBzY3JvbGxMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZFByb3BzPXtkYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyaWRSZWY9e3Bpbm5lZEdyaWQgPT4gKHRoaXMucGlubmVkR3JpZCA9IHBpbm5lZEdyaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKHBpbm5lZENvbHVtbnMsIGNlbGxTaXplQ2FjaGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGxSZW5kZXI9e3RoaXMucmVuZGVySGVhZGVyQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNlbGxSZW5kZXI9e3RoaXMucmVuZGVyRGF0YUNlbGwocGlubmVkQ29sdW1ucywgdHJ1ZSwgdGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInVucGlubmVkLWNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogYCR7aGFzUGlubmVkQ29sdW1ucyA/IGAke3Bpbm5lZENvbHVtbnNXaWR0aH1weGAgOiAnMCd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVucGlubmVkLWNvbHVtbnMgZ3JpZC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0PXt1bnBpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaW5uZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXt1bnBpbm5lZENvbHVtbnNHaG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZpeGVkV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkSGVpZ2h0PXtmaXhlZEhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A9e3Njcm9sbFRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWRQcm9wcz17ZGF0YUdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17dW5waW5uZWRHcmlkID0+ICh0aGlzLnVucGlubmVkR3JpZCA9IHVucGlubmVkR3JpZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTaXplQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hvc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJIZWFkZXJDZWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVNb3JlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJEYXRhQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxTeW5jPlxuICAgICAgICAgICAgICB7aGFzU3RhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFN0YXRzQ29udHJvbFxuICAgICAgICAgICAgICAgICAgdG9wPXtoZWFkZXJSb3dIZWlnaHR9XG4gICAgICAgICAgICAgICAgICBzaG93U3RhdHM9e3Nob3dTdGF0c31cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZVNob3dTdGF0cz17dGhpcy50b2dnbGVTaG93U3RhdHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoRGF0YVRhYmxlIGFzIFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLElBQUEsR0FBQUYsc0JBQUEs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
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { TooltipFormat } from '@kepler.gl/constants';
3
3
  import { ColMeta } from '@kepler.gl/types';
4
- export declare type FormatterDropdownProps = {
4
+ export type FormatterDropdownProps = {
5
5
  left: number;
6
6
  top: number;
7
7
  isOpened: boolean;
@@ -1,7 +1,7 @@
1
1
  import React, { ComponentType } from 'react';
2
2
  import { Field, TooltipField } from '@kepler.gl/types';
3
3
  import FieldTokenFactory from '../common/field-token';
4
- export declare type FieldListItemFactoryProps = {
4
+ export type FieldListItemFactoryProps = {
5
5
  value: Field;
6
6
  displayOption: (field: Field) => string;
7
7
  };
@@ -9,19 +9,19 @@ export declare function FieldListItemFactoryFactory(FieldToken: any): (showToken
9
9
  export declare namespace FieldListItemFactoryFactory {
10
10
  var deps: (typeof FieldTokenFactory)[];
11
11
  }
12
- export declare type MinimalField = {
12
+ export type MinimalField = {
13
13
  name: string;
14
14
  displayName: string;
15
15
  format: string;
16
16
  type?: string;
17
17
  };
18
- export declare type FieldType = string | TooltipField | Field;
19
- export declare type FieldValue = string | {
18
+ export type FieldType = string | TooltipField | Field;
19
+ export type FieldValue = string | {
20
20
  name: string;
21
21
  } | string[] | {
22
22
  name: string;
23
23
  }[];
24
- export declare type FieldSelectorProps<Option extends MinimalField> = {
24
+ export type FieldSelectorProps<Option extends MinimalField> = {
25
25
  id?: string;
26
26
  fields: Option[];
27
27
  onSelect: (items: ReadonlyArray<string | number | boolean | object> | string | number | boolean | object | null) => void;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export declare type FieldTokenProps = {
2
+ export type FieldTokenProps = {
3
3
  type: string;
4
4
  };
5
5
  declare function FieldTokenFactory(fieldTypeDisplay: ReturnType<typeof getFieldTypes>, fieldColors: ReturnType<typeof getFieldColors>): React.FC<FieldTokenProps>;
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import React, { ReactNode } from 'react';
6
6
  import Window from 'global/window';
7
- export declare type FileDropProps = {
7
+ export type FileDropProps = {
8
8
  dropEffect?: 'copy' | 'move' | 'link' | 'none';
9
9
  frame?: typeof document | typeof Window | HTMLElement;
10
10
  className?: string;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FileLoadingProgress } from '@kepler.gl/types';
3
- declare type FileUploadProgressProps = {
3
+ type FileUploadProgressProps = {
4
4
  fileLoadingProgress: FileLoadingProgress;
5
5
  theme: any;
6
6
  };
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { WrappedComponentProps } from 'react-intl';
3
3
  import { FileLoading, FileLoadingProgress } from '@kepler.gl/types';
4
4
  export declare const WarningMsg: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>;
5
- declare type FileUploadProps = {
5
+ type FileUploadProps = {
6
6
  onFileUpload: (files: File[]) => void;
7
7
  fileLoading: FileLoading | false;
8
8
  fileLoadingProgress: FileLoadingProgress;
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  export declare const FlexContainer: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
3
2
  export declare const FlexColContainer: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>, "ref"> & {
4
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
5
4
  }, never>> & Omit<import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>, keyof import("react").Component<any, {}, any>>;
6
5
  export declare const FlexContainerGrow: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>, "ref"> & {
7
- ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
6
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
8
7
  }, never>> & Omit<import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>, keyof import("react").Component<any, {}, any>>;
@@ -4,7 +4,7 @@ export declare const HISTOGRAM_MASK_MODE: {
4
4
  Mask: number;
5
5
  MaskWithOverlay: number;
6
6
  };
7
- export declare type HistogramMaskModeType = {
7
+ export type HistogramMaskModeType = {
8
8
  NoMask: number;
9
9
  Mask: number;
10
10
  MaskWithOverlay: number;