@kando-env/kando-ui 1.2.412-alpha.6 → 1.2.412-alpha.8

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 (704) hide show
  1. package/lib/Router.js +42 -37
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +5 -4
  3. package/lib/Widgets/EventsRow/EventsRow.js +5 -4
  4. package/lib/Widgets/Map/GraphUtils.js +5 -3
  5. package/lib/Widgets/Map/Map.js +83 -83
  6. package/lib/Widgets/Map/MapUtils.js +51 -28
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +37 -34
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +5 -4
  9. package/lib/Widgets/Map/areas/AreaUtils.js +13 -7
  10. package/lib/Widgets/Map/areas/Patterns.js +3 -2
  11. package/lib/Widgets/Map/edges/Edge.js +5 -4
  12. package/lib/Widgets/Map/edges/Edges.js +5 -4
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +3 -2
  14. package/lib/Widgets/Map/events/Event.js +4 -7
  15. package/lib/Widgets/Map/events/EventIndicator.js +5 -4
  16. package/lib/Widgets/Map/events/EventPath.js +5 -4
  17. package/lib/Widgets/Map/events/EventUtils.js +34 -21
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +5 -4
  19. package/lib/Widgets/Map/events/PointOfEvent.js +5 -4
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -4
  21. package/lib/Widgets/Map/events/Snail.js +5 -4
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +7 -5
  23. package/lib/Widgets/Map/map/FloatingGraph.js +3 -2
  24. package/lib/Widgets/Map/map/GraphDateButton.js +3 -2
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +3 -2
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +3 -2
  27. package/lib/Widgets/Map/points/PointIcon.js +5 -3
  28. package/lib/Widgets/Map/points/PointMarker.js +44 -34
  29. package/lib/Widgets/Map/points/PointMarkers.js +19 -28
  30. package/lib/Widgets/Map/points/PointUtils.js +84 -44
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +5 -4
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +5 -4
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +5 -4
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +5 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +5 -4
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -2
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +5 -3
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +3 -2
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +5 -4
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +3 -2
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +3 -2
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +5 -3
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +5 -3
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +5 -3
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +5 -4
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +11 -6
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +3 -2
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +3 -2
  52. package/lib/Widgets/MostPolluting/assets/index.js +1 -1
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +3 -2
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +1 -1
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +5 -4
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +1 -1
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +3 -2
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +1 -1
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +5 -3
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +3 -2
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +5 -4
  63. package/lib/Widgets/PotentialImpactSummary/index.js +3 -2
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +1 -1
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +11 -6
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +3 -2
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +3 -2
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +1 -1
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +3 -2
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +3 -3
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +3 -2
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +11 -6
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +5 -4
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +5 -4
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +3 -2
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +5 -4
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +15 -9
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
  83. package/lib/assets/icons/TopNavbar/index.js +1 -1
  84. package/lib/assets/icons/TrendSvg.js +3 -2
  85. package/lib/assets/icons/index.js +1 -1
  86. package/lib/assets/icons/kandoStepper/index.js +1 -1
  87. package/lib/assets/icons/siteTypes/index.js +1 -1
  88. package/lib/components/ApplyButton/ApplyButton.js +3 -2
  89. package/lib/components/ApplyButton/index.js +3 -2
  90. package/lib/components/Backdrop/Backdrop.js +3 -2
  91. package/lib/components/ContentLoader/ContentLoader.js +3 -2
  92. package/lib/components/ContentLoader/index.js +1 -1
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +5 -3
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -3
  95. package/lib/components/CustomInputs/DoubleTabs/styles.js +7 -4
  96. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +5 -4
  97. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +3 -2
  98. package/lib/components/CustomInputs/Search/Search.js +5 -4
  99. package/lib/components/CustomInputs/Search/index.js +3 -2
  100. package/lib/components/CustomInputs/Select/Select.js +5 -4
  101. package/lib/components/CustomInputs/Select/Select.stories.js +5 -3
  102. package/lib/components/DamageType/DamageType.js +5 -4
  103. package/lib/components/DamageType/index.js +3 -2
  104. package/lib/components/DataLoaderError/DataLoaderError.js +3 -2
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +3 -2
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +1 -1
  107. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +5 -4
  108. package/lib/components/DischargeHeatmap/HighchartsOptions.js +3 -2
  109. package/lib/components/DischargeHeatmap/index.js +3 -2
  110. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -2
  111. package/lib/components/DischargeHeatmap/popupText.js +3 -2
  112. package/lib/components/DischargeHeatmap/titles.js +5 -3
  113. package/lib/components/DischargeHeatmap/types.js +1 -1
  114. package/lib/components/ErrorBoundary.js +9 -9
  115. package/lib/components/Events/Events.js +5 -4
  116. package/lib/components/Events/index.js +3 -2
  117. package/lib/components/Graph/Graph.js +8 -7
  118. package/lib/components/Graph/index.js +3 -2
  119. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +3 -2
  120. package/lib/components/Header/Breadcrumbs/index.js +3 -2
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.js +7 -5
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -3
  123. package/lib/components/Header/DoubleTabs/styles.js +7 -4
  124. package/lib/components/Header/Header.js +3 -2
  125. package/lib/components/Header/Header.stories.js +5 -3
  126. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +17 -15
  127. package/lib/components/Header/InfoBar/InfoBar.js +34 -31
  128. package/lib/components/Header/InfoBar/Search/Control.js +3 -2
  129. package/lib/components/Header/InfoBar/Search/GroupLabel.js +3 -2
  130. package/lib/components/Header/InfoBar/Search/Search.js +5 -4
  131. package/lib/components/Header/InfoBar/Search/SearchContainer.js +5 -4
  132. package/lib/components/Header/InfoBar/Search/index.js +3 -2
  133. package/lib/components/Header/InfoBar/Search/searchStyle.js +3 -2
  134. package/lib/components/Header/InfoBar/TimeFilter.js +3 -2
  135. package/lib/components/Header/InfoBar/types.js +1 -1
  136. package/lib/components/Header/KandoNavbar/KandoNavbar.js +8 -7
  137. package/lib/components/Header/KandoNavbar/index.js +3 -2
  138. package/lib/components/Header/Slideshow/Slideshow.js +5 -4
  139. package/lib/components/Header/Slideshow/index.js +3 -2
  140. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +3 -2
  141. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -2
  142. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +6 -5
  143. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +3 -2
  144. package/lib/components/Header/Toolbar/Toolbar.js +5 -4
  145. package/lib/components/InfoBar/InfoBar.js +5 -4
  146. package/lib/components/InfoBar/InfoBar.stories.js +5 -3
  147. package/lib/components/KandoModal/KandoModal.js +5 -4
  148. package/lib/components/KandoModal/index.js +3 -2
  149. package/lib/components/Link.js +3 -2
  150. package/lib/components/Links/CustomRedirect/CustomRedirect.js +3 -2
  151. package/lib/components/Links/StyledLink/StyledLink.js +5 -3
  152. package/lib/components/Links/StyledNavLink/StyledNavLink.js +3 -2
  153. package/lib/components/LiveEvents/CarouselSlide.js +3 -2
  154. package/lib/components/LiveEvents/LiveEvents.js +3 -2
  155. package/lib/components/LiveEvents/index.js +3 -2
  156. package/lib/components/LoaderByPercent/LoaderByPercent.js +5 -3
  157. package/lib/components/Map/Map.js +10 -8
  158. package/lib/components/Map/index.js +3 -2
  159. package/lib/components/Modal/Modal.js +3 -2
  160. package/lib/components/NarrowHeader.js +9 -9
  161. package/lib/components/PointInfo/PointInfo.js +3 -2
  162. package/lib/components/PointInfo/index.js +3 -2
  163. package/lib/components/PopupModal/PopupModal.js +3 -2
  164. package/lib/components/PopupModal/PopupModal.stories.js +7 -4
  165. package/lib/components/Sector/Sector.js +3 -2
  166. package/lib/components/Sector/Sector.test.js +1 -1
  167. package/lib/components/Sector/SectorIconsNew.js +3 -2
  168. package/lib/components/Sector/index.js +3 -2
  169. package/lib/components/Sector/sectorIcons.js +3 -2
  170. package/lib/components/SevereEvent/Eta/Eta.js +5 -4
  171. package/lib/components/SevereEvent/Eta/styles.js +3 -2
  172. package/lib/components/SevereEvent/SevereEvent.js +5 -4
  173. package/lib/components/Spinner/Spinner.js +3 -2
  174. package/lib/components/Spinner/Spinner.stories.js +7 -4
  175. package/lib/components/Spinner/index.js +3 -2
  176. package/lib/components/Spinner/styles.js +7 -4
  177. package/lib/components/Tabs/Tabs.js +7 -5
  178. package/lib/components/Tabs/Tabs.stories.js +5 -3
  179. package/lib/components/Tabs/assets/index.js +1 -1
  180. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +5 -4
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +5 -4
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +5 -4
  183. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -2
  184. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +9 -5
  185. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +3 -2
  186. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -2
  187. package/lib/components/TimeRangeSelector/TimeRangeList.js +5 -4
  188. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +5 -4
  189. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +7 -5
  190. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +5 -3
  191. package/lib/components/TimeRangeSelector/constants.js +5 -3
  192. package/lib/components/TimeRangeSelector/index.js +3 -2
  193. package/lib/components/Toggle/Toggle.js +5 -4
  194. package/lib/components/Toggle/index.js +3 -2
  195. package/lib/components/TrendGraph/TrendGraph.js +5 -4
  196. package/lib/components/TrendGraph/index.js +3 -2
  197. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +5 -4
  198. package/lib/components/TrendGraphNVL/index.js +3 -2
  199. package/lib/development-environment/index.js +3 -2
  200. package/lib/development-environment/mock/browser.js +3 -2
  201. package/lib/development-environment/mock/get.js +3 -2
  202. package/lib/development-environment/mock/handlers.js +3 -2
  203. package/lib/development-environment/mock/mockBus.js +5 -3
  204. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
  205. package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
  206. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
  207. package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
  208. package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
  209. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
  210. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
  211. package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
  212. package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
  213. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
  214. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
  215. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
  216. package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
  217. package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
  218. package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
  219. package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
  220. package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
  221. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
  222. package/lib/development-environment/togly/ToglyDashboard.js +5 -4
  223. package/lib/development-environment/togly/ToglyItem.js +5 -4
  224. package/lib/development-environment/togly/flags.js +1 -1
  225. package/lib/development-environment/togly/init.js +1 -1
  226. package/lib/development-environment/togly/macro.js +1 -1
  227. package/lib/development-environment/togly/useDoubleKeyDown.js +3 -2
  228. package/lib/development-environment/togly/useLocalStorage.js +3 -2
  229. package/lib/hooks/useApi.js +32 -30
  230. package/lib/hooks/useApiWithDashboardQuery.js +5 -3
  231. package/lib/hooks/useClickOutside.js +3 -2
  232. package/lib/hooks/useInitializeHeaders.js +3 -2
  233. package/lib/hooks/useKandoFetch.js +3 -2
  234. package/lib/hooks/useMap.js +3 -2
  235. package/lib/hooks/useNavContext.js +3 -2
  236. package/lib/hooks/useQueryURL.js +3 -2
  237. package/lib/hooks/useRemoveExistingLayers.js +3 -2
  238. package/lib/hooks/useUpdateEventBodyTail.js +3 -2
  239. package/lib/hooks/useUserTimeZone.js +15 -8
  240. package/lib/hooks/useUserTimeZone.test.js +3 -3
  241. package/lib/hooks/useWindowSize.js +1 -1
  242. package/lib/index.js +5 -4
  243. package/lib/macros/getVersion.js +2 -2
  244. package/lib/models/IAction.js +1 -1
  245. package/lib/models/IAppState.js +1 -1
  246. package/lib/pages/AreaPage/AreaPage.js +31 -28
  247. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +5 -4
  248. package/lib/pages/AreaPage/Dashboard/Dashboard.js +5 -4
  249. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +5 -4
  250. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +3 -2
  251. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +3 -2
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +3 -2
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +5 -3
  254. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  255. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
  256. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +7 -4
  257. package/lib/pages/AssessmentPage/AssessmentPage.js +5 -4
  258. package/lib/pages/CannyWidget/Feedback.js +8 -7
  259. package/lib/pages/CovidPage/CovidPage.js +5 -4
  260. package/lib/pages/CovidPage/components/Body.js +5 -4
  261. package/lib/pages/CovidPage/components/Map.js +5 -4
  262. package/lib/pages/CovidPage/components/Sidebar.js +5 -4
  263. package/lib/pages/CovidPage/components/Summary.js +5 -4
  264. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +5 -4
  265. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -2
  266. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +5 -4
  267. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -2
  268. package/lib/pages/CovidPage/components/areas/Area.js +5 -4
  269. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +5 -4
  270. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +5 -4
  271. package/lib/pages/CovidPage/components/areas/AreasList.js +5 -4
  272. package/lib/pages/CovidPage/components/areas/Sort.js +5 -4
  273. package/lib/pages/CovidPage/components/nvlStatusHelper.js +9 -5
  274. package/lib/pages/DashboardMap/AreaCard.js +3 -2
  275. package/lib/pages/DashboardMap/AssessmentIcon.js +3 -2
  276. package/lib/pages/DashboardMap/Capacity.js +45 -39
  277. package/lib/pages/DashboardMap/FactoryCard.js +4 -6
  278. package/lib/pages/DashboardMap/HighchartsOptions.js +3 -2
  279. package/lib/pages/DashboardMap/List.js +5 -4
  280. package/lib/pages/DashboardMap/ListContext.js +7 -5
  281. package/lib/pages/DashboardMap/Loader.js +3 -2
  282. package/lib/pages/DashboardMap/SeverityBadge.js +9 -4
  283. package/lib/pages/DashboardMap/WWTPMap.js +5 -4
  284. package/lib/pages/DashboardMap/WaterDischarge.js +3 -2
  285. package/lib/pages/DashboardMap/Widget.js +7 -5
  286. package/lib/pages/DashboardMap/index.js +3 -2
  287. package/lib/pages/DashboardMap/utils.js +23 -12
  288. package/lib/pages/EventsPage/Body/Body.js +19 -18
  289. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +3 -3
  290. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +9 -5
  291. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +3 -2
  292. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +3 -2
  293. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +1 -1
  294. package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -2
  295. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +6 -6
  296. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +9 -5
  297. package/lib/pages/EventsPage/EventsPage.js +5 -4
  298. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +5 -4
  299. package/lib/pages/EventsPage/events/MoreInfo.js +5 -4
  300. package/lib/pages/EventsPage/events/Sidebar.js +5 -4
  301. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +3 -2
  302. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +3 -2
  303. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +3 -2
  304. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +5 -4
  305. package/lib/pages/EventsPage/events/event_info/EventDetails.js +3 -2
  306. package/lib/pages/EventsPage/events/event_info/EventInfo.js +5 -4
  307. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +3 -2
  308. package/lib/pages/EventsPage/events/event_info/EventSection.js +3 -2
  309. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +1 -1
  310. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +5 -4
  311. package/lib/pages/EventsPage/events/event_info/Header/Header.js +3 -2
  312. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +5 -4
  313. package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -2
  314. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +3 -2
  315. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +5 -4
  316. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +3 -2
  317. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +3 -2
  318. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +3 -2
  319. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +3 -2
  320. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +5 -4
  321. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +5 -4
  322. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -2
  323. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +3 -2
  324. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +3 -2
  325. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +5 -4
  326. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -2
  327. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +3 -2
  328. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +3 -2
  329. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -2
  330. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +3 -2
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +3 -2
  332. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +1 -1
  333. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +3 -2
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +5 -3
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -2
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +3 -2
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +3 -2
  338. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +3 -2
  339. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +3 -2
  340. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +3 -3
  341. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +3 -2
  342. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +3 -2
  343. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +3 -2
  344. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +3 -2
  345. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +3 -2
  346. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +3 -2
  347. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +1 -1
  348. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +3 -2
  349. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -2
  350. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +5 -3
  351. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +5 -4
  352. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +5 -4
  353. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +3 -2
  354. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +3 -2
  355. package/lib/pages/EventsPage/events/event_info/sources/Source.js +3 -2
  356. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +5 -4
  357. package/lib/pages/EventsPage/events/event_info/styles.js +5 -3
  358. package/lib/pages/EventsPage/events/events_list/EventItem.js +5 -4
  359. package/lib/pages/EventsPage/events/events_list/EventUtils.js +7 -4
  360. package/lib/pages/EventsPage/events/events_list/EventsList.js +5 -4
  361. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +5 -4
  362. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +5 -4
  363. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +5 -4
  364. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +5 -4
  365. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +5 -4
  366. package/lib/pages/EventsPage/events/events_list/Sort.js +5 -4
  367. package/lib/pages/ImportFileWizard/FileUploadRespones.js +3 -2
  368. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +3 -2
  369. package/lib/pages/ImportFileWizard/ImportFile.js +5 -4
  370. package/lib/pages/ImportFileWizard/ResponseBody.js +3 -2
  371. package/lib/pages/ImportFileWizard/ValidationForm.js +3 -2
  372. package/lib/pages/ImportFileWizard/ValidationResponse.js +5 -4
  373. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
  374. package/lib/pages/ImportFileWizard/index.js +3 -2
  375. package/lib/pages/ImportGisPage/ImportGisContainer.js +7 -5
  376. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +3 -2
  377. package/lib/pages/ImportGisPage/importGisUtils.js +7 -5
  378. package/lib/pages/ImportGisProcess/index.js +3 -2
  379. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +5 -4
  380. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +3 -2
  381. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -2
  382. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +5 -4
  383. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +5 -3
  384. package/lib/pages/NotificationsPage/Notification/Notification.js +3 -2
  385. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  386. package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
  387. package/lib/pages/NotificationsPage/Notifications.stories.js +5 -3
  388. package/lib/pages/NotificationsPage/NotificationsPage.js +5 -4
  389. package/lib/pages/NotificationsPage/assets/index.js +1 -1
  390. package/lib/pages/NotificationsPageV2/NotificationsPage.js +7 -5
  391. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +3 -2
  392. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +3 -2
  393. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +3 -2
  394. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +3 -2
  395. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +3 -2
  396. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +3 -2
  397. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +7 -5
  398. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +3 -2
  399. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +5 -4
  400. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +33 -17
  401. package/lib/pages/NotificationsPageV2/notificationUtils.js +15 -9
  402. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  403. package/lib/pages/OldSitePage/OldSitePage.js +56 -51
  404. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +9 -5
  405. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  406. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +3 -2
  407. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +3 -2
  408. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -5
  409. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +5 -4
  410. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +5 -3
  411. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  412. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +9 -5
  413. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +5 -4
  414. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +3 -2
  415. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +5 -4
  416. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
  417. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +11 -6
  418. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +5 -4
  419. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +5 -4
  420. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +5 -3
  421. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +3 -2
  422. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  423. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +7 -4
  424. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +5 -3
  425. package/lib/pages/OperationsPage/LeftPanel.js +5 -4
  426. package/lib/pages/OperationsPage/Map/Map.js +5 -4
  427. package/lib/pages/OperationsPage/Map/useMap.js +6 -5
  428. package/lib/pages/OperationsPage/OperationsPage.js +5 -4
  429. package/lib/pages/OperationsPage/RightPanel.js +3 -2
  430. package/lib/pages/OperationsPage/index.js +3 -2
  431. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +31 -28
  432. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +5 -4
  433. package/lib/pages/PollutionRiskAssessment/FilterButton.js +3 -2
  434. package/lib/pages/PollutionRiskAssessment/Map.js +5 -4
  435. package/lib/pages/PollutionRiskAssessment/SearchButton.js +3 -2
  436. package/lib/pages/PollutionRiskAssessment/SearchField.js +5 -4
  437. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +3 -2
  438. package/lib/pages/PollutionRiskAssessment/UseCases.js +3 -2
  439. package/lib/pages/PollutionRiskAssessment/index.js +31 -28
  440. package/lib/pages/PollutionRiskAssessment/useMap.js +5 -4
  441. package/lib/pages/PollutionRiskAssessment/utils.js +3 -2
  442. package/lib/pages/ProfilePage/Container.js +3 -2
  443. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +5 -4
  444. package/lib/pages/ProfilePage/ProfilePage.js +5 -4
  445. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +5 -4
  446. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +7 -4
  447. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +3 -3
  448. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +74 -69
  449. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +5 -4
  450. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +3 -2
  451. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +7 -4
  452. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +3 -2
  453. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +3 -2
  454. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +3 -2
  455. package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -2
  456. package/lib/pages/SamplingsPage/NavigationDropdown.js +5 -3
  457. package/lib/pages/SamplingsPage/NewSamplingAction.js +23 -20
  458. package/lib/pages/SamplingsPage/SamplingMobileModal.js +3 -2
  459. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +3 -2
  460. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -2
  461. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +5 -4
  462. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +5 -4
  463. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +3 -2
  464. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +92 -85
  465. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +5 -4
  466. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +5 -4
  467. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +5 -4
  468. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -12
  469. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +5 -3
  470. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +3 -2
  471. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +5 -4
  472. package/lib/pages/SamplingsPage/SamplingsMobileList.js +5 -4
  473. package/lib/pages/SamplingsPage/SamplingsPage.js +7 -5
  474. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +5 -4
  475. package/lib/pages/SamplingsPage/index.js +3 -2
  476. package/lib/pages/SamplingsPage/samplingsPageUtils.js +39 -20
  477. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +5 -3
  478. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +3 -2
  479. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +3 -2
  480. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +5 -3
  481. package/lib/pages/SitePage/PollutionContributor/index.js +3 -2
  482. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  483. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +9 -5
  484. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +3 -2
  485. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +1 -1
  486. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +3 -2
  487. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +1 -1
  488. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -5
  489. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +5 -4
  490. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +5 -3
  491. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  492. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +9 -5
  493. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +5 -4
  494. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +3 -2
  495. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +5 -4
  496. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
  497. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +11 -6
  498. package/lib/pages/SitePage/SamplingParameters/body/Body.js +3 -2
  499. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +5 -4
  500. package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -2
  501. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +5 -4
  502. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +5 -4
  503. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +5 -3
  504. package/lib/pages/SitePage/SamplingParameters/dataParser.js +3 -2
  505. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +1 -1
  506. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  507. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +7 -4
  508. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +5 -3
  509. package/lib/pages/SitePage/SiteInformation/EmptyState.js +3 -2
  510. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +5 -5
  511. package/lib/pages/SitePage/SitePage.js +31 -28
  512. package/lib/pages/UploadLabResult/index.js +3 -2
  513. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +5 -4
  514. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +7 -4
  515. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +11 -6
  516. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  517. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +5 -4
  518. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +3 -2
  519. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +3 -2
  520. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +3 -2
  521. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +3 -2
  522. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  523. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +3 -2
  524. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +3 -2
  525. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -2
  526. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +7 -5
  527. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +11 -6
  528. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +5 -4
  529. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +5 -4
  530. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +5 -4
  531. package/lib/pages/WbeDashboard/ExpandableComponent.js +5 -4
  532. package/lib/pages/WbeDashboard/GraphWrapper.js +5 -4
  533. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +5 -4
  534. package/lib/pages/WbeDashboard/SearchInput.js +5 -4
  535. package/lib/pages/WbeDashboard/SummaryGraph.js +26 -23
  536. package/lib/pages/WbeDashboard/SummaryGraphModal.js +3 -2
  537. package/lib/pages/WbeDashboard/Tabs.js +3 -2
  538. package/lib/pages/WbeDashboard/WbeDashboardPage.js +5 -4
  539. package/lib/pages/WbeDashboard/WbeSummaryBar.js +5 -4
  540. package/lib/pages/WwtpPage/DashboardCard.js +3 -2
  541. package/lib/pages/WwtpPage/DischargePatternCard.js +7 -5
  542. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +3 -2
  543. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +3 -2
  544. package/lib/pages/WwtpPage/InletsCard/index.js +3 -2
  545. package/lib/pages/WwtpPage/Map.js +4 -4
  546. package/lib/pages/WwtpPage/OrganicCard.js +3 -2
  547. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +3 -2
  548. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +3 -2
  549. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +3 -2
  550. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +3 -2
  551. package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -2
  552. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  553. package/lib/pages/WwtpPage/PredictionCard.js +3 -2
  554. package/lib/pages/WwtpPage/TrendCard.js +3 -2
  555. package/lib/pages/WwtpPage/UpgradeBox.js +3 -2
  556. package/lib/pages/WwtpPage/WwtpPage.js +3 -2
  557. package/lib/pages/WwtpPage/WwtpPageContainer.js +3 -2
  558. package/lib/pages/WwtpPage/index.js +3 -2
  559. package/lib/providers/Slideshow/SlideshowContext.js +7 -4
  560. package/lib/providers/Slideshow/SlideshowProvider.js +5 -4
  561. package/lib/providers/Slideshow/SlideshowRunner.js +3 -2
  562. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -4
  563. package/lib/providers/UrlHistory/UrlHistoryProvider.js +5 -4
  564. package/lib/providers/UrlHistory/index.js +1 -1
  565. package/lib/providers/UrlHistory/useLastVisited.js +3 -2
  566. package/lib/react-app-env.d.js +1 -1
  567. package/lib/store/ImportGis/action.js +1 -1
  568. package/lib/store/ImportGis/actionTypes.js +5 -4
  569. package/lib/store/ImportGis/actionsCreator.js +1 -1
  570. package/lib/store/ImportGis/models/gisImports.js +1 -1
  571. package/lib/store/ImportGis/reducer.js +1 -1
  572. package/lib/store/WBE/actionTypes.js +3 -2
  573. package/lib/store/WBE/actions.js +1 -1
  574. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  575. package/lib/store/WBE/models/IWBE.js +1 -1
  576. package/lib/store/WBE/models/IWBEState.js +1 -1
  577. package/lib/store/WBE/reducer.js +1 -1
  578. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +9 -5
  579. package/lib/store/WWTPDashboard/types.js +1 -1
  580. package/lib/store/areas/actionTypes.js +7 -4
  581. package/lib/store/areas/actions.js +1 -1
  582. package/lib/store/areas/models/IArea.js +1 -1
  583. package/lib/store/areas/models/IAreasState.js +1 -1
  584. package/lib/store/areas/reducer.js +1 -1
  585. package/lib/store/context/actionTypes.js +5 -3
  586. package/lib/store/context/actions.js +1 -1
  587. package/lib/store/context/contextMiddlewares.js +3 -2
  588. package/lib/store/context/models/INavContext.js +1 -1
  589. package/lib/store/context/models/INavContextState.js +1 -1
  590. package/lib/store/context/reducer.js +1 -1
  591. package/lib/store/dashboard/dashboardSlice.js +5 -3
  592. package/lib/store/dashboard/periodType.js +1 -1
  593. package/lib/store/edges/actionTypes.js +9 -5
  594. package/lib/store/edges/actions.js +1 -1
  595. package/lib/store/edges/models/IEdge.js +1 -1
  596. package/lib/store/edges/models/IEdgesState.js +1 -1
  597. package/lib/store/edges/reducer.js +1 -1
  598. package/lib/store/events/actionTypes.js +33 -17
  599. package/lib/store/events/actions.js +1 -1
  600. package/lib/store/events/models/IEvent.js +1 -1
  601. package/lib/store/events/models/IEventsState.js +1 -1
  602. package/lib/store/events/models/ISource.js +1 -1
  603. package/lib/store/events/reducer.js +1 -1
  604. package/lib/store/filters/IFilter.js +1 -1
  605. package/lib/store/filters/IFilterItem.js +1 -1
  606. package/lib/store/global/actionTypes.js +21 -11
  607. package/lib/store/global/actions.js +1 -1
  608. package/lib/store/global/models/IGlobalState.js +1 -1
  609. package/lib/store/global/reducer.js +1 -1
  610. package/lib/store/permissions/permissionsSlice.js +3 -2
  611. package/lib/store/points/actionTypes.js +5 -3
  612. package/lib/store/points/actions.js +1 -1
  613. package/lib/store/points/models/IGeoPoint.js +1 -1
  614. package/lib/store/points/models/IGroup.js +1 -1
  615. package/lib/store/points/models/IIssue.js +1 -1
  616. package/lib/store/points/models/IPoint.js +1 -1
  617. package/lib/store/points/models/IPointsState.js +1 -1
  618. package/lib/store/points/reducer.js +1 -1
  619. package/lib/store/rootActionTypes.js +3 -2
  620. package/lib/store/rootActions.js +1 -1
  621. package/lib/store/rootReducer.js +3 -2
  622. package/lib/store/rootStore.js +1 -1
  623. package/lib/store/samplings/action.js +1 -1
  624. package/lib/store/samplings/actionTypes.js +5 -4
  625. package/lib/store/samplings/actionsCreator.js +1 -1
  626. package/lib/store/samplings/models/Samplings.js +1 -1
  627. package/lib/store/samplings/reducer.js +1 -1
  628. package/lib/styles/StylesLayout.js +3 -2
  629. package/lib/styles/theme/theme.js +7 -4
  630. package/lib/test/mocks/browser.js +3 -2
  631. package/lib/test/test-utils.js +1 -1
  632. package/lib/ui-kit/Alert/KandoAlert.js +3 -2
  633. package/lib/ui-kit/Button/Button.js +7 -4
  634. package/lib/ui-kit/Button/Button.test.js +3 -3
  635. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  636. package/lib/ui-kit/Checkbox/Checkbox.js +5 -3
  637. package/lib/ui-kit/ContentCard/ContentCard.js +3 -2
  638. package/lib/ui-kit/Dashboard/Dashboard.js +5 -4
  639. package/lib/ui-kit/Dashboard/index.js +3 -2
  640. package/lib/ui-kit/DropDown/DropDown.js +3 -2
  641. package/lib/ui-kit/DropDown/DropDown.test.js +1 -1
  642. package/lib/ui-kit/DropDown/DropDownItem.js +5 -3
  643. package/lib/ui-kit/DropDown/DropdownToggle.js +5 -3
  644. package/lib/ui-kit/EmptyState/EmptyState.js +3 -2
  645. package/lib/ui-kit/IconAction/IconAction.js +3 -2
  646. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +5 -4
  647. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +3 -2
  648. package/lib/ui-kit/InletsPie/InletsPie.js +3 -2
  649. package/lib/ui-kit/InletsPie/index.js +3 -2
  650. package/lib/ui-kit/InletsPie/options.js +5 -3
  651. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +5 -4
  652. package/lib/ui-kit/KandoFilter/KandoFilter.js +3 -2
  653. package/lib/ui-kit/KandoList/KandoList.js +5 -4
  654. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  655. package/lib/ui-kit/KandoTable/KandoTable.js +5 -4
  656. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
  657. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  658. package/lib/ui-kit/Layout/Layout.js +3 -2
  659. package/lib/ui-kit/MobileInput/MobileInput.js +3 -2
  660. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +3 -2
  661. package/lib/ui-kit/ModalConfirmation/index.js +3 -2
  662. package/lib/ui-kit/OrganicEvents/GaugeChart.js +3 -2
  663. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +3 -2
  664. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +3 -2
  665. package/lib/ui-kit/OrganicEvents/TextInfo.js +3 -2
  666. package/lib/ui-kit/OrganicEvents/index.js +3 -2
  667. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +3 -2
  668. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +3 -2
  669. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +5 -3
  670. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +5 -3
  671. package/lib/ui-kit/ScoreGauge/constant.js +3 -2
  672. package/lib/ui-kit/ScoreGauge/index.js +3 -2
  673. package/lib/ui-kit/TimeLineChart/TrendChart.js +3 -2
  674. package/lib/ui-kit/TimeLineChart/index.js +3 -2
  675. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +5 -3
  676. package/lib/ui-kit/Tooltip/Tooltip.js +3 -2
  677. package/lib/ui-kit/index.js +1 -1
  678. package/lib/ui-kit/kandoStepper/KandoStepper.js +3 -2
  679. package/lib/ui-kit/siteName/SiteName.js +3 -2
  680. package/lib/utilities/ActionUtility.js +1 -1
  681. package/lib/utilities/Alert.js +3 -2
  682. package/lib/utilities/Analytics.js +3 -2
  683. package/lib/utilities/Array.js +5 -3
  684. package/lib/utilities/Enum.js +27 -24
  685. package/lib/utilities/ErrorBoundary.js +9 -9
  686. package/lib/utilities/File.js +48 -42
  687. package/lib/utilities/GetDir.js +3 -2
  688. package/lib/utilities/KandoDate.js +5 -3
  689. package/lib/utilities/KandoModal.js +5 -4
  690. package/lib/utilities/LocalStorage.js +9 -5
  691. package/lib/utilities/ThousandsToK.js +3 -2
  692. package/lib/utilities/TimeFormat.js +5 -4
  693. package/lib/utilities/Truncate.js +5 -4
  694. package/lib/utilities/edgesMath.js +7 -6
  695. package/lib/utilities/i18n.js +3 -2
  696. package/lib/utilities/kql.js +5 -3
  697. package/lib/utilities/map/icons.js +3 -2
  698. package/lib/utilities/polylinedecorator.js +5 -3
  699. package/lib/utilities/scoreToData.js +17 -8
  700. package/lib/utilities/scoreToData.test.js +1 -1
  701. package/lib/utilities/time.js +7 -4
  702. package/lib/utilities/uploadToS3.js +3 -2
  703. package/lib/utilities/urls.js +7 -4
  704. package/package.json +1 -1
@@ -24,14 +24,16 @@ var _Event = require("./events/Event");
24
24
  var _MapUtils = require("./MapUtils");
25
25
  var _theme = require("../../styles/theme/theme");
26
26
  var _ListContext = require("pages/DashboardMap/ListContext");
27
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
28
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
  // @ts-ignore
30
30
 
31
31
  // import { storeMap } from 'src/store/global/actions';
32
32
 
33
+ // import { appReducer } from '../../store/rootReducer';
34
+
33
35
  require('leaflet.markercluster');
34
- var Map = exports.Map = function Map(_ref) {
36
+ var Map = function Map(_ref) {
35
37
  var areas = _ref.areas,
36
38
  edges = _ref.edges,
37
39
  points = _ref.points,
@@ -63,68 +65,73 @@ var Map = exports.Map = function Map(_ref) {
63
65
  setMapZoomLevel = _useState2[1];
64
66
  var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
65
67
  selectedItem = _useSelectedItem.selectedItem;
66
- var eventsData = (0, _reactRedux.useSelector)(function (state) {
67
- return state.events_data;
68
- });
68
+ // const eventsData = useSelector(
69
+ // (state: ReturnType<typeof appReducer>) => state.events_data,
70
+ // );
69
71
  var hoveredEventPresent = (0, _react.useMemo)(function () {
70
72
  return hoveredEvent !== null && hoveredEvent !== undefined;
71
73
  }, [hoveredEvent]);
72
74
  var focusedEventPresent = (0, _react.useMemo)(function () {
73
75
  return focusedEvent !== null && focusedEvent !== undefined;
74
76
  }, [focusedEvent]);
77
+
78
+ // Add parent layer group for all factories
75
79
  var _useState3 = (0, _react.useState)(L.layerGroup()),
76
80
  _useState4 = (0, _slicedToArray2.default)(_useState3, 1),
77
- unmonitoredFactoriesGroup = _useState4[0];
81
+ factoriesParentGroup = _useState4[0];
78
82
  var _useState5 = (0, _react.useState)(L.layerGroup()),
79
83
  _useState6 = (0, _slicedToArray2.default)(_useState5, 1),
80
- monitoredFactoriesGroup = _useState6[0];
84
+ unmonitoredFactoriesGroup = _useState6[0];
81
85
  var _useState7 = (0, _react.useState)(L.layerGroup()),
82
86
  _useState8 = (0, _slicedToArray2.default)(_useState7, 1),
83
- unmonitoredEdgesGroup = _useState8[0];
87
+ monitoredFactoriesGroup = _useState8[0];
84
88
  var _useState9 = (0, _react.useState)(L.layerGroup()),
85
89
  _useState10 = (0, _slicedToArray2.default)(_useState9, 1),
86
- monitoredEdgesGroup = _useState10[0];
90
+ unmonitoredEdgesGroup = _useState10[0];
87
91
  var _useState11 = (0, _react.useState)(L.layerGroup()),
88
92
  _useState12 = (0, _slicedToArray2.default)(_useState11, 1),
89
- wwtpsLayerGroup = _useState12[0];
93
+ monitoredEdgesGroup = _useState12[0];
90
94
  var _useState13 = (0, _react.useState)(L.layerGroup()),
91
95
  _useState14 = (0, _slicedToArray2.default)(_useState13, 1),
92
- collectorsLayerGroup = _useState14[0];
93
- var _useState15 = (0, _react.useState)(new L.FeatureGroup()),
96
+ wwtpsLayerGroup = _useState14[0];
97
+ var _useState15 = (0, _react.useState)(L.layerGroup()),
94
98
  _useState16 = (0, _slicedToArray2.default)(_useState15, 1),
95
- areasLayerGroup = _useState16[0];
96
- var _useState17 = (0, _react.useState)(true),
97
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
98
- edgesCheckbox = _useState18[0],
99
- setEdgesCheckbox = _useState18[1];
99
+ collectorsLayerGroup = _useState16[0];
100
+ var _useState17 = (0, _react.useState)(new L.FeatureGroup()),
101
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
102
+ areasLayerGroup = _useState18[0];
103
+ var _useState19 = (0, _react.useState)(true),
104
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
105
+ edgesCheckbox = _useState20[0],
106
+ setEdgesCheckbox = _useState20[1];
100
107
  var renderPointMarkers = function renderPointMarkers(filteredPoints, mapRef, props) {
101
108
  return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
102
109
  map: mapRef.current,
103
110
  points: filteredPoints
104
111
  }, props));
105
112
  };
106
- var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
113
+ var memoizedMonitoredPoints = function memoizedMonitoredPoints() {
107
114
  var monitoredPoints = (0, _MapUtils.filterPoints)(points, true);
108
115
  return renderPointMarkers(monitoredPoints, mapRef, {
109
- includeUnmonitoredPoints: includeUnmonitoredPoints,
116
+ includeUnmonitoredPoints: true,
110
117
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
111
118
  factoriesGroup: monitoredFactoriesGroup,
112
119
  wwtpsGroup: wwtpsLayerGroup,
113
120
  collectorsGroup: collectorsLayerGroup,
114
121
  forEventsView: forEventsView
115
122
  });
116
- }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
117
- var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
123
+ };
124
+ var memoizedUnmonitoredPoints = function memoizedUnmonitoredPoints() {
118
125
  var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, false);
119
126
  return renderPointMarkers(unmonitoredPoints, mapRef, {
120
- includeUnmonitoredPoints: includeUnmonitoredPoints,
127
+ includeUnmonitoredPoints: true,
121
128
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
122
129
  factoriesGroup: unmonitoredFactoriesGroup,
123
130
  wwtpsGroup: wwtpsLayerGroup,
124
131
  collectorsGroup: collectorsLayerGroup,
125
132
  forEventsView: forEventsView
126
133
  });
127
- }, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
134
+ };
128
135
  var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
129
136
  return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
130
137
  edges: filteredEdges,
@@ -166,15 +173,11 @@ var Map = exports.Map = function Map(_ref) {
166
173
  var zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
167
174
  if (isChecked) {
168
175
  // Hide unmonitored points when "show only monitored" is checked
169
- unmonitoredFactoriesGroup.removeFrom(mapRef.current);
170
-
171
- // Hide unmonitored edges if at appropriate zoom level
172
- if (edgesZoomLevels.includes(zoom)) {
173
- unmonitoredEdgesGroup.removeFrom(mapRef.current);
174
- }
176
+ factoriesParentGroup.removeLayer(unmonitoredFactoriesGroup);
177
+ unmonitoredEdgesGroup.removeFrom(mapRef.current);
175
178
  } else {
176
179
  // Show all points when "show only monitored" is unchecked
177
- unmonitoredFactoriesGroup.addTo(mapRef.current);
180
+ factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
178
181
 
179
182
  // Show unmonitored edges if at appropriate zoom level
180
183
  if (edgesZoomLevels.includes(zoom)) {
@@ -188,25 +191,25 @@ var Map = exports.Map = function Map(_ref) {
188
191
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
189
192
  };
190
193
  var zoomRulesForEventsView = function zoomRulesForEventsView() {
191
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
194
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
192
195
  return payload;
193
196
  };
194
197
  var zoomRulesForDashaboardMaps = function zoomRulesForDashaboardMaps() {
195
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, " ", memoizedMonitoredPoints);
196
- if (edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
198
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
199
+ if (forEventsView || edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
197
200
  payload = zoomRulesForEventsView();
198
201
  }
199
202
  return payload;
200
203
  };
201
- var memoizedZoomControl = (0, _react.useMemo)(function () {
204
+ var memoizedZoomControl = function memoizedZoomControl() {
202
205
  var payload = forEventsView ? zoomRulesForEventsView() : zoomRulesForDashaboardMaps();
203
206
  var checkbox = document.querySelector('#monitored-points-checkbox');
204
207
  if (checkbox) {
205
208
  handlePointsCheckboxChange(checkbox.checked);
206
209
  }
207
210
  return payload;
208
- }, [mapZoomLevel, eventsData.isFetching, focusedEvent, hoveredEvent, points, mapRef.current, edgesCheckbox, unmonitoredEdgesGroup]);
209
- var memoizedEvent = (0, _react.useMemo)(function () {
211
+ };
212
+ var memoizedEvent = function memoizedEvent() {
210
213
  if (focusedEventPresent) {
211
214
  focusedEvent.focused = focusedEventPresent;
212
215
  focusedEvent.hovered = !focusedEventPresent;
@@ -223,14 +226,14 @@ var Map = exports.Map = function Map(_ref) {
223
226
  points: points,
224
227
  includeNetwork: !hoveredEventPresent
225
228
  });
226
- }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
227
- (0, _react.useEffect)(function () {
228
- return function cleanup() {
229
- var _mapRef$current;
230
- collectorsLayerGroup.clearLayers();
231
- (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.removeLayer(collectorsLayerGroup);
232
- };
233
- }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
229
+ };
230
+
231
+ // useEffect(() => {
232
+ // return function cleanup() {
233
+ // collectorsLayerGroup.clearLayers();
234
+ // mapRef.current?.removeLayer(collectorsLayerGroup);
235
+ // };
236
+ // }, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
234
237
 
235
238
  // useEffect(() => {
236
239
  // initializeMap(
@@ -263,52 +266,49 @@ var Map = exports.Map = function Map(_ref) {
263
266
  (0, _react.useEffect)(function () {
264
267
  if (!mapRef.current) {
265
268
  (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, true, global_data.waterAuthorityId);
269
+
270
+ // Initialize parent factory group
271
+ if (mapRef.current) {
272
+ factoriesParentGroup.addTo(mapRef.current);
273
+ factoriesParentGroup.addLayer(monitoredFactoriesGroup);
274
+ factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
275
+ }
266
276
  } else {
267
- setMapZoomLevel(mapRef.current.getZoom());
277
+ // setMapZoomLevel(mapRef.current.getZoom());
268
278
  if (!areaToCenterBy) {
269
279
  areaToCenterBy = areas.map(function (area) {
270
280
  return area.shape_data;
271
281
  }).flat();
272
282
  }
273
-
274
- // Add layer groups to map after initialization
275
- monitoredFactoriesGroup.addTo(mapRef.current);
276
- unmonitoredFactoriesGroup.addTo(mapRef.current);
277
- wwtpsLayerGroup.addTo(mapRef.current);
278
- collectorsLayerGroup.addTo(mapRef.current);
279
- (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
283
+ if (!forEventsView || !focusedEvent) {
284
+ (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
285
+ }
280
286
  trackLayerbox();
281
287
  }
288
+ }, [mapRef.current, points]);
289
+ (0, _react.useEffect)(function () {
290
+ if (!mapRef.current) {
291
+ return;
292
+ }
282
293
 
283
- // return function cleanup() {
284
- // // Clear all layers
285
- // monitoredFactoriesGroup.clearLayers();
286
- // unmonitoredFactoriesGroup.clearLayers();
287
- // wwtpsLayerGroup.clearLayers();
288
- // collectorsLayerGroup.clearLayers();
289
- // areasLayerGroup.clearLayers();
290
-
291
- // // Remove layer groups from map
292
- // if (mapRef.current) {
293
- // mapRef.current.removeLayer(monitoredFactoriesGroup);
294
- // mapRef.current.removeLayer(unmonitoredFactoriesGroup);
295
- // mapRef.current.removeLayer(wwtpsLayerGroup);
296
- // mapRef.current.removeLayer(collectorsLayerGroup);
297
- // mapRef.current.removeLayer(areasLayerGroup);
298
-
299
- // // Only remove the map if it hasn't been removed already
300
- // // if (mapRef.current._container && mapRef.current._container._leaflet_id === mapRef.current._containerId) {
301
- // // mapRef.current.remove();
302
- // // }
303
- // }
304
-
305
- // // dispatch(storeMap(undefined));
294
+ // return () => {
295
+ // mapRef.current?.clearLayers();
296
+ // mapRef.current?.off();
297
+ // mapRef.current?.remove();
298
+ // mapRef.current = null;
299
+ // dispatch(storeMap(undefined));
306
300
  // };
307
- }, [mapRef.current, areaToCenterBy, points, global_data.waterAuthorityId]);
301
+
302
+ if (_MapUtils.zoomLevels[mapZoomLevel] === 'XLarge') {
303
+ mapRef.current.removeLayer(factoriesParentGroup);
304
+ } else {
305
+ mapRef.current.addLayer(factoriesParentGroup);
306
+ }
307
+ }, [mapZoomLevel]);
308
308
  (0, _react.useEffect)(function () {
309
- var _mapRef$current2;
309
+ var _mapRef$current;
310
310
  var clicked = false;
311
- (_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.eachLayer(function (layer) {
311
+ (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.eachLayer(function (layer) {
312
312
  if (clicked) return;
313
313
  if ((layer === null || layer === void 0 ? void 0 : layer.kando_object_id) === selectedItem && layer.isPopupOpen() === false) {
314
314
  if (layer instanceof L.Marker) {
@@ -327,15 +327,15 @@ var Map = exports.Map = function Map(_ref) {
327
327
  className: " map-container ".concat(global_data.sidenavExpanded ? '' : 'map-container--sidenav-collapsed')
328
328
  }, /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, null, /*#__PURE__*/_react.default.createElement("div", {
329
329
  id: "map"
330
- }), (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
330
+ }, (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
331
331
  areas: areas,
332
332
  map: mapRef.current,
333
333
  L: L,
334
334
  areaToCenterBy: areaToCenterBy,
335
335
  mapZoom: mapZoomLevel,
336
- rerender: _MapUtils.zoomLevels[mapZoomLevel],
337
336
  global_data: global_data,
338
337
  featureGroup: areasLayerGroup
339
- }), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent, memoizedZoomControl, children))));
338
+ }), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children)))));
340
339
  };
341
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJNYXAiLCJleHBvcnRzIiwiX3JlZiIsImFyZWFzIiwiZWRnZXMiLCJwb2ludHMiLCJnbG9iYWxfZGF0YSIsImFyZWFUb0NlbnRlckJ5IiwiZm9jdXNlZEV2ZW50IiwiaG92ZXJlZEV2ZW50IiwiX3JlZiRoaWRlRWRnZXMiLCJoaWRlRWRnZXMiLCJfcmVmJG1hcEJveFN0eWxlIiwibWFwQm94U3R5bGUiLCJsZWFmbGV0TWFwIiwibWFwRGVmYXVsdCIsImNoaWxkcmVuIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yIiwiaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yMiIsImluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMiLCJfcmVmJGZvckV2ZW50c1ZpZXciLCJmb3JFdmVudHNWaWV3IiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiX3JlZiRmb3JXV1RQRGFzaGJvYXJkIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJfdXNlU2VsZWN0ZWRJdGVtIiwidXNlU2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtIiwiZXZlbnRzRGF0YSIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJldmVudHNfZGF0YSIsImhvdmVyZWRFdmVudFByZXNlbnQiLCJ1c2VNZW1vIiwidW5kZWZpbmVkIiwiZm9jdXNlZEV2ZW50UHJlc2VudCIsIl91c2VTdGF0ZTMiLCJsYXllckdyb3VwIiwiX3VzZVN0YXRlNCIsInVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJ1bm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJtb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInd3dHBzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjb2xsZWN0b3JzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTE1IiwiRmVhdHVyZUdyb3VwIiwiX3VzZVN0YXRlMTYiLCJhcmVhc0xheWVyR3JvdXAiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiZWRnZXNDaGVja2JveCIsInNldEVkZ2VzQ2hlY2tib3giLCJyZW5kZXJQb2ludE1hcmtlcnMiLCJmaWx0ZXJlZFBvaW50cyIsInByb3BzIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJQb2ludE1hcmtlcnMiLCJhc3NpZ24iLCJtZW1vaXplZE1vbml0b3JlZFBvaW50cyIsIm1vbml0b3JlZFBvaW50cyIsImZpbHRlclBvaW50cyIsInJlcmVuZGVyIiwiem9vbUxldmVscyIsImZhY3Rvcmllc0dyb3VwIiwid3d0cHNHcm91cCIsImNvbGxlY3RvcnNHcm91cCIsIm1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMiLCJ1bm1vbml0b3JlZFBvaW50cyIsInJlbmRlckVkZ2VzIiwiZmlsdGVyZWRFZGdlcyIsIm1lbW9pemVkRWRnZXMiLCJtb25pdG9yZWRFZGdlcyIsImZpbHRlckVkZ2VzIiwiaGlkZUFycm93cyIsImFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50cyIsImdyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzIiwidW5tb25pdG9yZWRFZGdlcyIsInNob3VsZG50RHJhdyIsImdldExheWVycyIsImxlbmd0aCIsImhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UiLCJpc0NoZWNrZWQiLCJlZGdlc1pvb21MZXZlbHMiLCJoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSIsInpvb20iLCJnZXRab29tIiwicmVtb3ZlRnJvbSIsImluY2x1ZGVzIiwiYWRkVG8iLCJ0cmFja0xheWVyYm94Iiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsImlzRmV0Y2hpbmciLCJtZW1vaXplZEV2ZW50IiwiZm9jdXNlZCIsImhvdmVyZWQiLCJFdmVudCIsImV2ZW50IiwiaW5jbHVkZU5ldHdvcmsiLCJldmVudEZpbHRlclBhcmFtIiwidXNlRWZmZWN0IiwiY2xlYW51cCIsIl9tYXBSZWYkY3VycmVudCIsImNsZWFyTGF5ZXJzIiwicmVtb3ZlTGF5ZXIiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJ3YXRlckF1dGhvcml0eUlkIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJmbGF0IiwiYXJlYUZvY3VzTG9naWMiLCJfbWFwUmVmJGN1cnJlbnQyIiwiY2xpY2tlZCIsImVhY2hMYXllciIsImxheWVyIiwia2FuZG9fb2JqZWN0X2lkIiwiaXNQb3B1cE9wZW4iLCJNYXJrZXIiLCJmaXJlIiwiUG9seWdvbiIsImNsYXNzTmFtZSIsImNvbmNhdCIsInNpZGVuYXZFeHBhbmRlZCIsImlkIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJBcmVhUG9seWdvbnMiLCJtYXBab29tIiwiZmVhdHVyZUdyb3VwIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuLy8gaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vZXZlbnRzL0V2ZW50JztcbmltcG9ydCB7XG4gIGFyZWFGb2N1c0xvZ2ljLFxuICBmaWx0ZXJFZGdlcyxcbiAgZmlsdGVyUG9pbnRzLFxuICBpbml0aWFsaXplTWFwLFxuICBpc1ZhbGlkQXJlYSxcbiAgc2V0dXBDaGVja2JveExpc3RlbmVyLFxuICBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzLFxuICBzaG91bGRMb2FkTWFwT2JqZWN0cyxcbiAgem9vbUxldmVscyxcbn0gZnJvbSAnLi9NYXBVdGlscyc7XG5pbXBvcnQgeyBsZWFmbGV0TWFwIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCB7IHVzZVNlbGVjdGVkSXRlbSB9IGZyb20gJ3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvTGlzdENvbnRleHQnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IGV2ZW50c0RhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5ldmVudHNfZGF0YSxcbiAgKTtcbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIGNvbnN0IFt1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB0cnVlKTtcbiAgICByZXR1cm4gcmVuZGVyUG9pbnRNYXJrZXJzKG1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgd3d0cHNHcm91cDogd3d0cHNMYXllckdyb3VwLFxuICAgICAgY29sbGVjdG9yc0dyb3VwOiBjb2xsZWN0b3JzTGF5ZXJHcm91cCxcbiAgICAgIGZvckV2ZW50c1ZpZXc6IGZvckV2ZW50c1ZpZXcsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IHJlbmRlckVkZ2VzID0gKGZpbHRlcmVkRWRnZXMsIG1hcFJlZiwgZWRnZXNDaGVja2JveCwgcHJvcHMpID0+XG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlc0NoZWNrYm94ICYmIChcbiAgICAgIDxFZGdlcyBlZGdlcz17ZmlsdGVyZWRFZGdlc30gbWFwPXttYXBSZWYuY3VycmVudH0gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRFZGdlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG1vbml0b3JlZEVkZ2VzID0gZmlsdGVyRWRnZXMoZWRnZXMsIHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlckVkZ2VzKG1vbml0b3JlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHtcbiAgICAgIEwsXG4gICAgICBwb2ludHMsXG4gICAgICBoaWRlRWRnZXMsXG4gICAgICBoaWRlQXJyb3dzOiB0cnVlLFxuICAgICAgYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzOiBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzLFxuICAgICAgZ3JvdXA6IG1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1bm1vbml0b3JlZEVkZ2VzID0gZmlsdGVyRWRnZXMoZWRnZXMsIHBvaW50cywgZmFsc2UpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyh1bm1vbml0b3JlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHtcbiAgICAgIEwsXG4gICAgICBwb2ludHMsXG4gICAgICBoaWRlRWRnZXMsXG4gICAgICBoaWRlQXJyb3dzOiB0cnVlLFxuICAgICAgYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzOiBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzLFxuICAgICAgZ3JvdXA6IHVubW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgICAgIHNob3VsZG50RHJhdzogdW5tb25pdG9yZWRFZGdlc0dyb3VwLmdldExheWVycygpLmxlbmd0aCAhPT0gMCxcbiAgICB9KTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgc2V0RWRnZXNDaGVja2JveChpc0NoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFRoaXMgdmFyaWFibGUgc3RvcmVzIHRoZSB6b29tIGxldmVscyB0aGUgZWRnZXMgYXJlIGRpc3BsYXllZFxuICAvLyBJdCBpcyB1c2VkIGluIHR3byBwbGFjZXMgaW4gdGhlIGNvZGUsIHNvIGl0IGlzIGJldHRlciB0byBzdG9yZSBpdCBpbiBvbmUgcGxhY2VcbiAgY29uc3QgZWRnZXNab29tTGV2ZWxzID0gWydTbWFsbCcsICdNZWRpdW0nLCAnTUxhcmdlJywgJ0xhcmdlJ107XG5cbiAgY29uc3QgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgaWYgKG1hcFJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgem9vbSA9IHpvb21MZXZlbHNbbWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpXTtcblxuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBIaWRlIHVubW9uaXRvcmVkIHBvaW50cyB3aGVuIFwic2hvdyBvbmx5IG1vbml0b3JlZFwiIGlzIGNoZWNrZWRcbiAgICAgICAgdW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cC5yZW1vdmVGcm9tKG1hcFJlZi5jdXJyZW50KTtcblxuICAgICAgICAvLyBIaWRlIHVubW9uaXRvcmVkIGVkZ2VzIGlmIGF0IGFwcHJvcHJpYXRlIHpvb20gbGV2ZWxcbiAgICAgICAgaWYgKGVkZ2VzWm9vbUxldmVscy5pbmNsdWRlcyh6b29tKSkge1xuICAgICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5yZW1vdmVGcm9tKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2hvdyBhbGwgcG9pbnRzIHdoZW4gXCJzaG93IG9ubHkgbW9uaXRvcmVkXCIgaXMgdW5jaGVja2VkXG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuXG4gICAgICAgIC8vIFNob3cgdW5tb25pdG9yZWQgZWRnZXMgaWYgYXQgYXBwcm9wcmlhdGUgem9vbSBsZXZlbFxuICAgICAgICBpZiAoZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb20pKSB7XG4gICAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZFRvKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB0cmFja0xheWVyYm94ID0gKCkgPT4ge1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcignI2VkZ2VzLWNoZWNrYm94JywgaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSk7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKFxuICAgICAgJyNtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICAgIGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRXZlbnRzVmlldyA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gKFxuICAgICAgPD5cbiAgICAgICAge21lbW9pemVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c30ge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzfVxuICAgICAgPC8+XG4gICAgKTtcbiAgICBpZiAoZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkpIHtcbiAgICAgIHBheWxvYWQgPSB6b29tUnVsZXNGb3JFdmVudHNWaWV3KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBmb3JFdmVudHNWaWV3XG4gICAgICA/IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKVxuICAgICAgOiB6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcygpO1xuXG4gICAgY29uc3QgY2hlY2tib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJyNtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGNoZWNrYm94KSB7XG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZShjaGVja2JveC5jaGVja2VkKTtcbiAgICB9XG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH0sIFtcbiAgICBtYXBab29tTGV2ZWwsXG4gICAgZXZlbnRzRGF0YS5pc0ZldGNoaW5nLFxuICAgIGZvY3VzZWRFdmVudCxcbiAgICBob3ZlcmVkRXZlbnQsXG4gICAgcG9pbnRzLFxuICAgIG1hcFJlZi5jdXJyZW50LFxuICAgIGVkZ2VzQ2hlY2tib3gsXG4gICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLFxuICBdKTtcblxuICBjb25zdCBtZW1vaXplZEV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuICAgIHJldHVybiAoXG4gICAgICA8RXZlbnRcbiAgICAgICAgZXZlbnQ9e2ZvY3VzZWRFdmVudCEgfHwgaG92ZXJlZEV2ZW50IX1cbiAgICAgICAgbWFwPXttYXB9XG4gICAgICAgIGVkZ2VzPXtlZGdlcyF9XG4gICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgaW5jbHVkZU5ldHdvcms9eyFob3ZlcmVkRXZlbnRQcmVzZW50fVxuICAgICAgLz5cbiAgICApO1xuICB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihjb2xsZWN0b3JzTGF5ZXJHcm91cCk7XG4gICAgfTtcbiAgfSwgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgLy8gdXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpbml0aWFsaXplTWFwKFxuICAvLyAgICAgbWFwWm9vbUxldmVsLFxuICAvLyAgICAgbWFwQm94U3R5bGUsXG4gIC8vICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgLy8gICAgIG1hcFJlZixcbiAgLy8gICAgIGRpc3BhdGNoLFxuICAvLyAgICAgaXNWYWxpZEFyZWEsXG4gIC8vICAgICBhcmVhVG9DZW50ZXJCeSxcbiAgLy8gICAgIHNldE1hcFpvb21MZXZlbCxcbiAgLy8gICAgIGZvcldXVFBEYXNoYm9hcmQsXG4gIC8vICAgICB0cnVlLFxuICAvLyAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgLy8gICApO1xuXG4gIC8vICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gIC8vICAgICB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgLy8gICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gIC8vICAgICBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgLy8gICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcih3d3Rwc0xheWVyR3JvdXApO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgLy8gICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuICAvLyAgICAgLy8gQHRzLWlnbm9yZVxuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlKCk7XG4gIC8vICAgICBkaXNwYXRjaChzdG9yZU1hcCh1bmRlZmluZWQpKTtcbiAgLy8gICB9O1xuICAvLyB9LCBbZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgaW5pdGlhbGl6ZU1hcChcbiAgICAgICAgbWFwWm9vbUxldmVsLFxuICAgICAgICBtYXBCb3hTdHlsZSxcbiAgICAgICAgbGVhZmxldE1hcC5zYXRlbGxpdGUsXG4gICAgICAgIG1hcFJlZixcbiAgICAgICAgZGlzcGF0Y2gsXG4gICAgICAgIGlzVmFsaWRBcmVhLFxuICAgICAgICBhcmVhVG9DZW50ZXJCeSxcbiAgICAgICAgc2V0TWFwWm9vbUxldmVsLFxuICAgICAgICB0cnVlLFxuICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TWFwWm9vbUxldmVsKG1hcFJlZi5jdXJyZW50LmdldFpvb20oKSk7XG4gICAgICBpZiAoIWFyZWFUb0NlbnRlckJ5KSB7XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5ID0gYXJlYXMubWFwKChhcmVhKSA9PiBhcmVhLnNoYXBlX2RhdGEpLmZsYXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGxheWVyIGdyb3VwcyB0byBtYXAgYWZ0ZXIgaW5pdGlhbGl6YXRpb25cbiAgICAgIG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLmFkZFRvKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgd3d0cHNMYXllckdyb3VwLmFkZFRvKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmFkZFRvKG1hcFJlZi5jdXJyZW50KTtcblxuICAgICAgYXJlYUZvY3VzTG9naWMobWFwUmVmLCBpc1ZhbGlkQXJlYSwgYXJlYVRvQ2VudGVyQnkpO1xuICAgICAgdHJhY2tMYXllcmJveCgpO1xuICAgIH1cblxuICAgIC8vIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIC8vICAgLy8gQ2xlYXIgYWxsIGxheWVyc1xuICAgIC8vICAgbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAvLyAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAvLyAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgIC8vICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAvLyAgIGFyZWFzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuXG4gICAgLy8gICAvLyBSZW1vdmUgbGF5ZXIgZ3JvdXBzIGZyb20gbWFwXG4gICAgLy8gICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAvLyAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIobW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgIC8vICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAvLyAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIod3d0cHNMYXllckdyb3VwKTtcbiAgICAvLyAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgIC8vICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuXG4gICAgLy8gICAgIC8vIE9ubHkgcmVtb3ZlIHRoZSBtYXAgaWYgaXQgaGFzbid0IGJlZW4gcmVtb3ZlZCBhbHJlYWR5XG4gICAgLy8gICAgIC8vIGlmIChtYXBSZWYuY3VycmVudC5fY29udGFpbmVyICYmIG1hcFJlZi5jdXJyZW50Ll9jb250YWluZXIuX2xlYWZsZXRfaWQgPT09IG1hcFJlZi5jdXJyZW50Ll9jb250YWluZXJJZCkge1xuICAgIC8vICAgICAvLyAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZSgpO1xuICAgIC8vICAgICAvLyB9XG4gICAgLy8gICB9XG5cbiAgICAvLyAgIC8vIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAgIC8vIH07XG4gIH0sIFttYXBSZWYuY3VycmVudCwgYXJlYVRvQ2VudGVyQnksIHBvaW50cywgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNsaWNrZWQgPSBmYWxzZTtcblxuICAgIG1hcFJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgICBpZiAoY2xpY2tlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyPy5rYW5kb19vYmplY3RfaWQgPT09IHNlbGVjdGVkSXRlbSAmJlxuICAgICAgICBsYXllci5pc1BvcHVwT3BlbigpID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuTWFya2VyKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2snKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXllciBpbnN0YW5jZW9mIEwuUG9seWdvbikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrLWV2ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2xpY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzZWxlY3RlZEl0ZW1dKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtbWFwLWNvbnRhaW5lclwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YCBtYXAtY29udGFpbmVyICR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEuc2lkZW5hdkV4cGFuZGVkID8gJycgOiAnbWFwLWNvbnRhaW5lci0tc2lkZW5hdi1jb2xsYXBzZWQnXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICA8ZGl2IGlkPVwibWFwXCI+PC9kaXY+XG4gICAgICAgICAge3Nob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpICYmIChcbiAgICAgICAgICAgIDxBcmVhUG9seWdvbnNcbiAgICAgICAgICAgICAgYXJlYXM9e2FyZWFzfVxuICAgICAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgICAgICBMPXtMfVxuICAgICAgICAgICAgICBhcmVhVG9DZW50ZXJCeT17YXJlYVRvQ2VudGVyQnl9XG4gICAgICAgICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgICAgICAgcmVyZW5kZXI9e3pvb21MZXZlbHNbbWFwWm9vbUxldmVsXX1cbiAgICAgICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbF9kYXRhfVxuICAgICAgICAgICAgICBmZWF0dXJlR3JvdXA9e2FyZWFzTGF5ZXJHcm91cH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyhcbiAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgYXJlYXMsXG4gICAgICAgICAgICBnbG9iYWxfZGF0YSxcbiAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICApICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHttZW1vaXplZEV2ZW50fVxuICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbH1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQU9BLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFFQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFXQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFBcUUsU0FBQVkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFkLHdCQUFBYyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FB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
340
+ exports.Map = Map;
341
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWFwIiwiX3JlZiIsImFyZWFzIiwiZWRnZXMiLCJwb2ludHMiLCJnbG9iYWxfZGF0YSIsImFyZWFUb0NlbnRlckJ5IiwiZm9jdXNlZEV2ZW50IiwiaG92ZXJlZEV2ZW50IiwiX3JlZiRoaWRlRWRnZXMiLCJoaWRlRWRnZXMiLCJfcmVmJG1hcEJveFN0eWxlIiwibWFwQm94U3R5bGUiLCJsZWFmbGV0TWFwIiwibWFwRGVmYXVsdCIsImNoaWxkcmVuIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yIiwiaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yMiIsImluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMiLCJfcmVmJGZvckV2ZW50c1ZpZXciLCJmb3JFdmVudHNWaWV3IiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiX3JlZiRmb3JXV1RQRGFzaGJvYXJkIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJfdXNlU2VsZWN0ZWRJdGVtIiwidXNlU2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiX3VzZVN0YXRlMyIsImxheWVyR3JvdXAiLCJfdXNlU3RhdGU0IiwiZmFjdG9yaWVzUGFyZW50R3JvdXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTciLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUxOCIsImFyZWFzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJlZGdlc0NoZWNrYm94Iiwic2V0RWRnZXNDaGVja2JveCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwic2hvdWxkbnREcmF3IiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImVkZ2VzWm9vbUxldmVscyIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJyZW1vdmVMYXllciIsInJlbW92ZUZyb20iLCJhZGRMYXllciIsImluY2x1ZGVzIiwiYWRkVG8iLCJ0cmFja0xheWVyYm94Iiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsInVzZUVmZmVjdCIsImluaXRpYWxpemVNYXAiLCJzYXRlbGxpdGUiLCJpc1ZhbGlkQXJlYSIsIndhdGVyQXV0aG9yaXR5SWQiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudCIsImNsaWNrZWQiLCJlYWNoTGF5ZXIiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsImlzUG9wdXBPcGVuIiwiTWFya2VyIiwiZmlyZSIsIlBvbHlnb24iLCJjbGFzc05hbWUiLCJjb25jYXQiLCJzaWRlbmF2RXhwYW5kZWQiLCJpZCIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiQXJlYVBvbHlnb25zIiwibWFwWm9vbSIsImZlYXR1cmVHcm91cCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL01hcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCAnc3JjL3V0aWxpdGllcy9wb2x5bGluZWRlY29yYXRvcic7XG5pbXBvcnQgJ2xlYWZsZXQubWFya2VyY2x1c3Rlcic7XG5pbXBvcnQgJ2xlYWZsZXQucGF0dGVybic7XG5pbXBvcnQgJ2xlYWZsZXQuaGVhdCc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL21vZGVscy9JQXJlYSc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJ3NyYy9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50Jztcbi8vIGltcG9ydCB7IHN0b3JlTWFwIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCB7IElHbG9iYWxTdGF0ZSB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvbW9kZWxzL0lHbG9iYWxTdGF0ZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnc3JjL3V0aWxpdGllcy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCB7IEFyZWFQb2x5Z29ucyB9IGZyb20gJy4vYXJlYXMvQXJlYVBvbHlnb25zJztcbmltcG9ydCBFZGdlcyBmcm9tICcuL2VkZ2VzL0VkZ2VzJztcbmltcG9ydCAnLi9NYXAuc2Nzcyc7XG5pbXBvcnQgJy4vcG9pbnRzL1BvaW50SWNvbi5zY3NzJztcbmltcG9ydCB7IFBvaW50TWFya2VycyB9IGZyb20gJy4vcG9pbnRzL1BvaW50TWFya2Vycyc7XG4vLyBpbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9FdmVudCc7XG5pbXBvcnQge1xuICBhcmVhRm9jdXNMb2dpYyxcbiAgZmlsdGVyRWRnZXMsXG4gIGZpbHRlclBvaW50cyxcbiAgaW5pdGlhbGl6ZU1hcCxcbiAgaXNWYWxpZEFyZWEsXG4gIHNldHVwQ2hlY2tib3hMaXN0ZW5lcixcbiAgc2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyxcbiAgc2hvdWxkTG9hZE1hcE9iamVjdHMsXG4gIHpvb21MZXZlbHMsXG59IGZyb20gJy4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgbGVhZmxldE1hcCB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgeyB1c2VTZWxlY3RlZEl0ZW0gfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL0xpc3RDb250ZXh0JztcbnJlcXVpcmUoJ2xlYWZsZXQubWFya2VyY2x1c3RlcicpO1xuXG5pbnRlcmZhY2UgTWFwUHJvcHMge1xuICBhcmVhczogSUFyZWFbXTtcbiAgZWRnZXM/OiBJRWRnZVtdO1xuICBwb2ludHM/OiBJUG9pbnRbXTtcbiAgZ2xvYmFsX2RhdGE6IElHbG9iYWxTdGF0ZTtcbiAgYXJlYVRvQ2VudGVyQnk/OiBhbnk7XG4gIGZvY3VzZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhvdmVyZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhpZGVFZGdlcz86IGJvb2xlYW47XG4gIG1hcEJveFN0eWxlPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IGFueTtcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM/OiBib29sZWFuO1xuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzPzogYm9vbGVhbjtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbiAgZm9yV1dUUERhc2hib2FyZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNYXA6IFJlYWN0LkZDPE1hcFByb3BzPiA9ICh7XG4gIGFyZWFzLFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBnbG9iYWxfZGF0YSxcbiAgYXJlYVRvQ2VudGVyQnksXG4gIGZvY3VzZWRFdmVudCxcbiAgaG92ZXJlZEV2ZW50LFxuICBoaWRlRWRnZXMgPSBmYWxzZSxcbiAgbWFwQm94U3R5bGUgPSBsZWFmbGV0TWFwLm1hcERlZmF1bHQsXG4gIGNoaWxkcmVuLFxuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSB0cnVlLFxuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzID0gZmFsc2UsXG4gIGZvckV2ZW50c1ZpZXcgPSBmYWxzZSxcbiAgc3R5bGUgPSB7fSxcbiAgZm9yV1dUUERhc2hib2FyZCA9IGZhbHNlLFxufSkgPT4ge1xuICBjb25zdCB7IG1hcCB9ID0gZ2xvYmFsX2RhdGE7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZjxMLk1hcCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttYXBab29tTGV2ZWwsIHNldE1hcFpvb21MZXZlbF0gPSB1c2VTdGF0ZSgyKTtcbiAgY29uc3QgeyBzZWxlY3RlZEl0ZW0gfSA9IHVzZVNlbGVjdGVkSXRlbSgpO1xuICAvLyBjb25zdCBldmVudHNEYXRhID0gdXNlU2VsZWN0b3IoXG4gIC8vICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZXZlbnRzX2RhdGEsXG4gIC8vICk7XG4gIGNvbnN0IGhvdmVyZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbaG92ZXJlZEV2ZW50XSk7XG5cbiAgY29uc3QgZm9jdXNlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICAvLyBBZGQgcGFyZW50IGxheWVyIGdyb3VwIGZvciBhbGwgZmFjdG9yaWVzXG4gIGNvbnN0IFtmYWN0b3JpZXNQYXJlbnRHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFt1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyhtb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiBtb25pdG9yZWRGYWN0b3JpZXNHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmb3JFdmVudHNWaWV3LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgICBzaG91bGRudERyYXc6IHVubW9uaXRvcmVkRWRnZXNHcm91cC5nZXRMYXllcnMoKS5sZW5ndGggIT09IDAsXG4gICAgfSk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICAvLyBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgem9vbSBsZXZlbHMgdGhlIGVkZ2VzIGFyZSBkaXNwbGF5ZWRcbiAgLy8gSXQgaXMgdXNlZCBpbiB0d28gcGxhY2VzIGluIHRoZSBjb2RlLCBzbyBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgaXQgaW4gb25lIHBsYWNlXG4gIGNvbnN0IGVkZ2VzWm9vbUxldmVscyA9IFsnU21hbGwnLCAnTWVkaXVtJywgJ01MYXJnZScsICdMYXJnZSddO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgbGV0IHpvb20gPSB6b29tTGV2ZWxzW21hcFJlZi5jdXJyZW50LmdldFpvb20oKV07XG5cbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gSGlkZSB1bm1vbml0b3JlZCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyBjaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaG93IGFsbCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyB1bmNoZWNrZWRcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG5cbiAgICAgICAgLy8gU2hvdyB1bm1vbml0b3JlZCBlZGdlcyBpZiBhdCBhcHByb3ByaWF0ZSB6b29tIGxldmVsXG4gICAgICAgIGlmIChlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbSkpIHtcbiAgICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHRyYWNrTGF5ZXJib3ggPSAoKSA9PiB7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKCcjZWRnZXMtY2hlY2tib3gnLCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JFdmVudHNWaWV3ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHMoKX1cbiAgICAgICAge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzKCl9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cygpfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHMoKX1cbiAgICAgIDwvPlxuICAgICk7XG4gICAgaWYgKGZvckV2ZW50c1ZpZXcgfHwgZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkpIHtcbiAgICAgIHBheWxvYWQgPSB6b29tUnVsZXNGb3JFdmVudHNWaWV3KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZm9yRXZlbnRzVmlld1xuICAgICAgPyB6b29tUnVsZXNGb3JFdmVudHNWaWV3KClcbiAgICAgIDogem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMoKTtcblxuICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChjaGVja2JveCkge1xuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UoY2hlY2tib3guY2hlY2tlZCk7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSAoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuICAgIHJldHVybiAoXG4gICAgICA8RXZlbnRcbiAgICAgICAgZXZlbnQ9e2ZvY3VzZWRFdmVudCEgfHwgaG92ZXJlZEV2ZW50IX1cbiAgICAgICAgbWFwPXttYXB9XG4gICAgICAgIGVkZ2VzPXtlZGdlcyF9XG4gICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgaW5jbHVkZU5ldHdvcms9eyFob3ZlcmVkRXZlbnRQcmVzZW50fVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gIC8vICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgLy8gICB9O1xuICAvLyB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICAvLyB1c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGluaXRpYWxpemVNYXAoXG4gIC8vICAgICBtYXBab29tTGV2ZWwsXG4gIC8vICAgICBtYXBCb3hTdHlsZSxcbiAgLy8gICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAvLyAgICAgbWFwUmVmLFxuICAvLyAgICAgZGlzcGF0Y2gsXG4gIC8vICAgICBpc1ZhbGlkQXJlYSxcbiAgLy8gICAgIGFyZWFUb0NlbnRlckJ5LFxuICAvLyAgICAgc2V0TWFwWm9vbUxldmVsLFxuICAvLyAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgLy8gICAgIHRydWUsXG4gIC8vICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICAvLyAgICk7XG5cbiAgLy8gICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgLy8gICAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgLy8gICAgIGFyZWFzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gIC8vICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJHcm91cCk7XG4gIC8vICAgICAvLyBAdHMtaWdub3JlXG4gIC8vICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmUoKTtcbiAgLy8gICAgIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAvLyAgIH07XG4gIC8vIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHBhcmVudCBmYWN0b3J5IGdyb3VwXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcihtb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZXRNYXBab29tTGV2ZWwobWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpKTtcbiAgICAgIGlmICghYXJlYVRvQ2VudGVyQnkpIHtcbiAgICAgICAgYXJlYVRvQ2VudGVyQnkgPSBhcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuc2hhcGVfZGF0YSkuZmxhdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZvckV2ZW50c1ZpZXcgfHwgIWZvY3VzZWRFdmVudCkge1xuICAgICAgICBhcmVhRm9jdXNMb2dpYyhtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSk7XG4gICAgICB9XG5cbiAgICAgIHRyYWNrTGF5ZXJib3goKTtcbiAgICB9XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuICgpID0+IHtcbiAgICAvLyAgIG1hcFJlZi5jdXJyZW50Py5jbGVhckxheWVycygpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQ/Lm9mZigpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgIC8vICAgbWFwUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIC8vICAgZGlzcGF0Y2goc3RvcmVNYXAodW5kZWZpbmVkKSk7XG4gICAgLy8gfTtcblxuICAgIGlmICh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0gPT09ICdYTGFyZ2UnKSB7XG4gICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihmYWN0b3JpZXNQYXJlbnRHcm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcFJlZi5jdXJyZW50LmFkZExheWVyKGZhY3Rvcmllc1BhcmVudEdyb3VwKTtcbiAgICB9XG4gIH0sIFttYXBab29tTGV2ZWxdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjbGlja2VkID0gZmFsc2U7XG5cbiAgICBtYXBSZWYuY3VycmVudD8uZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgaWYgKGNsaWNrZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXllcj8ua2FuZG9fb2JqZWN0X2lkID09PSBzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgbGF5ZXIuaXNQb3B1cE9wZW4oKSA9PT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlcikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlnb24pIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljay1ldmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNsaWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRJdGVtXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLW1hcC1jb250YWluZXJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2AgbWFwLWNvbnRhaW5lciAke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLnNpZGVuYXZFeHBhbmRlZCA/ICcnIDogJ21hcC1jb250YWluZXItLXNpZGVuYXYtY29sbGFwc2VkJ1xuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgPGRpdiBpZD1cIm1hcFwiPlxuICAgICAgICAgICAge3Nob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpICYmIChcbiAgICAgICAgICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICAgICAgICAgIGFyZWFzPXthcmVhc31cbiAgICAgICAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgICAgICAgYXJlYVRvQ2VudGVyQnk9e2FyZWFUb0NlbnRlckJ5fVxuICAgICAgICAgICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgICAgICAgICAgZmVhdHVyZUdyb3VwPXthcmVhc0xheWVyR3JvdXB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMoXG4gICAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgICAgZ2xvYmFsX2RhdGEsXG4gICAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge21lbW9pemVkRXZlbnQoKX1cbiAgICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbCgpfVxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBT0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBT0EsSUFBQUcsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQVdBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFlBQUEsR0FBQVgsT0FBQTtBQUFxRSxTQUFBWSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxL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