@carto/kepler.gl 0.1.0-alpha.0 → 0.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (872) hide show
  1. package/dist/actions/action-wrapper.d.ts +115 -115
  2. package/dist/actions/action-wrapper.js +190 -0
  3. package/dist/actions/actions.d.ts +195 -195
  4. package/dist/actions/actions.js +194 -0
  5. package/dist/actions/identity-actions.d.ts +61 -61
  6. package/dist/actions/identity-actions.js +101 -0
  7. package/dist/actions/index.d.ts +9 -9
  8. package/dist/actions/index.js +144 -0
  9. package/dist/actions/map-state-actions.d.ts +69 -69
  10. package/dist/actions/map-state-actions.js +106 -0
  11. package/dist/actions/map-style-actions.d.ts +146 -146
  12. package/dist/actions/map-style-actions.js +176 -0
  13. package/dist/actions/provider-actions.d.ts +153 -153
  14. package/dist/actions/provider-actions.js +144 -0
  15. package/dist/actions/ui-state-actions.d.ts +300 -300
  16. package/dist/actions/ui-state-actions.js +356 -0
  17. package/dist/actions/vis-state-actions.d.ts +821 -821
  18. package/dist/actions/vis-state-actions.js +900 -0
  19. package/dist/cloud-providers/index.d.ts +2 -2
  20. package/dist/cloud-providers/index.js +22 -0
  21. package/dist/cloud-providers/provider.d.ts +176 -176
  22. package/dist/cloud-providers/provider.js +346 -0
  23. package/dist/components/bottom-widget.d.ts +47 -47
  24. package/dist/components/bottom-widget.js +217 -0
  25. package/dist/components/common/action-panel.d.ts +27 -27
  26. package/dist/components/common/action-panel.js +133 -0
  27. package/dist/components/common/animation-control/animation-control.d.ts +24 -24
  28. package/dist/components/common/animation-control/animation-control.js +129 -0
  29. package/dist/components/common/animation-control/animation-controller.d.ts +16 -16
  30. package/dist/components/common/animation-control/animation-controller.js +270 -0
  31. package/dist/components/common/animation-control/animation-speed-slider.d.ts +12 -12
  32. package/dist/components/common/animation-control/animation-speed-slider.js +88 -0
  33. package/dist/components/common/animation-control/floating-time-display.d.ts +9 -9
  34. package/dist/components/common/animation-control/floating-time-display.js +149 -0
  35. package/dist/components/common/animation-control/playback-controls.d.ts +72 -72
  36. package/dist/components/common/animation-control/playback-controls.js +261 -0
  37. package/dist/components/common/animation-control/speed-control.d.ts +13 -13
  38. package/dist/components/common/animation-control/speed-control.js +70 -0
  39. package/dist/components/common/checkbox.d.ts +35 -35
  40. package/dist/components/common/checkbox.js +117 -0
  41. package/dist/components/common/color-legend.d.ts +43 -43
  42. package/dist/components/common/color-legend.js +205 -0
  43. package/dist/components/common/data-table/button.d.ts +8 -8
  44. package/dist/components/common/data-table/button.js +53 -0
  45. package/dist/components/common/data-table/canvas.d.ts +2 -2
  46. package/dist/components/common/data-table/canvas.js +43 -0
  47. package/dist/components/common/data-table/cell-size.d.ts +36 -36
  48. package/dist/components/common/data-table/cell-size.js +170 -0
  49. package/dist/components/common/data-table/grid.d.ts +7 -7
  50. package/dist/components/common/data-table/grid.js +90 -0
  51. package/dist/components/common/data-table/index.d.ts +143 -143
  52. package/dist/components/common/data-table/index.js +469 -0
  53. package/dist/components/common/data-table/option-dropdown.d.ts +14 -14
  54. package/dist/components/common/data-table/option-dropdown.js +99 -0
  55. package/dist/components/common/dataset-label.d.ts +10 -10
  56. package/dist/components/common/dataset-label.js +44 -0
  57. package/dist/components/common/error-boundary.d.ts +16 -16
  58. package/dist/components/common/error-boundary.js +76 -0
  59. package/dist/components/common/field-selector.d.ts +47 -47
  60. package/dist/components/common/field-selector.js +214 -0
  61. package/dist/components/common/field-token.d.ts +45 -45
  62. package/dist/components/common/field-token.js +47 -0
  63. package/dist/components/common/file-uploader/file-drop.d.ts +54 -54
  64. package/dist/components/common/file-uploader/file-drop.js +213 -0
  65. package/dist/components/common/file-uploader/file-upload-progress.d.ts +8 -8
  66. package/dist/components/common/file-uploader/file-upload-progress.js +103 -0
  67. package/dist/components/common/file-uploader/file-upload.d.ts +27 -27
  68. package/dist/components/common/file-uploader/file-upload.js +263 -0
  69. package/dist/components/common/file-uploader/upload-button.d.ts +8 -8
  70. package/dist/components/common/file-uploader/upload-button.js +76 -0
  71. package/dist/components/common/histogram-plot.d.ts +3 -3
  72. package/dist/components/common/histogram-plot.js +112 -0
  73. package/dist/components/common/icons/add.d.ts +9 -9
  74. package/dist/components/common/icons/add.js +58 -0
  75. package/dist/components/common/icons/anchor_window.d.ts +11 -11
  76. package/dist/components/common/icons/anchor_window.js +51 -0
  77. package/dist/components/common/icons/arrow-down-alt.d.ts +9 -9
  78. package/dist/components/common/icons/arrow-down-alt.js +58 -0
  79. package/dist/components/common/icons/arrow-down-solid.d.ts +9 -9
  80. package/dist/components/common/icons/arrow-down-solid.js +58 -0
  81. package/dist/components/common/icons/arrow-down.d.ts +9 -9
  82. package/dist/components/common/icons/arrow-down.js +58 -0
  83. package/dist/components/common/icons/arrow-left.d.ts +9 -9
  84. package/dist/components/common/icons/arrow-left.js +61 -0
  85. package/dist/components/common/icons/arrow-right.d.ts +9 -9
  86. package/dist/components/common/icons/arrow-right.js +58 -0
  87. package/dist/components/common/icons/arrow-up-alt.d.ts +9 -9
  88. package/dist/components/common/icons/arrow-up-alt.js +59 -0
  89. package/dist/components/common/icons/arrow-up-solid.d.ts +9 -9
  90. package/dist/components/common/icons/arrow-up-solid.js +58 -0
  91. package/dist/components/common/icons/arrow-up.d.ts +9 -9
  92. package/dist/components/common/icons/arrow-up.js +58 -0
  93. package/dist/components/common/icons/base.d.ts +29 -29
  94. package/dist/components/common/icons/base.js +94 -0
  95. package/dist/components/common/icons/bug.d.ts +9 -9
  96. package/dist/components/common/icons/bug.js +60 -0
  97. package/dist/components/common/icons/cancel.d.ts +9 -9
  98. package/dist/components/common/icons/cancel.js +58 -0
  99. package/dist/components/common/icons/checkmark.d.ts +10 -10
  100. package/dist/components/common/icons/checkmark.js +64 -0
  101. package/dist/components/common/icons/chevron-right.js +68 -0
  102. package/dist/components/common/icons/clipboard.d.ts +9 -9
  103. package/dist/components/common/icons/clipboard.js +59 -0
  104. package/dist/components/common/icons/clock.d.ts +9 -9
  105. package/dist/components/common/icons/clock.js +60 -0
  106. package/dist/components/common/icons/close.d.ts +9 -9
  107. package/dist/components/common/icons/close.js +63 -0
  108. package/dist/components/common/icons/code-alt.d.ts +9 -9
  109. package/dist/components/common/icons/code-alt.js +61 -0
  110. package/dist/components/common/icons/copy.d.ts +9 -9
  111. package/dist/components/common/icons/copy.js +63 -0
  112. package/dist/components/common/icons/crosshairs.d.ts +9 -9
  113. package/dist/components/common/icons/crosshairs.js +61 -0
  114. package/dist/components/common/icons/cube-3d.d.ts +9 -9
  115. package/dist/components/common/icons/cube-3d.js +62 -0
  116. package/dist/components/common/icons/cursor-click.d.ts +9 -9
  117. package/dist/components/common/icons/cursor-click.js +62 -0
  118. package/dist/components/common/icons/data-table.d.ts +10 -10
  119. package/dist/components/common/icons/data-table.js +59 -0
  120. package/dist/components/common/icons/db.d.ts +10 -10
  121. package/dist/components/common/icons/db.js +59 -0
  122. package/dist/components/common/icons/delete.d.ts +9 -9
  123. package/dist/components/common/icons/delete.js +60 -0
  124. package/dist/components/common/icons/docs.d.ts +9 -9
  125. package/dist/components/common/icons/docs.js +74 -0
  126. package/dist/components/common/icons/drag-n-drop.d.ts +9 -9
  127. package/dist/components/common/icons/drag-n-drop.js +60 -0
  128. package/dist/components/common/icons/draw-polygon.d.ts +10 -10
  129. package/dist/components/common/icons/draw-polygon.js +78 -0
  130. package/dist/components/common/icons/email.d.ts +9 -9
  131. package/dist/components/common/icons/email.js +62 -0
  132. package/dist/components/common/icons/expand.d.ts +9 -9
  133. package/dist/components/common/icons/expand.js +60 -0
  134. package/dist/components/common/icons/eye-seen.d.ts +9 -9
  135. package/dist/components/common/icons/eye-seen.js +60 -0
  136. package/dist/components/common/icons/eye-unseen.d.ts +9 -9
  137. package/dist/components/common/icons/eye-unseen.js +60 -0
  138. package/dist/components/common/icons/file-type.d.ts +8 -8
  139. package/dist/components/common/icons/file-type.js +52 -0
  140. package/dist/components/common/icons/file.d.ts +9 -9
  141. package/dist/components/common/icons/file.js +58 -0
  142. package/dist/components/common/icons/files.d.ts +9 -9
  143. package/dist/components/common/icons/files.js +58 -0
  144. package/dist/components/common/icons/filter-funnel.d.ts +9 -9
  145. package/dist/components/common/icons/filter-funnel.js +58 -0
  146. package/dist/components/common/icons/free-window.d.ts +11 -11
  147. package/dist/components/common/icons/free-window.js +51 -0
  148. package/dist/components/common/icons/gear.d.ts +9 -9
  149. package/dist/components/common/icons/gear.js +60 -0
  150. package/dist/components/common/icons/hash.d.ts +9 -9
  151. package/dist/components/common/icons/hash.js +58 -0
  152. package/dist/components/common/icons/histogram.d.ts +9 -9
  153. package/dist/components/common/icons/histogram.js +58 -0
  154. package/dist/components/common/icons/index.d.ts +78 -78
  155. package/dist/components/common/icons/index.js +551 -0
  156. package/dist/components/common/icons/info.d.ts +12 -12
  157. package/dist/components/common/icons/info.js +71 -0
  158. package/dist/components/common/icons/layers.d.ts +9 -9
  159. package/dist/components/common/icons/layers.js +58 -0
  160. package/dist/components/common/icons/left-arrow.d.ts +9 -9
  161. package/dist/components/common/icons/left-arrow.js +61 -0
  162. package/dist/components/common/icons/legend.d.ts +9 -9
  163. package/dist/components/common/icons/legend.js +58 -0
  164. package/dist/components/common/icons/line-chart.d.ts +9 -9
  165. package/dist/components/common/icons/line-chart.js +58 -0
  166. package/dist/components/common/icons/login.d.ts +9 -9
  167. package/dist/components/common/icons/login.js +61 -0
  168. package/dist/components/common/icons/logout.d.ts +9 -9
  169. package/dist/components/common/icons/logout.js +60 -0
  170. package/dist/components/common/icons/map-icon.d.ts +11 -11
  171. package/dist/components/common/icons/map-icon.js +65 -0
  172. package/dist/components/common/icons/map.d.ts +11 -11
  173. package/dist/components/common/icons/map.js +65 -0
  174. package/dist/components/common/icons/messages.d.ts +9 -9
  175. package/dist/components/common/icons/messages.js +58 -0
  176. package/dist/components/common/icons/minus.d.ts +9 -9
  177. package/dist/components/common/icons/minus.js +58 -0
  178. package/dist/components/common/icons/order-by-dataset.d.ts +12 -12
  179. package/dist/components/common/icons/order-by-dataset.js +51 -0
  180. package/dist/components/common/icons/order-by-list.d.ts +12 -12
  181. package/dist/components/common/icons/order-by-list.js +43 -0
  182. package/dist/components/common/icons/pause.d.ts +9 -9
  183. package/dist/components/common/icons/pause.js +58 -0
  184. package/dist/components/common/icons/picture.d.ts +9 -9
  185. package/dist/components/common/icons/picture.js +58 -0
  186. package/dist/components/common/icons/pin.d.ts +9 -9
  187. package/dist/components/common/icons/pin.js +62 -0
  188. package/dist/components/common/icons/play.d.ts +9 -9
  189. package/dist/components/common/icons/play.js +58 -0
  190. package/dist/components/common/icons/polygon.d.ts +10 -10
  191. package/dist/components/common/icons/polygon.js +80 -0
  192. package/dist/components/common/icons/rectangle.d.ts +10 -10
  193. package/dist/components/common/icons/rectangle.js +81 -0
  194. package/dist/components/common/icons/reduce.d.ts +9 -9
  195. package/dist/components/common/icons/reduce.js +61 -0
  196. package/dist/components/common/icons/reset.d.ts +9 -9
  197. package/dist/components/common/icons/reset.js +58 -0
  198. package/dist/components/common/icons/rocket.d.ts +9 -9
  199. package/dist/components/common/icons/rocket.js +58 -0
  200. package/dist/components/common/icons/save.d.ts +9 -9
  201. package/dist/components/common/icons/save.js +60 -0
  202. package/dist/components/common/icons/save2.d.ts +9 -9
  203. package/dist/components/common/icons/save2.js +64 -0
  204. package/dist/components/common/icons/search.d.ts +9 -9
  205. package/dist/components/common/icons/search.js +60 -0
  206. package/dist/components/common/icons/settings.d.ts +9 -9
  207. package/dist/components/common/icons/settings.js +60 -0
  208. package/dist/components/common/icons/share.d.ts +9 -9
  209. package/dist/components/common/icons/share.js +58 -0
  210. package/dist/components/common/icons/split.d.ts +9 -9
  211. package/dist/components/common/icons/split.js +86 -0
  212. package/dist/components/common/icons/square-select.d.ts +9 -9
  213. package/dist/components/common/icons/square-select.js +60 -0
  214. package/dist/components/common/icons/swap-horizontal.js +66 -0
  215. package/dist/components/common/icons/table.d.ts +9 -9
  216. package/dist/components/common/icons/table.js +58 -0
  217. package/dist/components/common/icons/trash.d.ts +9 -9
  218. package/dist/components/common/icons/trash.js +60 -0
  219. package/dist/components/common/icons/upload.d.ts +9 -9
  220. package/dist/components/common/icons/upload.js +58 -0
  221. package/dist/components/common/icons/vert-dots.d.ts +9 -9
  222. package/dist/components/common/icons/vert-dots.js +96 -0
  223. package/dist/components/common/icons/vert-three-dots.d.ts +9 -9
  224. package/dist/components/common/icons/vert-three-dots.js +71 -0
  225. package/dist/components/common/icons/warning.d.ts +10 -10
  226. package/dist/components/common/icons/warning.js +72 -0
  227. package/dist/components/common/image-preview.d.ts +15 -15
  228. package/dist/components/common/image-preview.js +79 -0
  229. package/dist/components/common/info-helper.d.ts +11 -11
  230. package/dist/components/common/info-helper.js +79 -0
  231. package/dist/components/common/item-selector/accessor.d.ts +7 -7
  232. package/dist/components/common/item-selector/accessor.js +54 -0
  233. package/dist/components/common/item-selector/chickleted-input.d.ts +21 -21
  234. package/dist/components/common/item-selector/chickleted-input.js +96 -0
  235. package/dist/components/common/item-selector/dropdown-list.d.ts +68 -68
  236. package/dist/components/common/item-selector/dropdown-list.js +279 -0
  237. package/dist/components/common/item-selector/item-selector-submenu.js +88 -0
  238. package/dist/components/common/item-selector/item-selector.d.ts +91 -91
  239. package/dist/components/common/item-selector/item-selector.js +282 -0
  240. package/dist/components/common/item-selector/typeahead.d.ts +115 -115
  241. package/dist/components/common/item-selector/typeahead.js +425 -0
  242. package/dist/components/common/line-chart.d.ts +34 -34
  243. package/dist/components/common/line-chart.js +127 -0
  244. package/dist/components/common/loading-spinner.d.ts +9 -9
  245. package/dist/components/common/loading-spinner.js +64 -0
  246. package/dist/components/common/logo.d.ts +8 -8
  247. package/dist/components/common/logo.js +85 -0
  248. package/dist/components/common/map-layer-selector.d.ts +13 -13
  249. package/dist/components/common/map-layer-selector.js +56 -0
  250. package/dist/components/common/modal.d.ts +49 -49
  251. package/dist/components/common/modal.js +165 -0
  252. package/dist/components/common/portaled.d.ts +527 -527
  253. package/dist/components/common/portaled.js +277 -0
  254. package/dist/components/common/progress-bar.d.ts +12 -12
  255. package/dist/components/common/progress-bar.js +64 -0
  256. package/dist/components/common/range-brush.d.ts +19 -19
  257. package/dist/components/common/range-brush.js +277 -0
  258. package/dist/components/common/range-plot.d.ts +35 -35
  259. package/dist/components/common/range-plot.js +130 -0
  260. package/dist/components/common/range-slider.d.ts +32 -32
  261. package/dist/components/common/range-slider.js +305 -0
  262. package/dist/components/common/slider/mouse-event.d.ts +27 -27
  263. package/dist/components/common/slider/mouse-event.js +115 -0
  264. package/dist/components/common/slider/slider-bar-handle.d.ts +29 -29
  265. package/dist/components/common/slider/slider-bar-handle.js +105 -0
  266. package/dist/components/common/slider/slider-handle.d.ts +33 -33
  267. package/dist/components/common/slider/slider-handle.js +151 -0
  268. package/dist/components/common/slider/slider.d.ts +70 -70
  269. package/dist/components/common/slider/slider.js +221 -0
  270. package/dist/components/common/styled-components.d.ts +119 -119
  271. package/dist/components/common/styled-components.js +300 -0
  272. package/dist/components/common/switch.d.ts +16 -16
  273. package/dist/components/common/switch.js +38 -0
  274. package/dist/components/common/time-range-slider-time-title.d.ts +9 -9
  275. package/dist/components/common/time-range-slider-time-title.js +79 -0
  276. package/dist/components/common/time-range-slider.d.ts +32 -32
  277. package/dist/components/common/time-range-slider.js +116 -0
  278. package/dist/components/common/time-slider-marker.d.ts +21 -21
  279. package/dist/components/common/time-slider-marker.js +136 -0
  280. package/dist/components/common/tippy-tooltip.d.ts +4 -4
  281. package/dist/components/common/tippy-tooltip.js +115 -0
  282. package/dist/components/common/toolbar-item.d.ts +14 -14
  283. package/dist/components/common/toolbar-item.js +75 -0
  284. package/dist/components/common/toolbar.d.ts +5 -5
  285. package/dist/components/common/toolbar.js +44 -0
  286. package/dist/components/common/vertical-toolbar.d.ts +3 -3
  287. package/dist/components/common/vertical-toolbar.js +33 -0
  288. package/dist/components/container.d.ts +39 -39
  289. package/dist/components/container.js +203 -0
  290. package/dist/components/context.d.ts +7 -7
  291. package/dist/components/context.js +38 -0
  292. package/dist/components/editor/constants.d.ts +17 -17
  293. package/dist/components/editor/constants.js +45 -0
  294. package/dist/components/editor/editor.d.ts +29 -29
  295. package/dist/components/editor/editor.js +226 -0
  296. package/dist/components/editor/feature-action-panel.d.ts +27 -27
  297. package/dist/components/editor/feature-action-panel.js +141 -0
  298. package/dist/components/editor/feature-styles.d.ts +24 -24
  299. package/dist/components/editor/feature-styles.js +67 -0
  300. package/dist/components/editor/handle-style.d.ts +38 -38
  301. package/dist/components/editor/handle-style.js +78 -0
  302. package/dist/components/filters/components.d.ts +1 -3
  303. package/dist/components/filters/components.js +31 -0
  304. package/dist/components/filters/filter-panels/filter-panel-with-field-select.d.ts +10 -10
  305. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +96 -0
  306. package/dist/components/filters/filter-panels/multi-select-filter-panel.d.ts +9 -9
  307. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +66 -0
  308. package/dist/components/filters/filter-panels/new-filter-panel.d.ts +12 -12
  309. package/dist/components/filters/filter-panels/new-filter-panel.js +85 -0
  310. package/dist/components/filters/filter-panels/polygon-filter-panel.d.ts +9 -9
  311. package/dist/components/filters/filter-panels/polygon-filter-panel.js +85 -0
  312. package/dist/components/filters/filter-panels/range-filter-panel.d.ts +9 -9
  313. package/dist/components/filters/filter-panels/range-filter-panel.js +66 -0
  314. package/dist/components/filters/filter-panels/single-select-filter-panel.d.ts +9 -9
  315. package/dist/components/filters/filter-panels/single-select-filter-panel.js +66 -0
  316. package/dist/components/filters/filter-panels/time-range-filter-panel.d.ts +8 -8
  317. package/dist/components/filters/filter-panels/time-range-filter-panel.js +80 -0
  318. package/dist/components/filters/filter-panels/types.d.ts +36 -36
  319. package/dist/components/filters/filter-panels/types.js +6 -0
  320. package/dist/components/filters/index.d.ts +5 -5
  321. package/dist/components/filters/index.js +42 -0
  322. package/dist/components/filters/multi-select-filter.d.ts +3 -3
  323. package/dist/components/filters/multi-select-filter.js +48 -0
  324. package/dist/components/filters/polygon-filter.d.ts +4 -4
  325. package/dist/components/filters/polygon-filter.js +85 -0
  326. package/dist/components/filters/range-filter.d.ts +8 -8
  327. package/dist/components/filters/range-filter.js +48 -0
  328. package/dist/components/filters/single-select-filter.d.ts +3 -3
  329. package/dist/components/filters/single-select-filter.js +57 -0
  330. package/dist/components/filters/time-range-filter.d.ts +28 -28
  331. package/dist/components/filters/time-range-filter.js +75 -0
  332. package/dist/components/filters/time-widget.d.ts +14 -14
  333. package/dist/components/filters/time-widget.js +162 -0
  334. package/dist/components/filters/types.d.ts +53 -53
  335. package/dist/components/filters/types.js +6 -0
  336. package/dist/components/geocoder/geocoder.d.ts +33 -33
  337. package/dist/components/geocoder/geocoder.js +282 -0
  338. package/dist/components/geocoder-panel.d.ts +28 -28
  339. package/dist/components/geocoder-panel.js +192 -0
  340. package/dist/components/index.d.ts +165 -165
  341. package/dist/components/index.js +1474 -0
  342. package/dist/components/injector.d.ts +25 -25
  343. package/dist/components/injector.js +162 -0
  344. package/dist/components/kepler-gl.d.ts +302 -302
  345. package/dist/components/kepler-gl.js +487 -0
  346. package/dist/components/map/coordinate-info.d.ts +7 -7
  347. package/dist/components/map/coordinate-info.js +59 -0
  348. package/dist/components/map/layer-hover-info.d.ts +13 -13
  349. package/dist/components/map/layer-hover-info.js +167 -0
  350. package/dist/components/map/layer-selector-panel.d.ts +22 -22
  351. package/dist/components/map/layer-selector-panel.js +103 -0
  352. package/dist/components/map/locale-panel.d.ts +16 -16
  353. package/dist/components/map/locale-panel.js +103 -0
  354. package/dist/components/map/map-control-panel.d.ts +14 -14
  355. package/dist/components/map/map-control-panel.js +97 -0
  356. package/dist/components/map/map-control-toolbar.d.ts +2 -2
  357. package/dist/components/map/map-control-toolbar.js +35 -0
  358. package/dist/components/map/map-control-tooltip.d.ts +7 -7
  359. package/dist/components/map/map-control-tooltip.js +48 -0
  360. package/dist/components/map/map-control.d.ts +44 -44
  361. package/dist/components/map/map-control.js +79 -0
  362. package/dist/components/map/map-draw-panel.d.ts +21 -21
  363. package/dist/components/map/map-draw-panel.js +131 -0
  364. package/dist/components/map/map-legend-panel.d.ts +23 -23
  365. package/dist/components/map/map-legend-panel.js +152 -0
  366. package/dist/components/map/map-legend.d.ts +55 -55
  367. package/dist/components/map/map-legend.js +234 -0
  368. package/dist/components/map/map-popover.d.ts +37 -37
  369. package/dist/components/map/map-popover.js +191 -0
  370. package/dist/components/map/split-map-button.d.ts +19 -19
  371. package/dist/components/map/split-map-button.js +89 -0
  372. package/dist/components/map/toggle-3d-button.d.ts +16 -16
  373. package/dist/components/map/toggle-3d-button.js +79 -0
  374. package/dist/components/map-container.d.ts +58 -58
  375. package/dist/components/map-container.js +502 -0
  376. package/dist/components/maps-layout.d.ts +10 -10
  377. package/dist/components/maps-layout.js +57 -0
  378. package/dist/components/modal-container.d.ts +65 -65
  379. package/dist/components/modal-container.js +459 -0
  380. package/dist/components/modals/add-map-style-modal.d.ts +17 -17
  381. package/dist/components/modals/add-map-style-modal.js +250 -0
  382. package/dist/components/modals/cloud-tile.d.ts +15 -15
  383. package/dist/components/modals/cloud-tile.js +124 -0
  384. package/dist/components/modals/data-table-modal.d.ts +29 -29
  385. package/dist/components/modals/data-table-modal.js +223 -0
  386. package/dist/components/modals/delete-data-modal.d.ts +10 -10
  387. package/dist/components/modals/delete-data-modal.js +58 -0
  388. package/dist/components/modals/error-display.d.ts +6 -6
  389. package/dist/components/modals/error-display.js +44 -0
  390. package/dist/components/modals/export-data-modal.d.ts +25 -25
  391. package/dist/components/modals/export-data-modal.js +194 -0
  392. package/dist/components/modals/export-image-modal.d.ts +18 -18
  393. package/dist/components/modals/export-image-modal.js +139 -0
  394. package/dist/components/modals/export-map-modal/components.d.ts +8 -8
  395. package/dist/components/modals/export-map-modal/components.js +51 -0
  396. package/dist/components/modals/export-map-modal/export-html-map.d.ts +12 -12
  397. package/dist/components/modals/export-map-modal/export-html-map.js +140 -0
  398. package/dist/components/modals/export-map-modal/export-json-map.d.ts +9 -9
  399. package/dist/components/modals/export-map-modal/export-json-map.js +98 -0
  400. package/dist/components/modals/export-map-modal/export-map-modal.d.ts +27 -27
  401. package/dist/components/modals/export-map-modal/export-map-modal.js +101 -0
  402. package/dist/components/modals/image-modal-container.d.ts +18 -18
  403. package/dist/components/modals/image-modal-container.js +83 -0
  404. package/dist/components/modals/load-data-modal.d.ts +33 -33
  405. package/dist/components/modals/load-data-modal.js +93 -0
  406. package/dist/components/modals/load-storage-map.d.ts +26 -26
  407. package/dist/components/modals/load-storage-map.js +251 -0
  408. package/dist/components/modals/loading-dialog.d.ts +7 -7
  409. package/dist/components/modals/loading-dialog.js +54 -0
  410. package/dist/components/modals/modal-dialog.d.ts +2 -2
  411. package/dist/components/modals/modal-dialog.js +33 -0
  412. package/dist/components/modals/modal-tabs.d.ts +27 -27
  413. package/dist/components/modals/modal-tabs.js +99 -0
  414. package/dist/components/modals/overwrite-map-modal.d.ts +16 -16
  415. package/dist/components/modals/overwrite-map-modal.js +81 -0
  416. package/dist/components/modals/provider-modal-container.d.ts +23 -23
  417. package/dist/components/modals/provider-modal-container.js +79 -0
  418. package/dist/components/modals/save-map-modal.d.ts +29 -29
  419. package/dist/components/modals/save-map-modal.js +201 -0
  420. package/dist/components/modals/share-map-modal.d.ts +30 -30
  421. package/dist/components/modals/share-map-modal.js +188 -0
  422. package/dist/components/modals/status-panel.d.ts +13 -13
  423. package/dist/components/modals/status-panel.js +82 -0
  424. package/dist/components/modals/storage-map-viewer.d.ts +21 -21
  425. package/dist/components/modals/storage-map-viewer.js +115 -0
  426. package/dist/components/notification-panel/notification-item.d.ts +66 -66
  427. package/dist/components/notification-panel/notification-item.js +139 -0
  428. package/dist/components/notification-panel.d.ts +61 -61
  429. package/dist/components/notification-panel.js +74 -0
  430. package/dist/components/performance.d.ts +4 -4
  431. package/dist/components/performance.js +110 -0
  432. package/dist/components/plot-container.d.ts +24 -24
  433. package/dist/components/plot-container.js +240 -0
  434. package/dist/components/side-panel/cloud-storage-dropdown.d.ts +6 -6
  435. package/dist/components/side-panel/cloud-storage-dropdown.js +57 -0
  436. package/dist/components/side-panel/common/dataset-info.d.ts +3 -3
  437. package/dist/components/side-panel/common/dataset-info.js +50 -0
  438. package/dist/components/side-panel/common/dataset-tag.d.ts +3 -3
  439. package/dist/components/side-panel/common/dataset-tag.js +75 -0
  440. package/dist/components/side-panel/common/dataset-title.d.ts +8 -8
  441. package/dist/components/side-panel/common/dataset-title.js +185 -0
  442. package/dist/components/side-panel/common/source-data-catalog.d.ts +9 -9
  443. package/dist/components/side-panel/common/source-data-catalog.js +66 -0
  444. package/dist/components/side-panel/common/source-data-selector.d.ts +8 -8
  445. package/dist/components/side-panel/common/source-data-selector.js +119 -0
  446. package/dist/components/side-panel/common/types.d.ts +58 -58
  447. package/dist/components/side-panel/common/types.js +6 -0
  448. package/dist/components/side-panel/custom-panel.d.ts +9 -9
  449. package/dist/components/side-panel/custom-panel.js +56 -0
  450. package/dist/components/side-panel/filter-manager.d.ts +20 -20
  451. package/dist/components/side-panel/filter-manager.js +113 -0
  452. package/dist/components/side-panel/filter-panel/filter-panel-header.d.ts +21 -21
  453. package/dist/components/side-panel/filter-panel/filter-panel-header.js +67 -0
  454. package/dist/components/side-panel/filter-panel/filter-panel.d.ts +23 -23
  455. package/dist/components/side-panel/filter-panel/filter-panel.js +110 -0
  456. package/dist/components/side-panel/interaction-manager.d.ts +14 -14
  457. package/dist/components/side-panel/interaction-manager.js +51 -0
  458. package/dist/components/side-panel/interaction-panel/brush-config.d.ts +15 -15
  459. package/dist/components/side-panel/interaction-panel/brush-config.js +58 -0
  460. package/dist/components/side-panel/interaction-panel/interaction-panel.d.ts +19 -19
  461. package/dist/components/side-panel/interaction-panel/interaction-panel.js +137 -0
  462. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +28 -28
  463. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +204 -0
  464. package/dist/components/side-panel/interaction-panel/tooltip-config.d.ts +38 -38
  465. package/dist/components/side-panel/interaction-panel/tooltip-config.js +155 -0
  466. package/dist/components/side-panel/layer-manager.d.ts +46 -46
  467. package/dist/components/side-panel/layer-manager.js +185 -0
  468. package/dist/components/side-panel/layer-panel/add-layer-button.d.ts +10 -10
  469. package/dist/components/side-panel/layer-panel/add-layer-button.js +147 -0
  470. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.d.ts +8 -8
  471. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +38 -0
  472. package/dist/components/side-panel/layer-panel/color-palette.d.ts +13 -13
  473. package/dist/components/side-panel/layer-panel/color-palette.js +79 -0
  474. package/dist/components/side-panel/layer-panel/color-range-selector.d.ts +129 -129
  475. package/dist/components/side-panel/layer-panel/color-range-selector.js +329 -0
  476. package/dist/components/side-panel/layer-panel/color-selector.d.ts +101 -101
  477. package/dist/components/side-panel/layer-panel/color-selector.js +177 -0
  478. package/dist/components/side-panel/layer-panel/column-selector.d.ts +22 -22
  479. package/dist/components/side-panel/layer-panel/column-selector.js +66 -0
  480. package/dist/components/side-panel/layer-panel/custom-markers-config-group.d.ts +6 -6
  481. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +36 -0
  482. package/dist/components/side-panel/layer-panel/custom-palette.d.ts +38 -38
  483. package/dist/components/side-panel/layer-panel/custom-palette.js +278 -0
  484. package/dist/components/side-panel/layer-panel/custom-picker.d.ts +67 -67
  485. package/dist/components/side-panel/layer-panel/custom-picker.js +106 -0
  486. package/dist/components/side-panel/layer-panel/dataset-layer-group.d.ts +24 -24
  487. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +81 -0
  488. package/dist/components/side-panel/layer-panel/dataset-layer-section.d.ts +25 -25
  489. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +74 -0
  490. package/dist/components/side-panel/layer-panel/dataset-section.d.ts +26 -26
  491. package/dist/components/side-panel/layer-panel/dataset-section.js +91 -0
  492. package/dist/components/side-panel/layer-panel/dimension-scale-selector.d.ts +10 -10
  493. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +53 -0
  494. package/dist/components/side-panel/layer-panel/hex-column-config.d.ts +62 -62
  495. package/dist/components/side-panel/layer-panel/hex-column-config.js +74 -0
  496. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.d.ts +8 -8
  497. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +18 -0
  498. package/dist/components/side-panel/layer-panel/layer-column-config.d.ts +20 -20
  499. package/dist/components/side-panel/layer-panel/layer-column-config.js +86 -0
  500. package/dist/components/side-panel/layer-panel/layer-config-group.d.ts +37 -37
  501. package/dist/components/side-panel/layer-panel/layer-config-group.js +209 -0
  502. package/dist/components/side-panel/layer-panel/layer-configurator.d.ts +415 -415
  503. package/dist/components/side-panel/layer-panel/layer-configurator.js +977 -0
  504. package/dist/components/side-panel/layer-panel/layer-list.d.ts +20 -20
  505. package/dist/components/side-panel/layer-panel/layer-list.js +168 -0
  506. package/dist/components/side-panel/layer-panel/layer-panel-header.d.ts +43 -43
  507. package/dist/components/side-panel/layer-panel/layer-panel-header.js +194 -0
  508. package/dist/components/side-panel/layer-panel/layer-panel.d.ts +40 -40
  509. package/dist/components/side-panel/layer-panel/layer-panel.js +161 -0
  510. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.d.ts +17 -17
  511. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +95 -0
  512. package/dist/components/side-panel/layer-panel/layer-type-list-item.d.ts +11 -11
  513. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +75 -0
  514. package/dist/components/side-panel/layer-panel/layer-type-selector.d.ts +23 -23
  515. package/dist/components/side-panel/layer-panel/layer-type-selector.js +87 -0
  516. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.d.ts +23 -23
  517. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +106 -0
  518. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.d.ts +36 -36
  519. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +116 -0
  520. package/dist/components/side-panel/layer-panel/single-color-palette.d.ts +12 -12
  521. package/dist/components/side-panel/layer-panel/single-color-palette.js +68 -0
  522. package/dist/components/side-panel/layer-panel/text-label-panel.d.ts +18 -18
  523. package/dist/components/side-panel/layer-panel/text-label-panel.js +157 -0
  524. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.d.ts +35 -35
  525. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +148 -0
  526. package/dist/components/side-panel/layer-panel/vis-config-slider.d.ts +20 -20
  527. package/dist/components/side-panel/layer-panel/vis-config-slider.js +177 -0
  528. package/dist/components/side-panel/layer-panel/vis-config-switch.d.ts +16 -16
  529. package/dist/components/side-panel/layer-panel/vis-config-switch.js +73 -0
  530. package/dist/components/side-panel/map-manager.d.ts +21 -21
  531. package/dist/components/side-panel/map-manager.js +133 -0
  532. package/dist/components/side-panel/map-style-panel/map-layer-selector.d.ts +19 -19
  533. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +103 -0
  534. package/dist/components/side-panel/map-style-panel/map-style-selector.d.ts +16 -16
  535. package/dist/components/side-panel/map-style-panel/map-style-selector.js +80 -0
  536. package/dist/components/side-panel/panel-dropdown.d.ts +18 -18
  537. package/dist/components/side-panel/panel-dropdown.js +71 -0
  538. package/dist/components/side-panel/panel-header-action.d.ts +20 -20
  539. package/dist/components/side-panel/panel-header-action.js +103 -0
  540. package/dist/components/side-panel/panel-header.d.ts +78 -78
  541. package/dist/components/side-panel/panel-header.js +301 -0
  542. package/dist/components/side-panel/panel-tab.d.ts +20 -20
  543. package/dist/components/side-panel/panel-tab.js +72 -0
  544. package/dist/components/side-panel/panel-title.d.ts +4 -4
  545. package/dist/components/side-panel/panel-title.js +44 -0
  546. package/dist/components/side-panel/panel-toggle.d.ts +14 -14
  547. package/dist/components/side-panel/panel-toggle.js +65 -0
  548. package/dist/components/side-panel/side-bar.d.ts +76 -76
  549. package/dist/components/side-panel/side-bar.js +140 -0
  550. package/dist/components/side-panel.d.ts +134 -134
  551. package/dist/components/side-panel.js +235 -0
  552. package/dist/components/types.d.ts +44 -44
  553. package/dist/components/types.js +6 -0
  554. package/dist/connect/keplergl-connect.d.ts +5 -5
  555. package/dist/connect/keplergl-connect.js +59 -0
  556. package/dist/connect/with-local-selector.d.ts +6 -6
  557. package/dist/connect/with-local-selector.js +102 -0
  558. package/dist/constants/action-types.d.ts +111 -111
  559. package/dist/constants/action-types.js +184 -0
  560. package/dist/constants/color-palette.d.ts +491 -491
  561. package/dist/constants/color-palette.js +536 -0
  562. package/dist/constants/color-ranges.d.ts +24 -24
  563. package/dist/constants/color-ranges.js +83 -0
  564. package/dist/constants/custom-color-ranges.d.ts +37 -37
  565. package/dist/constants/custom-color-ranges.js +410 -0
  566. package/dist/constants/default-settings.d.ts +773 -773
  567. package/dist/constants/default-settings.js +832 -0
  568. package/dist/constants/index.d.ts +9 -9
  569. package/dist/constants/index.js +387 -0
  570. package/dist/constants/keyevent.d.ts +2 -2
  571. package/dist/constants/keyevent.js +43 -0
  572. package/dist/constants/tooltip.d.ts +165 -165
  573. package/dist/constants/tooltip.js +202 -0
  574. package/dist/constants/user-feedbacks.d.ts +5 -5
  575. package/dist/constants/user-feedbacks.js +32 -0
  576. package/dist/constants/user-guides.d.ts +9 -9
  577. package/dist/constants/user-guides.js +36 -0
  578. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.d.ts +13 -13
  579. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +92 -0
  580. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.d.ts +7 -7
  581. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +181 -0
  582. package/dist/deckgl-layers/3d-building-layer/types.d.ts +37 -0
  583. package/dist/deckgl-layers/3d-building-layer/types.js +6 -0
  584. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +312 -0
  585. package/dist/deckgl-layers/column-layer/enhanced-column-layer.d.ts +6 -6
  586. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +75 -0
  587. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +13 -13
  588. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +96 -0
  589. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.d.ts +13 -13
  590. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +96 -0
  591. package/dist/deckgl-layers/layer-utils/cluster-utils.js +107 -0
  592. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +91 -91
  593. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +585 -0
  594. package/dist/deckgl-layers/layer-utils/shader-utils.d.ts +1 -1
  595. package/dist/deckgl-layers/layer-utils/shader-utils.js +46 -0
  596. package/dist/deckgl-layers/line-layer/line-layer.d.ts +12 -12
  597. package/dist/deckgl-layers/line-layer/line-layer.js +106 -0
  598. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.d.ts +8 -8
  599. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +80 -0
  600. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.d.ts +18 -18
  601. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +123 -0
  602. package/dist/index.d.ts +11 -11
  603. package/dist/index.js +179 -0
  604. package/dist/layers/aggregation-layer.d.ts +70 -70
  605. package/dist/layers/aggregation-layer.js +392 -0
  606. package/dist/layers/arc-layer/arc-layer-icon.d.ts +16 -16
  607. package/dist/layers/arc-layer/arc-layer-icon.js +76 -0
  608. package/dist/layers/arc-layer/arc-layer.d.ts +143 -143
  609. package/dist/layers/arc-layer/arc-layer.js +252 -0
  610. package/dist/layers/base-layer.d.ts +436 -436
  611. package/dist/layers/base-layer.js +1703 -0
  612. package/dist/layers/cluster-layer/cluster-layer-icon.d.ts +16 -16
  613. package/dist/layers/cluster-layer/cluster-layer-icon.js +79 -0
  614. package/dist/layers/cluster-layer/cluster-layer.d.ts +39 -39
  615. package/dist/layers/cluster-layer/cluster-layer.js +139 -0
  616. package/dist/layers/default-layer-icon.d.ts +14 -14
  617. package/dist/layers/default-layer-icon.js +86 -0
  618. package/dist/layers/geojson-layer/geojson-layer-icon.d.ts +15 -15
  619. package/dist/layers/geojson-layer/geojson-layer-icon.js +90 -0
  620. package/dist/layers/geojson-layer/geojson-layer.d.ts +227 -230
  621. package/dist/layers/geojson-layer/geojson-layer.js +423 -0
  622. package/dist/layers/geojson-layer/geojson-utils.d.ts +44 -44
  623. package/dist/layers/geojson-layer/geojson-utils.js +184 -0
  624. package/dist/layers/grid-layer/grid-layer-icon.d.ts +15 -15
  625. package/dist/layers/grid-layer/grid-layer-icon.js +135 -0
  626. package/dist/layers/grid-layer/grid-layer.d.ts +74 -74
  627. package/dist/layers/grid-layer/grid-layer.js +104 -0
  628. package/dist/layers/grid-layer/grid-utils.d.ts +24 -24
  629. package/dist/layers/grid-layer/grid-utils.js +59 -0
  630. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.d.ts +16 -16
  631. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +70 -0
  632. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.d.ts +170 -170
  633. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +321 -0
  634. package/dist/layers/h3-hexagon-layer/h3-utils.d.ts +20 -20
  635. package/dist/layers/h3-hexagon-layer/h3-utils.js +86 -0
  636. package/dist/layers/heatmap-layer/heatmap-layer-icon.d.ts +15 -15
  637. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +87 -0
  638. package/dist/layers/heatmap-layer/heatmap-layer.d.ts +144 -144
  639. package/dist/layers/heatmap-layer/heatmap-layer.js +236 -0
  640. package/dist/layers/hexagon-layer/hexagon-layer-icon.d.ts +15 -15
  641. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +99 -0
  642. package/dist/layers/hexagon-layer/hexagon-layer.d.ts +78 -78
  643. package/dist/layers/hexagon-layer/hexagon-layer.js +108 -0
  644. package/dist/layers/hexagon-layer/hexagon-utils.d.ts +7 -7
  645. package/dist/layers/hexagon-layer/hexagon-utils.js +62 -0
  646. package/dist/layers/icon-layer/icon-info-modal.d.ts +3 -3
  647. package/dist/layers/icon-layer/icon-info-modal.js +115 -0
  648. package/dist/layers/icon-layer/icon-layer-icon.d.ts +15 -15
  649. package/dist/layers/icon-layer/icon-layer-icon.js +72 -0
  650. package/dist/layers/icon-layer/icon-layer.d.ts +119 -119
  651. package/dist/layers/icon-layer/icon-layer.js +366 -0
  652. package/dist/layers/index.d.ts +53 -53
  653. package/dist/layers/index.js +105 -0
  654. package/dist/layers/layer-factory.d.ts +150 -150
  655. package/dist/layers/layer-factory.js +517 -0
  656. package/dist/layers/layer-text-label.d.ts +7 -7
  657. package/dist/layers/layer-text-label.js +60 -0
  658. package/dist/layers/layer-update.d.ts +9 -9
  659. package/dist/layers/layer-update.js +73 -0
  660. package/dist/layers/line-layer/line-layer-icon.d.ts +15 -15
  661. package/dist/layers/line-layer/line-layer-icon.js +78 -0
  662. package/dist/layers/line-layer/line-layer.d.ts +136 -136
  663. package/dist/layers/line-layer/line-layer.js +191 -0
  664. package/dist/layers/mapbox-utils.d.ts +57 -57
  665. package/dist/layers/mapbox-utils.js +186 -0
  666. package/dist/layers/mapboxgl-layer.d.ts +87 -87
  667. package/dist/layers/mapboxgl-layer.js +201 -0
  668. package/dist/layers/point-layer/point-layer-icon.d.ts +15 -15
  669. package/dist/layers/point-layer/point-layer-icon.js +93 -0
  670. package/dist/layers/point-layer/point-layer.d.ts +272 -272
  671. package/dist/layers/point-layer/point-layer.js +457 -0
  672. package/dist/layers/s2-geometry-layer/s2-geometry-layer.d.ts +189 -189
  673. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +306 -0
  674. package/dist/layers/s2-geometry-layer/s2-layer-icon.d.ts +15 -15
  675. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +69 -0
  676. package/dist/layers/s2-geometry-layer/s2-utils.d.ts +7 -7
  677. package/dist/layers/s2-geometry-layer/s2-utils.js +51 -0
  678. package/dist/layers/scenegraph-layer/scenegraph-info-modal.d.ts +3 -3
  679. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +54 -0
  680. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.d.ts +15 -15
  681. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +150 -0
  682. package/dist/layers/scenegraph-layer/scenegraph-layer.d.ts +80 -80
  683. package/dist/layers/scenegraph-layer/scenegraph-layer.js +230 -0
  684. package/dist/layers/trip-layer/trip-info-modal.d.ts +3 -3
  685. package/dist/layers/trip-layer/trip-info-modal.js +59 -0
  686. package/dist/layers/trip-layer/trip-layer-icon.d.ts +15 -15
  687. package/dist/layers/trip-layer/trip-layer-icon.js +88 -0
  688. package/dist/layers/trip-layer/trip-layer.d.ts +157 -157
  689. package/dist/layers/trip-layer/trip-layer.js +369 -0
  690. package/dist/layers/trip-layer/trip-utils.d.ts +31 -31
  691. package/dist/layers/trip-layer/trip-utils.js +180 -0
  692. package/dist/layers/types.d.ts +15 -15
  693. package/dist/layers/types.js +44 -0
  694. package/dist/localization/formatted-message.d.ts +12 -12
  695. package/dist/localization/formatted-message.js +39 -0
  696. package/dist/localization/index.d.ts +5 -5
  697. package/dist/localization/index.js +54 -0
  698. package/dist/localization/locales.d.ts +27 -27
  699. package/dist/localization/locales.js +59 -0
  700. package/dist/localization/messages.d.ts +4 -4
  701. package/dist/localization/messages.js +37 -0
  702. package/dist/localization/translations/ca.d.ts +438 -438
  703. package/dist/localization/translations/ca.js +466 -0
  704. package/dist/localization/translations/cn.d.ts +441 -441
  705. package/dist/localization/translations/cn.js +469 -0
  706. package/dist/localization/translations/en.d.ts +466 -466
  707. package/dist/localization/translations/en.js +494 -0
  708. package/dist/localization/translations/es.d.ts +438 -438
  709. package/dist/localization/translations/es.js +466 -0
  710. package/dist/localization/translations/fi.d.ts +410 -410
  711. package/dist/localization/translations/fi.js +438 -0
  712. package/dist/localization/translations/ja.d.ts +439 -439
  713. package/dist/localization/translations/ja.js +467 -0
  714. package/dist/localization/translations/pt.d.ts +410 -410
  715. package/dist/localization/translations/pt.js +438 -0
  716. package/dist/localization/translations/ru.d.ts +447 -447
  717. package/dist/localization/translations/ru.js +475 -0
  718. package/dist/middleware/index.d.ts +8 -8
  719. package/dist/middleware/index.js +44 -0
  720. package/dist/processors/data-processor.d.ts +242 -242
  721. package/dist/processors/data-processor.js +721 -0
  722. package/dist/processors/file-handler.d.ts +28 -28
  723. package/dist/processors/file-handler.js +357 -0
  724. package/dist/processors/index.d.ts +3 -3
  725. package/dist/processors/index.js +39 -0
  726. package/dist/processors/types.d.ts +21 -21
  727. package/dist/processors/types.js +6 -0
  728. package/dist/reducers/combined-updaters.d.ts +52 -52
  729. package/dist/reducers/combined-updaters.js +180 -0
  730. package/dist/reducers/composer-helpers.d.ts +21 -21
  731. package/dist/reducers/composer-helpers.js +111 -0
  732. package/dist/reducers/composers.d.ts +12 -12
  733. package/dist/reducers/composers.js +40 -0
  734. package/dist/reducers/core.d.ts +65 -65
  735. package/dist/reducers/core.js +119 -0
  736. package/dist/reducers/index.d.ts +19 -19
  737. package/dist/reducers/index.js +137 -0
  738. package/dist/reducers/map-state-updaters.d.ts +96 -96
  739. package/dist/reducers/map-state-updaters.js +220 -0
  740. package/dist/reducers/map-state.d.ts +4 -4
  741. package/dist/reducers/map-state.js +52 -0
  742. package/dist/reducers/map-style-updaters.d.ts +204 -204
  743. package/dist/reducers/map-style-updaters.js +473 -0
  744. package/dist/reducers/map-style.d.ts +16 -16
  745. package/dist/reducers/map-style.js +51 -0
  746. package/dist/reducers/provider-state-updaters.d.ts +41 -41
  747. package/dist/reducers/provider-state-updaters.js +421 -0
  748. package/dist/reducers/provider-state.d.ts +4 -4
  749. package/dist/reducers/provider-state.js +53 -0
  750. package/dist/reducers/root.d.ts +24 -24
  751. package/dist/reducers/root.js +212 -0
  752. package/dist/reducers/types.d.ts +16 -16
  753. package/dist/reducers/types.js +6 -0
  754. package/dist/reducers/ui-state-updaters.d.ts +433 -433
  755. package/dist/reducers/ui-state-updaters.js +744 -0
  756. package/dist/reducers/ui-state.d.ts +3 -3
  757. package/dist/reducers/ui-state.js +54 -0
  758. package/dist/reducers/vis-state-merger.d.ts +110 -110
  759. package/dist/reducers/vis-state-merger.js +569 -0
  760. package/dist/reducers/vis-state-selectors.d.ts +10 -10
  761. package/dist/reducers/vis-state-selectors.js +47 -0
  762. package/dist/reducers/vis-state-updaters.d.ts +645 -645
  763. package/dist/reducers/vis-state-updaters.js +2102 -0
  764. package/dist/reducers/vis-state.d.ts +4 -4
  765. package/dist/reducers/vis-state.js +53 -0
  766. package/dist/schemas/dataset-schema.d.ts +17 -17
  767. package/dist/schemas/dataset-schema.js +166 -0
  768. package/dist/schemas/index.d.ts +8 -8
  769. package/dist/schemas/index.js +125 -0
  770. package/dist/schemas/map-state-schema.d.ts +23 -23
  771. package/dist/schemas/map-state-schema.js +53 -0
  772. package/dist/schemas/map-style-schema.d.ts +38 -38
  773. package/dist/schemas/map-style-schema.js +106 -0
  774. package/dist/schemas/schema-manager.d.ts +271 -271
  775. package/dist/schemas/schema-manager.js +246 -0
  776. package/dist/schemas/schema-utils.d.ts +11 -11
  777. package/dist/schemas/schema-utils.js +58 -0
  778. package/dist/schemas/schema.d.ts +37 -37
  779. package/dist/schemas/schema.js +119 -0
  780. package/dist/schemas/versions.d.ts +5 -5
  781. package/dist/schemas/versions.js +34 -0
  782. package/dist/schemas/vis-state-schema.d.ts +214 -214
  783. package/dist/schemas/vis-state-schema.js +886 -0
  784. package/dist/styles/base.d.ts +1530 -1530
  785. package/dist/styles/base.js +1301 -0
  786. package/dist/styles/index.d.ts +2 -2
  787. package/dist/styles/index.js +28 -0
  788. package/dist/styles/media-breakpoints.d.ts +13 -13
  789. package/dist/styles/media-breakpoints.js +70 -0
  790. package/dist/tasks/tasks.d.ts +15 -15
  791. package/dist/tasks/tasks.js +94 -0
  792. package/dist/templates/export-map-html.d.ts +9 -9
  793. package/dist/templates/export-map-html.js +42 -0
  794. package/dist/utils/aggregate-utils.d.ts +3 -3
  795. package/dist/utils/aggregate-utils.js +71 -0
  796. package/dist/utils/color-utils.d.ts +44 -44
  797. package/dist/utils/color-utils.js +144 -0
  798. package/dist/utils/custom-scales.js +22 -0
  799. package/dist/utils/data-scale-utils.d.ts +23 -23
  800. package/dist/utils/data-scale-utils.js +70 -0
  801. package/dist/utils/data-utils.d.ts +115 -115
  802. package/dist/utils/data-utils.js +441 -0
  803. package/dist/utils/dataset-utils.d.ts +38 -38
  804. package/dist/utils/dataset-utils.js +236 -0
  805. package/dist/utils/dom-to-image.d.ts +73 -73
  806. package/dist/utils/dom-to-image.js +479 -0
  807. package/dist/utils/dom-utils.d.ts +20 -20
  808. package/dist/utils/dom-utils.js +343 -0
  809. package/dist/utils/export-utils.d.ts +56 -56
  810. package/dist/utils/export-utils.js +266 -0
  811. package/dist/utils/filter-utils.d.ts +267 -267
  812. package/dist/utils/filter-utils.js +1081 -0
  813. package/dist/utils/gl-utils.d.ts +1 -1
  814. package/dist/utils/gl-utils.js +43 -0
  815. package/dist/utils/gpu-filter-utils.d.ts +28 -28
  816. package/dist/utils/gpu-filter-utils.js +241 -0
  817. package/dist/utils/index.d.ts +22 -22
  818. package/dist/utils/index.js +361 -0
  819. package/dist/utils/interaction-utils.d.ts +36 -36
  820. package/dist/utils/interaction-utils.js +170 -0
  821. package/dist/utils/layer-utils.d.ts +54 -54
  822. package/dist/utils/layer-utils.js +200 -0
  823. package/dist/utils/locale-utils.d.ts +2 -2
  824. package/dist/utils/locale-utils.js +56 -0
  825. package/dist/utils/map-info-utils.d.ts +1 -1
  826. package/dist/utils/map-info-utils.js +31 -0
  827. package/dist/utils/map-style-utils/mapbox-gl-style-editor.d.ts +64 -64
  828. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +213 -0
  829. package/dist/utils/map-style-utils/mapbox-utils.d.ts +3 -3
  830. package/dist/utils/map-style-utils/mapbox-utils.js +33 -0
  831. package/dist/utils/mapbox-utils.d.ts +7 -7
  832. package/dist/utils/mapbox-utils.js +36 -0
  833. package/dist/utils/notifications-utils.d.ts +54 -54
  834. package/dist/utils/notifications-utils.js +90 -0
  835. package/dist/utils/observe-dimensions.d.ts +15 -15
  836. package/dist/utils/observe-dimensions.js +142 -0
  837. package/dist/utils/projection-utils.d.ts +12 -12
  838. package/dist/utils/projection-utils.js +72 -0
  839. package/dist/utils/searcher-utils.d.ts +1 -1
  840. package/dist/utils/searcher-utils.js +42 -0
  841. package/dist/utils/split-map-utils.d.ts +29 -29
  842. package/dist/utils/split-map-utils.js +112 -0
  843. package/dist/utils/table-utils/data-container-interface.d.ts +115 -115
  844. package/dist/utils/table-utils/data-container-interface.js +6 -0
  845. package/dist/utils/table-utils/data-container-utils.d.ts +29 -29
  846. package/dist/utils/table-utils/data-container-utils.js +84 -0
  847. package/dist/utils/table-utils/data-row.d.ts +59 -59
  848. package/dist/utils/table-utils/data-row.js +124 -0
  849. package/dist/utils/table-utils/index.d.ts +1 -1
  850. package/dist/utils/table-utils/index.js +19 -0
  851. package/dist/utils/table-utils/indexed-data-container.d.ts +34 -34
  852. package/dist/utils/table-utils/indexed-data-container.js +228 -0
  853. package/dist/utils/table-utils/kepler-table.d.ts +168 -168
  854. package/dist/utils/table-utils/kepler-table.js +554 -0
  855. package/dist/utils/table-utils/row-data-container.d.ts +31 -31
  856. package/dist/utils/table-utils/row-data-container.js +220 -0
  857. package/dist/utils/utils.d.ts +98 -98
  858. package/dist/utils/utils.js +240 -0
  859. package/package.json +51 -33
  860. package/src/components/common/portaled.tsx +5 -9
  861. package/src/constants/action-types.ts +1 -1
  862. package/src/index.ts +1 -1
  863. package/src/middleware/index.ts +1 -1
  864. package/src/reducers/map-style-updaters.ts +1 -1
  865. package/src/reducers/provider-state-updaters.ts +1 -1
  866. package/src/reducers/root.ts +1 -1
  867. package/src/reducers/vis-state-updaters.ts +1 -1
  868. package/src/schemas/schema.ts +1 -1
  869. package/src/tasks/tasks.ts +1 -1
  870. package/dist/bundle.js +0 -54227
  871. package/dist/bundle.js.map +0 -1
  872. package/dist/deckgl-layers/layer-utils/cluster-utils.d.ts +0 -12
@@ -0,0 +1,886 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.visStateSchemaV1 = exports.visStateSchemaV0 = exports.visStateSchema = exports.propertiesV1 = exports.propertiesV0 = exports.layerPropsV1 = exports.layerPropsV0 = exports.filterPropsV1 = exports.filterPropsV0 = exports.dimensionPropsV0 = exports["default"] = exports.SplitMapsSchema = exports.LayerSchemaV0 = exports.InteractionSchemaV1 = exports.FilterSchemaV0 = exports.DimensionFieldSchema = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _lodash = _interopRequireDefault(require("lodash.pick"));
17
+ var _versions = require("./versions");
18
+ var _filterUtils = require("../utils/filter-utils");
19
+ var _layerFactory = require("../layers/layer-factory");
20
+ var _schema = _interopRequireDefault(require("./schema"));
21
+ var _lodash2 = _interopRequireDefault(require("lodash.clonedeep"));
22
+ var _dataUtils = require("../utils/data-utils");
23
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
26
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // Copyright (c) 2022 Uber Technologies, Inc.
27
+ //
28
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
29
+ // of this software and associated documentation files (the "Software"), to deal
30
+ // in the Software without restriction, including without limitation the rights
31
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
32
+ // copies of the Software, and to permit persons to whom the Software is
33
+ // furnished to do so, subject to the following conditions:
34
+ //
35
+ // The above copyright notice and this permission notice shall be included in
36
+ // all copies or substantial portions of the Software.
37
+ //
38
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
40
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
42
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
43
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
44
+ // THE SOFTWARE.
45
+ /**
46
+ * V0 Schema
47
+ */
48
+
49
+ var dimensionPropsV0 = exports.dimensionPropsV0 = ['name', 'type'];
50
+ // in v0 geojson there is only sizeField
51
+
52
+ // in v1 geojson
53
+ // stroke base on -> sizeField
54
+ // height based on -> heightField
55
+ // radius based on -> radiusField
56
+ // here we make our wiredst guess on which channel sizeField belongs to
57
+ function geojsonSizeFieldV0ToV1(config) {
58
+ var defaultRaiuds = 10;
59
+ var defaultRadiusRange = [0, 50];
60
+
61
+ // if extruded, sizeField is most likely used for height
62
+ if (config.visConfig.extruded) {
63
+ return 'heightField';
64
+ }
65
+
66
+ // if show stroke enabled, sizeField is most likely used for stroke
67
+ if (config.visConfig.stroked) {
68
+ return 'sizeField';
69
+ }
70
+
71
+ // if radius changed, or radius Range Changed, sizeField is most likely used for radius
72
+ // this is the most unreliable guess, that's why we put it in the end
73
+ if (config.visConfig.radius !== defaultRaiuds || config.visConfig.radiusRange.some(function (d, i) {
74
+ return d !== defaultRadiusRange[i];
75
+ })) {
76
+ return 'radiusField';
77
+ }
78
+ return 'sizeField';
79
+ }
80
+
81
+ // convert v0 to v1 layer config
82
+ var DimensionFieldSchemaV0 = /*#__PURE__*/function (_Schema) {
83
+ function DimensionFieldSchemaV0() {
84
+ var _this;
85
+ (0, _classCallCheck2["default"])(this, DimensionFieldSchemaV0);
86
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
87
+ args[_key] = arguments[_key];
88
+ }
89
+ _this = _callSuper(this, DimensionFieldSchemaV0, [].concat(args));
90
+ (0, _defineProperty2["default"])(_this, "version", _versions.VERSIONS.v0);
91
+ return _this;
92
+ }
93
+ (0, _inherits2["default"])(DimensionFieldSchemaV0, _Schema);
94
+ return (0, _createClass2["default"])(DimensionFieldSchemaV0, [{
95
+ key: "save",
96
+ value: function save(field) {
97
+ // should not be called anymore
98
+ return (0, _defineProperty2["default"])({}, this.key, field !== null ? this.savePropertiesOrApplySchema(field)[this.key] : null);
99
+ }
100
+ }, {
101
+ key: "load",
102
+ value: function load(field, parents, accumulated) {
103
+ var _parents$slice = parents.slice(-1),
104
+ _parents$slice2 = (0, _slicedToArray2["default"])(_parents$slice, 1),
105
+ config = _parents$slice2[0];
106
+ var fieldName = this.key;
107
+ if (config.type === 'geojson' && this.key === 'sizeField' && field) {
108
+ fieldName = geojsonSizeFieldV0ToV1(config);
109
+ }
110
+ // fold into visualChannels to be load by VisualChannelSchemaV1
111
+ return {
112
+ visualChannels: _objectSpread(_objectSpread({}, accumulated.visualChannels || {}), {}, (0, _defineProperty2["default"])({}, fieldName, field))
113
+ };
114
+ }
115
+ }]);
116
+ }(_schema["default"]);
117
+ var DimensionScaleSchemaV0 = /*#__PURE__*/function (_Schema2) {
118
+ function DimensionScaleSchemaV0() {
119
+ var _this2;
120
+ (0, _classCallCheck2["default"])(this, DimensionScaleSchemaV0);
121
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
122
+ args[_key2] = arguments[_key2];
123
+ }
124
+ _this2 = _callSuper(this, DimensionScaleSchemaV0, [].concat(args));
125
+ (0, _defineProperty2["default"])(_this2, "version", _versions.VERSIONS.v0);
126
+ return _this2;
127
+ }
128
+ (0, _inherits2["default"])(DimensionScaleSchemaV0, _Schema2);
129
+ return (0, _createClass2["default"])(DimensionScaleSchemaV0, [{
130
+ key: "save",
131
+ value: function save(scale) {
132
+ return (0, _defineProperty2["default"])({}, this.key, scale);
133
+ }
134
+ }, {
135
+ key: "load",
136
+ value: function load(scale, parents, accumulated) {
137
+ var _parents$slice3 = parents.slice(-1),
138
+ _parents$slice4 = (0, _slicedToArray2["default"])(_parents$slice3, 1),
139
+ config = _parents$slice4[0];
140
+ // fold into visualChannels to be load by VisualChannelSchemaV1
141
+ if (this.key === 'sizeScale' && config.type === 'geojson') {
142
+ // sizeScale now split into radiusScale, heightScale
143
+ // no user customization, just use default
144
+ return {};
145
+ }
146
+ return {
147
+ visualChannels: _objectSpread(_objectSpread({}, accumulated.visualChannels || {}), {}, (0, _defineProperty2["default"])({}, this.key, scale))
148
+ };
149
+ }
150
+ }]);
151
+ }(_schema["default"]); // used to convert v0 to v1 layer config
152
+ var LayerConfigSchemaV0 = /*#__PURE__*/function (_Schema3) {
153
+ function LayerConfigSchemaV0() {
154
+ var _this3;
155
+ (0, _classCallCheck2["default"])(this, LayerConfigSchemaV0);
156
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
157
+ args[_key3] = arguments[_key3];
158
+ }
159
+ _this3 = _callSuper(this, LayerConfigSchemaV0, [].concat(args));
160
+ (0, _defineProperty2["default"])(_this3, "version", _versions.VERSIONS.v0);
161
+ return _this3;
162
+ }
163
+ (0, _inherits2["default"])(LayerConfigSchemaV0, _Schema3);
164
+ return (0, _createClass2["default"])(LayerConfigSchemaV0, [{
165
+ key: "load",
166
+ value: function load(saved, parents, accumulated) {
167
+ // fold v0 layer property into config.key
168
+ return {
169
+ config: _objectSpread(_objectSpread({}, accumulated.config || {}), {}, (0, _defineProperty2["default"])({}, this.key, saved))
170
+ };
171
+ }
172
+ }]);
173
+ }(_schema["default"]); // used to convert v0 to v1 layer columns
174
+ // only return column value for each column
175
+ var LayerColumnsSchemaV0 = /*#__PURE__*/function (_Schema4) {
176
+ function LayerColumnsSchemaV0() {
177
+ var _this4;
178
+ (0, _classCallCheck2["default"])(this, LayerColumnsSchemaV0);
179
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
180
+ args[_key4] = arguments[_key4];
181
+ }
182
+ _this4 = _callSuper(this, LayerColumnsSchemaV0, [].concat(args));
183
+ (0, _defineProperty2["default"])(_this4, "version", _versions.VERSIONS.v0);
184
+ return _this4;
185
+ }
186
+ (0, _inherits2["default"])(LayerColumnsSchemaV0, _Schema4);
187
+ return (0, _createClass2["default"])(LayerColumnsSchemaV0, [{
188
+ key: "load",
189
+ value: function load(saved, parents, accumulated) {
190
+ // fold v0 layer property into config.key, flatten columns
191
+ return {
192
+ config: _objectSpread(_objectSpread({}, accumulated.config || {}), {}, {
193
+ columns: Object.keys(saved).reduce(function (accu, key) {
194
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, saved[key].value));
195
+ }, {})
196
+ })
197
+ };
198
+ }
199
+ }]);
200
+ }(_schema["default"]); // used to convert v0 to v1 layer config.visConfig
201
+ var LayerConfigToVisConfigSchemaV0 = /*#__PURE__*/function (_Schema5) {
202
+ function LayerConfigToVisConfigSchemaV0() {
203
+ var _this5;
204
+ (0, _classCallCheck2["default"])(this, LayerConfigToVisConfigSchemaV0);
205
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
206
+ args[_key5] = arguments[_key5];
207
+ }
208
+ _this5 = _callSuper(this, LayerConfigToVisConfigSchemaV0, [].concat(args));
209
+ (0, _defineProperty2["default"])(_this5, "version", _versions.VERSIONS.v0);
210
+ return _this5;
211
+ }
212
+ (0, _inherits2["default"])(LayerConfigToVisConfigSchemaV0, _Schema5);
213
+ return (0, _createClass2["default"])(LayerConfigToVisConfigSchemaV0, [{
214
+ key: "load",
215
+ value: function load(saved, parents, accumulated) {
216
+ // fold v0 layer property into config.visConfig
217
+ var accumulatedConfig = accumulated.config || {};
218
+ return {
219
+ config: _objectSpread(_objectSpread({}, accumulatedConfig), {}, {
220
+ visConfig: _objectSpread(_objectSpread({}, accumulatedConfig.visConfig || {}), {}, (0, _defineProperty2["default"])({}, this.key, saved))
221
+ })
222
+ };
223
+ }
224
+ }]);
225
+ }(_schema["default"]);
226
+ var LayerVisConfigSchemaV0 = /*#__PURE__*/function (_Schema6) {
227
+ function LayerVisConfigSchemaV0() {
228
+ var _this6;
229
+ (0, _classCallCheck2["default"])(this, LayerVisConfigSchemaV0);
230
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
231
+ args[_key6] = arguments[_key6];
232
+ }
233
+ _this6 = _callSuper(this, LayerVisConfigSchemaV0, [].concat(args));
234
+ (0, _defineProperty2["default"])(_this6, "version", _versions.VERSIONS.v0);
235
+ (0, _defineProperty2["default"])(_this6, "key", 'visConfig');
236
+ return _this6;
237
+ }
238
+ (0, _inherits2["default"])(LayerVisConfigSchemaV0, _Schema6);
239
+ return (0, _createClass2["default"])(LayerVisConfigSchemaV0, [{
240
+ key: "load",
241
+ value: function load(visConfig, parents, accumulator) {
242
+ var _parents$slice5 = parents.slice(-1),
243
+ _parents$slice6 = (0, _slicedToArray2["default"])(_parents$slice5, 1),
244
+ config = _parents$slice6[0];
245
+ var rename = {
246
+ geojson: {
247
+ extruded: 'enable3d',
248
+ elevationRange: 'heightRange'
249
+ }
250
+ };
251
+ if (config.type in rename) {
252
+ var propToRename = rename[config.type];
253
+ return {
254
+ config: _objectSpread(_objectSpread({}, accumulator.config || {}), {}, {
255
+ visConfig: Object.keys(visConfig).reduce(function (accu, key) {
256
+ return _objectSpread(_objectSpread({}, accu), propToRename[key] ? (0, _defineProperty2["default"])({}, propToRename[key], visConfig[key]) : (0, _defineProperty2["default"])({}, key, visConfig[key]));
257
+ }, {})
258
+ })
259
+ };
260
+ }
261
+ return {
262
+ config: _objectSpread(_objectSpread({}, accumulator.config || {}), {}, {
263
+ visConfig: visConfig
264
+ })
265
+ };
266
+ }
267
+ }]);
268
+ }(_schema["default"]);
269
+ var LayerConfigSchemaDeleteV0 = /*#__PURE__*/function (_Schema7) {
270
+ function LayerConfigSchemaDeleteV0() {
271
+ var _this7;
272
+ (0, _classCallCheck2["default"])(this, LayerConfigSchemaDeleteV0);
273
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
274
+ args[_key7] = arguments[_key7];
275
+ }
276
+ _this7 = _callSuper(this, LayerConfigSchemaDeleteV0, [].concat(args));
277
+ (0, _defineProperty2["default"])(_this7, "version", _versions.VERSIONS.v0);
278
+ return _this7;
279
+ }
280
+ (0, _inherits2["default"])(LayerConfigSchemaDeleteV0, _Schema7);
281
+ return (0, _createClass2["default"])(LayerConfigSchemaDeleteV0, [{
282
+ key: "load",
283
+ value: function load(value) {
284
+ return {};
285
+ }
286
+ }]);
287
+ }(_schema["default"]);
288
+ /**
289
+ * V0 -> V1 Changes
290
+ * - layer is now a class
291
+ * - config saved in a config object
292
+ * - id, type, isAggregated is outside layer.config
293
+ * - visualChannels is outside config, it defines available visual channel and
294
+ * property names for field, scale, domain and range of each visual chanel.
295
+ * - enable3d, colorAggregation and sizeAggregation are moved into visConfig
296
+ * - GeojsonLayer - added height, radius specific properties
297
+ */
298
+ var layerPropsV0 = exports.layerPropsV0 = {
299
+ id: null,
300
+ type: null,
301
+ // move into layer.config
302
+ dataId: new LayerConfigSchemaV0({
303
+ key: 'dataId'
304
+ }),
305
+ label: new LayerConfigSchemaV0({
306
+ key: 'label'
307
+ }),
308
+ color: new LayerConfigSchemaV0({
309
+ key: 'color'
310
+ }),
311
+ isVisible: new LayerConfigSchemaV0({
312
+ key: 'isVisible'
313
+ }),
314
+ hidden: new LayerConfigSchemaV0({
315
+ key: 'hidden'
316
+ }),
317
+ visibilityByZoom: new LayerConfigSchemaV0({
318
+ key: 'visibilityByZoom'
319
+ }),
320
+ // convert visConfig
321
+ visConfig: new LayerVisConfigSchemaV0({
322
+ key: 'visConfig'
323
+ }),
324
+ // move into layer.config
325
+ // flatten
326
+ columns: new LayerColumnsSchemaV0(),
327
+ // save into visualChannels
328
+ colorField: new DimensionFieldSchemaV0({
329
+ properties: dimensionPropsV0,
330
+ key: 'colorField'
331
+ }),
332
+ colorScale: new DimensionScaleSchemaV0({
333
+ key: 'colorScale'
334
+ }),
335
+ sizeField: new DimensionFieldSchemaV0({
336
+ properties: dimensionPropsV0,
337
+ key: 'sizeField'
338
+ }),
339
+ sizeScale: new DimensionScaleSchemaV0({
340
+ key: 'sizeScale'
341
+ }),
342
+ // move into config.visConfig
343
+ enable3d: new LayerConfigToVisConfigSchemaV0({
344
+ key: 'enable3d'
345
+ }),
346
+ colorAggregation: new LayerConfigToVisConfigSchemaV0({
347
+ key: 'colorAggregation'
348
+ }),
349
+ sizeAggregation: new LayerConfigToVisConfigSchemaV0({
350
+ key: 'sizeAggregation'
351
+ }),
352
+ // delete
353
+ isAggregated: new LayerConfigSchemaDeleteV0()
354
+ };
355
+
356
+ /**
357
+ * V1 Schema
358
+ */
359
+ var ColumnSchemaV1 = /*#__PURE__*/function (_Schema8) {
360
+ function ColumnSchemaV1() {
361
+ (0, _classCallCheck2["default"])(this, ColumnSchemaV1);
362
+ return _callSuper(this, ColumnSchemaV1, arguments);
363
+ }
364
+ (0, _inherits2["default"])(ColumnSchemaV1, _Schema8);
365
+ return (0, _createClass2["default"])(ColumnSchemaV1, [{
366
+ key: "save",
367
+ value: function save(columns, state) {
368
+ // starting from v1, only save column value
369
+ // fieldIdx will be calculated during merge
370
+ return (0, _defineProperty2["default"])({}, this.key, Object.keys(columns).reduce(function (accu, ckey) {
371
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, ckey, columns[ckey].value));
372
+ }, {}));
373
+ }
374
+ }, {
375
+ key: "load",
376
+ value: function load(columns) {
377
+ return {
378
+ columns: columns
379
+ };
380
+ }
381
+ }]);
382
+ }(_schema["default"]);
383
+ var TextLabelSchemaV1 = /*#__PURE__*/function (_Schema9) {
384
+ function TextLabelSchemaV1() {
385
+ (0, _classCallCheck2["default"])(this, TextLabelSchemaV1);
386
+ return _callSuper(this, TextLabelSchemaV1, arguments);
387
+ }
388
+ (0, _inherits2["default"])(TextLabelSchemaV1, _Schema9);
389
+ return (0, _createClass2["default"])(TextLabelSchemaV1, [{
390
+ key: "save",
391
+ value: function save(textLabel) {
392
+ return (0, _defineProperty2["default"])({}, this.key, textLabel.map(function (tl) {
393
+ return _objectSpread(_objectSpread({}, tl), {}, {
394
+ field: tl.field ? (0, _lodash["default"])(tl.field, ['name', 'type']) : null
395
+ });
396
+ }));
397
+ }
398
+ }, {
399
+ key: "load",
400
+ value: function load(textLabel) {
401
+ return {
402
+ textLabel: Array.isArray(textLabel) ? textLabel : [textLabel]
403
+ };
404
+ }
405
+ }]);
406
+ }(_schema["default"]);
407
+ var visualChannelModificationV1 = {
408
+ geojson: function geojson(vc, parents, accumulator) {
409
+ var _parents$slice7 = parents.slice(-1),
410
+ _parents$slice8 = (0, _slicedToArray2["default"])(_parents$slice7, 1),
411
+ layer = _parents$slice8[0];
412
+ var isOld = !vc.hasOwnProperty('strokeColorField');
413
+ // make our best guess if this geojson layer contains point
414
+ var isPoint = vc.radiusField || layer.config.visConfig.radius !== _layerFactory.LAYER_VIS_CONFIGS.radius.defaultValue;
415
+ if (isOld && !isPoint && layer.config.visConfig.stroked) {
416
+ // if stroked is true, copy color config to stroke color config
417
+ return {
418
+ strokeColorField: vc.colorField,
419
+ strokeColorScale: vc.colorScale
420
+ };
421
+ }
422
+ return {};
423
+ }
424
+ };
425
+ /**
426
+ * V1: save [field]: {name, type}, [scale]: '' for each channel
427
+ */
428
+ var VisualChannelSchemaV1 = /*#__PURE__*/function (_Schema10) {
429
+ function VisualChannelSchemaV1() {
430
+ (0, _classCallCheck2["default"])(this, VisualChannelSchemaV1);
431
+ return _callSuper(this, VisualChannelSchemaV1, arguments);
432
+ }
433
+ (0, _inherits2["default"])(VisualChannelSchemaV1, _Schema10);
434
+ return (0, _createClass2["default"])(VisualChannelSchemaV1, [{
435
+ key: "save",
436
+ value: function save(visualChannels, parents) {
437
+ // only save field and scale of each channel
438
+ var _parents$slice9 = parents.slice(-1),
439
+ _parents$slice10 = (0, _slicedToArray2["default"])(_parents$slice9, 1),
440
+ layer = _parents$slice10[0];
441
+ return (0, _defineProperty2["default"])({}, this.key, Object.keys(visualChannels).reduce(
442
+ // save channel to null if didn't select any field
443
+ function (accu, key) {
444
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, visualChannels[key].field, layer.config[visualChannels[key].field] ? (0, _lodash["default"])(layer.config[visualChannels[key].field], ['name', 'type', 'colorColumn']) : null), visualChannels[key].scale, layer.config[visualChannels[key].scale]));
445
+ }, {}));
446
+ }
447
+ }, {
448
+ key: "load",
449
+ value: function load(vc, parents, accumulator) {
450
+ // fold channels into config
451
+ var _parents$slice11 = parents.slice(-1),
452
+ _parents$slice12 = (0, _slicedToArray2["default"])(_parents$slice11, 1),
453
+ layer = _parents$slice12[0];
454
+ var modified = visualChannelModificationV1[layer.type] ? visualChannelModificationV1[layer.type](vc, parents, accumulator) : {};
455
+ return _objectSpread(_objectSpread({}, accumulator), {}, {
456
+ config: _objectSpread(_objectSpread(_objectSpread({}, accumulator.config || {}), vc), modified)
457
+ });
458
+ }
459
+ }]);
460
+ }(_schema["default"]);
461
+ /**
462
+ * V1: save [channel]: [{ label, color }, ...] for legend
463
+ */
464
+ var LegendSettingsV1 = /*#__PURE__*/function (_Schema11) {
465
+ function LegendSettingsV1() {
466
+ (0, _classCallCheck2["default"])(this, LegendSettingsV1);
467
+ return _callSuper(this, LegendSettingsV1, arguments);
468
+ }
469
+ (0, _inherits2["default"])(LegendSettingsV1, _Schema11);
470
+ return (0, _createClass2["default"])(LegendSettingsV1, [{
471
+ key: "save",
472
+ value: function save(legendSettings, parents) {
473
+ return (0, _defineProperty2["default"])({}, this.key, Object.keys(legendSettings).reduce(function (accu, key) {
474
+ accu[key] = legendSettings[key];
475
+ return accu;
476
+ }, {}));
477
+ }
478
+ }, {
479
+ key: "load",
480
+ value: function load(ls, parents, accumulator) {
481
+ return _objectSpread(_objectSpread({}, accumulator), {}, (0, _defineProperty2["default"])({}, this.key, ls));
482
+ }
483
+ }]);
484
+ }(_schema["default"]);
485
+ var visConfigModificationV1 = {
486
+ point: function point(visConfig, parents, accumulated) {
487
+ var modified = {};
488
+ var _parents$slice13 = parents.slice(-2, -1),
489
+ _parents$slice14 = (0, _slicedToArray2["default"])(_parents$slice13, 1),
490
+ layer = _parents$slice14[0];
491
+ var isOld = !visConfig.hasOwnProperty('filled') && !visConfig.strokeColor && !visConfig.strokeColorRange;
492
+ if (isOld) {
493
+ // color color & color range to stroke color
494
+ modified.strokeColor = layer.config.color;
495
+ modified.strokeColorRange = (0, _lodash2["default"])(visConfig.colorRange);
496
+ if (visConfig.outline) {
497
+ // point layer now supports both outline and fill
498
+ // for older schema where filled has not been added to point layer
499
+ // set it to false
500
+ modified.filled = false;
501
+ }
502
+ }
503
+ return modified;
504
+ },
505
+ geojson: function geojson(visConfig, parents, accumulated) {
506
+ // is points?
507
+ var modified = {};
508
+ var _parents$slice15 = parents.slice(-2, -1),
509
+ _parents$slice16 = (0, _slicedToArray2["default"])(_parents$slice15, 1),
510
+ layer = _parents$slice16[0];
511
+ var isOld = layer.visualChannels && !layer.visualChannels.hasOwnProperty('strokeColorField') && !visConfig.strokeColor && !visConfig.strokeColorRange;
512
+ // make our best guess if this geojson layer contains point
513
+ var isPoint = layer.visualChannels && layer.visualChannels.radiusField || visConfig && visConfig.radius !== _layerFactory.LAYER_VIS_CONFIGS.radius.defaultValue;
514
+ if (isOld) {
515
+ // color color & color range to stroke color
516
+ modified.strokeColor = layer.config.color;
517
+ modified.strokeColorRange = (0, _lodash2["default"])(visConfig.colorRange);
518
+ if (isPoint) {
519
+ // if is point, set stroke to false
520
+ modified.filled = true;
521
+ modified.stroked = false;
522
+ }
523
+ }
524
+ return modified;
525
+ }
526
+ };
527
+ var VisConfigSchemaV1 = /*#__PURE__*/function (_Schema12) {
528
+ function VisConfigSchemaV1() {
529
+ var _this8;
530
+ (0, _classCallCheck2["default"])(this, VisConfigSchemaV1);
531
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
532
+ args[_key8] = arguments[_key8];
533
+ }
534
+ _this8 = _callSuper(this, VisConfigSchemaV1, [].concat(args));
535
+ (0, _defineProperty2["default"])(_this8, "key", 'visConfig');
536
+ return _this8;
537
+ }
538
+ (0, _inherits2["default"])(VisConfigSchemaV1, _Schema12);
539
+ return (0, _createClass2["default"])(VisConfigSchemaV1, [{
540
+ key: "load",
541
+ value: function load(visConfig, parents, accumulated) {
542
+ var _parents$slice17 = parents.slice(-2, -1),
543
+ _parents$slice18 = (0, _slicedToArray2["default"])(_parents$slice17, 1),
544
+ layer = _parents$slice18[0];
545
+ var modified = visConfigModificationV1[layer.type] ? visConfigModificationV1[layer.type](visConfig, parents, accumulated) : {};
546
+ return {
547
+ visConfig: _objectSpread(_objectSpread({}, visConfig), modified)
548
+ };
549
+ }
550
+ }]);
551
+ }(_schema["default"]);
552
+ var layerPropsV1 = exports.layerPropsV1 = {
553
+ id: null,
554
+ type: null,
555
+ config: new _schema["default"]({
556
+ version: _versions.VERSIONS.v1,
557
+ key: 'config',
558
+ properties: {
559
+ dataId: null,
560
+ label: null,
561
+ color: null,
562
+ highlightColor: null,
563
+ columns: new ColumnSchemaV1({
564
+ version: _versions.VERSIONS.v1,
565
+ key: 'columns'
566
+ }),
567
+ isVisible: null,
568
+ visConfig: new VisConfigSchemaV1({
569
+ version: _versions.VERSIONS.v1
570
+ }),
571
+ hidden: null,
572
+ visibilityByZoom: null,
573
+ textLabel: new TextLabelSchemaV1({
574
+ version: _versions.VERSIONS.v1,
575
+ key: 'textLabel'
576
+ })
577
+ }
578
+ }),
579
+ legendSettings: new LegendSettingsV1({
580
+ version: _versions.VERSIONS.v1,
581
+ key: 'legendSettings'
582
+ }),
583
+ visualChannels: new VisualChannelSchemaV1({
584
+ version: _versions.VERSIONS.v1,
585
+ key: 'visualChannels'
586
+ })
587
+ };
588
+ var LayerSchemaV0 = exports.LayerSchemaV0 = /*#__PURE__*/function (_Schema13) {
589
+ function LayerSchemaV0() {
590
+ var _this9;
591
+ (0, _classCallCheck2["default"])(this, LayerSchemaV0);
592
+ for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
593
+ args[_key9] = arguments[_key9];
594
+ }
595
+ _this9 = _callSuper(this, LayerSchemaV0, [].concat(args));
596
+ (0, _defineProperty2["default"])(_this9, "key", 'layers');
597
+ return _this9;
598
+ }
599
+ (0, _inherits2["default"])(LayerSchemaV0, _Schema13);
600
+ return (0, _createClass2["default"])(LayerSchemaV0, [{
601
+ key: "save",
602
+ value: function save(layers, parents) {
603
+ var _this10 = this;
604
+ var _parents$slice19 = parents.slice(-1),
605
+ _parents$slice20 = (0, _slicedToArray2["default"])(_parents$slice19, 1),
606
+ visState = _parents$slice20[0];
607
+ return (0, _defineProperty2["default"])({}, this.key, visState.layerOrder.reduce(function (saved, index) {
608
+ // save layers according to their rendering order
609
+ var layer = layers[index];
610
+ if (layer.isValidToSave()) {
611
+ saved.push(_this10.savePropertiesOrApplySchema(layer).layers);
612
+ }
613
+ return saved;
614
+ }, []));
615
+ }
616
+ }, {
617
+ key: "load",
618
+ value: function load(layers) {
619
+ var _this11 = this;
620
+ return (0, _defineProperty2["default"])({}, this.key, layers.map(function (layer) {
621
+ return _this11.loadPropertiesOrApplySchema(layer, layers).layers;
622
+ }));
623
+ }
624
+ }]);
625
+ }(_schema["default"]);
626
+ var FilterSchemaV0 = exports.FilterSchemaV0 = /*#__PURE__*/function (_Schema14) {
627
+ function FilterSchemaV0() {
628
+ var _this12;
629
+ (0, _classCallCheck2["default"])(this, FilterSchemaV0);
630
+ for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
631
+ args[_key10] = arguments[_key10];
632
+ }
633
+ _this12 = _callSuper(this, FilterSchemaV0, [].concat(args));
634
+ (0, _defineProperty2["default"])(_this12, "key", 'filters');
635
+ return _this12;
636
+ }
637
+ (0, _inherits2["default"])(FilterSchemaV0, _Schema14);
638
+ return (0, _createClass2["default"])(FilterSchemaV0, [{
639
+ key: "save",
640
+ value: function save(filters) {
641
+ var _this13 = this;
642
+ return {
643
+ filters: filters.filter(_filterUtils.isValidFilterValue).map(function (filter) {
644
+ return _this13.savePropertiesOrApplySchema(filter).filters;
645
+ })
646
+ };
647
+ }
648
+ }, {
649
+ key: "load",
650
+ value: function load(filters) {
651
+ return {
652
+ filters: filters
653
+ };
654
+ }
655
+ }]);
656
+ }(_schema["default"]);
657
+ var interactionPropsV0 = ['tooltip', 'brush'];
658
+ var InteractionSchemaV0 = /*#__PURE__*/function (_Schema15) {
659
+ function InteractionSchemaV0() {
660
+ var _this14;
661
+ (0, _classCallCheck2["default"])(this, InteractionSchemaV0);
662
+ for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
663
+ args[_key11] = arguments[_key11];
664
+ }
665
+ _this14 = _callSuper(this, InteractionSchemaV0, [].concat(args));
666
+ (0, _defineProperty2["default"])(_this14, "key", 'interactionConfig');
667
+ return _this14;
668
+ }
669
+ (0, _inherits2["default"])(InteractionSchemaV0, _Schema15);
670
+ return (0, _createClass2["default"])(InteractionSchemaV0, [{
671
+ key: "save",
672
+ value: function save(interactionConfig) {
673
+ return Array.isArray(this.properties) ? (0, _defineProperty2["default"])({}, this.key, this.properties.reduce(function (accu, key) {
674
+ return _objectSpread(_objectSpread({}, accu), interactionConfig[key].enabled ? (0, _defineProperty2["default"])({}, key, interactionConfig[key].config) : {});
675
+ }, {})) : {};
676
+ }
677
+ }, {
678
+ key: "load",
679
+ value: function load(interactionConfig) {
680
+ // convert v0 -> v1
681
+ // return enabled: false if disabled,
682
+ return Array.isArray(this.properties) ? (0, _defineProperty2["default"])({}, this.key, this.properties.reduce(function (accu, key) {
683
+ return _objectSpread(_objectSpread({}, accu), (0, _defineProperty2["default"])({}, key, _objectSpread(_objectSpread({}, interactionConfig[key] || {}), {}, {
684
+ enabled: Boolean(interactionConfig[key])
685
+ })));
686
+ }, {})) : {};
687
+ }
688
+ }]);
689
+ }(_schema["default"]);
690
+ var interactionPropsV1 = [].concat(interactionPropsV0, ['geocoder', 'coordinate']);
691
+ var InteractionSchemaV1 = exports.InteractionSchemaV1 = /*#__PURE__*/function (_Schema16) {
692
+ function InteractionSchemaV1() {
693
+ var _this15;
694
+ (0, _classCallCheck2["default"])(this, InteractionSchemaV1);
695
+ for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
696
+ args[_key12] = arguments[_key12];
697
+ }
698
+ _this15 = _callSuper(this, InteractionSchemaV1, [].concat(args));
699
+ (0, _defineProperty2["default"])(_this15, "key", 'interactionConfig');
700
+ return _this15;
701
+ }
702
+ (0, _inherits2["default"])(InteractionSchemaV1, _Schema16);
703
+ return (0, _createClass2["default"])(InteractionSchemaV1, [{
704
+ key: "save",
705
+ value: function save(interactionConfig) {
706
+ // save config even if disabled,
707
+ return Array.isArray(this.properties) ? (0, _defineProperty2["default"])({}, this.key, this.properties.reduce(function (accu, key) {
708
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, _objectSpread(_objectSpread({}, interactionConfig[key].config), {}, {
709
+ enabled: interactionConfig[key].enabled
710
+ })));
711
+ }, {})) : {};
712
+ }
713
+ }, {
714
+ key: "load",
715
+ value: function load(interactionConfig) {
716
+ var _this16 = this;
717
+ var modifiedConfig = interactionConfig;
718
+ Object.keys(interactionConfig).forEach(function (configType) {
719
+ if (configType === 'tooltip') {
720
+ var fieldsToShow = modifiedConfig[configType].fieldsToShow;
721
+ if (!(0, _dataUtils.notNullorUndefined)(fieldsToShow)) {
722
+ return (0, _defineProperty2["default"])({}, _this16.key, modifiedConfig);
723
+ }
724
+ Object.keys(fieldsToShow).forEach(function (key) {
725
+ fieldsToShow[key] = fieldsToShow[key].map(function (fieldData) {
726
+ if (!fieldData.name) {
727
+ return {
728
+ name: fieldData,
729
+ format: null
730
+ };
731
+ }
732
+ return fieldData;
733
+ });
734
+ });
735
+ }
736
+ return undefined;
737
+ });
738
+ return (0, _defineProperty2["default"])({}, this.key, modifiedConfig);
739
+ }
740
+ }]);
741
+ }(_schema["default"]);
742
+ var filterPropsV0 = exports.filterPropsV0 = {
743
+ dataId: null,
744
+ id: null,
745
+ name: null,
746
+ type: null,
747
+ value: null,
748
+ enlarged: null
749
+ };
750
+ var DimensionFieldSchema = exports.DimensionFieldSchema = /*#__PURE__*/function (_Schema17) {
751
+ function DimensionFieldSchema() {
752
+ (0, _classCallCheck2["default"])(this, DimensionFieldSchema);
753
+ return _callSuper(this, DimensionFieldSchema, arguments);
754
+ }
755
+ (0, _inherits2["default"])(DimensionFieldSchema, _Schema17);
756
+ return (0, _createClass2["default"])(DimensionFieldSchema, [{
757
+ key: "save",
758
+ value: function save(field) {
759
+ return (0, _defineProperty2["default"])({}, this.key, field ? this.savePropertiesOrApplySchema(field)[this.key] : null);
760
+ }
761
+ }, {
762
+ key: "load",
763
+ value: function load(field) {
764
+ return (0, _defineProperty2["default"])({}, this.key, field);
765
+ }
766
+ }]);
767
+ }(_schema["default"]);
768
+ var SplitMapsSchema = exports.SplitMapsSchema = /*#__PURE__*/function (_Schema18) {
769
+ function SplitMapsSchema() {
770
+ (0, _classCallCheck2["default"])(this, SplitMapsSchema);
771
+ return _callSuper(this, SplitMapsSchema, arguments);
772
+ }
773
+ (0, _inherits2["default"])(SplitMapsSchema, _Schema18);
774
+ return (0, _createClass2["default"])(SplitMapsSchema, [{
775
+ key: "convertLayerSettings",
776
+ value: function convertLayerSettings(accu, _ref19) {
777
+ var _ref20 = (0, _slicedToArray2["default"])(_ref19, 2),
778
+ key = _ref20[0],
779
+ value = _ref20[1];
780
+ if (typeof value === 'boolean') {
781
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, value));
782
+ } else if (value && (0, _typeof2["default"])(value) === 'object' && value.isAvailable) {
783
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Boolean(value.isVisible)));
784
+ }
785
+ return accu;
786
+ }
787
+ }, {
788
+ key: "load",
789
+ value: function load(splitMaps) {
790
+ var _this17 = this;
791
+ // previous splitMaps Schema {layers: {layerId: {isVisible, isAvailable}}}
792
+
793
+ if (!Array.isArray(splitMaps) || !splitMaps.length) {
794
+ return {
795
+ splitMaps: []
796
+ };
797
+ }
798
+ return {
799
+ splitMaps: splitMaps.map(function (settings) {
800
+ return _objectSpread(_objectSpread({}, settings), {}, {
801
+ layers: Object.entries(settings.layers || {}).reduce(_this17.convertLayerSettings, {})
802
+ });
803
+ })
804
+ };
805
+ }
806
+ }]);
807
+ }(_schema["default"]);
808
+ var filterPropsV1 = exports.filterPropsV1 = _objectSpread(_objectSpread({}, filterPropsV0), {}, {
809
+ plotType: null,
810
+ animationWindow: null,
811
+ yAxis: new DimensionFieldSchema({
812
+ version: _versions.VERSIONS.v1,
813
+ key: 'yAxis',
814
+ properties: {
815
+ name: null,
816
+ type: null
817
+ }
818
+ }),
819
+ // polygon filter properties
820
+ layerId: null,
821
+ speed: null
822
+ });
823
+ var propertiesV0 = exports.propertiesV0 = {
824
+ filters: new FilterSchemaV0({
825
+ version: _versions.VERSIONS.v0,
826
+ properties: filterPropsV0
827
+ }),
828
+ layers: new LayerSchemaV0({
829
+ version: _versions.VERSIONS.v0,
830
+ properties: layerPropsV0
831
+ }),
832
+ interactionConfig: new InteractionSchemaV0({
833
+ version: _versions.VERSIONS.v0,
834
+ properties: interactionPropsV0
835
+ }),
836
+ layerBlending: null
837
+ };
838
+ var propertiesV1 = exports.propertiesV1 = {
839
+ filters: new FilterSchemaV0({
840
+ version: _versions.VERSIONS.v1,
841
+ properties: filterPropsV1
842
+ }),
843
+ layers: new LayerSchemaV0({
844
+ version: _versions.VERSIONS.v1,
845
+ properties: layerPropsV1
846
+ }),
847
+ interactionConfig: new InteractionSchemaV1({
848
+ version: _versions.VERSIONS.v1,
849
+ properties: interactionPropsV1
850
+ }),
851
+ layerBlending: null,
852
+ splitMaps: new SplitMapsSchema({
853
+ key: 'splitMaps',
854
+ version: _versions.VERSIONS.v1
855
+ }),
856
+ animationConfig: new _schema["default"]({
857
+ version: _versions.VERSIONS.v1,
858
+ properties: {
859
+ currentTime: null,
860
+ speed: null
861
+ },
862
+ key: 'animationConfig'
863
+ })
864
+ };
865
+ var visStateSchemaV0 = exports.visStateSchemaV0 = new _schema["default"]({
866
+ version: _versions.VERSIONS.v0,
867
+ properties: propertiesV0,
868
+ key: 'visState'
869
+ });
870
+ var visStateSchemaV1 = exports.visStateSchemaV1 = new _schema["default"]({
871
+ version: _versions.VERSIONS.v1,
872
+ properties: propertiesV1,
873
+ key: 'visState'
874
+ });
875
+ var visStateSchema = exports.visStateSchema = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _versions.VERSIONS.v0, {
876
+ save: function save(toSave) {
877
+ return visStateSchemaV0.save(toSave);
878
+ },
879
+ load: function load(toLoad) {
880
+ return visStateSchemaV1.load(visStateSchemaV0.load(toLoad).visState);
881
+ }
882
+ }), _versions.VERSIONS.v1, visStateSchemaV1);
883
+
884
+ // test load v0
885
+ var _default = exports["default"] = visStateSchema;
886
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdmVyc2lvbnMiLCJfZmlsdGVyVXRpbHMiLCJfbGF5ZXJGYWN0b3J5IiwiX3NjaGVtYSIsIl9sb2Rhc2gyIiwiX2RhdGFVdGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiZGltZW5zaW9uUHJvcHNWMCIsImV4cG9ydHMiLCJnZW9qc29uU2l6ZUZpZWxkVjBUb1YxIiwiY29uZmlnIiwiZGVmYXVsdFJhaXVkcyIsImRlZmF1bHRSYWRpdXNSYW5nZSIsInZpc0NvbmZpZyIsImV4dHJ1ZGVkIiwic3Ryb2tlZCIsInJhZGl1cyIsInJhZGl1c1JhbmdlIiwic29tZSIsImQiLCJpIiwiRGltZW5zaW9uRmllbGRTY2hlbWFWMCIsIl9TY2hlbWEiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIlZFUlNJT05TIiwidjAiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwic2F2ZSIsImZpZWxkIiwic2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hIiwibG9hZCIsInBhcmVudHMiLCJhY2N1bXVsYXRlZCIsIl9wYXJlbnRzJHNsaWNlIiwic2xpY2UiLCJfcGFyZW50cyRzbGljZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJmaWVsZE5hbWUiLCJ0eXBlIiwidmlzdWFsQ2hhbm5lbHMiLCJTY2hlbWEiLCJEaW1lbnNpb25TY2FsZVNjaGVtYVYwIiwiX1NjaGVtYTIiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwic2NhbGUiLCJfcGFyZW50cyRzbGljZTMiLCJfcGFyZW50cyRzbGljZTQiLCJMYXllckNvbmZpZ1NjaGVtYVYwIiwiX1NjaGVtYTMiLCJfdGhpczMiLCJfbGVuMyIsIl9rZXkzIiwic2F2ZWQiLCJMYXllckNvbHVtbnNTY2hlbWFWMCIsIl9TY2hlbWE0IiwiX3RoaXM0IiwiX2xlbjQiLCJfa2V5NCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2N1IiwiTGF5ZXJDb25maWdUb1Zpc0NvbmZpZ1NjaGVtYVYwIiwiX1NjaGVtYTUiLCJfdGhpczUiLCJfbGVuNSIsIl9rZXk1IiwiYWNjdW11bGF0ZWRDb25maWciLCJMYXllclZpc0NvbmZpZ1NjaGVtYVYwIiwiX1NjaGVtYTYiLCJfdGhpczYiLCJfbGVuNiIsIl9rZXk2IiwiYWNjdW11bGF0b3IiLCJfcGFyZW50cyRzbGljZTUiLCJfcGFyZW50cyRzbGljZTYiLCJyZW5hbWUiLCJnZW9qc29uIiwiZWxldmF0aW9uUmFuZ2UiLCJwcm9wVG9SZW5hbWUiLCJMYXllckNvbmZpZ1NjaGVtYURlbGV0ZVYwIiwiX1NjaGVtYTciLCJfdGhpczciLCJfbGVuNyIsIl9rZXk3IiwibGF5ZXJQcm9wc1YwIiwiaWQiLCJkYXRhSWQiLCJsYWJlbCIsImNvbG9yIiwiaXNWaXNpYmxlIiwiaGlkZGVuIiwidmlzaWJpbGl0eUJ5Wm9vbSIsImNvbG9yRmllbGQiLCJwcm9wZXJ0aWVzIiwiY29sb3JTY2FsZSIsInNpemVGaWVsZCIsInNpemVTY2FsZSIsImVuYWJsZTNkIiwiY29sb3JBZ2dyZWdhdGlvbiIsInNpemVBZ2dyZWdhdGlvbiIsImlzQWdncmVnYXRlZCIsIkNvbHVtblNjaGVtYVYxIiwiX1NjaGVtYTgiLCJzdGF0ZSIsImNrZXkiLCJUZXh0TGFiZWxTY2hlbWFWMSIsIl9TY2hlbWE5IiwidGV4dExhYmVsIiwibWFwIiwidGwiLCJwaWNrIiwiaXNBcnJheSIsInZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMSIsInZjIiwiX3BhcmVudHMkc2xpY2U3IiwiX3BhcmVudHMkc2xpY2U4IiwibGF5ZXIiLCJpc09sZCIsImhhc093blByb3BlcnR5IiwiaXNQb2ludCIsInJhZGl1c0ZpZWxkIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JTY2FsZSIsIlZpc3VhbENoYW5uZWxTY2hlbWFWMSIsIl9TY2hlbWExMCIsIl9wYXJlbnRzJHNsaWNlOSIsIl9wYXJlbnRzJHNsaWNlMTAiLCJfcGFyZW50cyRzbGljZTExIiwiX3BhcmVudHMkc2xpY2UxMiIsIm1vZGlmaWVkIiwiTGVnZW5kU2V0dGluZ3NWMSIsIl9TY2hlbWExMSIsImxlZ2VuZFNldHRpbmdzIiwibHMiLCJ2aXNDb25maWdNb2RpZmljYXRpb25WMSIsInBvaW50IiwiX3BhcmVudHMkc2xpY2UxMyIsIl9wYXJlbnRzJHNsaWNlMTQiLCJzdHJva2VDb2xvciIsInN0cm9rZUNvbG9yUmFuZ2UiLCJjbG9uZURlZXAiLCJjb2xvclJhbmdlIiwib3V0bGluZSIsImZpbGxlZCIsIl9wYXJlbnRzJHNsaWNlMTUiLCJfcGFyZW50cyRzbGljZTE2IiwiVmlzQ29uZmlnU2NoZW1hVjEiLCJfU2NoZW1hMTIiLCJfdGhpczgiLCJfbGVuOCIsIl9rZXk4IiwiX3BhcmVudHMkc2xpY2UxNyIsIl9wYXJlbnRzJHNsaWNlMTgiLCJsYXllclByb3BzVjEiLCJ2ZXJzaW9uIiwidjEiLCJoaWdobGlnaHRDb2xvciIsIkxheWVyU2NoZW1hVjAiLCJfU2NoZW1hMTMiLCJfdGhpczkiLCJfbGVuOSIsIl9rZXk5IiwibGF5ZXJzIiwiX3RoaXMxMCIsIl9wYXJlbnRzJHNsaWNlMTkiLCJfcGFyZW50cyRzbGljZTIwIiwidmlzU3RhdGUiLCJsYXllck9yZGVyIiwiaW5kZXgiLCJpc1ZhbGlkVG9TYXZlIiwiX3RoaXMxMSIsImxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsIkZpbHRlclNjaGVtYVYwIiwiX1NjaGVtYTE0IiwiX3RoaXMxMiIsIl9sZW4xMCIsIl9rZXkxMCIsImZpbHRlcnMiLCJfdGhpczEzIiwiaXNWYWxpZEZpbHRlclZhbHVlIiwiaW50ZXJhY3Rpb25Qcm9wc1YwIiwiSW50ZXJhY3Rpb25TY2hlbWFWMCIsIl9TY2hlbWExNSIsIl90aGlzMTQiLCJfbGVuMTEiLCJfa2V5MTEiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImVuYWJsZWQiLCJpbnRlcmFjdGlvblByb3BzVjEiLCJJbnRlcmFjdGlvblNjaGVtYVYxIiwiX1NjaGVtYTE2IiwiX3RoaXMxNSIsIl9sZW4xMiIsIl9rZXkxMiIsIl90aGlzMTYiLCJtb2RpZmllZENvbmZpZyIsImNvbmZpZ1R5cGUiLCJmaWVsZHNUb1Nob3ciLCJub3ROdWxsb3JVbmRlZmluZWQiLCJmaWVsZERhdGEiLCJuYW1lIiwiZm9ybWF0IiwidW5kZWZpbmVkIiwiZmlsdGVyUHJvcHNWMCIsImVubGFyZ2VkIiwiRGltZW5zaW9uRmllbGRTY2hlbWEiLCJfU2NoZW1hMTciLCJTcGxpdE1hcHNTY2hlbWEiLCJfU2NoZW1hMTgiLCJjb252ZXJ0TGF5ZXJTZXR0aW5ncyIsIl9yZWYxOSIsIl9yZWYyMCIsIl90eXBlb2YyIiwiaXNBdmFpbGFibGUiLCJzcGxpdE1hcHMiLCJfdGhpczE3Iiwic2V0dGluZ3MiLCJlbnRyaWVzIiwiZmlsdGVyUHJvcHNWMSIsInBsb3RUeXBlIiwiYW5pbWF0aW9uV2luZG93IiwieUF4aXMiLCJsYXllcklkIiwic3BlZWQiLCJwcm9wZXJ0aWVzVjAiLCJsYXllckJsZW5kaW5nIiwicHJvcGVydGllc1YxIiwiYW5pbWF0aW9uQ29uZmlnIiwiY3VycmVudFRpbWUiLCJ2aXNTdGF0ZVNjaGVtYVYwIiwidmlzU3RhdGVTY2hlbWFWMSIsInZpc1N0YXRlU2NoZW1hIiwidG9TYXZlIiwidG9Mb2FkIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy92aXMtc3RhdGUtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC5waWNrJztcbmltcG9ydCB7VkVSU0lPTlN9IGZyb20gJy4vdmVyc2lvbnMnO1xuaW1wb3J0IHtpc1ZhbGlkRmlsdGVyVmFsdWV9IGZyb20gJ3V0aWxzL2ZpbHRlci11dGlscyc7XG5pbXBvcnQge0xBWUVSX1ZJU19DT05GSUdTfSBmcm9tICdsYXllcnMvbGF5ZXItZmFjdG9yeSc7XG5pbXBvcnQgU2NoZW1hIGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5cbi8qKlxuICogVjAgU2NoZW1hXG4gKi9cblxuZXhwb3J0IGNvbnN0IGRpbWVuc2lvblByb3BzVjAgPSBbJ25hbWUnLCAndHlwZSddO1xuXG5leHBvcnQgdHlwZSBtb2RpZmllZFR5cGUgPSB7XG4gIHN0cm9rZUNvbG9yPzogYW55O1xuICBzdHJva2VDb2xvclJhbmdlPzogYW55O1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbn07XG5cbi8vIGluIHYwIGdlb2pzb24gdGhlcmUgaXMgb25seSBzaXplRmllbGRcblxuLy8gaW4gdjEgZ2VvanNvblxuLy8gc3Ryb2tlIGJhc2Ugb24gLT4gc2l6ZUZpZWxkXG4vLyBoZWlnaHQgYmFzZWQgb24gLT4gaGVpZ2h0RmllbGRcbi8vIHJhZGl1cyBiYXNlZCBvbiAtPiByYWRpdXNGaWVsZFxuLy8gaGVyZSB3ZSBtYWtlIG91ciB3aXJlZHN0IGd1ZXNzIG9uIHdoaWNoIGNoYW5uZWwgc2l6ZUZpZWxkIGJlbG9uZ3MgdG9cbmZ1bmN0aW9uIGdlb2pzb25TaXplRmllbGRWMFRvVjEoY29uZmlnKSB7XG4gIGNvbnN0IGRlZmF1bHRSYWl1ZHMgPSAxMDtcbiAgY29uc3QgZGVmYXVsdFJhZGl1c1JhbmdlID0gWzAsIDUwXTtcblxuICAvLyBpZiBleHRydWRlZCwgc2l6ZUZpZWxkIGlzIG1vc3QgbGlrZWx5IHVzZWQgZm9yIGhlaWdodFxuICBpZiAoY29uZmlnLnZpc0NvbmZpZy5leHRydWRlZCkge1xuICAgIHJldHVybiAnaGVpZ2h0RmllbGQnO1xuICB9XG5cbiAgLy8gaWYgc2hvdyBzdHJva2UgZW5hYmxlZCwgc2l6ZUZpZWxkIGlzIG1vc3QgbGlrZWx5IHVzZWQgZm9yIHN0cm9rZVxuICBpZiAoY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkKSB7XG4gICAgcmV0dXJuICdzaXplRmllbGQnO1xuICB9XG5cbiAgLy8gaWYgcmFkaXVzIGNoYW5nZWQsIG9yIHJhZGl1cyBSYW5nZSBDaGFuZ2VkLCBzaXplRmllbGQgaXMgbW9zdCBsaWtlbHkgdXNlZCBmb3IgcmFkaXVzXG4gIC8vIHRoaXMgaXMgdGhlIG1vc3QgdW5yZWxpYWJsZSBndWVzcywgdGhhdCdzIHdoeSB3ZSBwdXQgaXQgaW4gdGhlIGVuZFxuICBpZiAoXG4gICAgY29uZmlnLnZpc0NvbmZpZy5yYWRpdXMgIT09IGRlZmF1bHRSYWl1ZHMgfHxcbiAgICBjb25maWcudmlzQ29uZmlnLnJhZGl1c1JhbmdlLnNvbWUoKGQsIGkpID0+IGQgIT09IGRlZmF1bHRSYWRpdXNSYW5nZVtpXSlcbiAgKSB7XG4gICAgcmV0dXJuICdyYWRpdXNGaWVsZCc7XG4gIH1cblxuICByZXR1cm4gJ3NpemVGaWVsZCc7XG59XG5cbi8vIGNvbnZlcnQgdjAgdG8gdjEgbGF5ZXIgY29uZmlnXG5jbGFzcyBEaW1lbnNpb25GaWVsZFNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBzYXZlKGZpZWxkKSB7XG4gICAgLy8gc2hvdWxkIG5vdCBiZSBjYWxsZWQgYW55bW9yZVxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBmaWVsZCAhPT0gbnVsbCA/IHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGZpZWxkKVt0aGlzLmtleV0gOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoZmllbGQsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSB7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBsZXQgZmllbGROYW1lID0gdGhpcy5rZXk7XG4gICAgaWYgKGNvbmZpZy50eXBlID09PSAnZ2VvanNvbicgJiYgdGhpcy5rZXkgPT09ICdzaXplRmllbGQnICYmIGZpZWxkKSB7XG4gICAgICBmaWVsZE5hbWUgPSBnZW9qc29uU2l6ZUZpZWxkVjBUb1YxKGNvbmZpZyk7XG4gICAgfVxuICAgIC8vIGZvbGQgaW50byB2aXN1YWxDaGFubmVscyB0byBiZSBsb2FkIGJ5IFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICAgIHJldHVybiB7XG4gICAgICB2aXN1YWxDaGFubmVsczoge1xuICAgICAgICAuLi4oYWNjdW11bGF0ZWQudmlzdWFsQ2hhbm5lbHMgfHwge30pLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIERpbWVuc2lvblNjYWxlU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIHNhdmUoc2NhbGUpIHtcbiAgICByZXR1cm4ge1t0aGlzLmtleV06IHNjYWxlfTtcbiAgfVxuICBsb2FkKHNjYWxlLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIGNvbnN0IFtjb25maWddID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgLy8gZm9sZCBpbnRvIHZpc3VhbENoYW5uZWxzIHRvIGJlIGxvYWQgYnkgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gICAgaWYgKHRoaXMua2V5ID09PSAnc2l6ZVNjYWxlJyAmJiBjb25maWcudHlwZSA9PT0gJ2dlb2pzb24nKSB7XG4gICAgICAvLyBzaXplU2NhbGUgbm93IHNwbGl0IGludG8gcmFkaXVzU2NhbGUsIGhlaWdodFNjYWxlXG4gICAgICAvLyBubyB1c2VyIGN1c3RvbWl6YXRpb24sIGp1c3QgdXNlIGRlZmF1bHRcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzdWFsQ2hhbm5lbHM6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdGVkLnZpc3VhbENoYW5uZWxzIHx8IHt9KSxcbiAgICAgICAgW3RoaXMua2V5XTogc2NhbGVcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbi8vIHVzZWQgdG8gY29udmVydCB2MCB0byB2MSBsYXllciBjb25maWdcbmNsYXNzIExheWVyQ29uZmlnU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIGxvYWQoc2F2ZWQsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSB7XG4gICAgLy8gZm9sZCB2MCBsYXllciBwcm9wZXJ0eSBpbnRvIGNvbmZpZy5rZXlcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRlZC5jb25maWcgfHwge30pLFxuICAgICAgICBbdGhpcy5rZXldOiBzYXZlZFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuLy8gdXNlZCB0byBjb252ZXJ0IHYwIHRvIHYxIGxheWVyIGNvbHVtbnNcbi8vIG9ubHkgcmV0dXJuIGNvbHVtbiB2YWx1ZSBmb3IgZWFjaCBjb2x1bW5cbmNsYXNzIExheWVyQ29sdW1uc1NjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBsb2FkKHNhdmVkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIC8vIGZvbGQgdjAgbGF5ZXIgcHJvcGVydHkgaW50byBjb25maWcua2V5LCBmbGF0dGVuIGNvbHVtbnNcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRlZC5jb25maWcgfHwge30pLFxuICAgICAgICBjb2x1bW5zOiBPYmplY3Qua2V5cyhzYXZlZCkucmVkdWNlKFxuICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgW2tleV06IHNhdmVkW2tleV0udmFsdWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyB1c2VkIHRvIGNvbnZlcnQgdjAgdG8gdjEgbGF5ZXIgY29uZmlnLnZpc0NvbmZpZ1xuY2xhc3MgTGF5ZXJDb25maWdUb1Zpc0NvbmZpZ1NjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBsb2FkKHNhdmVkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIC8vIGZvbGQgdjAgbGF5ZXIgcHJvcGVydHkgaW50byBjb25maWcudmlzQ29uZmlnXG4gICAgY29uc3QgYWNjdW11bGF0ZWRDb25maWcgPSBhY2N1bXVsYXRlZC5jb25maWcgfHwge307XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5hY2N1bXVsYXRlZENvbmZpZyxcbiAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgLi4uKGFjY3VtdWxhdGVkQ29uZmlnLnZpc0NvbmZpZyB8fCB7fSksXG4gICAgICAgICAgW3RoaXMua2V5XTogc2F2ZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgTGF5ZXJWaXNDb25maWdTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAga2V5ID0gJ3Zpc0NvbmZpZyc7XG5cbiAgbG9hZCh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdG9yKSB7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBjb25zdCByZW5hbWUgPSB7XG4gICAgICBnZW9qc29uOiB7XG4gICAgICAgIGV4dHJ1ZGVkOiAnZW5hYmxlM2QnLFxuICAgICAgICBlbGV2YXRpb25SYW5nZTogJ2hlaWdodFJhbmdlJ1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLnR5cGUgaW4gcmVuYW1lKSB7XG4gICAgICBjb25zdCBwcm9wVG9SZW5hbWUgPSByZW5hbWVbY29uZmlnLnR5cGVdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgLi4uKGFjY3VtdWxhdG9yLmNvbmZpZyB8fCB7fSksXG4gICAgICAgICAgdmlzQ29uZmlnOiBPYmplY3Qua2V5cyh2aXNDb25maWcpLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLihwcm9wVG9SZW5hbWVba2V5XVxuICAgICAgICAgICAgICAgID8ge1twcm9wVG9SZW5hbWVba2V5XV06IHZpc0NvbmZpZ1trZXldfVxuICAgICAgICAgICAgICAgIDoge1trZXldOiB2aXNDb25maWdba2V5XX0pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdG9yLmNvbmZpZyB8fCB7fSksXG4gICAgICAgIHZpc0NvbmZpZ1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgTGF5ZXJDb25maWdTY2hlbWFEZWxldGVWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAgbG9hZCh2YWx1ZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKipcbiAqIFYwIC0+IFYxIENoYW5nZXNcbiAqIC0gbGF5ZXIgaXMgbm93IGEgY2xhc3NcbiAqIC0gY29uZmlnIHNhdmVkIGluIGEgY29uZmlnIG9iamVjdFxuICogLSBpZCwgdHlwZSwgaXNBZ2dyZWdhdGVkIGlzIG91dHNpZGUgbGF5ZXIuY29uZmlnXG4gKiAtIHZpc3VhbENoYW5uZWxzIGlzIG91dHNpZGUgY29uZmlnLCBpdCBkZWZpbmVzIGF2YWlsYWJsZSB2aXN1YWwgY2hhbm5lbCBhbmRcbiAqICAgcHJvcGVydHkgbmFtZXMgZm9yIGZpZWxkLCBzY2FsZSwgZG9tYWluIGFuZCByYW5nZSBvZiBlYWNoIHZpc3VhbCBjaGFuZWwuXG4gKiAtIGVuYWJsZTNkLCBjb2xvckFnZ3JlZ2F0aW9uIGFuZCBzaXplQWdncmVnYXRpb24gYXJlIG1vdmVkIGludG8gdmlzQ29uZmlnXG4gKiAtIEdlb2pzb25MYXllciAtIGFkZGVkIGhlaWdodCwgcmFkaXVzIHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuXG5leHBvcnQgY29uc3QgbGF5ZXJQcm9wc1YwID0ge1xuICBpZDogbnVsbCxcbiAgdHlwZTogbnVsbCxcblxuICAvLyBtb3ZlIGludG8gbGF5ZXIuY29uZmlnXG4gIGRhdGFJZDogbmV3IExheWVyQ29uZmlnU2NoZW1hVjAoe2tleTogJ2RhdGFJZCd9KSxcbiAgbGFiZWw6IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICdsYWJlbCd9KSxcbiAgY29sb3I6IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICdjb2xvcid9KSxcbiAgaXNWaXNpYmxlOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFWMCh7a2V5OiAnaXNWaXNpYmxlJ30pLFxuICBoaWRkZW46IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICdoaWRkZW4nfSksXG4gIHZpc2liaWxpdHlCeVpvb206IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICd2aXNpYmlsaXR5Qnlab29tJ30pLFxuXG4gIC8vIGNvbnZlcnQgdmlzQ29uZmlnXG4gIHZpc0NvbmZpZzogbmV3IExheWVyVmlzQ29uZmlnU2NoZW1hVjAoe2tleTogJ3Zpc0NvbmZpZyd9KSxcblxuICAvLyBtb3ZlIGludG8gbGF5ZXIuY29uZmlnXG4gIC8vIGZsYXR0ZW5cbiAgY29sdW1uczogbmV3IExheWVyQ29sdW1uc1NjaGVtYVYwKCksXG5cbiAgLy8gc2F2ZSBpbnRvIHZpc3VhbENoYW5uZWxzXG4gIGNvbG9yRmllbGQ6IG5ldyBEaW1lbnNpb25GaWVsZFNjaGVtYVYwKHtcbiAgICBwcm9wZXJ0aWVzOiBkaW1lbnNpb25Qcm9wc1YwLFxuICAgIGtleTogJ2NvbG9yRmllbGQnXG4gIH0pLFxuICBjb2xvclNjYWxlOiBuZXcgRGltZW5zaW9uU2NhbGVTY2hlbWFWMCh7XG4gICAga2V5OiAnY29sb3JTY2FsZSdcbiAgfSksXG4gIHNpemVGaWVsZDogbmV3IERpbWVuc2lvbkZpZWxkU2NoZW1hVjAoe1xuICAgIHByb3BlcnRpZXM6IGRpbWVuc2lvblByb3BzVjAsXG4gICAga2V5OiAnc2l6ZUZpZWxkJ1xuICB9KSxcbiAgc2l6ZVNjYWxlOiBuZXcgRGltZW5zaW9uU2NhbGVTY2hlbWFWMCh7XG4gICAga2V5OiAnc2l6ZVNjYWxlJ1xuICB9KSxcblxuICAvLyBtb3ZlIGludG8gY29uZmlnLnZpc0NvbmZpZ1xuICBlbmFibGUzZDogbmV3IExheWVyQ29uZmlnVG9WaXNDb25maWdTY2hlbWFWMCh7a2V5OiAnZW5hYmxlM2QnfSksXG4gIGNvbG9yQWdncmVnYXRpb246IG5ldyBMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAoe1xuICAgIGtleTogJ2NvbG9yQWdncmVnYXRpb24nXG4gIH0pLFxuICBzaXplQWdncmVnYXRpb246IG5ldyBMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAoe2tleTogJ3NpemVBZ2dyZWdhdGlvbid9KSxcblxuICAvLyBkZWxldGVcbiAgaXNBZ2dyZWdhdGVkOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFEZWxldGVWMCgpXG59O1xuXG4vKipcbiAqIFYxIFNjaGVtYVxuICovXG5jbGFzcyBDb2x1bW5TY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIHNhdmUoY29sdW1ucywgc3RhdGUpIHtcbiAgICAvLyBzdGFydGluZyBmcm9tIHYxLCBvbmx5IHNhdmUgY29sdW1uIHZhbHVlXG4gICAgLy8gZmllbGRJZHggd2lsbCBiZSBjYWxjdWxhdGVkIGR1cmluZyBtZXJnZVxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBPYmplY3Qua2V5cyhjb2x1bW5zKS5yZWR1Y2UoXG4gICAgICAgIChhY2N1LCBja2V5KSA9PiAoe1xuICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgW2NrZXldOiBjb2x1bW5zW2NrZXldLnZhbHVlXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBsb2FkKGNvbHVtbnMpIHtcbiAgICByZXR1cm4ge2NvbHVtbnN9O1xuICB9XG59XG5cbmNsYXNzIFRleHRMYWJlbFNjaGVtYVYxIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZSh0ZXh0TGFiZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogdGV4dExhYmVsLm1hcCh0bCA9PiAoe1xuICAgICAgICAuLi50bCxcbiAgICAgICAgZmllbGQ6IHRsLmZpZWxkID8gcGljayh0bC5maWVsZCwgWyduYW1lJywgJ3R5cGUnXSkgOiBudWxsXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG5cbiAgbG9hZCh0ZXh0TGFiZWwpIHtcbiAgICByZXR1cm4ge3RleHRMYWJlbDogQXJyYXkuaXNBcnJheSh0ZXh0TGFiZWwpID8gdGV4dExhYmVsIDogW3RleHRMYWJlbF19O1xuICB9XG59XG5cbmNvbnN0IHZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMSA9IHtcbiAgZ2VvanNvbjogKHZjLCBwYXJlbnRzLCBhY2N1bXVsYXRvcikgPT4ge1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBjb25zdCBpc09sZCA9ICF2Yy5oYXNPd25Qcm9wZXJ0eSgnc3Ryb2tlQ29sb3JGaWVsZCcpO1xuICAgIC8vIG1ha2Ugb3VyIGJlc3QgZ3Vlc3MgaWYgdGhpcyBnZW9qc29uIGxheWVyIGNvbnRhaW5zIHBvaW50XG4gICAgY29uc3QgaXNQb2ludCA9XG4gICAgICB2Yy5yYWRpdXNGaWVsZCB8fCBsYXllci5jb25maWcudmlzQ29uZmlnLnJhZGl1cyAhPT0gTEFZRVJfVklTX0NPTkZJR1MucmFkaXVzLmRlZmF1bHRWYWx1ZTtcblxuICAgIGlmIChpc09sZCAmJiAhaXNQb2ludCAmJiBsYXllci5jb25maWcudmlzQ29uZmlnLnN0cm9rZWQpIHtcbiAgICAgIC8vIGlmIHN0cm9rZWQgaXMgdHJ1ZSwgY29weSBjb2xvciBjb25maWcgdG8gc3Ryb2tlIGNvbG9yIGNvbmZpZ1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogdmMuY29sb3JGaWVsZCxcbiAgICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogdmMuY29sb3JTY2FsZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuLyoqXG4gKiBWMTogc2F2ZSBbZmllbGRdOiB7bmFtZSwgdHlwZX0sIFtzY2FsZV06ICcnIGZvciBlYWNoIGNoYW5uZWxcbiAqL1xuY2xhc3MgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZSh2aXN1YWxDaGFubmVscywgcGFyZW50cykge1xuICAgIC8vIG9ubHkgc2F2ZSBmaWVsZCBhbmQgc2NhbGUgb2YgZWFjaCBjaGFubmVsXG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBPYmplY3Qua2V5cyh2aXN1YWxDaGFubmVscykucmVkdWNlKFxuICAgICAgICAvLyAgc2F2ZSBjaGFubmVsIHRvIG51bGwgaWYgZGlkbid0IHNlbGVjdCBhbnkgZmllbGRcbiAgICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgIFt2aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXTogbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWxzW2tleV0uZmllbGRdXG4gICAgICAgICAgICA/IHBpY2sobGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWxzW2tleV0uZmllbGRdLCBbJ25hbWUnLCAndHlwZScsICdjb2xvckNvbHVtbiddKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIFt2aXN1YWxDaGFubmVsc1trZXldLnNjYWxlXTogbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWxzW2tleV0uc2NhbGVdXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH1cbiAgbG9hZCh2YywgcGFyZW50cywgYWNjdW11bGF0b3IpIHtcbiAgICAvLyBmb2xkIGNoYW5uZWxzIGludG8gY29uZmlnXG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuICAgIGNvbnN0IG1vZGlmaWVkID0gdmlzdWFsQ2hhbm5lbE1vZGlmaWNhdGlvblYxW2xheWVyLnR5cGVdXG4gICAgICA/IHZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMVtsYXllci50eXBlXSh2YywgcGFyZW50cywgYWNjdW11bGF0b3IpXG4gICAgICA6IHt9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjY3VtdWxhdG9yLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRvci5jb25maWcgfHwge30pLFxuICAgICAgICAuLi52YyxcbiAgICAgICAgLi4ubW9kaWZpZWRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4vKipcbiAqIFYxOiBzYXZlIFtjaGFubmVsXTogW3sgbGFiZWwsIGNvbG9yIH0sIC4uLl0gZm9yIGxlZ2VuZFxuICovXG5jbGFzcyBMZWdlbmRTZXR0aW5nc1YxIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZShsZWdlbmRTZXR0aW5ncywgcGFyZW50cykge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBPYmplY3Qua2V5cyhsZWdlbmRTZXR0aW5ncykucmVkdWNlKChhY2N1LCBrZXkpID0+IHtcbiAgICAgICAgYWNjdVtrZXldID0gbGVnZW5kU2V0dGluZ3Nba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCB7fSlcbiAgICB9O1xuICB9XG4gIGxvYWQobHMsIHBhcmVudHMsIGFjY3VtdWxhdG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjY3VtdWxhdG9yLFxuICAgICAgW3RoaXMua2V5XTogbHNcbiAgICB9O1xuICB9XG59XG5jb25zdCB2aXNDb25maWdNb2RpZmljYXRpb25WMSA9IHtcbiAgcG9pbnQ6ICh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSA9PiB7XG4gICAgY29uc3QgbW9kaWZpZWQ6IG1vZGlmaWVkVHlwZSA9IHt9O1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0yLCAtMSk7XG4gICAgY29uc3QgaXNPbGQgPVxuICAgICAgIXZpc0NvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnZmlsbGVkJykgJiYgIXZpc0NvbmZpZy5zdHJva2VDb2xvciAmJiAhdmlzQ29uZmlnLnN0cm9rZUNvbG9yUmFuZ2U7XG4gICAgaWYgKGlzT2xkKSB7XG4gICAgICAvLyBjb2xvciBjb2xvciAmIGNvbG9yIHJhbmdlIHRvIHN0cm9rZSBjb2xvclxuICAgICAgbW9kaWZpZWQuc3Ryb2tlQ29sb3IgPSBsYXllci5jb25maWcuY29sb3I7XG4gICAgICBtb2RpZmllZC5zdHJva2VDb2xvclJhbmdlID0gY2xvbmVEZWVwKHZpc0NvbmZpZy5jb2xvclJhbmdlKTtcbiAgICAgIGlmICh2aXNDb25maWcub3V0bGluZSkge1xuICAgICAgICAvLyBwb2ludCBsYXllciBub3cgc3VwcG9ydHMgYm90aCBvdXRsaW5lIGFuZCBmaWxsXG4gICAgICAgIC8vIGZvciBvbGRlciBzY2hlbWEgd2hlcmUgZmlsbGVkIGhhcyBub3QgYmVlbiBhZGRlZCB0byBwb2ludCBsYXllclxuICAgICAgICAvLyBzZXQgaXQgdG8gZmFsc2VcbiAgICAgICAgbW9kaWZpZWQuZmlsbGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkO1xuICB9LFxuICBnZW9qc29uOiAodmlzQ29uZmlnLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkgPT4ge1xuICAgIC8vIGlzIHBvaW50cz9cbiAgICBjb25zdCBtb2RpZmllZDogbW9kaWZpZWRUeXBlID0ge307XG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTIsIC0xKTtcbiAgICBjb25zdCBpc09sZCA9XG4gICAgICBsYXllci52aXN1YWxDaGFubmVscyAmJlxuICAgICAgIWxheWVyLnZpc3VhbENoYW5uZWxzLmhhc093blByb3BlcnR5KCdzdHJva2VDb2xvckZpZWxkJykgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3IgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3JSYW5nZTtcbiAgICAvLyBtYWtlIG91ciBiZXN0IGd1ZXNzIGlmIHRoaXMgZ2VvanNvbiBsYXllciBjb250YWlucyBwb2ludFxuICAgIGNvbnN0IGlzUG9pbnQgPVxuICAgICAgKGxheWVyLnZpc3VhbENoYW5uZWxzICYmIGxheWVyLnZpc3VhbENoYW5uZWxzLnJhZGl1c0ZpZWxkKSB8fFxuICAgICAgKHZpc0NvbmZpZyAmJiB2aXNDb25maWcucmFkaXVzICE9PSBMQVlFUl9WSVNfQ09ORklHUy5yYWRpdXMuZGVmYXVsdFZhbHVlKTtcblxuICAgIGlmIChpc09sZCkge1xuICAgICAgLy8gY29sb3IgY29sb3IgJiBjb2xvciByYW5nZSB0byBzdHJva2UgY29sb3JcbiAgICAgIG1vZGlmaWVkLnN0cm9rZUNvbG9yID0gbGF5ZXIuY29uZmlnLmNvbG9yO1xuICAgICAgbW9kaWZpZWQuc3Ryb2tlQ29sb3JSYW5nZSA9IGNsb25lRGVlcCh2aXNDb25maWcuY29sb3JSYW5nZSk7XG4gICAgICBpZiAoaXNQb2ludCkge1xuICAgICAgICAvLyBpZiBpcyBwb2ludCwgc2V0IHN0cm9rZSB0byBmYWxzZVxuICAgICAgICBtb2RpZmllZC5maWxsZWQgPSB0cnVlO1xuICAgICAgICBtb2RpZmllZC5zdHJva2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkO1xuICB9XG59O1xuXG5jbGFzcyBWaXNDb25maWdTY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICd2aXNDb25maWcnO1xuXG4gIGxvYWQodmlzQ29uZmlnLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0yLCAtMSk7XG4gICAgY29uc3QgbW9kaWZpZWQgPSB2aXNDb25maWdNb2RpZmljYXRpb25WMVtsYXllci50eXBlXVxuICAgICAgPyB2aXNDb25maWdNb2RpZmljYXRpb25WMVtsYXllci50eXBlXSh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdGVkKVxuICAgICAgOiB7fTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNDb25maWc6IHtcbiAgICAgICAgLi4udmlzQ29uZmlnLFxuICAgICAgICAuLi5tb2RpZmllZFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxheWVyUHJvcHNWMSA9IHtcbiAgaWQ6IG51bGwsXG4gIHR5cGU6IG51bGwsXG4gIGNvbmZpZzogbmV3IFNjaGVtYSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAga2V5OiAnY29uZmlnJyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBkYXRhSWQ6IG51bGwsXG4gICAgICBsYWJlbDogbnVsbCxcbiAgICAgIGNvbG9yOiBudWxsLFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IG51bGwsXG4gICAgICBjb2x1bW5zOiBuZXcgQ29sdW1uU2NoZW1hVjEoe1xuICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICAgICAga2V5OiAnY29sdW1ucydcbiAgICAgIH0pLFxuICAgICAgaXNWaXNpYmxlOiBudWxsLFxuICAgICAgdmlzQ29uZmlnOiBuZXcgVmlzQ29uZmlnU2NoZW1hVjEoe1xuICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MVxuICAgICAgfSksXG4gICAgICBoaWRkZW46IG51bGwsXG4gICAgICB2aXNpYmlsaXR5Qnlab29tOiBudWxsLFxuICAgICAgdGV4dExhYmVsOiBuZXcgVGV4dExhYmVsU2NoZW1hVjEoe1xuICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICAgICAga2V5OiAndGV4dExhYmVsJ1xuICAgICAgfSlcbiAgICB9XG4gIH0pLFxuICBsZWdlbmRTZXR0aW5nczogbmV3IExlZ2VuZFNldHRpbmdzVjEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIGtleTogJ2xlZ2VuZFNldHRpbmdzJ1xuICB9KSxcbiAgdmlzdWFsQ2hhbm5lbHM6IG5ldyBWaXN1YWxDaGFubmVsU2NoZW1hVjEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIGtleTogJ3Zpc3VhbENoYW5uZWxzJ1xuICB9KVxufTtcblxuZXhwb3J0IGNsYXNzIExheWVyU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnbGF5ZXJzJztcblxuICBzYXZlKGxheWVycywgcGFyZW50cykge1xuICAgIGNvbnN0IFt2aXNTdGF0ZV0gPSBwYXJlbnRzLnNsaWNlKC0xKTtcblxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiB2aXNTdGF0ZS5sYXllck9yZGVyLnJlZHVjZSgoc2F2ZWQsIGluZGV4KSA9PiB7XG4gICAgICAgIC8vIHNhdmUgbGF5ZXJzIGFjY29yZGluZyB0byB0aGVpciByZW5kZXJpbmcgb3JkZXJcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbaW5kZXhdO1xuICAgICAgICBpZiAobGF5ZXIuaXNWYWxpZFRvU2F2ZSgpKSB7XG4gICAgICAgICAgc2F2ZWQucHVzaCh0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShsYXllcikubGF5ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2F2ZWQ7XG4gICAgICB9LCBbXSlcbiAgICB9O1xuICB9XG5cbiAgbG9hZChsYXllcnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogbGF5ZXJzLm1hcChsYXllciA9PiB0aGlzLmxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShsYXllciwgbGF5ZXJzKS5sYXllcnMpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnZmlsdGVycyc7XG4gIHNhdmUoZmlsdGVycykge1xuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiBmaWx0ZXJzXG4gICAgICAgIC5maWx0ZXIoaXNWYWxpZEZpbHRlclZhbHVlKVxuICAgICAgICAubWFwKGZpbHRlciA9PiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmaWx0ZXIpLmZpbHRlcnMpXG4gICAgfTtcbiAgfVxuICBsb2FkKGZpbHRlcnMpIHtcbiAgICByZXR1cm4ge2ZpbHRlcnN9O1xuICB9XG59XG5cbmNvbnN0IGludGVyYWN0aW9uUHJvcHNWMCA9IFsndG9vbHRpcCcsICdicnVzaCddO1xuXG5jbGFzcyBJbnRlcmFjdGlvblNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAga2V5ID0gJ2ludGVyYWN0aW9uQ29uZmlnJztcblxuICBzYXZlKGludGVyYWN0aW9uQ29uZmlnKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0aWVzKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMua2V5XTogdGhpcy5wcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLihpbnRlcmFjdGlvbkNvbmZpZ1trZXldLmVuYWJsZWQgPyB7W2tleV06IGludGVyYWN0aW9uQ29uZmlnW2tleV0uY29uZmlnfSA6IHt9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgfVxuICBsb2FkKGludGVyYWN0aW9uQ29uZmlnKSB7XG4gICAgLy8gY29udmVydCB2MCAtPiB2MVxuICAgIC8vIHJldHVybiBlbmFibGVkOiBmYWxzZSBpZiBkaXNhYmxlZCxcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnByb3BlcnRpZXMpXG4gICAgICA/IHtcbiAgICAgICAgICBbdGhpcy5rZXldOiB0aGlzLnByb3BlcnRpZXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAuLi4oaW50ZXJhY3Rpb25Db25maWdba2V5XSB8fCB7fSksXG4gICAgICAgICAgICAgICAgICBlbmFibGVkOiBCb29sZWFuKGludGVyYWN0aW9uQ29uZmlnW2tleV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICA6IHt9O1xuICB9XG59XG5cbmNvbnN0IGludGVyYWN0aW9uUHJvcHNWMSA9IFsuLi5pbnRlcmFjdGlvblByb3BzVjAsICdnZW9jb2RlcicsICdjb29yZGluYXRlJ107XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvblNjaGVtYVYxIGV4dGVuZHMgU2NoZW1hIHtcbiAga2V5ID0gJ2ludGVyYWN0aW9uQ29uZmlnJztcblxuICBzYXZlKGludGVyYWN0aW9uQ29uZmlnKSB7XG4gICAgLy8gc2F2ZSBjb25maWcgZXZlbiBpZiBkaXNhYmxlZCxcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnByb3BlcnRpZXMpXG4gICAgICA/IHtcbiAgICAgICAgICBbdGhpcy5rZXldOiB0aGlzLnByb3BlcnRpZXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgW2tleV06IHtcbiAgICAgICAgICAgICAgICAuLi5pbnRlcmFjdGlvbkNvbmZpZ1trZXldLmNvbmZpZyxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiBpbnRlcmFjdGlvbkNvbmZpZ1trZXldLmVuYWJsZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgfVxuICBsb2FkKGludGVyYWN0aW9uQ29uZmlnKSB7XG4gICAgY29uc3QgbW9kaWZpZWRDb25maWcgPSBpbnRlcmFjdGlvbkNvbmZpZztcbiAgICBPYmplY3Qua2V5cyhpbnRlcmFjdGlvbkNvbmZpZykuZm9yRWFjaChjb25maWdUeXBlID0+IHtcbiAgICAgIGlmIChjb25maWdUeXBlID09PSAndG9vbHRpcCcpIHtcbiAgICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gbW9kaWZpZWRDb25maWdbY29uZmlnVHlwZV0uZmllbGRzVG9TaG93O1xuICAgICAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChmaWVsZHNUb1Nob3cpKSB7XG4gICAgICAgICAgcmV0dXJuIHtbdGhpcy5rZXldOiBtb2RpZmllZENvbmZpZ307XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzVG9TaG93KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgZmllbGRzVG9TaG93W2tleV0gPSBmaWVsZHNUb1Nob3dba2V5XS5tYXAoZmllbGREYXRhID0+IHtcbiAgICAgICAgICAgIGlmICghZmllbGREYXRhLm5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZERhdGEsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBudWxsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmllbGREYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtbdGhpcy5rZXldOiBtb2RpZmllZENvbmZpZ307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZpbHRlclByb3BzVjAgPSB7XG4gIGRhdGFJZDogbnVsbCxcbiAgaWQ6IG51bGwsXG4gIG5hbWU6IG51bGwsXG4gIHR5cGU6IG51bGwsXG4gIHZhbHVlOiBudWxsLFxuICBlbmxhcmdlZDogbnVsbFxufTtcblxuZXhwb3J0IGNsYXNzIERpbWVuc2lvbkZpZWxkU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZShmaWVsZCkge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBmaWVsZCA/IHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGZpZWxkKVt0aGlzLmtleV0gOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoZmllbGQpIHtcbiAgICByZXR1cm4ge1t0aGlzLmtleV06IGZpZWxkfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3BsaXRNYXBzU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHtcbiAgY29udmVydExheWVyU2V0dGluZ3MoYWNjdSwgW2tleSwgdmFsdWVdKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogdmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogQm9vbGVhbih2YWx1ZS5pc1Zpc2libGUpXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYWNjdTtcbiAgfVxuXG4gIGxvYWQoc3BsaXRNYXBzKSB7XG4gICAgLy8gcHJldmlvdXMgc3BsaXRNYXBzIFNjaGVtYSB7bGF5ZXJzOiB7bGF5ZXJJZDoge2lzVmlzaWJsZSwgaXNBdmFpbGFibGV9fX1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShzcGxpdE1hcHMpIHx8ICFzcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3NwbGl0TWFwczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzcGxpdE1hcHM6IHNwbGl0TWFwcy5tYXAoc2V0dGluZ3MgPT4gKHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGxheWVyczogT2JqZWN0LmVudHJpZXMoc2V0dGluZ3MubGF5ZXJzIHx8IHt9KS5yZWR1Y2UodGhpcy5jb252ZXJ0TGF5ZXJTZXR0aW5ncywge30pXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQcm9wc1YxID0ge1xuICAuLi5maWx0ZXJQcm9wc1YwLFxuICBwbG90VHlwZTogbnVsbCxcbiAgYW5pbWF0aW9uV2luZG93OiBudWxsLFxuICB5QXhpczogbmV3IERpbWVuc2lvbkZpZWxkU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBrZXk6ICd5QXhpcycsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgbmFtZTogbnVsbCxcbiAgICAgIHR5cGU6IG51bGxcbiAgICB9XG4gIH0pLFxuXG4gIC8vIHBvbHlnb24gZmlsdGVyIHByb3BlcnRpZXNcbiAgbGF5ZXJJZDogbnVsbCxcbiAgc3BlZWQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0aWVzVjAgPSB7XG4gIGZpbHRlcnM6IG5ldyBGaWx0ZXJTY2hlbWFWMCh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gICAgcHJvcGVydGllczogZmlsdGVyUHJvcHNWMFxuICB9KSxcbiAgbGF5ZXJzOiBuZXcgTGF5ZXJTY2hlbWFWMCh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gICAgcHJvcGVydGllczogbGF5ZXJQcm9wc1YwXG4gIH0pLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogbmV3IEludGVyYWN0aW9uU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICAgIHByb3BlcnRpZXM6IGludGVyYWN0aW9uUHJvcHNWMFxuICB9KSxcbiAgbGF5ZXJCbGVuZGluZzogbnVsbFxufTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnRpZXNWMSA9IHtcbiAgZmlsdGVyczogbmV3IEZpbHRlclNjaGVtYVYwKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBmaWx0ZXJQcm9wc1YxXG4gIH0pLFxuICBsYXllcnM6IG5ldyBMYXllclNjaGVtYVYwKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBsYXllclByb3BzVjFcbiAgfSksXG4gIGludGVyYWN0aW9uQ29uZmlnOiBuZXcgSW50ZXJhY3Rpb25TY2hlbWFWMSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgcHJvcGVydGllczogaW50ZXJhY3Rpb25Qcm9wc1YxXG4gIH0pLFxuICBsYXllckJsZW5kaW5nOiBudWxsLFxuICBzcGxpdE1hcHM6IG5ldyBTcGxpdE1hcHNTY2hlbWEoe1xuICAgIGtleTogJ3NwbGl0TWFwcycsXG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjFcbiAgfSksXG4gIGFuaW1hdGlvbkNvbmZpZzogbmV3IFNjaGVtYSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY3VycmVudFRpbWU6IG51bGwsXG4gICAgICBzcGVlZDogbnVsbFxuICAgIH0sXG4gICAga2V5OiAnYW5pbWF0aW9uQ29uZmlnJ1xuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IHZpc1N0YXRlU2NoZW1hVjAgPSBuZXcgU2NoZW1hKHtcbiAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gIHByb3BlcnRpZXM6IHByb3BlcnRpZXNWMCxcbiAga2V5OiAndmlzU3RhdGUnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpc1N0YXRlU2NoZW1hVjEgPSBuZXcgU2NoZW1hKHtcbiAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gIHByb3BlcnRpZXM6IHByb3BlcnRpZXNWMSxcbiAga2V5OiAndmlzU3RhdGUnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpc1N0YXRlU2NoZW1hID0ge1xuICBbVkVSU0lPTlMudjBdOiB7XG4gICAgc2F2ZTogdG9TYXZlID0+IHZpc1N0YXRlU2NoZW1hVjAuc2F2ZSh0b1NhdmUpLFxuICAgIGxvYWQ6IHRvTG9hZCA9PiB2aXNTdGF0ZVNjaGVtYVYxLmxvYWQodmlzU3RhdGVTY2hlbWFWMC5sb2FkKHRvTG9hZCkudmlzU3RhdGUpXG4gIH0sXG4gIFtWRVJTSU9OUy52MV06IHZpc1N0YXRlU2NoZW1hVjFcbn07XG5cbi8vIHRlc3QgbG9hZCB2MFxuZXhwb3J0IGRlZmF1bHQgdmlzU3RhdGVTY2hlbWE7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFBb0QsU0FBQU8sUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUE7QUFBQSxTQUFBb0IsV0FBQWxCLENBQUEsRUFBQUksQ0FBQSxFQUFBTixDQUFBLFdBQUFNLENBQUEsT0FBQWUsZ0JBQUEsYUFBQWYsQ0FBQSxPQUFBZ0IsMkJBQUEsYUFBQXBCLENBQUEsRUFBQXFCLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBbkIsQ0FBQSxFQUFBTixDQUFBLFlBQUFxQixnQkFBQSxhQUFBbkIsQ0FBQSxFQUFBd0IsV0FBQSxJQUFBcEIsQ0FBQSxDQUFBSyxLQUFBLENBQUFULENBQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUF1QiwwQkFBQSxjQUFBckIsQ0FBQSxJQUFBeUIsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQUMsSUFBQSxDQUFBTixPQUFBLENBQUFDLFNBQUEsQ0FBQUUsT0FBQSxpQ0FBQXpCLENBQUEsYUFBQXFCLHlCQUFBLFlBQUFBLDBCQUFBLGFBQUFyQixDQUFBLFVBMUJwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVVBO0FBQ0E7QUFDQTs7QUFFTyxJQUFNNkIsZ0JBQWdCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFTaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNFLHNCQUFzQkEsQ0FBQ0MsTUFBTSxFQUFFO0VBQ3RDLElBQU1DLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQU1DLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFbEM7RUFDQSxJQUFJRixNQUFNLENBQUNHLFNBQVMsQ0FBQ0MsUUFBUSxFQUFFO0lBQzdCLE9BQU8sYUFBYTtFQUN0Qjs7RUFFQTtFQUNBLElBQUlKLE1BQU0sQ0FBQ0csU0FBUyxDQUFDRSxPQUFPLEVBQUU7SUFDNUIsT0FBTyxXQUFXO0VBQ3BCOztFQUVBO0VBQ0E7RUFDQSxJQUNFTCxNQUFNLENBQUNHLFNBQVMsQ0FBQ0csTUFBTSxLQUFLTCxhQUFhLElBQ3pDRCxNQUFNLENBQUNHLFNBQVMsQ0FBQ0ksV0FBVyxDQUFDQyxJQUFJLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDO0lBQUEsT0FBS0QsQ0FBQyxLQUFLUCxrQkFBa0IsQ0FBQ1EsQ0FBQyxDQUFDO0VBQUEsRUFBQyxFQUN4RTtJQUNBLE9BQU8sYUFBYTtFQUN0QjtFQUVBLE9BQU8sV0FBVztBQUNwQjs7QUFFQTtBQUFBLElBQ01DLHNCQUFzQiwwQkFBQUMsT0FBQTtFQUFBLFNBQUFELHVCQUFBO0lBQUEsSUFBQUUsS0FBQTtJQUFBLElBQUFDLGdCQUFBLG1CQUFBSCxzQkFBQTtJQUFBLFNBQUFJLElBQUEsR0FBQXBDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBb0MsSUFBQSxPQUFBQyxLQUFBLENBQUFGLElBQUEsR0FBQUcsSUFBQSxNQUFBQSxJQUFBLEdBQUFILElBQUEsRUFBQUcsSUFBQTtNQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQXZDLFNBQUEsQ0FBQXVDLElBQUE7SUFBQTtJQUFBTCxLQUFBLEdBQUEzQixVQUFBLE9BQUF5QixzQkFBQSxLQUFBUSxNQUFBLENBQUFILElBQUE7SUFBQSxJQUFBbEMsZ0JBQUEsYUFBQStCLEtBQUEsYUFDaEJPLGtCQUFRLENBQUNDLEVBQUU7SUFBQSxPQUFBUixLQUFBO0VBQUE7RUFBQSxJQUFBUyxVQUFBLGFBQUFYLHNCQUFBLEVBQUFDLE9BQUE7RUFBQSxXQUFBVyxhQUFBLGFBQUFaLHNCQUFBO0lBQUFhLEdBQUE7SUFBQUMsS0FBQSxFQUNyQixTQUFBQyxJQUFJQSxDQUFDQyxLQUFLLEVBQUU7TUFDVjtNQUNBLFdBQUE3QyxnQkFBQSxpQkFDRyxJQUFJLENBQUMwQyxHQUFHLEVBQUdHLEtBQUssS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDQywyQkFBMkIsQ0FBQ0QsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDSCxHQUFHLENBQUMsR0FBRyxJQUFJO0lBRXpGO0VBQUM7SUFBQUEsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQUksSUFBSUEsQ0FBQ0YsS0FBSyxFQUFFRyxPQUFPLEVBQUVDLFdBQVcsRUFBRTtNQUNoQyxJQUFBQyxjQUFBLEdBQWlCRixPQUFPLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFBQyxlQUFBLE9BQUFDLGVBQUEsYUFBQUgsY0FBQTtRQUEzQmhDLE1BQU0sR0FBQWtDLGVBQUE7TUFDYixJQUFJRSxTQUFTLEdBQUcsSUFBSSxDQUFDWixHQUFHO01BQ3hCLElBQUl4QixNQUFNLENBQUNxQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQ2IsR0FBRyxLQUFLLFdBQVcsSUFBSUcsS0FBSyxFQUFFO1FBQ2xFUyxTQUFTLEdBQUdyQyxzQkFBc0IsQ0FBQ0MsTUFBTSxDQUFDO01BQzVDO01BQ0E7TUFDQSxPQUFPO1FBQ0xzQyxjQUFjLEVBQUE1RCxhQUFBLENBQUFBLGFBQUEsS0FDUnFELFdBQVcsQ0FBQ08sY0FBYyxJQUFJLENBQUMsQ0FBQyxXQUFBeEQsZ0JBQUEsaUJBQ25Dc0QsU0FBUyxFQUFHVCxLQUFLO01BRXRCLENBQUM7SUFDSDtFQUFDO0FBQUEsRUF0QmtDWSxrQkFBTTtBQUFBLElBeUJyQ0Msc0JBQXNCLDBCQUFBQyxRQUFBO0VBQUEsU0FBQUQsdUJBQUE7SUFBQSxJQUFBRSxNQUFBO0lBQUEsSUFBQTVCLGdCQUFBLG1CQUFBMEIsc0JBQUE7SUFBQSxTQUFBRyxLQUFBLEdBQUFoRSxTQUFBLENBQUFDLE1BQUEsRUFBQW9DLElBQUEsT0FBQUMsS0FBQSxDQUFBMEIsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO01BQUE1QixJQUFBLENBQUE0QixLQUFBLElBQUFqRSxTQUFBLENBQUFpRSxLQUFBO0lBQUE7SUFBQUYsTUFBQSxHQUFBeEQsVUFBQSxPQUFBc0Qsc0JBQUEsS0FBQXJCLE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFsQyxnQkFBQSxhQUFBNEQsTUFBQSxhQUNoQnRCLGtCQUFRLENBQUNDLEVBQUU7SUFBQSxPQUFBcUIsTUFBQTtFQUFBO0VBQUEsSUFBQXBCLFVBQUEsYUFBQWtCLHNCQUFBLEVBQUFDLFFBQUE7RUFBQSxXQUFBbEIsYUFBQSxhQUFBaUIsc0JBQUE7SUFBQWhCLEdBQUE7SUFBQUMsS0FBQSxFQUNyQixTQUFBQyxJQUFJQSxDQUFDbUIsS0FBSyxFQUFFO01BQ1YsV0FBQS9ELGdCQUFBLGlCQUFTLElBQUksQ0FBQzBDLEdBQUcsRUFBR3FCLEtBQUs7SUFDM0I7RUFBQztJQUFBckIsR0FBQTtJQUFBQyxLQUFBLEVBQ0QsU0FBQUksSUFBSUEsQ0FBQ2dCLEtBQUssRUFBRWYsT0FBTyxFQUFFQyxXQUFXLEVBQUU7TUFDaEMsSUFBQWUsZUFBQSxHQUFpQmhCLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUFjLGVBQUEsT0FBQVosZUFBQSxhQUFBVyxlQUFBO1FBQTNCOUMsTUFBTSxHQUFBK0MsZUFBQTtNQUNiO01BQ0EsSUFBSSxJQUFJLENBQUN2QixHQUFHLEtBQUssV0FBVyxJQUFJeEIsTUFBTSxDQUFDcUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN6RDtRQUNBO1FBQ0EsT0FBTyxDQUFDLENBQUM7TUFDWDtNQUVBLE9BQU87UUFDTEMsY0FBYyxFQUFBNUQsYUFBQSxDQUFBQSxhQUFBLEtBQ1JxRCxXQUFXLENBQUNPLGNBQWMsSUFBSSxDQUFDLENBQUMsV0FBQXhELGdCQUFBLGlCQUNuQyxJQUFJLENBQUMwQyxHQUFHLEVBQUdxQixLQUFLO01BRXJCLENBQUM7SUFDSDtFQUFDO0FBQUEsRUFwQmtDTixrQkFBTSxHQXVCM0M7QUFBQSxJQUNNUyxtQkFBbUIsMEJBQUFDLFFBQUE7RUFBQSxTQUFBRCxvQkFBQTtJQUFBLElBQUFFLE1BQUE7SUFBQSxJQUFBcEMsZ0JBQUEsbUJBQUFrQyxtQkFBQTtJQUFBLFNBQUFHLEtBQUEsR0FBQXhFLFNBQUEsQ0FBQUMsTUFBQSxFQUFBb0MsSUFBQSxPQUFBQyxLQUFBLENBQUFrQyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7TUFBQXBDLElBQUEsQ0FBQW9DLEtBQUEsSUFBQXpFLFNBQUEsQ0FBQXlFLEtBQUE7SUFBQTtJQUFBRixNQUFBLEdBQUFoRSxVQUFBLE9BQUE4RCxtQkFBQSxLQUFBN0IsTUFBQSxDQUFBSCxJQUFBO0lBQUEsSUFBQWxDLGdCQUFBLGFBQUFvRSxNQUFBLGFBQ2I5QixrQkFBUSxDQUFDQyxFQUFFO0lBQUEsT0FBQTZCLE1BQUE7RUFBQTtFQUFBLElBQUE1QixVQUFBLGFBQUEwQixtQkFBQSxFQUFBQyxRQUFBO0VBQUEsV0FBQTFCLGFBQUEsYUFBQXlCLG1CQUFBO0lBQUF4QixHQUFBO0lBQUFDLEtBQUEsRUFDckIsU0FBQUksSUFBSUEsQ0FBQ3dCLEtBQUssRUFBRXZCLE9BQU8sRUFBRUMsV0FBVyxFQUFFO01BQ2hDO01BQ0EsT0FBTztRQUNML0IsTUFBTSxFQUFBdEIsYUFBQSxDQUFBQSxhQUFBLEtBQ0FxRCxXQUFXLENBQUMvQixNQUFNLElBQUksQ0FBQyxDQUFDLFdBQUFsQixnQkFBQSxpQkFDM0IsSUFBSSxDQUFDMEMsR0FBRyxFQUFHNkIsS0FBSztNQUVyQixDQUFDO0lBQ0g7RUFBQztBQUFBLEVBVitCZCxrQkFBTSxHQWF4QztBQUNBO0FBQUEsSUFDTWUsb0JBQW9CLDBCQUFBQyxRQUFBO0VBQUEsU0FBQUQscUJBQUE7SUFBQSxJQUFBRSxNQUFBO0lBQUEsSUFBQTFDLGdCQUFBLG1CQUFBd0Msb0JBQUE7SUFBQSxTQUFBRyxLQUFBLEdBQUE5RSxTQUFBLENBQUFDLE1BQUEsRUFBQW9DLElBQUEsT0FBQUMsS0FBQSxDQUFBd0MsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO01BQUExQyxJQUFBLENBQUEwQyxLQUFBLElBQUEvRSxTQUFBLENBQUErRSxLQUFBO0lBQUE7SUFBQUYsTUFBQSxHQUFBdEUsVUFBQSxPQUFBb0Usb0JBQUEsS0FBQW5DLE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFsQyxnQkFBQSxhQUFBMEUsTUFBQSxhQUNkcEMsa0JBQVEsQ0FBQ0MsRUFBRTtJQUFBLE9BQUFtQyxNQUFBO0VBQUE7RUFBQSxJQUFBbEMsVUFBQSxhQUFBZ0Msb0JBQUEsRUFBQUMsUUFBQTtFQUFBLFdBQUFoQyxhQUFBLGFBQUErQixvQkFBQTtJQUFBOUIsR0FBQTtJQUFBQyxLQUFBLEVBQ3JCLFNBQUFJLElBQUlBLENBQUN3QixLQUFLLEVBQUV2QixPQUFPLEVBQUVDLFdBQVcsRUFBRTtNQUNoQztNQUNBLE9BQU87UUFDTC9CLE1BQU0sRUFBQXRCLGFBQUEsQ0FBQUEsYUFBQSxLQUNBcUQsV0FBVyxDQUFDL0IsTUFBTSxJQUFJLENBQUMsQ0FBQztVQUM1QjJELE9BQU8sRUFBRTFGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUYsS0FBSyxDQUFDLENBQUNPLE1BQU0sQ0FDaEMsVUFBQ0MsSUFBSSxFQUFFckMsR0FBRztZQUFBLE9BQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FDTG1GLElBQUksV0FBQS9FLGdCQUFBLGlCQUNOMEMsR0FBRyxFQUFHNkIsS0FBSyxDQUFDN0IsR0FBRyxDQUFDLENBQUNDLEtBQUs7VUFBQSxDQUN2QixFQUNGLENBQUMsQ0FDSDtRQUFDO01BRUwsQ0FBQztJQUNIO0VBQUM7QUFBQSxFQWhCZ0NjLGtCQUFNLEdBbUJ6QztBQUFBLElBQ011Qiw4QkFBOEIsMEJBQUFDLFFBQUE7RUFBQSxTQUFBRCwrQkFBQTtJQUFBLElBQUFFLE1BQUE7SUFBQSxJQUFBbEQsZ0JBQUEsbUJBQUFnRCw4QkFBQTtJQUFBLFNBQUFHLEtBQUEsR0FBQXRGLFNBQUEsQ0FBQUMsTUFBQSxFQUFBb0MsSUFBQSxPQUFBQyxLQUFBLENBQUFnRCxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7TUFBQWxELElBQUEsQ0FBQWtELEtBQUEsSUFBQXZGLFNBQUEsQ0FBQXVGLEtBQUE7SUFBQTtJQUFBRixNQUFBLEdBQUE5RSxVQUFBLE9BQUE0RSw4QkFBQSxLQUFBM0MsTUFBQSxDQUFBSCxJQUFBO0lBQUEsSUFBQWxDLGdCQUFBLGFBQUFrRixNQUFBLGFBQ3hCNUMsa0JBQVEsQ0FBQ0MsRUFBRTtJQUFBLE9BQUEyQyxNQUFBO0VBQUE7RUFBQSxJQUFBMUMsVUFBQSxhQUFBd0MsOEJBQUEsRUFBQUMsUUFBQTtFQUFBLFdBQUF4QyxhQUFBLGFBQUF1Qyw4QkFBQTtJQUFBdEMsR0FBQTtJQUFBQyxLQUFBLEVBQ3JCLFNBQUFJLElBQUlBLENBQUN3QixLQUFLLEVBQUV2QixPQUFPLEVBQUVDLFdBQVcsRUFBRTtNQUNoQztNQUNBLElBQU1vQyxpQkFBaUIsR0FBR3BDLFdBQVcsQ0FBQy9CLE1BQU0sSUFBSSxDQUFDLENBQUM7TUFDbEQsT0FBTztRQUNMQSxNQUFNLEVBQUF0QixhQUFBLENBQUFBLGFBQUEsS0FDRHlGLGlCQUFpQjtVQUNwQmhFLFNBQVMsRUFBQXpCLGFBQUEsQ0FBQUEsYUFBQSxLQUNIeUYsaUJBQWlCLENBQUNoRSxTQUFTLElBQUksQ0FBQyxDQUFDLFdBQUFyQixnQkFBQSxpQkFDcEMsSUFBSSxDQUFDMEMsR0FBRyxFQUFHNkIsS0FBSztRQUNsQjtNQUVMLENBQUM7SUFDSDtFQUFDO0FBQUEsRUFkMENkLGtCQUFNO0FBQUEsSUFpQjdDNkIsc0JBQXNCLDBCQUFBQyxRQUFBO0VBQUEsU0FBQUQsdUJBQUE7SUFBQSxJQUFBRSxNQUFBO0lBQUEsSUFBQXhELGdCQUFBLG1CQUFBc0Qsc0JBQUE7SUFBQSxTQUFBRyxLQUFBLEdBQUE1RixTQUFBLENBQUFDLE1BQUEsRUFBQW9DLElBQUEsT0FBQUMsS0FBQSxDQUFBc0QsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO01BQUF4RCxJQUFBLENBQUF3RCxLQUFBLElBQUE3RixTQUFBLENBQUE2RixLQUFBO0lBQUE7SUFBQUYsTUFBQSxHQUFBcEYsVUFBQSxPQUFBa0Ysc0JBQUEsS0FBQWpELE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFsQyxnQkFBQSxhQUFBd0YsTUFBQSxhQUNoQmxELGtCQUFRLENBQUNDLEVBQUU7SUFBQSxJQUFBdkMsZ0JBQUEsYUFBQXdGLE1BQUEsU0FDZixXQUFXO0lBQUEsT0FBQUEsTUFBQTtFQUFBO0VBQUEsSUFBQWhELFVBQUEsYUFBQThDLHNCQUFBLEVBQUFDLFFBQUE7RUFBQSxXQUFBOUMsYUFBQSxhQUFBNkMsc0JBQUE7SUFBQTVDLEdBQUE7SUFBQUMsS0FBQSxFQUVqQixTQUFBSSxJQUFJQSxDQUFDMUIsU0FBUyxFQUFFMkIsT0FBTyxFQUFFMkMsV0FBVyxFQUFFO01BQ3BDLElBQUFDLGVBQUEsR0FBaUI1QyxPQUFPLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFBMEMsZUFBQSxPQUFBeEMsZUFBQSxhQUFBdUMsZUFBQTtRQUEzQjFFLE1BQU0sR0FBQTJFLGVBQUE7TUFDYixJQUFNQyxNQUFNLEdBQUc7UUFDYkMsT0FBTyxFQUFFO1VBQ1B6RSxRQUFRLEVBQUUsVUFBVTtVQUNwQjBFLGNBQWMsRUFBRTtRQUNsQjtNQUNGLENBQUM7TUFFRCxJQUFJOUUsTUFBTSxDQUFDcUMsSUFBSSxJQUFJdUMsTUFBTSxFQUFFO1FBQ3pCLElBQU1HLFlBQVksR0FBR0gsTUFBTSxDQUFDNUUsTUFBTSxDQUFDcUMsSUFBSSxDQUFDO1FBQ3hDLE9BQU87VUFDTHJDLE1BQU0sRUFBQXRCLGFBQUEsQ0FBQUEsYUFBQSxLQUNBK0YsV0FBVyxDQUFDekUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUM1QkcsU0FBUyxFQUFFbEMsTUFBTSxDQUFDQyxJQUFJLENBQUNpQyxTQUFTLENBQUMsQ0FBQ3lELE1BQU0sQ0FDdEMsVUFBQ0MsSUFBSSxFQUFFckMsR0FBRztjQUFBLE9BQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FDTG1GLElBQUksR0FDSGtCLFlBQVksQ0FBQ3ZELEdBQUcsQ0FBQyxPQUFBMUMsZ0JBQUEsaUJBQ2ZpRyxZQUFZLENBQUN2RCxHQUFHLENBQUMsRUFBR3JCLFNBQVMsQ0FBQ3FCLEdBQUcsQ0FBQyxRQUFBMUMsZ0JBQUEsaUJBQ2xDMEMsR0FBRyxFQUFHckIsU0FBUyxDQUFDcUIsR0FBRyxDQUFDLENBQUM7WUFBQSxDQUMzQixFQUNGLENBQUMsQ0FDSDtVQUFDO1FBRUwsQ0FBQztNQUNIO01BRUEsT0FBTztRQUNMeEIsTUFBTSxFQUFBdEIsYUFBQSxDQUFBQSxhQUFBLEtBQ0ErRixXQUFXLENBQUN6RSxNQUFNLElBQUksQ0FBQyxDQUFDO1VBQzVCRyxTQUFTLEVBQVRBO1FBQVM7TUFFYixDQUFDO0lBQ0g7RUFBQztBQUFBLEVBckNrQ29DLGtCQUFNO0FBQUEsSUF3Q3JDeUMseUJBQXlCLDBCQUFBQyxRQUFBO0VBQUEsU0FBQUQsMEJBQUE7SUFBQSxJQUFBRSxNQUFBO0lBQUEsSUFBQXBFLGdCQUFBLG1CQUFBa0UseUJBQUE7SUFBQSxTQUFBRyxLQUFBLEdBQUF4RyxTQUFBLENBQUFDLE1BQUEsRUFBQW9DLElBQUEsT0FBQUMsS0FBQSxDQUFBa0UsS0FBQSxHQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO01BQUFwRSxJQUFBLENBQUFvRSxLQUFBLElBQUF6RyxTQUFBLENBQUF5RyxLQUFBO0lBQUE7SUFBQUYsTUFBQSxHQUFBaEcsVUFBQSxPQUFBOEYseUJBQUEsS0FBQTdELE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFsQyxnQkFBQSxhQUFBb0csTUFBQSxhQUNuQjlELGtCQUFRLENBQUNDLEVBQUU7SUFBQSxPQUFBNkQsTUFBQTtFQUFBO0VBQUEsSUFBQTVELFVBQUEsYUFBQTBELHlCQUFBLEVBQUFDLFFBQUE7RUFBQSxXQUFBMUQsYUFBQSxhQUFBeUQseUJBQUE7SUFBQXhELEdBQUE7SUFBQUMsS0FBQSxFQUNyQixTQUFBSSxJQUFJQSxDQUFDSixLQUFLLEVBQUU7TUFDVixPQUFPLENBQUMsQ0FBQztJQUNYO0VBQUM7QUFBQSxFQUpxQ2Msa0JBQU07QUFPOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFTyxJQUFNOEMsWUFBWSxHQUFBdkYsT0FBQSxDQUFBdUYsWUFBQSxHQUFHO0VBQzFCQyxFQUFFLEVBQUUsSUFBSTtFQUNSakQsSUFBSSxFQUFFLElBQUk7RUFFVjtFQUNBa0QsTUFBTSxFQUFFLElBQUl2QyxtQkFBbUIsQ0FBQztJQUFDeEIsR0FBRyxFQUFFO0VBQVEsQ0FBQyxDQUFDO0VBQ2hEZ0UsS0FBSyxFQUFFLElBQUl4QyxtQkFBbUIsQ0FBQztJQUFDeEIsR0FBRyxFQUFFO0VBQU8sQ0FBQyxDQUFDO0VBQzlDaUUsS0FBSyxFQUFFLElBQUl6QyxtQkFBbUIsQ0FBQztJQUFDeEIsR0FBRyxFQUFFO0VBQU8sQ0FBQyxDQUFDO0VBQzlDa0UsU0FBUyxFQUFFLElBQUkxQyxtQkFBbUIsQ0FBQztJQUFDeEIsR0FBRyxFQUFFO0VBQVcsQ0FBQyxDQUFDO0VBQ3REbUUsTUFBTSxFQUFFLElBQUkzQyxtQkFBbUIsQ0FBQztJQUFDeEIsR0FBRyxFQUFFO0VBQVEsQ0FBQyxDQUFDO0VBQ2hEb0UsZ0JBQWdCLEVBQUUsSUFBSTVDLG1CQUFtQixDQUFDO0lBQUN4QixHQUFHLEVBQUU7RUFBa0IsQ0FBQyxDQUFDO0VBRXBFO0VBQ0FyQixTQUFTLEVBQUUsSUFBSWlFLHNCQUFzQixDQUFDO0lBQUM1QyxHQUFHLEVBQUU7RUFBVyxDQUFDLENBQUM7RUFFekQ7RUFDQTtFQUNBbUMsT0FBTyxFQUFFLElBQUlMLG9CQUFvQixDQUFDLENBQUM7RUFFbkM7RUFDQXVDLFVBQVUsRUFBRSxJQUFJbEYsc0JBQXNCLENBQUM7SUFDckNtRixVQUFVLEVBQUVqRyxnQkFBZ0I7SUFDNUIyQixHQUFHLEVBQUU7RUFDUCxDQUFDLENBQUM7RUFDRnVFLFVBQVUsRUFBRSxJQUFJdkQsc0JBQXNCLENBQUM7SUFDckNoQixHQUFHLEVBQUU7RUFDUCxDQUFDLENBQUM7RUFDRndFLFNBQVMsRUFBRSxJQUFJckYsc0JBQXNCLENBQUM7SUFDcENtRixVQUFVLEVBQUVqRyxnQkFBZ0I7SUFDNUIyQixHQUFHLEVBQUU7RUFDUCxDQUFDLENBQUM7RUFDRnlFLFNBQVMsRUFBRSxJQUFJekQsc0JBQXNCLENBQUM7SUFDcENoQixHQUFHLEVBQUU7RUFDUCxDQUFDLENBQUM7RUFFRjtFQUNBMEUsUUFBUSxFQUFFLElBQUlwQyw4QkFBOEIsQ0FBQztJQUFDdEMsR0FBRyxFQUFFO0VBQVUsQ0FBQyxDQUFDO0VBQy9EMkUsZ0JBQWdCLEVBQUUsSUFBSXJDLDhCQUE4QixDQUFDO0lBQ25EdEMsR0FBRyxFQUFFO0VBQ1AsQ0FBQyxDQUFDO0VBQ0Y0RSxlQUFlLEVBQUUsSUFBSXRDLDhCQUE4QixDQUFDO0lBQUN0QyxHQUFHLEVBQUU7RUFBaUIsQ0FBQyxDQUFDO0VBRTdFO0VBQ0E2RSxZQUFZLEVBQUUsSUFBSXJCLHlCQUF5QixDQUFDO0FBQzlDLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBRkEsSUFHTXNCLGNBQWMsMEJBQUFDLFFBQUE7RUFBQSxTQUFBRCxlQUFBO0lBQUEsSUFBQXhGLGdCQUFBLG1CQUFBd0YsY0FBQTtJQUFBLE9BQUFwSCxVQUFBLE9BQUFvSCxjQUFBLEVBQUEzSCxTQUFBO0VBQUE7RUFBQSxJQUFBMkMsVUFBQSxhQUFBZ0YsY0FBQSxFQUFBQyxRQUFBO0VBQUEsV0FBQWhGLGFBQUEsYUFBQStFLGNBQUE7SUFBQTlFLEdBQUE7SUFBQUMsS0FBQSxFQUNsQixTQUFBQyxJQUFJQSxDQUFDaUMsT0FBTyxFQUFFNkMsS0FBSyxFQUFFO01BQ25CO01BQ0E7TUFDQSxXQUFBMUgsZ0JBQUEsaUJBQ0csSUFBSSxDQUFDMEMsR0FBRyxFQUFHdkQsTUFBTSxDQUFDQyxJQUFJLENBQUN5RixPQUFPLENBQUMsQ0FBQ0MsTUFBTSxDQUNyQyxVQUFDQyxJQUFJLEVBQUU0QyxJQUFJO1FBQUEsT0FBQS9ILGFBQUEsQ0FBQUEsYUFBQSxLQUNObUYsSUFBSSxXQUFBL0UsZ0JBQUEsaUJBQ04ySCxJQUFJLEVBQUc5QyxPQUFPLENBQUM4QyxJQUFJLENBQUMsQ0FBQ2hGLEtBQUs7TUFBQSxDQUMzQixFQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUw7RUFBQztJQUFBRCxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBSSxJQUFJQSxDQUFDOEIsT0FBTyxFQUFFO01BQ1osT0FBTztRQUFDQSxPQUFPLEVBQVBBO01BQU8sQ0FBQztJQUNsQjtFQUFDO0FBQUEsRUFqQjBCcEIsa0JBQU07QUFBQSxJQW9CN0JtRSxpQkFBaUIsMEJBQUFDLFFBQUE7RUFBQSxTQUFBRCxrQkFBQTtJQUFBLElBQUE1RixnQkFBQSxtQkFBQTRGLGlCQUFBO0lBQUEsT0FBQXhILFVBQUEsT0FBQXdILGlCQUFBLEVBQUEvSCxTQUFBO0VBQUE7RUFBQSxJQUFBMkMsVUFBQSxhQUFBb0YsaUJBQUEsRUFBQUMsUUFBQTtFQUFBLFdBQUFwRixhQUFBLGFBQUFtRixpQkFBQTtJQUFBbEYsR0FBQTtJQUFBQyxLQUFBLEVBQ3JCLFNBQUFDLElBQUlBLENBQUNrRixTQUFTLEVBQUU7TUFDZCxXQUFBOUgsZ0JBQUEsaUJBQ0csSUFBSSxDQUFDMEMsR0FBRyxFQUFHb0YsU0FBUyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsRUFBRTtRQUFBLE9BQUFwSSxhQUFBLENBQUFBLGFBQUEsS0FDdkJvSSxFQUFFO1VBQ0xuRixLQUFLLEVBQUVtRixFQUFFLENBQUNuRixLQUFLLEdBQUcsSUFBQW9GLGtCQUFJLEVBQUNELEVBQUUsQ0FBQ25GLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHO1FBQUk7TUFBQSxDQUN6RCxDQUFDO0lBRVA7RUFBQztJQUFBSCxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBSSxJQUFJQSxDQUFDK0UsU0FBUyxFQUFFO01BQ2QsT0FBTztRQUFDQSxTQUFTLEVBQUUzRixLQUFLLENBQUMrRixPQUFPLENBQUNKLFNBQVMsQ0FBQyxHQUFHQSxTQUFTLEdBQUcsQ0FBQ0EsU0FBUztNQUFDLENBQUM7SUFDeEU7RUFBQztBQUFBLEVBWjZCckUsa0JBQU07QUFldEMsSUFBTTBFLDJCQUEyQixHQUFHO0VBQ2xDcEMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdxQyxFQUFFLEVBQUVwRixPQUFPLEVBQUUyQyxXQUFXLEVBQUs7SUFDckMsSUFBQTBDLGVBQUEsR0FBZ0JyRixPQUFPLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUFBbUYsZUFBQSxPQUFBakYsZUFBQSxhQUFBZ0YsZUFBQTtNQUExQkUsS0FBSyxHQUFBRCxlQUFBO0lBQ1osSUFBTUUsS0FBSyxHQUFHLENBQUNKLEVBQUUsQ0FBQ0ssY0FBYyxDQUFDLGtCQUFrQixDQUFDO0lBQ3BEO0lBQ0EsSUFBTUMsT0FBTyxHQUNYTixFQUFFLENBQUNPLFdBQVcsSUFBSUosS0FBSyxDQUFDckgsTUFBTSxDQUFDRyxTQUFTLENBQUNHLE1BQU0sS0FBS29ILCtCQUFpQixDQUFDcEgsTUFBTSxDQUFDcUgsWUFBWTtJQUUzRixJQUFJTCxLQUFLLElBQUksQ0FBQ0UsT0FBTyxJQUFJSCxLQUFLLENBQUNySCxNQUFNLENBQUNHLFNBQVMsQ0FBQ0UsT0FBTyxFQUFFO01BQ3ZEO01BQ0EsT0FBTztRQUNMdUgsZ0JBQWdCLEVBQUVWLEVBQUUsQ0FBQ3JCLFVBQVU7UUFDL0JnQyxnQkFBZ0IsRUFBRVgsRUFBRSxDQUFDbkI7TUFDdkIsQ0FBQztJQUNIO0lBQ0EsT0FBTyxDQUFDLENBQUM7RUFDWDtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFGQSxJQUdNK0IscUJBQXFCLDBCQUFBQyxTQUFBO0VBQUEsU0FBQUQsc0JBQUE7SUFBQSxJQUFBaEgsZ0JBQUEsbUJBQUFnSCxxQkFBQTtJQUFBLE9BQUE1SSxVQUFBLE9BQUE0SSxxQkFBQSxFQUFBbkosU0FBQTtFQUFBO0VBQUEsSUFBQTJDLFVBQUEsYUFBQXdHLHFCQUFBLEVBQUFDLFNBQUE7RUFBQSxXQUFBeEcsYUFBQSxhQUFBdUcscUJBQUE7SUFBQXRHLEdBQUE7SUFBQUMsS0FBQSxFQUN6QixTQUFBQyxJQUFJQSxDQUFDWSxjQUFjLEVBQUVSLE9BQU8sRUFBRTtNQUM1QjtNQUNBLElBQUFrRyxlQUFBLEdBQWdCbEcsT0FBTyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQWdHLGdCQUFBLE9BQUE5RixlQUFBLGFBQUE2RixlQUFBO1FBQTFCWCxLQUFLLEdBQUFZLGdCQUFBO01BQ1osV0FBQW5KLGdCQUFBLGlCQUNHLElBQUksQ0FBQzBDLEdBQUcsRUFBR3ZELE1BQU0sQ0FBQ0MsSUFBSSxDQUFDb0UsY0FBYyxDQUFDLENBQUNzQixNQUFNO01BQzVDO01BQ0EsVUFBQ0MsSUFBSSxFQUFFckMsR0FBRztRQUFBLE9BQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FDTG1GLElBQUksV0FBQS9FLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFDTndELGNBQWMsQ0FBQ2QsR0FBRyxDQUFDLENBQUNHLEtBQUssRUFBRzBGLEtBQUssQ0FBQ3JILE1BQU0sQ0FBQ3NDLGNBQWMsQ0FBQ2QsR0FBRyxDQUFDLENBQUNHLEtBQUssQ0FBQyxHQUNoRSxJQUFBb0Ysa0JBQUksRUFBQ00sS0FBSyxDQUFDckgsTUFBTSxDQUFDc0MsY0FBYyxDQUFDZCxHQUFHLENBQUMsQ0FBQ0csS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQzlFLElBQUksR0FDUFcsY0FBYyxDQUFDZCxHQUFHLENBQUMsQ0FBQ3FCLEtBQUssRUFBR3dFLEtBQUssQ0FBQ3JILE1BQU0sQ0FBQ3NDLGNBQWMsQ0FBQ2QsR0FBRyxDQUFDLENBQUNxQixLQUFLLENBQUM7TUFBQSxDQUNwRSxFQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUw7RUFBQztJQUFBckIsR0FBQTtJQUFBQyxLQUFBLEVBQ0QsU0FBQUksSUFBSUEsQ0FBQ3FGLEVBQUUsRUFBRXBGLE9BQU8sRUFBRTJDLFdBQVcsRUFBRTtNQUM3QjtNQUNBLElBQUF5RCxnQkFBQSxHQUFnQnBHLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUFrRyxnQkFBQSxPQUFBaEcsZUFBQSxhQUFBK0YsZ0JBQUE7UUFBMUJiLEtBQUssR0FBQWMsZ0JBQUE7TUFDWixJQUFNQyxRQUFRLEdBQUduQiwyQkFBMkIsQ0FBQ0ksS0FBSyxDQUFDaEYsSUFBSSxDQUFDLEdBQ3BENEUsMkJBQTJCLENBQUNJLEtBQUssQ0FBQ2hGLElBQUksQ0FBQyxDQUFDNkUsRUFBRSxFQUFFcEYsT0FBTyxFQUFFMkMsV0FBVyxDQUFDLEdBQ2pFLENBQUMsQ0FBQztNQUVOLE9BQUEvRixhQUFBLENBQUFBLGFBQUEsS0FDSytGLFdBQVc7UUFDZHpFLE1BQU0sRUFBQXRCLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ0ErRixXQUFXLENBQUN6RSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQ3pCa0gsRUFBRSxHQUNGa0IsUUFBUTtNQUNaO0lBRUw7RUFBQztBQUFBLEVBakNpQzdGLGtCQUFNO0FBbUMxQztBQUNBO0FBQ0E7QUFGQSxJQUdNOEYsZ0JBQWdCLDBCQUFBQyxTQUFBO0VBQUEsU0FBQUQsaUJBQUE7SUFBQSxJQUFBdkgsZ0JBQUEsbUJBQUF1SCxnQkFBQTtJQUFBLE9BQUFuSixVQUFBLE9BQUFtSixnQkFBQSxFQUFBMUosU0FBQTtFQUFBO0VBQUEsSUFBQTJDLFVBQUEsYUFBQStHLGdCQUFBLEVBQUFDLFNBQUE7RUFBQSxXQUFBL0csYUFBQSxhQUFBOEcsZ0JBQUE7SUFBQTdHLEdBQUE7SUFBQUMsS0FBQSxFQUNwQixTQUFBQyxJQUFJQSxDQUFDNkcsY0FBYyxFQUFFekcsT0FBTyxFQUFFO01BQzVCLFdBQUFoRCxnQkFBQSxpQkFDRyxJQUFJLENBQUMwQyxHQUFHLEVBQUd2RCxNQUFNLENBQUNDLElBQUksQ0FBQ3FLLGNBQWMsQ0FBQyxDQUFDM0UsTUFBTSxDQUFDLFVBQUNDLElBQUksRUFBRXJDLEdBQUcsRUFBSztRQUM1RHFDLElBQUksQ0FBQ3JDLEdBQUcsQ0FBQyxHQUFHK0csY0FBYyxDQUFDL0csR0FBRyxDQUFDO1FBQy9CLE9BQU9xQyxJQUFJO01BQ2IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRVY7RUFBQztJQUFBckMsR0FBQTtJQUFBQyxLQUFBLEVBQ0QsU0FBQUksSUFBSUEsQ0FBQzJHLEVBQUUsRUFBRTFHLE9BQU8sRUFBRTJDLFdBQVcsRUFBRTtNQUM3QixPQUFBL0YsYUFBQSxDQUFBQSxhQUFBLEtBQ0srRixXQUFXLFdBQUEzRixnQkFBQSxpQkFDYixJQUFJLENBQUMwQyxHQUFHLEVBQUdnSCxFQUFFO0lBRWxCO0VBQUM7QUFBQSxFQWQ0QmpHLGtCQUFNO0FBZ0JyQyxJQUFNa0csdUJBQXVCLEdBQUc7RUFDOUJDLEtBQUssRUFBRSxTQUFQQSxLQUFLQSxDQUFHdkksU0FBUyxFQUFFMkIsT0FBTyxFQUFFQyxXQUFXLEVBQUs7SUFDMUMsSUFBTXFHLFFBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUFPLGdCQUFBLEdBQWdCN0csT0FBTyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFBQTJHLGdCQUFBLE9BQUF6RyxlQUFBLGFBQUF3RyxnQkFBQTtNQUE5QnRCLEtBQUssR0FBQXVCLGdCQUFBO0lBQ1osSUFBTXRCLEtBQUssR0FDVCxDQUFDbkgsU0FBUyxDQUFDb0gsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUNwSCxTQUFTLENBQUMwSSxXQUFXLElBQUksQ0FBQzFJLFNBQVMsQ0FBQzJJLGdCQUFnQjtJQUM5RixJQUFJeEIsS0FBSyxFQUFFO01BQ1Q7TUFDQWMsUUFBUSxDQUFDUyxXQUFXLEdBQUd4QixLQUFLLENBQUNySCxNQUFNLENBQUN5RixLQUFLO01BQ3pDMkMsUUFBUSxDQUFDVSxnQkFBZ0IsR0FBRyxJQUFBQyxtQkFBUyxFQUFDNUksU0FBUyxDQUFDNkksVUFBVSxDQUFDO01BQzNELElBQUk3SSxTQUFTLENBQUM4SSxPQUFPLEVBQUU7UUFDckI7UUFDQTtRQUNBO1FBQ0FiLFFBQVEsQ0FBQ2MsTUFBTSxHQUFHLEtBQUs7TUFDekI7SUFDRjtJQUVBLE9BQU9kLFFBQVE7RUFDakIsQ0FBQztFQUNEdkQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUcxRSxTQUFTLEVBQUUyQixPQUFPLEVBQUVDLFdBQVcsRUFBSztJQUM1QztJQUNBLElBQU1xRyxRQUFzQixHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFBZSxnQkFBQSxHQUFnQnJILE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQUFtSCxnQkFBQSxPQUFBakgsZUFBQSxhQUFBZ0gsZ0JBQUE7TUFBOUI5QixLQUFLLEdBQUErQixnQkFBQTtJQUNaLElBQU05QixLQUFLLEdBQ1RELEtBQUssQ0FBQy9FLGNBQWMsSUFDcEIsQ0FBQytFLEtBQUssQ0FBQy9FLGNBQWMsQ0FBQ2lGLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUN4RCxDQUFDcEgsU0FBUyxDQUFDMEksV0FBVyxJQUN0QixDQUFDMUksU0FBUyxDQUFDMkksZ0JBQWdCO0lBQzdCO0lBQ0EsSUFBTXRCLE9BQU8sR0FDVkgsS0FBSyxDQUFDL0UsY0FBYyxJQUFJK0UsS0FBSyxDQUFDL0UsY0FBYyxDQUFDbUYsV0FBVyxJQUN4RHRILFNBQVMsSUFBSUEsU0FBUyxDQUFDRyxNQUFNLEtBQUtvSCwrQkFBaUIsQ0FBQ3BILE1BQU0sQ0FBQ3FILFlBQWE7SUFFM0UsSUFBSUwsS0FBSyxFQUFFO01BQ1Q7TUFDQWMsUUFBUSxDQUFDUyxXQUFXLEdBQUd4QixLQUFLLENBQUNySCxNQUFNLENBQUN5RixLQUFLO01BQ3pDMkMsUUFBUSxDQUFDVSxnQkFBZ0IsR0FBRyxJQUFBQyxtQkFBUyxFQUFDNUksU0FBUyxDQUFDNkksVUFBVSxDQUFDO01BQzNELElBQUl4QixPQUFPLEVBQUU7UUFDWDtRQUNBWSxRQUFRLENBQUNjLE1BQU0sR0FBRyxJQUFJO1FBQ3RCZCxRQUFRLENBQUMvSCxPQUFPLEdBQUcsS0FBSztNQUMxQjtJQUNGO0lBRUEsT0FBTytILFFBQVE7RUFDakI7QUFDRixDQUFDO0FBQUMsSUFFSWlCLGlCQUFpQiwwQkFBQUMsU0FBQTtFQUFBLFNBQUFELGtCQUFBO0lBQUEsSUFBQUUsTUFBQTtJQUFBLElBQUF6SSxnQkFBQSxtQkFBQXVJLGlCQUFBO0lBQUEsU0FBQUcsS0FBQSxHQUFBN0ssU0FBQSxDQUFBQyxNQUFBLEVBQUFvQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQXVJLEtBQUEsR0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtNQUFBekksSUFBQSxDQUFBeUksS0FBQSxJQUFBOUssU0FBQSxDQUFBOEssS0FBQTtJQUFBO0lBQUFGLE1BQUEsR0FBQXJLLFVBQUEsT0FBQW1LLGlCQUFBLEtBQUFsSSxNQUFBLENBQUFILElBQUE7SUFBQSxJQUFBbEMsZ0JBQUEsYUFBQXlLLE1BQUEsU0FDZixXQUFXO0lBQUEsT0FBQUEsTUFBQTtFQUFBO0VBQUEsSUFBQWpJLFVBQUEsYUFBQStILGlCQUFBLEVBQUFDLFNBQUE7RUFBQSxXQUFBL0gsYUFBQSxhQUFBOEgsaUJBQUE7SUFBQTdILEdBQUE7SUFBQUMsS0FBQSxFQUVqQixTQUFBSSxJQUFJQSxDQUFDMUIsU0FBUyxFQUFFMkIsT0FBTyxFQUFFQyxXQUFXLEVBQUU7TUFDcEMsSUFBQTJILGdCQUFBLEdBQWdCNUgsT0FBTyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQTBILGdCQUFBLE9BQUF4SCxlQUFBLGFBQUF1SCxnQkFBQTtRQUE5QnJDLEtBQUssR0FBQXNDLGdCQUFBO01BQ1osSUFBTXZCLFFBQVEsR0FBR0ssdUJBQXVCLENBQUNwQixLQUFLLENBQUNoRixJQUFJLENBQUMsR0FDaERvRyx1QkFBdUIsQ0FBQ3BCLEtBQUssQ0FBQ2hGLElBQUksQ0FBQyxDQUFDbEMsU0FBUyxFQUFFMkIsT0FBTyxFQUFFQyxXQUFXLENBQUMsR0FDcEUsQ0FBQyxDQUFDO01BRU4sT0FBTztRQUNMNUIsU0FBUyxFQUFBekIsYUFBQSxDQUFBQSxhQUFBLEtBQ0p5QixTQUFTLEdBQ1RpSSxRQUFRO01BRWYsQ0FBQztJQUNIO0VBQUM7QUFBQSxFQWY2QjdGLGtCQUFNO0FBa0IvQixJQUFNcUgsWUFBWSxHQUFBOUosT0FBQSxDQUFBOEosWUFBQSxHQUFHO0VBQzFCdEUsRUFBRSxFQUFFLElBQUk7RUFDUmpELElBQUksRUFBRSxJQUFJO0VBQ1ZyQyxNQUFNLEVBQUUsSUFBSXVDLGtCQUFNLENBQUM7SUFDakJzSCxPQUFPLEVBQUV6SSxrQkFBUSxDQUFDMEksRUFBRTtJQUNwQnRJLEdBQUcsRUFBRSxRQUFRO0lBQ2JzRSxVQUFVLEVBQUU7TUFDVlAsTUFBTSxFQUFFLElBQUk7TUFDWkMsS0FBSyxFQUFFLElBQUk7TUFDWEMsS0FBSyxFQUFFLElBQUk7TUFDWHNFLGNBQWMsRUFBRSxJQUFJO01BQ3BCcEcsT0FBTyxFQUFFLElBQUkyQyxjQUFjLENBQUM7UUFDMUJ1RCxPQUFPLEVBQUV6SSxrQkFBUSxDQUFDMEksRUFBRTtRQUNwQnRJLEdBQUcsRUFBRTtNQUNQLENBQUMsQ0FBQztNQUNGa0UsU0FBUyxFQUFFLElBQUk7TUFDZnZGLFNBQVMsRUFBRSxJQUFJa0osaUJBQWlCLENBQUM7UUFDL0JRLE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSTtNQUNwQixDQUFDLENBQUM7TUFDRm5FLE1BQU0sRUFBRSxJQUFJO01BQ1pDLGdCQUFnQixFQUFFLElBQUk7TUFDdEJnQixTQUFTLEVBQUUsSUFBSUYsaUJBQWlCLENBQUM7UUFDL0JtRCxPQUFPLEVBQUV6SSxrQkFBUSxDQUFDMEksRUFBRTtRQUNwQnRJLEdBQUcsRUFBRTtNQUNQLENBQUM7SUFDSDtFQUNGLENBQUMsQ0FBQztFQUNGK0csY0FBYyxFQUFFLElBQUlGLGdCQUFnQixDQUFDO0lBQ25Dd0IsT0FBTyxFQUFFekksa0JBQVEsQ0FBQzBJLEVBQUU7SUFDcEJ0SSxHQUFHLEVBQUU7RUFDUCxDQUFDLENBQUM7RUFDRmMsY0FBYyxFQUFFLElBQUl3RixxQkFBcUIsQ0FBQztJQUN4QytCLE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSSxFQUFFO0lBQ3BCdEksR0FBRyxFQUFFO0VBQ1AsQ0FBQztBQUNILENBQUM7QUFBQyxJQUVXd0ksYUFBYSxHQUFBbEssT0FBQSxDQUFBa0ssYUFBQSwwQkFBQUMsU0FBQTtFQUFBLFNBQUFELGNBQUE7SUFBQSxJQUFBRSxNQUFBO0lBQUEsSUFBQXBKLGdCQUFBLG1CQUFBa0osYUFBQTtJQUFBLFNBQUFHLEtBQUEsR0FBQXhMLFNBQUEsQ0FBQUMsTUFBQSxFQUFBb0MsSUFBQSxPQUFBQyxLQUFBLENBQUFrSixLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7TUFBQXBKLElBQUEsQ0FBQW9KLEtBQUEsSUFBQXpMLFNBQUEsQ0FBQXlMLEtBQUE7SUFBQTtJQUFBRixNQUFBLEdBQUFoTCxVQUFBLE9BQUE4SyxhQUFBLEtBQUE3SSxNQUFBLENBQUFILElBQUE7SUFBQSxJQUFBbEMsZ0JBQUEsYUFBQW9MLE1BQUEsU0FDbEIsUUFBUTtJQUFBLE9BQUFBLE1BQUE7RUFBQTtFQUFBLElBQUE1SSxVQUFBLGFBQUEwSSxhQUFBLEVBQUFDLFNBQUE7RUFBQSxXQUFBMUksYUFBQSxhQUFBeUksYUFBQTtJQUFBeEksR0FBQTtJQUFBQyxLQUFBLEVBRWQsU0FBQUMsSUFBSUEsQ0FBQzJJLE1BQU0sRUFBRXZJLE9BQU8sRUFBRTtNQUFBLElBQUF3SSxPQUFBO01BQ3BCLElBQUFDLGdCQUFBLEdBQW1CekksT0FBTyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQXVJLGdCQUFBLE9BQUFySSxlQUFBLGFBQUFvSSxnQkFBQTtRQUE3QkUsUUFBUSxHQUFBRCxnQkFBQTtNQUVmLFdBQUExTCxnQkFBQSxpQkFDRyxJQUFJLENBQUMwQyxHQUFHLEVBQUdpSixRQUFRLENBQUNDLFVBQVUsQ0FBQzlHLE1BQU0sQ0FBQyxVQUFDUCxLQUFLLEVBQUVzSCxLQUFLLEVBQUs7UUFDdkQ7UUFDQSxJQUFNdEQsS0FBSyxHQUFHZ0QsTUFBTSxDQUFDTSxLQUFLLENBQUM7UUFDM0IsSUFBSXRELEtBQUssQ0FBQ3VELGFBQWEsQ0FBQyxDQUFDLEVBQUU7VUFDekJ2SCxLQUFLLENBQUM3RSxJQUFJLENBQUM4TCxPQUFJLENBQUMxSSwyQkFBMkIsQ0FBQ3lGLEtBQUssQ0FBQyxDQUFDZ0QsTUFBTSxDQUFDO1FBQzVEO1FBQ0EsT0FBT2hILEtBQUs7TUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRVY7RUFBQztJQUFBN0IsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQUksSUFBSUEsQ0FBQ3dJLE1BQU0sRUFBRTtNQUFBLElBQUFRLE9BQUE7TUFDWCxXQUFBL0wsZ0JBQUEsaUJBQ0csSUFBSSxDQUFDMEMsR0FBRyxFQUFHNkksTUFBTSxDQUFDeEQsR0FBRyxDQUFDLFVBQUFRLEtBQUs7UUFBQSxPQUFJd0QsT0FBSSxDQUFDQywyQkFBMkIsQ0FBQ3pELEtBQUssRUFBRWdELE1BQU0sQ0FBQyxDQUFDQSxNQUFNO01BQUEsRUFBQztJQUUzRjtFQUFDO0FBQUEsRUF0QmdDOUgsa0JBQU07QUFBQSxJQXlCNUJ3SSxjQUFjLEdBQUFqTCxPQUFBLENBQUFpTCxjQUFBLDBCQUFBQyxTQUFBO0VBQUEsU0FBQUQsZUFBQTtJQUFBLElBQUFFLE9BQUE7SUFBQSxJQUFBbkssZ0JBQUEsbUJBQUFpSyxjQUFBO0lBQUEsU0FBQUcsTUFBQSxHQUFBdk0sU0FBQSxDQUFBQyxNQUFBLEVBQUFvQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQWlLLE1BQUEsR0FBQUMsTUFBQSxNQUFBQSxNQUFBLEdBQUFELE1BQUEsRUFBQUMsTUFBQTtNQUFBbkssSUFBQSxDQUFBbUssTUFBQSxJQUFBeE0sU0FBQSxDQUFBd00sTUFBQTtJQUFBO0lBQUFGLE9BQUEsR0FBQS9MLFVBQUEsT0FBQTZMLGNBQUEsS0FBQTVKLE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFsQyxnQkFBQSxhQUFBbU0sT0FBQSxTQUNuQixTQUFTO0lBQUEsT0FBQUEsT0FBQTtFQUFBO0VBQUEsSUFBQTNKLFVBQUEsYUFBQXlKLGNBQUEsRUFBQUMsU0FBQTtFQUFBLFdBQUF6SixhQUFBLGFBQUF3SixjQUFBO0lBQUF2SixHQUFBO0lBQUFDLEtBQUEsRUFDZixTQUFBQyxJQUFJQSxDQUFDMEosT0FBTyxFQUFFO01BQUEsSUFBQUMsT0FBQTtNQUNaLE9BQU87UUFDTEQsT0FBTyxFQUFFQSxPQUFPLENBQ2IvTSxNQUFNLENBQUNpTiwrQkFBa0IsQ0FBQyxDQUMxQnpFLEdBQUcsQ0FBQyxVQUFBeEksTUFBTTtVQUFBLE9BQUlnTixPQUFJLENBQUN6SiwyQkFBMkIsQ0FBQ3ZELE1BQU0sQ0FBQyxDQUFDK00sT0FBTztRQUFBO01BQ25FLENBQUM7SUFDSDtFQUFDO0lBQUE1SixHQUFBO0lBQUFDLEtBQUEsRUFDRCxTQUFBSSxJQUFJQSxDQUFDdUosT0FBTyxFQUFFO01BQ1osT0FBTztRQUFDQSxPQUFPLEVBQVBBO01BQU8sQ0FBQztJQUNsQjtFQUFDO0FBQUEsRUFYaUM3SSxrQkFBTTtBQWMxQyxJQUFNZ0osa0JBQWtCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO0FBQUMsSUFFMUNDLG1CQUFtQiwwQkFBQUMsU0FBQTtFQUFBLFNBQUFELG9CQUFBO0lBQUEsSUFBQUUsT0FBQTtJQUFBLElBQUE1SyxnQkFBQSxtQkFBQTBLLG1CQUFBO0lBQUEsU0FBQUcsTUFBQSxHQUFBaE4sU0FBQSxDQUFBQyxNQUFBLEVBQUFvQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQTBLLE1BQUEsR0FBQUMsTUFBQSxNQUFBQSxNQUFBLEdBQUFELE1BQUEsRUFBQUMsTUFBQTtNQUFBNUssSUFBQSxDQUFBNEssTUFBQSxJQUFBak4sU0FBQSxDQUFBaU4sTUFBQTtJQUFBO0lBQUFGLE9BQUEsR0FBQXhNLFVBQUEsT0FBQXNNLG1CQUFBLEtBQUFySyxNQUFBLENBQUFILElBQUE7SUFBQSxJQUFBbEMsZ0JBQUEsYUFBQTRNLE9BQUEsU0FDakIsbUJBQW1CO0lBQUEsT0FBQUEsT0FBQTtFQUFBO0VBQUEsSUFBQXBLLFVBQUEsYUFBQWtLLG1CQUFBLEVBQUFDLFNBQUE7RUFBQSxXQUFBbEssYUFBQSxhQUFBaUssbUJBQUE7SUFBQWhLLEdBQUE7SUFBQUMsS0FBQSxFQUV6QixTQUFBQyxJQUFJQSxDQUFDbUssaUJBQWlCLEVBQUU7TUFDdEIsT0FBTzVLLEtBQUssQ0FBQytGLE9BQU8sQ0FBQyxJQUFJLENBQUNsQixVQUFVLENBQUMsT0FBQWhILGdCQUFBLGlCQUU5QixJQUFJLENBQUMwQyxHQUFHLEVBQUcsSUFBSSxDQUFDc0UsVUFBVSxDQUFDbEMsTUFBTSxDQUNoQyxVQUFDQyxJQUFJLEVBQUVyQyxHQUFHO1FBQUEsT0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNMbUYsSUFBSSxHQUNIZ0ksaUJBQWlCLENBQUNySyxHQUFHLENBQUMsQ0FBQ3NLLE9BQU8sT0FBQWhOLGdCQUFBLGlCQUFLMEMsR0FBRyxFQUFHcUssaUJBQWlCLENBQUNySyxHQUFHLENBQUMsQ0FBQ3hCLE1BQU0sSUFBSSxDQUFDLENBQUM7TUFBQSxDQUNoRixFQUNGLENBQUMsQ0FDSCxDQUFDLElBRUgsQ0FBQyxDQUFDO0lBQ1I7RUFBQztJQUFBd0IsR0FBQTtJQUFBQyxLQUFBLEVBQ0QsU0FBQUksSUFBSUEsQ0FBQ2dLLGlCQUFpQixFQUFFO01BQ3RCO01BQ0E7TUFDQSxPQUFPNUssS0FBSyxDQUFDK0YsT0FBTyxDQUFDLElBQUksQ0FBQ2xCLFVBQVUsQ0FBQyxPQUFBaEgsZ0JBQUEsaUJBRTlCLElBQUksQ0FBQzBDLEdBQUcsRUFBRyxJQUFJLENBQUNzRSxVQUFVLENBQUNsQyxNQUFNLENBQ2hDLFVBQUNDLElBQUksRUFBRXJDLEdBQUc7UUFBQSxPQUFBOUMsYUFBQSxDQUFBQSxhQUFBLEtBQ0xtRixJQUFJLE9BQUEvRSxnQkFBQSxpQkFFSjBDLEdBQUcsRUFBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNFbU4saUJBQWlCLENBQUNySyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7VUFDaENzSyxPQUFPLEVBQUVyTSxPQUFPLENBQUNvTSxpQkFBaUIsQ0FBQ3JLLEdBQUcsQ0FBQztRQUFDO01BQUEsQ0FHNUMsRUFDRixDQUFDLENBQ0gsQ0FBQyxJQUVILENBQUMsQ0FBQztJQUNSO0VBQUM7QUFBQSxFQW5DK0JlLGtCQUFNO0FBc0N4QyxJQUFNd0osa0JBQWtCLE1BQUE1SyxNQUFBLENBQU9vSyxrQkFBa0IsR0FBRSxVQUFVLEVBQUUsWUFBWSxFQUFDO0FBQUMsSUFFaEVTLG1CQUFtQixHQUFBbE0sT0FBQSxDQUFBa00sbUJBQUEsMEJBQUFDLFNBQUE7RUFBQSxTQUFBRCxvQkFBQTtJQUFBLElBQUFFLE9BQUE7SUFBQSxJQUFBcEwsZ0JBQUEsbUJBQUFrTCxtQkFBQTtJQUFBLFNBQUFHLE1BQUEsR0FBQXhOLFNBQUEsQ0FBQUMsTUFBQSxFQUFBb0MsSUFBQSxPQUFBQyxLQUFBLENBQUFrTCxNQUFBLEdBQUFDLE1BQUEsTUFBQUEsTUFBQSxHQUFBRCxNQUFBLEVBQUFDLE1BQUE7TUFBQXBMLElBQUEsQ0FBQW9MLE1BQUEsSUFBQXpOLFNBQUEsQ0FBQXlOLE1BQUE7SUFBQTtJQUFBRixPQUFBLEdBQUFoTixVQUFBLE9BQUE4TSxtQkFBQSxLQUFBN0ssTUFBQSxDQUFBSCxJQUFBO0lBQUEsSUFBQWxDLGdCQUFBLGFBQUFvTixPQUFBLFNBQ3hCLG1CQUFtQjtJQUFBLE9BQUFBLE9BQUE7RUFBQTtFQUFBLElBQUE1SyxVQUFBLGFBQUEwSyxtQkFBQSxFQUFBQyxTQUFBO0VBQUEsV0FBQTFLLGFBQUEsYUFBQXlLLG1CQUFBO0lBQUF4SyxHQUFBO0lBQUFDLEtBQUEsRUFFekIsU0FBQUMsSUFBSUEsQ0FBQ21LLGlCQUFpQixFQUFFO01BQ3RCO01BQ0EsT0FBTzVLLEtBQUssQ0FBQytGLE9BQU8sQ0FBQyxJQUFJLENBQUNsQixVQUFVLENBQUMsT0FBQWhILGdCQUFBLGlCQUU5QixJQUFJLENBQUMwQyxHQUFHLEVBQUcsSUFBSSxDQUFDc0UsVUFBVSxDQUFDbEMsTUFBTSxDQUNoQyxVQUFDQyxJQUFJLEVBQUVyQyxHQUFHO1FBQUEsT0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNMbUYsSUFBSSxXQUFBL0UsZ0JBQUEsaUJBQ04wQyxHQUFHLEVBQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FDQ21OLGlCQUFpQixDQUFDckssR0FBRyxDQUFDLENBQUN4QixNQUFNO1VBQ2hDOEwsT0FBTyxFQUFFRCxpQkFBaUIsQ0FBQ3JLLEdBQUcsQ0FBQyxDQUFDc0s7UUFBTztNQUFBLENBRXpDLEVBQ0YsQ0FBQyxDQUNILENBQUMsSUFFSCxDQUFDLENBQUM7SUFDUjtFQUFDO0lBQUF0SyxHQUFBO0lBQUFDLEtBQUEsRUFDRCxTQUFBSSxJQUFJQSxDQUFDZ0ssaUJBQWlCLEVBQUU7TUFBQSxJQUFBUSxPQUFBO01BQ3RCLElBQU1DLGNBQWMsR0FBR1QsaUJBQWlCO01BQ3hDNU4sTUFBTSxDQUFDQyxJQUFJLENBQUMyTixpQkFBaUIsQ0FBQyxDQUFDaE4sT0FBTyxDQUFDLFVBQUEwTixVQUFVLEVBQUk7UUFDbkQsSUFBSUEsVUFBVSxLQUFLLFNBQVMsRUFBRTtVQUM1QixJQUFNQyxZQUFZLEdBQUdGLGNBQWMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLFlBQVk7VUFDNUQsSUFBSSxDQUFDLElBQUFDLDZCQUFrQixFQUFDRCxZQUFZLENBQUMsRUFBRTtZQUNyQyxXQUFBMU4sZ0JBQUEsaUJBQVN1TixPQUFJLENBQUM3SyxHQUFHLEVBQUc4SyxjQUFjO1VBQ3BDO1VBQ0FyTyxNQUFNLENBQUNDLElBQUksQ0FBQ3NPLFlBQVksQ0FBQyxDQUFDM04sT0FBTyxDQUFDLFVBQUEyQyxHQUFHLEVBQUk7WUFDdkNnTCxZQUFZLENBQUNoTCxHQUFHLENBQUMsR0FBR2dMLFlBQVksQ0FBQ2hMLEdBQUcsQ0FBQyxDQUFDcUYsR0FBRyxDQUFDLFVBQUE2RixTQUFTLEVBQUk7Y0FDckQsSUFBSSxDQUFDQSxTQUFTLENBQUNDLElBQUksRUFBRTtnQkFDbkIsT0FBTztrQkFDTEEsSUFBSSxFQUFFRCxTQUFTO2tCQUNmRSxNQUFNLEVBQUU7Z0JBQ1YsQ0FBQztjQUNIO2NBQ0EsT0FBT0YsU0FBUztZQUNsQixDQUFDLENBQUM7VUFDSixDQUFDLENBQUM7UUFDSjtRQUNBLE9BQU9HLFNBQVM7TUFDbEIsQ0FBQyxDQUFDO01BQ0YsV0FBQS9OLGdCQUFBLGlCQUFTLElBQUksQ0FBQzBDLEdBQUcsRUFBRzhLLGNBQWM7SUFDcEM7RUFBQztBQUFBLEVBM0NzQy9KLGtCQUFNO0FBOEN4QyxJQUFNdUssYUFBYSxHQUFBaE4sT0FBQSxDQUFBZ04sYUFBQSxHQUFHO0VBQzNCdkgsTUFBTSxFQUFFLElBQUk7RUFDWkQsRUFBRSxFQUFFLElBQUk7RUFDUnFILElBQUksRUFBRSxJQUFJO0VBQ1Z0SyxJQUFJLEVBQUUsSUFBSTtFQUNWWixLQUFLLEVBQUUsSUFBSTtFQUNYc0wsUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUFDLElBRVdDLG9CQUFvQixHQUFBbE4sT0FBQSxDQUFBa04sb0JBQUEsMEJBQUFDLFNBQUE7RUFBQSxTQUFBRCxxQkFBQTtJQUFBLElBQUFsTSxnQkFBQSxtQkFBQWtNLG9CQUFBO0lBQUEsT0FBQTlOLFVBQUEsT0FBQThOLG9CQUFBLEVBQUFyTyxTQUFBO0VBQUE7RUFBQSxJQUFBMkMsVUFBQSxhQUFBMEwsb0JBQUEsRUFBQUMsU0FBQTtFQUFBLFdBQUExTCxhQUFBLGFBQUF5TCxvQkFBQTtJQUFBeEwsR0FBQTtJQUFBQyxLQUFBLEVBQy9CLFNBQUFDLElBQUlBLENBQUNDLEtBQUssRUFBRTtNQUNWLFdBQUE3QyxnQkFBQSxpQkFDRyxJQUFJLENBQUMwQyxHQUFHLEVBQUdHLEtBQUssR0FBRyxJQUFJLENBQUNDLDJCQUEyQixDQUFDRCxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUNILEdBQUcsQ0FBQyxHQUFHLElBQUk7SUFFaEY7RUFBQztJQUFBQSxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBSSxJQUFJQSxDQUFDRixLQUFLLEVBQUU7TUFDVixXQUFBN0MsZ0JBQUEsaUJBQVMsSUFBSSxDQUFDMEMsR0FBRyxFQUFHRyxLQUFLO0lBQzNCO0VBQUM7QUFBQSxFQVR1Q1ksa0JBQU07QUFBQSxJQVluQzJLLGVBQWUsR0FBQXBOLE9BQUEsQ0FBQW9OLGVBQUEsMEJBQUFDLFNBQUE7RUFBQSxTQUFBRCxnQkFBQTtJQUFBLElBQUFwTSxnQkFBQSxtQkFBQW9NLGVBQUE7SUFBQSxPQUFBaE8sVUFBQSxPQUFBZ08sZUFBQSxFQUFBdk8sU0FBQTtFQUFBO0VBQUEsSUFBQTJDLFVBQUEsYUFBQTRMLGVBQUEsRUFBQUMsU0FBQTtFQUFBLFdBQUE1TCxhQUFBLGFBQUEyTCxlQUFBO0lBQUExTCxHQUFBO0lBQUFDLEtBQUEsRUFDMUIsU0FBQTJMLG9CQUFvQkEsQ0FBQ3ZKLElBQUksRUFBQXdKLE1BQUEsRUFBZ0I7TUFBQSxJQUFBQyxNQUFBLE9BQUFuTCxlQUFBLGFBQUFrTCxNQUFBO1FBQWI3TCxHQUFHLEdBQUE4TCxNQUFBO1FBQUU3TCxLQUFLLEdBQUE2TCxNQUFBO01BQ3BDLElBQUksT0FBTzdMLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDOUIsT0FBQS9DLGFBQUEsQ0FBQUEsYUFBQSxLQUNLbUYsSUFBSSxXQUFBL0UsZ0JBQUEsaUJBQ04wQyxHQUFHLEVBQUdDLEtBQUs7TUFFaEIsQ0FBQyxNQUFNLElBQUlBLEtBQUssSUFBSSxJQUFBOEwsUUFBQSxhQUFPOUwsS0FBSyxNQUFLLFFBQVEsSUFBSUEsS0FBSyxDQUFDK0wsV0FBVyxFQUFFO1FBQ2xFLE9BQUE5TyxhQUFBLENBQUFBLGFBQUEsS0FDS21GLElBQUksV0FBQS9FLGdCQUFBLGlCQUNOMEMsR0FBRyxFQUFHL0IsT0FBTyxDQUFDZ0MsS0FBSyxDQUFDaUUsU0FBUyxDQUFDO01BRW5DO01BQ0EsT0FBTzdCLElBQUk7SUFDYjtFQUFDO0lBQUFyQyxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBSSxJQUFJQSxDQUFDNEwsU0FBUyxFQUFFO01BQUEsSUFBQUMsT0FBQTtNQUNkOztNQUVBLElBQUksQ0FBQ3pNLEtBQUssQ0FBQytGLE9BQU8sQ0FBQ3lHLFNBQVMsQ0FBQyxJQUFJLENBQUNBLFNBQVMsQ0FBQzdPLE1BQU0sRUFBRTtRQUNsRCxPQUFPO1VBQUM2TyxTQUFTLEVBQUU7UUFBRSxDQUFDO01BQ3hCO01BRUEsT0FBTztRQUNMQSxTQUFTLEVBQUVBLFNBQVMsQ0FBQzVHLEdBQUcsQ0FBQyxVQUFBOEcsUUFBUTtVQUFBLE9BQUFqUCxhQUFBLENBQUFBLGFBQUEsS0FDNUJpUCxRQUFRO1lBQ1h0RCxNQUFNLEVBQUVwTSxNQUFNLENBQUMyUCxPQUFPLENBQUNELFFBQVEsQ0FBQ3RELE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDekcsTUFBTSxDQUFDOEosT0FBSSxDQUFDTixvQkFBb0IsRUFBRSxDQUFDLENBQUM7VUFBQztRQUFBLENBQ25GO01BQ0osQ0FBQztJQUNIO0VBQUM7QUFBQSxFQTdCa0M3SyxrQkFBTTtBQWdDcEMsSUFBTXNMLGFBQWEsR0FBQS9OLE9BQUEsQ0FBQStOLGFBQUEsR0FBQW5QLGFBQUEsQ0FBQUEsYUFBQSxLQUNyQm9PLGFBQWE7RUFDaEJnQixRQUFRLEVBQUUsSUFBSTtFQUNkQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsS0FBSyxFQUFFLElBQUloQixvQkFBb0IsQ0FBQztJQUM5Qm5ELE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSSxFQUFFO0lBQ3BCdEksR0FBRyxFQUFFLE9BQU87SUFDWnNFLFVBQVUsRUFBRTtNQUNWNkcsSUFBSSxFQUFFLElBQUk7TUFDVnRLLElBQUksRUFBRTtJQUNSO0VBQ0YsQ0FBQyxDQUFDO0VBRUY7RUFDQTRMLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLEtBQUssRUFBRTtBQUFJLEVBQ1o7QUFFTSxJQUFNQyxZQUFZLEdBQUFyTyxPQUFBLENBQUFxTyxZQUFBLEdBQUc7RUFDMUIvQyxPQUFPLEVBQUUsSUFBSUwsY0FBYyxDQUFDO0lBQzFCbEIsT0FBTyxFQUFFekksa0JBQVEsQ0FBQ0MsRUFBRTtJQUNwQnlFLFVBQVUsRUFBRWdIO0VBQ2QsQ0FBQyxDQUFDO0VBQ0Z6QyxNQUFNLEVBQUUsSUFBSUwsYUFBYSxDQUFDO0lBQ3hCSCxPQUFPLEVBQUV6SSxrQkFBUSxDQUFDQyxFQUFFO0lBQ3BCeUUsVUFBVSxFQUFFVDtFQUNkLENBQUMsQ0FBQztFQUNGd0csaUJBQWlCLEVBQUUsSUFBSUwsbUJBQW1CLENBQUM7SUFDekMzQixPQUFPLEVBQUV6SSxrQkFBUSxDQUFDQyxFQUFFO0lBQ3BCeUUsVUFBVSxFQUFFeUY7RUFDZCxDQUFDLENBQUM7RUFDRjZDLGFBQWEsRUFBRTtBQUNqQixDQUFDO0FBRU0sSUFBTUMsWUFBWSxHQUFBdk8sT0FBQSxDQUFBdU8sWUFBQSxHQUFHO0VBQzFCakQsT0FBTyxFQUFFLElBQUlMLGNBQWMsQ0FBQztJQUMxQmxCLE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSSxFQUFFO0lBQ3BCaEUsVUFBVSxFQUFFK0g7RUFDZCxDQUFDLENBQUM7RUFDRnhELE1BQU0sRUFBRSxJQUFJTCxhQUFhLENBQUM7SUFDeEJILE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSSxFQUFFO0lBQ3BCaEUsVUFBVSxFQUFFOEQ7RUFDZCxDQUFDLENBQUM7RUFDRmlDLGlCQUFpQixFQUFFLElBQUlHLG1CQUFtQixDQUFDO0lBQ3pDbkMsT0FBTyxFQUFFekksa0JBQVEsQ0FBQzBJLEVBQUU7SUFDcEJoRSxVQUFVLEVBQUVpRztFQUNkLENBQUMsQ0FBQztFQUNGcUMsYUFBYSxFQUFFLElBQUk7RUFDbkJYLFNBQVMsRUFBRSxJQUFJUCxlQUFlLENBQUM7SUFDN0IxTCxHQUFHLEVBQUUsV0FBVztJQUNoQnFJLE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSTtFQUNwQixDQUFDLENBQUM7RUFDRndFLGVBQWUsRUFBRSxJQUFJL0wsa0JBQU0sQ0FBQztJQUMxQnNILE9BQU8sRUFBRXpJLGtCQUFRLENBQUMwSSxFQUFFO0lBQ3BCaEUsVUFBVSxFQUFFO01BQ1Z5SSxXQUFXLEVBQUUsSUFBSTtNQUNqQkwsS0FBSyxFQUFFO0lBQ1QsQ0FBQztJQUNEMU0sR0FBRyxFQUFFO0VBQ1AsQ0FBQztBQUNILENBQUM7QUFFTSxJQUFNZ04sZ0JBQWdCLEdBQUExTyxPQUFBLENBQUEwTyxnQkFBQSxHQUFHLElBQUlqTSxrQkFBTSxDQUFDO0VBQ3pDc0gsT0FBTyxFQUFFekksa0JBQVEsQ0FBQ0MsRUFBRTtFQUNwQnlFLFVBQVUsRUFBRXFJLFlBQVk7RUFDeEIzTSxHQUFHLEVBQUU7QUFDUCxDQUFDLENBQUM7QUFFSyxJQUFNaU4sZ0JBQWdCLEdBQUEzTyxPQUFBLENBQUEyTyxnQkFBQSxHQUFHLElBQUlsTSxrQkFBTSxDQUFDO0VBQ3pDc0gsT0FBTyxFQUFFekksa0JBQVEsQ0FBQzBJLEVBQUU7RUFDcEJoRSxVQUFVLEVBQUV1SSxZQUFZO0VBQ3hCN00sR0FBRyxFQUFFO0FBQ1AsQ0FBQyxDQUFDO0FBRUssSUFBTWtOLGNBQWMsR0FBQTVPLE9BQUEsQ0FBQTRPLGNBQUEsT0FBQTVQLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFDeEJzQyxrQkFBUSxDQUFDQyxFQUFFLEVBQUc7RUFDYkssSUFBSSxFQUFFLFNBQU5BLElBQUlBLENBQUVpTixNQUFNO0lBQUEsT0FBSUgsZ0JBQWdCLENBQUM5TSxJQUFJLENBQUNpTixNQUFNLENBQUM7RUFBQTtFQUM3QzlNLElBQUksRUFBRSxTQUFOQSxJQUFJQSxDQUFFK00sTUFBTTtJQUFBLE9BQUlILGdCQUFnQixDQUFDNU0sSUFBSSxDQUFDMk0sZ0JBQWdCLENBQUMzTSxJQUFJLENBQUMrTSxNQUFNLENBQUMsQ0FBQ25FLFFBQVEsQ0FBQztFQUFBO0FBQy9FLENBQUMsR0FDQXJKLGtCQUFRLENBQUMwSSxFQUFFLEVBQUcyRSxnQkFBZ0IsQ0FDaEM7O0FBRUQ7QUFBQSxJQUFBSSxRQUFBLEdBQUEvTyxPQUFBLGNBQ2U0TyxjQUFjIiwiaWdub3JlTGlzdCI6W119