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

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 +37 -42
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +4 -5
  3. package/lib/Widgets/EventsRow/EventsRow.js +6 -7
  4. package/lib/Widgets/Map/GraphUtils.js +3 -5
  5. package/lib/Widgets/Map/Map.js +109 -82
  6. package/lib/Widgets/Map/MapUtils.js +35 -67
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +33 -36
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +4 -5
  9. package/lib/Widgets/Map/areas/AreaUtils.js +7 -13
  10. package/lib/Widgets/Map/areas/Patterns.js +2 -3
  11. package/lib/Widgets/Map/edges/Edge.js +4 -5
  12. package/lib/Widgets/Map/edges/Edges.js +4 -5
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +2 -3
  14. package/lib/Widgets/Map/events/Event.js +4 -5
  15. package/lib/Widgets/Map/events/EventIndicator.js +4 -5
  16. package/lib/Widgets/Map/events/EventPath.js +4 -5
  17. package/lib/Widgets/Map/events/EventUtils.js +21 -34
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +4 -5
  19. package/lib/Widgets/Map/events/PointOfEvent.js +4 -5
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +4 -5
  21. package/lib/Widgets/Map/events/Snail.js +4 -5
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +5 -7
  23. package/lib/Widgets/Map/map/FloatingGraph.js +2 -3
  24. package/lib/Widgets/Map/map/GraphDateButton.js +2 -3
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +2 -3
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +2 -3
  27. package/lib/Widgets/Map/points/PointIcon.js +3 -5
  28. package/lib/Widgets/Map/points/PointMarker.js +33 -36
  29. package/lib/Widgets/Map/points/PointMarkers.js +8 -9
  30. package/lib/Widgets/Map/points/PointUtils.js +31 -60
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +4 -5
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +4 -5
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +4 -5
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -5
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +4 -5
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +2 -3
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -5
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +2 -3
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +4 -5
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +2 -3
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +2 -3
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +3 -5
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -5
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -5
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +4 -5
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +6 -11
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +2 -3
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +2 -3
  52. package/lib/Widgets/MostPolluting/assets/index.js +1 -1
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +2 -3
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +1 -1
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +4 -5
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +1 -1
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +2 -3
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +1 -2
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +3 -5
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +2 -3
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +4 -6
  63. package/lib/Widgets/PotentialImpactSummary/index.js +2 -3
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +1 -1
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +6 -11
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +2 -3
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +2 -3
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +1 -1
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +2 -3
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +3 -3
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +2 -3
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +6 -11
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +4 -5
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +4 -5
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +2 -3
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +4 -5
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +9 -15
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
  83. package/lib/assets/icons/TopNavbar/index.js +1 -1
  84. package/lib/assets/icons/TrendSvg.js +2 -3
  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 +2 -3
  89. package/lib/components/ApplyButton/index.js +2 -3
  90. package/lib/components/Backdrop/Backdrop.js +2 -3
  91. package/lib/components/ContentLoader/ContentLoader.js +2 -3
  92. package/lib/components/ContentLoader/index.js +1 -1
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +3 -5
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
  95. package/lib/components/CustomInputs/DoubleTabs/styles.js +4 -7
  96. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +4 -5
  97. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +2 -3
  98. package/lib/components/CustomInputs/Search/Search.js +4 -5
  99. package/lib/components/CustomInputs/Search/index.js +2 -3
  100. package/lib/components/CustomInputs/Select/Select.js +4 -5
  101. package/lib/components/CustomInputs/Select/Select.stories.js +3 -5
  102. package/lib/components/DamageType/DamageType.js +6 -7
  103. package/lib/components/DamageType/index.js +2 -3
  104. package/lib/components/DataLoaderError/DataLoaderError.js +2 -3
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +2 -3
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +1 -1
  107. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +4 -5
  108. package/lib/components/DischargeHeatmap/HighchartsOptions.js +2 -3
  109. package/lib/components/DischargeHeatmap/index.js +2 -3
  110. package/lib/components/DischargeHeatmap/mocks/handlers.js +2 -3
  111. package/lib/components/DischargeHeatmap/popupText.js +2 -3
  112. package/lib/components/DischargeHeatmap/titles.js +3 -5
  113. package/lib/components/DischargeHeatmap/types.js +1 -1
  114. package/lib/components/ErrorBoundary.js +9 -9
  115. package/lib/components/Events/Events.js +4 -5
  116. package/lib/components/Events/index.js +2 -3
  117. package/lib/components/Graph/Graph.js +7 -8
  118. package/lib/components/Graph/index.js +2 -3
  119. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +2 -3
  120. package/lib/components/Header/Breadcrumbs/index.js +2 -3
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.js +5 -7
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
  123. package/lib/components/Header/DoubleTabs/styles.js +4 -7
  124. package/lib/components/Header/Header.js +2 -3
  125. package/lib/components/Header/Header.stories.js +3 -5
  126. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +15 -17
  127. package/lib/components/Header/InfoBar/InfoBar.js +31 -34
  128. package/lib/components/Header/InfoBar/Search/Control.js +2 -3
  129. package/lib/components/Header/InfoBar/Search/GroupLabel.js +2 -3
  130. package/lib/components/Header/InfoBar/Search/Search.js +4 -5
  131. package/lib/components/Header/InfoBar/Search/SearchContainer.js +4 -5
  132. package/lib/components/Header/InfoBar/Search/index.js +2 -3
  133. package/lib/components/Header/InfoBar/Search/searchStyle.js +2 -3
  134. package/lib/components/Header/InfoBar/TimeFilter.js +2 -3
  135. package/lib/components/Header/InfoBar/types.js +1 -1
  136. package/lib/components/Header/KandoNavbar/KandoNavbar.js +7 -8
  137. package/lib/components/Header/KandoNavbar/index.js +2 -3
  138. package/lib/components/Header/Slideshow/Slideshow.js +4 -5
  139. package/lib/components/Header/Slideshow/index.js +2 -3
  140. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +2 -3
  141. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +2 -3
  142. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +5 -6
  143. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +2 -3
  144. package/lib/components/Header/Toolbar/Toolbar.js +4 -5
  145. package/lib/components/InfoBar/InfoBar.js +4 -5
  146. package/lib/components/InfoBar/InfoBar.stories.js +3 -5
  147. package/lib/components/KandoModal/KandoModal.js +4 -5
  148. package/lib/components/KandoModal/index.js +2 -3
  149. package/lib/components/Link.js +2 -3
  150. package/lib/components/Links/CustomRedirect/CustomRedirect.js +2 -3
  151. package/lib/components/Links/StyledLink/StyledLink.js +3 -5
  152. package/lib/components/Links/StyledNavLink/StyledNavLink.js +2 -3
  153. package/lib/components/LiveEvents/CarouselSlide.js +2 -3
  154. package/lib/components/LiveEvents/LiveEvents.js +2 -3
  155. package/lib/components/LiveEvents/index.js +2 -3
  156. package/lib/components/LoaderByPercent/LoaderByPercent.js +3 -5
  157. package/lib/components/Map/Map.js +4 -5
  158. package/lib/components/Map/index.js +2 -3
  159. package/lib/components/Modal/Modal.js +2 -3
  160. package/lib/components/NarrowHeader.js +9 -9
  161. package/lib/components/PointInfo/PointInfo.js +2 -3
  162. package/lib/components/PointInfo/index.js +2 -3
  163. package/lib/components/PopupModal/PopupModal.js +2 -3
  164. package/lib/components/PopupModal/PopupModal.stories.js +4 -7
  165. package/lib/components/Sector/Sector.js +2 -3
  166. package/lib/components/Sector/Sector.test.js +1 -1
  167. package/lib/components/Sector/SectorIconsNew.js +2 -3
  168. package/lib/components/Sector/index.js +2 -3
  169. package/lib/components/Sector/sectorIcons.js +2 -3
  170. package/lib/components/SevereEvent/Eta/Eta.js +4 -5
  171. package/lib/components/SevereEvent/Eta/styles.js +2 -3
  172. package/lib/components/SevereEvent/SevereEvent.js +6 -6
  173. package/lib/components/Spinner/Spinner.js +2 -3
  174. package/lib/components/Spinner/Spinner.stories.js +4 -7
  175. package/lib/components/Spinner/index.js +2 -3
  176. package/lib/components/Spinner/styles.js +4 -7
  177. package/lib/components/Tabs/Tabs.js +5 -7
  178. package/lib/components/Tabs/Tabs.stories.js +3 -5
  179. package/lib/components/Tabs/assets/index.js +1 -1
  180. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -5
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +4 -5
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +4 -5
  183. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +2 -3
  184. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +5 -9
  185. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +2 -3
  186. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +2 -3
  187. package/lib/components/TimeRangeSelector/TimeRangeList.js +4 -5
  188. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +4 -5
  189. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +5 -7
  190. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +3 -5
  191. package/lib/components/TimeRangeSelector/constants.js +3 -5
  192. package/lib/components/TimeRangeSelector/index.js +2 -3
  193. package/lib/components/Toggle/Toggle.js +4 -5
  194. package/lib/components/Toggle/index.js +2 -3
  195. package/lib/components/TrendGraph/TrendGraph.js +4 -5
  196. package/lib/components/TrendGraph/index.js +2 -3
  197. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +4 -6
  198. package/lib/components/TrendGraphNVL/index.js +2 -3
  199. package/lib/development-environment/index.js +2 -3
  200. package/lib/development-environment/mock/browser.js +2 -3
  201. package/lib/development-environment/mock/get.js +2 -3
  202. package/lib/development-environment/mock/handlers.js +2 -3
  203. package/lib/development-environment/mock/mockBus.js +3 -5
  204. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
  205. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
  206. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
  207. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
  208. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
  209. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
  210. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
  211. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
  212. package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
  213. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
  214. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
  215. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
  216. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
  217. package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
  218. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
  219. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
  220. package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
  221. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
  222. package/lib/development-environment/togly/ToglyDashboard.js +4 -5
  223. package/lib/development-environment/togly/ToglyItem.js +4 -5
  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 +2 -3
  228. package/lib/development-environment/togly/useLocalStorage.js +2 -3
  229. package/lib/hooks/useApi.js +30 -32
  230. package/lib/hooks/useApiWithDashboardQuery.js +3 -5
  231. package/lib/hooks/useClickOutside.js +2 -3
  232. package/lib/hooks/useInitializeHeaders.js +2 -3
  233. package/lib/hooks/useKandoFetch.js +2 -3
  234. package/lib/hooks/useMap.js +2 -3
  235. package/lib/hooks/useNavContext.js +2 -3
  236. package/lib/hooks/useQueryURL.js +2 -3
  237. package/lib/hooks/useRemoveExistingLayers.js +2 -3
  238. package/lib/hooks/useUpdateEventBodyTail.js +2 -3
  239. package/lib/hooks/useUserTimeZone.js +8 -15
  240. package/lib/hooks/useUserTimeZone.test.js +3 -3
  241. package/lib/hooks/useWindowSize.js +1 -1
  242. package/lib/index.js +4 -5
  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 +28 -31
  247. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +4 -5
  248. package/lib/pages/AreaPage/Dashboard/Dashboard.js +4 -5
  249. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +4 -5
  250. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +2 -3
  251. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +2 -3
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +2 -3
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -5
  254. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  255. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
  256. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -7
  257. package/lib/pages/AssessmentPage/AssessmentPage.js +4 -5
  258. package/lib/pages/CannyWidget/Feedback.js +7 -8
  259. package/lib/pages/CovidPage/CovidPage.js +4 -5
  260. package/lib/pages/CovidPage/components/Body.js +4 -5
  261. package/lib/pages/CovidPage/components/Map.js +4 -5
  262. package/lib/pages/CovidPage/components/Sidebar.js +4 -5
  263. package/lib/pages/CovidPage/components/Summary.js +4 -5
  264. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +4 -6
  265. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +2 -3
  266. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +4 -5
  267. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +2 -3
  268. package/lib/pages/CovidPage/components/areas/Area.js +4 -5
  269. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +4 -5
  270. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +4 -5
  271. package/lib/pages/CovidPage/components/areas/AreasList.js +4 -5
  272. package/lib/pages/CovidPage/components/areas/Sort.js +4 -5
  273. package/lib/pages/CovidPage/components/nvlStatusHelper.js +5 -9
  274. package/lib/pages/DashboardMap/AreaCard.js +2 -3
  275. package/lib/pages/DashboardMap/AssessmentIcon.js +2 -3
  276. package/lib/pages/DashboardMap/Capacity.js +39 -45
  277. package/lib/pages/DashboardMap/FactoryCard.js +2 -3
  278. package/lib/pages/DashboardMap/HighchartsOptions.js +2 -3
  279. package/lib/pages/DashboardMap/List.js +4 -5
  280. package/lib/pages/DashboardMap/ListContext.js +5 -7
  281. package/lib/pages/DashboardMap/Loader.js +2 -3
  282. package/lib/pages/DashboardMap/SeverityBadge.js +2 -3
  283. package/lib/pages/DashboardMap/WWTPMap.js +4 -5
  284. package/lib/pages/DashboardMap/WaterDischarge.js +2 -3
  285. package/lib/pages/DashboardMap/Widget.js +5 -7
  286. package/lib/pages/DashboardMap/index.js +2 -3
  287. package/lib/pages/DashboardMap/utils.js +12 -23
  288. package/lib/pages/EventsPage/Body/Body.js +4 -5
  289. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +3 -3
  290. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +5 -9
  291. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +2 -3
  292. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +2 -3
  293. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +1 -1
  294. package/lib/pages/EventsPage/DragAndDropArea/index.js +2 -3
  295. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +4 -5
  296. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +5 -9
  297. package/lib/pages/EventsPage/EventsPage.js +4 -5
  298. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +4 -5
  299. package/lib/pages/EventsPage/events/MoreInfo.js +4 -5
  300. package/lib/pages/EventsPage/events/Sidebar.js +15 -15
  301. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +2 -3
  302. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +2 -3
  303. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +2 -3
  304. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +4 -5
  305. package/lib/pages/EventsPage/events/event_info/EventDetails.js +2 -3
  306. package/lib/pages/EventsPage/events/event_info/EventInfo.js +4 -5
  307. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +2 -3
  308. package/lib/pages/EventsPage/events/event_info/EventSection.js +2 -3
  309. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +1 -1
  310. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +4 -5
  311. package/lib/pages/EventsPage/events/event_info/Header/Header.js +2 -3
  312. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +4 -5
  313. package/lib/pages/EventsPage/events/event_info/Header/index.js +2 -3
  314. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +2 -3
  315. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +4 -5
  316. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +2 -3
  317. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +2 -3
  318. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +2 -3
  319. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +2 -3
  320. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +4 -5
  321. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +4 -5
  322. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +2 -3
  323. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +2 -3
  324. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +2 -3
  325. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +4 -5
  326. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +2 -3
  327. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +2 -3
  328. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +2 -3
  329. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +2 -3
  330. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +2 -3
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -3
  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 +2 -3
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +3 -5
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +2 -3
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +2 -3
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +2 -3
  338. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +2 -3
  339. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +2 -3
  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 +2 -3
  342. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +2 -3
  343. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +2 -3
  344. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +2 -3
  345. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +2 -3
  346. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +2 -3
  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 +2 -3
  349. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +2 -3
  350. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -5
  351. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +4 -5
  352. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +4 -5
  353. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +2 -3
  354. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +2 -3
  355. package/lib/pages/EventsPage/events/event_info/sources/Source.js +2 -3
  356. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +4 -5
  357. package/lib/pages/EventsPage/events/event_info/styles.js +3 -5
  358. package/lib/pages/EventsPage/events/events_list/EventItem.js +4 -5
  359. package/lib/pages/EventsPage/events/events_list/EventUtils.js +4 -7
  360. package/lib/pages/EventsPage/events/events_list/EventsList.js +5 -6
  361. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +4 -5
  362. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +4 -5
  363. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +4 -5
  364. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +4 -5
  365. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +4 -5
  366. package/lib/pages/EventsPage/events/events_list/Sort.js +4 -5
  367. package/lib/pages/ImportFileWizard/FileUploadRespones.js +2 -3
  368. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +2 -3
  369. package/lib/pages/ImportFileWizard/ImportFile.js +4 -5
  370. package/lib/pages/ImportFileWizard/ResponseBody.js +2 -3
  371. package/lib/pages/ImportFileWizard/ValidationForm.js +2 -3
  372. package/lib/pages/ImportFileWizard/ValidationResponse.js +4 -5
  373. package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
  374. package/lib/pages/ImportFileWizard/index.js +2 -3
  375. package/lib/pages/ImportGisPage/ImportGisContainer.js +5 -7
  376. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +2 -3
  377. package/lib/pages/ImportGisPage/importGisUtils.js +5 -7
  378. package/lib/pages/ImportGisProcess/index.js +2 -3
  379. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +4 -5
  380. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +2 -3
  381. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +2 -3
  382. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +4 -5
  383. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +3 -5
  384. package/lib/pages/NotificationsPage/Notification/Notification.js +2 -3
  385. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  386. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
  387. package/lib/pages/NotificationsPage/Notifications.stories.js +3 -5
  388. package/lib/pages/NotificationsPage/NotificationsPage.js +4 -5
  389. package/lib/pages/NotificationsPage/assets/index.js +1 -1
  390. package/lib/pages/NotificationsPageV2/NotificationsPage.js +5 -7
  391. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +2 -3
  392. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +2 -3
  393. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +2 -3
  394. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +2 -3
  395. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +2 -3
  396. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +2 -3
  397. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +5 -7
  398. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +2 -3
  399. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +4 -5
  400. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +17 -33
  401. package/lib/pages/NotificationsPageV2/notificationUtils.js +9 -15
  402. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  403. package/lib/pages/OldSitePage/OldSitePage.js +51 -56
  404. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -9
  405. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  406. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +2 -3
  407. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +2 -3
  408. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +5 -9
  409. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +4 -5
  410. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +3 -5
  411. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  412. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +5 -9
  413. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +4 -5
  414. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +2 -3
  415. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +4 -5
  416. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
  417. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +6 -11
  418. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +4 -5
  419. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +4 -5
  420. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +3 -5
  421. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +2 -3
  422. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  423. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -7
  424. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +3 -5
  425. package/lib/pages/OperationsPage/LeftPanel.js +4 -5
  426. package/lib/pages/OperationsPage/Map/Map.js +4 -5
  427. package/lib/pages/OperationsPage/Map/useMap.js +5 -6
  428. package/lib/pages/OperationsPage/OperationsPage.js +4 -5
  429. package/lib/pages/OperationsPage/RightPanel.js +2 -3
  430. package/lib/pages/OperationsPage/index.js +2 -3
  431. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +28 -31
  432. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +4 -5
  433. package/lib/pages/PollutionRiskAssessment/FilterButton.js +2 -3
  434. package/lib/pages/PollutionRiskAssessment/Map.js +4 -5
  435. package/lib/pages/PollutionRiskAssessment/SearchButton.js +2 -3
  436. package/lib/pages/PollutionRiskAssessment/SearchField.js +4 -5
  437. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +2 -3
  438. package/lib/pages/PollutionRiskAssessment/UseCases.js +2 -3
  439. package/lib/pages/PollutionRiskAssessment/index.js +28 -31
  440. package/lib/pages/PollutionRiskAssessment/useMap.js +4 -5
  441. package/lib/pages/PollutionRiskAssessment/utils.js +2 -3
  442. package/lib/pages/ProfilePage/Container.js +2 -3
  443. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +4 -5
  444. package/lib/pages/ProfilePage/ProfilePage.js +4 -5
  445. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +4 -5
  446. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +4 -7
  447. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +3 -3
  448. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +69 -74
  449. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +4 -5
  450. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +2 -3
  451. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +4 -7
  452. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +2 -3
  453. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +2 -3
  454. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +2 -3
  455. package/lib/pages/SamplingsPage/DesktopActions/index.js +2 -3
  456. package/lib/pages/SamplingsPage/NavigationDropdown.js +3 -5
  457. package/lib/pages/SamplingsPage/NewSamplingAction.js +20 -23
  458. package/lib/pages/SamplingsPage/SamplingMobileModal.js +2 -3
  459. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +2 -3
  460. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +2 -3
  461. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +4 -5
  462. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +4 -5
  463. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +2 -3
  464. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +85 -92
  465. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +4 -5
  466. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +4 -5
  467. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +4 -5
  468. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +12 -21
  469. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -5
  470. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +2 -3
  471. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +4 -5
  472. package/lib/pages/SamplingsPage/SamplingsMobileList.js +4 -5
  473. package/lib/pages/SamplingsPage/SamplingsPage.js +5 -7
  474. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +4 -5
  475. package/lib/pages/SamplingsPage/index.js +2 -3
  476. package/lib/pages/SamplingsPage/samplingsPageUtils.js +20 -39
  477. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -5
  478. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +2 -3
  479. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +2 -3
  480. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +3 -5
  481. package/lib/pages/SitePage/PollutionContributor/index.js +2 -3
  482. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  483. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +5 -9
  484. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +2 -3
  485. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +1 -1
  486. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +2 -3
  487. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +1 -1
  488. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +5 -9
  489. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +4 -5
  490. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +3 -5
  491. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  492. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +5 -9
  493. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +4 -5
  494. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +2 -3
  495. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +4 -5
  496. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
  497. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +6 -11
  498. package/lib/pages/SitePage/SamplingParameters/body/Body.js +2 -3
  499. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +4 -5
  500. package/lib/pages/SitePage/SamplingParameters/body/index.js +2 -3
  501. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +4 -5
  502. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +4 -5
  503. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +3 -5
  504. package/lib/pages/SitePage/SamplingParameters/dataParser.js +2 -3
  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 +4 -7
  508. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +3 -5
  509. package/lib/pages/SitePage/SiteInformation/EmptyState.js +2 -3
  510. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +5 -5
  511. package/lib/pages/SitePage/SitePage.js +28 -31
  512. package/lib/pages/UploadLabResult/index.js +2 -3
  513. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +10 -9
  514. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +4 -7
  515. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +6 -11
  516. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
  517. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +4 -5
  518. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +2 -3
  519. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -3
  520. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +2 -3
  521. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +2 -3
  522. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  523. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -3
  524. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +2 -3
  525. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -3
  526. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +5 -7
  527. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +6 -11
  528. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +4 -5
  529. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +4 -5
  530. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +4 -5
  531. package/lib/pages/WbeDashboard/ExpandableComponent.js +4 -5
  532. package/lib/pages/WbeDashboard/GraphWrapper.js +4 -5
  533. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +4 -5
  534. package/lib/pages/WbeDashboard/SearchInput.js +4 -5
  535. package/lib/pages/WbeDashboard/SummaryGraph.js +23 -26
  536. package/lib/pages/WbeDashboard/SummaryGraphModal.js +2 -3
  537. package/lib/pages/WbeDashboard/Tabs.js +2 -3
  538. package/lib/pages/WbeDashboard/WbeDashboardPage.js +4 -5
  539. package/lib/pages/WbeDashboard/WbeSummaryBar.js +4 -5
  540. package/lib/pages/WwtpPage/DashboardCard.js +2 -3
  541. package/lib/pages/WwtpPage/DischargePatternCard.js +5 -7
  542. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +2 -3
  543. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +2 -3
  544. package/lib/pages/WwtpPage/InletsCard/index.js +2 -3
  545. package/lib/pages/WwtpPage/Map.js +4 -4
  546. package/lib/pages/WwtpPage/OrganicCard.js +2 -3
  547. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -3
  548. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +2 -3
  549. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +2 -3
  550. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +2 -3
  551. package/lib/pages/WwtpPage/PotentialSaving/index.js +2 -3
  552. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  553. package/lib/pages/WwtpPage/PredictionCard.js +2 -3
  554. package/lib/pages/WwtpPage/TrendCard.js +2 -3
  555. package/lib/pages/WwtpPage/UpgradeBox.js +2 -3
  556. package/lib/pages/WwtpPage/WwtpPage.js +2 -3
  557. package/lib/pages/WwtpPage/WwtpPageContainer.js +2 -3
  558. package/lib/pages/WwtpPage/index.js +2 -3
  559. package/lib/providers/Slideshow/SlideshowContext.js +4 -7
  560. package/lib/providers/Slideshow/SlideshowProvider.js +4 -5
  561. package/lib/providers/Slideshow/SlideshowRunner.js +2 -3
  562. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -7
  563. package/lib/providers/UrlHistory/UrlHistoryProvider.js +4 -5
  564. package/lib/providers/UrlHistory/index.js +1 -1
  565. package/lib/providers/UrlHistory/useLastVisited.js +2 -3
  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 +4 -5
  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 +2 -3
  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 +5 -9
  579. package/lib/store/WWTPDashboard/types.js +1 -1
  580. package/lib/store/areas/actionTypes.js +4 -7
  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 +3 -5
  586. package/lib/store/context/actions.js +1 -1
  587. package/lib/store/context/contextMiddlewares.js +2 -3
  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 +3 -5
  592. package/lib/store/dashboard/periodType.js +1 -1
  593. package/lib/store/edges/actionTypes.js +5 -9
  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 +17 -33
  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 +11 -21
  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 +2 -3
  611. package/lib/store/points/actionTypes.js +3 -5
  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 +2 -3
  620. package/lib/store/rootActions.js +1 -1
  621. package/lib/store/rootReducer.js +2 -3
  622. package/lib/store/rootStore.js +1 -1
  623. package/lib/store/samplings/action.js +1 -1
  624. package/lib/store/samplings/actionTypes.js +4 -5
  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 +2 -3
  629. package/lib/styles/theme/theme.js +4 -7
  630. package/lib/test/mocks/browser.js +2 -3
  631. package/lib/test/test-utils.js +1 -1
  632. package/lib/ui-kit/Alert/KandoAlert.js +2 -3
  633. package/lib/ui-kit/Button/Button.js +4 -7
  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 +3 -5
  637. package/lib/ui-kit/ContentCard/ContentCard.js +2 -3
  638. package/lib/ui-kit/Dashboard/Dashboard.js +4 -5
  639. package/lib/ui-kit/Dashboard/index.js +2 -3
  640. package/lib/ui-kit/DropDown/DropDown.js +2 -3
  641. package/lib/ui-kit/DropDown/DropDown.test.js +1 -1
  642. package/lib/ui-kit/DropDown/DropDownItem.js +3 -5
  643. package/lib/ui-kit/DropDown/DropdownToggle.js +3 -5
  644. package/lib/ui-kit/EmptyState/EmptyState.js +2 -3
  645. package/lib/ui-kit/IconAction/IconAction.js +2 -3
  646. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +4 -5
  647. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +2 -3
  648. package/lib/ui-kit/InletsPie/InletsPie.js +2 -3
  649. package/lib/ui-kit/InletsPie/index.js +2 -3
  650. package/lib/ui-kit/InletsPie/options.js +3 -5
  651. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +4 -5
  652. package/lib/ui-kit/KandoFilter/KandoFilter.js +2 -3
  653. package/lib/ui-kit/KandoList/KandoList.js +4 -5
  654. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  655. package/lib/ui-kit/KandoTable/KandoTable.js +4 -5
  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 +2 -3
  659. package/lib/ui-kit/MobileInput/MobileInput.js +2 -3
  660. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +2 -3
  661. package/lib/ui-kit/ModalConfirmation/index.js +2 -3
  662. package/lib/ui-kit/OrganicEvents/GaugeChart.js +2 -3
  663. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +2 -3
  664. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +2 -3
  665. package/lib/ui-kit/OrganicEvents/TextInfo.js +2 -3
  666. package/lib/ui-kit/OrganicEvents/index.js +2 -3
  667. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +2 -3
  668. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +2 -3
  669. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -5
  670. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +3 -5
  671. package/lib/ui-kit/ScoreGauge/constant.js +2 -3
  672. package/lib/ui-kit/ScoreGauge/index.js +2 -3
  673. package/lib/ui-kit/TimeLineChart/TrendChart.js +2 -3
  674. package/lib/ui-kit/TimeLineChart/index.js +2 -3
  675. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +3 -5
  676. package/lib/ui-kit/Tooltip/Tooltip.js +2 -3
  677. package/lib/ui-kit/index.js +1 -1
  678. package/lib/ui-kit/kandoStepper/KandoStepper.js +2 -3
  679. package/lib/ui-kit/siteName/SiteName.js +2 -3
  680. package/lib/utilities/ActionUtility.js +1 -1
  681. package/lib/utilities/Alert.js +2 -3
  682. package/lib/utilities/Analytics.js +2 -3
  683. package/lib/utilities/Array.js +3 -5
  684. package/lib/utilities/Enum.js +26 -29
  685. package/lib/utilities/ErrorBoundary.js +9 -9
  686. package/lib/utilities/File.js +42 -48
  687. package/lib/utilities/GetDir.js +2 -3
  688. package/lib/utilities/KandoDate.js +3 -5
  689. package/lib/utilities/KandoModal.js +4 -5
  690. package/lib/utilities/LocalStorage.js +5 -9
  691. package/lib/utilities/ThousandsToK.js +2 -3
  692. package/lib/utilities/TimeFormat.js +4 -5
  693. package/lib/utilities/Truncate.js +4 -5
  694. package/lib/utilities/edgesMath.js +6 -7
  695. package/lib/utilities/i18n.js +2 -3
  696. package/lib/utilities/kql.js +3 -5
  697. package/lib/utilities/map/icons.js +2 -3
  698. package/lib/utilities/polylinedecorator.js +3 -5
  699. package/lib/utilities/scoreToData.js +6 -11
  700. package/lib/utilities/scoreToData.test.js +1 -1
  701. package/lib/utilities/time.js +4 -7
  702. package/lib/utilities/uploadToS3.js +2 -3
  703. package/lib/utilities/urls.js +4 -7
  704. package/package.json +1 -1
@@ -4,13 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.zoomLevels = exports.topIconOptions = exports.toggleMonitoredPointsVisibility = exports.toggleEdgesVisibility = exports.shouldLoadMapObjects = exports.shoudLoadDependentMapObjects = exports.setupCheckboxListener = exports.multipleLayeredIcons = exports.middleIconOptions = exports.mapStyle = exports.isValidArea = exports.initializeMap = exports.iconZoomControl = exports.findSpecificLayersFromMap = exports.findPoint = exports.filterPoints = exports.filterEdges = exports.eventsCounterIcons = exports.eventsCountIcon = exports.edgesSpecificLogic = exports.customFunctionalityForMapLayers = exports.clusterGroupOptions = exports.bubbleIconOptions = exports.baseMaps = exports.areaFocusLogic = void 0;
7
+ exports.zoomLevels = exports.topIconOptions = exports.toggleEdgesVisibility = exports.shouldLoadMapObjects = exports.shoudLoadDependentMapObjects = exports.setupCheckboxListener = exports.multipleLayeredIcons = exports.middleIconOptions = exports.mapStyle = exports.isValidArea = exports.initializeMap = exports.iconZoomControl = exports.findSpecificLayersFromMap = exports.findPoint = exports.filterPoints = exports.filterEdges = exports.eventsCounterIcons = exports.eventsCountIcon = exports.edgesSpecificLogic = exports.customFunctionalityForMapLayers = exports.clusterGroupOptions = exports.bubbleIconOptions = exports.baseMaps = exports.areaFocusLogic = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
9
  var _leaflet = _interopRequireDefault(require("leaflet"));
10
10
  var _actions = require("../../store/global/actions");
11
11
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
12
12
  var _WWTPDashboardSlice = require("../../store/WWTPDashboard/WWTPDashboardSlice");
13
- var areaFocusLogic = function areaFocusLogic(mapRef, isValidArea, areaToCenterBy) {
13
+ var areaFocusLogic = exports.areaFocusLogic = function areaFocusLogic(mapRef, isValidArea, areaToCenterBy) {
14
14
  var mapInstance = mapRef.current;
15
15
  if (isValidArea(areaToCenterBy)) {
16
16
  mapInstance.fitBounds(areaToCenterBy, {
@@ -31,35 +31,30 @@ var areaFocusLogic = function areaFocusLogic(mapRef, isValidArea, areaToCenterBy
31
31
  }
32
32
  // mapInstance.invalidateSize(true);
33
33
  };
34
- exports.areaFocusLogic = areaFocusLogic;
35
- var isValidArea = function isValidArea(area) {
34
+
35
+ var isValidArea = exports.isValidArea = function isValidArea(area) {
36
36
  return area && area.length > 0 && Object.keys(area[0]).length > 0;
37
37
  };
38
- exports.isValidArea = isValidArea;
39
- var shouldLoadMapObjects = function shouldLoadMapObjects(global_data, mapRef, points, edges) {
38
+ var shouldLoadMapObjects = exports.shouldLoadMapObjects = function shouldLoadMapObjects(global_data, mapRef, points, edges) {
40
39
  return global_data.map !== undefined && mapRef.current !== null && edges !== undefined && points !== undefined;
41
40
  };
42
- exports.shouldLoadMapObjects = shouldLoadMapObjects;
43
- var shoudLoadDependentMapObjects = function shoudLoadDependentMapObjects(edges, areas, global, mapRef, points) {
41
+ var shoudLoadDependentMapObjects = exports.shoudLoadDependentMapObjects = function shoudLoadDependentMapObjects(edges, areas, global, mapRef, points) {
44
42
  return global.map !== undefined && mapRef.current !== null &&
45
43
  // edges.length !== 0 &&
46
44
  // areas.length !== 0 &&
47
45
  points.length !== 0;
48
46
  };
49
- exports.shoudLoadDependentMapObjects = shoudLoadDependentMapObjects;
50
- var findSpecificLayersFromMap = function findSpecificLayersFromMap(layersToFind, currentLayer) {
47
+ var findSpecificLayersFromMap = exports.findSpecificLayersFromMap = function findSpecificLayersFromMap(layersToFind, currentLayer) {
51
48
  return layersToFind.includes(currentLayer.kando_object) && currentLayer.kando_point_type !== 'Manhole';
52
49
  };
53
- exports.findSpecificLayersFromMap = findSpecificLayersFromMap;
54
- var eventsCounterIcons = function eventsCounterIcons(layer, zoomLevel) {
50
+ var eventsCounterIcons = exports.eventsCounterIcons = function eventsCounterIcons(layer, zoomLevel) {
55
51
  var icon = layer.options.icon;
56
52
  icon.options.iconSize = eventsCountIcon(zoomLevel).iconSize;
57
53
  icon.options.iconAnchor = eventsCountIcon(zoomLevel).iconAnchor;
58
54
  layer.setIcon(icon);
59
55
  layer.setOpacity(1);
60
56
  };
61
- exports.eventsCounterIcons = eventsCounterIcons;
62
- var multipleLayeredIcons = function multipleLayeredIcons(layer, zoomLevel) {
57
+ var multipleLayeredIcons = exports.multipleLayeredIcons = function multipleLayeredIcons(layer, zoomLevel) {
63
58
  var icon = layer.options.icon;
64
59
  var isAFewLayerIcon = layer.kando_few_layer_icon;
65
60
  var miniIcon = {
@@ -86,21 +81,19 @@ var multipleLayeredIcons = function multipleLayeredIcons(layer, zoomLevel) {
86
81
  }
87
82
  layer.setIcon(icon);
88
83
  };
89
- exports.multipleLayeredIcons = multipleLayeredIcons;
90
84
  var oneLayerIconOptions = function oneLayerIconOptions(zoomLevel) {
91
85
  return {
92
86
  iconSize: [zoomLevel * 3.3, zoomLevel * 3.3],
93
87
  iconAnchor: [zoomLevel * 1.7, zoomLevel * 3.7]
94
88
  };
95
89
  };
96
- var eventsCountIcon = function eventsCountIcon(zoomLevel) {
90
+ var eventsCountIcon = exports.eventsCountIcon = function eventsCountIcon(zoomLevel) {
97
91
  return {
98
92
  iconSize: [zoomLevel * 2.5, zoomLevel * 2.5],
99
93
  iconAnchor: [zoomLevel * 0, zoomLevel * 4]
100
94
  };
101
95
  };
102
- exports.eventsCountIcon = eventsCountIcon;
103
- var bubbleIconOptions = function bubbleIconOptions(zoomLevel, miniIcon) {
96
+ var bubbleIconOptions = exports.bubbleIconOptions = function bubbleIconOptions(zoomLevel, miniIcon) {
104
97
  if (miniIcon.present) {
105
98
  if (miniIcon.secondary) {
106
99
  return {
@@ -120,8 +113,7 @@ var bubbleIconOptions = function bubbleIconOptions(zoomLevel, miniIcon) {
120
113
  };
121
114
  }
122
115
  };
123
- exports.bubbleIconOptions = bubbleIconOptions;
124
- var middleIconOptions = function middleIconOptions(zoomLevel, miniIcon) {
116
+ var middleIconOptions = exports.middleIconOptions = function middleIconOptions(zoomLevel, miniIcon) {
125
117
  if (miniIcon.present) {
126
118
  if (miniIcon.secondary) {
127
119
  return {
@@ -141,8 +133,7 @@ var middleIconOptions = function middleIconOptions(zoomLevel, miniIcon) {
141
133
  };
142
134
  }
143
135
  };
144
- exports.middleIconOptions = middleIconOptions;
145
- var topIconOptions = function topIconOptions(zoomLevel, miniIcon) {
136
+ var topIconOptions = exports.topIconOptions = function topIconOptions(zoomLevel, miniIcon) {
146
137
  if (miniIcon.present) {
147
138
  if (miniIcon.secondary) {
148
139
  return {
@@ -162,8 +153,7 @@ var topIconOptions = function topIconOptions(zoomLevel, miniIcon) {
162
153
  };
163
154
  }
164
155
  };
165
- exports.topIconOptions = topIconOptions;
166
- var iconZoomControl = function iconZoomControl(map) {
156
+ var iconZoomControl = exports.iconZoomControl = function iconZoomControl(map) {
167
157
  var layers = map._layers;
168
158
  var zoomLevel = map._zoom;
169
159
  for (var property in layers) {
@@ -178,8 +168,7 @@ var iconZoomControl = function iconZoomControl(map) {
178
168
  }
179
169
  }
180
170
  };
181
- exports.iconZoomControl = iconZoomControl;
182
- var mapStyle = function mapStyle(mapBoxStyle) {
171
+ var mapStyle = exports.mapStyle = function mapStyle(mapBoxStyle) {
183
172
  return _leaflet.default.tileLayer("https://api.mapbox.com/styles/v1/nadav-kando/".concat(mapBoxStyle, "/tiles/256/{z}/{x}/{y}@2x?access_token=pk.eyJ1IjoibmFkYXYta2FuZG8iLCJhIjoiY2pveHprdGRxMHlmdDN4bDg0dzJxOXc4dSJ9.J-2ohq7j4yKNbm4N_-P6qw"), {
184
173
  attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
185
174
  maxZoom: 18,
@@ -191,15 +180,12 @@ var mapStyle = function mapStyle(mapBoxStyle) {
191
180
  updateWhenIdle: false
192
181
  });
193
182
  };
194
- exports.mapStyle = mapStyle;
195
- var baseMaps = function baseMaps(mapBoxStyle, mapBoxSatelliteStyle) {
196
- var _ref;
183
+ var baseMaps = exports.baseMaps = function baseMaps(mapBoxStyle, mapBoxSatelliteStyle) {
197
184
  var defaultMap = _i18n.default.t('map.layers.default');
198
185
  var satellite = _i18n.default.t('map.layers.satellite');
199
- return _ref = {}, (0, _defineProperty2.default)(_ref, defaultMap, mapStyle(mapBoxStyle)), (0, _defineProperty2.default)(_ref, satellite, mapStyle(mapBoxSatelliteStyle)), _ref;
186
+ return (0, _defineProperty2.default)((0, _defineProperty2.default)({}, defaultMap, mapStyle(mapBoxStyle)), satellite, mapStyle(mapBoxSatelliteStyle));
200
187
  };
201
- exports.baseMaps = baseMaps;
202
- var toggleEdgesVisibility = function toggleEdgesVisibility(visible, map) {
188
+ var toggleEdgesVisibility = exports.toggleEdgesVisibility = function toggleEdgesVisibility(visible, map) {
203
189
  map.eachLayer(function (layer) {
204
190
  if (layer instanceof _leaflet.default.Polyline && layer.kando_object !== 'Area' || layer instanceof _leaflet.default.Symbol.arrowHead) {
205
191
  layer.setStyle({
@@ -208,17 +194,16 @@ var toggleEdgesVisibility = function toggleEdgesVisibility(visible, map) {
208
194
  }
209
195
  });
210
196
  };
211
- exports.toggleEdgesVisibility = toggleEdgesVisibility;
212
- var toggleMonitoredPointsVisibility = function toggleMonitoredPointsVisibility(visible) {
213
- console.warn('toggleMonitoredPointsVisibility', visible);
214
- };
215
- exports.toggleMonitoredPointsVisibility = toggleMonitoredPointsVisibility;
216
- var edgesSpecificLogic = function edgesSpecificLogic(defaultOn, map) {
197
+
198
+ // export const toggleMonitoredPointsVisibility = (visible) => {
199
+ // console.warn('toggleMonitoredPointsVisibility', visible);
200
+ // };
201
+
202
+ var edgesSpecificLogic = exports.edgesSpecificLogic = function edgesSpecificLogic(defaultOn, map) {
217
203
  var checkbox = document.querySelector('#edges-checkbox');
218
204
  if (checkbox == null) return;
219
205
  checkbox.checked = defaultOn;
220
206
  };
221
- exports.edgesSpecificLogic = edgesSpecificLogic;
222
207
  var customControls = function customControls(map) {
223
208
  return [{
224
209
  label: _i18n.default.t('map.layers.network_lines'),
@@ -233,19 +218,10 @@ var customControls = function customControls(map) {
233
218
  id: 'monitored-points-checkbox',
234
219
  inputType: 'checkbox',
235
220
  onChange: function onChange(isChecked) {
236
- return toggleMonitoredPointsVisibility(isChecked);
221
+ return function () {};
237
222
  }
238
- }
239
-
240
- // {
241
- // label: 'Another custom feature',
242
- // id: 'custom-feature-checkbox',
243
- // inputType: 'checkbox',
244
- // onChange: (isChecked) => console.log(`Another feature is now ${isChecked ? 'enabled' : 'disabled'}`),
245
- // },
246
- ];
223
+ }];
247
224
  };
248
-
249
225
  var appendCustomCheckboxToLeafletsLayerBox = function appendCustomCheckboxToLeafletsLayerBox(leafletsContainer, customContainer) {
250
226
  _leaflet.default.DomEvent.on(leafletsContainer, 'mouseover', function () {
251
227
  customContainer.style.display = 'block';
@@ -266,7 +242,7 @@ var createCustomControl = function createCustomControl(control, container) {
266
242
  container === null || container === void 0 ? void 0 : container.appendChild(controlContainer);
267
243
  appendCustomCheckboxToLeafletsLayerBox(container, controlContainer);
268
244
  };
269
- var customFunctionalityForMapLayers = function customFunctionalityForMapLayers(map, mapTypes) {
245
+ var customFunctionalityForMapLayers = exports.customFunctionalityForMapLayers = function customFunctionalityForMapLayers(map, mapTypes) {
270
246
  var defaultOn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
271
247
  var waId = arguments.length > 3 ? arguments[3] : undefined;
272
248
  var forWWTPDashboard = arguments.length > 4 ? arguments[4] : undefined;
@@ -282,8 +258,7 @@ var customFunctionalityForMapLayers = function customFunctionalityForMapLayers(m
282
258
  });
283
259
  }
284
260
  };
285
- exports.customFunctionalityForMapLayers = customFunctionalityForMapLayers;
286
- var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSatelliteStyle, mapRef, dispatch, isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, showEdgesByDefault) {
261
+ var initializeMap = exports.initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSatelliteStyle, mapRef, dispatch, isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, showEdgesByDefault) {
287
262
  var waId = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 0;
288
263
  // @ts-ignore
289
264
  mapRef.current = new _leaflet.default.Map('map', {
@@ -331,8 +306,7 @@ var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSate
331
306
  setMapZoomLevel(zoom);
332
307
  });
333
308
  };
334
- exports.initializeMap = initializeMap;
335
- var clusterGroupOptions = {
309
+ var clusterGroupOptions = exports.clusterGroupOptions = {
336
310
  spiderfyOnMaxZoom: false,
337
311
  showCoverageOnHover: false,
338
312
  zoomToBoundsOnClick: true,
@@ -348,8 +322,7 @@ var clusterGroupOptions = {
348
322
  });
349
323
  }
350
324
  };
351
- exports.clusterGroupOptions = clusterGroupOptions;
352
- var zoomLevels = {
325
+ var zoomLevels = exports.zoomLevels = {
353
326
  1: 'XLarge',
354
327
  2: 'XLarge',
355
328
  3: 'XLarge',
@@ -369,20 +342,17 @@ var zoomLevels = {
369
342
  17: 'Small',
370
343
  18: 'Small'
371
344
  };
372
- exports.zoomLevels = zoomLevels;
373
- var filterPoints = function filterPoints(points, hasDevice) {
345
+ var filterPoints = exports.filterPoints = function filterPoints(points, hasDevice) {
374
346
  return points.filter(function (point) {
375
347
  return point.has_device === hasDevice;
376
348
  });
377
349
  };
378
- exports.filterPoints = filterPoints;
379
- var findPoint = function findPoint(points, pointId, hasDeviceCheck) {
350
+ var findPoint = exports.findPoint = function findPoint(points, pointId, hasDeviceCheck) {
380
351
  return points.find(function (point) {
381
352
  return point.id === pointId && hasDeviceCheck(point);
382
353
  });
383
354
  };
384
- exports.findPoint = findPoint;
385
- var filterEdges = function filterEdges(edges, points, isMonitored) {
355
+ var filterEdges = exports.filterEdges = function filterEdges(edges, points, isMonitored) {
386
356
  return edges.filter(function (edge) {
387
357
  var sourcePoint = findPoint(points, edge.source_point_id, function (point) {
388
358
  return isMonitored ? point.has_device || edge.descendants_has_device : !point.descendants_has_device;
@@ -393,13 +363,11 @@ var filterEdges = function filterEdges(edges, points, isMonitored) {
393
363
  return sourcePoint && parentPoint;
394
364
  });
395
365
  };
396
- exports.filterEdges = filterEdges;
397
- var setupCheckboxListener = function setupCheckboxListener(selector, onChange) {
366
+ var setupCheckboxListener = exports.setupCheckboxListener = function setupCheckboxListener(selector, onChange) {
398
367
  var checkbox = document.querySelector(selector);
399
368
  if (checkbox === null) return;
400
369
  checkbox.addEventListener('change', function () {
401
370
  return onChange(checkbox.checked);
402
371
  });
403
372
  };
404
- exports.setupCheckboxListener = setupCheckboxListener;
405
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsIm1hcFJlZiIsImlzVmFsaWRBcmVhIiwiYXJlYVRvQ2VudGVyQnkiLCJtYXBJbnN0YW5jZSIsImN1cnJlbnQiLCJmaXRCb3VuZHMiLCJwYWRkaW5nIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIkwiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJsZW5ndGgiLCJleHBvcnRzIiwiYXJlYSIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiZ2xvYmFsX2RhdGEiLCJwb2ludHMiLCJlZGdlcyIsIm1hcCIsInVuZGVmaW5lZCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJhcmVhcyIsImdsb2JhbCIsImZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAiLCJsYXllcnNUb0ZpbmQiLCJjdXJyZW50TGF5ZXIiLCJpbmNsdWRlcyIsImthbmRvX3BvaW50X3R5cGUiLCJldmVudHNDb3VudGVySWNvbnMiLCJsYXllciIsInpvb21MZXZlbCIsImljb24iLCJvcHRpb25zIiwiaWNvblNpemUiLCJldmVudHNDb3VudEljb24iLCJpY29uQW5jaG9yIiwic2V0SWNvbiIsInNldE9wYWNpdHkiLCJtdWx0aXBsZUxheWVyZWRJY29ucyIsImlzQUZld0xheWVySWNvbiIsImthbmRvX2Zld19sYXllcl9pY29uIiwibWluaUljb24iLCJwcmVzZW50Iiwia2FuZG9fc2Vjb25kYXJ5Iiwia2FuZG9fdGhpcmQiLCJzZWNvbmRhcnkiLCJ0aGlyZCIsImthbmRvX2luZGV4X29iamVjdCIsImJ1YmJsZUljb25PcHRpb25zIiwib25lTGF5ZXJJY29uT3B0aW9ucyIsIm1pZGRsZUljb25PcHRpb25zIiwidG9wSWNvbk9wdGlvbnMiLCJpY29uWm9vbUNvbnRyb2wiLCJsYXllcnMiLCJfem9vbSIsIm1hcFN0eWxlIiwibWFwQm94U3R5bGUiLCJ0aWxlTGF5ZXIiLCJjb25jYXQiLCJhdHRyaWJ1dGlvbiIsIm1heFpvb20iLCJtaW5ab29tIiwiaWQiLCJ0aWxlU2l6ZSIsInpvb21PZmZzZXQiLCJ1cGRhdGVXaGVuWm9vbWluZyIsInVwZGF0ZVdoZW5JZGxlIiwiYmFzZU1hcHMiLCJtYXBCb3hTYXRlbGxpdGVTdHlsZSIsIl9yZWYiLCJkZWZhdWx0TWFwIiwiaTE4biIsInQiLCJzYXRlbGxpdGUiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsInRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSIsInZpc2libGUiLCJlYWNoTGF5ZXIiLCJQb2x5bGluZSIsIlN5bWJvbCIsImFycm93SGVhZCIsInNldFN0eWxlIiwib3BhY2l0eSIsInRvZ2dsZU1vbml0b3JlZFBvaW50c1Zpc2liaWxpdHkiLCJjb25zb2xlIiwid2FybiIsImVkZ2VzU3BlY2lmaWNMb2dpYyIsImRlZmF1bHRPbiIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsImN1c3RvbUNvbnRyb2xzIiwibGFiZWwiLCJpbnB1dFR5cGUiLCJkZW55Rm9yV2EiLCJvbkNoYW5nZSIsImlzQ2hlY2tlZCIsImFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94IiwibGVhZmxldHNDb250YWluZXIiLCJjdXN0b21Db250YWluZXIiLCJEb21FdmVudCIsIm9uIiwic3R5bGUiLCJkaXNwbGF5IiwiY3JlYXRlQ3VzdG9tQ29udHJvbCIsImNvbnRyb2wiLCJjb250YWluZXIiLCJjb250cm9sQ29udGFpbmVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImlubmVySFRNTCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwidGFyZ2V0IiwiYXBwZW5kQ2hpbGQiLCJjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzIiwibWFwVHlwZXMiLCJhcmd1bWVudHMiLCJ3YUlkIiwiZm9yV1dUUERhc2hib2FyZCIsImNvbnRyb2xsZXIiLCJwb3NpdGlvbiIsImFkZFRvIiwiZ2V0Q29udGFpbmVyIiwiZm9yRWFjaCIsImluaXRpYWxpemVNYXAiLCJtYXBab29tTGV2ZWwiLCJkaXNwYXRjaCIsInNldE1hcFpvb21MZXZlbCIsInNob3dFZGdlc0J5RGVmYXVsdCIsIk1hcCIsImNlbnRlciIsInpvb21TbmFwIiwiem9vbSIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZWZlckNhbnZhcyIsInNldE1hcCIsIndoZW5SZWFkeSIsInZhbHVlcyIsInNldFRpbWVvdXQiLCJpbnZhbGlkYXRlU2l6ZSIsImVyciIsImVycm9yIiwic3RvcmVNYXAiLCJzaWRlTmF2RXhwYW5kZWQiLCJldmVudCIsIm9yaWdpbmFsRXZlbnQiLCJrZXkiLCJjbG9zZVBvcHVwIiwiYm9keSIsImZvY3VzIiwiZ2V0Wm9vbSIsImNsdXN0ZXJHcm91cE9wdGlvbnMiLCJzcGlkZXJmeU9uTWF4Wm9vbSIsInNob3dDb3ZlcmFnZU9uSG92ZXIiLCJ6b29tVG9Cb3VuZHNPbkNsaWNrIiwiYW5pbWF0ZSIsImRpc2FibGVDbHVzdGVyaW5nQXRab29tIiwicmVtb3ZlT3V0c2lkZVZpc2libGVCb3VuZHMiLCJjaHVua2VkTG9hZGluZyIsImljb25DcmVhdGVGdW5jdGlvbiIsImNsdXN0ZXIiLCJEaXZJY29uIiwiaHRtbCIsIl9jaGlsZENvdW50IiwiUG9pbnQiLCJ6b29tTGV2ZWxzIiwiZmlsdGVyUG9pbnRzIiwiaGFzRGV2aWNlIiwiZmlsdGVyIiwicG9pbnQiLCJoYXNfZGV2aWNlIiwiZmluZFBvaW50IiwicG9pbnRJZCIsImhhc0RldmljZUNoZWNrIiwiZmluZCIsImZpbHRlckVkZ2VzIiwiaXNNb25pdG9yZWQiLCJlZGdlIiwic291cmNlUG9pbnQiLCJzb3VyY2VfcG9pbnRfaWQiLCJkZXNjZW5kYW50c19oYXNfZGV2aWNlIiwicGFyZW50UG9pbnQiLCJ0YXJnZXRfcG9pbnRfaWQiLCJzZXR1cENoZWNrYm94TGlzdGVuZXIiLCJzZWxlY3RvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXBVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTCwgeyBQb2ludFR1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBzaWRlTmF2RXhwYW5kZWQsIHN0b3JlTWFwIH0gZnJvbSAnLi4vLi4vc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHNldE1hcCB9IGZyb20gJy4uLy4uL3N0b3JlL1dXVFBEYXNoYm9hcmQvV1dUUERhc2hib2FyZFNsaWNlJztcblxuZXhwb3J0IGNvbnN0IGFyZWFGb2N1c0xvZ2ljID0gKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KSA9PiB7XG4gIGxldCBtYXBJbnN0YW5jZTogYW55ID0gbWFwUmVmLmN1cnJlbnQ7XG4gIGlmIChpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnksIHsgcGFkZGluZzogWzAsIDBdIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBtYXBJbnN0YW5jZS5fbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ0FyZWEnIHx8XG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ1BvaW50J1xuICAgICAgKSB7XG4gICAgICAgIGdyb3VwLnB1c2gobWFwSW5zdGFuY2UuX2xheWVyc1twcm9wZXJ0eV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhMLmZlYXR1cmVHcm91cChncm91cCkuZ2V0Qm91bmRzKCkpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbWFwSW5zdGFuY2UuZml0Qm91bmRzKEwuZmVhdHVyZUdyb3VwKGdyb3VwKS5nZXRCb3VuZHMoKSwge1xuICAgICAgICBwYWRkaW5nOiBbMTAwLCAxMDBdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIG1hcEluc3RhbmNlLmludmFsaWRhdGVTaXplKHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBcmVhID0gKGFyZWEpID0+IHtcbiAgcmV0dXJuIGFyZWEgJiYgYXJlYS5sZW5ndGggPiAwICYmIE9iamVjdC5rZXlzKGFyZWFbMF0pLmxlbmd0aCA+IDA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkTG9hZE1hcE9iamVjdHMgPSAoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgcG9pbnRzLCBlZGdlcykgPT4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbF9kYXRhLm1hcCAhPT0gdW5kZWZpbmVkICYmXG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgcG9pbnRzICE9PSB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzID0gKFxuICBlZGdlcyxcbiAgYXJlYXMsXG4gIGdsb2JhbCxcbiAgbWFwUmVmLFxuICBwb2ludHMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBnbG9iYWwubWFwICE9PSB1bmRlZmluZWQgJiZcbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIC8vIGVkZ2VzLmxlbmd0aCAhPT0gMCAmJlxuICAgIC8vIGFyZWFzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHBvaW50cy5sZW5ndGggIT09IDBcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwID0gKFxuICBsYXllcnNUb0ZpbmQ6IHN0cmluZ1tdLFxuICBjdXJyZW50TGF5ZXIsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBsYXllcnNUb0ZpbmQuaW5jbHVkZXMoY3VycmVudExheWVyLmthbmRvX29iamVjdCkgJiZcbiAgICBjdXJyZW50TGF5ZXIua2FuZG9fcG9pbnRfdHlwZSAhPT0gJ01hbmhvbGUnXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZXZlbnRzQ291bnRlckljb25zID0gKGxheWVyLCB6b29tTGV2ZWwpID0+IHtcbiAgbGV0IGljb24gPSBsYXllci5vcHRpb25zLmljb247XG4gIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25TaXplO1xuICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25BbmNob3I7XG4gIGxheWVyLnNldEljb24oaWNvbik7XG4gIGxheWVyLnNldE9wYWNpdHkoMSk7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbGVMYXllcmVkSWNvbnMgPSAobGF5ZXIsIHpvb21MZXZlbCkgPT4ge1xuICBsZXQgaWNvbiA9IGxheWVyLm9wdGlvbnMuaWNvbjtcbiAgbGV0IGlzQUZld0xheWVySWNvbiA9IGxheWVyLmthbmRvX2Zld19sYXllcl9pY29uO1xuICBsZXQgbWluaUljb24gPSB7XG4gICAgcHJlc2VudDogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5IHx8IGxheWVyLmthbmRvX3RoaXJkLFxuICAgIHNlY29uZGFyeTogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5LFxuICAgIHRoaXJkOiBsYXllci5rYW5kb190aGlyZCxcbiAgfTtcblxuICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAwKSB7XG4gICAgaWYgKGlzQUZld0xheWVySWNvbikge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gYnViYmxlSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGJ1YmJsZUljb25PcHRpb25zKFxuICAgICAgICB6b29tTGV2ZWwsXG4gICAgICAgIG1pbmlJY29uLFxuICAgICAgKS5pY29uQW5jaG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBvbmVMYXllckljb25PcHRpb25zKHpvb21MZXZlbCkuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IG9uZUxheWVySWNvbk9wdGlvbnMoem9vbUxldmVsKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAxKSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBtaWRkbGVJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gbWlkZGxlSWNvbk9wdGlvbnMoXG4gICAgICAgIHpvb21MZXZlbCxcbiAgICAgICAgbWluaUljb24sXG4gICAgICApLmljb25BbmNob3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IHRvcEljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSB0b3BJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfVxuXG4gIGxheWVyLnNldEljb24oaWNvbik7XG59O1xuXG5jb25zdCBvbmVMYXllckljb25PcHRpb25zID0gKHpvb21MZXZlbCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy4zLCB6b29tTGV2ZWwgKiAzLjNdIGFzIFBvaW50VHVwbGUsXG4gICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuNywgem9vbUxldmVsICogMy43XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGV2ZW50c0NvdW50SWNvbiA9ICh6b29tTGV2ZWwpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDIuNSwgem9vbUxldmVsICogMi41XSBhcyBQb2ludFR1cGxlLFxuICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAwLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUljb25PcHRpb25zID0gKHpvb21MZXZlbCwgbWluaUljb24pID0+IHtcbiAgaWYgKG1pbmlJY29uLnByZXNlbnQpIHtcbiAgICBpZiAobWluaUljb24uc2Vjb25kYXJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDJdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjk4LCB6b29tTGV2ZWwgKiA0LjNdIGFzIFBvaW50VHVwbGUsXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMiwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbWlkZGxlSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS4xLCB6b29tTGV2ZWwgKiAxLjFdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNDUsIHpvb21MZXZlbCAqIDMuNV0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuMSwgem9vbUxldmVsICogMS4xXSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjQ1LCB6b29tTGV2ZWwgKiAxLjVdLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMi41LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuMjk1LCB6b29tTGV2ZWwgKiAzLjM1XSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9wSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMC45LCB6b29tTGV2ZWwgKiAxLjhdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS42LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuMiwgem9vbUxldmVsICogMi4xXSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuOSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAyLCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpY29uWm9vbUNvbnRyb2wgPSAobWFwKSA9PiB7XG4gIGxldCBsYXllcnMgPSBtYXAuX2xheWVycztcbiAgbGV0IHpvb21MZXZlbCA9IG1hcC5fem9vbTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxheWVycykge1xuICAgIGlmIChmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwKFsnSWNvbk51bWJlciddLCBsYXllcnNbcHJvcGVydHldKSkge1xuICAgICAgZXZlbnRzQ291bnRlckljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydQb2ludCcsICdJY29uJ10sIGxheWVyc1twcm9wZXJ0eV0pKSB7XG4gICAgICBtdWx0aXBsZUxheWVyZWRJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydTYW1wbGluZycsICdPYnNlcnZhdGlvbiddLCBsYXllcnNbcHJvcGVydHldKVxuICAgICkge1xuICAgICAgbXVsdGlwbGVMYXllcmVkSWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdHlsZSA9IChtYXBCb3hTdHlsZSkgPT4ge1xuICByZXR1cm4gTC50aWxlTGF5ZXIoXG4gICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL25hZGF2LWthbmRvLyR7bWFwQm94U3R5bGV9L3RpbGVzLzI1Ni97en0ve3h9L3t5fUAyeD9hY2Nlc3NfdG9rZW49cGsuZXlKMUlqb2libUZrWVhZdGEyRnVaRzhpTENKaElqb2lZMnB2ZUhwcmRHUnhNSGxtZERONGJEZzBkekp4T1hjNGRTSjkuSi0yb2hxN2o0eUtOYm00Tl8tUDZxd2AsXG4gICAge1xuICAgICAgYXR0cmlidXRpb246XG4gICAgICAgICdNYXAgZGF0YSAmY29weTsgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL1wiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgPGEgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvXCI+Q0MtQlktU0E8L2E+LCBJbWFnZXJ5IMKpIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiPk1hcGJveDwvYT4nLFxuICAgICAgbWF4Wm9vbTogMTgsXG4gICAgICBtaW5ab29tOiAyLFxuICAgICAgaWQ6ICdtYXBib3gvc3RyZWV0cy12MTEnLFxuICAgICAgdGlsZVNpemU6IDUxMixcbiAgICAgIHpvb21PZmZzZXQ6IC0xLFxuICAgICAgdXBkYXRlV2hlblpvb21pbmc6IGZhbHNlLFxuICAgICAgdXBkYXRlV2hlbklkbGU6IGZhbHNlLFxuICAgIH0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYmFzZU1hcHMgPSAobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKSA9PiB7XG4gIGxldCBkZWZhdWx0TWFwID0gaTE4bi50KCdtYXAubGF5ZXJzLmRlZmF1bHQnKTtcbiAgbGV0IHNhdGVsbGl0ZSA9IGkxOG4udCgnbWFwLmxheWVycy5zYXRlbGxpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBbZGVmYXVsdE1hcF06IG1hcFN0eWxlKG1hcEJveFN0eWxlKSxcbiAgICBbc2F0ZWxsaXRlXTogbWFwU3R5bGUobWFwQm94U2F0ZWxsaXRlU3R5bGUpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSA9ICh2aXNpYmxlLCBtYXApID0+IHtcbiAgbWFwLmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlsaW5lICYmIGxheWVyLmthbmRvX29iamVjdCAhPT0gJ0FyZWEnKSB8fFxuICAgICAgbGF5ZXIgaW5zdGFuY2VvZiBMLlN5bWJvbC5hcnJvd0hlYWRcbiAgICApIHtcbiAgICAgIGxheWVyLnNldFN0eWxlKHsgb3BhY2l0eTogdmlzaWJsZSA/IDEgOiAwIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eSA9ICh2aXNpYmxlKSA9PiB7XG4gIGNvbnNvbGUud2FybigndG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eScsIHZpc2libGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGVkZ2VzU3BlY2lmaWNMb2dpYyA9IChkZWZhdWx0T24sIG1hcCkgPT4ge1xuICBsZXQgY2hlY2tib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRnZXMtY2hlY2tib3gnKTtcbiAgaWYgKGNoZWNrYm94ID09IG51bGwpIHJldHVybjtcbiAgY2hlY2tib3guY2hlY2tlZCA9IGRlZmF1bHRPbjtcbn07XG5cbmNvbnN0IGN1c3RvbUNvbnRyb2xzID0gKG1hcCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiBpMThuLnQoJ21hcC5sYXllcnMubmV0d29ya19saW5lcycpLFxuICAgICAgaWQ6ICdlZGdlcy1jaGVja2JveCcsXG4gICAgICBpbnB1dFR5cGU6ICdjaGVja2JveCcsXG4gICAgICBkZW55Rm9yV2E6IFs1MThdLFxuICAgICAgb25DaGFuZ2U6IChpc0NoZWNrZWQpID0+IHRvZ2dsZUVkZ2VzVmlzaWJpbGl0eShpc0NoZWNrZWQsIG1hcCksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGxhYmVsOiAnU2hvdyBvbmx5IG1vbml0b3JlZCBwb2ludHMnLFxuICAgICAgaWQ6ICdtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICAgIGlucHV0VHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIG9uQ2hhbmdlOiAoaXNDaGVja2VkKSA9PiB0b2dnbGVNb25pdG9yZWRQb2ludHNWaXNpYmlsaXR5KGlzQ2hlY2tlZCksXG4gICAgfSxcblxuICAgIC8vIHtcbiAgICAvLyAgIGxhYmVsOiAnQW5vdGhlciBjdXN0b20gZmVhdHVyZScsXG4gICAgLy8gICBpZDogJ2N1c3RvbS1mZWF0dXJlLWNoZWNrYm94JyxcbiAgICAvLyAgIGlucHV0VHlwZTogJ2NoZWNrYm94JyxcbiAgICAvLyAgIG9uQ2hhbmdlOiAoaXNDaGVja2VkKSA9PiBjb25zb2xlLmxvZyhgQW5vdGhlciBmZWF0dXJlIGlzIG5vdyAke2lzQ2hlY2tlZCA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCd9YCksXG4gICAgLy8gfSxcbiAgXTtcbn07XG5cbmNvbnN0IGFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94ID0gKFxuICBsZWFmbGV0c0NvbnRhaW5lcixcbiAgY3VzdG9tQ29udGFpbmVyLFxuKSA9PiB7XG4gIEwuRG9tRXZlbnQub24obGVhZmxldHNDb250YWluZXIsICdtb3VzZW92ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY3VzdG9tQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICB9KTtcblxuICBMLkRvbUV2ZW50Lm9uKGxlYWZsZXRzQ29udGFpbmVyLCAnbW91c2VvdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY3VzdG9tQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlQ3VzdG9tQ29udHJvbCA9IChjb250cm9sLCBjb250YWluZXIpID0+IHtcbiAgbGV0IGNvbnRyb2xDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgY29udHJvbENvbnRhaW5lci5jbGFzc05hbWUgPSAnbGVhZmxldC1jb250cm9sLWxheWVycy1vdmVybGF5cyc7XG4gIGNvbnRyb2xDb250YWluZXIuaW5uZXJIVE1MID0gYFxuICAgICAgPGxhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT1cIiR7Y29udHJvbC5pbnB1dFR5cGV9XCIgaWQ9XCIke2NvbnRyb2wuaWR9XCIgLz4gJHtjb250cm9sLmxhYmVsfVxuICAgICAgPC9sYWJlbD5cbiAgICBgO1xuXG4gIGNvbnRyb2xDb250YWluZXJcbiAgICAucXVlcnlTZWxlY3RvcihgIyR7Y29udHJvbC5pZH1gKVxuICAgIC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY29uc3QgaXNDaGVja2VkID0gZS50YXJnZXQuY2hlY2tlZDtcbiAgICAgIGNvbnRyb2wub25DaGFuZ2UoaXNDaGVja2VkKTtcbiAgICB9KTtcblxuICBjb250cm9sQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGNvbnRhaW5lcj8uYXBwZW5kQ2hpbGQoY29udHJvbENvbnRhaW5lcik7XG5cbiAgYXBwZW5kQ3VzdG9tQ2hlY2tib3hUb0xlYWZsZXRzTGF5ZXJCb3goY29udGFpbmVyLCBjb250cm9sQ29udGFpbmVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzID0gKFxuICBtYXAsXG4gIG1hcFR5cGVzLFxuICBkZWZhdWx0T24gPSB0cnVlLFxuICB3YUlkLFxuICBmb3JXV1RQRGFzaGJvYXJkLFxuKSA9PiB7XG4gIGxldCBjb250cm9sbGVyID0gTC5jb250cm9sXG4gICAgLmxheWVycyhtYXBUeXBlcywge30sIHsgcG9zaXRpb246ICdib3R0b21yaWdodCcgfSlcbiAgICAuYWRkVG8obWFwKTtcbiAgbGV0IGNvbnRhaW5lciA9IGNvbnRyb2xsZXIuZ2V0Q29udGFpbmVyKCk7XG5cbiAgaWYgKGZvcldXVFBEYXNoYm9hcmQpIHtcbiAgICBjdXN0b21Db250cm9scyhtYXApLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIGlmIChjb250cm9sLmRlbnlGb3JXYSAmJiBjb250cm9sLmRlbnlGb3JXYS5pbmNsdWRlcyh3YUlkKSkgcmV0dXJuO1xuXG4gICAgICBjcmVhdGVDdXN0b21Db250cm9sKGNvbnRyb2wsIGNvbnRhaW5lcik7XG4gICAgICBlZGdlc1NwZWNpZmljTG9naWMoZGVmYXVsdE9uLCBtYXApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZU1hcCA9IChcbiAgbWFwWm9vbUxldmVsLFxuICBtYXBCb3hTdHlsZSxcbiAgbWFwQm94U2F0ZWxsaXRlU3R5bGUsXG4gIG1hcFJlZixcbiAgZGlzcGF0Y2gsXG4gIGlzVmFsaWRBcmVhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgc2V0TWFwWm9vbUxldmVsLFxuICBmb3JXV1RQRGFzaGJvYXJkLFxuICBzaG93RWRnZXNCeURlZmF1bHQsXG4gIHdhSWQgPSAwLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgbWFwUmVmLmN1cnJlbnQgPSBuZXcgTC5NYXAoJ21hcCcsIHtcbiAgICBjZW50ZXI6IFswLCAwXSxcbiAgICB6b29tU25hcDogMSxcbiAgICB6b29tOiBtYXBab29tTGV2ZWwsXG4gICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZSxcbiAgICBwcmVmZXJDYW52YXM6IGZhbHNlLFxuICB9KTtcblxuICBpZiAoZm9yV1dUUERhc2hib2FyZCkgZGlzcGF0Y2goc2V0TWFwKG1hcFJlZi5jdXJyZW50KSk7XG5cbiAgbWFwUmVmLmN1cnJlbnQud2hlblJlYWR5KCgpID0+IHtcbiAgICBsZXQgbWFwID0gbWFwUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgbWFwVHlwZXMgPSBiYXNlTWFwcyhtYXBCb3hTdHlsZSwgbWFwQm94U2F0ZWxsaXRlU3R5bGUpO1xuXG4gICAgY3VzdG9tRnVuY3Rpb25hbGl0eUZvck1hcExheWVycyhcbiAgICAgIG1hcCxcbiAgICAgIG1hcFR5cGVzLFxuICAgICAgc2hvd0VkZ2VzQnlEZWZhdWx0LFxuICAgICAgd2FJZCxcbiAgICAgIGZvcldXVFBEYXNoYm9hcmQsXG4gICAgKTtcblxuICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBsYXllciBjaGFuZ2VzIGJldHdlZW4gbGFuZ3VhZ2VzIHNvIHRoZXJlIHdhcyBhIG5lZWQgdG8gZ2V0IHRvIHRoZSBmaXJzdCBsYXllclxuICAgIE9iamVjdC52YWx1ZXMobWFwVHlwZXMpWzBdLmFkZFRvKG1hcCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBtYXBSZWYuY3VycmVudC5pbnZhbGlkYXRlU2l6ZSh0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdlcnInLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBkaXNwYXRjaChzdG9yZU1hcChtYXBSZWYuY3VycmVudCkpO1xuICAgICAgZGlzcGF0Y2goc2lkZU5hdkV4cGFuZGVkKHRydWUpKTtcblxuICAgICAgbWFwLm9uKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMCk7XG4gICAgaWYgKG1hcFJlZi5jdXJyZW50ICYmIGlzVmFsaWRBcmVhKGFyZWFUb0NlbnRlckJ5KSkge1xuICAgICAgbWFwUmVmLmN1cnJlbnQuZml0Qm91bmRzKGFyZWFUb0NlbnRlckJ5KTtcbiAgICB9XG4gIH0pO1xuXG4gIG1hcFJlZi5jdXJyZW50Lm9uKCd6b29tZW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB6b29tID0gbWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpO1xuICAgIHNldE1hcFpvb21MZXZlbCh6b29tKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2x1c3Rlckdyb3VwT3B0aW9ucyA9IHtcbiAgc3BpZGVyZnlPbk1heFpvb206IGZhbHNlLFxuICBzaG93Q292ZXJhZ2VPbkhvdmVyOiBmYWxzZSxcbiAgem9vbVRvQm91bmRzT25DbGljazogdHJ1ZSxcbiAgYW5pbWF0ZTogdHJ1ZSxcbiAgZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb206IDEwLFxuICByZW1vdmVPdXRzaWRlVmlzaWJsZUJvdW5kczogZmFsc2UsXG4gIGNodW5rZWRMb2FkaW5nOiB0cnVlLFxuICBpY29uQ3JlYXRlRnVuY3Rpb246IChjbHVzdGVyKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBMLkRpdkljb24oe1xuICAgICAgaHRtbDogYDxkaXY+PHNwYW4+JHtjbHVzdGVyLl9jaGlsZENvdW50fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYXJrZXItY2x1c3Rlci1uYW1lJz4ke2kxOG4udCgnaW5kdXN0cmllcycpfTwvZGl2PmAsXG4gICAgICBjbGFzc05hbWU6ICdtYXJrZXItY2x1c3RlcicsXG4gICAgICBpY29uU2l6ZTogbmV3IEwuUG9pbnQoNDAsIDQwKSxcbiAgICB9KTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB6b29tTGV2ZWxzID0ge1xuICAxOiAnWExhcmdlJyxcbiAgMjogJ1hMYXJnZScsXG4gIDM6ICdYTGFyZ2UnLFxuICA0OiAnWExhcmdlJyxcbiAgNTogJ1hMYXJnZScsXG4gIDY6ICdYTGFyZ2UnLFxuICA3OiAnTGFyZ2UnLFxuICA4OiAnTGFyZ2UnLFxuICA5OiAnTGFyZ2UnLFxuICAxMDogJ0xhcmdlJyxcbiAgMTE6ICdNTGFyZ2UnLFxuICAxMjogJ01MYXJnZScsXG4gIDEzOiAnTUxhcmdlJyxcbiAgMTQ6ICdNTGFyZ2UnLFxuICAxNTogJ01lZGl1bScsXG4gIDE2OiAnTWVkaXVtJyxcbiAgMTc6ICdTbWFsbCcsXG4gIDE4OiAnU21hbGwnLFxufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclBvaW50cyA9IChwb2ludHMsIGhhc0RldmljZSkgPT5cbiAgcG9pbnRzLmZpbHRlcigocG9pbnQpID0+IHBvaW50Lmhhc19kZXZpY2UgPT09IGhhc0RldmljZSk7XG5cbmV4cG9ydCBjb25zdCBmaW5kUG9pbnQgPSAocG9pbnRzLCBwb2ludElkLCBoYXNEZXZpY2VDaGVjaykgPT5cbiAgcG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5pZCA9PT0gcG9pbnRJZCAmJiBoYXNEZXZpY2VDaGVjayhwb2ludCkpO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRWRnZXMgPSAoZWRnZXMsIHBvaW50cywgaXNNb25pdG9yZWQpID0+XG4gIGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gZmluZFBvaW50KHBvaW50cywgZWRnZS5zb3VyY2VfcG9pbnRfaWQsIChwb2ludCkgPT5cbiAgICAgIGlzTW9uaXRvcmVkXG4gICAgICAgID8gcG9pbnQuaGFzX2RldmljZSB8fCBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2VcbiAgICAgICAgOiAhcG9pbnQuZGVzY2VuZGFudHNfaGFzX2RldmljZSxcbiAgICApO1xuXG4gICAgY29uc3QgcGFyZW50UG9pbnQgPSBmaW5kUG9pbnQocG9pbnRzLCBlZGdlLnRhcmdldF9wb2ludF9pZCwgKHBvaW50KSA9PlxuICAgICAgaXNNb25pdG9yZWRcbiAgICAgICAgPyBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2UgfHwgc291cmNlUG9pbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA6ICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICk7XG5cbiAgICByZXR1cm4gc291cmNlUG9pbnQgJiYgcGFyZW50UG9pbnQ7XG4gIH0pO1xuXG5leHBvcnQgY29uc3Qgc2V0dXBDaGVja2JveExpc3RlbmVyID0gKHNlbGVjdG9yLCBvbkNoYW5nZSkgPT4ge1xuICBjb25zdCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICBpZiAoY2hlY2tib3ggPT09IG51bGwpIHJldHVybjtcbiAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gb25DaGFuZ2UoY2hlY2tib3guY2hlY2tlZCkpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxtQkFBQSxHQUFBSCxPQUFBO0FBRU8sSUFBTUksY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsY0FBYyxFQUFLO0VBQ3JFLElBQUlDLFdBQWdCLEdBQUdILE1BQU0sQ0FBQ0ksT0FBTztFQUNyQyxJQUFJSCxXQUFXLENBQUNDLGNBQWMsQ0FBQyxFQUFFO0lBQy9CQyxXQUFXLENBQUNFLFNBQVMsQ0FBQ0gsY0FBYyxFQUFFO01BQUVJLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQzVELENBQUMsTUFBTTtJQUNMLElBQU1DLEtBQVksR0FBRyxFQUFFO0lBRXZCLEtBQUssSUFBTUMsUUFBUSxJQUFJTCxXQUFXLENBQUNNLE9BQU8sRUFBRTtNQUMxQyxJQUNFTixXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxNQUFNLElBQ3JEUCxXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxPQUFPLEVBQ3REO1FBQ0FILEtB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
373
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsImV4cG9ydHMiLCJtYXBSZWYiLCJpc1ZhbGlkQXJlYSIsImFyZWFUb0NlbnRlckJ5IiwibWFwSW5zdGFuY2UiLCJjdXJyZW50IiwiZml0Qm91bmRzIiwicGFkZGluZyIsImdyb3VwIiwicHJvcGVydHkiLCJfbGF5ZXJzIiwia2FuZG9fb2JqZWN0IiwicHVzaCIsIk9iamVjdCIsImtleXMiLCJMIiwiZmVhdHVyZUdyb3VwIiwiZ2V0Qm91bmRzIiwibGVuZ3RoIiwiYXJlYSIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiZ2xvYmFsX2RhdGEiLCJwb2ludHMiLCJlZGdlcyIsIm1hcCIsInVuZGVmaW5lZCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJhcmVhcyIsImdsb2JhbCIsImZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAiLCJsYXllcnNUb0ZpbmQiLCJjdXJyZW50TGF5ZXIiLCJpbmNsdWRlcyIsImthbmRvX3BvaW50X3R5cGUiLCJldmVudHNDb3VudGVySWNvbnMiLCJsYXllciIsInpvb21MZXZlbCIsImljb24iLCJvcHRpb25zIiwiaWNvblNpemUiLCJldmVudHNDb3VudEljb24iLCJpY29uQW5jaG9yIiwic2V0SWNvbiIsInNldE9wYWNpdHkiLCJtdWx0aXBsZUxheWVyZWRJY29ucyIsImlzQUZld0xheWVySWNvbiIsImthbmRvX2Zld19sYXllcl9pY29uIiwibWluaUljb24iLCJwcmVzZW50Iiwia2FuZG9fc2Vjb25kYXJ5Iiwia2FuZG9fdGhpcmQiLCJzZWNvbmRhcnkiLCJ0aGlyZCIsImthbmRvX2luZGV4X29iamVjdCIsImJ1YmJsZUljb25PcHRpb25zIiwib25lTGF5ZXJJY29uT3B0aW9ucyIsIm1pZGRsZUljb25PcHRpb25zIiwidG9wSWNvbk9wdGlvbnMiLCJpY29uWm9vbUNvbnRyb2wiLCJsYXllcnMiLCJfem9vbSIsIm1hcFN0eWxlIiwibWFwQm94U3R5bGUiLCJ0aWxlTGF5ZXIiLCJjb25jYXQiLCJhdHRyaWJ1dGlvbiIsIm1heFpvb20iLCJtaW5ab29tIiwiaWQiLCJ0aWxlU2l6ZSIsInpvb21PZmZzZXQiLCJ1cGRhdGVXaGVuWm9vbWluZyIsInVwZGF0ZVdoZW5JZGxlIiwiYmFzZU1hcHMiLCJtYXBCb3hTYXRlbGxpdGVTdHlsZSIsImRlZmF1bHRNYXAiLCJpMThuIiwidCIsInNhdGVsbGl0ZSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwidG9nZ2xlRWRnZXNWaXNpYmlsaXR5IiwidmlzaWJsZSIsImVhY2hMYXllciIsIlBvbHlsaW5lIiwiU3ltYm9sIiwiYXJyb3dIZWFkIiwic2V0U3R5bGUiLCJvcGFjaXR5IiwiZWRnZXNTcGVjaWZpY0xvZ2ljIiwiZGVmYXVsdE9uIiwiY2hlY2tib3giLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjaGVja2VkIiwiY3VzdG9tQ29udHJvbHMiLCJsYWJlbCIsImlucHV0VHlwZSIsImRlbnlGb3JXYSIsIm9uQ2hhbmdlIiwiaXNDaGVja2VkIiwiYXBwZW5kQ3VzdG9tQ2hlY2tib3hUb0xlYWZsZXRzTGF5ZXJCb3giLCJsZWFmbGV0c0NvbnRhaW5lciIsImN1c3RvbUNvbnRhaW5lciIsIkRvbUV2ZW50Iiwib24iLCJzdHlsZSIsImRpc3BsYXkiLCJjcmVhdGVDdXN0b21Db250cm9sIiwiY29udHJvbCIsImNvbnRhaW5lciIsImNvbnRyb2xDb250YWluZXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaW5uZXJIVE1MIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJ0YXJnZXQiLCJhcHBlbmRDaGlsZCIsImN1c3RvbUZ1bmN0aW9uYWxpdHlGb3JNYXBMYXllcnMiLCJtYXBUeXBlcyIsImFyZ3VtZW50cyIsIndhSWQiLCJmb3JXV1RQRGFzaGJvYXJkIiwiY29udHJvbGxlciIsInBvc2l0aW9uIiwiYWRkVG8iLCJnZXRDb250YWluZXIiLCJmb3JFYWNoIiwiaW5pdGlhbGl6ZU1hcCIsIm1hcFpvb21MZXZlbCIsImRpc3BhdGNoIiwic2V0TWFwWm9vbUxldmVsIiwic2hvd0VkZ2VzQnlEZWZhdWx0IiwiTWFwIiwiY2VudGVyIiwiem9vbVNuYXAiLCJ6b29tIiwiYXR0cmlidXRpb25Db250cm9sIiwicHJlZmVyQ2FudmFzIiwic2V0TWFwIiwid2hlblJlYWR5IiwidmFsdWVzIiwic2V0VGltZW91dCIsImludmFsaWRhdGVTaXplIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RvcmVNYXAiLCJzaWRlTmF2RXhwYW5kZWQiLCJldmVudCIsIm9yaWdpbmFsRXZlbnQiLCJrZXkiLCJjbG9zZVBvcHVwIiwiYm9keSIsImZvY3VzIiwiZ2V0Wm9vbSIsImNsdXN0ZXJHcm91cE9wdGlvbnMiLCJzcGlkZXJmeU9uTWF4Wm9vbSIsInNob3dDb3ZlcmFnZU9uSG92ZXIiLCJ6b29tVG9Cb3VuZHNPbkNsaWNrIiwiYW5pbWF0ZSIsImRpc2FibGVDbHVzdGVyaW5nQXRab29tIiwicmVtb3ZlT3V0c2lkZVZpc2libGVCb3VuZHMiLCJjaHVua2VkTG9hZGluZyIsImljb25DcmVhdGVGdW5jdGlvbiIsImNsdXN0ZXIiLCJEaXZJY29uIiwiaHRtbCIsIl9jaGlsZENvdW50IiwiUG9pbnQiLCJ6b29tTGV2ZWxzIiwiZmlsdGVyUG9pbnRzIiwiaGFzRGV2aWNlIiwiZmlsdGVyIiwicG9pbnQiLCJoYXNfZGV2aWNlIiwiZmluZFBvaW50IiwicG9pbnRJZCIsImhhc0RldmljZUNoZWNrIiwiZmluZCIsImZpbHRlckVkZ2VzIiwiaXNNb25pdG9yZWQiLCJlZGdlIiwic291cmNlUG9pbnQiLCJzb3VyY2VfcG9pbnRfaWQiLCJkZXNjZW5kYW50c19oYXNfZGV2aWNlIiwicGFyZW50UG9pbnQiLCJ0YXJnZXRfcG9pbnRfaWQiLCJzZXR1cENoZWNrYm94TGlzdGVuZXIiLCJzZWxlY3RvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXBVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTCwgeyBQb2ludFR1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBzaWRlTmF2RXhwYW5kZWQsIHN0b3JlTWFwIH0gZnJvbSAnLi4vLi4vc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHNldE1hcCB9IGZyb20gJy4uLy4uL3N0b3JlL1dXVFBEYXNoYm9hcmQvV1dUUERhc2hib2FyZFNsaWNlJztcblxuZXhwb3J0IGNvbnN0IGFyZWFGb2N1c0xvZ2ljID0gKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KSA9PiB7XG4gIGxldCBtYXBJbnN0YW5jZTogYW55ID0gbWFwUmVmLmN1cnJlbnQ7XG4gIGlmIChpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnksIHsgcGFkZGluZzogWzAsIDBdIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBtYXBJbnN0YW5jZS5fbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ0FyZWEnIHx8XG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ1BvaW50J1xuICAgICAgKSB7XG4gICAgICAgIGdyb3VwLnB1c2gobWFwSW5zdGFuY2UuX2xheWVyc1twcm9wZXJ0eV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhMLmZlYXR1cmVHcm91cChncm91cCkuZ2V0Qm91bmRzKCkpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbWFwSW5zdGFuY2UuZml0Qm91bmRzKEwuZmVhdHVyZUdyb3VwKGdyb3VwKS5nZXRCb3VuZHMoKSwge1xuICAgICAgICBwYWRkaW5nOiBbMTAwLCAxMDBdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIG1hcEluc3RhbmNlLmludmFsaWRhdGVTaXplKHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBcmVhID0gKGFyZWEpID0+IHtcbiAgcmV0dXJuIGFyZWEgJiYgYXJlYS5sZW5ndGggPiAwICYmIE9iamVjdC5rZXlzKGFyZWFbMF0pLmxlbmd0aCA+IDA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkTG9hZE1hcE9iamVjdHMgPSAoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgcG9pbnRzLCBlZGdlcykgPT4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbF9kYXRhLm1hcCAhPT0gdW5kZWZpbmVkICYmXG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgcG9pbnRzICE9PSB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzID0gKFxuICBlZGdlcyxcbiAgYXJlYXMsXG4gIGdsb2JhbCxcbiAgbWFwUmVmLFxuICBwb2ludHMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBnbG9iYWwubWFwICE9PSB1bmRlZmluZWQgJiZcbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIC8vIGVkZ2VzLmxlbmd0aCAhPT0gMCAmJlxuICAgIC8vIGFyZWFzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHBvaW50cy5sZW5ndGggIT09IDBcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwID0gKFxuICBsYXllcnNUb0ZpbmQ6IHN0cmluZ1tdLFxuICBjdXJyZW50TGF5ZXIsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBsYXllcnNUb0ZpbmQuaW5jbHVkZXMoY3VycmVudExheWVyLmthbmRvX29iamVjdCkgJiZcbiAgICBjdXJyZW50TGF5ZXIua2FuZG9fcG9pbnRfdHlwZSAhPT0gJ01hbmhvbGUnXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZXZlbnRzQ291bnRlckljb25zID0gKGxheWVyLCB6b29tTGV2ZWwpID0+IHtcbiAgbGV0IGljb24gPSBsYXllci5vcHRpb25zLmljb247XG4gIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25TaXplO1xuICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25BbmNob3I7XG4gIGxheWVyLnNldEljb24oaWNvbik7XG4gIGxheWVyLnNldE9wYWNpdHkoMSk7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbGVMYXllcmVkSWNvbnMgPSAobGF5ZXIsIHpvb21MZXZlbCkgPT4ge1xuICBsZXQgaWNvbiA9IGxheWVyLm9wdGlvbnMuaWNvbjtcbiAgbGV0IGlzQUZld0xheWVySWNvbiA9IGxheWVyLmthbmRvX2Zld19sYXllcl9pY29uO1xuICBsZXQgbWluaUljb24gPSB7XG4gICAgcHJlc2VudDogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5IHx8IGxheWVyLmthbmRvX3RoaXJkLFxuICAgIHNlY29uZGFyeTogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5LFxuICAgIHRoaXJkOiBsYXllci5rYW5kb190aGlyZCxcbiAgfTtcblxuICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAwKSB7XG4gICAgaWYgKGlzQUZld0xheWVySWNvbikge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gYnViYmxlSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGJ1YmJsZUljb25PcHRpb25zKFxuICAgICAgICB6b29tTGV2ZWwsXG4gICAgICAgIG1pbmlJY29uLFxuICAgICAgKS5pY29uQW5jaG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBvbmVMYXllckljb25PcHRpb25zKHpvb21MZXZlbCkuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IG9uZUxheWVySWNvbk9wdGlvbnMoem9vbUxldmVsKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAxKSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBtaWRkbGVJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gbWlkZGxlSWNvbk9wdGlvbnMoXG4gICAgICAgIHpvb21MZXZlbCxcbiAgICAgICAgbWluaUljb24sXG4gICAgICApLmljb25BbmNob3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IHRvcEljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSB0b3BJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfVxuXG4gIGxheWVyLnNldEljb24oaWNvbik7XG59O1xuXG5jb25zdCBvbmVMYXllckljb25PcHRpb25zID0gKHpvb21MZXZlbCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy4zLCB6b29tTGV2ZWwgKiAzLjNdIGFzIFBvaW50VHVwbGUsXG4gICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuNywgem9vbUxldmVsICogMy43XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGV2ZW50c0NvdW50SWNvbiA9ICh6b29tTGV2ZWwpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDIuNSwgem9vbUxldmVsICogMi41XSBhcyBQb2ludFR1cGxlLFxuICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAwLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUljb25PcHRpb25zID0gKHpvb21MZXZlbCwgbWluaUljb24pID0+IHtcbiAgaWYgKG1pbmlJY29uLnByZXNlbnQpIHtcbiAgICBpZiAobWluaUljb24uc2Vjb25kYXJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDJdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjk4LCB6b29tTGV2ZWwgKiA0LjNdIGFzIFBvaW50VHVwbGUsXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMiwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbWlkZGxlSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS4xLCB6b29tTGV2ZWwgKiAxLjFdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNDUsIHpvb21MZXZlbCAqIDMuNV0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuMSwgem9vbUxldmVsICogMS4xXSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjQ1LCB6b29tTGV2ZWwgKiAxLjVdLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMi41LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuMjk1LCB6b29tTGV2ZWwgKiAzLjM1XSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9wSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMC45LCB6b29tTGV2ZWwgKiAxLjhdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS42LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuMiwgem9vbUxldmVsICogMi4xXSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuOSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAyLCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpY29uWm9vbUNvbnRyb2wgPSAobWFwKSA9PiB7XG4gIGxldCBsYXllcnMgPSBtYXAuX2xheWVycztcbiAgbGV0IHpvb21MZXZlbCA9IG1hcC5fem9vbTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxheWVycykge1xuICAgIGlmIChmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwKFsnSWNvbk51bWJlciddLCBsYXllcnNbcHJvcGVydHldKSkge1xuICAgICAgZXZlbnRzQ291bnRlckljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydQb2ludCcsICdJY29uJ10sIGxheWVyc1twcm9wZXJ0eV0pKSB7XG4gICAgICBtdWx0aXBsZUxheWVyZWRJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydTYW1wbGluZycsICdPYnNlcnZhdGlvbiddLCBsYXllcnNbcHJvcGVydHldKVxuICAgICkge1xuICAgICAgbXVsdGlwbGVMYXllcmVkSWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdHlsZSA9IChtYXBCb3hTdHlsZSkgPT4ge1xuICByZXR1cm4gTC50aWxlTGF5ZXIoXG4gICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL25hZGF2LWthbmRvLyR7bWFwQm94U3R5bGV9L3RpbGVzLzI1Ni97en0ve3h9L3t5fUAyeD9hY2Nlc3NfdG9rZW49cGsuZXlKMUlqb2libUZrWVhZdGEyRnVaRzhpTENKaElqb2lZMnB2ZUhwcmRHUnhNSGxtZERONGJEZzBkekp4T1hjNGRTSjkuSi0yb2hxN2o0eUtOYm00Tl8tUDZxd2AsXG4gICAge1xuICAgICAgYXR0cmlidXRpb246XG4gICAgICAgICdNYXAgZGF0YSAmY29weTsgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL1wiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgPGEgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvXCI+Q0MtQlktU0E8L2E+LCBJbWFnZXJ5IMKpIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiPk1hcGJveDwvYT4nLFxuICAgICAgbWF4Wm9vbTogMTgsXG4gICAgICBtaW5ab29tOiAyLFxuICAgICAgaWQ6ICdtYXBib3gvc3RyZWV0cy12MTEnLFxuICAgICAgdGlsZVNpemU6IDUxMixcbiAgICAgIHpvb21PZmZzZXQ6IC0xLFxuICAgICAgdXBkYXRlV2hlblpvb21pbmc6IGZhbHNlLFxuICAgICAgdXBkYXRlV2hlbklkbGU6IGZhbHNlLFxuICAgIH0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYmFzZU1hcHMgPSAobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKSA9PiB7XG4gIGxldCBkZWZhdWx0TWFwID0gaTE4bi50KCdtYXAubGF5ZXJzLmRlZmF1bHQnKTtcbiAgbGV0IHNhdGVsbGl0ZSA9IGkxOG4udCgnbWFwLmxheWVycy5zYXRlbGxpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBbZGVmYXVsdE1hcF06IG1hcFN0eWxlKG1hcEJveFN0eWxlKSxcbiAgICBbc2F0ZWxsaXRlXTogbWFwU3R5bGUobWFwQm94U2F0ZWxsaXRlU3R5bGUpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSA9ICh2aXNpYmxlLCBtYXApID0+IHtcbiAgbWFwLmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlsaW5lICYmIGxheWVyLmthbmRvX29iamVjdCAhPT0gJ0FyZWEnKSB8fFxuICAgICAgbGF5ZXIgaW5zdGFuY2VvZiBMLlN5bWJvbC5hcnJvd0hlYWRcbiAgICApIHtcbiAgICAgIGxheWVyLnNldFN0eWxlKHsgb3BhY2l0eTogdmlzaWJsZSA/IDEgOiAwIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vLyBleHBvcnQgY29uc3QgdG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eSA9ICh2aXNpYmxlKSA9PiB7XG4vLyAgIGNvbnNvbGUud2FybigndG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eScsIHZpc2libGUpO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGVkZ2VzU3BlY2lmaWNMb2dpYyA9IChkZWZhdWx0T24sIG1hcCkgPT4ge1xuICBsZXQgY2hlY2tib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRnZXMtY2hlY2tib3gnKTtcbiAgaWYgKGNoZWNrYm94ID09IG51bGwpIHJldHVybjtcbiAgY2hlY2tib3guY2hlY2tlZCA9IGRlZmF1bHRPbjtcbn07XG5cbmNvbnN0IGN1c3RvbUNvbnRyb2xzID0gKG1hcCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiBpMThuLnQoJ21hcC5sYXllcnMubmV0d29ya19saW5lcycpLFxuICAgICAgaWQ6ICdlZGdlcy1jaGVja2JveCcsXG4gICAgICBpbnB1dFR5cGU6ICdjaGVja2JveCcsXG4gICAgICBkZW55Rm9yV2E6IFs1MThdLFxuICAgICAgb25DaGFuZ2U6IChpc0NoZWNrZWQpID0+IHRvZ2dsZUVkZ2VzVmlzaWJpbGl0eShpc0NoZWNrZWQsIG1hcCksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGxhYmVsOiAnU2hvdyBvbmx5IG1vbml0b3JlZCBwb2ludHMnLFxuICAgICAgaWQ6ICdtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICAgIGlucHV0VHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIG9uQ2hhbmdlOiAoaXNDaGVja2VkKSA9PiAoKSA9PiB7fSxcbiAgICB9LFxuICBdO1xufTtcblxuY29uc3QgYXBwZW5kQ3VzdG9tQ2hlY2tib3hUb0xlYWZsZXRzTGF5ZXJCb3ggPSAoXG4gIGxlYWZsZXRzQ29udGFpbmVyLFxuICBjdXN0b21Db250YWluZXIsXG4pID0+IHtcbiAgTC5Eb21FdmVudC5vbihsZWFmbGV0c0NvbnRhaW5lciwgJ21vdXNlb3ZlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBjdXN0b21Db250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gIH0pO1xuXG4gIEwuRG9tRXZlbnQub24obGVhZmxldHNDb250YWluZXIsICdtb3VzZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjdXN0b21Db250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgfSk7XG59O1xuXG5jb25zdCBjcmVhdGVDdXN0b21Db250cm9sID0gKGNvbnRyb2wsIGNvbnRhaW5lcikgPT4ge1xuICBsZXQgY29udHJvbENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250cm9sQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLW92ZXJsYXlzJztcbiAgY29udHJvbENvbnRhaW5lci5pbm5lckhUTUwgPSBgXG4gICAgICA8bGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiJHtjb250cm9sLmlucHV0VHlwZX1cIiBpZD1cIiR7Y29udHJvbC5pZH1cIiAvPiAke2NvbnRyb2wubGFiZWx9XG4gICAgICA8L2xhYmVsPlxuICAgIGA7XG5cbiAgY29udHJvbENvbnRhaW5lclxuICAgIC5xdWVyeVNlbGVjdG9yKGAjJHtjb250cm9sLmlkfWApXG4gICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSBlLnRhcmdldC5jaGVja2VkO1xuICAgICAgY29udHJvbC5vbkNoYW5nZShpc0NoZWNrZWQpO1xuICAgIH0pO1xuXG4gIGNvbnRyb2xDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgY29udGFpbmVyPy5hcHBlbmRDaGlsZChjb250cm9sQ29udGFpbmVyKTtcblxuICBhcHBlbmRDdXN0b21DaGVja2JveFRvTGVhZmxldHNMYXllckJveChjb250YWluZXIsIGNvbnRyb2xDb250YWluZXIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1c3RvbUZ1bmN0aW9uYWxpdHlGb3JNYXBMYXllcnMgPSAoXG4gIG1hcCxcbiAgbWFwVHlwZXMsXG4gIGRlZmF1bHRPbiA9IHRydWUsXG4gIHdhSWQsXG4gIGZvcldXVFBEYXNoYm9hcmQsXG4pID0+IHtcbiAgbGV0IGNvbnRyb2xsZXIgPSBMLmNvbnRyb2xcbiAgICAubGF5ZXJzKG1hcFR5cGVzLCB7fSwgeyBwb3NpdGlvbjogJ2JvdHRvbXJpZ2h0JyB9KVxuICAgIC5hZGRUbyhtYXApO1xuICBsZXQgY29udGFpbmVyID0gY29udHJvbGxlci5nZXRDb250YWluZXIoKTtcblxuICBpZiAoZm9yV1dUUERhc2hib2FyZCkge1xuICAgIGN1c3RvbUNvbnRyb2xzKG1hcCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wuZGVueUZvcldhICYmIGNvbnRyb2wuZGVueUZvcldhLmluY2x1ZGVzKHdhSWQpKSByZXR1cm47XG5cbiAgICAgIGNyZWF0ZUN1c3RvbUNvbnRyb2woY29udHJvbCwgY29udGFpbmVyKTtcbiAgICAgIGVkZ2VzU3BlY2lmaWNMb2dpYyhkZWZhdWx0T24sIG1hcCk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplTWFwID0gKFxuICBtYXBab29tTGV2ZWwsXG4gIG1hcEJveFN0eWxlLFxuICBtYXBCb3hTYXRlbGxpdGVTdHlsZSxcbiAgbWFwUmVmLFxuICBkaXNwYXRjaCxcbiAgaXNWYWxpZEFyZWEsXG4gIGFyZWFUb0NlbnRlckJ5LFxuICBzZXRNYXBab29tTGV2ZWwsXG4gIGZvcldXVFBEYXNoYm9hcmQsXG4gIHNob3dFZGdlc0J5RGVmYXVsdCxcbiAgd2FJZCA9IDAsXG4pID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBtYXBSZWYuY3VycmVudCA9IG5ldyBMLk1hcCgnbWFwJywge1xuICAgIGNlbnRlcjogWzAsIDBdLFxuICAgIHpvb21TbmFwOiAxLFxuICAgIHpvb206IG1hcFpvb21MZXZlbCxcbiAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgIHByZWZlckNhbnZhczogZmFsc2UsXG4gIH0pO1xuXG4gIGlmIChmb3JXV1RQRGFzaGJvYXJkKSBkaXNwYXRjaChzZXRNYXAobWFwUmVmLmN1cnJlbnQpKTtcblxuICBtYXBSZWYuY3VycmVudC53aGVuUmVhZHkoKCkgPT4ge1xuICAgIGxldCBtYXAgPSBtYXBSZWYuY3VycmVudDtcbiAgICBjb25zdCBtYXBUeXBlcyA9IGJhc2VNYXBzKG1hcEJveFN0eWxlLCBtYXBCb3hTYXRlbGxpdGVTdHlsZSk7XG5cbiAgICBjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzKFxuICAgICAgbWFwLFxuICAgICAgbWFwVHlwZXMsXG4gICAgICBzaG93RWRnZXNCeURlZmF1bHQsXG4gICAgICB3YUlkLFxuICAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgICApO1xuXG4gICAgLy8gVGhlIG5hbWUgb2YgdGhlIGxheWVyIGNoYW5nZXMgYmV0d2VlbiBsYW5ndWFnZXMgc28gdGhlcmUgd2FzIGEgbmVlZCB0byBnZXQgdG8gdGhlIGZpcnN0IGxheWVyXG4gICAgT2JqZWN0LnZhbHVlcyhtYXBUeXBlcylbMF0uYWRkVG8obWFwKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50LmludmFsaWRhdGVTaXplKHRydWUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2VycicsIGVycik7XG4gICAgICB9XG5cbiAgICAgIGRpc3BhdGNoKHN0b3JlTWFwKG1hcFJlZi5jdXJyZW50KSk7XG4gICAgICBkaXNwYXRjaChzaWRlTmF2RXhwYW5kZWQodHJ1ZSkpO1xuXG4gICAgICBtYXAub24oJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIG1hcC5jbG9zZVBvcHVwKCk7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCAwKTtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQgJiYgaXNWYWxpZEFyZWEoYXJlYVRvQ2VudGVyQnkpKSB7XG4gICAgICBtYXBSZWYuY3VycmVudC5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnkpO1xuICAgIH1cbiAgfSk7XG5cbiAgbWFwUmVmLmN1cnJlbnQub24oJ3pvb21lbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHpvb20gPSBtYXBSZWYuY3VycmVudC5nZXRab29tKCk7XG4gICAgc2V0TWFwWm9vbUxldmVsKHpvb20pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyR3JvdXBPcHRpb25zID0ge1xuICBzcGlkZXJmeU9uTWF4Wm9vbTogZmFsc2UsXG4gIHNob3dDb3ZlcmFnZU9uSG92ZXI6IGZhbHNlLFxuICB6b29tVG9Cb3VuZHNPbkNsaWNrOiB0cnVlLFxuICBhbmltYXRlOiB0cnVlLFxuICBkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTogMTAsXG4gIHJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzOiBmYWxzZSxcbiAgY2h1bmtlZExvYWRpbmc6IHRydWUsXG4gIGljb25DcmVhdGVGdW5jdGlvbjogKGNsdXN0ZXIpID0+IHtcbiAgICByZXR1cm4gbmV3IEwuRGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdj48c3Bhbj4ke2NsdXN0ZXIuX2NoaWxkQ291bnR9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21hcmtlci1jbHVzdGVyLW5hbWUnPiR7aTE4bi50KCdpbmR1c3RyaWVzJyl9PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ21hcmtlci1jbHVzdGVyJyxcbiAgICAgIGljb25TaXplOiBuZXcgTC5Qb2ludCg0MCwgNDApLFxuICAgIH0pO1xuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHpvb21MZXZlbHMgPSB7XG4gIDE6ICdYTGFyZ2UnLFxuICAyOiAnWExhcmdlJyxcbiAgMzogJ1hMYXJnZScsXG4gIDQ6ICdYTGFyZ2UnLFxuICA1OiAnWExhcmdlJyxcbiAgNjogJ1hMYXJnZScsXG4gIDc6ICdMYXJnZScsXG4gIDg6ICdMYXJnZScsXG4gIDk6ICdMYXJnZScsXG4gIDEwOiAnTGFyZ2UnLFxuICAxMTogJ01MYXJnZScsXG4gIDEyOiAnTUxhcmdlJyxcbiAgMTM6ICdNTGFyZ2UnLFxuICAxNDogJ01MYXJnZScsXG4gIDE1OiAnTWVkaXVtJyxcbiAgMTY6ICdNZWRpdW0nLFxuICAxNzogJ1NtYWxsJyxcbiAgMTg6ICdTbWFsbCcsXG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyUG9pbnRzID0gKHBvaW50cywgaGFzRGV2aWNlKSA9PlxuICBwb2ludHMuZmlsdGVyKChwb2ludCkgPT4gcG9pbnQuaGFzX2RldmljZSA9PT0gaGFzRGV2aWNlKTtcblxuZXhwb3J0IGNvbnN0IGZpbmRQb2ludCA9IChwb2ludHMsIHBvaW50SWQsIGhhc0RldmljZUNoZWNrKSA9PlxuICBwb2ludHMuZmluZCgocG9pbnQpID0+IHBvaW50LmlkID09PSBwb2ludElkICYmIGhhc0RldmljZUNoZWNrKHBvaW50KSk7XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJFZGdlcyA9IChlZGdlcywgcG9pbnRzLCBpc01vbml0b3JlZCkgPT5cbiAgZWRnZXMuZmlsdGVyKChlZGdlKSA9PiB7XG4gICAgY29uc3Qgc291cmNlUG9pbnQgPSBmaW5kUG9pbnQocG9pbnRzLCBlZGdlLnNvdXJjZV9wb2ludF9pZCwgKHBvaW50KSA9PlxuICAgICAgaXNNb25pdG9yZWRcbiAgICAgICAgPyBwb2ludC5oYXNfZGV2aWNlIHx8IGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZVxuICAgICAgICA6ICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICk7XG5cbiAgICBjb25zdCBwYXJlbnRQb2ludCA9IGZpbmRQb2ludChwb2ludHMsIGVkZ2UudGFyZ2V0X3BvaW50X2lkLCAocG9pbnQpID0+XG4gICAgICBpc01vbml0b3JlZFxuICAgICAgICA/IGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZSB8fCBzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkXG4gICAgICAgIDogIXBvaW50LmRlc2NlbmRhbnRzX2hhc19kZXZpY2UsXG4gICAgKTtcblxuICAgIHJldHVybiBzb3VyY2VQb2ludCAmJiBwYXJlbnRQb2ludDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzZXR1cENoZWNrYm94TGlzdGVuZXIgPSAoc2VsZWN0b3IsIG9uQ2hhbmdlKSA9PiB7XG4gIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIGlmIChjaGVja2JveCA9PT0gbnVsbCkgcmV0dXJuO1xuICBjaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiBvbkNoYW5nZShjaGVja2JveC5jaGVja2VkKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFILE9BQUE7QUFFTyxJQUFNSSxjQUFjLEdBQUFDLE9BQUEsQ0FBQUQsY0FBQSxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJRSxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsY0FBYyxFQUFLO0VBQ3JFLElBQUlDLFdBQWdCLEdBQUdILE1BQU0sQ0FBQ0ksT0FBTztFQUNyQyxJQUFJSCxXQUFXLENBQUNDLGNBQWMsQ0FBQyxFQUFFO0lBQy9CQyxXQUFXLENBQUNFLFNBQVMsQ0FBQ0gsY0FBYyxFQUFFO01BQUVJLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQzVELENBQUMsTUFBTTtJQUNMLElBQU1DLEtBQVksR0FBRyxFQUFFO0lBRXZCLEtBQUssSUFBTUMsUUFBUSxJQUFJTCxXQUFXLENBQUNNLE9BQU8sRUFBRTtNQUMxQyxJQUNFTixXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxNQUFNLElBQ3JEUCxXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxPQUFPLEVBQ3REO1FBQ0FILEtBQUssQ0FBQ0ksSUFBSSxDQUFDUixXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUM7TUFDM0M7SUFDRjtJQUVBLElBQUlJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxnQkFBQyxDQUFDQyxZQUFZLENBQUNSLEtBQUssQ0FBQyxDQUFDUyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDL0RkLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDUyxnQkFBQyxDQUFDQyxZQUFZLENBQUNSLEtBQUssQ0FBQyxDQUFDUyxTQUFTLENBQUMsQ0FBQyxFQUFFO1FBQ3ZEVixPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRztNQUNwQixDQUFDLENBQUM7SUFDSjtFQUNGO0VBQ0E7QUFDRixDQUFDOztBQUVNLElBQU1MLFdBQVcsR0FBQUYsT0FBQSxDQUFBRSxXQUFBLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSWlCLElBQUksRUFBSztFQUNuQyxPQUFPQSxJQUFJLElBQUlBLElBQUksQ0FBQ0QsTUFBTSxHQUFHLENBQUMsSUFBSUwsTUFBTSxDQUFDQyxJQUFJLENBQUNLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxNQUFNLEdBQUcsQ0FBQztBQUNuRSxDQUFDO0FBRU0sSUFBTUUsb0JBQW9CLEdBQUFwQixPQUFBLENBQUFvQixvQkFBQSxHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLFdBQVcsRUFBRXBCLE1BQU0sRUFBRXFCLE1BQU0sRUFBRUMsS0FBSyxFQUFLO0VBQzFFLE9BQ0VGLFdBQVcsQ0FBQ0csR0FBRyxLQUFLQyxTQUFTLElBQzdCeEIsTUFBTSxDQUFDSSxPQUFPLEtBQUssSUFBSSxJQUN2QmtCLEtBQUssS0FBS0UsU0FBUyxJQUNuQkgsTUFBTSxLQUFLRyxTQUFTO0FBRXhCLENBQUM7QUFFTSxJQUFNQyw0QkFBNEIsR0FBQTFCLE9BQUEsQ0FBQTBCLDRCQUFBLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FDdkNILEtBQUssRUFDTEksS0FBSyxFQUNMQyxNQUFNLEVBQ04zQixNQUFNLEVBQ05xQixNQUFNLEVBQ0g7RUFDSCxPQUNFTSxNQUFNLENBQUNKLEdBQUcsS0FBS0MsU0FBUyxJQUN4QnhCLE1BQU0sQ0FBQ0ksT0FBTyxLQUFLLElBQUk7RUFDdkI7RUFDQTtFQUNBaUIsTUFBTSxDQUFDSixNQUFNLEtBQUssQ0FBQztBQUV2QixDQUFDO0FBRU0sSUFBTVcseUJBQXlCLEdBQUE3QixPQUFBLENBQUE2Qix5QkFBQSxHQUFHLFNBQTVCQSx5QkFBeUJBLENBQ3BDQyxZQUFzQixFQUN0QkMsWUFBWSxFQUNUO0VBQ0gsT0FDRUQsWUFBWSxDQUFDRSxRQUFRLENBQUNELFlBQVksQ0FBQ3BCLFlBQVksQ0FBQyxJQUNoRG9CLFlBQVksQ0FBQ0UsZ0JBQWdCLEtBQUssU0FBUztBQUUvQyxDQUFDO0FBRU0sSUFBTUMsa0JBQWtCLEdBQUFsQyxPQUFBLENBQUFrQyxrQkFBQSxHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLEtBQUssRUFBRUMsU0FBUyxFQUFLO0VBQ3RELElBQUlDLElBQUksR0FBR0YsS0FBSyxDQUFDRyxPQUFPLENBQUNELElBQUk7RUFDN0JBLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdDLGVBQWUsQ0FBQ0osU0FBUyxDQUFDLENBQUNHLFFBQVE7RUFDM0RGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdELGVBQWUsQ0FBQ0osU0FBUyxDQUFDLENBQUNLLFVBQVU7RUFDL0ROLEtBQUssQ0FBQ08sT0FBTyxDQUFDTCxJQUFJLENBQUM7RUFDbkJGLEtBQUssQ0FBQ1EsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRU0sSUFBTUMsb0JBQW9CLEdBQUE1QyxPQUFBLENBQUE0QyxvQkFBQSxHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlULEtBQUssRUFBRUMsU0FBUyxFQUFLO0VBQ3hELElBQUlDLElBQUksR0FBR0YsS0FBSyxDQUFDRyxPQUFPLENBQUNELElBQUk7RUFDN0IsSUFBSVEsZUFBZSxHQUFHVixLQUFLLENBQUNXLG9CQUFvQjtFQUNoRCxJQUFJQyxRQUFRLEdBQUc7SUFDYkMsT0FBTyxFQUFFYixLQUFLLENBQUNjLGVBQWUsSUFBSWQsS0FBSyxDQUFDZSxXQUFXO0lBQ25EQyxTQUFTLEVBQUVoQixLQUFLLENBQUNjLGVBQWU7SUFDaENHLEtBQUssRUFBRWpCLEtBQUssQ0FBQ2U7RUFDZixDQUFDO0VBRUQsSUFBSWYsS0FBSyxDQUFDa0Isa0JBQWtCLEtBQUssQ0FBQyxFQUFFO0lBQ2xDLElBQUlSLGVBQWUsRUFBRTtNQUNuQlIsSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR2UsaUJBQWlCLENBQUNsQixTQUFTLEVBQUVXLFFBQVEsQ0FBQyxDQUFDUixRQUFRO01BQ3ZFRixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHYSxpQkFBaUIsQ0FDekNsQixTQUFTLEVBQ1RXLFFBQ0YsQ0FBQyxDQUFDTixVQUFVO0lBQ2QsQ0FBQyxNQUFNO01BQ0xKLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdnQixtQkFBbUIsQ0FBQ25CLFNBQVMsQ0FBQyxDQUFDRyxRQUFRO01BQy9ERixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHYyxtQkFBbUIsQ0FBQ25CLFNBQVMsQ0FBQyxDQUFDSyxVQUFVO0lBQ3JFO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsSUFBSU4sS0FBSyxDQUFDa0Isa0JBQWtCLEtBQUssQ0FBQyxFQUFFO01BQ2xDaEIsSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR2lCLGlCQUFpQixDQUFDcEIsU0FBUyxFQUFFVyxRQUFRLENBQUMsQ0FBQ1IsUUFBUTtNQUN2RUYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2UsaUJBQWlCLENBQ3pDcEIsU0FBUyxFQUNUVyxRQUNGLENBQUMsQ0FBQ04sVUFBVTtJQUNkLENBQUMsTUFBTTtNQUNMSixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHa0IsY0FBYyxDQUFDckIsU0FBUyxFQUFFVyxRQUFRLENBQUMsQ0FBQ1IsUUFBUTtNQUNwRUYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2dCLGNBQWMsQ0FBQ3JCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNOLFVBQVU7SUFDMUU7RUFDRjtFQUVBTixLQUFLLENBQUNPLE9BQU8sQ0FBQ0wsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRCxJQUFNa0IsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSW5CLFNBQVMsRUFBSztFQUN6QyxPQUFPO0lBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO0lBQzFESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUc7RUFDL0MsQ0FBQztBQUNILENBQUM7QUFFTSxJQUFNSSxlQUFlLEdBQUF4QyxPQUFBLENBQUF3QyxlQUFBLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlKLFNBQVMsRUFBSztFQUM1QyxPQUFPO0lBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO0lBQzFESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRUEsU0FBUyxHQUFHLENBQUM7RUFDM0MsQ0FBQztBQUNILENBQUM7QUFFTSxJQUFNa0IsaUJBQWlCLEdBQUF0RCxPQUFBLENBQUFzRCxpQkFBQSxHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlsQixTQUFTLEVBQUVXLFFBQVEsRUFBSztFQUN4RCxJQUFJQSxRQUFRLENBQUNDLE9BQU8sRUFBRTtJQUNwQixJQUFJRCxRQUFRLENBQUNJLFNBQVMsRUFBRTtNQUN0QixPQUFPO1FBQ0xaLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO1FBQzNESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRUEsU0FBUyxHQUFHLENBQUM7TUFDM0MsQ0FBQztJQUNILENBQUMsTUFBTTtNQUNMLE9BQU87UUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQWU7UUFDM0RLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUFFQSxTQUFTLEdBQUcsQ0FBQztNQUMzQyxDQUFDO0lBQ0g7RUFDRixDQUFDLE1BQU07SUFDTCxPQUFPO01BQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO01BQzNESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRUEsU0FBUyxHQUFHLENBQUM7SUFDM0MsQ0FBQztFQUNIO0FBQ0YsQ0FBQztBQUVNLElBQU1vQixpQkFBaUIsR0FBQXhELE9BQUEsQ0FBQXdELGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSXBCLFNBQVMsRUFBRVcsUUFBUSxFQUFLO0VBQ3hELElBQUlBLFFBQVEsQ0FBQ0MsT0FBTyxFQUFFO0lBQ3BCLElBQUlELFFBQVEsQ0FBQ0ksU0FBUyxFQUFFO01BQ3RCLE9BQU87UUFDTFosUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUNLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHO01BQ2pELENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxPQUFPO1FBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNqRCxDQUFDO0lBQ0g7RUFDRixDQUFDLE1BQU07SUFDTCxPQUFPO01BQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO01BQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLEtBQUssRUFBRUEsU0FBUyxHQUFHLElBQUk7SUFDbEQsQ0FBQztFQUNIO0FBQ0YsQ0FBQztBQUVNLElBQU1xQixjQUFjLEdBQUF6RCxPQUFBLENBQUF5RCxjQUFBLEdBQUcsU0FBakJBLGNBQWNBLENBQUlyQixTQUFTLEVBQUVXLFFBQVEsRUFBSztFQUNyRCxJQUFJQSxRQUFRLENBQUNDLE9BQU8sRUFBRTtJQUNwQixJQUFJRCxRQUFRLENBQUNJLFNBQVMsRUFBRTtNQUN0QixPQUFPO1FBQ0xaLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNoRCxDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0wsT0FBTztRQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUc7TUFDaEQsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztNQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxHQUFHO0lBQzdDLENBQUM7RUFDSDtBQUNGLENBQUM7QUFFTSxJQUFNc0IsZUFBZSxHQUFBMUQsT0FBQSxDQUFBMEQsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJbEMsR0FBRyxFQUFLO0VBQ3RDLElBQUltQyxNQUFNLEdBQUduQyxHQUFHLENBQUNkLE9BQU87RUFDeEIsSUFBSTBCLFNBQVMsR0FBR1osR0FBRyxDQUFDb0MsS0FBSztFQUV6QixLQUFLLElBQU1uRCxRQUFRLElBQUlrRCxNQUFNLEVBQUU7SUFDN0IsSUFBSTlCLHlCQUF5QixDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUU4QixNQUFNLENBQUNsRCxRQUFRLENBQUMsQ0FBQyxFQUFFO01BQy9EeUIsa0JBQWtCLENBQUN5QixNQUFNLENBQUNsRCxRQUFRLENBQUMsRUFBRTJCLFNBQVMsQ0FBQztJQUNqRDtJQUVBLElBQUlQLHlCQUF5QixDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFOEIsTUFBTSxDQUFDbEQsUUFBUSxDQUFDLENBQUMsRUFBRTtNQUNsRW1DLG9CQUFvQixDQUFDZSxNQUFNLENBQUNsRCxRQUFRLENBQUMsRUFBRTJCLFNBQVMsQ0FBQztJQUNuRDtJQUVBLElBQ0VQLHlCQUF5QixDQUFDLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFOEIsTUFBTSxDQUFDbEQsUUFBUSxDQUFDLENBQUMsRUFDeEU7TUFDQW1DLG9CQUFvQixDQUFDZSxNQUFNLENBQUNsRCxRQUFRLENBQUMsRUFBRTJCLFNBQVMsQ0FBQztJQUNuRDtFQUNGO0FBQ0YsQ0FBQztBQUVNLElBQU15QixRQUFRLEdBQUE3RCxPQUFBLENBQUE2RCxRQUFBLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsV0FBVyxFQUFLO0VBQ3ZDLE9BQU8vQyxnQkFBQyxDQUFDZ0QsU0FBUyxpREFBQUMsTUFBQSxDQUNnQ0YsV0FBVyw0SUFDM0Q7SUFDRUcsV0FBVyxFQUNULHlOQUF5TjtJQUMzTkMsT0FBTyxFQUFFLEVBQUU7SUFDWEMsT0FBTyxFQUFFLENBQUM7SUFDVkMsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QkMsUUFBUSxFQUFFLEdBQUc7SUFDYkMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNkQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCQyxjQUFjLEVBQUU7RUFDbEIsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLElBQU1DLFFBQVEsR0FBQXpFLE9BQUEsQ0FBQXlFLFFBQUEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJWCxXQUFXLEVBQUVZLG9CQUFvQixFQUFLO0VBQzdELElBQUlDLFVBQVUsR0FBR0MsYUFBSSxDQUFDQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7RUFDN0MsSUFBSUMsU0FBUyxHQUFHRixhQUFJLENBQUNDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztFQUM5QyxXQUFBRSxnQkFBQSxDQUFBQyxPQUFBLE1BQUFELGdCQUFBLENBQUFDLE9BQUEsTUFDR0wsVUFBVSxFQUFHZCxRQUFRLENBQUNDLFdBQVcsQ0FBQyxHQUNsQ2dCLFNBQVMsRUFBR2pCLFFBQVEsQ0FBQ2Esb0JBQW9CLENBQUM7QUFFL0MsQ0FBQztBQUVNLElBQU1PLHFCQUFxQixHQUFBakYsT0FBQSxDQUFBaUYscUJBQUEsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxPQUFPLEVBQUUxRCxHQUFHLEVBQUs7RUFDckRBLEdBQUcsQ0FBQzJELFNBQVMsQ0FBQyxVQUFDaEQsS0FBSyxFQUFLO0lBQ3ZCLElBQ0dBLEtBQUssWUFBWXBCLGdCQUFDLENBQUNxRSxRQUFRLElBQUlqRCxLQUFLLENBQUN4QixZQUFZLEtBQUssTUFBTSxJQUM3RHdCLEtBQUssWUFBWXBCLGdCQUFDLENBQUNzRSxNQUFNLENBQUNDLFNBQVMsRUFDbkM7TUFDQW5ELEtBQUssQ0FBQ29ELFFBQVEsQ0FBQztRQUFFQyxPQUFPLEVBQUVOLE9BQU8sR0FBRyxDQUFDLEdBQUc7TUFBRSxDQUFDLENBQUM7SUFDOUM7RUFDRixDQUFDLENBQUM7QUFDSixDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFTyxJQUFNTyxrQkFBa0IsR0FBQXpGLE9BQUEsQ0FBQXlGLGtCQUFBLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsU0FBUyxFQUFFbEUsR0FBRyxFQUFLO0VBQ3BELElBQUltRSxRQUFRLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLGlCQUFpQixDQUFDO0VBQ3hELElBQUlGLFFBQVEsSUFBSSxJQUFJLEVBQUU7RUFDdEJBLFFBQVEsQ0FBQ0csT0FBTyxHQUFHSixTQUFTO0FBQzlCLENBQUM7QUFFRCxJQUFNSyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUl2RSxHQUFHLEVBQUs7RUFDOUIsT0FBTyxDQUNMO0lBQ0V3RSxLQUFLLEVBQUVwQixhQUFJLENBQUNDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztJQUN6Q1QsRUFBRSxFQUFFLGdCQUFnQjtJQUNwQjZCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDaEJDLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFHQyxTQUFTO01BQUEsT0FBS25CLHFCQUFxQixDQUFDbUIsU0FBUyxFQUFFNUUsR0FBRyxDQUFDO0lBQUE7RUFDaEUsQ0FBQyxFQUVEO0lBQ0V3RSxLQUFLLEVBQUUsNEJBQTRCO0lBQ25DNUIsRUFBRSxFQUFFLDJCQUEyQjtJQUMvQjZCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCRSxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBR0MsU0FBUztNQUFBLE9BQUssWUFBTSxDQUFDLENBQUM7SUFBQTtFQUNuQyxDQUFDLENBQ0Y7QUFDSCxDQUFDO0FBRUQsSUFBTUMsc0NBQXNDLEdBQUcsU0FBekNBLHNDQUFzQ0EsQ0FDMUNDLGlCQUFpQixFQUNqQkMsZUFBZSxFQUNaO0VBQ0h4RixnQkFBQyxDQUFDeUYsUUFBUSxDQUFDQyxFQUFFLENBQUNILGlCQUFpQixFQUFFLFdBQVcsRUFBRSxZQUFZO0lBQ3hEQyxlQUFlLENBQUNHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE9BQU87RUFDekMsQ0FBQyxDQUFDO0VBRUY1RixnQkFBQyxDQUFDeUYsUUFBUSxDQUFDQyxFQUFFLENBQUNILGlCQUFpQixFQUFFLFVBQVUsRUFBRSxZQUFZO0lBQ3ZEQyxlQUFlLENBQUNHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFDeEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLE9BQU8sRUFBRUMsU0FBUyxFQUFLO0VBQ2xELElBQUlDLGdCQUFnQixHQUFHbkIsUUFBUSxDQUFDb0IsYUFBYSxDQUFDLEtBQUssQ0FBQztFQUNwREQsZ0JBQWdCLENBQUNFLFNBQVMsR0FBRyxpQ0FBaUM7RUFDOURGLGdCQUFnQixDQUFDRyxTQUFTLDZDQUFBbEQsTUFBQSxDQUVMNkMsT0FBTyxDQUFDWixTQUFTLGNBQUFqQyxNQUFBLENBQVM2QyxPQUFPLENBQUN6QyxFQUFFLFlBQUFKLE1BQUEsQ0FBUTZDLE9BQU8sQ0FBQ2IsS0FBSywyQkFFM0U7RUFFSGUsZ0JBQWdCLENBQ2JsQixhQUFhLEtBQUE3QixNQUFBLENBQUs2QyxPQUFPLENBQUN6QyxFQUFFLENBQUUsQ0FBQyxDQUMvQitDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxVQUFVQyxDQUFDLEVBQUU7SUFDdkMsSUFBTWhCLFNBQVMsR0FBR2dCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDdkIsT0FBTztJQUNsQ2UsT0FBTyxDQUFDVixRQUFRLENBQUNDLFNBQVMsQ0FBQztFQUM3QixDQUFDLENBQUM7RUFFSlcsZ0JBQWdCLENBQUNMLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFDdkNHLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFUSxXQUFXLENBQUNQLGdCQUFnQixDQUFDO0VBRXhDVixzQ0FBc0MsQ0FBQ1MsU0FBUyxFQUFFQyxnQkFBZ0IsQ0FBQztBQUNyRSxDQUFDO0FBRU0sSUFBTVEsK0JBQStCLEdBQUF2SCxPQUFBLENBQUF1SCwrQkFBQSxHQUFHLFNBQWxDQSwrQkFBK0JBLENBQzFDL0YsR0FBRyxFQUNIZ0csUUFBUSxFQUlMO0VBQUEsSUFISDlCLFNBQVMsR0FBQStCLFNBQUEsQ0FBQXZHLE1BQUEsUUFBQXVHLFNBQUEsUUFBQWhHLFNBQUEsR0FBQWdHLFNBQUEsTUFBRyxJQUFJO0VBQUEsSUFDaEJDLElBQUksR0FBQUQsU0FBQSxDQUFBdkcsTUFBQSxPQUFBdUcsU0FBQSxNQUFBaEcsU0FBQTtFQUFBLElBQ0prRyxnQkFBZ0IsR0FBQUYsU0FBQSxDQUFBdkcsTUFBQSxPQUFBdUcsU0FBQSxNQUFBaEcsU0FBQTtFQUVoQixJQUFJbUcsVUFBVSxHQUFHN0csZ0JBQUMsQ0FBQzhGLE9BQU8sQ0FDdkJsRCxNQUFNLENBQUM2RCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFBRUssUUFBUSxFQUFFO0VBQWMsQ0FBQyxDQUFDLENBQ2pEQyxLQUFLLENBQUN0RyxHQUFHLENBQUM7RUFDYixJQUFJc0YsU0FBUyxHQUFHYyxVQUFVLENBQUNHLFlBQVksQ0FBQyxDQUFDO0VBRXpDLElBQUlKLGdCQUFnQixFQUFFO0lBQ3BCNUIsY0FBYyxDQUFDdkUsR0FBRyxDQUFDLENBQUN3RyxPQUFPLENBQUMsVUFBQ25CLE9BQU8sRUFBSztNQUN2QyxJQUFJQSxPQUFPLENBQUNYLFNBQVMsSUFBSVcsT0FBTyxDQUFDWCxTQUFTLENBQUNsRSxRQUFRLENBQUMwRixJQUFJLENBQUMsRUFBRTtNQUUzRGQsbUJBQW1CLENBQUNDLE9BQU8sRUFBRUMsU0FBUyxDQUFDO01BQ3ZDckIsa0JBQWtCLENBQUNDLFNBQVMsRUFBRWxFLEdBQUcsQ0FBQztJQUNwQyxDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFTSxJQUFNeUcsYUFBYSxHQUFBakksT0FBQSxDQUFBaUksYUFBQSxHQUFHLFNBQWhCQSxhQUFhQSxDQUN4QkMsWUFBWSxFQUNacEUsV0FBVyxFQUNYWSxvQkFBb0IsRUFDcEJ6RSxNQUFNLEVBQ05rSSxRQUFRLEVBQ1JqSSxXQUFXLEVBQ1hDLGNBQWMsRUFDZGlJLGVBQWUsRUFDZlQsZ0JBQWdCLEVBQ2hCVSxrQkFBa0IsRUFFZjtFQUFBLElBREhYLElBQUksR0FBQUQsU0FBQSxDQUFBdkcsTUFBQSxTQUFBdUcsU0FBQSxTQUFBaEcsU0FBQSxHQUFBZ0csU0FBQSxPQUFHLENBQUM7RUFFUjtFQUNBeEgsTUFBTSxDQUFDSSxPQUFPLEdBQUcsSUFBSVUsZ0JBQUMsQ0FBQ3VILEdBQUcsQ0FBQyxLQUFLLEVBQUU7SUFDaENDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZEMsUUFBUSxFQUFFLENBQUM7SUFDWEMsSUFBSSxFQUFFUCxZQUFZO0lBQ2xCUSxrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQyxDQUFDO0VBRUYsSUFBSWhCLGdCQUFnQixFQUFFUSxRQUFRLENBQUMsSUFBQVMsMEJBQU0sRUFBQzNJLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUM7RUFFdERKLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDd0ksU0FBUyxDQUFDLFlBQU07SUFDN0IsSUFBSXJILEdBQUcsR0FBR3ZCLE1BQU0sQ0FBQ0ksT0FBTztJQUN4QixJQUFNbUgsUUFBUSxHQUFHL0MsUUFBUSxDQUFDWCxXQUFXLEVBQUVZLG9CQUFvQixDQUFDO0lBRTVENkMsK0JBQStCLENBQzdCL0YsR0FBRyxFQUNIZ0csUUFBUSxFQUNSYSxrQkFBa0IsRUFDbEJYLElBQUksRUFDSkMsZ0JBQ0YsQ0FBQzs7SUFFRDtJQUNBOUcsTUFBTSxDQUFDaUksTUFBTSxDQUFDdEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNNLEtBQUssQ0FBQ3RHLEdBQUcsQ0FBQztJQUVyQ3VILFVBQVUsQ0FBQyxZQUFNO01BQ2YsSUFBSSxDQUFDOUksTUFBTSxDQUFDSSxPQUFPLEVBQUU7UUFDbkI7TUFDRjtNQUVBLElBQUk7UUFDRkosTUFBTSxDQUFDSSxPQUFPLENBQUMySSxjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3JDLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUU7UUFDWkMsT0FBTyxDQUFDQyxLQUFLLENBQUMsS0FBSyxFQUFFRixHQUFHLENBQUM7TUFDM0I7TUFFQWQsUUFBUSxDQUFDLElBQUFpQixpQkFBUSxFQUFDbkosTUFBTSxDQUFDSSxPQUFPLENBQUMsQ0FBQztNQUNsQzhILFFBQVEsQ0FBQyxJQUFBa0Isd0JBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztNQUUvQjdILEdBQUcsQ0FBQ2lGLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBQzZDLEtBQUssRUFBSztRQUMzQixJQUFJQSxLQUFLLENBQUNDLGFBQWEsQ0FBQ0MsR0FBRyxLQUFLLFFBQVEsRUFBRTtVQUN4Q2hJLEdBQUcsQ0FBQ2lJLFVBQVUsQ0FBQyxDQUFDO1VBQ2hCN0QsUUFBUSxDQUFDOEQsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQztRQUN2QjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDTCxJQUFJMUosTUFBTSxDQUFDSSxPQUFPLElBQUlILFdBQVcsQ0FBQ0MsY0FBYyxDQUFDLEVBQUU7TUFDakRGLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDQyxTQUFTLENBQUNILGNBQWMsQ0FBQztJQUMxQztFQUNGLENBQUMsQ0FBQztFQUVGRixNQUFNLENBQUNJLE9BQU8sQ0FBQ29HLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVVcsQ0FBQyxFQUFFO0lBQ3hDLElBQUksQ0FBQ25ILE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO01BQ25CO0lBQ0Y7SUFDQSxJQUFJb0ksSUFBSSxHQUFHeEksTUFBTSxDQUFDSSxPQUFPLENBQUN1SixPQUFPLENBQUMsQ0FBQztJQUNuQ3hCLGVBQWUsQ0FBQ0ssSUFBSSxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFTSxJQUFNb0IsbUJBQW1CLEdBQUE3SixPQUFBLENBQUE2SixtQkFBQSxHQUFHO0VBQ2pDQyxpQkFBaUIsRUFBRSxLQUFLO0VBQ3hCQyxtQkFBbUIsRUFBRSxLQUFLO0VBQzFCQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyx1QkFBdUIsRUFBRSxFQUFFO0VBQzNCQywwQkFBMEIsRUFBRSxLQUFLO0VBQ2pDQyxjQUFjLEVBQUUsSUFBSTtFQUNwQkMsa0JBQWtCLEVBQUUsU0FBcEJBLGtCQUFrQkEsQ0FBR0MsT0FBTyxFQUFLO0lBQy9CLE9BQU8sSUFBSXZKLGdCQUFDLENBQUN3SixPQUFPLENBQUM7TUFDbkJDLElBQUksZ0JBQUF4RyxNQUFBLENBQWdCc0csT0FBTyxDQUFDRyxXQUFXLG1FQUFBekcsTUFBQSxDQUNHWSxhQUFJLENBQUNDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBUTtNQUN0RW9DLFNBQVMsRUFBRSxnQkFBZ0I7TUFDM0IxRSxRQUFRLEVBQUUsSUFBSXhCLGdCQUFDLENBQUMySixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDOUIsQ0FBQyxDQUFDO0VBQ0o7QUFDRixDQUFDO0FBRU0sSUFBTUMsVUFBVSxHQUFBM0ssT0FBQSxDQUFBMkssVUFBQSxHQUFHO0VBQ3hCLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxPQUFPO0VBQ1YsQ0FBQyxFQUFFLE9BQU87RUFDVixDQUFDLEVBQUUsT0FBTztFQUNWLEVBQUUsRUFBRSxPQUFPO0VBQ1gsRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLE9BQU87RUFDWCxFQUFFLEVBQUU7QUFDTixDQUFDO0FBRU0sSUFBTUMsWUFBWSxHQUFBNUssT0FBQSxDQUFBNEssWUFBQSxHQUFHLFNBQWZBLFlBQVlBLENBQUl0SixNQUFNLEVBQUV1SixTQUFTO0VBQUEsT0FDNUN2SixNQUFNLENBQUN3SixNQUFNLENBQUMsVUFBQ0MsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsVUFBVSxLQUFLSCxTQUFTO0VBQUEsRUFBQztBQUFBO0FBRW5ELElBQU1JLFNBQVMsR0FBQWpMLE9BQUEsQ0FBQWlMLFNBQUEsR0FBRyxTQUFaQSxTQUFTQSxDQUFJM0osTUFBTSxFQUFFNEosT0FBTyxFQUFFQyxjQUFjO0VBQUEsT0FDdkQ3SixNQUFNLENBQUM4SixJQUFJLENBQUMsVUFBQ0wsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQzNHLEVBQUUsS0FBSzhHLE9BQU8sSUFBSUMsY0FBYyxDQUFDSixLQUFLLENBQUM7RUFBQSxFQUFDO0FBQUE7QUFFaEUsSUFBTU0sV0FBVyxHQUFBckwsT0FBQSxDQUFBcUwsV0FBQSxHQUFHLFNBQWRBLFdBQVdBLENBQUk5SixLQUFLLEVBQUVELE1BQU0sRUFBRWdLLFdBQVc7RUFBQSxPQUNwRC9KLEtBQUssQ0FBQ3VKLE1BQU0sQ0FBQyxVQUFDUyxJQUFJLEVBQUs7SUFDckIsSUFBTUMsV0FBVyxHQUFHUCxTQUFTLENBQUMzSixNQUFNLEVBQUVpSyxJQUFJLENBQUNFLGVBQWUsRUFBRSxVQUFDVixLQUFLO01BQUEsT0FDaEVPLFdBQVcsR0FDUFAsS0FBSyxDQUFDQyxVQUFVLElBQUlPLElBQUksQ0FBQ0csc0JBQXNCLEdBQy9DLENBQUNYLEtBQUssQ0FBQ1csc0JBQXNCO0lBQUEsQ0FDbkMsQ0FBQztJQUVELElBQU1DLFdBQVcsR0FBR1YsU0FBUyxDQUFDM0osTUFBTSxFQUFFaUssSUFBSSxDQUFDSyxlQUFlLEVBQUUsVUFBQ2IsS0FBSztNQUFBLE9BQ2hFTyxXQUFXLEdBQ1BDLElBQUksQ0FBQ0csc0JBQXNCLElBQUlGLFdBQVcsS0FBSy9KLFNBQVMsR0FDeEQsQ0FBQ3NKLEtBQUssQ0FBQ1csc0JBQXNCO0lBQUEsQ0FDbkMsQ0FBQztJQUVELE9BQU9GLFdBQVcsSUFBSUcsV0FBVztFQUNuQyxDQUFDLENBQUM7QUFBQTtBQUVHLElBQU1FLHFCQUFxQixHQUFBN0wsT0FBQSxDQUFBNkwscUJBQUEsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxRQUFRLEVBQUUzRixRQUFRLEVBQUs7RUFDM0QsSUFBTVIsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQ2lHLFFBQVEsQ0FBQztFQUNqRCxJQUFJbkcsUUFBUSxLQUFLLElBQUksRUFBRTtFQUN2QkEsUUFBUSxDQUFDd0IsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0lBQUEsT0FBTWhCLFFBQVEsQ0FBQ1IsUUFBUSxDQUFDRyxPQUFPLENBQUM7RUFBQSxFQUFDO0FBQ3ZFLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=