@kepler.gl/components 3.0.0-alpha.0 → 3.0.0-alpha.2

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 (631) hide show
  1. package/dist/bottom-widget.d.ts +11 -38
  2. package/dist/bottom-widget.js +42 -118
  3. package/dist/common/action-panel.d.ts +2 -2
  4. package/dist/common/action-panel.js +3 -23
  5. package/dist/common/animation-control/animation-control.d.ts +19 -18
  6. package/dist/common/animation-control/animation-control.js +58 -100
  7. package/dist/common/animation-control/animation-controller.d.ts +6 -2
  8. package/dist/common/animation-control/animation-controller.js +49 -55
  9. package/dist/common/animation-control/animation-speed-slider.js +1 -21
  10. package/dist/common/animation-control/animation-window-control.js +3 -21
  11. package/dist/common/animation-control/floating-time-display.d.ts +2 -2
  12. package/dist/common/animation-control/floating-time-display.js +1 -21
  13. package/dist/common/animation-control/play-control.d.ts +2 -2
  14. package/dist/common/animation-control/play-control.js +3 -21
  15. package/dist/common/animation-control/playback-controls.d.ts +7 -7
  16. package/dist/common/animation-control/playback-controls.js +5 -25
  17. package/dist/common/animation-control/reset-control.d.ts +2 -2
  18. package/dist/common/animation-control/reset-control.js +3 -21
  19. package/dist/common/animation-control/speed-control.d.ts +2 -2
  20. package/dist/common/animation-control/speed-control.js +1 -21
  21. package/dist/common/animation-control/window-action-control.d.ts +2 -2
  22. package/dist/common/animation-control/window-action-control.js +3 -21
  23. package/dist/common/checkbox.d.ts +2 -2
  24. package/dist/common/checkbox.js +2 -22
  25. package/dist/common/color-legend.d.ts +3 -3
  26. package/dist/common/color-legend.js +10 -36
  27. package/dist/common/data-table/button.d.ts +1 -1
  28. package/dist/common/data-table/button.js +1 -21
  29. package/dist/common/data-table/canvas.js +1 -21
  30. package/dist/common/data-table/cell-size.js +43 -32
  31. package/dist/common/data-table/display-format.d.ts +25 -0
  32. package/dist/common/data-table/display-format.js +149 -0
  33. package/dist/common/data-table/grid.d.ts +5 -2
  34. package/dist/common/data-table/grid.js +44 -24
  35. package/dist/common/data-table/header-cell.d.ts +4 -1
  36. package/dist/common/data-table/header-cell.js +65 -48
  37. package/dist/common/data-table/index.d.ts +27 -34
  38. package/dist/common/data-table/index.js +147 -81
  39. package/dist/common/data-table/option-dropdown.d.ts +17 -3
  40. package/dist/common/data-table/option-dropdown.js +85 -32
  41. package/dist/common/dataset-label.d.ts +2 -2
  42. package/dist/common/dataset-label.js +2 -22
  43. package/dist/common/error-boundary.d.ts +6 -2
  44. package/dist/common/error-boundary.js +1 -21
  45. package/dist/common/field-selector.d.ts +10 -3
  46. package/dist/common/field-selector.js +4 -22
  47. package/dist/common/field-token.d.ts +12 -0
  48. package/dist/common/field-token.js +6 -22
  49. package/dist/common/file-uploader/file-drop.d.ts +3 -2
  50. package/dist/common/file-uploader/file-drop.js +1 -21
  51. package/dist/common/file-uploader/file-upload-progress.js +1 -21
  52. package/dist/common/file-uploader/file-upload.d.ts +2 -6
  53. package/dist/common/file-uploader/file-upload.js +1 -21
  54. package/dist/common/file-uploader/upload-button.d.ts +1 -0
  55. package/dist/common/file-uploader/upload-button.js +1 -21
  56. package/dist/common/flex-container.d.ts +3 -0
  57. package/dist/common/flex-container.js +23 -0
  58. package/dist/common/histogram-plot.d.ts +2 -2
  59. package/dist/common/histogram-plot.js +17 -31
  60. package/dist/common/icon-button.d.ts +3 -2
  61. package/dist/common/icon-button.js +1 -21
  62. package/dist/common/icons/add.d.ts +2 -2
  63. package/dist/common/icons/add.js +1 -21
  64. package/dist/common/icons/anchor_window.d.ts +2 -2
  65. package/dist/common/icons/anchor_window.js +6 -22
  66. package/dist/common/icons/arrow-down-alt.d.ts +2 -2
  67. package/dist/common/icons/arrow-down-alt.js +1 -21
  68. package/dist/common/icons/arrow-down-small.d.ts +14 -0
  69. package/dist/common/icons/arrow-down-small.js +72 -0
  70. package/dist/common/icons/arrow-down-solid.d.ts +2 -2
  71. package/dist/common/icons/arrow-down-solid.js +1 -21
  72. package/dist/common/icons/arrow-down.d.ts +2 -2
  73. package/dist/common/icons/arrow-down.js +1 -21
  74. package/dist/common/icons/arrow-left.d.ts +2 -2
  75. package/dist/common/icons/arrow-left.js +1 -21
  76. package/dist/common/icons/arrow-right.d.ts +2 -2
  77. package/dist/common/icons/arrow-right.js +1 -21
  78. package/dist/common/icons/arrow-up-alt.d.ts +2 -2
  79. package/dist/common/icons/arrow-up-alt.js +1 -21
  80. package/dist/common/icons/arrow-up-solid.d.ts +2 -2
  81. package/dist/common/icons/arrow-up-solid.js +1 -21
  82. package/dist/common/icons/arrow-up.d.ts +2 -2
  83. package/dist/common/icons/arrow-up.js +1 -21
  84. package/dist/common/icons/base.d.ts +1 -1
  85. package/dist/common/icons/base.js +1 -21
  86. package/dist/common/icons/bug.d.ts +2 -2
  87. package/dist/common/icons/bug.js +1 -21
  88. package/dist/common/icons/calendar.d.ts +10 -0
  89. package/dist/common/icons/calendar.js +66 -0
  90. package/dist/common/icons/cancel.d.ts +2 -2
  91. package/dist/common/icons/cancel.js +1 -21
  92. package/dist/common/icons/checkmark.d.ts +2 -2
  93. package/dist/common/icons/checkmark.js +1 -21
  94. package/dist/common/icons/clipboard.d.ts +2 -2
  95. package/dist/common/icons/clipboard.js +1 -21
  96. package/dist/common/icons/clock.d.ts +2 -2
  97. package/dist/common/icons/clock.js +1 -21
  98. package/dist/common/icons/close.d.ts +2 -2
  99. package/dist/common/icons/close.js +1 -21
  100. package/dist/common/icons/code-alt.d.ts +2 -2
  101. package/dist/common/icons/code-alt.js +1 -21
  102. package/dist/common/icons/copy.d.ts +2 -2
  103. package/dist/common/icons/copy.js +1 -21
  104. package/dist/common/icons/crosshairs.d.ts +2 -2
  105. package/dist/common/icons/crosshairs.js +1 -21
  106. package/dist/common/icons/cube-3d.d.ts +2 -2
  107. package/dist/common/icons/cube-3d.js +1 -21
  108. package/dist/common/icons/cursor-click.d.ts +2 -2
  109. package/dist/common/icons/cursor-click.js +1 -21
  110. package/dist/common/icons/cursor-point.d.ts +14 -0
  111. package/dist/common/icons/cursor-point.js +69 -0
  112. package/dist/common/icons/data-table.d.ts +2 -2
  113. package/dist/common/icons/data-table.js +1 -21
  114. package/dist/common/icons/db.d.ts +2 -2
  115. package/dist/common/icons/db.js +1 -21
  116. package/dist/common/icons/delete.d.ts +2 -2
  117. package/dist/common/icons/delete.js +1 -21
  118. package/dist/common/icons/docs.d.ts +2 -2
  119. package/dist/common/icons/docs.js +1 -21
  120. package/dist/common/icons/drag-n-drop.d.ts +2 -2
  121. package/dist/common/icons/drag-n-drop.js +1 -21
  122. package/dist/common/icons/draw-polygon.d.ts +2 -2
  123. package/dist/common/icons/draw-polygon.js +1 -21
  124. package/dist/common/icons/effects/brightness-contrast.d.ts +14 -0
  125. package/dist/common/icons/effects/brightness-contrast.js +88 -0
  126. package/dist/common/icons/effects/color-halftone.d.ts +14 -0
  127. package/dist/common/icons/effects/color-halftone.js +127 -0
  128. package/dist/common/icons/effects/dot-screen.d.ts +14 -0
  129. package/dist/common/icons/effects/dot-screen.js +122 -0
  130. package/dist/common/icons/effects/edge-work.d.ts +14 -0
  131. package/dist/common/icons/effects/edge-work.js +81 -0
  132. package/dist/common/icons/effects/hexagonal-pixelate.d.ts +14 -0
  133. package/dist/common/icons/effects/hexagonal-pixelate.js +148 -0
  134. package/dist/common/icons/effects/hue-saturation.d.ts +14 -0
  135. package/dist/common/icons/effects/hue-saturation.js +79 -0
  136. package/dist/common/icons/effects/ink.d.ts +14 -0
  137. package/dist/common/icons/effects/ink.js +78 -0
  138. package/dist/common/icons/effects/light-and-shadow.d.ts +14 -0
  139. package/dist/common/icons/effects/light-and-shadow.js +67 -0
  140. package/dist/common/icons/effects/magic-wand.d.ts +14 -0
  141. package/dist/common/icons/effects/magic-wand.js +79 -0
  142. package/dist/common/icons/effects/magnify.d.ts +14 -0
  143. package/dist/common/icons/effects/magnify.js +86 -0
  144. package/dist/common/icons/effects/noise.d.ts +14 -0
  145. package/dist/common/icons/effects/noise.js +132 -0
  146. package/dist/common/icons/effects/sepia.d.ts +14 -0
  147. package/dist/common/icons/effects/sepia.js +79 -0
  148. package/dist/common/icons/effects/tilt-shift.d.ts +14 -0
  149. package/dist/common/icons/effects/tilt-shift.js +88 -0
  150. package/dist/common/icons/effects/triangle-blur.d.ts +14 -0
  151. package/dist/common/icons/effects/triangle-blur.js +83 -0
  152. package/dist/common/icons/effects/vibrance.d.ts +14 -0
  153. package/dist/common/icons/effects/vibrance.js +79 -0
  154. package/dist/common/icons/effects/vignette.d.ts +14 -0
  155. package/dist/common/icons/effects/vignette.js +72 -0
  156. package/dist/common/icons/effects/zoom-blur.d.ts +14 -0
  157. package/dist/common/icons/effects/zoom-blur.js +107 -0
  158. package/dist/common/icons/email.d.ts +2 -2
  159. package/dist/common/icons/email.js +1 -21
  160. package/dist/common/icons/expand.d.ts +2 -2
  161. package/dist/common/icons/expand.js +1 -21
  162. package/dist/common/icons/eye-seen.d.ts +2 -2
  163. package/dist/common/icons/eye-seen.js +1 -21
  164. package/dist/common/icons/eye-unseen.d.ts +2 -2
  165. package/dist/common/icons/eye-unseen.js +1 -21
  166. package/dist/common/icons/file-type.d.ts +2 -2
  167. package/dist/common/icons/file-type.js +1 -21
  168. package/dist/common/icons/file.d.ts +2 -2
  169. package/dist/common/icons/file.js +1 -21
  170. package/dist/common/icons/files.d.ts +1 -1
  171. package/dist/common/icons/files.js +1 -21
  172. package/dist/common/icons/filter-funnel.d.ts +2 -2
  173. package/dist/common/icons/filter-funnel.js +1 -21
  174. package/dist/common/icons/free-window.d.ts +2 -2
  175. package/dist/common/icons/free-window.js +6 -22
  176. package/dist/common/icons/gear.d.ts +2 -2
  177. package/dist/common/icons/gear.js +1 -21
  178. package/dist/common/icons/globe.d.ts +15 -0
  179. package/dist/common/icons/globe.js +72 -0
  180. package/dist/common/icons/hash.d.ts +2 -2
  181. package/dist/common/icons/hash.js +1 -21
  182. package/dist/common/icons/histogram.d.ts +1 -1
  183. package/dist/common/icons/histogram.js +1 -21
  184. package/dist/common/icons/index.d.ts +26 -0
  185. package/dist/common/icons/index.js +209 -21
  186. package/dist/common/icons/info.d.ts +2 -2
  187. package/dist/common/icons/info.js +1 -21
  188. package/dist/common/icons/layers.d.ts +2 -2
  189. package/dist/common/icons/layers.js +1 -21
  190. package/dist/common/icons/left-arrow.d.ts +2 -2
  191. package/dist/common/icons/left-arrow.js +1 -21
  192. package/dist/common/icons/legend.d.ts +2 -2
  193. package/dist/common/icons/legend.js +1 -21
  194. package/dist/common/icons/line-chart.d.ts +2 -2
  195. package/dist/common/icons/line-chart.js +1 -21
  196. package/dist/common/icons/location-marker.d.ts +14 -0
  197. package/dist/common/icons/location-marker.js +77 -0
  198. package/dist/common/icons/login.d.ts +2 -2
  199. package/dist/common/icons/login.js +1 -21
  200. package/dist/common/icons/logout.d.ts +2 -2
  201. package/dist/common/icons/logout.js +1 -21
  202. package/dist/common/icons/map-icon.d.ts +2 -2
  203. package/dist/common/icons/map-icon.js +1 -21
  204. package/dist/common/icons/map.d.ts +2 -2
  205. package/dist/common/icons/map.js +1 -21
  206. package/dist/common/icons/messages.d.ts +2 -2
  207. package/dist/common/icons/messages.js +1 -21
  208. package/dist/common/icons/minus.d.ts +2 -2
  209. package/dist/common/icons/minus.js +1 -21
  210. package/dist/common/icons/moon.d.ts +14 -0
  211. package/dist/common/icons/moon.js +77 -0
  212. package/dist/common/icons/order-by-dataset.d.ts +2 -2
  213. package/dist/common/icons/order-by-dataset.js +6 -22
  214. package/dist/common/icons/order-by-list.d.ts +2 -2
  215. package/dist/common/icons/order-by-list.js +6 -22
  216. package/dist/common/icons/pause.d.ts +2 -2
  217. package/dist/common/icons/pause.js +1 -21
  218. package/dist/common/icons/picture.d.ts +1 -1
  219. package/dist/common/icons/picture.js +1 -21
  220. package/dist/common/icons/pin.d.ts +2 -2
  221. package/dist/common/icons/pin.js +1 -21
  222. package/dist/common/icons/play.d.ts +2 -2
  223. package/dist/common/icons/play.js +1 -21
  224. package/dist/common/icons/polygon.d.ts +2 -2
  225. package/dist/common/icons/polygon.js +1 -21
  226. package/dist/common/icons/rectangle.d.ts +2 -2
  227. package/dist/common/icons/rectangle.js +1 -21
  228. package/dist/common/icons/reduce.d.ts +2 -2
  229. package/dist/common/icons/reduce.js +1 -21
  230. package/dist/common/icons/reset.d.ts +2 -2
  231. package/dist/common/icons/reset.js +1 -21
  232. package/dist/common/icons/rocket.d.ts +2 -2
  233. package/dist/common/icons/rocket.js +1 -21
  234. package/dist/common/icons/save.d.ts +2 -2
  235. package/dist/common/icons/save.js +1 -21
  236. package/dist/common/icons/save2.d.ts +2 -2
  237. package/dist/common/icons/save2.js +1 -21
  238. package/dist/common/icons/search.d.ts +2 -2
  239. package/dist/common/icons/search.js +1 -21
  240. package/dist/common/icons/settings.d.ts +2 -2
  241. package/dist/common/icons/settings.js +1 -21
  242. package/dist/common/icons/share.d.ts +2 -2
  243. package/dist/common/icons/share.js +1 -21
  244. package/dist/common/icons/split.d.ts +2 -2
  245. package/dist/common/icons/split.js +1 -21
  246. package/dist/common/icons/square-select.d.ts +2 -2
  247. package/dist/common/icons/square-select.js +1 -21
  248. package/dist/common/icons/sun.d.ts +14 -0
  249. package/dist/common/icons/sun.js +93 -0
  250. package/dist/common/icons/sunrise.d.ts +14 -0
  251. package/dist/common/icons/sunrise.js +89 -0
  252. package/dist/common/icons/sunset.d.ts +14 -0
  253. package/dist/common/icons/sunset.js +89 -0
  254. package/dist/common/icons/trash.d.ts +2 -2
  255. package/dist/common/icons/trash.js +1 -21
  256. package/dist/common/icons/vert-dots.d.ts +2 -2
  257. package/dist/common/icons/vert-dots.js +1 -21
  258. package/dist/common/icons/vert-three-dots.d.ts +2 -2
  259. package/dist/common/icons/vert-three-dots.js +1 -21
  260. package/dist/common/icons/warning-sign.d.ts +2 -2
  261. package/dist/common/icons/warning-sign.js +1 -21
  262. package/dist/common/icons/warning.d.ts +2 -2
  263. package/dist/common/icons/warning.js +1 -21
  264. package/dist/common/image-preview.d.ts +2 -2
  265. package/dist/common/image-preview.js +1 -21
  266. package/dist/common/index.d.ts +1 -1
  267. package/dist/common/index.js +7 -21
  268. package/dist/common/info-helper.d.ts +2 -2
  269. package/dist/common/info-helper.js +1 -21
  270. package/dist/common/item-selector/accessor.js +5 -22
  271. package/dist/common/item-selector/chickleted-input.d.ts +1 -0
  272. package/dist/common/item-selector/chickleted-input.js +104 -44
  273. package/dist/common/item-selector/dropdown-list.d.ts +30 -8
  274. package/dist/common/item-selector/dropdown-list.js +150 -46
  275. package/dist/common/item-selector/item-selector.d.ts +5 -3
  276. package/dist/common/item-selector/item-selector.js +16 -24
  277. package/dist/common/item-selector/typeahead.d.ts +16 -12
  278. package/dist/common/item-selector/typeahead.js +23 -32
  279. package/dist/common/line-chart.d.ts +2 -2
  280. package/dist/common/line-chart.js +1 -21
  281. package/dist/common/loading-spinner.js +1 -21
  282. package/dist/common/logo.d.ts +2 -2
  283. package/dist/common/logo.js +1 -21
  284. package/dist/common/map-layer-selector.d.ts +2 -2
  285. package/dist/common/map-layer-selector.js +2 -23
  286. package/dist/common/modal.d.ts +24 -11
  287. package/dist/common/modal.js +25 -28
  288. package/dist/common/portaled.d.ts +526 -2
  289. package/dist/common/portaled.js +1 -21
  290. package/dist/common/progress-bar.d.ts +2 -2
  291. package/dist/common/progress-bar.js +1 -21
  292. package/dist/common/range-brush.js +1 -21
  293. package/dist/common/range-plot.d.ts +6 -2
  294. package/dist/common/range-plot.js +3 -22
  295. package/dist/common/range-slider.d.ts +6 -2
  296. package/dist/common/range-slider.js +8 -22
  297. package/dist/common/slider/mouse-event.js +6 -22
  298. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  299. package/dist/common/slider/slider-bar-handle.js +1 -21
  300. package/dist/common/slider/slider-handle.d.ts +1 -1
  301. package/dist/common/slider/slider-handle.js +1 -21
  302. package/dist/common/slider/slider.d.ts +7 -5
  303. package/dist/common/slider/slider.js +7 -24
  304. package/dist/common/styled-components.d.ts +8 -3
  305. package/dist/common/styled-components.js +161 -68
  306. package/dist/common/switch.d.ts +3 -2
  307. package/dist/common/switch.js +1 -21
  308. package/dist/common/time-range-slider-time-title.d.ts +2 -2
  309. package/dist/common/time-range-slider-time-title.js +1 -21
  310. package/dist/common/time-range-slider.d.ts +6 -3
  311. package/dist/common/time-range-slider.js +32 -33
  312. package/dist/common/time-slider-marker.d.ts +1 -1
  313. package/dist/common/time-slider-marker.js +2 -22
  314. package/dist/common/timeline-slider.d.ts +13 -0
  315. package/dist/common/timeline-slider.js +153 -0
  316. package/dist/common/tippy-tooltip.d.ts +4 -2
  317. package/dist/common/tippy-tooltip.js +22 -30
  318. package/dist/common/toolbar-item.d.ts +1 -1
  319. package/dist/common/toolbar-item.js +5 -23
  320. package/dist/common/toolbar.js +1 -21
  321. package/dist/common/vertical-toolbar.js +1 -21
  322. package/dist/connect/keplergl-connect.d.ts +5 -1
  323. package/dist/connect/keplergl-connect.js +6 -22
  324. package/dist/connect/with-local-selector.js +1 -21
  325. package/dist/container.js +1 -21
  326. package/dist/context.d.ts +11 -0
  327. package/dist/context.js +20 -24
  328. package/dist/dnd-context.d.ts +13 -0
  329. package/dist/dnd-context.js +157 -0
  330. package/dist/editor/editor.d.ts +11 -10
  331. package/dist/editor/editor.js +96 -122
  332. package/dist/editor/feature-action-panel.d.ts +8 -6
  333. package/dist/editor/feature-action-panel.js +57 -55
  334. package/dist/effects/compact-color-picker.d.ts +10 -0
  335. package/dist/effects/compact-color-picker.js +130 -0
  336. package/dist/effects/effect-configurator.d.ts +17 -0
  337. package/dist/effects/effect-configurator.js +302 -0
  338. package/dist/effects/effect-list.d.ts +15 -0
  339. package/dist/effects/effect-list.js +153 -0
  340. package/dist/effects/effect-manager.d.ts +22 -0
  341. package/dist/effects/effect-manager.js +142 -0
  342. package/dist/effects/effect-panel-header.d.ts +45 -0
  343. package/dist/effects/effect-panel-header.js +206 -0
  344. package/dist/effects/effect-panel.d.ts +24 -0
  345. package/dist/effects/effect-panel.js +149 -0
  346. package/dist/effects/effect-time-configurator.d.ts +20 -0
  347. package/dist/effects/effect-time-configurator.js +340 -0
  348. package/dist/effects/effect-time-selector.d.ts +16 -0
  349. package/dist/effects/effect-time-selector.js +181 -0
  350. package/dist/effects/effect-time-slider.d.ts +34 -0
  351. package/dist/effects/effect-time-slider.js +220 -0
  352. package/dist/effects/effect-type-dropdown-list.d.ts +18 -0
  353. package/dist/effects/effect-type-dropdown-list.js +77 -0
  354. package/dist/effects/effect-type-list-item.d.ts +22 -0
  355. package/dist/effects/effect-type-list-item.js +105 -0
  356. package/dist/effects/effect-type-selector.d.ts +30 -0
  357. package/dist/effects/effect-type-selector.js +92 -0
  358. package/dist/effects/side-panel-title.d.ts +7 -0
  359. package/dist/effects/side-panel-title.js +47 -0
  360. package/dist/effects/timezone-selector.d.ts +19 -0
  361. package/dist/effects/timezone-selector.js +71 -0
  362. package/dist/filter-animation-controller.d.ts +17 -0
  363. package/dist/filter-animation-controller.js +73 -0
  364. package/dist/filters/components.js +1 -21
  365. package/dist/filters/filter-panels/filter-panel-with-field-select.js +7 -23
  366. package/dist/filters/filter-panels/multi-select-filter-panel.js +7 -23
  367. package/dist/filters/filter-panels/new-filter-panel.js +6 -22
  368. package/dist/filters/filter-panels/polygon-filter-panel.js +7 -23
  369. package/dist/filters/filter-panels/range-filter-panel.js +7 -23
  370. package/dist/filters/filter-panels/single-select-filter-panel.js +7 -23
  371. package/dist/filters/filter-panels/time-range-filter-panel.js +24 -27
  372. package/dist/filters/filter-panels/types.d.ts +2 -1
  373. package/dist/filters/filter-panels/types.js +0 -20
  374. package/dist/filters/index.d.ts +2 -0
  375. package/dist/filters/index.js +17 -21
  376. package/dist/filters/multi-select-filter.js +6 -22
  377. package/dist/filters/polygon-filter.js +18 -24
  378. package/dist/filters/range-filter.js +9 -23
  379. package/dist/filters/single-select-filter.js +6 -22
  380. package/dist/filters/time-range-filter.d.ts +2 -1
  381. package/dist/filters/time-range-filter.js +15 -27
  382. package/dist/filters/time-widget-top.d.ts +8 -0
  383. package/dist/filters/time-widget-top.js +103 -0
  384. package/dist/filters/time-widget.d.ts +3 -7
  385. package/dist/filters/time-widget.js +34 -111
  386. package/dist/filters/types.d.ts +7 -3
  387. package/dist/filters/types.js +0 -20
  388. package/dist/geocoder/geocoder.d.ts +1 -3
  389. package/dist/geocoder/geocoder.js +10 -27
  390. package/dist/geocoder-panel.d.ts +9 -3
  391. package/dist/geocoder-panel.js +29 -38
  392. package/dist/hooks/use-cloud-list-provider.d.ts +11 -0
  393. package/dist/hooks/use-cloud-list-provider.js +57 -0
  394. package/dist/hooks/use-dnd-effects.d.ts +9 -0
  395. package/dist/hooks/use-dnd-effects.js +88 -0
  396. package/dist/hooks/use-dnd-layers.d.ts +9 -0
  397. package/dist/hooks/use-dnd-layers.js +95 -0
  398. package/dist/hooks/use-feature-flags.d.ts +5 -0
  399. package/dist/hooks/use-feature-flags.js +21 -0
  400. package/dist/index.d.ts +78 -21
  401. package/dist/index.js +695 -116
  402. package/dist/injector.d.ts +4 -4
  403. package/dist/injector.js +1 -21
  404. package/dist/kepler-gl.d.ts +59 -17
  405. package/dist/kepler-gl.js +88 -53
  406. package/dist/layer-animation-controller.d.ts +13 -0
  407. package/dist/layer-animation-controller.js +58 -0
  408. package/dist/map/coordinate-info.js +6 -22
  409. package/dist/map/effects/effect-control.d.ts +16 -0
  410. package/dist/map/effects/effect-control.js +63 -0
  411. package/dist/map/layer-hover-info.d.ts +2 -2
  412. package/dist/map/layer-hover-info.js +26 -30
  413. package/dist/map/layer-selector-panel.js +6 -22
  414. package/dist/map/lazy-tippy.js +1 -21
  415. package/dist/map/locale-panel.d.ts +1 -1
  416. package/dist/map/locale-panel.js +6 -22
  417. package/dist/map/map-control-panel.d.ts +6 -0
  418. package/dist/map/map-control-panel.js +64 -28
  419. package/dist/map/map-control-toolbar.js +2 -22
  420. package/dist/map/map-control-tooltip.js +6 -22
  421. package/dist/map/map-control.d.ts +15 -7
  422. package/dist/map/map-control.js +5 -26
  423. package/dist/map/map-draw-panel.d.ts +2 -2
  424. package/dist/map/map-draw-panel.js +6 -29
  425. package/dist/map/map-legend-panel.d.ts +12 -1
  426. package/dist/map/map-legend-panel.js +31 -34
  427. package/dist/map/map-legend.d.ts +1 -1
  428. package/dist/map/map-legend.js +1 -21
  429. package/dist/map/map-popover-content.d.ts +28 -0
  430. package/dist/map/map-popover-content.js +35 -0
  431. package/dist/map/map-popover.d.ts +11 -14
  432. package/dist/map/map-popover.js +93 -34
  433. package/dist/map/split-map-button.js +6 -22
  434. package/dist/map/toggle-3d-button.js +6 -22
  435. package/dist/map-container.d.ts +33 -9
  436. package/dist/map-container.js +544 -194
  437. package/dist/map-view-state-context.d.ts +17 -0
  438. package/dist/map-view-state-context.js +117 -0
  439. package/dist/maps-layout.d.ts +5 -2
  440. package/dist/maps-layout.js +6 -22
  441. package/dist/modal-container.d.ts +4 -8
  442. package/dist/modal-container.js +19 -76
  443. package/dist/modals/add-map-style-modal.d.ts +1 -3
  444. package/dist/modals/add-map-style-modal.js +15 -73
  445. package/dist/modals/cloud-components/cloud-header.d.ts +8 -0
  446. package/dist/modals/cloud-components/cloud-header.js +65 -0
  447. package/dist/modals/cloud-components/cloud-item.d.ts +5 -0
  448. package/dist/modals/cloud-components/cloud-item.js +72 -0
  449. package/dist/modals/cloud-components/cloud-item.spec.d.ts +1 -0
  450. package/dist/modals/cloud-components/cloud-item.spec.js +105 -0
  451. package/dist/modals/cloud-components/cloud-maps.d.ts +8 -0
  452. package/dist/modals/cloud-components/cloud-maps.js +63 -0
  453. package/dist/modals/cloud-components/cloud-maps.spec.d.ts +1 -0
  454. package/dist/modals/cloud-components/cloud-maps.spec.js +112 -0
  455. package/dist/modals/cloud-components/provider-loading.d.ts +2 -0
  456. package/dist/modals/cloud-components/provider-loading.js +29 -0
  457. package/dist/modals/cloud-components/provider-select.d.ts +7 -0
  458. package/dist/modals/cloud-components/provider-select.js +40 -0
  459. package/dist/modals/cloud-tile.d.ts +8 -8
  460. package/dist/modals/cloud-tile.js +184 -75
  461. package/dist/modals/data-table-modal.d.ts +11 -2
  462. package/dist/modals/data-table-modal.js +74 -43
  463. package/dist/modals/delete-data-modal.js +1 -21
  464. package/dist/modals/error-display.js +15 -26
  465. package/dist/modals/export-data-modal.d.ts +1 -3
  466. package/dist/modals/export-data-modal.js +1 -21
  467. package/dist/modals/export-image-modal.d.ts +1 -3
  468. package/dist/modals/export-image-modal.js +1 -21
  469. package/dist/modals/export-map-modal/components.d.ts +2 -2
  470. package/dist/modals/export-map-modal/components.js +1 -21
  471. package/dist/modals/export-map-modal/export-html-map.js +1 -21
  472. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  473. package/dist/modals/export-map-modal/export-json-map.js +1 -21
  474. package/dist/modals/export-map-modal/export-map-modal.d.ts +2 -2
  475. package/dist/modals/export-map-modal/export-map-modal.js +6 -22
  476. package/dist/modals/image-modal-container.d.ts +2 -3
  477. package/dist/modals/image-modal-container.js +12 -34
  478. package/dist/modals/load-data-modal.d.ts +0 -5
  479. package/dist/modals/load-data-modal.js +1 -21
  480. package/dist/modals/load-storage-map.d.ts +3 -24
  481. package/dist/modals/load-storage-map.js +69 -282
  482. package/dist/modals/load-storage-map.spec.d.ts +1 -0
  483. package/dist/modals/load-storage-map.spec.js +237 -0
  484. package/dist/modals/loading-dialog.js +1 -21
  485. package/dist/modals/modal-dialog.js +6 -22
  486. package/dist/modals/modal-tabs.d.ts +1 -1
  487. package/dist/modals/modal-tabs.js +1 -21
  488. package/dist/modals/overwrite-map-modal.d.ts +2 -2
  489. package/dist/modals/overwrite-map-modal.js +39 -32
  490. package/dist/modals/save-map-modal.d.ts +3 -5
  491. package/dist/modals/save-map-modal.js +99 -119
  492. package/dist/modals/save-map-modal.spec.d.ts +1 -0
  493. package/dist/modals/save-map-modal.spec.js +218 -0
  494. package/dist/modals/share-map-modal.d.ts +1 -5
  495. package/dist/modals/share-map-modal.js +57 -81
  496. package/dist/modals/share-map-modal.spec.d.ts +1 -0
  497. package/dist/modals/share-map-modal.spec.js +202 -0
  498. package/dist/modals/status-panel.js +1 -21
  499. package/dist/modals/storage-map-viewer.d.ts +1 -1
  500. package/dist/modals/storage-map-viewer.js +1 -21
  501. package/dist/notification-panel/notification-item.d.ts +7 -10
  502. package/dist/notification-panel/notification-item.js +44 -32
  503. package/dist/notification-panel.js +1 -21
  504. package/dist/plot-container.js +20 -28
  505. package/dist/side-panel/add-by-dataset-button.d.ts +12 -0
  506. package/dist/side-panel/add-by-dataset-button.js +153 -0
  507. package/dist/side-panel/cloud-storage-dropdown.d.ts +2 -2
  508. package/dist/side-panel/cloud-storage-dropdown.js +6 -22
  509. package/dist/side-panel/common/dataset-info.d.ts +10 -3
  510. package/dist/side-panel/common/dataset-info.js +1 -21
  511. package/dist/side-panel/common/dataset-tag.d.ts +15 -1
  512. package/dist/side-panel/common/dataset-tag.js +13 -30
  513. package/dist/side-panel/common/dataset-title.d.ts +16 -2
  514. package/dist/side-panel/common/dataset-title.js +70 -124
  515. package/dist/side-panel/common/source-data-catalog.d.ts +22 -3
  516. package/dist/side-panel/common/source-data-catalog.js +1 -21
  517. package/dist/side-panel/common/source-data-selector.js +6 -22
  518. package/dist/side-panel/common/types.d.ts +7 -27
  519. package/dist/side-panel/common/types.js +0 -20
  520. package/dist/side-panel/custom-panel.d.ts +6 -7
  521. package/dist/side-panel/custom-panel.js +6 -22
  522. package/dist/side-panel/filter-manager.d.ts +18 -6
  523. package/dist/side-panel/filter-manager.js +175 -84
  524. package/dist/side-panel/filter-panel/add-filter-button.d.ts +8 -0
  525. package/dist/side-panel/filter-panel/add-filter-button.js +34 -0
  526. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +6 -3
  527. package/dist/side-panel/filter-panel/filter-panel-header.js +3 -23
  528. package/dist/side-panel/filter-panel/filter-panel.js +1 -21
  529. package/dist/side-panel/interaction-manager.d.ts +6 -3
  530. package/dist/side-panel/interaction-manager.js +24 -27
  531. package/dist/side-panel/interaction-panel/brush-config.d.ts +2 -2
  532. package/dist/side-panel/interaction-panel/brush-config.js +1 -21
  533. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +5 -2
  534. package/dist/side-panel/interaction-panel/interaction-panel.js +11 -24
  535. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +11 -9
  536. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +69 -67
  537. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +2 -3
  538. package/dist/side-panel/interaction-panel/tooltip-config.js +48 -57
  539. package/dist/side-panel/layer-manager.d.ts +13 -10
  540. package/dist/side-panel/layer-manager.js +72 -57
  541. package/dist/side-panel/layer-panel/add-layer-button.d.ts +3 -5
  542. package/dist/side-panel/layer-panel/add-layer-button.js +14 -156
  543. package/dist/side-panel/layer-panel/color-palette.js +1 -21
  544. package/dist/side-panel/layer-panel/color-range-selector.d.ts +1 -1
  545. package/dist/side-panel/layer-panel/color-range-selector.js +1 -21
  546. package/dist/side-panel/layer-panel/color-selector.d.ts +15 -24
  547. package/dist/side-panel/layer-panel/color-selector.js +174 -146
  548. package/dist/side-panel/layer-panel/column-selector.js +1 -21
  549. package/dist/side-panel/layer-panel/custom-palette.d.ts +7 -2
  550. package/dist/side-panel/layer-panel/custom-palette.js +5 -24
  551. package/dist/side-panel/layer-panel/custom-picker.d.ts +9 -36
  552. package/dist/side-panel/layer-panel/custom-picker.js +1 -21
  553. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  554. package/dist/side-panel/layer-panel/dataset-layer-group.js +7 -22
  555. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +3 -2
  556. package/dist/side-panel/layer-panel/dataset-layer-section.js +4 -23
  557. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -3
  558. package/dist/side-panel/layer-panel/dataset-section.js +5 -26
  559. package/dist/side-panel/layer-panel/dimension-scale-selector.js +6 -22
  560. package/dist/side-panel/layer-panel/how-to-button.js +1 -21
  561. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +42 -0
  562. package/dist/side-panel/layer-panel/layer-color-selector.js +118 -0
  563. package/dist/side-panel/layer-panel/layer-column-config.d.ts +15 -9
  564. package/dist/side-panel/layer-panel/layer-column-config.js +34 -32
  565. package/dist/side-panel/layer-panel/layer-config-group.d.ts +11 -2
  566. package/dist/side-panel/layer-panel/layer-config-group.js +18 -30
  567. package/dist/side-panel/layer-panel/layer-configurator.d.ts +10 -35
  568. package/dist/side-panel/layer-panel/layer-configurator.js +75 -132
  569. package/dist/side-panel/layer-panel/layer-error-message.d.ts +6 -0
  570. package/dist/side-panel/layer-panel/layer-error-message.js +38 -0
  571. package/dist/side-panel/layer-panel/layer-list.d.ts +4 -3
  572. package/dist/side-panel/layer-panel/layer-list.js +111 -108
  573. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +22 -10
  574. package/dist/side-panel/layer-panel/layer-panel-header.js +105 -86
  575. package/dist/side-panel/layer-panel/layer-panel.d.ts +3 -1
  576. package/dist/side-panel/layer-panel/layer-panel.js +23 -30
  577. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +1 -21
  578. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +12 -3
  579. package/dist/side-panel/layer-panel/layer-type-list-item.js +11 -23
  580. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +2 -1
  581. package/dist/side-panel/layer-panel/layer-type-selector.js +4 -22
  582. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  583. package/dist/side-panel/layer-panel/single-color-palette.js +1 -21
  584. package/dist/side-panel/layer-panel/text-label-panel.d.ts +4 -2
  585. package/dist/side-panel/layer-panel/text-label-panel.js +61 -34
  586. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -3
  587. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +1 -21
  588. package/dist/side-panel/layer-panel/vis-config-slider.js +1 -21
  589. package/dist/side-panel/layer-panel/vis-config-switch.js +1 -21
  590. package/dist/side-panel/map-manager.d.ts +13 -6
  591. package/dist/side-panel/map-manager.js +55 -64
  592. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +14 -0
  593. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +96 -0
  594. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +29 -0
  595. package/dist/side-panel/map-style-panel/map-layer-group-item.js +111 -0
  596. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +16 -12
  597. package/dist/side-panel/map-style-panel/map-layer-selector.js +33 -70
  598. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +11 -4
  599. package/dist/side-panel/map-style-panel/map-style-selector.js +53 -39
  600. package/dist/side-panel/panel-dropdown.d.ts +3 -2
  601. package/dist/side-panel/panel-dropdown.js +1 -21
  602. package/dist/side-panel/panel-header-action.d.ts +4 -2
  603. package/dist/side-panel/panel-header-action.js +10 -23
  604. package/dist/side-panel/panel-header.d.ts +13 -8
  605. package/dist/side-panel/panel-header.js +2 -21
  606. package/dist/side-panel/panel-tab.d.ts +2 -2
  607. package/dist/side-panel/panel-tab.js +1 -21
  608. package/dist/side-panel/panel-title.d.ts +6 -3
  609. package/dist/side-panel/panel-title.js +30 -33
  610. package/dist/side-panel/panel-toggle.d.ts +1 -1
  611. package/dist/side-panel/panel-toggle.js +1 -21
  612. package/dist/side-panel/{layer-panel/panel-view-list-toggle.d.ts → panel-view-list-toggle.d.ts} +19 -8
  613. package/dist/side-panel/panel-view-list-toggle.js +123 -0
  614. package/dist/side-panel/side-bar.d.ts +15 -16
  615. package/dist/side-panel/side-bar.js +7 -25
  616. package/dist/side-panel.d.ts +2 -117
  617. package/dist/side-panel.js +19 -54
  618. package/dist/types.d.ts +14 -9
  619. package/dist/types.js +0 -20
  620. package/package.json +48 -38
  621. package/dist/editor/constants.d.ts +0 -17
  622. package/dist/editor/constants.js +0 -47
  623. package/dist/editor/feature-styles.d.ts +0 -37
  624. package/dist/editor/feature-styles.js +0 -92
  625. package/dist/editor/handle-style.d.ts +0 -42
  626. package/dist/editor/handle-style.js +0 -100
  627. package/dist/hooks/useFeatureFlags.d.ts +0 -2
  628. package/dist/hooks/useFeatureFlags.js +0 -38
  629. package/dist/modals/provider-modal-container.d.ts +0 -22
  630. package/dist/modals/provider-modal-container.js +0 -101
  631. package/dist/side-panel/layer-panel/panel-view-list-toggle.js +0 -143
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -28,10 +8,13 @@ Object.defineProperty(exports, "__esModule", {
28
8
  value: true
29
9
  });
30
10
  exports.LayerTitleSectionFactory = LayerTitleSectionFactory;
11
+ exports.LayerPanelHeaderActionSectionFactory = LayerPanelHeaderActionSectionFactory;
31
12
  exports["default"] = exports.HeaderWarning = exports.LayerLabelEditor = exports.DragHandle = exports.defaultProps = void 0;
32
13
 
33
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
34
15
 
16
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
+
35
18
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
36
19
 
37
20
  var _react = _interopRequireWildcard(require("react"));
@@ -40,8 +23,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
40
23
 
41
24
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
42
25
 
43
- var _reactSortableHoc = require("react-sortable-hoc");
44
-
45
26
  var _panelHeaderAction = _interopRequireDefault(require("../panel-header-action"));
46
27
 
47
28
  var _styledComponents2 = require("../../common/styled-components");
@@ -50,6 +31,8 @@ var _icons = require("../../common/icons");
50
31
 
51
32
  var _localization = require("@kepler.gl/localization");
52
33
 
34
+ var _constants = require("@kepler.gl/constants");
35
+
53
36
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
54
37
 
55
38
  var defaultProps = {
@@ -74,7 +57,7 @@ var getBorderCss = function getBorderCss(status) {
74
57
  var StyledLayerPanelHeader = (0, _styledComponents["default"])(_styledComponents2.StyledPanelHeader)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n height: ", "px;\n position: relative;\n align-items: stretch;\n\n .layer__remove-layer {\n opacity: 0;\n }\n\n .layer__drag-handle__placeholder {\n height: 20px;\n padding: 10px;\n }\n\n ", "\n\n :hover {\n cursor: pointer;\n background-color: ", ";\n\n .layer__drag-handle {\n opacity: 1;\n }\n\n .layer__remove-layer {\n opacity: 1;\n }\n }\n"])), function (props) {
75
58
  return props.theme.layerPanelHeaderHeight;
76
59
  }, function (props) {
77
- return props.warning ? getBorderCss('warning') : '';
60
+ return props.warning ? getBorderCss('warning') : props.isValid ? '' : getBorderCss('error');
78
61
  }, function (props) {
79
62
  return props.theme.panelBackgroundHover;
80
63
  });
@@ -100,15 +83,22 @@ var StyledDragHandle = _styledComponents["default"].div(_templateObject6 || (_te
100
83
  return props.theme.textColorHl;
101
84
  });
102
85
 
103
- var DragHandle = (0, _reactSortableHoc.SortableHandle)(function (_ref4) {
86
+ var DragHandle = function DragHandle(_ref4) {
104
87
  var className = _ref4.className,
88
+ listeners = _ref4.listeners,
105
89
  children = _ref4.children;
106
- return /*#__PURE__*/_react["default"].createElement(StyledDragHandle, {
90
+ return /*#__PURE__*/_react["default"].createElement(StyledDragHandle, (0, _extends2["default"])({
107
91
  className: className
108
- }, children);
109
- });
92
+ }, listeners ? listeners : {}), children);
93
+ };
94
+
110
95
  exports.DragHandle = DragHandle;
111
96
 
97
+ var noOp = function noOp(event) {
98
+ event.stopPropagation();
99
+ event.preventDefault();
100
+ };
101
+
112
102
  var LayerLabelEditor = function LayerLabelEditor(_ref5) {
113
103
  var layerId = _ref5.layerId,
114
104
  label = _ref5.label,
@@ -118,10 +108,9 @@ var LayerLabelEditor = function LayerLabelEditor(_ref5) {
118
108
  return /*#__PURE__*/_react["default"].createElement(_styledComponents2.InlineInput, {
119
109
  type: "text",
120
110
  className: "layer__title__editor",
111
+ "data-testid": _constants.dataTestIds.layerTitleEditor,
121
112
  value: label,
122
- onClick: function onClick(e) {
123
- e.stopPropagation();
124
- },
113
+ onClick: noOp,
125
114
  onChange: onEdit,
126
115
  onFocus: onFocus,
127
116
  onBlur: onBlur,
@@ -161,6 +150,70 @@ function LayerTitleSectionFactory() {
161
150
  return LayerTitleSection;
162
151
  }
163
152
 
153
+ LayerPanelHeaderActionSectionFactory.deps = [_panelHeaderAction["default"]];
154
+
155
+ function LayerPanelHeaderActionSectionFactory(PanelHeaderAction) {
156
+ var LayerPanelHeaderActionSection = function LayerPanelHeaderActionSection(props) {
157
+ var isConfigActive = props.isConfigActive,
158
+ allowDuplicate = props.allowDuplicate,
159
+ isVisible = props.isVisible,
160
+ isValid = props.isValid,
161
+ layerId = props.layerId,
162
+ onToggleVisibility = props.onToggleVisibility,
163
+ onResetIsValid = props.onResetIsValid,
164
+ onToggleEnableConfig = props.onToggleEnableConfig,
165
+ onDuplicateLayer = props.onDuplicateLayer,
166
+ onRemoveLayer = props.onRemoveLayer,
167
+ showRemoveLayer = props.showRemoveLayer,
168
+ isEditingLabel = props.isEditingLabel,
169
+ _props$actionIcons = props.actionIcons,
170
+ actionIcons = _props$actionIcons === void 0 ? defaultActionIcons : _props$actionIcons;
171
+ return /*#__PURE__*/_react["default"].createElement(HeaderActionSection, {
172
+ className: "layer-panel__header__actions",
173
+ isEditingLabel: isEditingLabel
174
+ }, /*#__PURE__*/_react["default"].createElement(StyledPanelHeaderHiddenActions, {
175
+ isConfigActive: isConfigActive
176
+ }, showRemoveLayer ? /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
177
+ className: "layer__remove-layer",
178
+ testId: "remove-layer-action",
179
+ id: layerId,
180
+ tooltip: 'tooltip.removeLayer',
181
+ onClick: onRemoveLayer,
182
+ tooltipType: "error",
183
+ IconComponent: actionIcons.remove
184
+ }) : null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
185
+ className: "layer__duplicate",
186
+ id: layerId,
187
+ tooltip: 'tooltip.duplicateLayer',
188
+ onClick: onDuplicateLayer,
189
+ IconComponent: actionIcons.duplicate,
190
+ disabled: !allowDuplicate
191
+ })), isValid ? /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
192
+ className: "layer__visibility-toggle",
193
+ id: layerId,
194
+ tooltip: isVisible ? 'tooltip.hideLayer' : 'tooltip.showLayer',
195
+ onClick: onToggleVisibility,
196
+ IconComponent: isVisible ? actionIcons.visible : actionIcons.hidden
197
+ }) : /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
198
+ className: "layer__is-valid-refresh",
199
+ id: layerId,
200
+ tooltip: 'tooltip.resetAfterError',
201
+ onClick: onResetIsValid,
202
+ IconComponent: actionIcons.resetIsValid
203
+ }), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
204
+ className: (0, _classnames["default"])('layer__enable-config ', {
205
+ 'is-open': isConfigActive
206
+ }),
207
+ id: layerId,
208
+ tooltip: 'tooltip.layerSettings',
209
+ onClick: onToggleEnableConfig,
210
+ IconComponent: actionIcons.enableConfig
211
+ }));
212
+ };
213
+
214
+ return LayerPanelHeaderActionSection;
215
+ }
216
+
164
217
  var StyledHeaderWaring = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: -9px;\n top: calc(50% - 9px);\n color: ", ";\n"])), function (_ref7) {
165
218
  var theme = _ref7.theme;
166
219
  return theme.notificationColors.warning;
@@ -182,34 +235,29 @@ var HeaderWarning = function HeaderWarning(_ref8) {
182
235
  };
183
236
 
184
237
  exports.HeaderWarning = HeaderWarning;
185
- LayerPanelHeaderFactory.deps = [LayerTitleSectionFactory, _panelHeaderAction["default"]];
186
238
  var defaultActionIcons = {
187
239
  remove: _icons.Trash,
188
240
  visible: _icons.EyeSeen,
189
241
  hidden: _icons.EyeUnseen,
190
242
  enableConfig: _icons.ArrowDown,
191
- duplicate: _icons.Copy
243
+ duplicate: _icons.Copy,
244
+ resetIsValid: _icons.Reset
192
245
  };
193
-
194
- function LayerPanelHeaderFactory(LayerTitleSection, PanelHeaderAction) {
195
- var LayerPanelHeader = function LayerPanelHeader(_ref9) {
196
- var isConfigActive = _ref9.isConfigActive,
197
- allowDuplicate = _ref9.allowDuplicate,
198
- isDragNDropEnabled = _ref9.isDragNDropEnabled,
199
- isVisible = _ref9.isVisible,
200
- warning = _ref9.warning,
201
- label = _ref9.label,
202
- layerId = _ref9.layerId,
203
- layerType = _ref9.layerType,
204
- labelRCGColorValues = _ref9.labelRCGColorValues,
205
- onToggleVisibility = _ref9.onToggleVisibility,
206
- onUpdateLayerLabel = _ref9.onUpdateLayerLabel,
207
- onToggleEnableConfig = _ref9.onToggleEnableConfig,
208
- onDuplicateLayer = _ref9.onDuplicateLayer,
209
- onRemoveLayer = _ref9.onRemoveLayer,
210
- showRemoveLayer = _ref9.showRemoveLayer,
211
- _ref9$actionIcons = _ref9.actionIcons,
212
- actionIcons = _ref9$actionIcons === void 0 ? defaultActionIcons : _ref9$actionIcons;
246
+ LayerPanelHeaderFactory.deps = [LayerTitleSectionFactory, LayerPanelHeaderActionSectionFactory];
247
+
248
+ function LayerPanelHeaderFactory(LayerTitleSection, LayerPanelHeaderActionSection) {
249
+ var LayerPanelHeader = function LayerPanelHeader(props) {
250
+ var isConfigActive = props.isConfigActive,
251
+ isDragNDropEnabled = props.isDragNDropEnabled,
252
+ isValid = props.isValid,
253
+ warning = props.warning,
254
+ label = props.label,
255
+ layerId = props.layerId,
256
+ layerType = props.layerType,
257
+ labelRCGColorValues = props.labelRCGColorValues,
258
+ onUpdateLayerLabel = props.onUpdateLayerLabel,
259
+ onToggleEnableConfig = props.onToggleEnableConfig,
260
+ listeners = props.listeners;
213
261
 
214
262
  var _useState = (0, _react.useState)(false),
215
263
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -220,6 +268,7 @@ function LayerPanelHeaderFactory(LayerTitleSection, PanelHeaderAction) {
220
268
  className: (0, _classnames["default"])('layer-panel__header', {
221
269
  'sort--handle': !isConfigActive
222
270
  }),
271
+ isValid: isValid,
223
272
  warning: warning,
224
273
  active: isConfigActive,
225
274
  labelRCGColorValues: labelRCGColorValues,
@@ -230,7 +279,8 @@ function LayerPanelHeaderFactory(LayerTitleSection, PanelHeaderAction) {
230
279
  }) : null, /*#__PURE__*/_react["default"].createElement(HeaderLabelSection, {
231
280
  className: "layer-panel__header__content"
232
281
  }, isDragNDropEnabled ? /*#__PURE__*/_react["default"].createElement(DragHandle, {
233
- className: "layer__drag-handle"
282
+ className: "layer__drag-handle",
283
+ listeners: listeners
234
284
  }, /*#__PURE__*/_react["default"].createElement(_icons.VertDots, {
235
285
  height: "20px"
236
286
  })) : /*#__PURE__*/_react["default"].createElement("div", {
@@ -246,39 +296,8 @@ function LayerPanelHeaderFactory(LayerTitleSection, PanelHeaderAction) {
246
296
  onBlur: function onBlur() {
247
297
  setIsEditingLabel(false);
248
298
  }
249
- })), /*#__PURE__*/_react["default"].createElement(HeaderActionSection, {
250
- className: "layer-panel__header__actions",
299
+ })), /*#__PURE__*/_react["default"].createElement(LayerPanelHeaderActionSection, (0, _extends2["default"])({}, props, {
251
300
  isEditingLabel: isEditingLabel
252
- }, /*#__PURE__*/_react["default"].createElement(StyledPanelHeaderHiddenActions, {
253
- isConfigActive: isConfigActive
254
- }, showRemoveLayer ? /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
255
- className: "layer__remove-layer",
256
- id: layerId,
257
- tooltip: 'tooltip.removeLayer',
258
- onClick: onRemoveLayer,
259
- tooltipType: "error",
260
- IconComponent: actionIcons.remove
261
- }) : null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
262
- className: "layer__duplicate",
263
- id: layerId,
264
- tooltip: 'tooltip.duplicateLayer',
265
- onClick: onDuplicateLayer,
266
- IconComponent: actionIcons.duplicate,
267
- disabled: !allowDuplicate
268
- })), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
269
- className: "layer__visibility-toggle",
270
- id: layerId,
271
- tooltip: isVisible ? 'tooltip.hideLayer' : 'tooltip.showLayer',
272
- onClick: onToggleVisibility,
273
- IconComponent: isVisible ? actionIcons.visible : actionIcons.hidden
274
- }), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
275
- className: (0, _classnames["default"])('layer__enable-config ', {
276
- 'is-open': isConfigActive
277
- }),
278
- id: layerId,
279
- tooltip: 'tooltip.layerSettings',
280
- onClick: onToggleEnableConfig,
281
- IconComponent: actionIcons.enableConfig
282
301
  })));
283
302
  };
284
303
 
@@ -288,4 +307,4 @@ function LayerPanelHeaderFactory(LayerTitleSection, PanelHeaderAction) {
288
307
 
289
308
  var _default = LayerPanelHeaderFactory;
290
309
  exports["default"] = _default;
291
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLXBhbmVsLWhlYWRlci50c3giXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiaXNEcmFnTkRyb3BFbmFibGVkIiwic2hvd1JlbW92ZUxheWVyIiwiZ2V0Qm9yZGVyQ3NzIiwic3RhdHVzIiwiY3NzIiwidGhlbWUiLCJub3RpZmljYXRpb25Db2xvcnMiLCJTdHlsZWRMYXllclBhbmVsSGVhZGVyIiwiU3R5bGVkUGFuZWxIZWFkZXIiLCJwcm9wcyIsImxheWVyUGFuZWxIZWFkZXJIZWlnaHQiLCJ3YXJuaW5nIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJIZWFkZXJMYWJlbFNlY3Rpb24iLCJzdHlsZWQiLCJkaXYiLCJ0ZXh0Q29sb3IiLCJIZWFkZXJBY3Rpb25TZWN0aW9uIiwiaXNFZGl0aW5nTGFiZWwiLCJTdHlsZWRQYW5lbEhlYWRlckhpZGRlbkFjdGlvbnMiLCJhdHRycyIsImNsYXNzTmFtZSIsImlzQ29uZmlnQWN0aXZlIiwicGFuZWxCYWNrZ3JvdW5kIiwiU3R5bGVkRHJhZ0hhbmRsZSIsInRleHRDb2xvckhsIiwiRHJhZ0hhbmRsZSIsImNoaWxkcmVuIiwiTGF5ZXJMYWJlbEVkaXRvciIsImxheWVySWQiLCJsYWJlbCIsIm9uRWRpdCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiTGF5ZXJUaXRsZVNlY3Rpb25GYWN0b3J5IiwiU3R5bGVkTGF5ZXJUaXRsZVNlY3Rpb24iLCJzdWJ0ZXh0Q29sb3IiLCJMYXllclRpdGxlU2VjdGlvbiIsImxheWVyVHlwZSIsIm9uVXBkYXRlTGF5ZXJMYWJlbCIsInRvTG93ZXJDYXNlIiwiU3R5bGVkSGVhZGVyV2FyaW5nIiwiSGVhZGVyV2FybmluZyIsImlkIiwiTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkiLCJkZXBzIiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiZGVmYXVsdEFjdGlvbkljb25zIiwicmVtb3ZlIiwiVHJhc2giLCJ2aXNpYmxlIiwiRXllU2VlbiIsImhpZGRlbiIsIkV5ZVVuc2VlbiIsImVuYWJsZUNvbmZpZyIsIkFycm93RG93biIsImR1cGxpY2F0ZSIsIkNvcHkiLCJQYW5lbEhlYWRlckFjdGlvbiIsIkxheWVyUGFuZWxIZWFkZXIiLCJhbGxvd0R1cGxpY2F0ZSIsImlzVmlzaWJsZSIsImxhYmVsUkNHQ29sb3JWYWx1ZXMiLCJvblRvZ2dsZVZpc2liaWxpdHkiLCJvblRvZ2dsZUVuYWJsZUNvbmZpZyIsIm9uRHVwbGljYXRlTGF5ZXIiLCJvblJlbW92ZUxheWVyIiwiYWN0aW9uSWNvbnMiLCJzZXRJc0VkaXRpbmdMYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFXQTs7OztBQStDTyxJQUFNQSxZQUFZLEdBQUc7QUFDMUJDLEVBQUFBLGtCQUFrQixFQUFFLElBRE07QUFFMUJDLEVBQUFBLGVBQWUsRUFBRTtBQUZTLENBQXJCOzs7QUFLUCxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFBQyxNQUFNO0FBQUEsYUFDekJDLHFCQUR5QixvTUFFQztBQUFBLFFBQUVDLEtBQUYsUUFBRUEsS0FBRjtBQUFBLFdBQWFBLEtBQUssQ0FBQ0Msa0JBQU4sQ0FBeUJILE1BQXpCLENBQWI7QUFBQSxHQUZELEVBR0k7QUFBQSxRQUFFRSxLQUFGLFNBQUVBLEtBQUY7QUFBQSxXQUFhQSxLQUFLLENBQUNDLGtCQUFOLENBQXlCSCxNQUF6QixDQUFiO0FBQUEsR0FISixFQUlHO0FBQUEsUUFBRUUsS0FBRixTQUFFQSxLQUFGO0FBQUEsV0FBYUEsS0FBSyxDQUFDQyxrQkFBTixDQUF5QkgsTUFBekIsQ0FBYjtBQUFBLEdBSkg7QUFBQSxDQUEzQjs7QUFPQSxJQUFNSSxzQkFBc0IsR0FBRyxrQ0FBT0Msb0NBQVAsQ0FBSCxtZUFDaEIsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0osS0FBTixDQUFZSyxzQkFBaEI7QUFBQSxDQURXLEVBY3hCLFVBQUFELEtBQUs7QUFBQSxTQUFLQSxLQUFLLENBQUNFLE9BQU4sR0FBZ0JULFlBQVksQ0FBQyxTQUFELENBQTVCLEdBQTBDLEVBQS9DO0FBQUEsQ0FkbUIsRUFrQkosVUFBQU8sS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0osS0FBTixDQUFZTyxvQkFBaEI7QUFBQSxDQWxCRCxDQUE1Qjs7QUE4QkEsSUFBTUMsa0JBQWtCLEdBQUdDLDZCQUFPQyxHQUFWLDJPQUViLFVBQUFOLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNKLEtBQU4sQ0FBWVcsU0FBaEI7QUFBQSxDQUZRLENBQXhCOztBQWFBLElBQU1DLG1CQUFtQixHQUFHSCw2QkFBT0MsR0FBViw4VUFNTCxVQUFBTixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDUyxjQUFOLEdBQXVCLE1BQXZCLEdBQWdDLEtBQXJDO0FBQUEsQ0FOQSxFQVVDLFVBQUFULEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNKLEtBQU4sQ0FBWU8sb0JBQWhCO0FBQUEsQ0FWTixDQUF6Qjs7QUFtQkE7QUFDQSxJQUFNTyw4QkFBOEIsR0FBR0wsNkJBQU9DLEdBQVAsQ0FBV0ssS0FBWCxDQUFpQjtBQUN0REMsRUFBQUEsU0FBUyxFQUFFO0FBRDJDLENBQWpCLENBQUgsaVJBTWQsVUFBQVosS0FBSztBQUFBLFNBQ3ZCQSxLQUFLLENBQUNhLGNBQU4sR0FBdUJiLEtBQUssQ0FBQ0osS0FBTixDQUFZTyxvQkFBbkMsR0FBMERILEtBQUssQ0FBQ0osS0FBTixDQUFZa0IsZUFEL0M7QUFBQSxDQU5TLENBQXBDOztBQWVBLElBQU1DLGdCQUFnQixHQUFHViw2QkFBT0MsR0FBViwrT0FTVCxVQUFBTixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDSixLQUFOLENBQVlvQixXQUFoQjtBQUFBLENBVEksQ0FBdEI7O0FBYU8sSUFBTUMsVUFBVSxHQUFHLHNDQUFlO0FBQUEsTUFBRUwsU0FBRixTQUFFQSxTQUFGO0FBQUEsTUFBYU0sUUFBYixTQUFhQSxRQUFiO0FBQUEsc0JBQ3ZDLGdDQUFDLGdCQUFEO0FBQWtCLElBQUEsU0FBUyxFQUFFTjtBQUE3QixLQUF5Q00sUUFBekMsQ0FEdUM7QUFBQSxDQUFmLENBQW5COzs7QUFJQSxJQUFNQyxnQkFBaUQsR0FBRyxTQUFwREEsZ0JBQW9EO0FBQUEsTUFDL0RDLE9BRCtELFNBQy9EQSxPQUQrRDtBQUFBLE1BRS9EQyxLQUYrRCxTQUUvREEsS0FGK0Q7QUFBQSxNQUcvREMsTUFIK0QsU0FHL0RBLE1BSCtEO0FBQUEsTUFJL0RDLE9BSitELFNBSS9EQSxPQUorRDtBQUFBLE1BSy9EQyxNQUwrRCxTQUsvREEsTUFMK0Q7QUFBQSxzQkFPL0QsZ0NBQUMsOEJBQUQ7QUFDRSxJQUFBLElBQUksRUFBQyxNQURQO0FBRUUsSUFBQSxTQUFTLEVBQUMsc0JBRlo7QUFHRSxJQUFBLEtBQUssRUFBRUgsS0FIVDtBQUlFLElBQUEsT0FBTyxFQUFFLGlCQUFDSSxDQUFELEVBQW1CO0FBQzFCQSxNQUFBQSxDQUFDLENBQUNDLGVBQUY7QUFDRCxLQU5IO0FBT0UsSUFBQSxRQUFRLEVBQUVKLE1BUFo7QUFRRSxJQUFBLE9BQU8sRUFBRUMsT0FSWDtBQVNFLElBQUEsTUFBTSxFQUFFQyxNQVRWO0FBVUUsSUFBQSxFQUFFLFlBQUtKLE9BQUw7QUFWSixJQVArRDtBQUFBLENBQTFEOzs7O0FBcUJBLFNBQVNPLHdCQUFULEdBQW9DO0FBQ3pDLE1BQU1DLHVCQUF1QixHQUFHdkIsNkJBQU9DLEdBQVYseVpBVWhCLFVBQUFOLEtBQUs7QUFBQSxXQUFJQSxLQUFLLENBQUNKLEtBQU4sQ0FBWWlDLFlBQWhCO0FBQUEsR0FWVyxDQUE3Qjs7QUFpQkEsTUFBTUMsaUJBQW1ELEdBQUcsU0FBdERBLGlCQUFzRDtBQUFBLFFBQzFEQyxTQUQwRCxTQUMxREEsU0FEMEQ7QUFBQSxRQUUxRFgsT0FGMEQsU0FFMURBLE9BRjBEO0FBQUEsUUFHMURDLEtBSDBELFNBRzFEQSxLQUgwRDtBQUFBLFFBSTFEVyxrQkFKMEQsU0FJMURBLGtCQUowRDtBQUFBLFFBSzFEVCxPQUwwRCxTQUsxREEsT0FMMEQ7QUFBQSxRQU0xREMsTUFOMEQsU0FNMURBLE1BTjBEO0FBQUEsd0JBUTFELGdDQUFDLHVCQUFEO0FBQXlCLE1BQUEsU0FBUyxFQUFDO0FBQW5DLG9CQUNFLDBEQUNFLGdDQUFDLGdCQUFEO0FBQ0UsTUFBQSxPQUFPLEVBQUVKLE9BRFg7QUFFRSxNQUFBLEtBQUssRUFBRUMsS0FGVDtBQUdFLE1BQUEsTUFBTSxFQUFFVyxrQkFIVjtBQUlFLE1BQUEsT0FBTyxFQUFFVCxPQUpYO0FBS0UsTUFBQSxNQUFNLEVBQUVDO0FBTFYsTUFERixlQVFFO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZixPQUNHTyxTQUFTLGlCQUFJLGdDQUFDLDhCQUFEO0FBQWtCLE1BQUEsRUFBRSx1QkFBZ0JBLFNBQVMsQ0FBQ0UsV0FBVixFQUFoQjtBQUFwQixNQURoQixDQVJGLENBREYsQ0FSMEQ7QUFBQSxHQUE1RDs7QUF1QkEsU0FBT0gsaUJBQVA7QUFDRDs7QUFFRCxJQUFNSSxrQkFBa0IsR0FBRzdCLDZCQUFPQyxHQUFWLDJLQUliO0FBQUEsTUFBRVYsS0FBRixTQUFFQSxLQUFGO0FBQUEsU0FBYUEsS0FBSyxDQUFDQyxrQkFBTixDQUF5QkssT0FBdEM7QUFBQSxDQUphLENBQXhCOztBQU9PLElBQU1pQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCO0FBQUEsTUFBRWpDLE9BQUYsU0FBRUEsT0FBRjtBQUFBLE1BQVdrQyxFQUFYLFNBQVdBLEVBQVg7QUFBQSxzQkFDM0IsZ0NBQUMsa0JBQUQscUJBQ0UsZ0NBQUMsa0JBQUQ7QUFBYSxvQkFBYjtBQUFzQixnQ0FBbUJBLEVBQW5CLGFBQXRCO0FBQXVELElBQUEsTUFBTSxFQUFDO0FBQTlELElBREYsZUFFRSxnQ0FBQywwQkFBRDtBQUFTLElBQUEsRUFBRSxrQkFBV0EsRUFBWCxhQUFYO0FBQW9DLElBQUEsSUFBSSxFQUFDLFNBQXpDO0FBQW1ELElBQUEsTUFBTSxFQUFDLE9BQTFEO0FBQWtFLElBQUEsU0FBUyxFQUFDO0FBQTVFLEtBQ0dsQyxPQURILENBRkYsQ0FEMkI7QUFBQSxDQUF0Qjs7O0FBUVBtQyx1QkFBdUIsQ0FBQ0MsSUFBeEIsR0FBK0IsQ0FBQ1gsd0JBQUQsRUFBMkJZLDZCQUEzQixDQUEvQjtBQUVBLElBQU1DLGtCQUFrQixHQUFHO0FBQ3pCQyxFQUFBQSxNQUFNLEVBQUVDLFlBRGlCO0FBRXpCQyxFQUFBQSxPQUFPLEVBQUVDLGNBRmdCO0FBR3pCQyxFQUFBQSxNQUFNLEVBQUVDLGdCQUhpQjtBQUl6QkMsRUFBQUEsWUFBWSxFQUFFQyxnQkFKVztBQUt6QkMsRUFBQUEsU0FBUyxFQUFFQztBQUxjLENBQTNCOztBQVFBLFNBQVNiLHVCQUFULENBQ0VQLGlCQURGLEVBRUVxQixpQkFGRixFQUdFO0FBQ0EsTUFBTUMsZ0JBQWlELEdBQUcsU0FBcERBLGdCQUFvRCxRQWlCcEQ7QUFBQSxRQWhCSnZDLGNBZ0JJLFNBaEJKQSxjQWdCSTtBQUFBLFFBZkp3QyxjQWVJLFNBZkpBLGNBZUk7QUFBQSxRQWRKOUQsa0JBY0ksU0FkSkEsa0JBY0k7QUFBQSxRQWJKK0QsU0FhSSxTQWJKQSxTQWFJO0FBQUEsUUFaSnBELE9BWUksU0FaSkEsT0FZSTtBQUFBLFFBWEptQixLQVdJLFNBWEpBLEtBV0k7QUFBQSxRQVZKRCxPQVVJLFNBVkpBLE9BVUk7QUFBQSxRQVRKVyxTQVNJLFNBVEpBLFNBU0k7QUFBQSxRQVJKd0IsbUJBUUksU0FSSkEsbUJBUUk7QUFBQSxRQVBKQyxrQkFPSSxTQVBKQSxrQkFPSTtBQUFBLFFBTkp4QixrQkFNSSxTQU5KQSxrQkFNSTtBQUFBLFFBTEp5QixvQkFLSSxTQUxKQSxvQkFLSTtBQUFBLFFBSkpDLGdCQUlJLFNBSkpBLGdCQUlJO0FBQUEsUUFISkMsYUFHSSxTQUhKQSxhQUdJO0FBQUEsUUFGSm5FLGVBRUksU0FGSkEsZUFFSTtBQUFBLGtDQURKb0UsV0FDSTtBQUFBLFFBREpBLFdBQ0ksa0NBRFVwQixrQkFDVjs7QUFBQSxvQkFDd0MscUJBQVMsS0FBVCxDQUR4QztBQUFBO0FBQUEsUUFDRy9CLGNBREg7QUFBQSxRQUNtQm9ELGlCQURuQjs7QUFHSix3QkFDRSxnQ0FBQyxzQkFBRDtBQUNFLE1BQUEsU0FBUyxFQUFFLDRCQUFXLHFCQUFYLEVBQWtDO0FBQzNDLHdCQUFnQixDQUFDaEQ7QUFEMEIsT0FBbEMsQ0FEYjtBQUlFLE1BQUEsT0FBTyxFQUFFWCxPQUpYO0FBS0UsTUFBQSxNQUFNLEVBQUVXLGNBTFY7QUFNRSxNQUFBLG1CQUFtQixFQUFFMEMsbUJBTnZCO0FBT0UsTUFBQSxPQUFPLEVBQUVFO0FBUFgsT0FTR3ZELE9BQU8sZ0JBQUcsZ0NBQUMsYUFBRDtBQUFlLE1BQUEsT0FBTyxFQUFFQSxPQUF4QjtBQUFpQyxNQUFBLEVBQUUsRUFBRWtCO0FBQXJDLE1BQUgsR0FBc0QsSUFUaEUsZUFVRSxnQ0FBQyxrQkFBRDtBQUFvQixNQUFBLFNBQVMsRUFBQztBQUE5QixPQUNHN0Isa0JBQWtCLGdCQUNqQixnQ0FBQyxVQUFEO0FBQVksTUFBQSxTQUFTLEVBQUM7QUFBdEIsb0JBQ0UsZ0NBQUMsZUFBRDtBQUFVLE1BQUEsTUFBTSxFQUFDO0FBQWpCLE1BREYsQ0FEaUIsZ0JBS2pCO0FBQUssTUFBQSxTQUFTLEVBQUM7QUFBZixNQU5KLGVBUUUsZ0NBQUMsaUJBQUQ7QUFDRSxNQUFBLE9BQU8sRUFBRTZCLE9BRFg7QUFFRSxNQUFBLEtBQUssRUFBRUMsS0FGVDtBQUdFLE1BQUEsa0JBQWtCLEVBQUVXLGtCQUh0QjtBQUlFLE1BQUEsU0FBUyxFQUFFRCxTQUpiO0FBS0UsTUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYjhCLFFBQUFBLGlCQUFpQixDQUFDLElBQUQsQ0FBakI7QUFDRCxPQVBIO0FBUUUsTUFBQSxNQUFNLEVBQUUsa0JBQU07QUFDWkEsUUFBQUEsaUJBQWlCLENBQUMsS0FBRCxDQUFqQjtBQUNEO0FBVkgsTUFSRixDQVZGLGVBK0JFLGdDQUFDLG1CQUFEO0FBQ0UsTUFBQSxTQUFTLEVBQUMsOEJBRFo7QUFFRSxNQUFBLGNBQWMsRUFBRXBEO0FBRmxCLG9CQUlFLGdDQUFDLDhCQUFEO0FBQWdDLE1BQUEsY0FBYyxFQUFFSTtBQUFoRCxPQUNHckIsZUFBZSxnQkFDZCxnQ0FBQyxpQkFBRDtBQUNFLE1BQUEsU0FBUyxFQUFDLHFCQURaO0FBRUUsTUFBQSxFQUFFLEVBQUU0QixPQUZOO0FBR0UsTUFBQSxPQUFPLEVBQUUscUJBSFg7QUFJRSxNQUFBLE9BQU8sRUFBRXVDLGFBSlg7QUFLRSxNQUFBLFdBQVcsRUFBQyxPQUxkO0FBTUUsTUFBQSxhQUFhLEVBQUVDLFdBQVcsQ0FBQ25CO0FBTjdCLE1BRGMsR0FTWixJQVZOLGVBV0UsZ0NBQUMsaUJBQUQ7QUFDRSxNQUFBLFNBQVMsRUFBQyxrQkFEWjtBQUVFLE1BQUEsRUFBRSxFQUFFckIsT0FGTjtBQUdFLE1BQUEsT0FBTyxFQUFFLHdCQUhYO0FBSUUsTUFBQSxPQUFPLEVBQUVzQyxnQkFKWDtBQUtFLE1BQUEsYUFBYSxFQUFFRSxXQUFXLENBQUNYLFNBTDdCO0FBTUUsTUFBQSxRQUFRLEVBQUUsQ0FBQ0k7QUFOYixNQVhGLENBSkYsZUF3QkUsZ0NBQUMsaUJBQUQ7QUFDRSxNQUFBLFNBQVMsRUFBQywwQkFEWjtBQUVFLE1BQUEsRUFBRSxFQUFFakMsT0FGTjtBQUdFLE1BQUEsT0FBTyxFQUFFa0MsU0FBUyxHQUFHLG1CQUFILEdBQXlCLG1CQUg3QztBQUlFLE1BQUEsT0FBTyxFQUFFRSxrQkFKWDtBQUtFLE1BQUEsYUFBYSxFQUFFRixTQUFTLEdBQUdNLFdBQVcsQ0FBQ2pCLE9BQWYsR0FBeUJpQixXQUFXLENBQUNmO0FBTC9ELE1BeEJGLGVBK0JFLGdDQUFDLGlCQUFEO0FBQ0UsTUFBQSxTQUFTLEVBQUUsNEJBQVcsdUJBQVgsRUFBb0M7QUFDN0MsbUJBQVdoQztBQURrQyxPQUFwQyxDQURiO0FBSUUsTUFBQSxFQUFFLEVBQUVPLE9BSk47QUFLRSxNQUFBLE9BQU8sRUFBRSx1QkFMWDtBQU1FLE1BQUEsT0FBTyxFQUFFcUMsb0JBTlg7QUFPRSxNQUFBLGFBQWEsRUFBRUcsV0FBVyxDQUFDYjtBQVA3QixNQS9CRixDQS9CRixDQURGO0FBMkVELEdBL0ZEOztBQWlHQUssRUFBQUEsZ0JBQWdCLENBQUM5RCxZQUFqQixHQUFnQ0EsWUFBaEM7QUFFQSxTQUFPOEQsZ0JBQVA7QUFDRDs7ZUFFY2YsdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIENvbXBvbmVudFR5cGUsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICBDaGFuZ2VFdmVudEhhbmRsZXJcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1NvcnRhYmxlSGFuZGxlfSBmcm9tICdyZWFjdC1zb3J0YWJsZS1ob2MnO1xuaW1wb3J0IFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSBmcm9tICcuLi9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvcHksXG4gIEFycm93RG93bixcbiAgRXllU2VlbixcbiAgRXllVW5zZWVuLFxuICBUcmFzaCxcbiAgVmVydERvdHMsXG4gIFdhcm5pbmdTaWduXG59IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5cbmltcG9ydCB7SW5saW5lSW5wdXQsIFN0eWxlZFBhbmVsSGVhZGVyfSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1JHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuXG50eXBlIExheWVyTGFiZWxFZGl0b3JQcm9wcyA9IHtcbiAgbGF5ZXJJZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgb25FZGl0OiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIG9uRm9jdXM6IENoYW5nZUV2ZW50SGFuZGxlcjtcbiAgb25CbHVyOiBDaGFuZ2VFdmVudEhhbmRsZXI7XG59O1xuXG50eXBlIExheWVyVGl0bGVTZWN0aW9uUHJvcHMgPSB7XG4gIGxheWVyVHlwZT86IHN0cmluZyB8IG51bGw7XG4gIGxheWVySWQ6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uVXBkYXRlTGF5ZXJMYWJlbDogQ2hhbmdlRXZlbnRIYW5kbGVyO1xuICBvbkZvY3VzOiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIG9uQmx1cjogQ2hhbmdlRXZlbnRIYW5kbGVyO1xufTtcblxudHlwZSBMYXllclBhbmVsSGVhZGVyUHJvcHMgPSB7XG4gIGxheWVySWQ6IHN0cmluZztcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBvblRvZ2dsZVZpc2liaWxpdHk6IE1vdXNlRXZlbnRIYW5kbGVyO1xuICBvblVwZGF0ZUxheWVyTGFiZWw6IENoYW5nZUV2ZW50SGFuZGxlcjtcbiAgb25Ub2dnbGVFbmFibGVDb25maWc6IE1vdXNlRXZlbnRIYW5kbGVyO1xuICBvblJlbW92ZUxheWVyOiBNb3VzZUV2ZW50SGFuZGxlcjtcbiAgb25EdXBsaWNhdGVMYXllcjogTW91c2VFdmVudEhhbmRsZXI7XG4gIGlzQ29uZmlnQWN0aXZlOiBib29sZWFuO1xuICBzaG93UmVtb3ZlTGF5ZXI/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbGF5ZXJUeXBlPzogc3RyaW5nIHwgbnVsbDtcbiAgYWxsb3dEdXBsaWNhdGU/OiBib29sZWFuO1xuICBpc0RyYWdORHJvcEVuYWJsZWQ/OiBib29sZWFuO1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgbGFiZWxSQ0dDb2xvclZhbHVlcz86IFJHQkNvbG9yIHwgbnVsbDtcbiAgYWN0aW9uSWNvbnM/OiB7XG4gICAgcmVtb3ZlOiBDb21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gICAgdmlzaWJsZTogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGhpZGRlbjogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGVuYWJsZUNvbmZpZzogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIHJlc2V0SXNWYWxpZDogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGR1cGxpY2F0ZTogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaXNEcmFnTkRyb3BFbmFibGVkOiB0cnVlLFxuICBzaG93UmVtb3ZlTGF5ZXI6IHRydWVcbn07XG5cbmNvbnN0IGdldEJvcmRlckNzcyA9IHN0YXR1cyA9PlxuICBjc3NgXG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICR7KHt0aGVtZX0pID0+IHRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1tzdGF0dXNdfTtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJHsoe3RoZW1lfSkgPT4gdGhlbWUubm90aWZpY2F0aW9uQ29sb3JzW3N0YXR1c119O1xuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICR7KHt0aGVtZX0pID0+IHRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1tzdGF0dXNdfTtcbiAgYDtcblxuY29uc3QgU3R5bGVkTGF5ZXJQYW5lbEhlYWRlciA9IHN0eWxlZChTdHlsZWRQYW5lbEhlYWRlcilgXG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllclBhbmVsSGVhZGVySGVpZ2h0fXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG4gIC5sYXllcl9fcmVtb3ZlLWxheWVyIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLmxheWVyX19kcmFnLWhhbmRsZV9fcGxhY2Vob2xkZXIge1xuICAgIGhlaWdodDogMjBweDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICB9XG5cbiAgJHtwcm9wcyA9PiAocHJvcHMud2FybmluZyA/IGdldEJvcmRlckNzcygnd2FybmluZycpIDogJycpfVxuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuXG4gICAgLmxheWVyX19kcmFnLWhhbmRsZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5sYXllcl9fcmVtb3ZlLWxheWVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBIZWFkZXJMYWJlbFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmbGV4LWdyb3c6IDE7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAvLyBsZWF2ZSBzcGFjZSBmb3IgZXllIGFuZCBjb2xsYXBzZSBpY29uXG4gIHBhZGRpbmctcmlnaHQ6IDUwcHg7XG5gO1xuXG50eXBlIEhlYWRlckFjdGlvblNlY3Rpb25Qcm9wcyA9IHtcbiAgaXNFZGl0aW5nTGFiZWw6IGJvb2xlYW47XG59O1xuXG5jb25zdCBIZWFkZXJBY3Rpb25TZWN0aW9uID0gc3R5bGVkLmRpdjxIZWFkZXJBY3Rpb25TZWN0aW9uUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHJpZ2h0OiAxMHB4O1xuICBwb2ludGVyLWV2ZW50czogJHtwcm9wcyA9PiAocHJvcHMuaXNFZGl0aW5nTGFiZWwgPyAnbm9uZScgOiAnYWxsJyl9O1xuICA6aG92ZXIge1xuICAgIC5sYXllci1wYW5lbF9faGVhZGVyX19hY3Rpb25zX19oaWRkZW4ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgIH1cbiAgfVxuYDtcblxudHlwZSBTdHlsZWRQYW5lbEhlYWRlckhpZGRlbkFjdGlvbnNQcm9wcyA9IHtcbiAgaXNDb25maWdBY3RpdmU6IExheWVyUGFuZWxIZWFkZXJQcm9wc1snaXNDb25maWdBY3RpdmUnXTtcbn07XG5cbi8vIEhpZGVuIGFjdGlvbnMgb25seSBzaG93IHVwIG9uIGhvdmVyXG5jb25zdCBTdHlsZWRQYW5lbEhlYWRlckhpZGRlbkFjdGlvbnMgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItcGFuZWxfX2hlYWRlcl9fYWN0aW9uc19faGlkZGVuJ1xufSk8U3R5bGVkUGFuZWxIZWFkZXJIaWRkZW5BY3Rpb25zUHJvcHM+YFxuICBvcGFjaXR5OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaXNDb25maWdBY3RpdmUgPyBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3ZlciA6IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuNHMgZWFzZTtcblxuICA6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRHJhZ0hhbmRsZSA9IFNvcnRhYmxlSGFuZGxlKCh7Y2xhc3NOYW1lLCBjaGlsZHJlbn0pID0+IChcbiAgPFN0eWxlZERyYWdIYW5kbGUgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntjaGlsZHJlbn08L1N0eWxlZERyYWdIYW5kbGU+XG4pKTtcblxuZXhwb3J0IGNvbnN0IExheWVyTGFiZWxFZGl0b3I6IFJlYWN0LkZDPExheWVyTGFiZWxFZGl0b3JQcm9wcz4gPSAoe1xuICBsYXllcklkLFxuICBsYWJlbCxcbiAgb25FZGl0LFxuICBvbkZvY3VzLFxuICBvbkJsdXJcbn0pID0+IChcbiAgPElubGluZUlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIGNsYXNzTmFtZT1cImxheWVyX190aXRsZV9fZWRpdG9yXCJcbiAgICB2YWx1ZT17bGFiZWx9XG4gICAgb25DbGljaz17KGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfX1cbiAgICBvbkNoYW5nZT17b25FZGl0fVxuICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgaWQ9e2Ake2xheWVySWR9OmlucHV0LWxheWVyLWxhYmVsYH1cbiAgLz5cbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllclRpdGxlU2VjdGlvbkZhY3RvcnkoKSB7XG4gIGNvbnN0IFN0eWxlZExheWVyVGl0bGVTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLmxheWVyX190aXRsZV9faW5uZXIge1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgIH1cblxuICAgIC5sYXllcl9fdGl0bGVfX3R5cGUge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIH1cbiAgYDtcbiAgY29uc3QgTGF5ZXJUaXRsZVNlY3Rpb246IFJlYWN0LkZDPExheWVyVGl0bGVTZWN0aW9uUHJvcHM+ID0gKHtcbiAgICBsYXllclR5cGUsXG4gICAgbGF5ZXJJZCxcbiAgICBsYWJlbCxcbiAgICBvblVwZGF0ZUxheWVyTGFiZWwsXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXJcbiAgfSkgPT4gKFxuICAgIDxTdHlsZWRMYXllclRpdGxlU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxMYXllckxhYmVsRWRpdG9yXG4gICAgICAgICAgbGF5ZXJJZD17bGF5ZXJJZH1cbiAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgb25FZGl0PXtvblVwZGF0ZUxheWVyTGFiZWx9XG4gICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVfX3R5cGVcIj5cbiAgICAgICAgICB7bGF5ZXJUeXBlICYmIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtgbGF5ZXIudHlwZS4ke2xheWVyVHlwZS50b0xvd2VyQ2FzZSgpfWB9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvU3R5bGVkTGF5ZXJUaXRsZVNlY3Rpb24+XG4gICk7XG4gIHJldHVybiBMYXllclRpdGxlU2VjdGlvbjtcbn1cblxuY29uc3QgU3R5bGVkSGVhZGVyV2FyaW5nID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogLTlweDtcbiAgdG9wOiBjYWxjKDUwJSAtIDlweCk7XG4gIGNvbG9yOiAkeyh7dGhlbWV9KSA9PiB0aGVtZS5ub3RpZmljYXRpb25Db2xvcnMud2FybmluZ307XG5gO1xuXG5leHBvcnQgY29uc3QgSGVhZGVyV2FybmluZyA9ICh7d2FybmluZywgaWR9KSA9PiAoXG4gIDxTdHlsZWRIZWFkZXJXYXJpbmc+XG4gICAgPFdhcm5pbmdTaWduIGRhdGEtdGlwIGRhdGEtZm9yPXtgbGF5ZXItJHtpZH0td2FybmluZ2B9IGhlaWdodD1cIjE2cHhcIiAvPlxuICAgIDxUb29sdGlwIGlkPXtgbGF5ZXItJHtpZH0td2FybmluZ2B9IHR5cGU9XCJ3YXJuaW5nXCIgZWZmZWN0PVwic29saWRcIiB0ZXh0Q29sb3I9XCJibGFja1wiPlxuICAgICAge3dhcm5pbmd9XG4gICAgPC9Ub29sdGlwPlxuICA8L1N0eWxlZEhlYWRlcldhcmluZz5cbik7XG5MYXllclBhbmVsSGVhZGVyRmFjdG9yeS5kZXBzID0gW0xheWVyVGl0bGVTZWN0aW9uRmFjdG9yeSwgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5XTtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICByZW1vdmU6IFRyYXNoLFxuICB2aXNpYmxlOiBFeWVTZWVuLFxuICBoaWRkZW46IEV5ZVVuc2VlbixcbiAgZW5hYmxlQ29uZmlnOiBBcnJvd0Rvd24sXG4gIGR1cGxpY2F0ZTogQ29weVxufTtcblxuZnVuY3Rpb24gTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkoXG4gIExheWVyVGl0bGVTZWN0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllclRpdGxlU2VjdGlvbkZhY3Rvcnk+LFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyUGFuZWxIZWFkZXI6IFJlYWN0LkZDPExheWVyUGFuZWxIZWFkZXJQcm9wcz4gPSAoe1xuICAgIGlzQ29uZmlnQWN0aXZlLFxuICAgIGFsbG93RHVwbGljYXRlLFxuICAgIGlzRHJhZ05Ecm9wRW5hYmxlZCxcbiAgICBpc1Zpc2libGUsXG4gICAgd2FybmluZyxcbiAgICBsYWJlbCxcbiAgICBsYXllcklkLFxuICAgIGxheWVyVHlwZSxcbiAgICBsYWJlbFJDR0NvbG9yVmFsdWVzLFxuICAgIG9uVG9nZ2xlVmlzaWJpbGl0eSxcbiAgICBvblVwZGF0ZUxheWVyTGFiZWwsXG4gICAgb25Ub2dnbGVFbmFibGVDb25maWcsXG4gICAgb25EdXBsaWNhdGVMYXllcixcbiAgICBvblJlbW92ZUxheWVyLFxuICAgIHNob3dSZW1vdmVMYXllcixcbiAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29uc1xuICB9KSA9PiB7XG4gICAgY29uc3QgW2lzRWRpdGluZ0xhYmVsLCBzZXRJc0VkaXRpbmdMYWJlbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyUGFuZWxIZWFkZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1wYW5lbF9faGVhZGVyJywge1xuICAgICAgICAgICdzb3J0LS1oYW5kbGUnOiAhaXNDb25maWdBY3RpdmVcbiAgICAgICAgfSl9XG4gICAgICAgIHdhcm5pbmc9e3dhcm5pbmd9XG4gICAgICAgIGFjdGl2ZT17aXNDb25maWdBY3RpdmV9XG4gICAgICAgIGxhYmVsUkNHQ29sb3JWYWx1ZXM9e2xhYmVsUkNHQ29sb3JWYWx1ZXN9XG4gICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlRW5hYmxlQ29uZmlnfVxuICAgICAgPlxuICAgICAgICB7d2FybmluZyA/IDxIZWFkZXJXYXJuaW5nIHdhcm5pbmc9e3dhcm5pbmd9IGlkPXtsYXllcklkfSAvPiA6IG51bGx9XG4gICAgICAgIDxIZWFkZXJMYWJlbFNlY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXItcGFuZWxfX2hlYWRlcl9fY29udGVudFwiPlxuICAgICAgICAgIHtpc0RyYWdORHJvcEVuYWJsZWQgPyAoXG4gICAgICAgICAgICA8RHJhZ0hhbmRsZSBjbGFzc05hbWU9XCJsYXllcl9fZHJhZy1oYW5kbGVcIj5cbiAgICAgICAgICAgICAgPFZlcnREb3RzIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZV9fcGxhY2Vob2xkZXJcIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPExheWVyVGl0bGVTZWN0aW9uXG4gICAgICAgICAgICBsYXllcklkPXtsYXllcklkfVxuICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgb25VcGRhdGVMYXllckxhYmVsPXtvblVwZGF0ZUxheWVyTGFiZWx9XG4gICAgICAgICAgICBsYXllclR5cGU9e2xheWVyVHlwZX1cbiAgICAgICAgICAgIG9uRm9jdXM9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNFZGl0aW5nTGFiZWwodHJ1ZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzRWRpdGluZ0xhYmVsKGZhbHNlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9IZWFkZXJMYWJlbFNlY3Rpb24+XG4gICAgICAgIDxIZWFkZXJBY3Rpb25TZWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItcGFuZWxfX2hlYWRlcl9fYWN0aW9uc1wiXG4gICAgICAgICAgaXNFZGl0aW5nTGFiZWw9e2lzRWRpdGluZ0xhYmVsfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVySGlkZGVuQWN0aW9ucyBpc0NvbmZpZ0FjdGl2ZT17aXNDb25maWdBY3RpdmV9PlxuICAgICAgICAgICAge3Nob3dSZW1vdmVMYXllciA/IChcbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX3JlbW92ZS1sYXllclwiXG4gICAgICAgICAgICAgICAgaWQ9e2xheWVySWR9XG4gICAgICAgICAgICAgICAgdG9vbHRpcD17J3Rvb2x0aXAucmVtb3ZlTGF5ZXInfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVtb3ZlTGF5ZXJ9XG4gICAgICAgICAgICAgICAgdG9vbHRpcFR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMucmVtb3ZlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX2R1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgICAgICB0b29sdGlwPXsndG9vbHRpcC5kdXBsaWNhdGVMYXllcid9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uRHVwbGljYXRlTGF5ZXJ9XG4gICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmR1cGxpY2F0ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFhbGxvd0R1cGxpY2F0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdHlsZWRQYW5lbEhlYWRlckhpZGRlbkFjdGlvbnM+XG4gICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllcl9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgaWQ9e2xheWVySWR9XG4gICAgICAgICAgICB0b29sdGlwPXtpc1Zpc2libGUgPyAndG9vbHRpcC5oaWRlTGF5ZXInIDogJ3Rvb2x0aXAuc2hvd0xheWVyJ31cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2lzVmlzaWJsZSA/IGFjdGlvbkljb25zLnZpc2libGUgOiBhY3Rpb25JY29ucy5oaWRkZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXJfX2VuYWJsZS1jb25maWcgJywge1xuICAgICAgICAgICAgICAnaXMtb3Blbic6IGlzQ29uZmlnQWN0aXZlXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgICAgdG9vbHRpcD17J3Rvb2x0aXAubGF5ZXJTZXR0aW5ncyd9XG4gICAgICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZUVuYWJsZUNvbmZpZ31cbiAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2FjdGlvbkljb25zLmVuYWJsZUNvbmZpZ31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0hlYWRlckFjdGlvblNlY3Rpb24+XG4gICAgICA8L1N0eWxlZExheWVyUGFuZWxIZWFkZXI+XG4gICAgKTtcbiAgfTtcblxuICBMYXllclBhbmVsSGVhZGVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICByZXR1cm4gTGF5ZXJQYW5lbEhlYWRlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5ZXJQYW5lbEhlYWRlckZhY3Rvcnk7XG4iXX0=
310
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLXBhbmVsLWhlYWRlci50c3giXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiaXNEcmFnTkRyb3BFbmFibGVkIiwic2hvd1JlbW92ZUxheWVyIiwiZ2V0Qm9yZGVyQ3NzIiwic3RhdHVzIiwiY3NzIiwidGhlbWUiLCJub3RpZmljYXRpb25Db2xvcnMiLCJTdHlsZWRMYXllclBhbmVsSGVhZGVyIiwiU3R5bGVkUGFuZWxIZWFkZXIiLCJwcm9wcyIsImxheWVyUGFuZWxIZWFkZXJIZWlnaHQiLCJ3YXJuaW5nIiwiaXNWYWxpZCIsInBhbmVsQmFja2dyb3VuZEhvdmVyIiwiSGVhZGVyTGFiZWxTZWN0aW9uIiwic3R5bGVkIiwiZGl2IiwidGV4dENvbG9yIiwiSGVhZGVyQWN0aW9uU2VjdGlvbiIsImlzRWRpdGluZ0xhYmVsIiwiU3R5bGVkUGFuZWxIZWFkZXJIaWRkZW5BY3Rpb25zIiwiYXR0cnMiLCJjbGFzc05hbWUiLCJpc0NvbmZpZ0FjdGl2ZSIsInBhbmVsQmFja2dyb3VuZCIsIlN0eWxlZERyYWdIYW5kbGUiLCJ0ZXh0Q29sb3JIbCIsIkRyYWdIYW5kbGUiLCJsaXN0ZW5lcnMiLCJjaGlsZHJlbiIsIm5vT3AiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiTGF5ZXJMYWJlbEVkaXRvciIsImxheWVySWQiLCJsYWJlbCIsIm9uRWRpdCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJkYXRhVGVzdElkcyIsImxheWVyVGl0bGVFZGl0b3IiLCJMYXllclRpdGxlU2VjdGlvbkZhY3RvcnkiLCJTdHlsZWRMYXllclRpdGxlU2VjdGlvbiIsInN1YnRleHRDb2xvciIsIkxheWVyVGl0bGVTZWN0aW9uIiwibGF5ZXJUeXBlIiwib25VcGRhdGVMYXllckxhYmVsIiwidG9Mb3dlckNhc2UiLCJMYXllclBhbmVsSGVhZGVyQWN0aW9uU2VjdGlvbkZhY3RvcnkiLCJkZXBzIiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJMYXllclBhbmVsSGVhZGVyQWN0aW9uU2VjdGlvbiIsImFsbG93RHVwbGljYXRlIiwiaXNWaXNpYmxlIiwib25Ub2dnbGVWaXNpYmlsaXR5Iiwib25SZXNldElzVmFsaWQiLCJvblRvZ2dsZUVuYWJsZUNvbmZpZyIsIm9uRHVwbGljYXRlTGF5ZXIiLCJvblJlbW92ZUxheWVyIiwiYWN0aW9uSWNvbnMiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJyZW1vdmUiLCJkdXBsaWNhdGUiLCJ2aXNpYmxlIiwiaGlkZGVuIiwicmVzZXRJc1ZhbGlkIiwiZW5hYmxlQ29uZmlnIiwiU3R5bGVkSGVhZGVyV2FyaW5nIiwiSGVhZGVyV2FybmluZyIsImlkIiwiVHJhc2giLCJFeWVTZWVuIiwiRXllVW5zZWVuIiwiQXJyb3dEb3duIiwiQ29weSIsIlJlc2V0IiwiTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkiLCJMYXllclBhbmVsSGVhZGVyIiwibGFiZWxSQ0dDb2xvclZhbHVlcyIsInNldElzRWRpdGluZ0xhYmVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBT0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBWUE7O0FBQ0E7Ozs7QUF3RE8sSUFBTUEsWUFBWSxHQUFHO0FBQzFCQyxFQUFBQSxrQkFBa0IsRUFBRSxJQURNO0FBRTFCQyxFQUFBQSxlQUFlLEVBQUU7QUFGUyxDQUFyQjs7O0FBS1AsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsTUFBTTtBQUFBLGFBQ3pCQyxxQkFEeUIsb01BRUM7QUFBQSxRQUFFQyxLQUFGLFFBQUVBLEtBQUY7QUFBQSxXQUFhQSxLQUFLLENBQUNDLGtCQUFOLENBQXlCSCxNQUF6QixDQUFiO0FBQUEsR0FGRCxFQUdJO0FBQUEsUUFBRUUsS0FBRixTQUFFQSxLQUFGO0FBQUEsV0FBYUEsS0FBSyxDQUFDQyxrQkFBTixDQUF5QkgsTUFBekIsQ0FBYjtBQUFB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QUQ7QUFBZSxNQUFBLE9BQU8sRUFBRUEsT0FBeEI7QUFBaUMsTUFBQSxFQUFFLEVBQUV3QjtBQUFyQyxNQUFILEdBQXNELElBVmhFLGVBV0UsZ0NBQUMsa0JBQUQ7QUFBb0IsTUFBQSxTQUFTLEVBQUM7QUFBOUIsT0FDR25DLGtCQUFrQixnQkFDakIsZ0NBQUMsVUFBRDtBQUFZLE1BQUEsU0FBUyxFQUFDLG9CQUF0QjtBQUEyQyxNQUFBLFNBQVMsRUFBRTRCO0FBQXRELG9CQUNFLGdDQUFDLGVBQUQ7QUFBVSxNQUFBLE1BQU0sRUFBQztBQUFqQixNQURGLENBRGlCLGdCQUtqQjtBQUFLLE1BQUEsU0FBUyxFQUFDO0FBQWYsTUFOSixlQVFFLGdDQUFDLGlCQUFEO0FBQ0UsTUFBQSxPQUFPLEVBQUVPLE9BRFg7QUFFRSxNQUFBLEtBQUssRUFBRUMsS0FGVDtBQUdFLE1BQUEsa0JBQWtCLEVBQUVXLGtCQUh0QjtBQUlFLE1BQUEsU0FBUyxFQUFFRCxTQUpiO0FBS0UsTUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYm1DLFFBQUFBLGlCQUFpQixDQUFDLElBQUQsQ0FBakI7QUFDRCxPQVBIO0FBUUUsTUFBQSxNQUFNLEVBQUUsa0JBQU07QUFDWkEsUUFBQUEsaUJBQWlCLENBQUMsS0FBRCxDQUFqQjtBQUNEO0FBVkgsTUFSRixDQVhGLGVBZ0NFLGdDQUFDLDZCQUFELGdDQUFtQ3hFLEtBQW5DO0FBQTBDLE1BQUEsY0FBYyxFQUFFVTtBQUExRCxPQWhDRixDQURGO0FBb0NELEdBbkREOztBQXFEQTRELEVBQUFBLGdCQUFnQixDQUFDaEYsWUFBakIsR0FBZ0NBLFlBQWhDO0FBRUEsU0FBT2dGLGdCQUFQO0FBQ0Q7O2VBRWNELHVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVN0YXRlLFxuICBDb21wb25lbnRUeXBlLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgTW91c2VFdmVudCxcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSBmcm9tICcuLi9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvcHksXG4gIEFycm93RG93bixcbiAgRXllU2VlbixcbiAgRXllVW5zZWVuLFxuICBUcmFzaCxcbiAgVmVydERvdHMsXG4gIFdhcm5pbmdTaWduLFxuICBSZXNldFxufSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuXG5pbXBvcnQge0lubGluZUlucHV0LCBTdHlsZWRQYW5lbEhlYWRlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtkYXRhVGVzdElkc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0Jhc2VQcm9wc30gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJMYWJlbEVkaXRvclByb3BzID0ge1xuICBsYXllcklkOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBvbkVkaXQ6IENoYW5nZUV2ZW50SGFuZGxlcjtcbiAgb25Gb2N1czogQ2hhbmdlRXZlbnRIYW5kbGVyO1xuICBvbkJsdXI6IENoYW5nZUV2ZW50SGFuZGxlcjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyVGl0bGVTZWN0aW9uUHJvcHMgPSB7XG4gIGxheWVyVHlwZT86IHN0cmluZyB8IG51bGw7XG4gIGxheWVySWQ6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uVXBkYXRlTGF5ZXJMYWJlbDogQ2hhbmdlRXZlbnRIYW5kbGVyO1xuICBvbkZvY3VzOiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIG9uQmx1cjogQ2hhbmdlRXZlbnRIYW5kbGVyO1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJQYW5lbEhlYWRlclByb3BzID0ge1xuICBsYXllcklkOiBzdHJpbmc7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgaXNWYWxpZDogYm9vbGVhbjtcbiAgb25Ub2dnbGVWaXNpYmlsaXR5OiBNb3VzZUV2ZW50SGFuZGxlcjtcbiAgb25VcGRhdGVMYXllckxhYmVsOiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIG9uVG9nZ2xlRW5hYmxlQ29uZmlnOiBNb3VzZUV2ZW50SGFuZGxlcjtcbiAgb25SZW1vdmVMYXllcjogTW91c2VFdmVudEhhbmRsZXI7XG4gIG9uRHVwbGljYXRlTGF5ZXI6IE1vdXNlRXZlbnRIYW5kbGVyO1xuICBvblJlc2V0SXNWYWxpZDogTW91c2VFdmVudEhhbmRsZXI7XG4gIGlzQ29uZmlnQWN0aXZlOiBib29sZWFuO1xuICBzaG93UmVtb3ZlTGF5ZXI/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbGF5ZXJUeXBlPzogc3RyaW5nIHwgbnVsbDtcbiAgYWxsb3dEdXBsaWNhdGU/OiBib29sZWFuO1xuICBpc0RyYWdORHJvcEVuYWJsZWQ/OiBib29sZWFuO1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgbGFiZWxSQ0dDb2xvclZhbHVlcz86IFJHQkNvbG9yIHwgbnVsbDtcbiAgYWN0aW9uSWNvbnM/OiB7XG4gICAgcmVtb3ZlOiBDb21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gICAgdmlzaWJsZTogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGhpZGRlbjogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGVuYWJsZUNvbmZpZzogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIHJlc2V0SXNWYWxpZDogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICAgIGR1cGxpY2F0ZTogQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+O1xuICB9O1xuICBsaXN0ZW5lcnM/OiBSZWFjdC5FbGVtZW50VHlwZTtcbn07XG5cbnR5cGUgSGVhZGVyQWN0aW9uU2VjdGlvblByb3BzID0ge1xuICBpc0VkaXRpbmdMYWJlbDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uUHJvcHMgPSBMYXllclBhbmVsSGVhZGVyUHJvcHMgJiBIZWFkZXJBY3Rpb25TZWN0aW9uUHJvcHM7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGlzRHJhZ05Ecm9wRW5hYmxlZDogdHJ1ZSxcbiAgc2hvd1JlbW92ZUxheWVyOiB0cnVlXG59O1xuXG5jb25zdCBnZXRCb3JkZXJDc3MgPSBzdGF0dXMgPT5cbiAgY3NzYFxuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAkeyh7dGhlbWV9KSA9PiB0aGVtZS5ub3RpZmljYXRpb25Db2xvcnNbc3RhdHVzXX07XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICR7KHt0aGVtZX0pID0+IHRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1tzdGF0dXNdfTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAkeyh7dGhlbWV9KSA9PiB0aGVtZS5ub3RpZmljYXRpb25Db2xvcnNbc3RhdHVzXX07XG4gIGA7XG5cbmNvbnN0IFN0eWxlZExheWVyUGFuZWxIZWFkZXIgPSBzdHlsZWQoU3R5bGVkUGFuZWxIZWFkZXIpYFxuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJQYW5lbEhlYWRlckhlaWdodH1weDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuICAubGF5ZXJfX3JlbW92ZS1sYXllciB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC5sYXllcl9fZHJhZy1oYW5kbGVfX3BsYWNlaG9sZGVyIHtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgcGFkZGluZzogMTBweDtcbiAgfVxuXG4gICR7cHJvcHMgPT4gKHByb3BzLndhcm5pbmcgPyBnZXRCb3JkZXJDc3MoJ3dhcm5pbmcnKSA6IHByb3BzLmlzVmFsaWQgPyAnJyA6IGdldEJvcmRlckNzcygnZXJyb3InKSl9XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG5cbiAgICAubGF5ZXJfX2RyYWctaGFuZGxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLmxheWVyX19yZW1vdmUtbGF5ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IEhlYWRlckxhYmVsU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGZsZXgtZ3JvdzogMTtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIC8vIGxlYXZlIHNwYWNlIGZvciBleWUgYW5kIGNvbGxhcHNlIGljb25cbiAgcGFkZGluZy1yaWdodDogNTBweDtcbmA7XG5cbmNvbnN0IEhlYWRlckFjdGlvblNlY3Rpb24gPSBzdHlsZWQuZGl2PEhlYWRlckFjdGlvblNlY3Rpb25Qcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcmlnaHQ6IDEwcHg7XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5pc0VkaXRpbmdMYWJlbCA/ICdub25lJyA6ICdhbGwnKX07XG4gIDpob3ZlciB7XG4gICAgLmxheWVyLXBhbmVsX19oZWFkZXJfX2FjdGlvbnNfX2hpZGRlbiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gICAgfVxuICB9XG5gO1xuXG50eXBlIFN0eWxlZFBhbmVsSGVhZGVySGlkZGVuQWN0aW9uc1Byb3BzID0ge1xuICBpc0NvbmZpZ0FjdGl2ZTogTGF5ZXJQYW5lbEhlYWRlclByb3BzWydpc0NvbmZpZ0FjdGl2ZSddO1xufTtcblxuLy8gSGlkZW4gYWN0aW9ucyBvbmx5IHNob3cgdXAgb24gaG92ZXJcbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVySGlkZGVuQWN0aW9ucyA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9faGVhZGVyX19hY3Rpb25zX19oaWRkZW4nXG59KTxTdHlsZWRQYW5lbEhlYWRlckhpZGRlbkFjdGlvbnNQcm9wcz5gXG4gIG9wYWNpdHk6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5pc0NvbmZpZ0FjdGl2ZSA/IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyIDogcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kfTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC40cyBlYXNlO1xuXG4gIDpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJhZ0hhbmRsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEcmFnSGFuZGxlOiBSZWFjdC5GQzx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbGlzdGVuZXJzPzogYW55O1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn0+ID0gKHtjbGFzc05hbWUsIGxpc3RlbmVycywgY2hpbGRyZW59KSA9PiAoXG4gIDxTdHlsZWREcmFnSGFuZGxlIGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4uKGxpc3RlbmVycyA/IGxpc3RlbmVycyA6IHt9KX0+XG4gICAge2NoaWxkcmVufVxuICA8L1N0eWxlZERyYWdIYW5kbGU+XG4pO1xuXG5jb25zdCBub09wID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IExheWVyTGFiZWxFZGl0b3I6IFJlYWN0LkZDPExheWVyTGFiZWxFZGl0b3JQcm9wcz4gPSAoe1xuICBsYXllcklkLFxuICBsYWJlbCxcbiAgb25FZGl0LFxuICBvbkZvY3VzLFxuICBvbkJsdXJcbn0pID0+IChcbiAgPElubGluZUlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIGNsYXNzTmFtZT1cImxheWVyX190aXRsZV9fZWRpdG9yXCJcbiAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMubGF5ZXJUaXRsZUVkaXRvcn1cbiAgICB2YWx1ZT17bGFiZWx9XG4gICAgb25DbGljaz17bm9PcH1cbiAgICBvbkNoYW5nZT17b25FZGl0fVxuICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgaWQ9e2Ake2xheWVySWR9OmlucHV0LWxheWVyLWxhYmVsYH1cbiAgLz5cbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllclRpdGxlU2VjdGlvbkZhY3RvcnkoKSB7XG4gIGNvbnN0IFN0eWxlZExheWVyVGl0bGVTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgLmxheWVyX190aXRsZV9faW5uZXIge1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgIH1cblxuICAgIC5sYXllcl9fdGl0bGVfX3R5cGUge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIH1cbiAgYDtcbiAgY29uc3QgTGF5ZXJUaXRsZVNlY3Rpb246IFJlYWN0LkZDPExheWVyVGl0bGVTZWN0aW9uUHJvcHM+ID0gKHtcbiAgICBsYXllclR5cGUsXG4gICAgbGF5ZXJJZCxcbiAgICBsYWJlbCxcbiAgICBvblVwZGF0ZUxheWVyTGFiZWwsXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXJcbiAgfSkgPT4gKFxuICAgIDxTdHlsZWRMYXllclRpdGxlU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxMYXllckxhYmVsRWRpdG9yXG4gICAgICAgICAgbGF5ZXJJZD17bGF5ZXJJZH1cbiAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgb25FZGl0PXtvblVwZGF0ZUxheWVyTGFiZWx9XG4gICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVfX3R5cGVcIj5cbiAgICAgICAgICB7bGF5ZXJUeXBlICYmIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtgbGF5ZXIudHlwZS4ke2xheWVyVHlwZS50b0xvd2VyQ2FzZSgpfWB9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvU3R5bGVkTGF5ZXJUaXRsZVNlY3Rpb24+XG4gICk7XG4gIHJldHVybiBMYXllclRpdGxlU2VjdGlvbjtcbn1cblxuTGF5ZXJQYW5lbEhlYWRlckFjdGlvblNlY3Rpb25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5XTtcblxuZXhwb3J0IGZ1bmN0aW9uIExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uRmFjdG9yeShcbiAgUGFuZWxIZWFkZXJBY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllclBhbmVsSGVhZGVyQWN0aW9uU2VjdGlvbjogUmVhY3QuRkM8TGF5ZXJQYW5lbEhlYWRlckFjdGlvblNlY3Rpb25Qcm9wcz4gPSAoXG4gICAgcHJvcHM6IExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uUHJvcHNcbiAgKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgaXNDb25maWdBY3RpdmUsXG4gICAgICBhbGxvd0R1cGxpY2F0ZSxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGlzVmFsaWQsXG4gICAgICBsYXllcklkLFxuICAgICAgb25Ub2dnbGVWaXNpYmlsaXR5LFxuICAgICAgb25SZXNldElzVmFsaWQsXG4gICAgICBvblRvZ2dsZUVuYWJsZUNvbmZpZyxcbiAgICAgIG9uRHVwbGljYXRlTGF5ZXIsXG4gICAgICBvblJlbW92ZUxheWVyLFxuICAgICAgc2hvd1JlbW92ZUxheWVyLFxuICAgICAgaXNFZGl0aW5nTGFiZWwsXG4gICAgICAvLyBUT0RPOiBtYXkgbm90IGNvbnRhaW4gYWxsIG5lY2Vzc2FyeSBpY29ucyBmb3IgYWxsIGFjdGlvbnMsIGUuZy4gYWN0aW9uSWNvbnMuZHVwbGljYXRlLiBOZWVkIHRvIHRvIG1lcmdlIHJhdGhlciB0aGFuIHJlcGxhY2VcbiAgICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQWN0aW9uU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllci1wYW5lbF9faGVhZGVyX19hY3Rpb25zXCIgaXNFZGl0aW5nTGFiZWw9e2lzRWRpdGluZ0xhYmVsfT5cbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVySGlkZGVuQWN0aW9ucyBpc0NvbmZpZ0FjdGl2ZT17aXNDb25maWdBY3RpdmV9PlxuICAgICAgICAgIHtzaG93UmVtb3ZlTGF5ZXIgPyAoXG4gICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX3JlbW92ZS1sYXllclwiXG4gICAgICAgICAgICAgIHRlc3RJZD1cInJlbW92ZS1sYXllci1hY3Rpb25cIlxuICAgICAgICAgICAgICBpZD17bGF5ZXJJZH1cbiAgICAgICAgICAgICAgdG9vbHRpcD17J3Rvb2x0aXAucmVtb3ZlTGF5ZXInfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtvblJlbW92ZUxheWVyfVxuICAgICAgICAgICAgICB0b29sdGlwVHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMucmVtb3ZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyX19kdXBsaWNhdGVcIlxuICAgICAgICAgICAgaWQ9e2xheWVySWR9XG4gICAgICAgICAgICB0b29sdGlwPXsndG9vbHRpcC5kdXBsaWNhdGVMYXllcid9XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkR1cGxpY2F0ZUxheWVyfVxuICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMuZHVwbGljYXRlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFhbGxvd0R1cGxpY2F0ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZFBhbmVsSGVhZGVySGlkZGVuQWN0aW9ucz5cbiAgICAgICAge2lzVmFsaWQgPyAoXG4gICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllcl9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgaWQ9e2xheWVySWR9XG4gICAgICAgICAgICB0b29sdGlwPXtpc1Zpc2libGUgPyAndG9vbHRpcC5oaWRlTGF5ZXInIDogJ3Rvb2x0aXAuc2hvd0xheWVyJ31cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2lzVmlzaWJsZSA/IGFjdGlvbkljb25zLnZpc2libGUgOiBhY3Rpb25JY29ucy5oaWRkZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyX19pcy12YWxpZC1yZWZyZXNoXCJcbiAgICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgICAgdG9vbHRpcD17J3Rvb2x0aXAucmVzZXRBZnRlckVycm9yJ31cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRJc1ZhbGlkfVxuICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMucmVzZXRJc1ZhbGlkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllcl9fZW5hYmxlLWNvbmZpZyAnLCB7XG4gICAgICAgICAgICAnaXMtb3Blbic6IGlzQ29uZmlnQWN0aXZlXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgaWQ9e2xheWVySWR9XG4gICAgICAgICAgdG9vbHRpcD17J3Rvb2x0aXAubGF5ZXJTZXR0aW5ncyd9XG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVFbmFibGVDb25maWd9XG4gICAgICAgICAgSWNvbkNvbXBvbmVudD17YWN0aW9uSWNvbnMuZW5hYmxlQ29uZmlnfVxuICAgICAgICAvPlxuICAgICAgPC9IZWFkZXJBY3Rpb25TZWN0aW9uPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uO1xufVxuXG5jb25zdCBTdHlsZWRIZWFkZXJXYXJpbmcgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtOXB4O1xuICB0b3A6IGNhbGMoNTAlIC0gOXB4KTtcbiAgY29sb3I6ICR7KHt0aGVtZX0pID0+IHRoZW1lLm5vdGlmaWNhdGlvbkNvbG9ycy53YXJuaW5nfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBIZWFkZXJXYXJuaW5nID0gKHt3YXJuaW5nLCBpZH0pID0+IChcbiAgPFN0eWxlZEhlYWRlcldhcmluZz5cbiAgICA8V2FybmluZ1NpZ24gZGF0YS10aXAgZGF0YS1mb3I9e2BsYXllci0ke2lkfS13YXJuaW5nYH0gaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgPFRvb2x0aXAgaWQ9e2BsYXllci0ke2lkfS13YXJuaW5nYH0gdHlwZT1cIndhcm5pbmdcIiBlZmZlY3Q9XCJzb2xpZFwiIHRleHRDb2xvcj1cImJsYWNrXCI+XG4gICAgICB7d2FybmluZ31cbiAgICA8L1Rvb2x0aXA+XG4gIDwvU3R5bGVkSGVhZGVyV2FyaW5nPlxuKTtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICByZW1vdmU6IFRyYXNoLFxuICB2aXNpYmxlOiBFeWVTZWVuLFxuICBoaWRkZW46IEV5ZVVuc2VlbixcbiAgZW5hYmxlQ29uZmlnOiBBcnJvd0Rvd24sXG4gIGR1cGxpY2F0ZTogQ29weSxcbiAgcmVzZXRJc1ZhbGlkOiBSZXNldFxufTtcblxuTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkuZGVwcyA9IFtMYXllclRpdGxlU2VjdGlvbkZhY3RvcnksIExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uRmFjdG9yeV07XG5cbmZ1bmN0aW9uIExheWVyUGFuZWxIZWFkZXJGYWN0b3J5KFxuICBMYXllclRpdGxlU2VjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJUaXRsZVNlY3Rpb25GYWN0b3J5PixcbiAgTGF5ZXJQYW5lbEhlYWRlckFjdGlvblNlY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllclBhbmVsSGVhZGVyOiBSZWFjdC5GQzxMYXllclBhbmVsSGVhZGVyUHJvcHM+ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGlzQ29uZmlnQWN0aXZlLFxuICAgICAgaXNEcmFnTkRyb3BFbmFibGVkLFxuICAgICAgaXNWYWxpZCxcbiAgICAgIHdhcm5pbmcsXG4gICAgICBsYWJlbCxcbiAgICAgIGxheWVySWQsXG4gICAgICBsYXllclR5cGUsXG4gICAgICBsYWJlbFJDR0NvbG9yVmFsdWVzLFxuICAgICAgb25VcGRhdGVMYXllckxhYmVsLFxuICAgICAgb25Ub2dnbGVFbmFibGVDb25maWcsXG4gICAgICBsaXN0ZW5lcnNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2lzRWRpdGluZ0xhYmVsLCBzZXRJc0VkaXRpbmdMYWJlbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRMYXllclBhbmVsSGVhZGVyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXItcGFuZWxfX2hlYWRlcicsIHtcbiAgICAgICAgICAnc29ydC0taGFuZGxlJzogIWlzQ29uZmlnQWN0aXZlXG4gICAgICAgIH0pfVxuICAgICAgICBpc1ZhbGlkPXtpc1ZhbGlkfVxuICAgICAgICB3YXJuaW5nPXt3YXJuaW5nfVxuICAgICAgICBhY3RpdmU9e2lzQ29uZmlnQWN0aXZlfVxuICAgICAgICBsYWJlbFJDR0NvbG9yVmFsdWVzPXtsYWJlbFJDR0NvbG9yVmFsdWVzfVxuICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZUVuYWJsZUNvbmZpZ31cbiAgICAgID5cbiAgICAgICAge3dhcm5pbmcgPyA8SGVhZGVyV2FybmluZyB3YXJuaW5nPXt3YXJuaW5nfSBpZD17bGF5ZXJJZH0gLz4gOiBudWxsfVxuICAgICAgICA8SGVhZGVyTGFiZWxTZWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLXBhbmVsX19oZWFkZXJfX2NvbnRlbnRcIj5cbiAgICAgICAgICB7aXNEcmFnTkRyb3BFbmFibGVkID8gKFxuICAgICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCIgbGlzdGVuZXJzPXtsaXN0ZW5lcnN9PlxuICAgICAgICAgICAgICA8VmVydERvdHMgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICA8L0RyYWdIYW5kbGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlX19wbGFjZWhvbGRlclwiIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8TGF5ZXJUaXRsZVNlY3Rpb25cbiAgICAgICAgICAgIGxheWVySWQ9e2xheWVySWR9XG4gICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e29uVXBkYXRlTGF5ZXJMYWJlbH1cbiAgICAgICAgICAgIGxheWVyVHlwZT17bGF5ZXJUeXBlfVxuICAgICAgICAgICAgb25Gb2N1cz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRJc0VkaXRpbmdMYWJlbCh0cnVlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNFZGl0aW5nTGFiZWwoZmFsc2UpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0hlYWRlckxhYmVsU2VjdGlvbj5cbiAgICAgICAgPExheWVyUGFuZWxIZWFkZXJBY3Rpb25TZWN0aW9uIHsuLi5wcm9wc30gaXNFZGl0aW5nTGFiZWw9e2lzRWRpdGluZ0xhYmVsfSAvPlxuICAgICAgPC9TdHlsZWRMYXllclBhbmVsSGVhZGVyPlxuICAgICk7XG4gIH07XG5cbiAgTGF5ZXJQYW5lbEhlYWRlci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgcmV0dXJuIExheWVyUGFuZWxIZWFkZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyUGFuZWxIZWFkZXJGYWN0b3J5O1xuIl19
@@ -11,7 +11,6 @@ declare type LayerPanelProps = {
11
11
  onTouchStart?: TouchEventHandler;
12
12
  layer: Layer;
13
13
  datasets: Datasets;
14
- idx: number;
15
14
  layerTypeOptions: {
16
15
  id: string;
17
16
  label: string;
@@ -19,15 +18,18 @@ declare type LayerPanelProps = {
19
18
  requireData: any;
20
19
  }[];
21
20
  isDraggable?: boolean;
21
+ idx: number;
22
22
  openModal: ActionHandler<typeof toggleModal>;
23
23
  layerColorUIChange: ActionHandler<typeof VisStateActions.layerColorUIChange>;
24
24
  layerConfigChange: ActionHandler<typeof VisStateActions.layerConfigChange>;
25
25
  layerVisualChannelConfigChange: ActionHandler<typeof VisStateActions.layerVisualChannelConfigChange>;
26
+ layerSetIsValid: ActionHandler<typeof VisStateActions.layerSetIsValid>;
26
27
  layerTypeChange: ActionHandler<typeof VisStateActions.layerTypeChange>;
27
28
  layerVisConfigChange: ActionHandler<typeof VisStateActions.layerVisConfigChange>;
28
29
  layerTextLabelChange: ActionHandler<typeof VisStateActions.layerTextLabelChange>;
29
30
  removeLayer: ActionHandler<typeof VisStateActions.removeLayer>;
30
31
  duplicateLayer: ActionHandler<typeof VisStateActions.duplicateLayer>;
32
+ listeners?: React.ElementType;
31
33
  };
32
34
  declare function LayerPanelFactory(LayerConfigurator: ReturnType<typeof LayerConfiguratorFactory>, LayerPanelHeader: ReturnType<typeof LayerPanelHeaderFactory>): React.ComponentType<LayerPanelProps>;
33
35
  declare namespace LayerPanelFactory {
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -53,13 +33,15 @@ var _layerConfigurator = _interopRequireDefault(require("./layer-configurator"))
53
33
 
54
34
  var _layerPanelHeader = _interopRequireDefault(require("./layer-panel-header"));
55
35
 
36
+ var _constants = require("@kepler.gl/constants");
37
+
56
38
  var _templateObject;
57
39
 
58
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
59
41
 
60
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
61
43
 
62
- var PanelWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 12px;\n border-radius: 1px;\n margin-bottom: 8px;\n z-index: 1000;\n\n &.dragging {\n cursor: move;\n }\n"])));
44
+ var PanelWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 12px;\n border-radius: 1px;\n z-index: 1000;\n &.dragging {\n cursor: move;\n }\n"])));
63
45
 
64
46
  LayerPanelFactory.deps = [_layerConfigurator["default"], _layerPanelHeader["default"]];
65
47
 
@@ -124,8 +106,13 @@ function LayerPanelFactory(LayerConfigurator, LayerPanelHeader) {
124
106
  isVisible: isVisible
125
107
  });
126
108
  });
109
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_resetIsValid", function (e) {
110
+ e === null || e === void 0 ? void 0 : e.stopPropagation(); // Make the layer valid and visible again after an error
111
+
112
+ _this.props.layerSetIsValid(_this.props.layer, true);
113
+ });
127
114
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleEnableConfig", function (e) {
128
- e.stopPropagation();
115
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
129
116
  var isConfigActive = _this.props.layer.config.isConfigActive;
130
117
 
131
118
  _this.updateLayerConfig({
@@ -133,14 +120,14 @@ function LayerPanelFactory(LayerConfigurator, LayerPanelHeader) {
133
120
  });
134
121
  });
135
122
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_removeLayer", function (e) {
136
- e.stopPropagation();
123
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
137
124
 
138
- _this.props.removeLayer(_this.props.idx);
125
+ _this.props.removeLayer(_this.props.layer.id);
139
126
  });
140
127
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_duplicateLayer", function (e) {
141
- e.stopPropagation();
128
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
142
129
 
143
- _this.props.duplicateLayer(_this.props.idx);
130
+ _this.props.duplicateLayer(_this.props.layer.id);
144
131
  });
145
132
  return _this;
146
133
  }
@@ -152,13 +139,16 @@ function LayerPanelFactory(LayerConfigurator, LayerPanelHeader) {
152
139
  layer = _this$props3.layer,
153
140
  datasets = _this$props3.datasets,
154
141
  isDraggable = _this$props3.isDraggable,
155
- layerTypeOptions = _this$props3.layerTypeOptions;
156
- var config = layer.config;
142
+ layerTypeOptions = _this$props3.layerTypeOptions,
143
+ listeners = _this$props3.listeners;
144
+ var config = layer.config,
145
+ isValid = layer.isValid;
157
146
  var isConfigActive = config.isConfigActive;
158
147
  var allowDuplicate = typeof layer.isValidToSave === 'function' && layer.isValidToSave();
159
148
  return /*#__PURE__*/_react["default"].createElement(PanelWrapper, {
160
149
  active: isConfigActive,
161
150
  className: "layer-panel ".concat(this.props.className),
151
+ "data-testid": _constants.dataTestIds.layerPanel,
162
152
  style: this.props.style,
163
153
  onMouseDown: this.props.onMouseDown,
164
154
  onTouchStart: this.props.onTouchStart
@@ -166,16 +156,19 @@ function LayerPanelFactory(LayerConfigurator, LayerPanelHeader) {
166
156
  isConfigActive: isConfigActive,
167
157
  layerId: layer.id,
168
158
  isVisible: config.isVisible,
159
+ isValid: isValid,
169
160
  label: config.label,
170
161
  labelRCGColorValues: config.dataId ? datasets[config.dataId].color : null,
171
162
  layerType: layer.type,
172
163
  allowDuplicate: allowDuplicate,
173
164
  onToggleEnableConfig: this._toggleEnableConfig,
174
165
  onToggleVisibility: this._toggleVisibility,
166
+ onResetIsValid: this._resetIsValid,
175
167
  onUpdateLayerLabel: this._updateLayerLabel,
176
168
  onRemoveLayer: this._removeLayer,
177
169
  onDuplicateLayer: this._duplicateLayer,
178
- isDragNDropEnabled: isDraggable
170
+ isDragNDropEnabled: isDraggable,
171
+ listeners: listeners
179
172
  }), isConfigActive && /*#__PURE__*/_react["default"].createElement(LayerConfigurator, {
180
173
  layer: layer,
181
174
  datasets: datasets,
@@ -198,4 +191,4 @@ function LayerPanelFactory(LayerConfigurator, LayerPanelHeader) {
198
191
 
199
192
  var _default = LayerPanelFactory;
200
193
  exports["default"] = _default;
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLXBhbmVsLnRzeCJdLCJuYW1lcyI6WyJQYW5lbFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJMYXllclBhbmVsRmFjdG9yeSIsImRlcHMiLCJMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkiLCJMYXllclBhbmVsSGVhZGVyRmFjdG9yeSIsIkxheWVyQ29uZmlndXJhdG9yIiwiTGF5ZXJQYW5lbEhlYWRlciIsIkxheWVyUGFuZWwiLCJuZXdQcm9wIiwicHJvcHMiLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVyIiwibmV3VHlwZSIsImxheWVyVHlwZUNoYW5nZSIsIm5ld1Zpc0NvbmZpZyIsImxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiYXJncyIsImxheWVyQ29sb3JVSUNoYW5nZSIsImxheWVyVGV4dExhYmVsQ2hhbmdlIiwibmV3Q29uZmlnIiwiY2hhbm5lbCIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsInZhbHVlIiwidGFyZ2V0IiwidXBkYXRlTGF5ZXJDb25maWciLCJsYWJlbCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJpc1Zpc2libGUiLCJjb25maWciLCJpc0NvbmZpZ0FjdGl2ZSIsInJlbW92ZUxheWVyIiwiaWR4IiwiZHVwbGljYXRlTGF5ZXIiLCJkYXRhc2V0cyIsImlzRHJhZ2dhYmxlIiwibGF5ZXJUeXBlT3B0aW9ucyIsImFsbG93RHVwbGljYXRlIiwiaXNWYWxpZFRvU2F2ZSIsImNsYXNzTmFtZSIsInN0eWxlIiwib25Nb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJpZCIsImRhdGFJZCIsImNvbG9yIiwidHlwZSIsIl90b2dnbGVFbmFibGVDb25maWciLCJfdG9nZ2xlVmlzaWJpbGl0eSIsIl91cGRhdGVMYXllckxhYmVsIiwiX3JlbW92ZUxheWVyIiwiX2R1cGxpY2F0ZUxheWVyIiwib3Blbk1vZGFsIiwidXBkYXRlTGF5ZXJDb2xvclVJIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnIiwidXBkYXRlTGF5ZXJUeXBlIiwidXBkYXRlTGF5ZXJUZXh0TGFiZWwiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsIkNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQU9BOztBQUVBOztBQUNBOzs7Ozs7OztBQWtDQSxJQUFNQSxZQUFZLEdBQUdDLDZCQUFPQyxHQUFWLHNOQUFsQjs7QUFXQUMsaUJBQWlCLENBQUNDLElBQWxCLEdBQXlCLENBQUNDLDZCQUFELEVBQTJCQyw0QkFBM0IsQ0FBekI7O0FBRUEsU0FBU0gsaUJBQVQsQ0FDRUksaUJBREYsRUFFRUMsZ0JBRkYsRUFHd0M7QUFBQSxNQUNoQ0MsVUFEZ0M7QUFBQTs7QUFBQTs7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLDRHQUVoQixVQUFDQyxPQUFELEVBQXVDO0FBQ3pELGNBQUtDLEtBQUwsQ0FBV0MsaUJBQVgsQ0FBNkIsTUFBS0QsS0FBTCxDQUFXRSxLQUF4QyxFQUErQ0gsT0FBL0M7QUFDRCxPQUptQztBQUFBLDBHQU1sQixVQUFDSSxPQUFELEVBQXFCO0FBQ3JDLGNBQUtILEtBQUwsQ0FBV0ksZUFBWCxDQUEyQixNQUFLSixLQUFMLENBQVdFLEtBQXRDLEVBQTZDQyxPQUE3QztBQUNELE9BUm1DO0FBQUEsK0dBVWIsVUFBQ0UsWUFBRCxFQUEyQztBQUNoRSxjQUFLTCxLQUFMLENBQVdNLG9CQUFYLENBQWdDLE1BQUtOLEtBQUwsQ0FBV0UsS0FBM0MsRUFBa0RHLFlBQWxEO0FBQ0QsT0FabUM7QUFBQSw2R0FjZixZQUErQztBQUFBOztBQUFBLDJDQUEzQ0UsSUFBMkM7QUFBM0NBLFVBQUFBLElBQTJDO0FBQUE7O0FBQ2xFLDZCQUFLUCxLQUFMLEVBQVdRLGtCQUFYLHFCQUE4QixNQUFLUixLQUFMLENBQVdFLEtBQXpDLFNBQW1ESyxJQUFuRDtBQUNELE9BaEJtQztBQUFBLCtHQWtCYixZQUE0QztBQUFB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aG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIFRvdWNoRXZlbnRIYW5kbGVyLFxuICBDU1NQcm9wZXJ0aWVzLFxuICBDaGFuZ2VFdmVudEhhbmRsZXJcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkgZnJvbSAnLi9sYXllci1jb25maWd1cmF0b3InO1xuaW1wb3J0IExheWVyUGFuZWxIZWFkZXJGYWN0b3J5IGZyb20gJy4vbGF5ZXItcGFuZWwtaGVhZGVyJztcbmltcG9ydCB7TmVzdGVkUGFydGlhbCwgTGF5ZXJWaXNDb25maWcsIENvbG9yVUl9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtMYXllciwgTGF5ZXJCYXNlQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge3RvZ2dsZU1vZGFsLCBWaXNTdGF0ZUFjdGlvbnMsIEFjdGlvbkhhbmRsZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcblxudHlwZSBMYXllclBhbmVsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBvbk1vdXNlRG93bj86IE1vdXNlRXZlbnRIYW5kbGVyO1xuICBvblRvdWNoU3RhcnQ/OiBUb3VjaEV2ZW50SGFuZGxlcjtcbiAgbGF5ZXI6IExheWVyO1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIGlkeDogbnVtYmVyO1xuICBsYXllclR5cGVPcHRpb25zOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGljb246IGFueTsgLy9cbiAgICByZXF1aXJlRGF0YTogYW55OyAvL1xuICB9W107XG4gIGlzRHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgb3Blbk1vZGFsOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB0b2dnbGVNb2RhbD47XG4gIGxheWVyQ29sb3JVSUNoYW5nZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLmxheWVyQ29sb3JVSUNoYW5nZT47XG4gIGxheWVyQ29uZmlnQ2hhbmdlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMubGF5ZXJDb25maWdDaGFuZ2U+O1xuICBsYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2U6IEFjdGlvbkhhbmRsZXI8XG4gICAgdHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5sYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2VcbiAgPjtcbiAgbGF5ZXJUeXBlQ2hhbmdlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMubGF5ZXJUeXBlQ2hhbmdlPjtcbiAgbGF5ZXJWaXNDb25maWdDaGFuZ2U6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5sYXllclZpc0NvbmZpZ0NoYW5nZT47XG4gIGxheWVyVGV4dExhYmVsQ2hhbmdlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMubGF5ZXJUZXh0TGFiZWxDaGFuZ2U+O1xuICByZW1vdmVMYXllcjogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLnJlbW92ZUxheWVyPjtcbiAgZHVwbGljYXRlTGF5ZXI6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5kdXBsaWNhdGVMYXllcj47XG59O1xuXG5jb25zdCBQYW5lbFdyYXBwZXIgPSBzdHlsZWQuZGl2PHthY3RpdmU6IGJvb2xlYW59PmBcbiAgZm9udC1zaXplOiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgei1pbmRleDogMTAwMDtcblxuICAmLmRyYWdnaW5nIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbmA7XG5cbkxheWVyUGFuZWxGYWN0b3J5LmRlcHMgPSBbTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5LCBMYXllclBhbmVsSGVhZGVyRmFjdG9yeV07XG5cbmZ1bmN0aW9uIExheWVyUGFuZWxGYWN0b3J5KFxuICBMYXllckNvbmZpZ3VyYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5PixcbiAgTGF5ZXJQYW5lbEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJQYW5lbEhlYWRlckZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPExheWVyUGFuZWxQcm9wcz4ge1xuICBjbGFzcyBMYXllclBhbmVsIGV4dGVuZHMgQ29tcG9uZW50PExheWVyUGFuZWxQcm9wcz4ge1xuICAgIHVwZGF0ZUxheWVyQ29uZmlnID0gKG5ld1Byb3A6IFBhcnRpYWw8TGF5ZXJCYXNlQ29uZmlnPikgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyLCBuZXdQcm9wKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlTGF5ZXJUeXBlID0gKG5ld1R5cGU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5sYXllclR5cGVDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3VHlwZSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVmlzQ29uZmlnID0gKG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJWaXNDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3VmlzQ29uZmlnKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlTGF5ZXJDb2xvclVJID0gKC4uLmFyZ3M6IFtzdHJpbmcsIE5lc3RlZFBhcnRpYWw8Q29sb3JVST5dKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmxheWVyQ29sb3JVSUNoYW5nZSh0aGlzLnByb3BzLmxheWVyLCAuLi5hcmdzKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlTGF5ZXJUZXh0TGFiZWwgPSAoLi4uYXJnczogW251bWJlciB8ICdhbGwnLCBzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJUZXh0TGFiZWxDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyA9IChuZXdDb25maWc6IFBhcnRpYWw8TGF5ZXJCYXNlQ29uZmlnPiwgY2hhbm5lbDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyLCBuZXdDb25maWcsIGNoYW5uZWwpO1xuICAgIH07XG5cbiAgICBfdXBkYXRlTGF5ZXJMYWJlbDogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKHt0YXJnZXQ6IHt2YWx1ZX19KSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtsYWJlbDogdmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3RvZ2dsZVZpc2liaWxpdHk6IE1vdXNlRXZlbnRIYW5kbGVyID0gZSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uc3QgaXNWaXNpYmxlID0gIXRoaXMucHJvcHMubGF5ZXIuY29uZmlnLmlzVmlzaWJsZTtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe2lzVmlzaWJsZX0pO1xuICAgIH07XG5cbiAgICBfdG9nZ2xlRW5hYmxlQ29uZmlnOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGF5ZXI6IHtcbiAgICAgICAgICBjb25maWc6IHtpc0NvbmZpZ0FjdGl2ZX1cbiAgICAgICAgfVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtpc0NvbmZpZ0FjdGl2ZTogIWlzQ29uZmlnQWN0aXZlfSk7XG4gICAgfTtcblxuICAgIF9yZW1vdmVMYXllcjogTW91c2VFdmVudEhhbmRsZXIgPSBlID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnByb3BzLnJlbW92ZUxheWVyKHRoaXMucHJvcHMuaWR4KTtcbiAgICB9O1xuXG4gICAgX2R1cGxpY2F0ZUxheWVyOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMucHJvcHMuZHVwbGljYXRlTGF5ZXIodGhpcy5wcm9wcy5pZHgpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIGRhdGFzZXRzLCBpc0RyYWdnYWJsZSwgbGF5ZXJUeXBlT3B0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge2NvbmZpZ30gPSBsYXllcjtcbiAgICAgIGNvbnN0IHtpc0NvbmZpZ0FjdGl2ZX0gPSBjb25maWc7XG4gICAgICBjb25zdCBhbGxvd0R1cGxpY2F0ZSA9IHR5cGVvZiBsYXllci5pc1ZhbGlkVG9TYXZlID09PSAnZnVuY3Rpb24nICYmIGxheWVyLmlzVmFsaWRUb1NhdmUoKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFBhbmVsV3JhcHBlclxuICAgICAgICAgIGFjdGl2ZT17aXNDb25maWdBY3RpdmV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgbGF5ZXItcGFuZWwgJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gfVxuICAgICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlfVxuICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLnByb3BzLm9uTW91c2VEb3dufVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5wcm9wcy5vblRvdWNoU3RhcnR9XG4gICAgICAgID5cbiAgICAgICAgICA8TGF5ZXJQYW5lbEhlYWRlclxuICAgICAgICAgICAgaXNDb25maWdBY3RpdmU9e2lzQ29uZmlnQWN0aXZlfVxuICAgICAgICAgICAgbGF5ZXJJZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICBpc1Zpc2libGU9e2NvbmZpZy5pc1Zpc2libGV9XG4gICAgICAgICAgICBsYWJlbD17Y29uZmlnLmxhYmVsfVxuICAgICAgICAgICAgbGFiZWxSQ0dDb2xvclZhbHVlcz17Y29uZmlnLmRhdGFJZCA/IGRhdGFzZXRzW2NvbmZpZy5kYXRhSWRdLmNvbG9yIDogbnVsbH1cbiAgICAgICAgICAgIGxheWVyVHlwZT17bGF5ZXIudHlwZX1cbiAgICAgICAgICAgIGFsbG93RHVwbGljYXRlPXthbGxvd0R1cGxpY2F0ZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRW5hYmxlQ29uZmlnPXt0aGlzLl90b2dnbGVFbmFibGVDb25maWd9XG4gICAgICAgICAgICBvblRvZ2dsZVZpc2liaWxpdHk9e3RoaXMuX3RvZ2dsZVZpc2liaWxpdHl9XG4gICAgICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e3RoaXMuX3VwZGF0ZUxheWVyTGFiZWx9XG4gICAgICAgICAgICBvblJlbW92ZUxheWVyPXt0aGlzLl9yZW1vdmVMYXllcn1cbiAgICAgICAgICAgIG9uRHVwbGljYXRlTGF5ZXI9e3RoaXMuX2R1cGxpY2F0ZUxheWVyfVxuICAgICAgICAgICAgaXNEcmFnTkRyb3BFbmFibGVkPXtpc0RyYWdnYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtpc0NvbmZpZ0FjdGl2ZSAmJiAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWd1cmF0b3JcbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVyVHlwZU9wdGlvbnM9e2xheWVyVHlwZU9wdGlvbnN9XG4gICAgICAgICAgICAgIG9wZW5Nb2RhbD17dGhpcy5wcm9wcy5vcGVuTW9kYWx9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29sb3JVST17dGhpcy51cGRhdGVMYXllckNvbG9yVUl9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt0aGlzLnVwZGF0ZUxheWVyQ29uZmlnfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWc9e3RoaXMudXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllclR5cGU9e3RoaXMudXBkYXRlTGF5ZXJUeXBlfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllclRleHRMYWJlbD17dGhpcy51cGRhdGVMYXllclRleHRMYWJlbH1cbiAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJWaXNDb25maWc9e3RoaXMudXBkYXRlTGF5ZXJWaXNDb25maWd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvUGFuZWxXcmFwcGVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTGF5ZXJQYW5lbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5ZXJQYW5lbEZhY3Rvcnk7XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLXBhbmVsLnRzeCJdLCJuYW1lcyI6WyJQYW5lbFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJMYXllclBhbmVsRmFjdG9yeSIsImRlcHMiLCJMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkiLCJMYXllclBhbmVsSGVhZGVyRmFjdG9yeSIsIkxheWVyQ29uZmlndXJhdG9yIiwiTGF5ZXJQYW5lbEhlYWRlciIsIkxheWVyUGFuZWwiLCJuZXdQcm9wIiwicHJvcHMiLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVyIiwibmV3VHlwZSIsImxheWVyVHlwZUNoYW5nZSIsIm5ld1Zpc0NvbmZpZyIsImxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiYXJncyIsImxheWVyQ29sb3JVSUNoYW5nZSIsImxheWVyVGV4dExhYmVsQ2hhbmdlIiwibmV3Q29uZmlnIiwiY2hhbm5lbCIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsInZhbHVlIiwidGFyZ2V0IiwidXBkYXRlTGF5ZXJDb25maWciLCJsYWJlbCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJpc1Zpc2libGUiLCJjb25maWciLCJsYXllclNldElzVmFsaWQiLCJpc0NvbmZpZ0FjdGl2ZSIsInJlbW92ZUxheWVyIiwiaWQiLCJkdXBsaWNhdGVMYXllciIsImRhdGFzZXRzIiwiaXNEcmFnZ2FibGUiLCJsYXllclR5cGVPcHRpb25zIiwibGlzdGVuZXJzIiwiaXNWYWxpZCIsImFsbG93RHVwbGljYXRlIiwiaXNWYWxpZFRvU2F2ZSIsImNsYXNzTmFtZSIsImRhdGFUZXN0SWRzIiwibGF5ZXJQYW5lbCIsInN0eWxlIiwib25Nb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJkYXRhSWQiLCJjb2xvciIsInR5cGUiLCJfdG9nZ2xlRW5hYmxlQ29uZmlnIiwiX3RvZ2dsZVZpc2liaWxpdHkiLCJfcmVzZXRJc1ZhbGlkIiwiX3VwZGF0ZUxheWVyTGFiZWwiLCJfcmVtb3ZlTGF5ZXIiLCJfZHVwbGljYXRlTGF5ZXIiLCJvcGVuTW9kYWwiLCJ1cGRhdGVMYXllckNvbG9yVUkiLCJ1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWciLCJ1cGRhdGVMYXllclR5cGUiLCJ1cGRhdGVMYXllclRleHRMYWJlbCIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFPQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFvQ0EsSUFBTUEsWUFBWSxHQUFHQyw2QkFBT0MsR0FBViw2TEFBbEI7O0FBU0FDLGlCQUFpQixDQUFDQyxJQUFsQixHQUF5QixDQUFDQyw2QkFBRCxFQUEyQkMsNEJBQTNCLENBQXpCOztBQUVBLFNBQVNILGlCQUFULENBQ0VJLGlCQURGLEVBRUVDLGdCQUZGLEVBR3dDO0FBQUEsTUFDaENDLFVBRGdDO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSw0R0FFaEIsVUFBQ0MsT0FBRCxFQUF1QztBQUN6RCxjQUFLQyxLQUFMLENBQVdDLGlCQUFYLENBQTZCLE1BQUtELEtBQUwsQ0FBV0UsS0FBeEMsRUFBK0NILE9BQS9DO0FBQ0QsT0FKbUM7QUFBQSwwR0FNbEIsVUFBQ0ksT0FBRCxFQUFxQjtBQUNyQyxjQUFLSCxLQUFMLENBQVdJLGVBQVgsQ0FBMkIsTUFBS0osS0FBTCxDQUFXRSxLQUF0QyxFQUE2Q0MsT0FBN0M7QUFDRCxPQVJtQztBQUFBLCtHQVViLFVBQUNFLFlBQUQsRUFBMkM7QUFDaEUsY0FBS0wsS0FBTCxDQUFXTSxvQkFBWCxDQUFnQyxNQUFLTixLQUFMLENBQVdFLEtBQTNDLEVBQWtERyxZQUFsRDtBQUNELE9BWm1DO0FBQUEsNkdBY2YsWUFBK0M7QUFBQTs7QUFBQSwyQ0FBM0NFLElBQTJDO0FBQTNDQSxVQUFBQSxJQUEyQztBQUFBOztBQUNsRSw2QkFBS1AsS0FBTCxFQUFXUSxr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QUFFLEtBQUtDLGVBZHpCO0FBZUUsVUFBQSxrQkFBa0IsRUFBRXBCLFdBZnRCO0FBZ0JFLFVBQUEsU0FBUyxFQUFFRTtBQWhCYixVQVJGLEVBMEJHUCxjQUFjLGlCQUNiLGdDQUFDLGlCQUFEO0FBQ0UsVUFBQSxLQUFLLEVBQUVwQixLQURUO0FBRUUsVUFBQSxRQUFRLEVBQUV3QixRQUZaO0FBR0UsVUFBQSxnQkFBZ0IsRUFBRUUsZ0JBSHBCO0FBSUUsVUFBQSxTQUFTLEVBQUUsS0FBSzVCLEtBQUwsQ0FBV2dELFNBSnhCO0FBS0UsVUFBQSxrQkFBa0IsRUFBRSxLQUFLQyxrQkFMM0I7QUFNRSxVQUFBLGlCQUFpQixFQUFFLEtBQUtsQyxpQkFOMUI7QUFPRSxVQUFBLDhCQUE4QixFQUFFLEtBQUttQyw4QkFQdkM7QUFRRSxVQUFBLGVBQWUsRUFBRSxLQUFLQyxlQVJ4QjtBQVNFLFVBQUEsb0JBQW9CLEVBQUUsS0FBS0Msb0JBVDdCO0FBVUUsVUFBQSxvQkFBb0IsRUFBRSxLQUFLQztBQVY3QixVQTNCSixDQURGO0FBMkNEO0FBL0dtQztBQUFBO0FBQUEsSUFDYkMsZ0JBRGE7O0FBa0h0QyxTQUFPeEQsVUFBUDtBQUNEOztlQUVjTixpQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge1xuICBDb21wb25lbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBUb3VjaEV2ZW50SGFuZGxlcixcbiAgQ1NTUHJvcGVydGllcyxcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IGZyb20gJy4vbGF5ZXItY29uZmlndXJhdG9yJztcbmltcG9ydCBMYXllclBhbmVsSGVhZGVyRmFjdG9yeSBmcm9tICcuL2xheWVyLXBhbmVsLWhlYWRlcic7XG5pbXBvcnQge2RhdGFUZXN0SWRzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge05lc3RlZFBhcnRpYWwsIExheWVyVmlzQ29uZmlnLCBDb2xvclVJfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7TGF5ZXIsIExheWVyQmFzZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHt0b2dnbGVNb2RhbCwgVmlzU3RhdGVBY3Rpb25zLCBBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbnR5cGUgTGF5ZXJQYW5lbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgb25Nb3VzZURvd24/OiBNb3VzZUV2ZW50SGFuZGxlcjtcbiAgb25Ub3VjaFN0YXJ0PzogVG91Y2hFdmVudEhhbmRsZXI7XG4gIGxheWVyOiBMYXllcjtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBsYXllclR5cGVPcHRpb25zOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGljb246IGFueTsgLy9cbiAgICByZXF1aXJlRGF0YTogYW55OyAvL1xuICB9W107XG4gIGlzRHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgaWR4OiBudW1iZXI7XG4gIG9wZW5Nb2RhbDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgdG9nZ2xlTW9kYWw+O1xuICBsYXllckNvbG9yVUlDaGFuZ2U6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5sYXllckNvbG9yVUlDaGFuZ2U+O1xuICBsYXllckNvbmZpZ0NoYW5nZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlPjtcbiAgbGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlOiBBY3Rpb25IYW5kbGVyPFxuICAgIHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMubGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlXG4gID47XG4gIGxheWVyU2V0SXNWYWxpZDogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLmxheWVyU2V0SXNWYWxpZD47XG4gIGxheWVyVHlwZUNoYW5nZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLmxheWVyVHlwZUNoYW5nZT47XG4gIGxheWVyVmlzQ29uZmlnQ2hhbmdlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMubGF5ZXJWaXNDb25maWdDaGFuZ2U+O1xuICBsYXllclRleHRMYWJlbENoYW5nZTogQWN0aW9uSGFuZGxlcjx0eXBlb2YgVmlzU3RhdGVBY3Rpb25zLmxheWVyVGV4dExhYmVsQ2hhbmdlPjtcbiAgcmVtb3ZlTGF5ZXI6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIFZpc1N0YXRlQWN0aW9ucy5yZW1vdmVMYXllcj47XG4gIGR1cGxpY2F0ZUxheWVyOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnMuZHVwbGljYXRlTGF5ZXI+O1xuICBsaXN0ZW5lcnM/OiBSZWFjdC5FbGVtZW50VHlwZTtcbn07XG5cbmNvbnN0IFBhbmVsV3JhcHBlciA9IHN0eWxlZC5kaXY8e2FjdGl2ZTogYm9vbGVhbn0+YFxuICBmb250LXNpemU6IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgei1pbmRleDogMTAwMDtcbiAgJi5kcmFnZ2luZyB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICB9XG5gO1xuXG5MYXllclBhbmVsRmFjdG9yeS5kZXBzID0gW0xheWVyQ29uZmlndXJhdG9yRmFjdG9yeSwgTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBMYXllclBhbmVsRmFjdG9yeShcbiAgTGF5ZXJDb25maWd1cmF0b3I6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQ29uZmlndXJhdG9yRmFjdG9yeT4sXG4gIExheWVyUGFuZWxIZWFkZXI6IFJldHVyblR5cGU8dHlwZW9mIExheWVyUGFuZWxIZWFkZXJGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxMYXllclBhbmVsUHJvcHM+IHtcbiAgY2xhc3MgTGF5ZXJQYW5lbCBleHRlbmRzIENvbXBvbmVudDxMYXllclBhbmVsUHJvcHM+IHtcbiAgICB1cGRhdGVMYXllckNvbmZpZyA9IChuZXdQcm9wOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3UHJvcCk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVHlwZSA9IChuZXdUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJUeXBlQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXIsIG5ld1R5cGUpO1xuICAgIH07XG5cbiAgICB1cGRhdGVMYXllclZpc0NvbmZpZyA9IChuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmxheWVyVmlzQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXIsIG5ld1Zpc0NvbmZpZyk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyQ29sb3JVSSA9ICguLi5hcmdzOiBbc3RyaW5nLCBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+XSkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5sYXllckNvbG9yVUlDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVGV4dExhYmVsID0gKC4uLmFyZ3M6IFtudW1iZXIgfCAnYWxsJywgc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmxheWVyVGV4dExhYmVsQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXIsIC4uLmFyZ3MpO1xuICAgIH07XG5cbiAgICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWcgPSAobmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4sIGNoYW5uZWw6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5sYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3Q29uZmlnLCBjaGFubmVsKTtcbiAgICB9O1xuXG4gICAgX3VwZGF0ZUxheWVyTGFiZWw6IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9ICh7dGFyZ2V0OiB7dmFsdWV9fSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7bGFiZWw6IHZhbHVlfSk7XG4gICAgfTtcblxuICAgIF90b2dnbGVWaXNpYmlsaXR5OiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICF0aGlzLnByb3BzLmxheWVyLmNvbmZpZy5pc1Zpc2libGU7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtpc1Zpc2libGV9KTtcbiAgICB9O1xuXG4gICAgX3Jlc2V0SXNWYWxpZDogTW91c2VFdmVudEhhbmRsZXIgPSBlID0+IHtcbiAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgLy8gTWFrZSB0aGUgbGF5ZXIgdmFsaWQgYW5kIHZpc2libGUgYWdhaW4gYWZ0ZXIgYW4gZXJyb3JcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJTZXRJc1ZhbGlkKHRoaXMucHJvcHMubGF5ZXIsIHRydWUpO1xuICAgIH07XG5cbiAgICBfdG9nZ2xlRW5hYmxlQ29uZmlnOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxheWVyOiB7XG4gICAgICAgICAgY29uZmlnOiB7aXNDb25maWdBY3RpdmV9XG4gICAgICAgIH1cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7aXNDb25maWdBY3RpdmU6ICFpc0NvbmZpZ0FjdGl2ZX0pO1xuICAgIH07XG5cbiAgICBfcmVtb3ZlTGF5ZXI6IE1vdXNlRXZlbnRIYW5kbGVyID0gZSA9PiB7XG4gICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMucHJvcHMucmVtb3ZlTGF5ZXIodGhpcy5wcm9wcy5sYXllci5pZCk7XG4gICAgfTtcblxuICAgIF9kdXBsaWNhdGVMYXllcjogTW91c2VFdmVudEhhbmRsZXIgPSBlID0+IHtcbiAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5wcm9wcy5kdXBsaWNhdGVMYXllcih0aGlzLnByb3BzLmxheWVyLmlkKTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBkYXRhc2V0cywgaXNEcmFnZ2FibGUsIGxheWVyVHlwZU9wdGlvbnMsIGxpc3RlbmVyc30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge2NvbmZpZywgaXNWYWxpZH0gPSBsYXllcjtcbiAgICAgIGNvbnN0IHtpc0NvbmZpZ0FjdGl2ZX0gPSBjb25maWc7XG4gICAgICBjb25zdCBhbGxvd0R1cGxpY2F0ZSA9IHR5cGVvZiBsYXllci5pc1ZhbGlkVG9TYXZlID09PSAnZnVuY3Rpb24nICYmIGxheWVyLmlzVmFsaWRUb1NhdmUoKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFBhbmVsV3JhcHBlclxuICAgICAgICAgIGFjdGl2ZT17aXNDb25maWdBY3RpdmV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgbGF5ZXItcGFuZWwgJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkcy5sYXllclBhbmVsfVxuICAgICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlfVxuICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLnByb3BzLm9uTW91c2VEb3dufVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5wcm9wcy5vblRvdWNoU3RhcnR9XG4gICAgICAgID5cbiAgICAgICAgICA8TGF5ZXJQYW5lbEhlYWRlclxuICAgICAgICAgICAgaXNDb25maWdBY3RpdmU9e2lzQ29uZmlnQWN0aXZlfVxuICAgICAgICAgICAgbGF5ZXJJZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICBpc1Zpc2libGU9e2NvbmZpZy5pc1Zpc2libGV9XG4gICAgICAgICAgICBpc1ZhbGlkPXtpc1ZhbGlkfVxuICAgICAgICAgICAgbGFiZWw9e2NvbmZpZy5sYWJlbH1cbiAgICAgICAgICAgIGxhYmVsUkNHQ29sb3JWYWx1ZXM9e2NvbmZpZy5kYXRhSWQgPyBkYXRhc2V0c1tjb25maWcuZGF0YUlkXS5jb2xvciA6IG51bGx9XG4gICAgICAgICAgICBsYXllclR5cGU9e2xheWVyLnR5cGV9XG4gICAgICAgICAgICBhbGxvd0R1cGxpY2F0ZT17YWxsb3dEdXBsaWNhdGV9XG4gICAgICAgICAgICBvblRvZ2dsZUVuYWJsZUNvbmZpZz17dGhpcy5fdG9nZ2xlRW5hYmxlQ29uZmlnfVxuICAgICAgICAgICAgb25Ub2dnbGVWaXNpYmlsaXR5PXt0aGlzLl90b2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgb25SZXNldElzVmFsaWQ9e3RoaXMuX3Jlc2V0SXNWYWxpZH1cbiAgICAgICAgICAgIG9uVXBkYXRlTGF5ZXJMYWJlbD17dGhpcy5fdXBkYXRlTGF5ZXJMYWJlbH1cbiAgICAgICAgICAgIG9uUmVtb3ZlTGF5ZXI9e3RoaXMuX3JlbW92ZUxheWVyfVxuICAgICAgICAgICAgb25EdXBsaWNhdGVMYXllcj17dGhpcy5fZHVwbGljYXRlTGF5ZXJ9XG4gICAgICAgICAgICBpc0RyYWdORHJvcEVuYWJsZWQ9e2lzRHJhZ2dhYmxlfVxuICAgICAgICAgICAgbGlzdGVuZXJzPXtsaXN0ZW5lcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aXNDb25maWdBY3RpdmUgJiYgKFxuICAgICAgICAgICAgPExheWVyQ29uZmlndXJhdG9yXG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBsYXllclR5cGVPcHRpb25zPXtsYXllclR5cGVPcHRpb25zfVxuICAgICAgICAgICAgICBvcGVuTW9kYWw9e3RoaXMucHJvcHMub3Blbk1vZGFsfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllckNvbG9yVUk9e3RoaXMudXBkYXRlTGF5ZXJDb2xvclVJfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllckNvbmZpZz17dGhpcy51cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnPXt0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ31cbiAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUeXBlPXt0aGlzLnVwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUZXh0TGFiZWw9e3RoaXMudXBkYXRlTGF5ZXJUZXh0TGFiZWx9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyVmlzQ29uZmlnPXt0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1BhbmVsV3JhcHBlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyUGFuZWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyUGFuZWxGYWN0b3J5O1xuIl19