@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
@@ -34,8 +34,10 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
34
34
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35
35
  var DRAG_RESIZE_ID = 'map-legend-resize';
36
36
  var DRAG_MOVE_ID = 'map-legend-move';
37
- var StyledDraggableLegendContent = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n outline: none;\n transition: border-color 0.2s ease-in-out;\n border: 1px solid transparent;\n .legend-input-block {\n display: none;\n }\n &.is-dragging .legend-input-block {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n &:hover,\n &.is-dragging {\n .legend-move-handle {\n opacity: 1;\n pointer-events: auto;\n }\n .legend-resize-handle {\n opacity: 1;\n pointer-events: auto;\n }\n border-color: ", ";\n }\n .map-control__panel-content {\n max-height: calc(100vh - 100px);\n ", ";\n }\n border-radius: 4px;\n z-index: 2;\n .map-control-panel {\n margin-bottom: 0 !important;\n }\n"])), function (props) {
37
+ var StyledDraggableLegendContent = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n outline: none;\n transition: border-color 0.2s ease-in-out;\n border: 1px solid transparent;\n .legend-input-block {\n display: none;\n }\n &.is-dragging .legend-input-block {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: transparent;\n }\n &:hover,\n &.is-dragging {\n .legend-move-handle {\n opacity: 1;\n pointer-events: auto;\n }\n .legend-resize-handle {\n opacity: 1;\n pointer-events: auto;\n }\n border-color: ", ";\n }\n .map-control__panel-content {\n max-height: ", ";\n ", ";\n }\n border-radius: 4px;\n z-index: 2;\n .map-control-panel {\n margin-bottom: 0 !important;\n }\n"])), function (props) {
38
38
  return props.theme.activeColor;
39
+ }, function (props) {
40
+ return props.maxContentHeight ? "".concat(props.maxContentHeight, "px") : 'calc(100vh - 100px)';
39
41
  }, function (props) {
40
42
  return props.contentHeight ? "height: ".concat(props.contentHeight, "px;") : '';
41
43
  });
@@ -48,7 +50,9 @@ var StyledFixedLegendContent = _styledComponents["default"].div(_templateObject4
48
50
  });
49
51
  var DraggableLegendContent = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
50
52
  var positionStyles = props.positionStyles,
51
- children = props.children;
53
+ children = props.children,
54
+ contentHeight = props.contentHeight,
55
+ maxContentHeight = props.maxContentHeight;
52
56
  var draggableMove = (0, _core.useDraggable)({
53
57
  id: DRAG_MOVE_ID
54
58
  });
@@ -65,7 +69,8 @@ var DraggableLegendContent = /*#__PURE__*/(0, _react.forwardRef)(function (props
65
69
  style: _objectSpread(_objectSpread({}, positionStyles), {}, {
66
70
  transform: _utilities.CSS.Translate.toString(draggableMove.transform)
67
71
  }),
68
- contentHeight: props.contentHeight
72
+ contentHeight: contentHeight,
73
+ maxContentHeight: maxContentHeight
69
74
  }, draggableMove.attributes), children, isDragging ? /*#__PURE__*/_react["default"].createElement("div", {
70
75
  className: "legend-input-block"
71
76
  }) : null, /*#__PURE__*/_react["default"].createElement(StyledMoveHandle, (0, _extends2["default"])({
@@ -85,6 +90,7 @@ var DraggableLegend = (0, _styledComponents.withTheme)(function (_ref) {
85
90
  children = _ref.children,
86
91
  mapControls = _ref.mapControls,
87
92
  setMapControlSettings = _ref.setMapControlSettings,
93
+ mapState = _ref.mapState,
88
94
  theme = _ref.theme;
89
95
  var settings = mapControls === null || mapControls === void 0 || (_mapControls$mapLegen = mapControls.mapLegend) === null || _mapControls$mapLegen === void 0 ? void 0 : _mapControls$mapLegen.settings;
90
96
  var legendContentRef = (0, _react.useRef)(null);
@@ -96,13 +102,16 @@ var DraggableLegend = (0, _styledComponents.withTheme)(function (_ref) {
96
102
  isSidePanelShown: isSidePanelShown,
97
103
  theme: theme,
98
104
  settings: settings,
99
- onChangeSettings: onChangeSettings
105
+ onChangeSettings: onChangeSettings,
106
+ mapHeight: mapState === null || mapState === void 0 ? void 0 : mapState.height,
107
+ mapWidth: mapState === null || mapState === void 0 ? void 0 : mapState.width
100
108
  }),
101
109
  positionStyles = _useLegendPosition.positionStyles,
102
110
  updatePosition = _useLegendPosition.updatePosition,
103
111
  startResize = _useLegendPosition.startResize,
104
112
  resize = _useLegendPosition.resize,
105
- contentHeight = _useLegendPosition.contentHeight;
113
+ contentHeight = _useLegendPosition.contentHeight,
114
+ maxContentHeight = _useLegendPosition.maxContentHeight;
106
115
  var handleDragStart = (0, _react.useCallback)(function (event) {
107
116
  switch (event.active.id) {
108
117
  case DRAG_RESIZE_ID:
@@ -128,7 +137,8 @@ var DraggableLegend = (0, _styledComponents.withTheme)(function (_ref) {
128
137
  }, /*#__PURE__*/_react["default"].createElement(DraggableLegendContent, {
129
138
  ref: legendContentRef,
130
139
  positionStyles: positionStyles,
131
- contentHeight: contentHeight
140
+ contentHeight: contentHeight,
141
+ maxContentHeight: maxContentHeight
132
142
  }, children));
133
143
  });
134
144
  var ImageExportLegend = (0, _styledComponents.withTheme)(function (_ref2) {
@@ -183,6 +193,7 @@ var MapLegendPanelComponent = function MapLegendPanelComponent(_ref3) {
183
193
  actionIcons = _ref3$actionIcons === void 0 ? defaultActionIcons : _ref3$actionIcons,
184
194
  mapState = _ref3.mapState,
185
195
  onLayerVisConfigChange = _ref3.onLayerVisConfigChange,
196
+ onToggleLayerVisibility = _ref3.onToggleLayerVisibility,
186
197
  onToggleSplitMapViewport = _ref3.onToggleSplitMapViewport,
187
198
  onClickControlBtn = _ref3.onClickControlBtn,
188
199
  activeSidePanel = _ref3.activeSidePanel,
@@ -232,7 +243,8 @@ var MapLegendPanelComponent = function MapLegendPanelComponent(_ref3) {
232
243
  mapState: mapState,
233
244
  disableEdit: disableEdit,
234
245
  isExport: isExport,
235
- onLayerVisConfigChange: onLayerVisConfigChange
246
+ onLayerVisConfigChange: onLayerVisConfigChange,
247
+ onToggleLayerVisibility: onToggleLayerVisibility
236
248
  })) : null;
237
249
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, active ? (0, _utils.hasPortableWidth)(_styles.breakPointValues) ? legendPanel : isExport ? /*#__PURE__*/_react["default"].createElement(ImageExportLegend, {
238
250
  isSidePanelShown: isSidePanelShown,
@@ -240,7 +252,8 @@ var MapLegendPanelComponent = function MapLegendPanelComponent(_ref3) {
240
252
  }, legendPanel) : ( /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react["default"].createElement(DraggableLegend, {
241
253
  isSidePanelShown: isSidePanelShown,
242
254
  mapControls: mapControls,
243
- setMapControlSettings: setMapControlSettings
255
+ setMapControlSettings: setMapControlSettings,
256
+ mapState: mapState
244
257
  }, legendPanel), (_rootContext$current = rootContext === null || rootContext === void 0 ? void 0 : rootContext.current) !== null && _rootContext$current !== void 0 ? _rootContext$current : document.body)) : null, !isExport ? /*#__PURE__*/_react["default"].createElement(MapControlTooltip, {
245
258
  id: "show-legend",
246
259
  message: "tooltip.showLegend"
@@ -261,4 +274,4 @@ function MapLegendPanelFactory(MapControlTooltip, MapControlPanel, MapLegend) {
261
274
  };
262
275
  }
263
276
  var _default = exports["default"] = MapLegendPanelFactory;
264
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0RG9tIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb3JlIiwiX3V0aWxpdGllcyIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX3V0aWxzIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2NvbnRleHQiLCJfdXNlTGVnZW5kUG9zaXRpb24zIiwiX21hcENvbnRyb2xQYW5lbCIsIl9tYXBDb250cm9sVG9vbHRpcCIsIl9tYXBMZWdlbmQiLCJfbW9kaWZpZXJzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiRFJBR19SRVNJWkVfSUQiLCJEUkFHX01PVkVfSUQiLCJTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50Iiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiYWN0aXZlQ29sb3IiLCJjb250ZW50SGVpZ2h0IiwiY29uY2F0IiwiU3R5bGVkTW92ZUhhbmRsZSIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlN0eWxlZEZpeGVkTGVnZW5kQ29udGVudCIsIkRyYWdnYWJsZUxlZ2VuZENvbnRlbnQiLCJmb3J3YXJkUmVmIiwicmVmIiwicG9zaXRpb25TdHlsZXMiLCJjaGlsZHJlbiIsImRyYWdnYWJsZU1vdmUiLCJ1c2VEcmFnZ2FibGUiLCJpZCIsImRyYWdnYWJsZVJlc2l6ZSIsInJlZnMiLCJ1c2VNZXJnZVJlZnMiLCJzZXROb2RlUmVmIiwiaXNEcmFnZ2luZyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJDU1MiLCJUcmFuc2xhdGUiLCJ0b1N0cmluZyIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJEcmFnZ2FibGVEb3RzIiwiaGVpZ2h0IiwiSG9yaXpvbnRhbFJlc2l6ZUhhbmRsZSIsIkRyYWdnYWJsZUxlZ2VuZCIsIndpdGhUaGVtZSIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwTGVnZW4iLCJpc1NpZGVQYW5lbFNob3duIiwibWFwQ29udHJvbHMiLCJzZXRNYXBDb250cm9sU2V0dGluZ3MiLCJzZXR0aW5ncyIsIm1hcExlZ2VuZCIsImxlZ2VuZENvbnRlbnRSZWYiLCJ1c2VSZWYiLCJvbkNoYW5nZVNldHRpbmdzIiwidXNlQ2FsbGJhY2siLCJuZXdTZXR0aW5ncyIsIl91c2VMZWdlbmRQb3NpdGlvbiIsInVzZUxlZ2VuZFBvc2l0aW9uIiwidXBkYXRlUG9zaXRpb24iLCJzdGFydFJlc2l6ZSIsInJlc2l6ZSIsImhhbmRsZURyYWdTdGFydCIsImV2ZW50IiwiYWN0aXZlIiwiaGFuZGxlRHJhZ0VuZCIsImhhbmRsZURyYWdNb3ZlIiwiZGVsdGEiLCJ5IiwiRG5kQ29udGV4dCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsIm1vZGlmaWVycyIsInJlc3RyaWN0VG9XaW5kb3dFZGdlcyIsIkltYWdlRXhwb3J0TGVnZW5kIiwiX3JlZjIiLCJfY29udGFpbmVyUmVmJGN1cnJlbnQiLCJjb250YWluZXJSZWYiLCJfdXNlTGVnZW5kUG9zaXRpb24yIiwicG9ydGFsUm9vdCIsImN1cnJlbnQiLCJjbG9zZXN0IiwicXVlcnlTZWxlY3RvciIsImNyZWF0ZVBvcnRhbCIsInBvc2l0aW9uIiwiTWFwTGVnZW5kUGFuZWxGYWN0b3J5IiwiZGVwcyIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIk1hcENvbnRyb2xQYW5lbEZhY3RvcnkiLCJNYXBMZWdlbmRGYWN0b3J5IiwiZGVmYXVsdEFjdGlvbkljb25zIiwibGVnZW5kIiwiTGVnZW5kIiwiTWFwTGVnZW5kUGFuZWxDb21wb25lbnQiLCJfcmVmMyIsIl9tYXBDb250cm9scyRtYXBMZWdlbjIiLCJfcm9vdENvbnRleHQkY3VycmVudCIsImxheWVycyIsInNjYWxlIiwib25Ub2dnbGVNYXBDb250cm9sIiwiaXNFeHBvcnQiLCJsb2dvQ29tcG9uZW50IiwiX3JlZjMkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsIm1hcFN0YXRlIiwib25MYXllclZpc0NvbmZpZ0NoYW5nZSIsIm9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydCIsIm9uQ2xpY2tDb250cm9sQnRuIiwiYWN0aXZlU2lkZVBhbmVsIiwiX3JlZjMkaXNWaWV3cG9ydFVuc3luIiwiaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQiLCJNYXBDb250cm9sVG9vbHRpcCIsIk1hcENvbnRyb2xQYW5lbCIsIk1hcExlZ2VuZCIsIkJvb2xlYW4iLCJfcmVmNCIsImRpc2FibGVFZGl0Iiwicm9vdENvbnRleHQiLCJ1c2VDb250ZXh0IiwiUm9vdENvbnRleHQiLCJvbkNsaWNrIiwiX21hcENvbnRyb2xzJG1hcERyYXciLCJtYXBEcmF3Iiwib25DbG9zZUNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzaG93IiwibGVnZW5kUGFuZWwiLCJoZWFkZXIiLCJwaW5uYWJsZSIsImRpc2FibGVDbG9zZSIsIkZyYWdtZW50IiwiaGFzUG9ydGFibGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJkb2N1bWVudCIsImJvZHkiLCJtZXNzYWdlIiwiTWFwQ29udHJvbEJ1dHRvbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAvbWFwLWxlZ2VuZC1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBSZWFjdCwge1xuICBDb21wb25lbnRUeXBlLFxuICBGQyxcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZVJlZixcbiAgUHJvcHNXaXRoQ2hpbGRyZW5cbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0RuZENvbnRleHQsIHVzZURyYWdnYWJsZX0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQge0NTU30gZnJvbSAnQGRuZC1raXQvdXRpbGl0aWVzJztcbmltcG9ydCB7dXNlTWVyZ2VSZWZzfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuXG5pbXBvcnQge0FjdGlvbkhhbmRsZXIsIHNldE1hcENvbnRyb2xTZXR0aW5ncywgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydH0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7YnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtMYXllclZpc0NvbmZpZywgTWFwQ29udHJvbE1hcExlZ2VuZCwgTWFwQ29udHJvbHMsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7aGFzUG9ydGFibGVXaWR0aH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge01hcExlZ2VuZENvbnRyb2xTZXR0aW5nc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7TGVnZW5kLCBEcmFnZ2FibGVEb3RzLCBIb3Jpem9udGFsUmVzaXplSGFuZGxlfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtNYXBDb250cm9sQnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtSb290Q29udGV4dH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgdXNlTGVnZW5kUG9zaXRpb24gZnJvbSAnLi4vaG9va3MvdXNlLWxlZ2VuZC1wb3NpdGlvbic7XG5pbXBvcnQgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXBhbmVsJztcbmltcG9ydCBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC10b29sdGlwJztcbmltcG9ydCBNYXBMZWdlbmRGYWN0b3J5IGZyb20gJy4vbWFwLWxlZ2VuZCc7XG5pbXBvcnQge3Jlc3RyaWN0VG9XaW5kb3dFZGdlc30gZnJvbSAnQGRuZC1raXQvbW9kaWZpZXJzJztcblxuY29uc3QgRFJBR19SRVNJWkVfSUQgPSAnbWFwLWxlZ2VuZC1yZXNpemUnO1xuY29uc3QgRFJBR19NT1ZFX0lEID0gJ21hcC1sZWdlbmQtbW92ZSc7XG5cbmNvbnN0IFN0eWxlZERyYWdnYWJsZUxlZ2VuZENvbnRlbnQgPSBzdHlsZWQuZGl2PHtjb250ZW50SGVpZ2h0PzogbnVtYmVyfT5gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZS1pbi1vdXQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAubGVnZW5kLWlucHV0LWJsb2NrIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICYuaXMtZHJhZ2dpbmcgLmxlZ2VuZC1pbnB1dC1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAmOmhvdmVyLFxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICAubGVnZW5kLW1vdmUtaGFuZGxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG4gICAgLmxlZ2VuZC1yZXNpemUtaGFuZGxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG4gICAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgfVxuICAubWFwLWNvbnRyb2xfX3BhbmVsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCk7XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuY29udGVudEhlaWdodCA/IGBoZWlnaHQ6ICR7cHJvcHMuY29udGVudEhlaWdodH1weDtgIDogJycpfTtcbiAgfVxuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHotaW5kZXg6IDI7XG4gIC5tYXAtY29udHJvbC1wYW5lbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRNb3ZlSGFuZGxlID0gc3R5bGVkLmRpdmBcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjdXJzb3I6IG1vdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuYDtcblxuY29uc3QgU3R5bGVkUmVzaXplSGFuZGxlID0gc3R5bGVkLmRpdmBcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogI2Y3ZjhmYTtcbiAgei1pbmRleDogMjtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogNDhweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xuYDtcblxuY29uc3QgU3R5bGVkRml4ZWRMZWdlbmRDb250ZW50ID0gc3R5bGVkLmRpdjx7Y29udGVudEhlaWdodD86IG51bWJlcn0+YFxuICAubWFwLWNvbnRyb2xfX3BhbmVsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCk7XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuY29udGVudEhlaWdodCA/IGBoZWlnaHQ6ICR7cHJvcHMuY29udGVudEhlaWdodH1weDtgIDogJycpfTtcbiAgfVxuXG4gIC8qIEhpZGUgc2Nyb2xsYmFycyBpbiBleHBvcnQgdG8gYXZvaWQgT1MgZGVmYXVsdCBzdHlsaW5nIGRpZmZlcmVuY2VzICovXG4gIC5zdHlsZWQtY29sb3ItbGVnZW5kIHtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC8qIElFIGFuZCBvbGQgRWRnZSAqL1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTsgLyogRmlyZWZveCAqL1xuICB9XG4gIC5zdHlsZWQtY29sb3ItbGVnZW5kOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDAgIWltcG9ydGFudDsgLyogQ2hyb21lLCBTYWZhcmksIG5ldyBFZGdlICovXG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIE1hcExlZ2VuZFBhbmVsRmFjdG9yeURlcHMgPSBbXG4gIHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnksXG4gIHR5cGVvZiBNYXBDb250cm9sUGFuZWxGYWN0b3J5LFxuICB0eXBlb2YgTWFwTGVnZW5kRmFjdG9yeVxuXTtcblxudHlwZSBEcmFnZ2FibGVMZWdlbmRDb250ZW50UHJvcHMgPSB7XG4gIGNvbnRlbnRIZWlnaHQ/OiBudW1iZXI7XG4gIHBvc2l0aW9uU3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyYWdnYWJsZUxlZ2VuZENvbnRlbnQgPSBmb3J3YXJkUmVmKChwcm9wczogRHJhZ2dhYmxlTGVnZW5kQ29udGVudFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge3Bvc2l0aW9uU3R5bGVzLCBjaGlsZHJlbn0gPSBwcm9wcztcbiAgY29uc3QgZHJhZ2dhYmxlTW92ZSA9IHVzZURyYWdnYWJsZSh7aWQ6IERSQUdfTU9WRV9JRH0pO1xuICBjb25zdCBkcmFnZ2FibGVSZXNpemUgPSB1c2VEcmFnZ2FibGUoe2lkOiBEUkFHX1JFU0laRV9JRH0pO1xuICBjb25zdCByZWZzID0gdXNlTWVyZ2VSZWZzKFtkcmFnZ2FibGVNb3ZlLnNldE5vZGVSZWYsIHJlZl0pO1xuICBjb25zdCBpc0RyYWdnaW5nID0gZHJhZ2dhYmxlTW92ZS5pc0RyYWdnaW5nIHx8IGRyYWdnYWJsZVJlc2l6ZS5pc0RyYWdnaW5nO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50XG4gICAgICByZWY9e3JlZnN9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2RyYWdnYWJsZS1sZWdlbmQnLCB7J2lzLWRyYWdnaW5nJzogaXNEcmFnZ2luZ30pfVxuICAgICAgc3R5bGU9e3suLi5wb3NpdGlvblN0eWxlcywgdHJhbnNmb3JtOiBDU1MuVHJhbnNsYXRlLnRvU3RyaW5nKGRyYWdnYWJsZU1vdmUudHJhbnNmb3JtKX19XG4gICAgICBjb250ZW50SGVpZ2h0PXtwcm9wcy5jb250ZW50SGVpZ2h0fVxuICAgICAgey4uLmRyYWdnYWJsZU1vdmUuYXR0cmlidXRlc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICB7aXNEcmFnZ2luZyA/IDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLWlucHV0LWJsb2NrXCIgLz4gOiBudWxsfVxuICAgICAgPFN0eWxlZE1vdmVIYW5kbGUgY2xhc3NOYW1lPVwibGVnZW5kLW1vdmUtaGFuZGxlXCIgey4uLmRyYWdnYWJsZU1vdmUubGlzdGVuZXJzfT5cbiAgICAgICAgPERyYWdnYWJsZURvdHMgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICA8L1N0eWxlZE1vdmVIYW5kbGU+XG4gICAgICA8U3R5bGVkUmVzaXplSGFuZGxlXG4gICAgICAgIGNsYXNzTmFtZT1cImxlZ2VuZC1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgcmVmPXtkcmFnZ2FibGVSZXNpemUuc2V0Tm9kZVJlZn1cbiAgICAgICAgey4uLmRyYWdnYWJsZVJlc2l6ZS5saXN0ZW5lcnN9XG4gICAgICA+XG4gICAgICAgIDxIb3Jpem9udGFsUmVzaXplSGFuZGxlIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgPC9TdHlsZWRSZXNpemVIYW5kbGU+XG4gICAgPC9TdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50PlxuICApO1xufSk7XG5cbnR5cGUgRHJhZ2dhYmxlTGVnZW5kUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzOiB0eXBlb2Ygc2V0TWFwQ29udHJvbFNldHRpbmdzO1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUxlZ2VuZCA9IHdpdGhUaGVtZShcbiAgKHtcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIGNoaWxkcmVuLFxuICAgIG1hcENvbnRyb2xzLFxuICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncyxcbiAgICB0aGVtZVxuICB9OiBEcmFnZ2FibGVMZWdlbmRQcm9wcyAmIHt0aGVtZTogYW55fSkgPT4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gbWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3M7XG5cbiAgICBjb25zdCBsZWdlbmRDb250ZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBvbkNoYW5nZVNldHRpbmdzID0gdXNlQ2FsbGJhY2soXG4gICAgICBuZXdTZXR0aW5ncyA9PiBzZXRNYXBDb250cm9sU2V0dGluZ3MoJ21hcExlZ2VuZCcsIG5ld1NldHRpbmdzKSxcbiAgICAgIFtzZXRNYXBDb250cm9sU2V0dGluZ3NdXG4gICAgKTtcbiAgICBjb25zdCB7cG9zaXRpb25TdHlsZXMsIHVwZGF0ZVBvc2l0aW9uLCBzdGFydFJlc2l6ZSwgcmVzaXplLCBjb250ZW50SGVpZ2h0fSA9IHVzZUxlZ2VuZFBvc2l0aW9uKHtcbiAgICAgIGxlZ2VuZENvbnRlbnRSZWYsXG4gICAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgICAgdGhlbWUsXG4gICAgICBzZXR0aW5ncyxcbiAgICAgIG9uQ2hhbmdlU2V0dGluZ3NcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICBzdGFydFJlc2l6ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbdXBkYXRlUG9zaXRpb24sIHN0YXJ0UmVzaXplXVxuICAgICk7XG4gICAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKHVwZGF0ZVBvc2l0aW9uLCBbdXBkYXRlUG9zaXRpb25dKTtcbiAgICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICByZXNpemUoZXZlbnQuZGVsdGEueSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtyZXNpemVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RG5kQ29udGV4dFxuICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICBtb2RpZmllcnM9e1tyZXN0cmljdFRvV2luZG93RWRnZXNdfVxuICAgICAgPlxuICAgICAgICA8RHJhZ2dhYmxlTGVnZW5kQ29udGVudFxuICAgICAgICAgIHJlZj17bGVnZW5kQ29udGVudFJlZn1cbiAgICAgICAgICBwb3NpdGlvblN0eWxlcz17cG9zaXRpb25TdHlsZXN9XG4gICAgICAgICAgY29udGVudEhlaWdodD17Y29udGVudEhlaWdodH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9EcmFnZ2FibGVMZWdlbmRDb250ZW50PlxuICAgICAgPC9EbmRDb250ZXh0PlxuICAgICk7XG4gIH1cbikgYXMgRkM8RHJhZ2dhYmxlTGVnZW5kUHJvcHM+O1xuXG50eXBlIEltYWdlRXhwb3J0TGVnZW5kUHJvcHMgPSB7XG4gIHNldHRpbmdzPzogTWFwTGVnZW5kQ29udHJvbFNldHRpbmdzO1xuICBpc1NpZGVQYW5lbFNob3duOiBib29sZWFuO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgSW1hZ2VFeHBvcnRMZWdlbmQgPSB3aXRoVGhlbWUoKHtzZXR0aW5ncywgaXNTaWRlUGFuZWxTaG93biwgdGhlbWUsIGNoaWxkcmVufSkgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgbGVnZW5kQ29udGVudFJlZjogUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+ID0gdXNlUmVmKG51bGwpO1xuXG4gIGNvbnN0IHtwb3NpdGlvblN0eWxlcywgY29udGVudEhlaWdodH0gPSB1c2VMZWdlbmRQb3NpdGlvbih7XG4gICAgbGVnZW5kQ29udGVudFJlZixcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIHRoZW1lLFxuICAgIHNldHRpbmdzLFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICgpID0+IHtcbiAgICAgIC8vIGRvIG5vdGhpbmcgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgcG9ydGFsUm9vdCA9IGNvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgPy5jbG9zZXN0KCcuZXhwb3J0LW1hcC1pbnN0YW5jZScpXG4gICAgPy5xdWVyeVNlbGVjdG9yKCcjZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheS13cmFwcGVyJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgIHtwb3J0YWxSb290XG4gICAgICAgID8gY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZC1sZWdlbmRcIlxuICAgICAgICAgICAgICByZWY9e2xlZ2VuZENvbnRlbnRSZWZ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7Li4ucG9zaXRpb25TdHlsZXMsIHBvc2l0aW9uOiAnYWJzb2x1dGUnfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0eWxlZEZpeGVkTGVnZW5kQ29udGVudCBjb250ZW50SGVpZ2h0PXtjb250ZW50SGVpZ2h0fT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgIDwvU3R5bGVkRml4ZWRMZWdlbmRDb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgcG9ydGFsUm9vdFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufSkgYXMgUmVhY3QuRkM8SW1hZ2VFeHBvcnRMZWdlbmRQcm9wcz47XG5cbk1hcExlZ2VuZFBhbmVsRmFjdG9yeS5kZXBzID0gW01hcENvbnRyb2xUb29sdGlwRmFjdG9yeSwgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSwgTWFwTGVnZW5kRmFjdG9yeV07XG5cbmludGVyZmFjZSBNYXBMZWdlbmRQYW5lbEljb25zIHtcbiAgbGVnZW5kOiBDb21wb25lbnRUeXBlPGFueT47XG59XG5cbmV4cG9ydCB0eXBlIE1hcExlZ2VuZFBhbmVsUHJvcHMgPSB7XG4gIHRoZW1lOiBhbnk7XG4gIGxheWVyczogUmVhZG9ubHlBcnJheTxMYXllcj47XG4gIHNjYWxlOiBudW1iZXI7XG4gIG9uVG9nZ2xlTWFwQ29udHJvbDogKGNvbnRyb2w6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNFeHBvcnQ6IGJvb2xlYW47XG4gIGxvZ29Db21wb25lbnQ6IEVsZW1lbnQ7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRQYW5lbEljb25zO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U/OiAob2xkTGF5ZXI6IExheWVyLCBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQ/OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0PjtcbiAgaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrQ29udHJvbEJ0bj86IChlPzogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIHNldHRpbmdzOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIGFjdGl2ZVNpZGVQYW5lbDogc3RyaW5nIHwgbnVsbDtcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzOiBhbnk7XG59O1xuXG50eXBlIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50cyA9IHtcbiAgTWFwQ29udHJvbFRvb2x0aXA6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeT47XG4gIE1hcENvbnRyb2xQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFBhbmVsRmFjdG9yeT47XG4gIE1hcExlZ2VuZDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwTGVnZW5kRmFjdG9yeT47XG59O1xuXG50eXBlIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50VHlwZSA9IFJlYWN0LkZDPE1hcExlZ2VuZFBhbmVsUHJvcHM+O1xuXG5jb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gIGxlZ2VuZDogcHJvcHMgPT4gPExlZ2VuZCB7Li4ucHJvcHN9IGhlaWdodD1cIjE4cHhcIiAvPlxufTtcblxuY29uc3QgTWFwTGVnZW5kUGFuZWxDb21wb25lbnQgPSAoe1xuICBsYXllcnMsXG4gIG1hcENvbnRyb2xzLFxuICBzY2FsZSxcbiAgb25Ub2dnbGVNYXBDb250cm9sLFxuICBpc0V4cG9ydCxcbiAgbG9nb0NvbXBvbmVudCxcbiAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gIG1hcFN0YXRlLFxuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQsXG4gIG9uQ2xpY2tDb250cm9sQnRuLFxuICBhY3RpdmVTaWRlUGFuZWwsXG4gIHNldE1hcENvbnRyb2xTZXR0aW5ncyxcbiAgaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQgPSB0cnVlLFxuICBjbGFzc05hbWUsXG4gIE1hcENvbnRyb2xUb29sdGlwLFxuICBNYXBDb250cm9sUGFuZWwsXG4gIE1hcExlZ2VuZFxufTogTWFwTGVnZW5kUGFuZWxQcm9wcyAmIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50cykgPT4ge1xuICBjb25zdCBpc1NpZGVQYW5lbFNob3duID0gQm9vbGVhbihhY3RpdmVTaWRlUGFuZWwpO1xuICBjb25zdCBzZXR0aW5ncyA9IG1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNldHRpbmdzO1xuXG4gIGNvbnN0IG1hcExlZ2VuZCA9IG1hcENvbnRyb2xzPy5tYXBMZWdlbmQgfHwgKHt9IGFzIE1hcENvbnRyb2xNYXBMZWdlbmQpO1xuICBjb25zdCB7YWN0aXZlLCBkaXNhYmxlRWRpdH0gPSBtYXBMZWdlbmQgfHwge307XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlQ29udGV4dChSb290Q29udGV4dCk7XG5cbiAgY29uc3Qgb25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvbkNsaWNrQ29udHJvbEJ0bj8uKCk7XG4gICAgaWYgKG1hcENvbnRyb2xzPy5tYXBEcmF3Py5hY3RpdmUpIHtcbiAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgnbWFwRHJhdycpO1xuICAgIH1cbiAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcExlZ2VuZCcpO1xuICB9LCBbb25DbGlja0NvbnRyb2xCdG4sIG9uVG9nZ2xlTWFwQ29udHJvbCwgbWFwQ29udHJvbHNdKTtcbiAgY29uc3Qgb25DbG9zZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcExlZ2VuZCcpO1xuICAgIH0sXG4gICAgW29uVG9nZ2xlTWFwQ29udHJvbF1cbiAgKTtcblxuICBpZiAoIW1hcExlZ2VuZC5zaG93KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBsZWdlbmRQYW5lbCA9IGFjdGl2ZSA/IChcbiAgICA8TWFwQ29udHJvbFBhbmVsXG4gICAgICBzY2FsZT17c2NhbGV9XG4gICAgICBoZWFkZXI9XCJoZWFkZXIubGF5ZXJMZWdlbmRcIlxuICAgICAgey4uLntvbkNsaWNrOiBvbkNsb3NlQ2xpY2ssIHBpbm5hYmxlOiBmYWxzZSwgZGlzYWJsZUNsb3NlOiBmYWxzZX19XG4gICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICBsb2dvQ29tcG9uZW50PXtsb2dvQ29tcG9uZW50fVxuICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0PXtvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnR9XG4gICAgICBpc1ZpZXdwb3J0VW5zeW5jQWxsb3dlZD17aXNWaWV3cG9ydFVuc3luY0FsbG93ZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8TWFwTGVnZW5kXG4gICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgLz5cbiAgICA8L01hcENvbnRyb2xQYW5lbD5cbiAgKSA6IG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2FjdGl2ZSA/IChcbiAgICAgICAgaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzKSA/IChcbiAgICAgICAgICBsZWdlbmRQYW5lbFxuICAgICAgICApIDogaXNFeHBvcnQgPyAoXG4gICAgICAgICAgPEltYWdlRXhwb3J0TGVnZW5kIGlzU2lkZVBhbmVsU2hvd249e2lzU2lkZVBhbmVsU2hvd259IHNldHRpbmdzPXtzZXR0aW5nc30+XG4gICAgICAgICAgICB7bGVnZW5kUGFuZWx9XG4gICAgICAgICAgPC9JbWFnZUV4cG9ydExlZ2VuZD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8RHJhZ2dhYmxlTGVnZW5kXG4gICAgICAgICAgICAgIGlzU2lkZVBhbmVsU2hvd249e2lzU2lkZVBhbmVsU2hvd259XG4gICAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgICAgc2V0TWFwQ29udHJvbFNldHRpbmdzPXtzZXRNYXBDb250cm9sU2V0dGluZ3N9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsZWdlbmRQYW5lbH1cbiAgICAgICAgICAgIDwvRHJhZ2dhYmxlTGVnZW5kPixcbiAgICAgICAgICAgIHJvb3RDb250ZXh0Py5jdXJyZW50ID8/IGRvY3VtZW50LmJvZHlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFpc0V4cG9ydCA/IChcbiAgICAgICAgPE1hcENvbnRyb2xUb29sdGlwIGlkPVwic2hvdy1sZWdlbmRcIiBtZXNzYWdlPVwidG9vbHRpcC5zaG93TGVnZW5kXCI+XG4gICAgICAgICAgPE1hcENvbnRyb2xCdXR0b24gY2xhc3NOYW1lPVwibWFwLWNvbnRyb2wtYnV0dG9uIHNob3ctbGVnZW5kXCIgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICA8YWN0aW9uSWNvbnMubGVnZW5kIGhlaWdodD1cIjIycHhcIiAvPlxuICAgICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvPlxuICApO1xufTtcblxuZnVuY3Rpb24gTWFwTGVnZW5kUGFuZWxGYWN0b3J5KFxuICBNYXBDb250cm9sVG9vbHRpcDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5PixcbiAgTWFwQ29udHJvbFBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sUGFuZWxGYWN0b3J5PixcbiAgTWFwTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBMZWdlbmRGYWN0b3J5PlxuKTogTWFwTGVnZW5kUGFuZWxDb21wb25lbnRUeXBlIHtcbiAgcmV0dXJuIChwcm9wczogTWFwTGVnZW5kUGFuZWxQcm9wcykgPT4gKFxuICAgIDxNYXBMZWdlbmRQYW5lbENvbXBvbmVudFxuICAgICAgey4uLnByb3BzfVxuICAgICAgTWFwQ29udHJvbFRvb2x0aXA9e01hcENvbnRyb2xUb29sdGlwfVxuICAgICAgTWFwQ29udHJvbFBhbmVsPXtNYXBDb250cm9sUGFuZWx9XG4gICAgICBNYXBMZWdlbmQ9e01hcExlZ2VuZH1cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXBMZWdlbmRQYW5l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LE1BQUEsWUFBQWtGLGFBQUEsQ0FBQWxGLE1BQUEsWUFBQXdMLFFBQUEsUUFDR25FLE1BQU0sR0FDTCxJQUFBb0UsdUJBQWdCLEVBQUNDLHdCQUFnQixDQUFDLEdBQ2hDTixXQUFXLEdBQ1QxQixRQUFRLGdCQUNWMUosTUFBQSxZQUFBa0YsYUFBQSxDQUFDOEMsaUJBQWlCO0lBQUM1QixnQkFBZ0IsRUFBRUEsZ0JBQWlCO0lBQUNHLFFBQVEsRUFBRUE7RUFBUyxHQUN2RTZFLFdBQ2dCLENBQUMsa0JBRXBCLElBQUEzQyxzQkFBWSxnQkFDVnpJLE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ2MsZUFBZTtJQUNkSSxnQkFBZ0IsRUFBRUEsZ0JBQWlCO0lBQ25DQyxXQUFXLEVBQUVBLFdBQVk7SUFDekJDLHFCQUFxQixFQUFFQTtFQUFzQixHQUU1QzhFLFdBQ2MsQ0FBQyxHQUFBOUIsb0JBQUEsR0FDbEJxQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXJDLE9BQU8sY0FBQWdCLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUlxQyxRQUFRLENBQUNDLElBQ25DLENBQUMsQ0FDRixHQUNDLElBQUksRUFDUCxDQUFDbEMsUUFBUSxnQkFDUjFKLE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ21GLGlCQUFpQjtJQUFDekYsRUFBRSxFQUFDLGFBQWE7SUFBQ2lILE9BQU8sRUFBQztFQUFvQixnQkFDOUQ3TCxNQUFBLFlBQUFrRixhQUFBLENBQUN6RSxrQkFBQSxDQUFBcUwsZ0JBQWdCO0lBQUMxRyxTQUFTLEVBQUMsZ0NBQWdDO0lBQUMwRixPQUFPLEVBQUVBO0VBQVEsZ0JBQzVFOUssTUFBQSxZQUFBa0YsYUFBQSxDQUFDMkUsV0FBVyxDQUFDWixNQUFNO0lBQUNuRCxNQUFNLEVBQUM7RUFBTSxDQUFFLENBQ25CLENBQ0QsQ0FBQyxHQUNsQixJQUNKLENBQUM7QUFFUCxDQUFDO0FBRUQsU0FBUzZDLHFCQUFxQkEsQ0FDNUIwQixpQkFBOEQsRUFDOURDLGVBQTBELEVBQzFEQyxTQUE4QyxFQUNqQjtFQUM3QixPQUFPLFVBQUMxRyxLQUEwQjtJQUFBLG9CQUNoQzdELE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ2lFLHVCQUF1QixNQUFBaEUsU0FBQSxpQkFDbEJ0QixLQUFLO01BQ1R3RyxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQ3JDQyxlQUFlLEVBQUVBLGVBQWdCO01BQ2pDQyxTQUFTLEVBQUVBO0lBQVUsRUFDdEIsQ0FBQztFQUFBLENBQ0g7QUFDSDtBQUFDLElBQUF3QixRQUFBLEdBQUFDLE9BQUEsY0FFY3JELHFCQUFxQiIsImlnbm9yZUxpc3QiOltdfQ==
277
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0RG9tIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb3JlIiwiX3V0aWxpdGllcyIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX3V0aWxzIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2NvbnRleHQiLCJfdXNlTGVnZW5kUG9zaXRpb24zIiwiX21hcENvbnRyb2xQYW5lbCIsIl9tYXBDb250cm9sVG9vbHRpcCIsIl9tYXBMZWdlbmQiLCJfbW9kaWZpZXJzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiRFJBR19SRVNJWkVfSUQiLCJEUkFHX01PVkVfSUQiLCJTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50Iiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiYWN0aXZlQ29sb3IiLCJtYXhDb250ZW50SGVpZ2h0IiwiY29uY2F0IiwiY29udGVudEhlaWdodCIsIlN0eWxlZE1vdmVIYW5kbGUiLCJTdHlsZWRSZXNpemVIYW5kbGUiLCJTdHlsZWRGaXhlZExlZ2VuZENvbnRlbnQiLCJEcmFnZ2FibGVMZWdlbmRDb250ZW50IiwiZm9yd2FyZFJlZiIsInJlZiIsInBvc2l0aW9uU3R5bGVzIiwiY2hpbGRyZW4iLCJkcmFnZ2FibGVNb3ZlIiwidXNlRHJhZ2dhYmxlIiwiaWQiLCJkcmFnZ2FibGVSZXNpemUiLCJyZWZzIiwidXNlTWVyZ2VSZWZzIiwic2V0Tm9kZVJlZiIsImlzRHJhZ2dpbmciLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwidHJhbnNmb3JtIiwiQ1NTIiwiVHJhbnNsYXRlIiwidG9TdHJpbmciLCJhdHRyaWJ1dGVzIiwibGlzdGVuZXJzIiwiRHJhZ2dhYmxlRG90cyIsImhlaWdodCIsIkhvcml6b250YWxSZXNpemVIYW5kbGUiLCJEcmFnZ2FibGVMZWdlbmQiLCJ3aXRoVGhlbWUiLCJfcmVmIiwiX21hcENvbnRyb2xzJG1hcExlZ2VuIiwiaXNTaWRlUGFuZWxTaG93biIsIm1hcENvbnRyb2xzIiwic2V0TWFwQ29udHJvbFNldHRpbmdzIiwibWFwU3RhdGUiLCJzZXR0aW5ncyIsIm1hcExlZ2VuZCIsImxlZ2VuZENvbnRlbnRSZWYiLCJ1c2VSZWYiLCJvbkNoYW5nZVNldHRpbmdzIiwidXNlQ2FsbGJhY2siLCJuZXdTZXR0aW5ncyIsIl91c2VMZWdlbmRQb3NpdGlvbiIsInVzZUxlZ2VuZFBvc2l0aW9uIiwibWFwSGVpZ2h0IiwibWFwV2lkdGgiLCJ3aWR0aCIsInVwZGF0ZVBvc2l0aW9uIiwic3RhcnRSZXNpemUiLCJyZXNpemUiLCJoYW5kbGVEcmFnU3RhcnQiLCJldmVudCIsImFjdGl2ZSIsImhhbmRsZURyYWdFbmQiLCJoYW5kbGVEcmFnTW92ZSIsImRlbHRhIiwieSIsIkRuZENvbnRleHQiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJtb2RpZmllcnMiLCJyZXN0cmljdFRvV2luZG93RWRnZXMiLCJJbWFnZUV4cG9ydExlZ2VuZCIsIl9yZWYyIiwiX2NvbnRhaW5lclJlZiRjdXJyZW50IiwiY29udGFpbmVyUmVmIiwiX3VzZUxlZ2VuZFBvc2l0aW9uMiIsInBvcnRhbFJvb3QiLCJjdXJyZW50IiwiY2xvc2VzdCIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVQb3J0YWwiLCJwb3NpdGlvbiIsIk1hcExlZ2VuZFBhbmVsRmFjdG9yeSIsImRlcHMiLCJNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkiLCJNYXBDb250cm9sUGFuZWxGYWN0b3J5IiwiTWFwTGVnZW5kRmFjdG9yeSIsImRlZmF1bHRBY3Rpb25JY29ucyIsImxlZ2VuZCIsIkxlZ2VuZCIsIk1hcExlZ2VuZFBhbmVsQ29tcG9uZW50IiwiX3JlZjMiLCJfbWFwQ29udHJvbHMkbWFwTGVnZW4yIiwiX3Jvb3RDb250ZXh0JGN1cnJlbnQiLCJsYXllcnMiLCJzY2FsZSIsIm9uVG9nZ2xlTWFwQ29udHJvbCIsImlzRXhwb3J0IiwibG9nb0NvbXBvbmVudCIsIl9yZWYzJGFjdGlvbkljb25zIiwiYWN0aW9uSWNvbnMiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwib25Ub2dnbGVMYXllclZpc2liaWxpdHkiLCJvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQiLCJvbkNsaWNrQ29udHJvbEJ0biIsImFjdGl2ZVNpZGVQYW5lbCIsIl9yZWYzJGlzVmlld3BvcnRVbnN5biIsImlzVmlld3BvcnRVbnN5bmNBbGxvd2VkIiwiTWFwQ29udHJvbFRvb2x0aXAiLCJNYXBDb250cm9sUGFuZWwiLCJNYXBMZWdlbmQiLCJCb29sZWFuIiwiX3JlZjQiLCJkaXNhYmxlRWRpdCIsInJvb3RDb250ZXh0IiwidXNlQ29udGV4dCIsIlJvb3RDb250ZXh0Iiwib25DbGljayIsIl9tYXBDb250cm9scyRtYXBEcmF3IiwibWFwRHJhdyIsIm9uQ2xvc2VDbGljayIsInByZXZlbnREZWZhdWx0Iiwic2hvdyIsImxlZ2VuZFBhbmVsIiwiaGVhZGVyIiwicGlubmFibGUiLCJkaXNhYmxlQ2xvc2UiLCJGcmFnbWVudCIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwiZG9jdW1lbnQiLCJib2R5IiwibWVzc2FnZSIsIk1hcENvbnRyb2xCdXR0b24iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1sZWdlbmQtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtjcmVhdGVQb3J0YWx9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgRkMsXG4gIGZvcndhcmRSZWYsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VSZWYsXG4gIFByb3BzV2l0aENoaWxkcmVuXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtEbmRDb250ZXh0LCB1c2VEcmFnZ2FibGV9IGZyb20gJ0BkbmQta2l0L2NvcmUnO1xuaW1wb3J0IHtDU1N9IGZyb20gJ0BkbmQta2l0L3V0aWxpdGllcyc7XG5pbXBvcnQge3VzZU1lcmdlUmVmc30gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0JztcblxuaW1wb3J0IHtBY3Rpb25IYW5kbGVyLCBzZXRNYXBDb250cm9sU2V0dGluZ3MsIHRvZ2dsZVNwbGl0TWFwVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge2JyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7TGF5ZXJWaXNDb25maWcsIE1hcENvbnRyb2xNYXBMZWdlbmQsIE1hcENvbnRyb2xzLCBNYXBTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2hhc1BvcnRhYmxlV2lkdGh9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBMZWdlbmRDb250cm9sU2V0dGluZ3N9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge0xlZ2VuZCwgRHJhZ2dhYmxlRG90cywgSG9yaXpvbnRhbFJlc2l6ZUhhbmRsZX0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7TWFwQ29udHJvbEJ1dHRvbn0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Um9vdENvbnRleHR9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHVzZUxlZ2VuZFBvc2l0aW9uIGZyb20gJy4uL2hvb2tzL3VzZS1sZWdlbmQtcG9zaXRpb24nO1xuaW1wb3J0IE1hcENvbnRyb2xQYW5lbEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC1wYW5lbCc7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbHRpcCc7XG5pbXBvcnQgTWFwTGVnZW5kRmFjdG9yeSBmcm9tICcuL21hcC1sZWdlbmQnO1xuaW1wb3J0IHtyZXN0cmljdFRvV2luZG93RWRnZXN9IGZyb20gJ0BkbmQta2l0L21vZGlmaWVycyc7XG5cbmNvbnN0IERSQUdfUkVTSVpFX0lEID0gJ21hcC1sZWdlbmQtcmVzaXplJztcbmNvbnN0IERSQUdfTU9WRV9JRCA9ICdtYXAtbGVnZW5kLW1vdmUnO1xuXG5jb25zdCBTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50ID0gc3R5bGVkLmRpdjx7XG4gIGNvbnRlbnRIZWlnaHQ/OiBudW1iZXI7XG4gIG1heENvbnRlbnRIZWlnaHQ/OiBudW1iZXI7XG59PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLWluLW91dDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIC5sZWdlbmQtaW5wdXQtYmxvY2sge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgJi5pcy1kcmFnZ2luZyAubGVnZW5kLWlucHV0LWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gICY6aG92ZXIsXG4gICYuaXMtZHJhZ2dpbmcge1xuICAgIC5sZWdlbmQtbW92ZS1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIH1cbiAgICAubGVnZW5kLXJlc2l6ZS1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIH1cbiAgICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICB9XG4gIC5tYXAtY29udHJvbF9fcGFuZWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubWF4Q29udGVudEhlaWdodCA/IGAke3Byb3BzLm1heENvbnRlbnRIZWlnaHR9cHhgIDogJ2NhbGMoMTAwdmggLSAxMDBweCknfTtcbiAgICAke3Byb3BzID0+IChwcm9wcy5jb250ZW50SGVpZ2h0ID8gYGhlaWdodDogJHtwcm9wcy5jb250ZW50SGVpZ2h0fXB4O2AgOiAnJyl9O1xuICB9XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgei1pbmRleDogMjtcbiAgLm1hcC1jb250cm9sLXBhbmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZE1vdmVIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogNDhweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGN1cnNvcjogbW92ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5hY3RpdmVDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRSZXNpemVIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAjZjdmOGZhO1xuICB6LWluZGV4OiAyO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG5gO1xuXG5jb25zdCBTdHlsZWRGaXhlZExlZ2VuZENvbnRlbnQgPSBzdHlsZWQuZGl2PHtjb250ZW50SGVpZ2h0PzogbnVtYmVyfT5gXG4gIC5tYXAtY29udHJvbF9fcGFuZWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcbiAgICAke3Byb3BzID0+IChwcm9wcy5jb250ZW50SGVpZ2h0ID8gYGhlaWdodDogJHtwcm9wcy5jb250ZW50SGVpZ2h0fXB4O2AgOiAnJyl9O1xuICB9XG5cbiAgLyogSGlkZSBzY3JvbGxiYXJzIGluIGV4cG9ydCB0byBhdm9pZCBPUyBkZWZhdWx0IHN0eWxpbmcgZGlmZmVyZW5jZXMgKi9cbiAgLnN0eWxlZC1jb2xvci1sZWdlbmQge1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLyogSUUgYW5kIG9sZCBFZGdlICovXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyAvKiBGaXJlZm94ICovXG4gIH1cbiAgLnN0eWxlZC1jb2xvci1sZWdlbmQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMCAhaW1wb3J0YW50OyAvKiBDaHJvbWUsIFNhZmFyaSwgbmV3IEVkZ2UgKi9cbiAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kUGFuZWxGYWN0b3J5RGVwcyA9IFtcbiAgdHlwZW9mIE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSxcbiAgdHlwZW9mIE1hcENvbnRyb2xQYW5lbEZhY3RvcnksXG4gIHR5cGVvZiBNYXBMZWdlbmRGYWN0b3J5XG5dO1xuXG50eXBlIERyYWdnYWJsZUxlZ2VuZENvbnRlbnRQcm9wcyA9IHtcbiAgY29udGVudEhlaWdodD86IG51bWJlcjtcbiAgbWF4Q29udGVudEhlaWdodD86IG51bWJlcjtcbiAgcG9zaXRpb25TdHlsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgRHJhZ2dhYmxlTGVnZW5kQ29udGVudCA9IGZvcndhcmRSZWYoKHByb3BzOiBEcmFnZ2FibGVMZWdlbmRDb250ZW50UHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7cG9zaXRpb25TdHlsZXMsIGNoaWxkcmVuLCBjb250ZW50SGVpZ2h0LCBtYXhDb250ZW50SGVpZ2h0fSA9IHByb3BzO1xuICBjb25zdCBkcmFnZ2FibGVNb3ZlID0gdXNlRHJhZ2dhYmxlKHtpZDogRFJBR19NT1ZFX0lEfSk7XG4gIGNvbnN0IGRyYWdnYWJsZVJlc2l6ZSA9IHVzZURyYWdnYWJsZSh7aWQ6IERSQUdfUkVTSVpFX0lEfSk7XG4gIGNvbnN0IHJlZnMgPSB1c2VNZXJnZVJlZnMoW2RyYWdnYWJsZU1vdmUuc2V0Tm9kZVJlZiwgcmVmXSk7XG4gIGNvbnN0IGlzRHJhZ2dpbmcgPSBkcmFnZ2FibGVNb3ZlLmlzRHJhZ2dpbmcgfHwgZHJhZ2dhYmxlUmVzaXplLmlzRHJhZ2dpbmc7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZERyYWdnYWJsZUxlZ2VuZENvbnRlbnRcbiAgICAgIHJlZj17cmVmc31cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZHJhZ2dhYmxlLWxlZ2VuZCcsIHsnaXMtZHJhZ2dpbmcnOiBpc0RyYWdnaW5nfSl9XG4gICAgICBzdHlsZT17ey4uLnBvc2l0aW9uU3R5bGVzLCB0cmFuc2Zvcm06IENTUy5UcmFuc2xhdGUudG9TdHJpbmcoZHJhZ2dhYmxlTW92ZS50cmFuc2Zvcm0pfX1cbiAgICAgIGNvbnRlbnRIZWlnaHQ9e2NvbnRlbnRIZWlnaHR9XG4gICAgICBtYXhDb250ZW50SGVpZ2h0PXttYXhDb250ZW50SGVpZ2h0fVxuICAgICAgey4uLmRyYWdnYWJsZU1vdmUuYXR0cmlidXRlc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICB7aXNEcmFnZ2luZyA/IDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLWlucHV0LWJsb2NrXCIgLz4gOiBudWxsfVxuICAgICAgPFN0eWxlZE1vdmVIYW5kbGUgY2xhc3NOYW1lPVwibGVnZW5kLW1vdmUtaGFuZGxlXCIgey4uLmRyYWdnYWJsZU1vdmUubGlzdGVuZXJzfT5cbiAgICAgICAgPERyYWdnYWJsZURvdHMgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICA8L1N0eWxlZE1vdmVIYW5kbGU+XG4gICAgICA8U3R5bGVkUmVzaXplSGFuZGxlXG4gICAgICAgIGNsYXNzTmFtZT1cImxlZ2VuZC1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgcmVmPXtkcmFnZ2FibGVSZXNpemUuc2V0Tm9kZVJlZn1cbiAgICAgICAgey4uLmRyYWdnYWJsZVJlc2l6ZS5saXN0ZW5lcnN9XG4gICAgICA+XG4gICAgICAgIDxIb3Jpem9udGFsUmVzaXplSGFuZGxlIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgPC9TdHlsZWRSZXNpemVIYW5kbGU+XG4gICAgPC9TdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50PlxuICApO1xufSk7XG5cbnR5cGUgRHJhZ2dhYmxlTGVnZW5kUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzOiB0eXBlb2Ygc2V0TWFwQ29udHJvbFNldHRpbmdzO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUxlZ2VuZCA9IHdpdGhUaGVtZShcbiAgKHtcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIGNoaWxkcmVuLFxuICAgIG1hcENvbnRyb2xzLFxuICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncyxcbiAgICBtYXBTdGF0ZSxcbiAgICB0aGVtZVxuICB9OiBEcmFnZ2FibGVMZWdlbmRQcm9wcyAmIHt0aGVtZTogYW55fSkgPT4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gbWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3M7XG5cbiAgICBjb25zdCBsZWdlbmRDb250ZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBvbkNoYW5nZVNldHRpbmdzID0gdXNlQ2FsbGJhY2soXG4gICAgICBuZXdTZXR0aW5ncyA9PiBzZXRNYXBDb250cm9sU2V0dGluZ3MoJ21hcExlZ2VuZCcsIG5ld1NldHRpbmdzKSxcbiAgICAgIFtzZXRNYXBDb250cm9sU2V0dGluZ3NdXG4gICAgKTtcbiAgICBjb25zdCB7cG9zaXRpb25TdHlsZXMsIHVwZGF0ZVBvc2l0aW9uLCBzdGFydFJlc2l6ZSwgcmVzaXplLCBjb250ZW50SGVpZ2h0LCBtYXhDb250ZW50SGVpZ2h0fSA9XG4gICAgICB1c2VMZWdlbmRQb3NpdGlvbih7XG4gICAgICAgIGxlZ2VuZENvbnRlbnRSZWYsXG4gICAgICAgIGlzU2lkZVBhbmVsU2hvd24sXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBzZXR0aW5ncyxcbiAgICAgICAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgICAgICAgbWFwSGVpZ2h0OiBtYXBTdGF0ZT8uaGVpZ2h0LFxuICAgICAgICBtYXBXaWR0aDogbWFwU3RhdGU/LndpZHRoXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICBzdGFydFJlc2l6ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbdXBkYXRlUG9zaXRpb24sIHN0YXJ0UmVzaXplXVxuICAgICk7XG4gICAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKHVwZGF0ZVBvc2l0aW9uLCBbdXBkYXRlUG9zaXRpb25dKTtcbiAgICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICByZXNpemUoZXZlbnQuZGVsdGEueSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtyZXNpemVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RG5kQ29udGV4dFxuICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICBtb2RpZmllcnM9e1tyZXN0cmljdFRvV2luZG93RWRnZXNdfVxuICAgICAgPlxuICAgICAgICA8RHJhZ2dhYmxlTGVnZW5kQ29udGVudFxuICAgICAgICAgIHJlZj17bGVnZW5kQ29udGVudFJlZn1cbiAgICAgICAgICBwb3NpdGlvblN0eWxlcz17cG9zaXRpb25TdHlsZXN9XG4gICAgICAgICAgY29udGVudEhlaWdodD17Y29udGVudEhlaWdodH1cbiAgICAgICAgICBtYXhDb250ZW50SGVpZ2h0PXttYXhDb250ZW50SGVpZ2h0fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0RyYWdnYWJsZUxlZ2VuZENvbnRlbnQ+XG4gICAgICA8L0RuZENvbnRleHQ+XG4gICAgKTtcbiAgfVxuKSBhcyBGQzxEcmFnZ2FibGVMZWdlbmRQcm9wcz47XG5cbnR5cGUgSW1hZ2VFeHBvcnRMZWdlbmRQcm9wcyA9IHtcbiAgc2V0dGluZ3M/OiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBJbWFnZUV4cG9ydExlZ2VuZCA9IHdpdGhUaGVtZSgoe3NldHRpbmdzLCBpc1NpZGVQYW5lbFNob3duLCB0aGVtZSwgY2hpbGRyZW59KSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZjogUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+ID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBsZWdlbmRDb250ZW50UmVmOiBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4gPSB1c2VSZWYobnVsbCk7XG5cbiAgY29uc3Qge3Bvc2l0aW9uU3R5bGVzLCBjb250ZW50SGVpZ2h0fSA9IHVzZUxlZ2VuZFBvc2l0aW9uKHtcbiAgICBsZWdlbmRDb250ZW50UmVmLFxuICAgIGlzU2lkZVBhbmVsU2hvd24sXG4gICAgdGhlbWUsXG4gICAgc2V0dGluZ3MsXG4gICAgb25DaGFuZ2VTZXR0aW5nczogKCkgPT4ge1xuICAgICAgLy8gZG8gbm90aGluZyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBwb3J0YWxSb290ID0gY29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICA/LmNsb3Nlc3QoJy5leHBvcnQtbWFwLWluc3RhbmNlJylcbiAgICA/LnF1ZXJ5U2VsZWN0b3IoJyNkZWZhdWx0LWRlY2tnbC1vdmVybGF5LXdyYXBwZXInKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtjb250YWluZXJSZWZ9PlxuICAgICAge3BvcnRhbFJvb3RcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkLWxlZ2VuZFwiXG4gICAgICAgICAgICAgIHJlZj17bGVnZW5kQ29udGVudFJlZn1cbiAgICAgICAgICAgICAgc3R5bGU9e3suLi5wb3NpdGlvblN0eWxlcywgcG9zaXRpb246ICdhYnNvbHV0ZSd9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3R5bGVkRml4ZWRMZWdlbmRDb250ZW50IGNvbnRlbnRIZWlnaHQ9e2NvbnRlbnRIZWlnaHR9PlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9TdHlsZWRGaXhlZExlZ2VuZENvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBwb3J0YWxSb290XG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGx9XG4gICAgPC9kaXY+XG4gICk7XG59KSBhcyBSZWFjdC5GQzxJbWFnZUV4cG9ydExlZ2VuZFByb3BzPjtcblxuTWFwTGVnZW5kUGFuZWxGYWN0b3J5LmRlcHMgPSBbTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LCBNYXBDb250cm9sUGFuZWxGYWN0b3J5LCBNYXBMZWdlbmRGYWN0b3J5XTtcblxuaW50ZXJmYWNlIE1hcExlZ2VuZFBhbmVsSWNvbnMge1xuICBsZWdlbmQ6IENvbXBvbmVudFR5cGU8YW55Pjtcbn1cblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kUGFuZWxQcm9wcyA9IHtcbiAgdGhlbWU6IGFueTtcbiAgbGF5ZXJzOiBSZWFkb25seUFycmF5PExheWVyPjtcbiAgc2NhbGU6IG51bWJlcjtcbiAgb25Ub2dnbGVNYXBDb250cm9sOiAoY29udHJvbDogc3RyaW5nKSA9PiB2b2lkO1xuICBpc0V4cG9ydDogYm9vbGVhbjtcbiAgbG9nb0NvbXBvbmVudDogRWxlbWVudDtcbiAgYWN0aW9uSWNvbnM6IE1hcExlZ2VuZFBhbmVsSWNvbnM7XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5PzogKGxheWVyOiBMYXllcikgPT4gdm9pZDtcbiAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0PzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydD47XG4gIGlzVmlld3BvcnRVbnN5bmNBbGxvd2VkPzogYm9vbGVhbjtcbiAgb25DbGlja0NvbnRyb2xCdG4/OiAoZT86IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzZXR0aW5nczogTWFwTGVnZW5kQ29udHJvbFNldHRpbmdzO1xuICBpc1NpZGVQYW5lbFNob3duOiBib29sZWFuO1xuICBhY3RpdmVTaWRlUGFuZWw6IHN0cmluZyB8IG51bGw7XG4gIHNldE1hcENvbnRyb2xTZXR0aW5nczogYW55O1xufTtcblxudHlwZSBNYXBMZWdlbmRQYW5lbENvbXBvbmVudHMgPSB7XG4gIE1hcENvbnRyb2xUb29sdGlwOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3Rvcnk+O1xuICBNYXBDb250cm9sUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xQYW5lbEZhY3Rvcnk+O1xuICBNYXBMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcExlZ2VuZEZhY3Rvcnk+O1xufTtcblxudHlwZSBNYXBMZWdlbmRQYW5lbENvbXBvbmVudFR5cGUgPSBSZWFjdC5GQzxNYXBMZWdlbmRQYW5lbFByb3BzPjtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICBsZWdlbmQ6IHByb3BzID0+IDxMZWdlbmQgey4uLnByb3BzfSBoZWlnaHQ9XCIxOHB4XCIgLz5cbn07XG5cbmNvbnN0IE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50ID0gKHtcbiAgbGF5ZXJzLFxuICBtYXBDb250cm9scyxcbiAgc2NhbGUsXG4gIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgaXNFeHBvcnQsXG4gIGxvZ29Db21wb25lbnQsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBtYXBTdGF0ZSxcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgb25Ub2dnbGVMYXllclZpc2liaWxpdHksXG4gIG9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydCxcbiAgb25DbGlja0NvbnRyb2xCdG4sXG4gIGFjdGl2ZVNpZGVQYW5lbCxcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzLFxuICBpc1ZpZXdwb3J0VW5zeW5jQWxsb3dlZCA9IHRydWUsXG4gIGNsYXNzTmFtZSxcbiAgTWFwQ29udHJvbFRvb2x0aXAsXG4gIE1hcENvbnRyb2xQYW5lbCxcbiAgTWFwTGVnZW5kXG59OiBNYXBMZWdlbmRQYW5lbFByb3BzICYgTWFwTGVnZW5kUGFuZWxDb21wb25lbnRzKSA9PiB7XG4gIGNvbnN0IGlzU2lkZVBhbmVsU2hvd24gPSBCb29sZWFuKGFjdGl2ZVNpZGVQYW5lbCk7XG4gIGNvbnN0IHNldHRpbmdzID0gbWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3M7XG5cbiAgY29uc3QgbWFwTGVnZW5kID0gbWFwQ29udHJvbHM/Lm1hcExlZ2VuZCB8fCAoe30gYXMgTWFwQ29udHJvbE1hcExlZ2VuZCk7XG4gIGNvbnN0IHthY3RpdmUsIGRpc2FibGVFZGl0fSA9IG1hcExlZ2VuZCB8fCB7fTtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VDb250ZXh0KFJvb3RDb250ZXh0KTtcblxuICBjb25zdCBvbkNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uQ2xpY2tDb250cm9sQnRuPy4oKTtcbiAgICBpZiAobWFwQ29udHJvbHM/Lm1hcERyYXc/LmFjdGl2ZSkge1xuICAgICAgb25Ub2dnbGVNYXBDb250cm9sKCdtYXBEcmF3Jyk7XG4gICAgfVxuICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgnbWFwTGVnZW5kJyk7XG4gIH0sIFtvbkNsaWNrQ29udHJvbEJ0biwgb25Ub2dnbGVNYXBDb250cm9sLCBtYXBDb250cm9sc10pO1xuICBjb25zdCBvbkNsb3NlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgnbWFwTGVnZW5kJyk7XG4gICAgfSxcbiAgICBbb25Ub2dnbGVNYXBDb250cm9sXVxuICApO1xuXG4gIGlmICghbWFwTGVnZW5kLnNob3cpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGxlZ2VuZFBhbmVsID0gYWN0aXZlID8gKFxuICAgIDxNYXBDb250cm9sUGFuZWxcbiAgICAgIHNjYWxlPXtzY2FsZX1cbiAgICAgIGhlYWRlcj1cImhlYWRlci5sYXllckxlZ2VuZFwiXG4gICAgICB7Li4ue29uQ2xpY2s6IG9uQ2xvc2VDbGljaywgcGlubmFibGU6IGZhbHNlLCBkaXNhYmxlQ2xvc2U6IGZhbHNlfX1cbiAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgIGxvZ29Db21wb25lbnQ9e2xvZ29Db21wb25lbnR9XG4gICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQ9e29uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydH1cbiAgICAgIGlzVmlld3BvcnRVbnN5bmNBbGxvd2VkPXtpc1ZpZXdwb3J0VW5zeW5jQWxsb3dlZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxNYXBMZWdlbmRcbiAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5PXtvblRvZ2dsZUxheWVyVmlzaWJpbGl0eX1cbiAgICAgIC8+XG4gICAgPC9NYXBDb250cm9sUGFuZWw+XG4gICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHthY3RpdmUgPyAoXG4gICAgICAgIGhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcykgPyAoXG4gICAgICAgICAgbGVnZW5kUGFuZWxcbiAgICAgICAgKSA6IGlzRXhwb3J0ID8gKFxuICAgICAgICAgIDxJbWFnZUV4cG9ydExlZ2VuZCBpc1NpZGVQYW5lbFNob3duPXtpc1NpZGVQYW5lbFNob3dufSBzZXR0aW5ncz17c2V0dGluZ3N9PlxuICAgICAgICAgICAge2xlZ2VuZFBhbmVsfVxuICAgICAgICAgIDwvSW1hZ2VFeHBvcnRMZWdlbmQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPERyYWdnYWJsZUxlZ2VuZFxuICAgICAgICAgICAgICBpc1NpZGVQYW5lbFNob3duPXtpc1NpZGVQYW5lbFNob3dufVxuICAgICAgICAgICAgICBtYXBDb250cm9scz17bWFwQ29udHJvbHN9XG4gICAgICAgICAgICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncz17c2V0TWFwQ29udHJvbFNldHRpbmdzfVxuICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsZWdlbmRQYW5lbH1cbiAgICAgICAgICAgIDwvRHJhZ2dhYmxlTGVnZW5kPixcbiAgICAgICAgICAgIHJvb3RDb250ZXh0Py5jdXJyZW50ID8/IGRvY3VtZW50LmJvZHlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFpc0V4cG9ydCA/IChcbiAgICAgICAgPE1hcENvbnRyb2xUb29sdGlwIGlkPVwic2hvdy1sZWdlbmRcIiBtZXNzYWdlPVwidG9vbHRpcC5zaG93TGVnZW5kXCI+XG4gICAgICAgICAgPE1hcENvbnRyb2xCdXR0b24gY2xhc3NOYW1lPVwibWFwLWNvbnRyb2wtYnV0dG9uIHNob3ctbGVnZW5kXCIgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICA8YWN0aW9uSWNvbnMubGVnZW5kIGhlaWdodD1cIjIycHhcIiAvPlxuICAgICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvPlxuICApO1xufTtcblxuZnVuY3Rpb24gTWFwTGVnZW5kUGFuZWxGYWN0b3J5KFxuICBNYXBDb250cm9sVG9vbHRpcDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5PixcbiAgTWFwQ29udHJvbFBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sUGFuZWxGYWN0b3J5PixcbiAgTWFwTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBMZWdlbmRGYWN0b3J5PlxuKTogTWFwTGVnZW5kUGFuZWxDb21wb25lbnRUeXBlIHtcbiAgcmV0dXJuIChwcm9wczogTWFwTGVnZW5kUGFuZWxQcm9wcykgPT4gKFxuICAgIDxNYXBMZWdlbmRQYW5lbENvbXBvbmVudFxuICAgICAgey4uLnByb3BzfVxuICAgICAgTWFwQ29udHJvbFRvb2x0aXA9e01hcENvbnRyb2xUb29sdGlwfVxuICAgICAgTWFwQ29udHJvbFBhbmVsPXtNYXBDb250cm9sUGFuZWx9XG4gICAgICBNYXBMZWdlbmQ9e01hcExlZ2VuZH1cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXBMZWdlbmRQYW5lbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsV0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBU0EsSUFBQUksaUJBQUEsR0FBQUQsdUJBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtB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
@@ -11,12 +11,12 @@ export declare const StyledMapControlLegend: import("styled-components").IStyled
11
11
  export declare const VisualChannelMetric: ({ name }: {
12
12
  name: any;
13
13
  }) => React.JSX.Element;
14
- export declare type LayerSizeLegendProps = {
14
+ export type LayerSizeLegendProps = {
15
15
  label: string;
16
16
  name: string | undefined;
17
17
  };
18
18
  export declare const LayerDefaultLegend: React.FC<LayerSizeLegendProps>;
19
- export declare type SingleColorLegendProps = {
19
+ export type SingleColorLegendProps = {
20
20
  color: RGBColor;
21
21
  label?: string;
22
22
  };
@@ -24,7 +24,7 @@ export declare function SingleColorLegendFactory(LegendRow: ReturnType<typeof Le
24
24
  export declare namespace SingleColorLegendFactory {
25
25
  var deps: (typeof LegendRowFactory)[];
26
26
  }
27
- export declare type LayerColorLegendProps = {
27
+ export type LayerColorLegendProps = {
28
28
  description: VisualChannelDescription;
29
29
  config: LayerBaseConfig;
30
30
  colorChannel: VisualChannel;
@@ -39,11 +39,11 @@ export declare function LayerColorLegendFactory(ColorLegend: ReturnType<typeof C
39
39
  export declare namespace LayerColorLegendFactory {
40
40
  var deps: (typeof PanelHeaderActionFactory | typeof ColorLegendFactory | typeof SingleColorLegendFactory)[];
41
41
  }
42
- export declare type MapLegendIcons = {
42
+ export type MapLegendIcons = {
43
43
  expanded: ComponentType<any>;
44
44
  collapsed: ComponentType<any>;
45
45
  };
46
- export declare type LayerRadiusLegendProps = {
46
+ export type LayerRadiusLegendProps = {
47
47
  layer: Layer;
48
48
  mapState?: MapState;
49
49
  width: number;
@@ -51,15 +51,16 @@ export declare type LayerRadiusLegendProps = {
51
51
  visualChannel: VisualChannel;
52
52
  };
53
53
  export declare const LayerRadiusLegend: FC<LayerRadiusLegendProps>;
54
- export declare type LayerLegendHeaderProps = {
54
+ export type LayerLegendHeaderProps = {
55
55
  layer: Layer;
56
56
  options?: {
57
57
  showLayerName?: boolean;
58
58
  };
59
59
  isExport?: boolean;
60
+ onToggleLayerVisibility?: (layer: Layer) => void;
60
61
  };
61
62
  export declare function LayerLegendHeaderFactory(): React.FC<LayerLegendHeaderProps>;
62
- export declare type LayerLegendContentProps = {
63
+ export type LayerLegendContentProps = {
63
64
  layer: Layer;
64
65
  containerW: number;
65
66
  mapState?: MapState;
@@ -72,7 +73,7 @@ export declare function LayerLegendContentFactory(LayerColorLegend: ReturnType<t
72
73
  export declare namespace LayerLegendContentFactory {
73
74
  var deps: (typeof LayerColorLegendFactory)[];
74
75
  }
75
- export declare type MapLegendProps = {
76
+ export type MapLegendProps = {
76
77
  layers?: ReadonlyArray<Layer>;
77
78
  width?: number;
78
79
  mapState?: MapState;
@@ -82,6 +83,7 @@ export declare type MapLegendProps = {
82
83
  disableEdit?: boolean;
83
84
  isExport?: boolean;
84
85
  onLayerVisConfigChange?: (oldLayer: Layer, newVisConfig: Partial<LayerVisConfig>) => void;
86
+ onToggleLayerVisibility?: (layer: Layer) => void;
85
87
  actionIcons?: MapLegendIcons;
86
88
  };
87
89
  declare function MapLegendFactory(LayerLegendHeader: ReturnType<typeof LayerLegendHeaderFactory>, LayerLegendContent: ReturnType<typeof LayerLegendContentFactory>): React.FC<MapLegendProps>;