@kando-env/kando-ui 1.2.466-alpha.7 → 1.2.466-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/lib/Router.js +76 -37
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -24
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -26
  4. package/lib/Widgets/Map/GraphUtils.js +6 -4
  5. package/lib/Widgets/Map/Map.js +138 -99
  6. package/lib/Widgets/Map/MapUtils.js +101 -83
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +84 -57
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +25 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +5 -5
  11. package/lib/Widgets/Map/edges/Edge.js +74 -50
  12. package/lib/Widgets/Map/edges/Edges.js +24 -19
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +45 -24
  14. package/lib/Widgets/Map/events/Event.js +14 -15
  15. package/lib/Widgets/Map/events/EventIndicator.js +63 -66
  16. package/lib/Widgets/Map/events/EventPath.js +34 -33
  17. package/lib/Widgets/Map/events/EventUtils.js +78 -54
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +36 -27
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +39 -29
  21. package/lib/Widgets/Map/events/Snail.js +11 -10
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +79 -77
  23. package/lib/Widgets/Map/map/FloatingGraph.js +21 -24
  24. package/lib/Widgets/Map/map/GraphDateButton.js +20 -27
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -17
  27. package/lib/Widgets/Map/points/PointIcon.js +22 -23
  28. package/lib/Widgets/Map/points/PointMarker.js +88 -68
  29. package/lib/Widgets/Map/points/PointMarkers.js +36 -30
  30. package/lib/Widgets/Map/points/PointUtils.js +90 -76
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +43 -25
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +14 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +6 -4
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -28
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +4 -3
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +6 -4
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +9 -12
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +65 -33
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/CardLayout.js +20 -15
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +20 -15
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +10 -9
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +11 -13
  45. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +6 -4
  46. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
  47. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  48. package/lib/Widgets/MostPolluting/Factories/styles.js +6 -4
  49. package/lib/Widgets/MostPolluting/MostPolluting.js +34 -23
  50. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +32 -20
  51. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +5 -7
  52. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -7
  53. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.js +14 -20
  55. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +31 -36
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +54 -49
  57. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +40 -44
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  59. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +49 -53
  60. package/lib/Widgets/MostPolluting/models.js +1 -1
  61. package/lib/Widgets/MostPolluting/styles.js +6 -4
  62. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +6 -8
  63. package/lib/Widgets/PotentialImpactSummary/Icon.js +39 -30
  64. package/lib/Widgets/PotentialImpactSummary/index.js +28 -20
  65. package/lib/Widgets/PotentialImpactSummary/index.test.js +54 -48
  66. package/lib/Widgets/PotentialImpactSummary/styles.js +13 -8
  67. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  68. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +8 -10
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +18 -23
  70. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +31 -34
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -28
  72. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +38 -35
  73. package/lib/Widgets/QualitySummary/QualitySummary.js +14 -10
  74. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
  75. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  76. package/lib/Widgets/QualitySummary/styles.js +21 -24
  77. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +14 -12
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
  79. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +21 -26
  80. package/lib/Widgets/UtilityInformation/UtilityInformation.js +36 -23
  81. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  82. package/lib/Widgets/UtilityInformation/styles.js +31 -30
  83. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
  84. package/lib/assets/icons/TopNavbar/index.js +7 -7
  85. package/lib/assets/icons/TrendSvg.js +7 -7
  86. package/lib/assets/icons/index.js +16 -16
  87. package/lib/assets/icons/kandoStepper/index.js +7 -7
  88. package/lib/assets/icons/siteTypes/index.js +2 -2
  89. package/lib/components/ApplyButton/ApplyButton.js +11 -10
  90. package/lib/components/ApplyButton/index.js +4 -3
  91. package/lib/components/Backdrop/Backdrop.js +5 -7
  92. package/lib/components/ContentLoader/ContentLoader.js +10 -12
  93. package/lib/components/ContentLoader/index.js +2 -2
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
  95. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +9 -5
  96. package/lib/components/CustomInputs/DoubleTabs/styles.js +16 -21
  97. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +20 -12
  98. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -7
  99. package/lib/components/CustomInputs/Search/Search.js +60 -37
  100. package/lib/components/CustomInputs/Search/index.js +4 -3
  101. package/lib/components/CustomInputs/Select/Select.js +55 -38
  102. package/lib/components/CustomInputs/Select/Select.stories.js +10 -6
  103. package/lib/components/DamageType/DamageType.js +60 -35
  104. package/lib/components/DamageType/index.js +4 -3
  105. package/lib/components/DataLoaderError/DataLoaderError.js +7 -9
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +13 -11
  107. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +73 -72
  108. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -25
  109. package/lib/components/DischargeHeatmap/HighchartsOptions.js +16 -12
  110. package/lib/components/DischargeHeatmap/index.js +4 -3
  111. package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
  112. package/lib/components/DischargeHeatmap/popupText.js +12 -11
  113. package/lib/components/DischargeHeatmap/titles.js +6 -4
  114. package/lib/components/DischargeHeatmap/types.js +1 -1
  115. package/lib/components/ErrorBoundary.js +42 -27
  116. package/lib/components/Events/Events.js +48 -29
  117. package/lib/components/Events/index.js +4 -3
  118. package/lib/components/Graph/Graph.js +95 -74
  119. package/lib/components/Graph/index.js +4 -3
  120. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +24 -19
  121. package/lib/components/Header/Breadcrumbs/index.js +4 -3
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.js +28 -18
  123. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +9 -5
  124. package/lib/components/Header/DoubleTabs/styles.js +8 -5
  125. package/lib/components/Header/Header.js +3 -3
  126. package/lib/components/Header/Header.stories.js +9 -5
  127. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +36 -24
  128. package/lib/components/Header/InfoBar/InfoBar.js +102 -69
  129. package/lib/components/Header/InfoBar/Search/Control.js +10 -11
  130. package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -8
  131. package/lib/components/Header/InfoBar/Search/Search.js +24 -17
  132. package/lib/components/Header/InfoBar/Search/SearchContainer.js +35 -21
  133. package/lib/components/Header/InfoBar/Search/index.js +4 -3
  134. package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -36
  135. package/lib/components/Header/InfoBar/TimeFilter.js +17 -13
  136. package/lib/components/Header/InfoBar/types.js +1 -1
  137. package/lib/components/Header/KandoNavbar/KandoNavbar.js +93 -66
  138. package/lib/components/Header/KandoNavbar/index.js +4 -3
  139. package/lib/components/Header/Slideshow/Slideshow.js +91 -67
  140. package/lib/components/Header/Slideshow/index.js +4 -3
  141. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +5 -7
  142. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +24 -22
  143. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +17 -17
  144. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +42 -36
  145. package/lib/components/Header/Toolbar/Toolbar.js +76 -56
  146. package/lib/components/InfoBar/InfoBar.js +24 -10
  147. package/lib/components/InfoBar/InfoBar.stories.js +9 -5
  148. package/lib/components/KandoModal/KandoModal.js +40 -24
  149. package/lib/components/KandoModal/index.js +4 -3
  150. package/lib/components/Link.js +8 -9
  151. package/lib/components/Links/CustomRedirect/CustomRedirect.js +7 -10
  152. package/lib/components/Links/StyledLink/StyledLink.js +20 -17
  153. package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -12
  154. package/lib/components/LiveEvents/CarouselSlide.js +10 -11
  155. package/lib/components/LiveEvents/LiveEvents.js +6 -7
  156. package/lib/components/LiveEvents/index.js +4 -3
  157. package/lib/components/LoaderByPercent/LoaderByPercent.js +30 -37
  158. package/lib/components/Map/Map.js +25 -20
  159. package/lib/components/Map/index.js +4 -3
  160. package/lib/components/Modal/Modal.js +10 -10
  161. package/lib/components/NarrowHeader.js +32 -18
  162. package/lib/components/PointInfo/PointInfo.js +19 -20
  163. package/lib/components/PointInfo/index.js +4 -3
  164. package/lib/components/PopupModal/PopupModal.js +17 -13
  165. package/lib/components/PopupModal/PopupModal.stories.js +24 -17
  166. package/lib/components/Sector/Sector.js +40 -34
  167. package/lib/components/Sector/Sector.test.js +24 -24
  168. package/lib/components/Sector/SectorIconsNew.js +19 -26
  169. package/lib/components/Sector/index.js +4 -3
  170. package/lib/components/Sector/sectorIcons.js +5 -4
  171. package/lib/components/SevereEvent/Eta/Eta.js +54 -49
  172. package/lib/components/SevereEvent/Eta/styles.js +8 -11
  173. package/lib/components/SevereEvent/SevereEvent.js +35 -27
  174. package/lib/components/Spinner/Spinner.js +8 -8
  175. package/lib/components/Spinner/Spinner.stories.js +11 -6
  176. package/lib/components/Spinner/index.js +4 -3
  177. package/lib/components/Spinner/styles.js +16 -21
  178. package/lib/components/Tabs/Tabs.js +31 -18
  179. package/lib/components/Tabs/Tabs.stories.js +10 -6
  180. package/lib/components/Tabs/assets/index.js +6 -6
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +18 -13
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +45 -32
  183. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +34 -20
  184. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -3
  185. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +22 -17
  186. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +14 -13
  187. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -3
  188. package/lib/components/TimeRangeSelector/TimeRangeList.js +27 -24
  189. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +27 -17
  190. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -26
  191. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -6
  192. package/lib/components/TimeRangeSelector/constants.js +5 -3
  193. package/lib/components/TimeRangeSelector/index.js +4 -3
  194. package/lib/components/Toggle/Toggle.js +18 -11
  195. package/lib/components/Toggle/index.js +4 -3
  196. package/lib/components/TrendGraph/TrendGraph.js +42 -24
  197. package/lib/components/TrendGraph/index.js +4 -3
  198. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
  199. package/lib/components/TrendGraphNVL/index.js +4 -3
  200. package/lib/development-environment/index.js +13 -9
  201. package/lib/development-environment/mock/browser.js +5 -2
  202. package/lib/development-environment/mock/get.js +10 -8
  203. package/lib/development-environment/mock/handlers.js +3 -2
  204. package/lib/development-environment/mock/mockBus.js +5 -4
  205. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
  206. package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
  207. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
  208. package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
  209. package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
  210. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
  211. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
  212. package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
  213. package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
  214. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
  215. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
  216. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
  217. package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
  218. package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
  219. package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
  220. package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
  221. package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
  222. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
  223. package/lib/development-environment/togly/ToglyDashboard.js +23 -13
  224. package/lib/development-environment/togly/ToglyItem.js +31 -24
  225. package/lib/development-environment/togly/flags.js +1 -1
  226. package/lib/development-environment/togly/init.js +4 -4
  227. package/lib/development-environment/togly/macro.js +9 -13
  228. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  229. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  230. package/lib/hooks/useApi.js +56 -20
  231. package/lib/hooks/useApiWithDashboardQuery.js +43 -23
  232. package/lib/hooks/useClickOutside.js +5 -4
  233. package/lib/hooks/useInitializeHeaders.js +6 -6
  234. package/lib/hooks/useKandoFetch.js +31 -17
  235. package/lib/hooks/useMap.js +37 -25
  236. package/lib/hooks/useNavContext.js +26 -22
  237. package/lib/hooks/useQueryURL.js +3 -2
  238. package/lib/hooks/useRemoveExistingLayers.js +8 -7
  239. package/lib/hooks/useUpdateEventBodyTail.js +19 -14
  240. package/lib/hooks/useUserTimeZone.js +31 -34
  241. package/lib/hooks/useUserTimeZone.test.js +23 -19
  242. package/lib/hooks/useWindowSize.js +14 -7
  243. package/lib/index.js +13 -11
  244. package/lib/macros/getVersion.js +2 -2
  245. package/lib/models/IAction.js +1 -1
  246. package/lib/models/IAppState.js +1 -1
  247. package/lib/pages/AreaPage/AreaPage.js +68 -34
  248. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -15
  249. package/lib/pages/AreaPage/Dashboard/Dashboard.js +27 -25
  250. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +23 -14
  251. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
  254. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +6 -4
  255. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  256. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
  257. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +8 -5
  258. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -38
  259. package/lib/pages/CannyWidget/Feedback.js +16 -14
  260. package/lib/pages/CovidPage/CovidPage.js +16 -9
  261. package/lib/pages/CovidPage/components/Body.js +30 -26
  262. package/lib/pages/CovidPage/components/Map.js +40 -28
  263. package/lib/pages/CovidPage/components/Sidebar.js +16 -15
  264. package/lib/pages/CovidPage/components/Summary.js +29 -20
  265. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -26
  266. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -3
  267. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +76 -52
  268. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -3
  269. package/lib/pages/CovidPage/components/areas/Area.js +36 -24
  270. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -45
  271. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +36 -32
  272. package/lib/pages/CovidPage/components/areas/AreasList.js +42 -29
  273. package/lib/pages/CovidPage/components/areas/Sort.js +17 -12
  274. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  275. package/lib/pages/DashboardMap/AreaCard.js +27 -27
  276. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  277. package/lib/pages/DashboardMap/Capacity.js +77 -28
  278. package/lib/pages/DashboardMap/FactoryCard.js +24 -28
  279. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -6
  280. package/lib/pages/DashboardMap/List.js +65 -55
  281. package/lib/pages/DashboardMap/ListContext.js +19 -14
  282. package/lib/pages/DashboardMap/Loader.js +3 -3
  283. package/lib/pages/DashboardMap/SeverityBadge.js +24 -16
  284. package/lib/pages/DashboardMap/WWTPMap.js +71 -57
  285. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  286. package/lib/pages/DashboardMap/Widget.js +67 -48
  287. package/lib/pages/DashboardMap/index.js +4 -3
  288. package/lib/pages/DashboardMap/utils.js +60 -41
  289. package/lib/pages/EventsPage/Body/Body.js +12 -15
  290. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +20 -17
  291. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -16
  292. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +9 -10
  293. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +10 -13
  294. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +31 -22
  295. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -3
  296. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +38 -30
  297. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +23 -14
  298. package/lib/pages/EventsPage/EventsPage.js +17 -10
  299. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +40 -26
  300. package/lib/pages/EventsPage/events/MoreInfo.js +19 -18
  301. package/lib/pages/EventsPage/events/Sidebar.js +11 -14
  302. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +10 -9
  303. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +24 -19
  304. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +4 -3
  305. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +38 -31
  306. package/lib/pages/EventsPage/events/event_info/EventDetails.js +32 -34
  307. package/lib/pages/EventsPage/events/event_info/EventInfo.js +60 -50
  308. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  309. package/lib/pages/EventsPage/events/event_info/EventSection.js +21 -18
  310. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +39 -44
  311. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +50 -39
  312. package/lib/pages/EventsPage/events/event_info/Header/Header.js +7 -8
  313. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +34 -29
  314. package/lib/pages/EventsPage/events/event_info/Header/index.js +4 -3
  315. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +7 -6
  316. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +39 -30
  317. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +9 -6
  318. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +15 -14
  319. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +12 -9
  320. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +4 -3
  321. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +24 -23
  322. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +22 -13
  323. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +6 -7
  324. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +4 -3
  325. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -13
  326. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +28 -22
  327. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +4 -3
  328. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +10 -13
  329. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +9 -8
  330. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +4 -3
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +9 -9
  332. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +5 -4
  333. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +11 -13
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +5 -7
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +14 -11
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +6 -7
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +8 -9
  338. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +8 -9
  339. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +7 -8
  340. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +12 -13
  341. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +19 -18
  342. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  343. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +8 -9
  344. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +18 -19
  345. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +7 -6
  346. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +12 -13
  347. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +19 -23
  348. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +11 -12
  349. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +7 -8
  350. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +4 -3
  351. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +6 -4
  352. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +40 -25
  353. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +39 -30
  354. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +12 -13
  355. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +20 -17
  356. package/lib/pages/EventsPage/events/event_info/sources/Source.js +31 -27
  357. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +27 -22
  358. package/lib/pages/EventsPage/events/event_info/styles.js +15 -21
  359. package/lib/pages/EventsPage/events/events_list/EventItem.js +21 -18
  360. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  361. package/lib/pages/EventsPage/events/events_list/EventsList.js +136 -111
  362. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +58 -41
  363. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +135 -90
  364. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +73 -54
  365. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +44 -39
  366. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +41 -32
  367. package/lib/pages/EventsPage/events/events_list/Filter/SingleSelect.js +21 -19
  368. package/lib/pages/EventsPage/events/events_list/Sort.js +19 -14
  369. package/lib/pages/ImportFileWizard/FileUploadRespones.js +22 -14
  370. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -9
  371. package/lib/pages/ImportFileWizard/ImportFile.js +25 -21
  372. package/lib/pages/ImportFileWizard/ResponseBody.js +36 -26
  373. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -23
  374. package/lib/pages/ImportFileWizard/ValidationResponse.js +25 -23
  375. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
  376. package/lib/pages/ImportFileWizard/index.js +4 -3
  377. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -22
  378. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +44 -38
  379. package/lib/pages/ImportGisPage/importGisUtils.js +52 -43
  380. package/lib/pages/ImportGisProcess/index.js +18 -14
  381. package/lib/pages/ImportSiteProcess/index.js +18 -14
  382. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +13 -7
  383. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +20 -18
  384. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  385. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +60 -28
  386. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +12 -8
  387. package/lib/pages/NotificationsPage/Notification/Notification.js +13 -17
  388. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  389. package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
  390. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -6
  391. package/lib/pages/NotificationsPage/NotificationsPage.js +38 -19
  392. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  393. package/lib/pages/NotificationsPageV2/NotificationsPage.js +101 -72
  394. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +65 -95
  395. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +15 -13
  396. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +17 -19
  397. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +22 -18
  398. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +22 -18
  399. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +23 -19
  400. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +71 -82
  401. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +23 -19
  402. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -71
  403. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +94 -80
  404. package/lib/pages/NotificationsPageV2/notificationUtils.js +39 -40
  405. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  406. package/lib/pages/OldSitePage/OldSitePage.js +132 -56
  407. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +10 -6
  408. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  409. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -9
  410. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +19 -16
  411. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  412. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +19 -12
  413. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
  414. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  415. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
  416. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +64 -51
  417. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  418. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +54 -29
  419. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
  420. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  421. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  422. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  423. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +23 -27
  424. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +30 -28
  425. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  426. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  427. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -16
  428. package/lib/pages/OperationsPage/LeftPanel.js +55 -35
  429. package/lib/pages/OperationsPage/Map/Map.js +12 -12
  430. package/lib/pages/OperationsPage/Map/useMap.js +64 -52
  431. package/lib/pages/OperationsPage/OperationsContainerPage.js +59 -32
  432. package/lib/pages/OperationsPage/OperationsFilePage.js +12 -10
  433. package/lib/pages/OperationsPage/OperationsUtilityPage.js +6 -5
  434. package/lib/pages/OperationsPage/RightPanel.js +25 -22
  435. package/lib/pages/OperationsPage/index.js +4 -4
  436. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +60 -27
  437. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +25 -19
  438. package/lib/pages/PollutionRiskAssessment/FilterButton.js +10 -11
  439. package/lib/pages/PollutionRiskAssessment/Map.js +42 -38
  440. package/lib/pages/PollutionRiskAssessment/SearchButton.js +10 -11
  441. package/lib/pages/PollutionRiskAssessment/SearchField.js +40 -26
  442. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +16 -16
  443. package/lib/pages/PollutionRiskAssessment/UseCases.js +34 -32
  444. package/lib/pages/PollutionRiskAssessment/index.js +136 -76
  445. package/lib/pages/PollutionRiskAssessment/useMap.js +50 -34
  446. package/lib/pages/PollutionRiskAssessment/utils.js +7 -7
  447. package/lib/pages/ProfilePage/Container.js +4 -3
  448. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +40 -23
  449. package/lib/pages/ProfilePage/ProfilePage.js +205 -106
  450. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +34 -25
  451. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
  452. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -27
  453. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +119 -57
  454. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +23 -18
  455. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +13 -14
  456. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +45 -40
  457. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +24 -25
  458. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +19 -18
  459. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +18 -15
  460. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -3
  461. package/lib/pages/SamplingsPage/NavigationDropdown.js +31 -43
  462. package/lib/pages/SamplingsPage/NewSamplingAction.js +102 -75
  463. package/lib/pages/SamplingsPage/SamplingMobileModal.js +98 -124
  464. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +25 -23
  465. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +25 -36
  466. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +61 -36
  467. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +21 -16
  468. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -10
  469. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +193 -108
  470. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +54 -47
  471. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +39 -42
  472. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +39 -42
  473. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +28 -21
  474. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +6 -4
  475. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +7 -11
  476. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +53 -51
  477. package/lib/pages/SamplingsPage/SamplingsMobileList.js +31 -22
  478. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -25
  479. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -49
  480. package/lib/pages/SamplingsPage/index.js +3 -2
  481. package/lib/pages/SamplingsPage/samplingsPageUtils.js +83 -52
  482. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -7
  483. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
  484. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +16 -12
  485. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  486. package/lib/pages/SitePage/PollutionContributor/index.js +4 -3
  487. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  488. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  489. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -10
  490. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +24 -27
  491. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -12
  492. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +33 -37
  493. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  494. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +25 -15
  495. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +11 -14
  496. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  497. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +16 -18
  498. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +71 -58
  499. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  500. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +27 -15
  501. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
  502. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  503. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -10
  504. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +40 -30
  505. package/lib/pages/SitePage/SamplingParameters/body/index.js +4 -3
  506. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +12 -11
  507. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  508. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
  509. package/lib/pages/SitePage/SamplingParameters/dataParser.js +41 -32
  510. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  511. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  512. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  513. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -16
  514. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -13
  515. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
  516. package/lib/pages/SitePage/SitePage.js +76 -36
  517. package/lib/pages/UploadLabResult/index.js +16 -15
  518. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -27
  519. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +13 -8
  520. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +15 -11
  521. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +9 -5
  522. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +50 -47
  523. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +8 -11
  524. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +5 -4
  525. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +9 -6
  526. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +10 -11
  527. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  528. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +13 -16
  529. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -8
  530. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +4 -3
  531. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +30 -20
  532. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +40 -28
  533. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -15
  534. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +14 -7
  535. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -26
  536. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  537. package/lib/pages/WbeDashboard/GraphWrapper.js +35 -28
  538. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -16
  539. package/lib/pages/WbeDashboard/SearchInput.js +21 -15
  540. package/lib/pages/WbeDashboard/SummaryGraph.js +77 -50
  541. package/lib/pages/WbeDashboard/SummaryGraphModal.js +18 -20
  542. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  543. package/lib/pages/WbeDashboard/WbeDashboardPage.js +210 -147
  544. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -39
  545. package/lib/pages/WwtpPage/DashboardCard.js +21 -25
  546. package/lib/pages/WwtpPage/DischargePatternCard.js +25 -14
  547. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +11 -11
  548. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  549. package/lib/pages/WwtpPage/InletsCard/index.js +4 -3
  550. package/lib/pages/WwtpPage/Map.js +6 -6
  551. package/lib/pages/WwtpPage/OrganicCard.js +5 -4
  552. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +5 -4
  553. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +7 -8
  554. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  555. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +17 -20
  556. package/lib/pages/WwtpPage/PotentialSaving/index.js +4 -3
  557. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  558. package/lib/pages/WwtpPage/PredictionCard.js +5 -4
  559. package/lib/pages/WwtpPage/TrendCard.js +22 -20
  560. package/lib/pages/WwtpPage/UpgradeBox.js +5 -4
  561. package/lib/pages/WwtpPage/WwtpPage.js +8 -9
  562. package/lib/pages/WwtpPage/WwtpPageContainer.js +19 -23
  563. package/lib/pages/WwtpPage/index.js +4 -3
  564. package/lib/providers/Slideshow/SlideshowContext.js +10 -11
  565. package/lib/providers/Slideshow/SlideshowProvider.js +40 -22
  566. package/lib/providers/Slideshow/SlideshowRunner.js +21 -18
  567. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -7
  568. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -12
  569. package/lib/providers/UrlHistory/index.js +4 -4
  570. package/lib/providers/UrlHistory/useLastVisited.js +6 -5
  571. package/lib/react-app-env.d.js +1 -1
  572. package/lib/store/ImportGis/action.js +1 -1
  573. package/lib/store/ImportGis/actionTypes.js +5 -4
  574. package/lib/store/ImportGis/actionsCreator.js +5 -7
  575. package/lib/store/ImportGis/models/gisImports.js +1 -1
  576. package/lib/store/ImportGis/reducer.js +7 -9
  577. package/lib/store/WBE/actionTypes.js +3 -2
  578. package/lib/store/WBE/actions.js +1 -1
  579. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  580. package/lib/store/WBE/models/IWBE.js +1 -1
  581. package/lib/store/WBE/models/IWBEState.js +1 -1
  582. package/lib/store/WBE/reducer.js +8 -10
  583. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +15 -24
  584. package/lib/store/WWTPDashboard/types.js +1 -1
  585. package/lib/store/areas/actionTypes.js +7 -4
  586. package/lib/store/areas/actions.js +13 -7
  587. package/lib/store/areas/models/IArea.js +1 -1
  588. package/lib/store/areas/models/IAreasState.js +1 -1
  589. package/lib/store/areas/reducer.js +6 -8
  590. package/lib/store/context/actionTypes.js +5 -3
  591. package/lib/store/context/actions.js +3 -3
  592. package/lib/store/context/contextMiddlewares.js +18 -15
  593. package/lib/store/context/models/INavContext.js +1 -1
  594. package/lib/store/context/models/INavContextState.js +1 -1
  595. package/lib/store/context/reducer.js +8 -10
  596. package/lib/store/dashboard/dashboardSlice.js +11 -18
  597. package/lib/store/dashboard/periodType.js +1 -1
  598. package/lib/store/edges/actionTypes.js +9 -5
  599. package/lib/store/edges/actions.js +8 -4
  600. package/lib/store/edges/models/IEdge.js +1 -1
  601. package/lib/store/edges/models/IEdgesState.js +1 -1
  602. package/lib/store/edges/reducer.js +17 -13
  603. package/lib/store/events/actionTypes.js +33 -17
  604. package/lib/store/events/actions.js +7 -3
  605. package/lib/store/events/models/IEvent.js +1 -1
  606. package/lib/store/events/models/IEventsState.js +1 -1
  607. package/lib/store/events/models/ISource.js +1 -1
  608. package/lib/store/events/reducer.js +39 -28
  609. package/lib/store/filters/IFilter.js +1 -1
  610. package/lib/store/filters/IFilterItem.js +1 -1
  611. package/lib/store/global/actionTypes.js +21 -11
  612. package/lib/store/global/actions.js +6 -8
  613. package/lib/store/global/models/IGlobalState.js +1 -1
  614. package/lib/store/global/reducer.js +7 -9
  615. package/lib/store/permissions/permissionsSlice.js +9 -12
  616. package/lib/store/points/actionTypes.js +5 -3
  617. package/lib/store/points/actions.js +10 -6
  618. package/lib/store/points/models/IGeoPoint.js +1 -1
  619. package/lib/store/points/models/IGroup.js +1 -1
  620. package/lib/store/points/models/IIssue.js +1 -1
  621. package/lib/store/points/models/IPoint.js +1 -1
  622. package/lib/store/points/models/IPointsState.js +1 -1
  623. package/lib/store/points/reducer.js +5 -7
  624. package/lib/store/rootActionTypes.js +3 -2
  625. package/lib/store/rootActions.js +1 -1
  626. package/lib/store/rootReducer.js +10 -12
  627. package/lib/store/rootStore.js +6 -6
  628. package/lib/store/samplings/action.js +1 -1
  629. package/lib/store/samplings/actionTypes.js +5 -4
  630. package/lib/store/samplings/actionsCreator.js +1 -1
  631. package/lib/store/samplings/models/Samplings.js +1 -1
  632. package/lib/store/samplings/reducer.js +10 -10
  633. package/lib/styles/StylesLayout.js +6 -7
  634. package/lib/styles/theme/theme.js +26 -23
  635. package/lib/test/mocks/browser.js +5 -2
  636. package/lib/test/test-utils.js +9 -12
  637. package/lib/ui-kit/Alert/KandoAlert.js +6 -8
  638. package/lib/ui-kit/Button/Button.js +83 -129
  639. package/lib/ui-kit/Button/Button.test.js +33 -27
  640. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  641. package/lib/ui-kit/Checkbox/Checkbox.js +27 -34
  642. package/lib/ui-kit/ContentCard/ContentCard.js +20 -16
  643. package/lib/ui-kit/Dashboard/Dashboard.js +28 -29
  644. package/lib/ui-kit/Dashboard/index.js +4 -3
  645. package/lib/ui-kit/DropDown/DropDown.js +22 -23
  646. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  647. package/lib/ui-kit/DropDown/DropDownItem.js +25 -26
  648. package/lib/ui-kit/DropDown/DropdownToggle.js +10 -13
  649. package/lib/ui-kit/EmptyState/EmptyState.js +6 -7
  650. package/lib/ui-kit/HierarchyGraph/AutoFitTree.js +81 -69
  651. package/lib/ui-kit/HierarchyGraph/HierarchyGraph.js +167 -89
  652. package/lib/ui-kit/HierarchyGraph/LeafSign.js +7 -7
  653. package/lib/ui-kit/HierarchyGraph/MicroStackedBar.js +19 -17
  654. package/lib/ui-kit/HierarchyGraph/NodeIcon.js +8 -9
  655. package/lib/ui-kit/HierarchyGraph/NodeLayout.js +25 -22
  656. package/lib/ui-kit/HierarchyGraph/PollutionContributorNode.js +10 -11
  657. package/lib/ui-kit/HierarchyGraph/ScoreNode.js +9 -10
  658. package/lib/ui-kit/HierarchyGraph/index.js +4 -3
  659. package/lib/ui-kit/HierarchyGraph/utils.js +67 -57
  660. package/lib/ui-kit/IconAction/IconAction.js +8 -9
  661. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -47
  662. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +49 -58
  663. package/lib/ui-kit/InletsPie/InletsPie.js +16 -17
  664. package/lib/ui-kit/InletsPie/index.js +4 -3
  665. package/lib/ui-kit/InletsPie/options.js +9 -7
  666. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +38 -29
  667. package/lib/ui-kit/KandoFilter/KandoFilter.js +11 -10
  668. package/lib/ui-kit/KandoList/KandoList.js +12 -13
  669. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  670. package/lib/ui-kit/KandoTable/KandoTable.js +41 -48
  671. package/lib/ui-kit/KandoTable/KandoTable.test.js +27 -21
  672. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  673. package/lib/ui-kit/Layout/Layout.js +7 -8
  674. package/lib/ui-kit/MobileInput/MobileInput.js +50 -56
  675. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +17 -14
  676. package/lib/ui-kit/ModalConfirmation/index.js +3 -2
  677. package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -9
  678. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +9 -8
  679. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +22 -26
  680. package/lib/ui-kit/OrganicEvents/TextInfo.js +13 -17
  681. package/lib/ui-kit/OrganicEvents/index.js +4 -3
  682. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +11 -12
  683. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +21 -17
  684. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -3
  685. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +24 -21
  686. package/lib/ui-kit/ScoreGauge/constant.js +4 -3
  687. package/lib/ui-kit/ScoreGauge/index.js +4 -3
  688. package/lib/ui-kit/TimeLineChart/TrendChart.js +28 -25
  689. package/lib/ui-kit/TimeLineChart/index.js +4 -3
  690. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +11 -10
  691. package/lib/ui-kit/Tooltip/Tooltip.js +9 -15
  692. package/lib/ui-kit/index.js +8 -8
  693. package/lib/ui-kit/kandoStepper/KandoStepper.js +14 -13
  694. package/lib/ui-kit/siteName/SiteName.js +11 -13
  695. package/lib/utilities/ActionUtility.js +7 -7
  696. package/lib/utilities/Alert.js +20 -23
  697. package/lib/utilities/Analytics.js +19 -19
  698. package/lib/utilities/Array.js +5 -4
  699. package/lib/utilities/Enum.js +51 -15
  700. package/lib/utilities/ErrorBoundary.js +42 -27
  701. package/lib/utilities/File.js +73 -45
  702. package/lib/utilities/GetDir.js +10 -10
  703. package/lib/utilities/KandoDate.js +15 -7
  704. package/lib/utilities/KandoModal.js +28 -16
  705. package/lib/utilities/LocalStorage.js +7 -5
  706. package/lib/utilities/ThousandsToK.js +2 -2
  707. package/lib/utilities/TimeFormat.js +23 -22
  708. package/lib/utilities/Truncate.js +27 -17
  709. package/lib/utilities/edgesMath.js +16 -15
  710. package/lib/utilities/i18n.js +6 -5
  711. package/lib/utilities/kql.js +12 -10
  712. package/lib/utilities/map/icons.js +18 -18
  713. package/lib/utilities/polylinedecorator.js +113 -88
  714. package/lib/utilities/scoreToData.js +26 -20
  715. package/lib/utilities/scoreToData.test.js +5 -5
  716. package/lib/utilities/time.js +10 -9
  717. package/lib/utilities/uploadToS3.js +12 -12
  718. package/lib/utilities/urls.js +14 -17
  719. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
11
  var _react = _interopRequireWildcard(require("react"));
10
12
  var _reactBootstrap = require("react-bootstrap");
11
13
  var _Dropdown = _interopRequireDefault(require("react-bootstrap/Dropdown"));
@@ -20,58 +22,83 @@ require("./FilterStyle.scss");
20
22
  var _Filter = _interopRequireDefault(require("./Filter"));
21
23
  var _FiltersDropDown = _interopRequireDefault(require("./FiltersDropDown"));
22
24
  var _actionsCreator = require("store/samplings/actionsCreator");
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
27
  function mapStateToProps(state) {
24
- const {
25
- global_data,
26
- nav_context_data,
27
- points_data
28
- } = state;
28
+ var global_data = state.global_data,
29
+ nav_context_data = state.nav_context_data,
30
+ points_data = state.points_data;
29
31
  return {
30
- global_data,
31
- nav_context_data,
32
- points_data
32
+ global_data: global_data,
33
+ nav_context_data: nav_context_data,
34
+ points_data: points_data
33
35
  };
34
36
  }
35
- const FilterContainer = props => {
36
- const {
37
- global_data,
38
- nav_context_data,
39
- points_data,
40
- custom_points,
41
- filterPopupOpen,
42
- applyLogic,
43
- fetchType = 'EventFilters',
44
- resetFilter = null
45
- } = props;
46
- const dispatch = (0, _reactRedux.useDispatch)();
47
- const nameInput = (0, _react.useRef)(null);
48
- const filterContent = (0, _react.useRef)(null);
49
- const [filters, setFilters] = (0, _react.useState)([]);
50
- const [availableFilterItems, setAvailableFilterItems] = (0, _react.useState)([]);
51
- const [rendered, setRendered] = (0, _react.useState)(false);
52
- const [WaId, setWaId] = (0, _react.useState)();
37
+ var FilterContainer = function FilterContainer(props) {
38
+ var global_data = props.global_data,
39
+ nav_context_data = props.nav_context_data,
40
+ points_data = props.points_data,
41
+ custom_points = props.custom_points,
42
+ filterPopupOpen = props.filterPopupOpen,
43
+ applyLogic = props.applyLogic,
44
+ _props$fetchType = props.fetchType,
45
+ fetchType = _props$fetchType === void 0 ? 'EventFilters' : _props$fetchType,
46
+ _props$resetFilter = props.resetFilter,
47
+ resetFilter = _props$resetFilter === void 0 ? null : _props$resetFilter;
48
+ var dispatch = (0, _reactRedux.useDispatch)();
49
+ var nameInput = (0, _react.useRef)(null);
50
+ var filterContent = (0, _react.useRef)(null);
51
+ var _useState = (0, _react.useState)([]),
52
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
53
+ filters = _useState2[0],
54
+ setFilters = _useState2[1];
55
+ var _useState3 = (0, _react.useState)([]),
56
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
57
+ availableFilterItems = _useState4[0],
58
+ setAvailableFilterItems = _useState4[1];
59
+ var _useState5 = (0, _react.useState)(false),
60
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
61
+ rendered = _useState6[0],
62
+ setRendered = _useState6[1];
63
+ var _useState7 = (0, _react.useState)(),
64
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
65
+ WaId = _useState8[0],
66
+ setWaId = _useState8[1];
53
67
  //eslint-disable-next-line
54
- const [activeFilter, setActiveFilter] = (0, _react.useState)(undefined);
55
- const [defaultFilters, setDefaultFilters] = (0, _react.useState)({});
56
- const [activeFilterCopy, setActiveFilterCopy] = (0, _react.useState)(undefined);
68
+ var _useState9 = (0, _react.useState)(undefined),
69
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
70
+ activeFilter = _useState10[0],
71
+ setActiveFilter = _useState10[1];
72
+ var _useState11 = (0, _react.useState)({}),
73
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
74
+ defaultFilters = _useState12[0],
75
+ setDefaultFilters = _useState12[1];
76
+ var _useState13 = (0, _react.useState)(undefined),
77
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
78
+ activeFilterCopy = _useState14[0],
79
+ setActiveFilterCopy = _useState14[1];
57
80
  // @ts-ignore
58
- const csrf = document.querySelector("meta[name='csrf-token']").getAttribute('content');
59
- const useQuery = () => {
81
+ var csrf = document.querySelector("meta[name='csrf-token']").getAttribute('content');
82
+ var useQuery = function useQuery() {
60
83
  return new URLSearchParams((0, _reactRouterDom.useLocation)().search);
61
84
  };
62
- const history = (0, _reactRouterDom.useHistory)();
63
- const query = useQuery();
64
- const getKQLFromURL = () => {
85
+ var history = (0, _reactRouterDom.useHistory)();
86
+ var query = useQuery();
87
+ var getKQLFromURL = function getKQLFromURL() {
65
88
  return query.get('valuesFromKQL');
66
89
  };
67
- const handleResetFilter = () => {
68
- const defaultFiltersClone = JSON.parse(JSON.stringify(defaultFilters));
90
+ var handleResetFilter = function handleResetFilter() {
91
+ var defaultFiltersClone = JSON.parse(JSON.stringify(defaultFilters));
69
92
  resetFilter && resetFilter(defaultFiltersClone);
70
93
  setActiveFilterCopy(defaultFiltersClone);
71
94
  };
72
- const getPointsToFilters = (availableFilterItems, filters) => {
73
- let interestPointFilterItem = availableFilterItems.find(f => f.type === 'InterestPointFilterItem');
74
- let filteredPointsData = custom_points || points_data.items.filter(point => point.part_of_observation === true).map(point => {
95
+ var getPointsToFilters = function getPointsToFilters(availableFilterItems, filters) {
96
+ var interestPointFilterItem = availableFilterItems.find(function (f) {
97
+ return f.type === 'InterestPointFilterItem';
98
+ });
99
+ var filteredPointsData = custom_points || points_data.items.filter(function (point) {
100
+ return point.part_of_observation === true;
101
+ }).map(function (point) {
75
102
  return {
76
103
  id: point.id,
77
104
  name: point.group.name
@@ -80,8 +107,10 @@ const FilterContainer = props => {
80
107
  if (interestPointFilterItem !== undefined) {
81
108
  interestPointFilterItem.options = filteredPointsData;
82
109
  }
83
- filters.forEach(f => {
84
- let filterItem = f.filter_items.find(fi => fi.type === 'InterestPointFilterItem');
110
+ filters.forEach(function (f) {
111
+ var filterItem = f.filter_items.find(function (fi) {
112
+ return fi.type === 'InterestPointFilterItem';
113
+ });
85
114
  if (filterItem !== undefined) {
86
115
  filterItem.available_options = filteredPointsData;
87
116
  }
@@ -91,21 +120,25 @@ const FilterContainer = props => {
91
120
  }
92
121
  setFilters(filters);
93
122
  };
94
- const updateSiteToFilters = (availableFilterItems, filters) => {
95
- let siteFilterItem = availableFilterItems.find(f => f.type === 'SiteFilterItem');
96
- let filteredPointsData = custom_points;
123
+ var updateSiteToFilters = function updateSiteToFilters(availableFilterItems, filters) {
124
+ var siteFilterItem = availableFilterItems.find(function (f) {
125
+ return f.type === 'SiteFilterItem';
126
+ });
127
+ var filteredPointsData = custom_points;
97
128
  if (siteFilterItem !== undefined) {
98
129
  siteFilterItem.options = filteredPointsData;
99
130
  }
100
- filters.forEach(f => {
101
- let filterItem = f.filter_items.find(fi => fi.type === 'SiteFilterItem');
131
+ filters.forEach(function (f) {
132
+ var filterItem = f.filter_items.find(function (fi) {
133
+ return fi.type === 'SiteFilterItem';
134
+ });
102
135
  if (filterItem !== undefined) {
103
136
  filterItem.available_options = filteredPointsData;
104
137
  }
105
138
  });
106
139
  };
107
- const fetchEventFilters = function (preparedParams, method, url) {
108
- let filter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
140
+ var fetchEventFilters = function fetchEventFilters(preparedParams, method, url) {
141
+ var filter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
109
142
  if (csrf !== null) {
110
143
  fetch(url, {
111
144
  method: method,
@@ -115,30 +148,35 @@ const FilterContainer = props => {
115
148
  Accept: 'application/json'
116
149
  },
117
150
  body: JSON.stringify(preparedParams)
118
- }).then(response => response.json()).then(data => {
151
+ }).then(function (response) {
152
+ return response.json();
153
+ }).then(function (data) {
119
154
  getPointsToFilters(data.available_filter_items, data.filters);
120
155
  if (filter !== null) {
121
- let saved = data.filters.find(f => f.name === filter.name);
156
+ var saved = data.filters.find(function (f) {
157
+ return f.name === filter.name;
158
+ });
122
159
  setActiveFilter(saved);
123
160
  setActiveFilterCopy(saved);
124
161
  }
125
162
  });
126
163
  }
127
164
  };
128
- const deepClone = data => {
165
+ var deepClone = function deepClone(data) {
129
166
  return JSON.parse(JSON.stringify(data));
130
167
  };
131
- const {
132
- siteID,
133
- areaID
134
- } = (0, _reactRouterDom.useParams)();
135
- const getData = function () {
136
- let firstTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
137
- fetch("/ui_filters.json?water_authority_id=".concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType, "&valuesFromKQL=").concat(getKQLFromURL()).concat(siteID ? "&site_id=".concat(siteID) : '').concat(areaID ? "&area_id=".concat(areaID) : '')).then(response => response.json()).then(json => {
168
+ var _useParams = (0, _reactRouterDom.useParams)(),
169
+ siteID = _useParams.siteID,
170
+ areaID = _useParams.areaID;
171
+ var getData = function getData() {
172
+ var firstTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
173
+ fetch("/ui_filters.json?water_authority_id=".concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType, "&valuesFromKQL=").concat(getKQLFromURL()).concat(siteID ? "&site_id=".concat(siteID) : '').concat(areaID ? "&area_id=".concat(areaID) : '')).then(function (response) {
174
+ return response.json();
175
+ }).then(function (json) {
138
176
  getPointsToFilters(json.available_filter_items, json.filters);
139
- let jsonShallowCopy = Object.assign({}, json);
177
+ var jsonShallowCopy = Object.assign({}, json);
140
178
  jsonShallowCopy.filters = deepClone(jsonShallowCopy.filters);
141
- let active = jsonShallowCopy.displayed_filter;
179
+ var active = jsonShallowCopy.displayed_filter;
142
180
  if (global_data.selectedPeriod !== undefined && global_data.selectedPeriod !== null) {
143
181
  active.filter_items[1].selected_options = [global_data.selectedPeriod];
144
182
  }
@@ -150,21 +188,23 @@ const FilterContainer = props => {
150
188
  setActiveFilterCopy(active);
151
189
  }
152
190
  if (firstTime) {
153
- const defaultFiltersClone = JSON.parse(JSON.stringify(active));
191
+ var defaultFiltersClone = JSON.parse(JSON.stringify(active));
154
192
  setDefaultFilters(defaultFiltersClone);
155
193
  }
156
194
  applyFilter(active);
157
195
  });
158
196
  };
159
- const handleFilterChange = filter => {
197
+ var handleFilterChange = function handleFilterChange(filter) {
160
198
  setActiveFilter(deepClone(filter));
161
199
  setActiveFilterCopy(deepClone(filter));
162
200
  filterContent.current.click();
163
201
  };
164
- const saveActiveFilter = filter => {
165
- let clonedFilters = deepClone(filters);
166
- let filterToModifyIndex = clonedFilters.indexOf(clonedFilters.find(f => f.id === filter.id));
167
- let preparedParams = {
202
+ var saveActiveFilter = function saveActiveFilter(filter) {
203
+ var clonedFilters = deepClone(filters);
204
+ var filterToModifyIndex = clonedFilters.indexOf(clonedFilters.find(function (f) {
205
+ return f.id === filter.id;
206
+ }));
207
+ var preparedParams = {
168
208
  filter_type: fetchType,
169
209
  ui_filter: {
170
210
  name: filter.name,
@@ -182,27 +222,31 @@ const FilterContainer = props => {
182
222
  fetchEventFilters(preparedParams, 'POST', "/ui_filters?water_authority_id=".concat(global_data.waterAuthorityId), filter);
183
223
  }
184
224
  };
185
- const createFilter = (filter, name) => {
186
- let newFilter = {
225
+ var createFilter = function createFilter(filter, name) {
226
+ var newFilter = {
187
227
  id: -1,
188
228
  name: name,
189
229
  filter_items: filter.filter_items,
190
230
  is_active: false
191
231
  };
192
- setFilters([...filters, newFilter]);
232
+ setFilters([].concat((0, _toConsumableArray2.default)(filters), [newFilter]));
193
233
  setActiveFilterCopy(newFilter);
194
234
  setActiveFilter(newFilter);
195
235
  saveActiveFilter(newFilter);
196
236
  };
197
- const deleteFilter = filter => {
237
+ var deleteFilter = function deleteFilter(filter) {
198
238
  if (csrf !== null && filter.id !== -1) {
199
239
  fetch("/ui_filters/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType), {
200
240
  method: 'DELETE',
201
241
  headers: {
202
242
  'X-CSRF-Token': csrf
203
243
  }
204
- }).then(response => response.json()).then(data => {
205
- let active = data.filters.find(filter => filter.is_active === true);
244
+ }).then(function (response) {
245
+ return response.json();
246
+ }).then(function (data) {
247
+ var active = data.filters.find(function (filter) {
248
+ return filter.is_active === true;
249
+ });
206
250
  if (active !== undefined) {
207
251
  setFilters(data.filters);
208
252
  setActiveFilter(active);
@@ -220,21 +264,21 @@ const FilterContainer = props => {
220
264
  });
221
265
  }
222
266
  };
223
- const getEventIdFromURL = () => {
267
+ var getEventIdFromURL = function getEventIdFromURL() {
224
268
  return query.get('eventId');
225
269
  };
226
- const getWaIdFromURL = () => {
270
+ var getWaIdFromURL = function getWaIdFromURL() {
227
271
  return query.get('water_authority_id');
228
272
  };
229
- const getKQLValuesFromURL = () => {
273
+ var getKQLValuesFromURL = function getKQLValuesFromURL() {
230
274
  return query.get('valuesFromKQL');
231
275
  };
232
- const activateFilter = filter => {
276
+ var activateFilter = function activateFilter(filter) {
233
277
  fetchEventFilters({}, 'PUT', "/ui_filters/activate/".concat(filter.id, "?water_authority_id=").concat(global_data.waterAuthorityId, "&filter_type=").concat(fetchType), filter);
234
278
  };
235
- const applyFilter = function () {
236
- let filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeFilterCopy;
237
- let value = 'severity';
279
+ var applyFilter = function applyFilter() {
280
+ var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeFilterCopy;
281
+ var value = 'severity';
238
282
  if (nav_context_data.navContext.name === 'samplings-list') {
239
283
  value = 'newest';
240
284
  } else {
@@ -266,22 +310,22 @@ const FilterContainer = props => {
266
310
  isFetch: false
267
311
  }));
268
312
  };
269
- const handleCreationClick = () => {
313
+ var handleCreationClick = function handleCreationClick() {
270
314
  createFilter(activeFilterCopy, nameInput.current.value);
271
315
  nameInput.current.value = '';
272
316
  filterContent.current.click();
273
317
  };
274
- (0, _react.useEffect)(() => {
318
+ (0, _react.useEffect)(function () {
275
319
  setWaId(getWaIdFromURL());
276
320
  if (!rendered) {
277
321
  setRendered(true);
278
322
  getData(!rendered);
279
323
  } else {
280
324
  if (global_data.eventFilterParam === '' && filters.length !== 0) {
281
- let filter = filters.find(filter => {
325
+ var _filter = filters.find(function (filter) {
282
326
  return filter.is_active;
283
327
  });
284
- setActiveFilterCopy(filter);
328
+ setActiveFilterCopy(_filter);
285
329
  }
286
330
  }
287
331
  return function cleanup() {
@@ -327,7 +371,7 @@ const FilterContainer = props => {
327
371
  fill: "#1d1d1d"
328
372
  }), /*#__PURE__*/_react.default.createElement("span", null, _i18n.default.t('events_overview.filter.save.label'))), /*#__PURE__*/_react.default.createElement(_Dropdown.default.Menu, null, /*#__PURE__*/_react.default.createElement(_Dropdown.default.Item, {
329
373
  disabled: activeFilterCopy.id === -1 ? true : false,
330
- onClick: () => {
374
+ onClick: function onClick() {
331
375
  saveActiveFilter(activeFilterCopy);
332
376
  }
333
377
  }, _i18n.default.t('events_overview.filter.save.existing')), /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
@@ -344,7 +388,7 @@ const FilterContainer = props => {
344
388
  ref: nameInput,
345
389
  autoFocus: true
346
390
  }), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
347
- onClick: () => {
391
+ onClick: function onClick() {
348
392
  handleCreationClick();
349
393
  },
350
394
  variant: "success"
@@ -359,6 +403,7 @@ const FilterContainer = props => {
359
403
  resetFilter: resetFilter ? handleResetFilter : null
360
404
  }))));
361
405
  };
362
- const connector = (0, _reactRedux.connect)(mapStateToProps);
363
- var _default = exports.default = connector(FilterContainer);
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfRHJvcGRvd24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RSb3V0ZXJEb20iLCJfZGlza2V0dGUiLCJfbGlzdCIsIl9hY3Rpb25zIiwiX2kxOG4iLCJfa3FsIiwiX0ZpbHRlciIsIl9GaWx0ZXJzRHJvcERvd24iLCJfYWN0aW9uc0NyZWF0b3IiLCJtYXBTdGF0ZVRvUHJvcHMiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwibmF2X2NvbnRleHRfZGF0YSIsInBvaW50c19kYXRhIiwiRmlsdGVyQ29udGFpbmVyIiwicHJvcHMiLCJjdXN0b21fcG9pbnRzIiwiZmlsdGVyUG9wdXBPcGVuIiwiYXBwbHlMb2dpYyIsImZldGNoVHlwZSIsInJlc2V0RmlsdGVyIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIm5hbWVJbnB1dCIsInVzZVJlZiIsImZpbHRlckNvbnRlbnQiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsInVzZVN0YXRlIiwiYXZhaWxhYmxlRmlsdGVySXRlbXMiLCJzZXRBdmFpbGFibGVGaWx0ZXJJdGVtcyIsInJlbmRlcmVkIiwic2V0UmVuZGVyZWQiLCJXYUlkIiwic2V0V2FJZCIsImFjdGl2ZUZpbHRlciIsInNldEFjdGl2ZUZpbHRlciIsInVuZGVmaW5lZCIsImRlZmF1bHRGaWx0ZXJzIiwic2V0RGVmYXVsdEZpbHRlcnMiLCJhY3RpdmVGaWx0ZXJDb3B5Iiwic2V0QWN0aXZlRmlsdGVyQ29weSIsImNzcmYiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRBdHRyaWJ1dGUiLCJ1c2VRdWVyeSIsIlVSTFNlYXJjaFBhcmFtcyIsInVzZUxvY2F0aW9uIiwic2VhcmNoIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJxdWVyeSIsImdldEtRTEZyb21VUkwiLCJnZXQiLCJoYW5kbGVSZXNldEZpbHRlciIsImRlZmF1bHRGaWx0ZXJzQ2xvbmUiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJnZXRQb2ludHNUb0ZpbHRlcnMiLCJpbnRlcmVzdFBvaW50RmlsdGVySXRlbSIsImZpbmQiLCJmIiwidHlwZSIsImZpbHRlcmVkUG9pbnRzRGF0YSIsIml0ZW1zIiwiZmlsdGVyIiwicG9pbnQiLCJwYXJ0X29mX29ic2VydmF0aW9uIiwibWFwIiwiaWQiLCJuYW1lIiwiZ3JvdXAiLCJvcHRpb25zIiwiZm9yRWFjaCIsImZpbHRlckl0ZW0iLCJmaWx0ZXJfaXRlbXMiLCJmaSIsImF2YWlsYWJsZV9vcHRpb25zIiwidXBkYXRlU2l0ZVRvRmlsdGVycyIsInNpdGVGaWx0ZXJJdGVtIiwiZmV0Y2hFdmVudEZpbHRlcnMiLCJwcmVwYXJlZFBhcmFtcyIsIm1ldGhvZCIsInVybCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZldGNoIiwiaGVhZGVycyIsIkFjY2VwdCIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiZGF0YSIsImF2YWlsYWJsZV9maWx0ZXJfaXRlbXMiLCJzYXZlZCIsImRlZXBDbG9uZSIsInNpdGVJRCIsImFyZWFJRCIsInVzZVBhcmFtcyIsImdldERhdGEiLCJmaXJzdFRpbWUiLCJjb25jYXQiLCJ3YXRlckF1dGhvcml0eUlkIiwianNvblNoYWxsb3dDb3B5IiwiT2JqZWN0IiwiYXNzaWduIiwiYWN0aXZlIiwiZGlzcGxheWVkX2ZpbHRlciIsInNlbGVjdGVkUGVyaW9kIiwic2VsZWN0ZWRfb3B0aW9ucyIsImFjdGl2YXRlRmlsdGVyIiwiYXBwbHlGaWx0ZXIiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJjdXJyZW50IiwiY2xpY2siLCJzYXZlQWN0aXZlRmlsdGVyIiwiY2xvbmVkRmlsdGVycyIsImZpbHRlclRvTW9kaWZ5SW5kZXgiLCJpbmRleE9mIiwiZmlsdGVyX3R5cGUiLCJ1aV9maWx0ZXIiLCJpc19hY3RpdmUiLCJNYXRoIiwic2lnbiIsImNyZWF0ZUZpbHRlciIsIm5ld0ZpbHRlciIsImRlbGV0ZUZpbHRlciIsImdldEV2ZW50SWRGcm9tVVJMIiwiZ2V0V2FJZEZyb21VUkwiLCJnZXRLUUxWYWx1ZXNGcm9tVVJMIiwidmFsdWUiLCJuYXZDb250ZXh0IiwiaW5jbHVkZXMiLCJwdXNoIiwibG9jYWxlIiwiYnVpbGRLUUxRdWVyeSIsInNldEV2ZW50RmlsdGVyUGFyYW0iLCJzZXRBY3RpdmVGaWx0ZXJHbG9iYWxseSIsInNldFNhbXBsaW5nRGF0YSIsImN1cnJlbnRQYWdlIiwiaXNGZXRjaCIsImhhbmRsZUNyZWF0aW9uQ2xpY2siLCJ1c2VFZmZlY3QiLCJldmVudEZpbHRlclBhcmFtIiwiY2xlYW51cCIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwicmVmIiwiaTE4biIsInQiLCJUb2dnbGUiLCJ2YXJpYW50IiwiUmVhY3RDb21wb25lbnQiLCJoZWlnaHQiLCJ3aWR0aCIsImZpbGwiLCJNZW51IiwiSXRlbSIsImRpc2FibGVkIiwib25DbGljayIsIkZvcm1Db250cm9sIiwicGxhY2Vob2xkZXIiLCJhdXRvRm9jdXMiLCJCdXR0b24iLCJwYXJzZVNlbGVjdGVkSXRlbXMiLCJjb25uZWN0b3IiLCJjb25uZWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3BhZ2VzL0V2ZW50c1BhZ2UvZXZlbnRzL2V2ZW50c19saXN0L0ZpbHRlci9GaWx0ZXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24sIEZvcm1Db250cm9sIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdyZWFjdC1ib290c3RyYXAvRHJvcGRvd24nO1xuaW1wb3J0IHsgY29ubmVjdCwgQ29ubmVjdGVkUHJvcHMsIHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24sIHVzZVBhcmFtcyB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgU2F2ZUljb24gfSBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2Rpc2tldHRlLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBMaXN0SWNvbiB9IGZyb20gJ3NyYy9hc3NldHMvaWNvbnMvbGlzdC5zdmcnO1xuaW1wb3J0IHsgSUFwcFN0YXRlIH0gZnJvbSAnc3JjL21vZGVscy9JQXBwU3RhdGUnO1xuaW1wb3J0IHsgSUZpbHRlciB9IGZyb20gJ3NyYy9zdG9yZS9maWx0ZXJzL0lGaWx0ZXInO1xuaW1wb3J0IHsgSUZpbHRlckl0ZW0gfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVySXRlbSc7XG5pbXBvcnQge1xuICBzZXRBY3RpdmVGaWx0ZXJHbG9iYWxseSxcbiAgc2V0RXZlbnRGaWx0ZXJQYXJhbSxcbn0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgYnVpbGRLUUxRdWVyeSwgcGFyc2VTZWxlY3RlZEl0ZW1zIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9rcWwnO1xuaW1wb3J0ICcuL0ZpbHRlclN0eWxlLnNjc3MnO1xuaW1wb3J0IEZpbHRlciBmcm9tICcuL0ZpbHRlcic7XG5pbXBvcnQgRmlsdGVyc0Ryb3BEb3duIGZyb20gJy4vRmlsdGVyc0Ryb3BEb3duJztcbmltcG9ydCB7IHNldFNhbXBsaW5nRGF0YSB9IGZyb20gJ3NyYy9zdG9yZS9zYW1wbGluZ3MvYWN0aW9uc0NyZWF0b3InO1xuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBJQXBwU3RhdGUpIHtcbiAgY29uc3QgeyBnbG9iYWxfZGF0YSwgbmF2X2NvbnRleHRfZGF0YSwgcG9pbnRzX2RhdGEgfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgbmF2X2NvbnRleHRfZGF0YSxcbiAgICBwb2ludHNfZGF0YSxcbiAgfTtcbn1cblxudHlwZSBJUHJvcHMgPSBDb25uZWN0ZWRQcm9wczx0eXBlb2YgY29ubmVjdG9yPiAmIHtcbiAgZmlsdGVyUG9wdXBPcGVuOiBib29sZWFuO1xuICBmZXRjaFR5cGU6IHN0cmluZztcbiAgY3VzdG9tX3BvaW50cz86IGFueTtcbiAgYXBwbHlMb2dpYz86ICh2YWx1ZXM6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVzZXRGaWx0ZXI/OiAoZmlsdGVyKSA9PiB2b2lkO1xufTtcblxuY29uc3QgRmlsdGVyQ29udGFpbmVyOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBuYXZfY29udGV4dF9kYXRhLFxuICAgIHBvaW50c19kYXRhLFxuICAgIGN1c3RvbV9wb2ludHMsXG4gICAgZmlsdGVyUG9wdXBPcGVuLFxuICAgIGFwcGx5TG9naWMsXG4gICAgZmV0Y2hUeXBlID0gJ0V2ZW50RmlsdGVycycsXG4gICAgcmVzZXRGaWx0ZXIgPSBudWxsLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmFtZUlucHV0ID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBmaWx0ZXJDb250ZW50ID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlU3RhdGU8YW55PihbXSk7XG4gIGNvbnN0IFthdmFpbGFibGVGaWx0ZXJJdGVtcywgc2V0QXZhaWxhYmxlRmlsdGVySXRlbXNdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbcmVuZGVyZWQsIHNldFJlbmRlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW1dhSWQsIHNldFdhSWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4oKTtcbiAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgY29uc3QgW2FjdGl2ZUZpbHRlciwgc2V0QWN0aXZlRmlsdGVyXSA9IHVzZVN0YXRlPGFueT4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2RlZmF1bHRGaWx0ZXJzLCBzZXREZWZhdWx0RmlsdGVyc10gPSB1c2VTdGF0ZTxhbnk+KHt9KTtcbiAgY29uc3QgW2FjdGl2ZUZpbHRlckNvcHksIHNldEFjdGl2ZUZpbHRlckNvcHldID0gdXNlU3RhdGU8YW55Pih1bmRlZmluZWQpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNzcmYgPSBkb2N1bWVudFxuICAgIC5xdWVyeVNlbGVjdG9yKFwibWV0YVtuYW1lPSdjc3JmLXRva2VuJ11cIilcbiAgICAuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gIGNvbnN0IHVzZVF1ZXJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHVzZUxvY2F0aW9uKCkuc2VhcmNoKTtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeSgpO1xuICBjb25zdCBnZXRLUUxGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3ZhbHVlc0Zyb21LUUwnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZXNldEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0RmlsdGVyc0Nsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVycykpO1xuICAgIHJlc2V0RmlsdGVyICYmIHJlc2V0RmlsdGVyKGRlZmF1bHRGaWx0ZXJzQ2xvbmUpO1xuICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZGVmYXVsdEZpbHRlcnNDbG9uZSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UG9pbnRzVG9GaWx0ZXJzID0gKGF2YWlsYWJsZUZpbHRlckl0ZW1zOiBhbnksIGZpbHRlcnM6IGFueSkgPT4ge1xuICAgIGxldCBpbnRlcmVzdFBvaW50RmlsdGVySXRlbSA9IGF2YWlsYWJsZUZpbHRlckl0ZW1zLmZpbmQoXG4gICAgICAoZjogSUZpbHRlckl0ZW0pID0+IGYudHlwZSA9PT0gJ0ludGVyZXN0UG9pbnRGaWx0ZXJJdGVtJyxcbiAgICApO1xuICAgIGxldCBmaWx0ZXJlZFBvaW50c0RhdGEgPVxuICAgICAgY3VzdG9tX3BvaW50cyB8fFxuICAgICAgcG9pbnRzX2RhdGEuaXRlbXNcbiAgICAgICAgLmZpbHRlcigocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQucGFydF9vZl9vYnNlcnZhdGlvbiA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCgocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IGlkOiBwb2ludC5pZCwgbmFtZTogcG9pbnQuZ3JvdXAubmFtZSB9O1xuICAgICAgICB9KTtcblxuICAgIGlmIChpbnRlcmVzdFBvaW50RmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnRlcmVzdFBvaW50RmlsdGVySXRlbS5vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgIH1cblxuICAgIGZpbHRlcnMuZm9yRWFjaCgoZjogSUZpbHRlcikgPT4ge1xuICAgICAgbGV0IGZpbHRlckl0ZW0gPSBmLmZpbHRlcl9pdGVtcy5maW5kKFxuICAgICAgICAoZmk6IElGaWx0ZXJJdGVtKSA9PiBmaS50eXBlID09PSAnSW50ZXJlc3RQb2ludEZpbHRlckl0ZW0nLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZpbHRlckl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJJdGVtLmF2YWlsYWJsZV9vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjdXN0b21fcG9pbnRzKSB7XG4gICAgICB1cGRhdGVTaXRlVG9GaWx0ZXJzKGF2YWlsYWJsZUZpbHRlckl0ZW1zLCBmaWx0ZXJzKTtcbiAgICB9XG4gICAgc2V0RmlsdGVycyhmaWx0ZXJzKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVTaXRlVG9GaWx0ZXJzID0gKGF2YWlsYWJsZUZpbHRlckl0ZW1zOiBhbnksIGZpbHRlcnM6IGFueSkgPT4ge1xuICAgIGxldCBzaXRlRmlsdGVySXRlbSA9IGF2YWlsYWJsZUZpbHRlckl0ZW1zLmZpbmQoXG4gICAgICAoZjogSUZpbHRlckl0ZW0pID0+IGYudHlwZSA9PT0gJ1NpdGVGaWx0ZXJJdGVtJyxcbiAgICApO1xuICAgIGxldCBmaWx0ZXJlZFBvaW50c0RhdGEgPSBjdXN0b21fcG9pbnRzO1xuXG4gICAgaWYgKHNpdGVGaWx0ZXJJdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNpdGVGaWx0ZXJJdGVtLm9wdGlvbnMgPSBmaWx0ZXJlZFBvaW50c0RhdGE7XG4gICAgfVxuXG4gICAgZmlsdGVycy5mb3JFYWNoKChmOiBJRmlsdGVyKSA9PiB7XG4gICAgICBsZXQgZmlsdGVySXRlbSA9IGYuZmlsdGVyX2l0ZW1zLmZpbmQoXG4gICAgICAgIChmaTogSUZpbHRlckl0ZW0pID0+IGZpLnR5cGUgPT09ICdTaXRlRmlsdGVySXRlbScsXG4gICAgICApO1xuXG4gICAgICBpZiAoZmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZpbHRlckl0ZW0uYXZhaWxhYmxlX29wdGlvbnMgPSBmaWx0ZXJlZFBvaW50c0RhdGE7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hFdmVudEZpbHRlcnMgPSAoXG4gICAgcHJlcGFyZWRQYXJhbXM6IGFueSxcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBmaWx0ZXI6IGFueSA9IG51bGwsXG4gICkgPT4ge1xuICAgIGlmIChjc3JmICE9PSBudWxsKSB7XG4gICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICdYLUNTUkYtVG9rZW4nOiBjc3JmLFxuICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwcmVwYXJlZFBhcmFtcyksXG4gICAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBnZXRQb2ludHNUb0ZpbHRlcnMoZGF0YS5hdmFpbGFibGVfZmlsdGVyX2l0ZW1zLCBkYXRhLmZpbHRlcnMpO1xuXG4gICAgICAgICAgaWYgKGZpbHRlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHNhdmVkID0gZGF0YS5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgIChmOiBJRmlsdGVyKSA9PiBmLm5hbWUgPT09IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihzYXZlZCk7XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KHNhdmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWVwQ2xvbmUgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9O1xuXG4gIGNvbnN0IHsgc2l0ZUlELCBhcmVhSUQgfSA9IHVzZVBhcmFtcygpO1xuXG4gIGNvbnN0IGdldERhdGEgPSAoZmlyc3RUaW1lID0gZmFsc2UpID0+IHtcbiAgICBmZXRjaChcbiAgICAgIGAvdWlfZmlsdGVycy5qc29uP3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXG4gICAgICB9JmZpbHRlcl90eXBlPSR7ZmV0Y2hUeXBlfSZ2YWx1ZXNGcm9tS1FMPSR7Z2V0S1FMRnJvbVVSTCgpfSR7XG4gICAgICAgIHNpdGVJRCA/IGAmc2l0ZV9pZD0ke3NpdGVJRH1gIDogJydcbiAgICAgIH0ke2FyZWFJRCA/IGAmYXJlYV9pZD0ke2FyZWFJRH1gIDogJyd9YCxcbiAgICApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIGdldFBvaW50c1RvRmlsdGVycyhqc29uLmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMsIGpzb24uZmlsdGVycyk7XG5cbiAgICAgICAgbGV0IGpzb25TaGFsbG93Q29weSA9IE9iamVjdC5hc3NpZ24oe30sIGpzb24pO1xuICAgICAgICBqc29uU2hhbGxvd0NvcHkuZmlsdGVycyA9IGRlZXBDbG9uZShqc29uU2hhbGxvd0NvcHkuZmlsdGVycyk7XG4gICAgICAgIGxldCBhY3RpdmUgPSBqc29uU2hhbGxvd0NvcHkuZGlzcGxheWVkX2ZpbHRlcjtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZ2xvYmFsX2RhdGEuc2VsZWN0ZWRQZXJpb2QgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGdsb2JhbF9kYXRhLnNlbGVjdGVkUGVyaW9kICE9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGFjdGl2ZS5maWx0ZXJfaXRlbXNbMV0uc2VsZWN0ZWRfb3B0aW9ucyA9IFtcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLnNlbGVjdGVkUGVyaW9kLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RpdmF0ZUZpbHRlcihqc29uU2hhbGxvd0NvcHkuZmlsdGVyc1swXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0QXZhaWxhYmxlRmlsdGVySXRlbXMoanNvblNoYWxsb3dDb3B5LmF2YWlsYWJsZV9maWx0ZXJfaXRlbXMpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihhY3RpdmUpO1xuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoYWN0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlcnNDbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYWN0aXZlKSk7XG4gICAgICAgICAgc2V0RGVmYXVsdEZpbHRlcnMoZGVmYXVsdEZpbHRlcnNDbG9uZSk7XG4gICAgICAgIH1cblxuICAgICAgICBhcHBseUZpbHRlcihhY3RpdmUpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGZpbHRlcjogSUZpbHRlcikgPT4ge1xuICAgIHNldEFjdGl2ZUZpbHRlcihkZWVwQ2xvbmUoZmlsdGVyKSk7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShkZWVwQ2xvbmUoZmlsdGVyKSk7XG4gICAgZmlsdGVyQ29udGVudC5jdXJyZW50IS5jbGljaygpO1xuICB9O1xuXG4gIGNvbnN0IHNhdmVBY3RpdmVGaWx0ZXIgPSAoXG4gICAgZmlsdGVyOlxuICAgICAgfCBJRmlsdGVyXG4gICAgICB8IHtcbiAgICAgICAgICBpZDogbnVtYmVyO1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBmaWx0ZXJfaXRlbXM6IElGaWx0ZXJJdGVtW107XG4gICAgICAgICAgaXNfYWN0aXZlOiBib29sZWFuO1xuICAgICAgICB9LFxuICApID0+IHtcbiAgICBsZXQgY2xvbmVkRmlsdGVycyA9IGRlZXBDbG9uZShmaWx0ZXJzKTtcbiAgICBsZXQgZmlsdGVyVG9Nb2RpZnlJbmRleCA9IGNsb25lZEZpbHRlcnMuaW5kZXhPZihcbiAgICAgIGNsb25lZEZpbHRlcnMuZmluZCgoZjogYW55KSA9PiBmLmlkID09PSBmaWx0ZXIuaWQpLFxuICAgICk7XG4gICAgbGV0IHByZXBhcmVkUGFyYW1zID0ge1xuICAgICAgZmlsdGVyX3R5cGU6IGZldGNoVHlwZSxcbiAgICAgIHVpX2ZpbHRlcjoge1xuICAgICAgICBuYW1lOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgaXNfYWN0aXZlOiBmaWx0ZXIuaXNfYWN0aXZlLFxuICAgICAgICBmaWx0ZXJfaXRlbXM6IEpTT04uc3RyaW5naWZ5KGZpbHRlci5maWx0ZXJfaXRlbXMpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY2xvbmVkRmlsdGVyc1tmaWx0ZXJUb01vZGlmeUluZGV4XSA9IGZpbHRlcjtcbiAgICBzZXRGaWx0ZXJzKGNsb25lZEZpbHRlcnMpO1xuICAgIHNldEFjdGl2ZUZpbHRlcihmaWx0ZXIpO1xuICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZmlsdGVyKTtcblxuICAgIGlmIChNYXRoLnNpZ24oZmlsdGVyLmlkKSA+IDApIHtcbiAgICAgIGZldGNoRXZlbnRGaWx0ZXJzKFxuICAgICAgICBwcmVwYXJlZFBhcmFtcyxcbiAgICAgICAgJ1BVVCcsXG4gICAgICAgIGAvdWlfZmlsdGVycy8ke2ZpbHRlci5pZH0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH1gLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmZXRjaEV2ZW50RmlsdGVycyhcbiAgICAgICAgcHJlcGFyZWRQYXJhbXMsXG4gICAgICAgICdQT1NUJyxcbiAgICAgICAgYC91aV9maWx0ZXJzP3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9YCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlRmlsdGVyID0gKGZpbHRlcjogSUZpbHRlciwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgbGV0IG5ld0ZpbHRlciA9IHtcbiAgICAgIGlkOiAtMSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBmaWx0ZXJfaXRlbXM6IGZpbHRlci5maWx0ZXJfaXRlbXMsXG4gICAgICBpc19hY3RpdmU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBzZXRGaWx0ZXJzKFsuLi5maWx0ZXJzLCBuZXdGaWx0ZXJdKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KG5ld0ZpbHRlcik7XG4gICAgc2V0QWN0aXZlRmlsdGVyKG5ld0ZpbHRlcik7XG4gICAgc2F2ZUFjdGl2ZUZpbHRlcihuZXdGaWx0ZXIpO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUZpbHRlciA9IChmaWx0ZXI6IElGaWx0ZXIpID0+IHtcbiAgICBpZiAoY3NyZiAhPT0gbnVsbCAmJiBmaWx0ZXIuaWQgIT09IC0xKSB7XG4gICAgICBmZXRjaChcbiAgICAgICAgYC91aV9maWx0ZXJzLyR7ZmlsdGVyLmlkfT93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfSZmaWx0ZXJfdHlwZT0ke2ZldGNoVHlwZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBsZXQgYWN0aXZlID0gZGF0YS5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAoZmlsdGVyOiBJRmlsdGVyKSA9PiBmaWx0ZXIuaXNfYWN0aXZlID09PSB0cnVlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoYWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoZGF0YS5maWx0ZXJzKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihhY3RpdmUpO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShhY3RpdmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZGF0YS5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBnZXREYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkYXRhLmZpbHRlcnNbMF0uaXNfYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyKGRhdGEuZmlsdGVyc1swXSk7XG4gICAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZGF0YS5maWx0ZXJzWzBdKTtcbiAgICAgICAgICAgICAgc2V0RmlsdGVycyhkYXRhLmZpbHRlcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldEV2ZW50SWRGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ2V2ZW50SWQnKTtcbiAgfTtcblxuICBjb25zdCBnZXRXYUlkRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCd3YXRlcl9hdXRob3JpdHlfaWQnKTtcbiAgfTtcblxuICBjb25zdCBnZXRLUUxWYWx1ZXNGcm9tVVJMID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3ZhbHVlc0Zyb21LUUwnKTtcbiAgfTtcblxuICBjb25zdCBhY3RpdmF0ZUZpbHRlciA9IChmaWx0ZXI6IElGaWx0ZXIpID0+IHtcbiAgICBmZXRjaEV2ZW50RmlsdGVycyhcbiAgICAgIHt9LFxuICAgICAgJ1BVVCcsXG4gICAgICBgL3VpX2ZpbHRlcnMvYWN0aXZhdGUvJHtmaWx0ZXIuaWR9P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9JmZpbHRlcl90eXBlPSR7ZmV0Y2hUeXBlfWAsXG4gICAgICBmaWx0ZXIsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBhcHBseUZpbHRlciA9IChmaWx0ZXIgPSBhY3RpdmVGaWx0ZXJDb3B5KSA9PiB7XG4gICAgbGV0IHZhbHVlID0gJ3NldmVyaXR5JztcblxuICAgIGlmIChuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZSA9PT0gJ3NhbXBsaW5ncy1saXN0Jykge1xuICAgICAgdmFsdWUgPSAnbmV3ZXN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGdldEtRTFZhbHVlc0Zyb21VUkwoKSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnT1JERVJfQlknKSAmJlxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ25ld2VzdCcpXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gJ25ld2VzdCc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnT1JERVJfQlknKSAmJlxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ29sZGVzdCcpXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gJ29sZGVzdCc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZ2V0S1FMVmFsdWVzRnJvbVVSTCgpIS5pbmNsdWRlcygnT1JERVJfQlknKSAmJlxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ3NldmVyaXR5JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdmFsdWUgPSAnc2V2ZXJpdHknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lID09PSAnZXZlbnRzX3ZpZXcnKSB7XG4gICAgICBoaXN0b3J5LnB1c2goXG4gICAgICAgIGAvJHtuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZX0vaW5kZXg/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgICB9JmxvY2FsZT0ke1xuICAgICAgICAgIG5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGVcbiAgICAgICAgfSZldmVudElkPSR7Z2V0RXZlbnRJZEZyb21VUkwoKX0mdmFsdWVzRnJvbUtRTD0ke2J1aWxkS1FMUXVlcnkoXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICApfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZSA9PT0gJ3NhbXBsaW5ncy1saXN0Jykge1xuICAgICAgaGlzdG9yeS5wdXNoKFxuICAgICAgICBgLyR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWV9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgfSZsb2NhbGU9JHtcbiAgICAgICAgICBuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlXG4gICAgICAgIH0mdmFsdWVzRnJvbUtRTD0ke2J1aWxkS1FMUXVlcnkoZmlsdGVyLCB2YWx1ZSl9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChhcHBseUxvZ2ljICE9PSB1bmRlZmluZWQpIGFwcGx5TG9naWMoYnVpbGRLUUxRdWVyeShmaWx0ZXIsIHZhbHVlKSk7XG4gICAgfVxuICAgIGlmIChmZXRjaFR5cGUgPT09ICdIaWVyYXJjaHlGaWx0ZXInKSB7XG4gICAgICBhcHBseUxvZ2ljKGZpbHRlcik7XG4gICAgfVxuXG4gICAgZGlzcGF0Y2goc2V0RXZlbnRGaWx0ZXJQYXJhbShidWlsZEtRTFF1ZXJ5KGZpbHRlciwgdmFsdWUpKSk7XG4gICAgZGlzcGF0Y2goc2V0QWN0aXZlRmlsdGVyR2xvYmFsbHkoZmlsdGVyKSk7XG4gICAgLy8gQWx3YXlzIHJlc2V0IHBhZ2UgdG8gMSB3aGVuIGEgbmV3IGZpbHRlciBpcyBhcHBsaWVkXG4gICAgZGlzcGF0Y2goc2V0U2FtcGxpbmdEYXRhKHsgY3VycmVudFBhZ2U6IDEsIGlzRmV0Y2g6IGZhbHNlIH0pKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDcmVhdGlvbkNsaWNrID0gKCkgPT4ge1xuICAgIGNyZWF0ZUZpbHRlcihhY3RpdmVGaWx0ZXJDb3B5LCBuYW1lSW5wdXQuY3VycmVudCEudmFsdWUpO1xuICAgIG5hbWVJbnB1dC5jdXJyZW50IS52YWx1ZSA9ICcnO1xuICAgIGZpbHRlckNvbnRlbnQuY3VycmVudCEuY2xpY2soKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFdhSWQoZ2V0V2FJZEZyb21VUkwoKSk7XG4gICAgaWYgKCFyZW5kZXJlZCkge1xuICAgICAgc2V0UmVuZGVyZWQodHJ1ZSk7XG4gICAgICBnZXREYXRhKCFyZW5kZXJlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtID09PSAnJyAmJiBmaWx0ZXJzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBsZXQgZmlsdGVyID0gZmlsdGVycy5maW5kKChmaWx0ZXI6IElGaWx0ZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyLmlzX2FjdGl2ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBzZXRSZW5kZXJlZChmYWxzZSk7XG4gICAgfTtcbiAgfSwgW2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsIFdhSWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGZpbHRlci1jb250YWluZXIgJHtcbiAgICAgICAgZmlsdGVyUG9wdXBPcGVuID8gJycgOiAnZmlsdGVyLWNvbnRhaW5lci0taGlkZGVuJ1xuICAgICAgfWB9XG4gICAgPlxuICAgICAge2FjdGl2ZUZpbHRlckNvcHkgIT09IHVuZGVmaW5lZCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmlsdGVyLWNvbnRhaW5lcl9fY29udGVudCd9IHJlZj17ZmlsdGVyQ29udGVudH0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmaWx0ZXItY29udGFpbmVyX19jb250ZW50X19oZWFkZXInfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGl0bGUnfT5cbiAgICAgICAgICAgICAgPGg0PntpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuZmlsdGVyJyl9PC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2FjdGlvbnMnfT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duIGNsYXNzTmFtZT17J2FjdGlvbid9PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bi5Ub2dnbGUgdmFyaWFudD1cInN1Y2Nlc3NcIiBpZD1cImRyb3Bkb3duLWJhc2ljXCI+XG4gICAgICAgICAgICAgICAgICA8TGlzdEljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHJlc2V0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxZDFkMWRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIHthY3RpdmVGaWx0ZXJDb3B5Lm5hbWV9eycgJ31cbiAgICAgICAgICAgICAgICAgIHthY3RpdmVGaWx0ZXJDb3B5LmlkID09PSAtMSA/IChcbiAgICAgICAgICAgICAgICAgICAgPGI+ICh7aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLnVuc2F2ZWQnKX0pIDwvYj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uVG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgPEZpbHRlcnNEcm9wRG93blxuICAgICAgICAgICAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbHRlckNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlRmlsdGVyQ29weT17YWN0aXZlRmlsdGVyQ29weX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2YXRlRmlsdGVyPXthY3RpdmF0ZUZpbHRlcn1cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZUZpbHRlcj17ZGVsZXRlRmlsdGVyfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd24+XG5cbiAgICAgICAgICAgICAgPERyb3Bkb3duIGNsYXNzTmFtZT17J2FjdGlvbid9PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bi5Ub2dnbGUgdmFyaWFudD1cInN1Y2Nlc3NcIiBpZD1cImRyb3Bkb3duLWJhc2ljXCI+XG4gICAgICAgICAgICAgICAgICA8U2F2ZUljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2F2ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNweFwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTNweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMWQxZDFkXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLnNhdmUubGFiZWwnKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5Ub2dnbGU+XG5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd24uTWVudT5cbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXthY3RpdmVGaWx0ZXJDb3B5LmlkID09PSAtMSA/IHRydWUgOiBmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNhdmVBY3RpdmVGaWx0ZXIoYWN0aXZlRmlsdGVyQ29weSk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5leGlzdGluZycpfVxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duIGNsYXNzTmFtZT17J2FjdGlvbiBhY3Rpb24tLXNhdmUnfT5cbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLlRvZ2dsZSB2YXJpYW50PVwic3VjY2Vzc1wiIGlkPVwiZHJvcGRvd24tYmFzaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLnNhdmUubmV3Jyl9XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uVG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbmV3LWZpbHRlci1wb3B1cCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50c19vdmVydmlldy5maWx0ZXIuc2F2ZS5maWVsZF9wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJOYW1lIHRoaXMgZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImJhc2ljLWFkZG9uMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bmFtZUlucHV0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDcmVhdGlvbkNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGV2aWNlX2hlYWx0aF9zdGF0dXMub2snKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLk1lbnU+XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uTWVudT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydmaWx0ZXItY29udGFpbmVyX19jb250ZW50X19ib2R5J30+XG4gICAgICAgICAgICA8RmlsdGVyXG4gICAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHk9e3NldEFjdGl2ZUZpbHRlckNvcHl9XG4gICAgICAgICAgICAgIGFjdGl2ZUZpbHRlckNvcHk9e2FjdGl2ZUZpbHRlckNvcHl9XG4gICAgICAgICAgICAgIGF2YWlsYWJsZUZpbHRlckl0ZW1zPXthdmFpbGFibGVGaWx0ZXJJdGVtc31cbiAgICAgICAgICAgICAgcGFyc2VTZWxlY3RlZEl0ZW1zPXtwYXJzZVNlbGVjdGVkSXRlbXN9XG4gICAgICAgICAgICAgIGFwcGx5RmlsdGVyPXthcHBseUZpbHRlcn1cbiAgICAgICAgICAgICAgcmVzZXRGaWx0ZXI9e3Jlc2V0RmlsdGVyID8gaGFuZGxlUmVzZXRGaWx0ZXIgOiBudWxsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgY29ubmVjdG9yID0gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMpO1xuZXhwb3J0IGRlZmF1bHQgY29ubmVjdG9yKEZpbHRlckNvbnRhaW5lcik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQXNFLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUFBLElBQUFPLEtBQUEsR0FBQVAsT0FBQTtBQU10RSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFLQSxJQUFBUyxLQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxJQUFBLEdBQUFWLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFXLE9BQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLGdCQUFBLEdBQUFULHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBYSxlQUFBLEdBQUFiLE9BQUE7QUFDQSxTQUFTYyxlQUFlQSxDQUFDQyxLQUFnQixFQUFFO0VBQ3pDLE1BQU07SUFBRUMsV0FBVztJQUFFQyxnQkFBZ0I7SUFBRUM7RUFBWSxDQUFDLEdBQUdILEtBQUs7RUFFNUQsT0FBTztJQUNMQyxXQUFXO0lBQ1hDLGdCQUFnQjtJQUNoQkM7RUFDRixDQUFDO0FBQ0g7QUFVQSxNQUFNQyxlQUFpQyxHQUFJQyxLQUFLLElBQUs7RUFDbkQsTUFBTTtJQUNKSixXQUFXO0lBQ1hDLGdCQUFnQjtJQUNoQkMsV0FBVztJQUNYRyxhQUFhO0lBQ2JDLGVBQWU7SUFDZkMsVUFBVTtJQUNWQyxTQUFTLEdBQUcsY0FBYztJQUMxQkMsV0FBVyxHQUFHO0VBQ2hCLENBQUMsR0FBR0wsS0FBSztFQUNULE1BQU1NLFFBQVEsR0FBRyxJQUFBQyx1QkFBVyxFQUFDLENBQUM7RUFDOUIsTUFBTUMsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBbUIsSUFBSSxDQUFDO0VBQ2hELE1BQU1DLGFBQWEsR0FBRyxJQUFBRCxhQUFNLEVBQWlCLElBQUksQ0FBQztFQUNsRCxNQUFNLENBQUNFLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFNLEVBQUUsQ0FBQztFQUMvQyxNQUFNLENBQUNDLG9CQUFvQixFQUFFQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUFGLGVBQVEsRUFBQyxFQUFFLENBQUM7RUFDcEUsTUFBTSxDQUFDRyxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHLElBQUFKLGVBQVEsRUFBQyxLQUFLLENBQUM7RUFDL0MsTUFBTSxDQUFDSyxJQUFJLEVBQUVDLE9BQU8sQ0FBQyxHQUFHLElBQUFOLGVBQVEsRUFBZ0IsQ0FBQztFQUNqRDtFQUNBLE1BQU0sQ0FBQ08sWUFBWSxFQUFFQyxlQUFlLENBQUMsR0FBRyxJQUFBUixlQUFRLEVBQU1TLFNBQVMsQ0FBQztFQUNoRSxNQUFNLENBQUNDLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBRyxJQUFBWCxlQUFRLEVBQU0sQ0FBQyxDQUFDLENBQUM7RUFDN0QsTUFBTSxDQUFDWSxnQkFBZ0IsRUFBRUMsbUJBQW1CLENBQUMsR0FBRyxJQUFBYixlQUFRLEVBQU1TLFNBQVMsQ0FBQztFQUN4RTtFQUNBLE1BQU1LLElBQUksR0FBR0MsUUFBUSxDQUNsQkMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQ3hDQyxZQUFZLENBQUMsU0FBUyxDQUFDO0VBQzFCLE1BQU1DLFFBQVEsR0FBR0EsQ0FBQSxLQUFNO0lBQ3JCLE9BQU8sSUFBSUMsZUFBZSxDQUFDLElBQUFDLDJCQUFXLEVBQUMsQ0FBQyxDQUFDQyxNQUFNLENBQUM7RUFDbEQsQ0FBQztFQUNELE1BQU1DLE9BQU8sR0FBRyxJQUFBQywwQkFBVSxFQUFDLENBQUM7RUFDNUIsTUFBTUMsS0FBSyxHQUFHTixRQUFRLENBQUMsQ0FBQztFQUN4QixNQUFNTyxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQixPQUFPRCxLQUFLLENBQUNFLEdBQUcsQ0FBQyxlQUFlLENBQUM7RUFDbkMsQ0FBQztFQUVELE1BQU1DLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUIsTUFBTUMsbUJBQW1CLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLFNBQVMsQ0FBQ3JCLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFbEIsV0FBVyxJQUFJQSxXQUFXLENBQUNvQyxtQkFBbUIsQ0FBQztJQUMvQ2YsbUJBQW1CLENBQUNlLG1CQUFtQixDQUFDO0VBQzFDLENBQUM7RUFFRCxNQUFNSSxrQkFBa0IsR0FBR0EsQ0FBQy9CLG9CQUF5QixFQUFFSCxPQUFZLEtBQUs7SUFDdEUsSUFBSW1DLHVCQUF1QixHQUFHaEMsb0JBQW9CLENBQUNpQyxJQUFJLENBQ3BEQyxDQUFjLElBQUtBLENBQUMsQ0FBQ0MsSUFBSSxLQUFLLHlCQUNqQyxDQUFDO0lBQ0QsSUFBSUMsa0JBQWtCLEdBQ3BCakQsYUFBYSxJQUNiSCxXQUFXLENBQUNxRCxLQUFLLENBQ2RDLE1BQU0sQ0FBRUMsS0FBYSxJQUFLQSxLQUFLLENBQUNDLG1CQUFtQixLQUFLLElBQUksQ0FBQyxDQUM3REMsR0FBRyxDQUFFRixLQUFhLElBQUs7TUFDdEIsT0FBTztRQUFFRyxFQUFFLEVBQUVILEtBQUssQ0FBQ0csRUFBRTtRQUFFQyxJQUFJLEVBQUVKLEtBQUssQ0FBQ0ssS0FBSyxDQUFDRDtNQUFLLENBQUM7SUFDakQsQ0FBQyxDQUFDO0lBRU4sSUFBSVgsdUJBQXVCLEtBQUt4QixTQUFTLEVBQUU7TUFDekN3Qix1QkFBdUIsQ0FBQ2EsT0FBTyxHQUFHVCxrQkFBa0I7SUFDdEQ7SUFFQXZDLE9BQU8sQ0FBQ2lELE9BQU8sQ0FBRVosQ0FBVSxJQUFLO01BQzlCLElBQUlhLFVBQVUsR0FBR2IsQ0FBQyxDQUFDYyxZQUFZLENBQUNmLElBQUksQ0FDakNnQixFQUFlLElBQUtBLEVBQUUsQ0FBQ2QsSUFBSSxLQUFLLHlCQUNuQyxDQUFDO01BRUQsSUFBSVksVUFBVSxLQUFLdkMsU0FBUyxFQUFFO1FBQzVCdUMsVUFBVSxDQUFDRyxpQkFBaUIsR0FBR2Qsa0JBQWtCO01BQ25EO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsSUFBSWpELGFBQWEsRUFBRTtNQUNqQmdFLG1CQUFtQixDQUFDbkQsb0JBQW9CLEVBQUVILE9BQU8sQ0FBQztJQUNwRDtJQUNBQyxVQUFVLENBQUNELE9BQU8sQ0FBQztFQUNyQixDQUFDO0VBRUQsTUFBTXNELG1CQUFtQixHQUFHQSxDQUFDbkQsb0JBQXlCLEVBQUVILE9BQVksS0FBSztJQUN2RSxJQUFJdUQsY0FBYyxHQUFHcEQsb0JBQW9CLENBQUNpQyxJQUFJLENBQzNDQyxDQUFjLElBQUtBLENBQUMsQ0FBQ0MsSUFBSSxLQUFLLGdCQUNqQyxDQUFDO0lBQ0QsSUFBSUMsa0JBQWtCLEdBQUdqRCxhQUFhO0lBRXRDLElBQUlpRSxjQUFjLEtBQUs1QyxTQUFTLEVBQUU7TUFDaEM0QyxjQUFjLENBQUNQLE9BQU8sR0FBR1Qsa0JBQWtCO0lBQzdDO0lBRUF2QyxPQUFPLENBQUNpRCxPQUFPLENBQUVaLENBQVUsSUFBSztNQUM5QixJQUFJYSxVQUFVLEdBQUdiLENBQUMsQ0FBQ2MsWUFBWSxDQUFDZixJQUFJLENBQ2pDZ0IsRUFBZSxJQUFLQSxFQUFFLENBQUNkLElBQUksS0FBSyxnQkFDbkMsQ0FBQztNQUVELElBQUlZLFVBQVUsS0FBS3ZDLFNBQVMsRUFBRTtRQUM1QnVDLFVBQVUsQ0FBQ0csaUJBQWlCLEdBQUdkLGtCQUFrQjtNQUNuRDtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxNQUFNaUIsaUJBQWlCLEdBQUcsU0FBQUEsQ0FDeEJDLGNBQW1CLEVBQ25CQyxNQUFjLEVBQ2RDLEdBQVcsRUFFUjtJQUFBLElBREhsQixNQUFXLEdBQUFtQixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBakQsU0FBQSxHQUFBaUQsU0FBQSxNQUFHLElBQUk7SUFFbEIsSUFBSTVDLElBQUksS0FBSyxJQUFJLEVBQUU7TUFDakI4QyxLQUFLLENBQUNILEdBQUcsRUFBRTtRQUNURCxNQUFNLEVBQUVBLE1BQU07UUFDZEssT0FBTyxFQUFFO1VBQ1AsY0FBYyxFQUFFLGtCQUFrQjtVQUNsQyxjQUFjLEVBQUUvQyxJQUFJO1VBQ3BCZ0QsTUFBTSxFQUFFO1FBQ1YsQ0FBQztRQUNEQyxJQUFJLEVBQUVsQyxJQUFJLENBQUNFLFNBQVMsQ0FBQ3dCLGNBQWM7TUFDckMsQ0FBQyxDQUFDLENBQ0NTLElBQUksQ0FBRUMsUUFBUSxJQUFLQSxRQUFRLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbkNGLElBQUksQ0FBRUcsSUFBSSxJQUFLO1FBQ2RuQyxrQkFBa0IsQ0FBQ21DLElBQUksQ0FBQ0Msc0JBQXNCLEVBQUVELElBQUksQ0FBQ3JFLE9BQU8sQ0FBQztRQUU3RCxJQUFJeUMsTUFBTSxLQUFLLElBQUksRUFBRTtVQUNuQixJQUFJOEIsS0FBSyxHQUFHRixJQUFJLENBQUNyRSxPQUFPLENBQUNvQyxJQUFJLENBQzFCQyxDQUFVLElBQUtBLENBQUMsQ0FBQ1MsSUFBSSxLQUFLTCxNQUFNLENBQUNLLElBQ3BDLENBQUM7VUFDRHBDLGVBQWUsQ0FBQzZELEtBQUssQ0FBQztVQUN0QnhELG1CQUFtQixDQUFDd0QsS0FBSyxDQUFDO1FBQzVCO01BQ0YsQ0FBQyxDQUFDO0lBQ047RUFDRixDQUFDO0VBRUQsTUFBTUMsU0FBUyxHQUFJSCxJQUFTLElBQUs7SUFDL0IsT0FBT3RDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLFNBQVMsQ0FBQ29DLElBQUksQ0FBQyxDQUFDO0VBQ3pDLENBQUM7RUFFRCxNQUFNO0lBQUVJLE1BQU07SUFBRUM7RUFBTyxDQUFDLEdBQUcsSUFBQUMseUJBQVMsRUFBQyxDQUFDO0VBRXRDLE1BQU1DLE9BQU8sR0FBRyxTQUFBQSxDQUFBLEVBQXVCO0lBQUEsSUFBdEJDLFNBQVMsR0FBQWpCLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFqRCxTQUFBLEdBQUFpRCxTQUFBLE1BQUcsS0FBSztJQUNoQ0UsS0FBSyx3Q0FBQWdCLE1BQUEsQ0FFRDdGLFdBQVcsQ0FBQzhGLGdCQUFnQixtQkFBQUQsTUFBQSxDQUNkckYsU0FBUyxxQkFBQXFGLE1BQUEsQ0FBa0JuRCxhQUFhLENBQUMsQ0FBQyxFQUFBbUQsTUFBQSxDQUN4REwsTUFBTSxlQUFBSyxNQUFBLENBQWVMLE1BQU0sSUFBSyxFQUFFLEVBQUFLLE1BQUEsQ0FDakNKLE1BQU0sZUFBQUksTUFBQSxDQUFlSixNQUFNLElBQUssRUFBRSxDQUN2QyxDQUFDLENBQ0VSLElBQUksQ0FBRUMsUUFBUSxJQUFLQSxRQUFRLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbkNGLElBQUksQ0FBRUUsSUFBSSxJQUFLO01BQ2RsQyxrQkFBa0IsQ0FBQ2tDLElBQUksQ0FBQ0Usc0JBQXNCLEVBQUVGLElBQUksQ0FBQ3BFLE9BQU8sQ0FBQztNQUU3RCxJQUFJZ0YsZUFBZSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRWQsSUFBSSxDQUFDO01BQzdDWSxlQUFlLENBQUNoRixPQUFPLEdBQUd3RSxTQUFTLENBQUNRLGVBQWUsQ0FBQ2hGLE9BQU8sQ0FBQztNQUM1RCxJQUFJbUYsTUFBTSxHQUFHSCxlQUFlLENBQUNJLGdCQUFnQjtNQUU3QyxJQUNFbkcsV0FBVyxDQUFDb0csY0FBYyxLQUFLMUUsU0FBUyxJQUN4QzFCLFdBQVcsQ0FBQ29HLGNBQWMsS0FBSyxJQUFJLEVBQ25DO1FBQ0FGLE1BQU0sQ0FBQ2hDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQ21DLGdCQUFnQixHQUFHLENBQ3hDckcsV0FBVyxDQUFDb0csY0FBYyxDQUMzQjtNQUNIO01BRUEsSUFBSUYsTUFBTSxLQUFLeEUsU0FBUyxFQUFFO1FBQ3hCNEUsY0FBYyxDQUFDUCxlQUFlLENBQUNoRixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDNUMsQ0FBQyxNQUFNO1FBQ0xJLHVCQUF1QixDQUFDNEUsZUFBZSxDQUFDVixzQkFBc0IsQ0FBQztRQUMvRDVELGVBQWUsQ0FBQ3lFLE1BQU0sQ0FBQztRQUN2QnBFLG1CQUFtQixDQUFDb0UsTUFBTSxDQUFDO01BQzdCO01BQ0EsSUFBSU4sU0FBUyxFQUFFO1FBQ2IsTUFBTS9DLG1CQUFtQixHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxTQUFTLENBQUNrRCxNQUFNLENBQUMsQ0FBQztRQUM5RHRFLGlCQUFpQixDQUFDaUIsbUJBQW1CLENBQUM7TUFDeEM7TUFFQTBELFdBQVcsQ0FBQ0wsTUFBTSxDQUFDO0lBQ3JCLENBQUMsQ0FBQztFQUNOLENBQUM7RUFFRCxNQUFNTSxrQkFBa0IsR0FBSWhELE1BQWUsSUFBSztJQUM5Qy9CLGVBQWUsQ0FBQzhELFNBQVMsQ0FBQy9CLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDMUIsbUJBQW1CLENBQUN5RCxTQUFTLENBQUMvQixNQUFNLENBQUMsQ0FBQztJQUN0QzFDLGFBQWEsQ0FBQzJGLE9BQU8sQ0FBRUMsS0FBSyxDQUFDLENBQUM7RUFDaEMsQ0FBQztFQUVELE1BQU1DLGdCQUFnQixHQUNwQm5ELE1BT0ssSUFDRjtJQUNILElBQUlvRCxhQUFhLEdBQUdyQixTQUFTLENBQUN4RSxPQUFPLENBQUM7SUFDdEMsSUFBSThGLG1CQUFtQixHQUFHRCxhQUFhLENBQUNFLE9BQU8sQ0FDN0NGLGFBQWEsQ0FBQ3pELElBQUksQ0FBRUMsQ0FBTSxJQUFLQSxDQUFDLENBQUNRLEVBQUUsS0FBS0osTUFBTSxDQUFDSSxFQUFFLENBQ25ELENBQUM7SUFDRCxJQUFJWSxjQUFjLEdBQUc7TUFDbkJ1QyxXQUFXLEVBQUV2RyxTQUFTO01BQ3RCd0csU0FBUyxFQUFFO1FBQ1RuRCxJQUFJLEVBQUVMLE1BQU0sQ0FBQ0ssSUFBSTtRQUNqQm9ELFNBQVMsRUFBRXpELE1BQU0sQ0FBQ3lELFNBQVM7UUFDM0IvQyxZQUFZLEVBQUVwQixJQUFJLENBQUNFLFNBQVMsQ0FBQ1EsTUFBTSxDQUFDVSxZQUFZO01BQ2xEO0lBQ0YsQ0FBQztJQUVEMEMsYUFBYSxDQUFDQyxtQkFBbUIsQ0FBQyxHQUFHckQsTUFBTTtJQUMzQ3hDLFVBQVUsQ0FBQzRGLGFBQWEsQ0FBQztJQUN6Qm5GLGVBQWUsQ0FBQytCLE1BQU0sQ0FBQztJQUN2QjFCLG1CQUFtQixDQUFDMEIsTUFBTSxDQUFDO0lBRTNCLElBQUkwRCxJQUFJLENBQUNDLElBQUksQ0FBQzNELE1BQU0sQ0FBQ0ksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQzVCVyxpQkFBaUIsQ0FDZkMsY0FBYyxFQUNkLEtBQUssaUJBQUFxQixNQUFBLENBQ1VyQyxNQUFNLENBQUNJLEVBQUUsMEJBQUFpQyxNQUFBLENBQXVCN0YsV0FBVyxDQUFDOEYsZ0JBQWdCLEdBQzNFdEMsTUFDRixDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0xlLGlCQUFpQixDQUNmQyxjQUFjLEVBQ2QsTUFBTSxvQ0FBQXFCLE1BQUEsQ0FDNEI3RixXQUFXLENBQUM4RixnQkFBZ0IsR0FDOUR0QyxNQUNGLENBQUM7SUFDSDtFQUNGLENBQUM7RUFFRCxNQUFNNEQsWUFBWSxHQUFHQSxDQUFDNUQsTUFBZSxFQUFFSyxJQUFZLEtBQUs7SUFDdEQsSUFBSXdELFNBQVMsR0FBRztNQUNkekQsRUFBRSxFQUFFLENBQUMsQ0FBQztNQUNOQyxJQUFJLEVBQUVBLElBQUk7TUFDVkssWUFBWSxFQUFFVixNQUFNLENBQUNVLFlBQVk7TUFDakMrQyxTQUFTLEVBQUU7SUFDYixDQUFDO0lBRURqRyxVQUFVLENBQUMsQ0FBQyxHQUFHRCxPQUFPLEVBQUVzRyxTQUFTLENBQUMsQ0FBQztJQUNuQ3ZGLG1CQUFtQixDQUFDdUYsU0FBUyxDQUFDO0lBQzlCNUYsZUFBZSxDQUFDNEYsU0FBUyxDQUFDO0lBQzFCVixnQkFBZ0IsQ0FBQ1UsU0FBUyxDQUFDO0VBQzdCLENBQUM7RUFFRCxNQUFNQyxZQUFZLEdBQUk5RCxNQUFlLElBQUs7SUFDeEMsSUFBSXpCLElBQUksS0FBSyxJQUFJLElBQUl5QixNQUFNLENBQUNJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtNQUNyQ2lCLEtBQUssZ0JBQUFnQixNQUFBLENBQ1lyQyxNQUFNLENBQUNJLEVBQUUsMEJBQUFpQyxNQUFBLENBQXVCN0YsV0FBVyxDQUFDOEYsZ0JBQWdCLG1CQUFBRCxNQUFBLENBQWdCckYsU0FBUyxHQUNwRztRQUNFaUUsTUFBTSxFQUFFLFFBQVE7UUFDaEJLLE9BQU8sRUFBRTtVQUNQLGNBQWMsRUFBRS9DO1FBQ2xCO01BQ0YsQ0FDRixDQUFDLENBQ0VrRCxJQUFJLENBQUVDLFFBQVEsSUFBS0EsUUFBUSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ25DRixJQUFJLENBQUVHLElBQUksSUFBSztRQUNkLElBQUljLE1BQU0sR0FBR2QsSUFBSSxDQUFDckUsT0FBTyxDQUFDb0MsSUFBSSxDQUMzQkssTUFBZSxJQUFLQSxNQUFNLENBQUN5RCxTQUFTLEtBQUssSUFDNUMsQ0FBQztRQUVELElBQUlmLE1BQU0sS0FBS3hFLFNBQVMsRUFBRTtVQUN4QlYsVUFBVSxDQUFDb0UsSUFBSSxDQUFDckUsT0FBTyxDQUFDO1VBQ3hCVSxlQUFlLENBQUN5RSxNQUFNLENBQUM7VUFDdkJwRSxtQkFBbUIsQ0FBQ29FLE1BQU0sQ0FBQztRQUM3QixDQUFDLE1BQU07VUFDTCxJQUFJZCxJQUFJLENBQUNyRSxPQUFPLENBQUM2RCxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdCZSxPQUFPLENBQUMsQ0FBQztVQUNYLENBQUMsTUFBTTtZQUNMUCxJQUFJLENBQUNyRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNrRyxTQUFTLEdBQUcsSUFBSTtZQUNoQ3hGLGVBQWUsQ0FBQzJELElBQUksQ0FBQ3JFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQ2UsbUJBQW1CLENBQUNzRCxJQUFJLENBQUNyRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcENDLFVBQVUsQ0FBQ29FLElBQUksQ0FBQ3JFLE9BQU8sQ0FBQztVQUMxQjtRQUNGO01BQ0YsQ0FBQyxDQUFDO0lBQ047RUFDRixDQUFDO0VBRUQsTUFBTXdHLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUIsT0FBTzlFLEtBQUssQ0FBQ0UsR0FBRyxDQUFDLFNBQVMsQ0FBQztFQUM3QixDQUFDO0VBRUQsTUFBTTZFLGNBQWMsR0FBR0EsQ0FBQSxLQUFNO0lBQzNCLE9BQU8vRSxLQUFLLENBQUNFLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztFQUN4QyxDQUFDO0VBRUQsTUFBTThFLG1CQUFtQixHQUFHQSxDQUFBLEtBQU07SUFDaEMsT0FBT2hGLEtBQUssQ0FBQ0UsR0FBRyxDQUFDLGVBQWUsQ0FBQztFQUNuQyxDQUFDO0VBRUQsTUFBTTJELGNBQWMsR0FBSTlDLE1BQWUsSUFBSztJQUMxQ2UsaUJBQWlCLENBQ2YsQ0FBQyxDQUFDLEVBQ0YsS0FBSywwQkFBQXNCLE1BQUEsQ0FDbUJyQyxNQUFNLENBQUNJLEVBQUUsMEJBQUFpQyxNQUFBLENBQXVCN0YsV0FBVyxDQUFDOEYsZ0JBQWdCLG1CQUFBRCxNQUFBLENBQWdCckYsU0FBUyxHQUM3R2dELE1BQ0YsQ0FBQztFQUNILENBQUM7RUFFRCxNQUFNK0MsV0FBVyxHQUFHLFNBQUFBLENBQUEsRUFBK0I7SUFBQSxJQUE5Qi9DLE1BQU0sR0FBQW1CLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFqRCxTQUFBLEdBQUFpRCxTQUFBLE1BQUc5QyxnQkFBZ0I7SUFDNUMsSUFBSTZGLEtBQUssR0FBRyxVQUFVO0lBRXRCLElBQUl6SCxnQkFBZ0IsQ0FBQzBILFVBQVUsQ0FBQzlELElBQUksS0FBSyxnQkFBZ0IsRUFBRTtNQUN6RDZELEtBQUssR0FBRyxRQUFRO0lBQ2xCLENBQUMsTUFBTTtNQUNMLElBQUlELG1CQUFtQixDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbEMsSUFDRUEsbUJBQW1CLENBQUMsQ0FBQyxDQUFFRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQzNDSCxtQkFBbUIsQ0FBQyxDQUFDLENBQUVHLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDekM7VUFDQUYsS0FBSyxHQUFHLFFBQVE7UUFDbEIsQ0FBQyxNQUFNLElBQ0xELG1CQUFtQixDQUFDLENBQUMsQ0FBRUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUMzQ0gsbUJBQW1CLENBQUMsQ0FBQyxDQUFFRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQ3pDO1VBQ0FGLEtBQUssR0FBRyxRQUFRO1FBQ2xCLENBQUMsTUFBTSxJQUNMRCxtQkFBbUIsQ0FBQyxDQUFDLENBQUVHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFDM0NILG1CQUFtQixDQUFDLENBQUMsQ0FBRUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUMzQztVQUNBRixLQUFLLEdBQUcsVUFBVTtRQUNwQjtNQUNGO0lBQ0Y7SUFFQSxJQUFJekgsZ0JBQWdCLENBQUMwSCxVQUFVLENBQUM5RCxJQUFJLEtBQUssYUFBYSxFQUFFO01BQ3REdEIsT0FBTyxDQUFDc0YsSUFBSSxLQUFBaEMsTUFBQSxDQUNONUYsZ0JBQWdCLENBQUMwSCxVQUFVLENBQUM5RCxJQUFJLGdDQUFBZ0MsTUFBQSxDQUNsQzdGLFdBQVcsQ0FBQzhGLGdCQUFnQixjQUFBRCxNQUFBLENBRTVCNUYsZ0JBQWdCLENBQUMwSCxVQUFVLENBQUNHLE1BQU0sZUFBQWpDLE1BQUEsQ0FDeEIwQixpQkFBaUIsQ0FBQyxDQUFDLHFCQUFBMUIsTUFBQSxDQUFrQixJQUFBa0Msa0JBQWEsRUFDNUR2RSxNQUFNLEVBQ05rRSxLQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0g7SUFFQSxJQUFJekgsZ0JBQWdCLENBQUMwSCxVQUFVLENBQUM5RCxJQUFJLEtBQUssZ0JBQWdCLEVBQUU7TUFDekR0QixPQUFPLENBQUNzRixJQUFJLEtBQUFoQyxNQUFBLENBQ041RixnQkFBZ0IsQ0FBQzBILFVBQVUsQ0FBQzlELElBQUksZ0NBQUFnQyxNQUFBLENBQ2xDN0YsV0FBVyxDQUFDOEYsZ0JBQWdCLGNBQUFELE1BQUEsQ0FFNUI1RixnQkFBZ0IsQ0FBQzBILFVBQVUsQ0FBQ0csTUFBTSxxQkFBQWpDLE1BQUEsQ0FDbEIsSUFBQWtDLGtCQUFhLEVBQUN2RSxNQUFNLEVBQUVrRSxLQUFLLENBQUMsQ0FDaEQsQ0FBQztNQUVELElBQUluSCxVQUFVLEtBQUttQixTQUFTLEVBQUVuQixVQUFVLENBQUMsSUFBQXdILGtCQUFhLEVBQUN2RSxNQUFNLEVBQUVrRSxLQUFLLENBQUMsQ0FBQztJQUN4RTtJQUNBLElBQUlsSCxTQUFTLEtBQUssaUJBQWlCLEVBQUU7TUFDbkNELFVBQVUsQ0FBQ2lELE1BQU0sQ0FBQztJQUNwQjtJQUVBOUMsUUFBUSxDQUFDLElBQUFzSCw0QkFBbUIsRUFBQyxJQUFBRCxrQkFBYSxFQUFDdkUsTUFBTSxFQUFFa0UsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRGhILFFBQVEsQ0FBQyxJQUFBdUgsZ0NBQXVCLEVBQUN6RSxNQUFNLENBQUMsQ0FBQztJQUN6QztJQUNBOUMsUUFBUSxDQUFDLElBQUF3SCwrQkFBZSxFQUFDO01BQUVDLFdBQVcsRUFBRSxDQUFDO01BQUVDLE9BQU8sRUFBRTtJQUFNLENBQUMsQ0FBQyxDQUFDO0VBQy9ELENBQUM7RUFFRCxNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBQSxLQUFNO0lBQ2hDakIsWUFBWSxDQUFDdkYsZ0JBQWdCLEVBQUVqQixTQUFTLENBQUM2RixPQUFPLENBQUVpQixLQUFLLENBQUM7SUFDeEQ5RyxTQUFTLENBQUM2RixPQUFPLENBQUVpQixLQUFLLEdBQUcsRUFBRTtJQUM3QjVHLGFBQWEsQ0FBQzJGLE9BQU8sQ0FBRUMsS0FBSyxDQUFDLENBQUM7RUFDaEMsQ0FBQztFQUVELElBQUE0QixnQkFBUyxFQUFDLE1BQU07SUFDZC9HLE9BQU8sQ0FBQ2lHLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxDQUFDcEcsUUFBUSxFQUFFO01BQ2JDLFdBQVcsQ0FBQyxJQUFJLENBQUM7TUFDakJzRSxPQUFPLENBQUMsQ0FBQ3ZFLFFBQVEsQ0FBQztJQUNwQixDQUFDLE1BQU07TUFDTCxJQUFJcEIsV0FBVyxDQUFDdUksZ0JBQWdCLEtBQUssRUFBRSxJQUFJeEgsT0FBTyxDQUFDNkQsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMvRCxJQUFJcEIsTUFBTSxHQUFHekMsT0FBTyxDQUFDb0MsSUFBSSxDQUFFSyxNQUFlLElBQUs7VUFDN0MsT0FBT0EsTUFBTSxDQUFDeUQsU0FBUztRQUN6QixDQUFDLENBQUM7UUFDRm5GLG1CQUFtQixDQUFDMEIsTUFBTSxDQUFDO01BQzdCO0lBQ0Y7SUFDQSxPQUFPLFNBQVNnRixPQUFPQSxDQUFBLEVBQUc7TUFDeEJuSCxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3JCLFdBQVcsQ0FBQzhGLGdCQUFnQixFQUFFeEUsSUFBSSxDQUFDLENBQUM7RUFFeEMsb0JBQ0V4QyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUE7SUFDRUMsU0FBUyxzQkFBQTlDLE1BQUEsQ0FDUHZGLGVBQWUsR0FBRyxFQUFFLEdBQUcsMEJBQTBCO0VBQ2hELEdBRUZ1QixnQkFBZ0IsS0FBS0gsU0FBUyxpQkFDN0I1QyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUE7SUFBS0MsU0FBUyxFQUFFLDJCQUE0QjtJQUFDQyxHQUFHLEVBQUU5SDtFQUFjLGdCQUM5RGhDLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQTtJQUFLQyxTQUFTLEVBQUU7RUFBb0MsZ0JBQ2xEN0osTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBO0lBQUtDLFNBQVMsRUFBRTtFQUFRLGdCQUN0QjdKLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxhQUFLRyxhQUFJLENBQUNDLENBQUMsQ0FBQywrQkFBK0IsQ0FBTSxDQUM5QyxDQUFDLGVBRU5oSyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUE7SUFBS0MsU0FBUyxFQUFFO0VBQVUsZ0JBQ3hCN0osTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLENBQUN4SixTQUFBLENBQUF1SixPQUFRO0lBQUNFLFNBQVMsRUFBRTtFQUFTLGdCQUM1QjdKLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDeEosU0FBQSxDQUFBdUosT0FBUSxDQUFDTSxNQUFNO0lBQUNDLE9BQU8sRUFBQyxTQUFTO0lBQUNwRixFQUFFLEVBQUM7RUFBZ0IsZ0JBQ3BEOUUsTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLENBQUNuSixLQUFBLENBQUEwSixjQUFRO0lBQ1BOLFNBQVMsRUFBQyxhQUFhO0lBQ3ZCTyxNQUFNLEVBQUMsTUFBTTtJQUNiQyxLQUFLLEVBQUMsTUFBTTtJQUNaQyxJQUFJLEVBQUM7RUFBUyxDQUNmLENBQUMsRUFDRHZILGdCQUFnQixDQUFDZ0MsSUFBSSxFQUFFLEdBQUcsRUFDMUJoQyxnQkFBZ0IsQ0FBQytCLEVBQUUsS0FBSyxDQUFDLENBQUMsZ0JBQ3pCOUUsTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLFlBQUcsSUFBRSxFQUFDRyxhQUFJLENBQUNDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFDLElBQUssQ0FBQyxHQUVyRCxFQUVhLENBQUMsZUFFbEJoSyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUEsQ0FBQzlJLGdCQUFBLENBQUE2SSxPQUFlO0lBQ2QxSCxPQUFPLEVBQUVBLE9BQVE7SUFDakJ5RixrQkFBa0IsRUFBRUEsa0JBQW1CO0lBQ3ZDM0UsZ0JBQWdCLEVBQUVBLGdCQUFpQjtJQUNuQ3lFLGNBQWMsRUFBRUEsY0FBZTtJQUMvQmdCLFlBQVksRUFBRUE7RUFBYSxDQUM1QixDQUNPLENBQUMsZUFFWHhJLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDeEosU0FBQSxDQUFBdUosT0FBUTtJQUFDRSxTQUFTLEVBQUU7RUFBUyxnQkFDNUI3SixNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUEsQ0FBQ3hKLFNBQUEsQ0FBQXVKLE9BQVEsQ0FBQ00sTUFBTTtJQUFDQyxPQUFPLEVBQUMsU0FBUztJQUFDcEYsRUFBRSxFQUFDO0VBQWdCLGdCQUNwRDlFLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDcEosU0FBQSxDQUFBMkosY0FBUTtJQUNQTixTQUFTLEVBQUMsV0FBVztJQUNyQk8sTUFBTSxFQUFDLE1BQU07SUFDYkMsS0FBSyxFQUFDLE1BQU07SUFDWkMsSUFBSSxFQUFDO0VBQVMsQ0FDZixDQUFDLGVBQ0Z0SyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUEsZUFBT0csYUFBSSxDQUFDQyxDQUFDLENBQUMsbUNBQW1DLENBQVEsQ0FDMUMsQ0FBQyxlQUVsQmhLLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDeEosU0FBQSxDQUFBdUosT0FBUSxDQUFDWSxJQUFJLHFCQUNadkssTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLENBQUN4SixTQUFBLENBQUF1SixPQUFRLENBQUNhLElBQUk7SUFDWkMsUUFBUSxFQUFFMUgsZ0JBQWdCLENBQUMrQixFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQU07SUFDcEQ0RixPQUFPLEVBQUVBLENBQUEsS0FBTTtNQUNiN0MsZ0JBQWdCLENBQUM5RSxnQkFBZ0IsQ0FBQztJQUNwQztFQUFFLEdBRURnSCxhQUFJLENBQUNDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FDakMsQ0FBQyxlQUNoQmhLLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDeEosU0FBQSxDQUFBdUosT0FBUTtJQUFDRSxTQUFTLEVBQUU7RUFBc0IsZ0JBQ3pDN0osTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLENBQUN4SixTQUFBLENBQUF1SixPQUFRLENBQUNNLE1BQU07SUFBQ0MsT0FBTyxFQUFDLFNBQVM7SUFBQ3BGLEVBQUUsRUFBQztFQUFnQixHQUNuRGlGLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLGlDQUFpQyxDQUMxQixDQUFDLGVBRWxCaEssTUFBQSxDQUFBMkosT0FBQSxDQUFBQyxhQUFBLENBQUN4SixTQUFBLENBQUF1SixPQUFRLENBQUNZLElBQUkscUJBQ1p2SyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUE7SUFBS0MsU0FBUyxFQUFFO0VBQW1CLGdCQUNqQzdKLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDekosZUFBQSxDQUFBd0ssV0FBVztJQUNWQyxXQUFXLEVBQUViLGFBQUksQ0FBQ0MsQ0FBQyxDQUNqQiwrQ0FDRixDQUFFO0lBQ0YsY0FBVyxrQkFBa0I7SUFDN0Isb0JBQWlCLGNBQWM7SUFDL0JGLEdBQUcsRUFBRWhJLFNBQVU7SUFDZitJLFNBQVMsRUFBRTtFQUFLLENBQ2pCLENBQUMsZUFDRjdLLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxXQUFLLENBQUMsZUFDTjVKLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDekosZUFBQSxDQUFBMkssTUFBTTtJQUNMSixPQUFPLEVBQUVBLENBQUEsS0FBTTtNQUNibkIsbUJBQW1CLENBQUMsQ0FBQztJQUN2QixDQUFFO0lBQ0ZXLE9BQU8sRUFBQztFQUFTLEdBRWhCSCxhQUFJLENBQUNDLENBQUMsQ0FBQyx5QkFBeUIsQ0FDM0IsQ0FDTCxDQUNRLENBQ1AsQ0FDRyxDQUNQLENBQ1AsQ0FDRixDQUFDLGVBRU5oSyxNQUFBLENBQUEySixPQUFBLENBQUFDLGFBQUE7SUFBS0MsU0FBUyxFQUFFO0VBQWtDLGdCQUNoRDdKLE1BQUEsQ0FBQTJKLE9BQUEsQ0FBQUMsYUFBQSxDQUFDL0ksT0FBQSxDQUFBOEksT0FBTTtJQUNMM0csbUJBQW1CLEVBQUVBLG1CQUFvQjtJQUN6Q0QsZ0JBQWdCLEVBQUVBLGdCQUFpQjtJQUNuQ1gsb0JBQW9CLEVBQUVBLG9CQUFxQjtJQUMzQzJJLGtCQUFrQixFQUFFQSx1QkFBbUI7SUFDdkN0RCxXQUFXLEVBQUVBLFdBQVk7SUFDekI5RixXQUFXLEVBQUVBLFdBQVcsR0FBR21DLGlCQUFpQixHQUFHO0VBQUssQ0FDckQsQ0FDRSxDQUNGLENBRUosQ0FBQztBQUVWLENBQUM7QUFFRCxNQUFNa0gsU0FBUyxHQUFHLElBQUFDLG1CQUFPLEVBQUNqSyxlQUFlLENBQUM7QUFBQyxJQUFBa0ssUUFBQSxHQUFBQyxPQUFBLENBQUF4QixPQUFBLEdBQzVCcUIsU0FBUyxDQUFDM0osZUFBZSxDQUFDIiwiaWdub3JlTGlzdCI6W119
406
+ var connector = (0, _reactRedux.connect)(mapStateToProps);
407
+ var _default = connector(FilterContainer);
408
+ exports.default = _default;
409
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfRHJvcGRvd24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RSb3V0ZXJEb20iLCJfZGlza2V0dGUiLCJfbGlzdCIsIl9hY3Rpb25zIiwiX2kxOG4iLCJfa3FsIiwiX0ZpbHRlciIsIl9GaWx0ZXJzRHJvcERvd24iLCJfYWN0aW9uc0NyZWF0b3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIm1hcFN0YXRlVG9Qcm9wcyIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJuYXZfY29udGV4dF9kYXRhIiwicG9pbnRzX2RhdGEiLCJGaWx0ZXJDb250YWluZXIiLCJwcm9wcyIsImN1c3RvbV9wb2ludHMiLCJmaWx0ZXJQb3B1cE9wZW4iLCJhcHBseUxvZ2ljIiwiX3Byb3BzJGZldGNoVHlwZSIsImZldGNoVHlwZSIsIl9wcm9wcyRyZXNldEZpbHRlciIsInJlc2V0RmlsdGVyIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIm5hbWVJbnB1dCIsInVzZVJlZiIsImZpbHRlckNvbnRlbnQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiYXZhaWxhYmxlRmlsdGVySXRlbXMiLCJzZXRBdmFpbGFibGVGaWx0ZXJJdGVtcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicmVuZGVyZWQiLCJzZXRSZW5kZXJlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiV2FJZCIsInNldFdhSWQiLCJfdXNlU3RhdGU5IiwidW5kZWZpbmVkIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVGaWx0ZXIiLCJzZXRBY3RpdmVGaWx0ZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiZGVmYXVsdEZpbHRlcnMiLCJzZXREZWZhdWx0RmlsdGVycyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJhY3RpdmVGaWx0ZXJDb3B5Iiwic2V0QWN0aXZlRmlsdGVyQ29weSIsImNzcmYiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRBdHRyaWJ1dGUiLCJ1c2VRdWVyeSIsIlVSTFNlYXJjaFBhcmFtcyIsInVzZUxvY2F0aW9uIiwic2VhcmNoIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJxdWVyeSIsImdldEtRTEZyb21VUkwiLCJoYW5kbGVSZXNldEZpbHRlciIsImRlZmF1bHRGaWx0ZXJzQ2xvbmUiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJnZXRQb2ludHNUb0ZpbHRlcnMiLCJpbnRlcmVzdFBvaW50RmlsdGVySXRlbSIsImZpbmQiLCJmIiwidHlwZSIsImZpbHRlcmVkUG9pbnRzRGF0YSIsIml0ZW1zIiwiZmlsdGVyIiwicG9pbnQiLCJwYXJ0X29mX29ic2VydmF0aW9uIiwibWFwIiwiaWQiLCJuYW1lIiwiZ3JvdXAiLCJvcHRpb25zIiwiZm9yRWFjaCIsImZpbHRlckl0ZW0iLCJmaWx0ZXJfaXRlbXMiLCJmaSIsImF2YWlsYWJsZV9vcHRpb25zIiwidXBkYXRlU2l0ZVRvRmlsdGVycyIsInNpdGVGaWx0ZXJJdGVtIiwiZmV0Y2hFdmVudEZpbHRlcnMiLCJwcmVwYXJlZFBhcmFtcyIsIm1ldGhvZCIsInVybCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZldGNoIiwiaGVhZGVycyIsIkFjY2VwdCIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiZGF0YSIsImF2YWlsYWJsZV9maWx0ZXJfaXRlbXMiLCJzYXZlZCIsImRlZXBDbG9uZSIsIl91c2VQYXJhbXMiLCJ1c2VQYXJhbXMiLCJzaXRlSUQiLCJhcmVhSUQiLCJnZXREYXRhIiwiZmlyc3RUaW1lIiwiY29uY2F0Iiwid2F0ZXJBdXRob3JpdHlJZCIsImpzb25TaGFsbG93Q29weSIsImFzc2lnbiIsImFjdGl2ZSIsImRpc3BsYXllZF9maWx0ZXIiLCJzZWxlY3RlZFBlcmlvZCIsInNlbGVjdGVkX29wdGlvbnMiLCJhY3RpdmF0ZUZpbHRlciIsImFwcGx5RmlsdGVyIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwiY3VycmVudCIsImNsaWNrIiwic2F2ZUFjdGl2ZUZpbHRlciIsImNsb25lZEZpbHRlcnMiLCJmaWx0ZXJUb01vZGlmeUluZGV4IiwiaW5kZXhPZiIsImZpbHRlcl90eXBlIiwidWlfZmlsdGVyIiwiaXNfYWN0aXZlIiwiTWF0aCIsInNpZ24iLCJjcmVhdGVGaWx0ZXIiLCJuZXdGaWx0ZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZGVsZXRlRmlsdGVyIiwiZ2V0RXZlbnRJZEZyb21VUkwiLCJnZXRXYUlkRnJvbVVSTCIsImdldEtRTFZhbHVlc0Zyb21VUkwiLCJ2YWx1ZSIsIm5hdkNvbnRleHQiLCJpbmNsdWRlcyIsInB1c2giLCJsb2NhbGUiLCJidWlsZEtRTFF1ZXJ5Iiwic2V0RXZlbnRGaWx0ZXJQYXJhbSIsInNldEFjdGl2ZUZpbHRlckdsb2JhbGx5Iiwic2V0U2FtcGxpbmdEYXRhIiwiY3VycmVudFBhZ2UiLCJpc0ZldGNoIiwiaGFuZGxlQ3JlYXRpb25DbGljayIsInVzZUVmZmVjdCIsImV2ZW50RmlsdGVyUGFyYW0iLCJjbGVhbnVwIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInJlZiIsImkxOG4iLCJ0IiwiVG9nZ2xlIiwidmFyaWFudCIsIlJlYWN0Q29tcG9uZW50IiwiaGVpZ2h0Iiwid2lkdGgiLCJmaWxsIiwiTWVudSIsIkl0ZW0iLCJkaXNhYmxlZCIsIm9uQ2xpY2siLCJGb3JtQ29udHJvbCIsInBsYWNlaG9sZGVyIiwiYXV0b0ZvY3VzIiwiQnV0dG9uIiwicGFyc2VTZWxlY3RlZEl0ZW1zIiwiY29ubmVjdG9yIiwiY29ubmVjdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9FdmVudHNQYWdlL2V2ZW50cy9ldmVudHNfbGlzdC9GaWx0ZXIvRmlsdGVyQ29udGFpbmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQnV0dG9uLCBGb3JtQ29udHJvbCB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAncmVhY3QtYm9vdHN0cmFwL0Ryb3Bkb3duJztcbmltcG9ydCB7IGNvbm5lY3QsIENvbm5lY3RlZFByb3BzLCB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHVzZUhpc3RvcnksIHVzZUxvY2F0aW9uLCB1c2VQYXJhbXMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFNhdmVJY29uIH0gZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9kaXNrZXR0ZS5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTGlzdEljb24gfSBmcm9tICdzcmMvYXNzZXRzL2ljb25zL2xpc3Quc3ZnJztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7IElGaWx0ZXIgfSBmcm9tICdzcmMvc3RvcmUvZmlsdGVycy9JRmlsdGVyJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtIH0gZnJvbSAnc3JjL3N0b3JlL2ZpbHRlcnMvSUZpbHRlckl0ZW0nO1xuaW1wb3J0IHtcbiAgc2V0QWN0aXZlRmlsdGVyR2xvYmFsbHksXG4gIHNldEV2ZW50RmlsdGVyUGFyYW0sXG59IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IGJ1aWxkS1FMUXVlcnksIHBhcnNlU2VsZWN0ZWRJdGVtcyB9IGZyb20gJ3NyYy91dGlsaXRpZXMva3FsJztcbmltcG9ydCAnLi9GaWx0ZXJTdHlsZS5zY3NzJztcbmltcG9ydCBGaWx0ZXIgZnJvbSAnLi9GaWx0ZXInO1xuaW1wb3J0IEZpbHRlcnNEcm9wRG93biBmcm9tICcuL0ZpbHRlcnNEcm9wRG93bic7XG5pbXBvcnQgeyBzZXRTYW1wbGluZ0RhdGEgfSBmcm9tICdzcmMvc3RvcmUvc2FtcGxpbmdzL2FjdGlvbnNDcmVhdG9yJztcbmZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogSUFwcFN0YXRlKSB7XG4gIGNvbnN0IHsgZ2xvYmFsX2RhdGEsIG5hdl9jb250ZXh0X2RhdGEsIHBvaW50c19kYXRhIH0gPSBzdGF0ZTtcblxuICByZXR1cm4ge1xuICAgIGdsb2JhbF9kYXRhLFxuICAgIG5hdl9jb250ZXh0X2RhdGEsXG4gICAgcG9pbnRzX2RhdGEsXG4gIH07XG59XG5cbnR5cGUgSVByb3BzID0gQ29ubmVjdGVkUHJvcHM8dHlwZW9mIGNvbm5lY3Rvcj4gJiB7XG4gIGZpbHRlclBvcHVwT3BlbjogYm9vbGVhbjtcbiAgZmV0Y2hUeXBlOiBzdHJpbmc7XG4gIGN1c3RvbV9wb2ludHM/OiBhbnk7XG4gIGFwcGx5TG9naWM/OiAodmFsdWVzOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlc2V0RmlsdGVyPzogKGZpbHRlcikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IEZpbHRlckNvbnRhaW5lcjogUmVhY3QuRkM8SVByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgbmF2X2NvbnRleHRfZGF0YSxcbiAgICBwb2ludHNfZGF0YSxcbiAgICBjdXN0b21fcG9pbnRzLFxuICAgIGZpbHRlclBvcHVwT3BlbixcbiAgICBhcHBseUxvZ2ljLFxuICAgIGZldGNoVHlwZSA9ICdFdmVudEZpbHRlcnMnLFxuICAgIHJlc2V0RmlsdGVyID0gbnVsbCxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hbWVJbnB1dCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgZmlsdGVyQ29udGVudCA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtmaWx0ZXJzLCBzZXRGaWx0ZXJzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbYXZhaWxhYmxlRmlsdGVySXRlbXMsIHNldEF2YWlsYWJsZUZpbHRlckl0ZW1zXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3JlbmRlcmVkLCBzZXRSZW5kZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtXYUlkLCBzZXRXYUlkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KCk7XG4gIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvbnN0IFthY3RpdmVGaWx0ZXIsIHNldEFjdGl2ZUZpbHRlcl0gPSB1c2VTdGF0ZTxhbnk+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtkZWZhdWx0RmlsdGVycywgc2V0RGVmYXVsdEZpbHRlcnNdID0gdXNlU3RhdGU8YW55Pih7fSk7XG4gIGNvbnN0IFthY3RpdmVGaWx0ZXJDb3B5LCBzZXRBY3RpdmVGaWx0ZXJDb3B5XSA9IHVzZVN0YXRlPGFueT4odW5kZWZpbmVkKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjc3JmID0gZG9jdW1lbnRcbiAgICAucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT0nY3NyZi10b2tlbiddXCIpXG4gICAgLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICBjb25zdCB1c2VRdWVyeSA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyh1c2VMb2NhdGlvbigpLnNlYXJjaCk7XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnkoKTtcbiAgY29uc3QgZ2V0S1FMRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCd2YWx1ZXNGcm9tS1FMJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVzZXRGaWx0ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbHRlcnNDbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlcnMpKTtcbiAgICByZXNldEZpbHRlciAmJiByZXNldEZpbHRlcihkZWZhdWx0RmlsdGVyc0Nsb25lKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGRlZmF1bHRGaWx0ZXJzQ2xvbmUpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBvaW50c1RvRmlsdGVycyA9IChhdmFpbGFibGVGaWx0ZXJJdGVtczogYW55LCBmaWx0ZXJzOiBhbnkpID0+IHtcbiAgICBsZXQgaW50ZXJlc3RQb2ludEZpbHRlckl0ZW0gPSBhdmFpbGFibGVGaWx0ZXJJdGVtcy5maW5kKFxuICAgICAgKGY6IElGaWx0ZXJJdGVtKSA9PiBmLnR5cGUgPT09ICdJbnRlcmVzdFBvaW50RmlsdGVySXRlbScsXG4gICAgKTtcbiAgICBsZXQgZmlsdGVyZWRQb2ludHNEYXRhID1cbiAgICAgIGN1c3RvbV9wb2ludHMgfHxcbiAgICAgIHBvaW50c19kYXRhLml0ZW1zXG4gICAgICAgIC5maWx0ZXIoKHBvaW50OiBJUG9pbnQpID0+IHBvaW50LnBhcnRfb2Zfb2JzZXJ2YXRpb24gPT09IHRydWUpXG4gICAgICAgIC5tYXAoKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4geyBpZDogcG9pbnQuaWQsIG5hbWU6IHBvaW50Lmdyb3VwLm5hbWUgfTtcbiAgICAgICAgfSk7XG5cbiAgICBpZiAoaW50ZXJlc3RQb2ludEZpbHRlckl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaW50ZXJlc3RQb2ludEZpbHRlckl0ZW0ub3B0aW9ucyA9IGZpbHRlcmVkUG9pbnRzRGF0YTtcbiAgICB9XG5cbiAgICBmaWx0ZXJzLmZvckVhY2goKGY6IElGaWx0ZXIpID0+IHtcbiAgICAgIGxldCBmaWx0ZXJJdGVtID0gZi5maWx0ZXJfaXRlbXMuZmluZChcbiAgICAgICAgKGZpOiBJRmlsdGVySXRlbSkgPT4gZmkudHlwZSA9PT0gJ0ludGVyZXN0UG9pbnRGaWx0ZXJJdGVtJyxcbiAgICAgICk7XG5cbiAgICAgIGlmIChmaWx0ZXJJdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsdGVySXRlbS5hdmFpbGFibGVfb3B0aW9ucyA9IGZpbHRlcmVkUG9pbnRzRGF0YTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY3VzdG9tX3BvaW50cykge1xuICAgICAgdXBkYXRlU2l0ZVRvRmlsdGVycyhhdmFpbGFibGVGaWx0ZXJJdGVtcywgZmlsdGVycyk7XG4gICAgfVxuICAgIHNldEZpbHRlcnMoZmlsdGVycyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlU2l0ZVRvRmlsdGVycyA9IChhdmFpbGFibGVGaWx0ZXJJdGVtczogYW55LCBmaWx0ZXJzOiBhbnkpID0+IHtcbiAgICBsZXQgc2l0ZUZpbHRlckl0ZW0gPSBhdmFpbGFibGVGaWx0ZXJJdGVtcy5maW5kKFxuICAgICAgKGY6IElGaWx0ZXJJdGVtKSA9PiBmLnR5cGUgPT09ICdTaXRlRmlsdGVySXRlbScsXG4gICAgKTtcbiAgICBsZXQgZmlsdGVyZWRQb2ludHNEYXRhID0gY3VzdG9tX3BvaW50cztcblxuICAgIGlmIChzaXRlRmlsdGVySXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaXRlRmlsdGVySXRlbS5vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgIH1cblxuICAgIGZpbHRlcnMuZm9yRWFjaCgoZjogSUZpbHRlcikgPT4ge1xuICAgICAgbGV0IGZpbHRlckl0ZW0gPSBmLmZpbHRlcl9pdGVtcy5maW5kKFxuICAgICAgICAoZmk6IElGaWx0ZXJJdGVtKSA9PiBmaS50eXBlID09PSAnU2l0ZUZpbHRlckl0ZW0nLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZpbHRlckl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJJdGVtLmF2YWlsYWJsZV9vcHRpb25zID0gZmlsdGVyZWRQb2ludHNEYXRhO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRXZlbnRGaWx0ZXJzID0gKFxuICAgIHByZXBhcmVkUGFyYW1zOiBhbnksXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBhbnkgPSBudWxsLFxuICApID0+IHtcbiAgICBpZiAoY3NyZiAhPT0gbnVsbCkge1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZixcbiAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocHJlcGFyZWRQYXJhbXMpLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgZ2V0UG9pbnRzVG9GaWx0ZXJzKGRhdGEuYXZhaWxhYmxlX2ZpbHRlcl9pdGVtcywgZGF0YS5maWx0ZXJzKTtcblxuICAgICAgICAgIGlmIChmaWx0ZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBzYXZlZCA9IGRhdGEuZmlsdGVycy5maW5kKFxuICAgICAgICAgICAgICAoZjogSUZpbHRlcikgPT4gZi5uYW1lID09PSBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXIoc2F2ZWQpO1xuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVyQ29weShzYXZlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVlcENsb25lID0gKGRhdGE6IGFueSkgPT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfTtcblxuICBjb25zdCB7IHNpdGVJRCwgYXJlYUlEIH0gPSB1c2VQYXJhbXMoKTtcblxuICBjb25zdCBnZXREYXRhID0gKGZpcnN0VGltZSA9IGZhbHNlKSA9PiB7XG4gICAgZmV0Y2goXG4gICAgICBgL3VpX2ZpbHRlcnMuanNvbj93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZFxuICAgICAgfSZmaWx0ZXJfdHlwZT0ke2ZldGNoVHlwZX0mdmFsdWVzRnJvbUtRTD0ke2dldEtRTEZyb21VUkwoKX0ke1xuICAgICAgICBzaXRlSUQgPyBgJnNpdGVfaWQ9JHtzaXRlSUR9YCA6ICcnXG4gICAgICB9JHthcmVhSUQgPyBgJmFyZWFfaWQ9JHthcmVhSUR9YCA6ICcnfWAsXG4gICAgKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICBnZXRQb2ludHNUb0ZpbHRlcnMoanNvbi5hdmFpbGFibGVfZmlsdGVyX2l0ZW1zLCBqc29uLmZpbHRlcnMpO1xuXG4gICAgICAgIGxldCBqc29uU2hhbGxvd0NvcHkgPSBPYmplY3QuYXNzaWduKHt9LCBqc29uKTtcbiAgICAgICAganNvblNoYWxsb3dDb3B5LmZpbHRlcnMgPSBkZWVwQ2xvbmUoanNvblNoYWxsb3dDb3B5LmZpbHRlcnMpO1xuICAgICAgICBsZXQgYWN0aXZlID0ganNvblNoYWxsb3dDb3B5LmRpc3BsYXllZF9maWx0ZXI7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdsb2JhbF9kYXRhLnNlbGVjdGVkUGVyaW9kICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zZWxlY3RlZFBlcmlvZCAhPT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBhY3RpdmUuZmlsdGVyX2l0ZW1zWzFdLnNlbGVjdGVkX29wdGlvbnMgPSBbXG4gICAgICAgICAgICBnbG9iYWxfZGF0YS5zZWxlY3RlZFBlcmlvZCxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGl2ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0aXZhdGVGaWx0ZXIoanNvblNoYWxsb3dDb3B5LmZpbHRlcnNbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEF2YWlsYWJsZUZpbHRlckl0ZW1zKGpzb25TaGFsbG93Q29weS5hdmFpbGFibGVfZmlsdGVyX2l0ZW1zKTtcbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXIoYWN0aXZlKTtcbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXJzQ2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFjdGl2ZSkpO1xuICAgICAgICAgIHNldERlZmF1bHRGaWx0ZXJzKGRlZmF1bHRGaWx0ZXJzQ2xvbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHlGaWx0ZXIoYWN0aXZlKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChmaWx0ZXI6IElGaWx0ZXIpID0+IHtcbiAgICBzZXRBY3RpdmVGaWx0ZXIoZGVlcENsb25lKGZpbHRlcikpO1xuICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoZGVlcENsb25lKGZpbHRlcikpO1xuICAgIGZpbHRlckNvbnRlbnQuY3VycmVudCEuY2xpY2soKTtcbiAgfTtcblxuICBjb25zdCBzYXZlQWN0aXZlRmlsdGVyID0gKFxuICAgIGZpbHRlcjpcbiAgICAgIHwgSUZpbHRlclxuICAgICAgfCB7XG4gICAgICAgICAgaWQ6IG51bWJlcjtcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgZmlsdGVyX2l0ZW1zOiBJRmlsdGVySXRlbVtdO1xuICAgICAgICAgIGlzX2FjdGl2ZTogYm9vbGVhbjtcbiAgICAgICAgfSxcbiAgKSA9PiB7XG4gICAgbGV0IGNsb25lZEZpbHRlcnMgPSBkZWVwQ2xvbmUoZmlsdGVycyk7XG4gICAgbGV0IGZpbHRlclRvTW9kaWZ5SW5kZXggPSBjbG9uZWRGaWx0ZXJzLmluZGV4T2YoXG4gICAgICBjbG9uZWRGaWx0ZXJzLmZpbmQoKGY6IGFueSkgPT4gZi5pZCA9PT0gZmlsdGVyLmlkKSxcbiAgICApO1xuICAgIGxldCBwcmVwYXJlZFBhcmFtcyA9IHtcbiAgICAgIGZpbHRlcl90eXBlOiBmZXRjaFR5cGUsXG4gICAgICB1aV9maWx0ZXI6IHtcbiAgICAgICAgbmFtZTogZmlsdGVyLm5hbWUsXG4gICAgICAgIGlzX2FjdGl2ZTogZmlsdGVyLmlzX2FjdGl2ZSxcbiAgICAgICAgZmlsdGVyX2l0ZW1zOiBKU09OLnN0cmluZ2lmeShmaWx0ZXIuZmlsdGVyX2l0ZW1zKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNsb25lZEZpbHRlcnNbZmlsdGVyVG9Nb2RpZnlJbmRleF0gPSBmaWx0ZXI7XG4gICAgc2V0RmlsdGVycyhjbG9uZWRGaWx0ZXJzKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXIoZmlsdGVyKTtcbiAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGZpbHRlcik7XG5cbiAgICBpZiAoTWF0aC5zaWduKGZpbHRlci5pZCkgPiAwKSB7XG4gICAgICBmZXRjaEV2ZW50RmlsdGVycyhcbiAgICAgICAgcHJlcGFyZWRQYXJhbXMsXG4gICAgICAgICdQVVQnLFxuICAgICAgICBgL3VpX2ZpbHRlcnMvJHtmaWx0ZXIuaWR9P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9YCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmV0Y2hFdmVudEZpbHRlcnMoXG4gICAgICAgIHByZXBhcmVkUGFyYW1zLFxuICAgICAgICAnUE9TVCcsXG4gICAgICAgIGAvdWlfZmlsdGVycz93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfWAsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZUZpbHRlciA9IChmaWx0ZXI6IElGaWx0ZXIsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgIGxldCBuZXdGaWx0ZXIgPSB7XG4gICAgICBpZDogLTEsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZmlsdGVyX2l0ZW1zOiBmaWx0ZXIuZmlsdGVyX2l0ZW1zLFxuICAgICAgaXNfYWN0aXZlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgc2V0RmlsdGVycyhbLi4uZmlsdGVycywgbmV3RmlsdGVyXSk7XG4gICAgc2V0QWN0aXZlRmlsdGVyQ29weShuZXdGaWx0ZXIpO1xuICAgIHNldEFjdGl2ZUZpbHRlcihuZXdGaWx0ZXIpO1xuICAgIHNhdmVBY3RpdmVGaWx0ZXIobmV3RmlsdGVyKTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVGaWx0ZXIgPSAoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgaWYgKGNzcmYgIT09IG51bGwgJiYgZmlsdGVyLmlkICE9PSAtMSkge1xuICAgICAgZmV0Y2goXG4gICAgICAgIGAvdWlfZmlsdGVycy8ke2ZpbHRlci5pZH0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZH0mZmlsdGVyX3R5cGU9JHtmZXRjaFR5cGV9YCxcbiAgICAgICAge1xuICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ1gtQ1NSRi1Ub2tlbic6IGNzcmYsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgbGV0IGFjdGl2ZSA9IGRhdGEuZmlsdGVycy5maW5kKFxuICAgICAgICAgICAgKGZpbHRlcjogSUZpbHRlcikgPT4gZmlsdGVyLmlzX2FjdGl2ZSA9PT0gdHJ1ZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRGaWx0ZXJzKGRhdGEuZmlsdGVycyk7XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXIoYWN0aXZlKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlckNvcHkoYWN0aXZlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRhdGEuZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgZ2V0RGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGF0YS5maWx0ZXJzWzBdLmlzX2FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcihkYXRhLmZpbHRlcnNbMF0pO1xuICAgICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGRhdGEuZmlsdGVyc1swXSk7XG4gICAgICAgICAgICAgIHNldEZpbHRlcnMoZGF0YS5maWx0ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRFdmVudElkRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCdldmVudElkJyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0V2FJZEZyb21VUkwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0S1FMVmFsdWVzRnJvbVVSTCA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCd2YWx1ZXNGcm9tS1FMJyk7XG4gIH07XG5cbiAgY29uc3QgYWN0aXZhdGVGaWx0ZXIgPSAoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgZmV0Y2hFdmVudEZpbHRlcnMoXG4gICAgICB7fSxcbiAgICAgICdQVVQnLFxuICAgICAgYC91aV9maWx0ZXJzL2FjdGl2YXRlLyR7ZmlsdGVyLmlkfT93YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfSZmaWx0ZXJfdHlwZT0ke2ZldGNoVHlwZX1gLFxuICAgICAgZmlsdGVyLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgYXBwbHlGaWx0ZXIgPSAoZmlsdGVyID0gYWN0aXZlRmlsdGVyQ29weSkgPT4ge1xuICAgIGxldCB2YWx1ZSA9ICdzZXZlcml0eSc7XG5cbiAgICBpZiAobmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWUgPT09ICdzYW1wbGluZ3MtbGlzdCcpIHtcbiAgICAgIHZhbHVlID0gJ25ld2VzdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChnZXRLUUxWYWx1ZXNGcm9tVVJMKCkgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ09SREVSX0JZJykgJiZcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCduZXdlc3QnKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9ICduZXdlc3QnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ09SREVSX0JZJykgJiZcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdvbGRlc3QnKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9ICdvbGRlc3QnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGdldEtRTFZhbHVlc0Zyb21VUkwoKSEuaW5jbHVkZXMoJ09SREVSX0JZJykgJiZcbiAgICAgICAgICBnZXRLUUxWYWx1ZXNGcm9tVVJMKCkhLmluY2x1ZGVzKCdzZXZlcml0eScpXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gJ3NldmVyaXR5JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubmFtZSA9PT0gJ2V2ZW50c192aWV3Jykge1xuICAgICAgaGlzdG9yeS5wdXNoKFxuICAgICAgICBgLyR7bmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWV9L2luZGV4P3dhdGVyX2F1dGhvcml0eV9pZD0ke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRcbiAgICAgICAgfSZsb2NhbGU9JHtcbiAgICAgICAgICBuYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlXG4gICAgICAgIH0mZXZlbnRJZD0ke2dldEV2ZW50SWRGcm9tVVJMKCl9JnZhbHVlc0Zyb21LUUw9JHtidWlsZEtRTFF1ZXJ5KFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0Lm5hbWUgPT09ICdzYW1wbGluZ3MtbGlzdCcpIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgYC8ke25hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5uYW1lfS9pbmRleD93YXRlcl9hdXRob3JpdHlfaWQ9JHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXG4gICAgICAgIH0mbG9jYWxlPSR7XG4gICAgICAgICAgbmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZVxuICAgICAgICB9JnZhbHVlc0Zyb21LUUw9JHtidWlsZEtRTFF1ZXJ5KGZpbHRlciwgdmFsdWUpfWAsXG4gICAgICApO1xuXG4gICAgICBpZiAoYXBwbHlMb2dpYyAhPT0gdW5kZWZpbmVkKSBhcHBseUxvZ2ljKGJ1aWxkS1FMUXVlcnkoZmlsdGVyLCB2YWx1ZSkpO1xuICAgIH1cbiAgICBpZiAoZmV0Y2hUeXBlID09PSAnSGllcmFyY2h5RmlsdGVyJykge1xuICAgICAgYXBwbHlMb2dpYyhmaWx0ZXIpO1xuICAgIH1cblxuICAgIGRpc3BhdGNoKHNldEV2ZW50RmlsdGVyUGFyYW0oYnVpbGRLUUxRdWVyeShmaWx0ZXIsIHZhbHVlKSkpO1xuICAgIGRpc3BhdGNoKHNldEFjdGl2ZUZpbHRlckdsb2JhbGx5KGZpbHRlcikpO1xuICAgIC8vIEFsd2F5cyByZXNldCBwYWdlIHRvIDEgd2hlbiBhIG5ldyBmaWx0ZXIgaXMgYXBwbGllZFxuICAgIGRpc3BhdGNoKHNldFNhbXBsaW5nRGF0YSh7IGN1cnJlbnRQYWdlOiAxLCBpc0ZldGNoOiBmYWxzZSB9KSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRpb25DbGljayA9ICgpID0+IHtcbiAgICBjcmVhdGVGaWx0ZXIoYWN0aXZlRmlsdGVyQ29weSwgbmFtZUlucHV0LmN1cnJlbnQhLnZhbHVlKTtcbiAgICBuYW1lSW5wdXQuY3VycmVudCEudmFsdWUgPSAnJztcbiAgICBmaWx0ZXJDb250ZW50LmN1cnJlbnQhLmNsaWNrKCk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRXYUlkKGdldFdhSWRGcm9tVVJMKCkpO1xuICAgIGlmICghcmVuZGVyZWQpIHtcbiAgICAgIHNldFJlbmRlcmVkKHRydWUpO1xuICAgICAgZ2V0RGF0YSghcmVuZGVyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbSA9PT0gJycgJiYgZmlsdGVycy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgbGV0IGZpbHRlciA9IGZpbHRlcnMuZmluZCgoZmlsdGVyOiBJRmlsdGVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlci5pc19hY3RpdmU7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5KGZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgc2V0UmVuZGVyZWQoZmFsc2UpO1xuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLCBXYUlkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2BmaWx0ZXItY29udGFpbmVyICR7XG4gICAgICAgIGZpbHRlclBvcHVwT3BlbiA/ICcnIDogJ2ZpbHRlci1jb250YWluZXItLWhpZGRlbidcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHthY3RpdmVGaWx0ZXJDb3B5ICE9PSB1bmRlZmluZWQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2ZpbHRlci1jb250YWluZXJfX2NvbnRlbnQnfSByZWY9e2ZpbHRlckNvbnRlbnR9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmlsdGVyLWNvbnRhaW5lcl9fY29udGVudF9faGVhZGVyJ30+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RpdGxlJ30+XG4gICAgICAgICAgICAgIDxoND57aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLmZpbHRlcicpfTwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydhY3Rpb25zJ30+XG4gICAgICAgICAgICAgIDxEcm9wZG93biBjbGFzc05hbWU9eydhY3Rpb24nfT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd24uVG9nZ2xlIHZhcmlhbnQ9XCJzdWNjZXNzXCIgaWQ9XCJkcm9wZG93bi1iYXNpY1wiPlxuICAgICAgICAgICAgICAgICAgPExpc3RJY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInByZXNldC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTRweFwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMWQxZDFkXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB7YWN0aXZlRmlsdGVyQ29weS5uYW1lfXsnICd9XG4gICAgICAgICAgICAgICAgICB7YWN0aXZlRmlsdGVyQ29weS5pZCA9PT0gLTEgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxiPiAoe2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci51bnNhdmVkJyl9KSA8L2I+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLlRvZ2dsZT5cblxuICAgICAgICAgICAgICAgIDxGaWx0ZXJzRHJvcERvd25cbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVGaWx0ZXJDaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZUZpbHRlckNvcHk9e2FjdGl2ZUZpbHRlckNvcHl9XG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZUZpbHRlcj17YWN0aXZhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICBkZWxldGVGaWx0ZXI9e2RlbGV0ZUZpbHRlcn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duPlxuXG4gICAgICAgICAgICAgIDxEcm9wZG93biBjbGFzc05hbWU9eydhY3Rpb24nfT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd24uVG9nZ2xlIHZhcmlhbnQ9XCJzdWNjZXNzXCIgaWQ9XCJkcm9wZG93bi1iYXNpY1wiPlxuICAgICAgICAgICAgICAgICAgPFNhdmVJY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNhdmUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEzcHhcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEzcHhcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFkMWQxZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLmxhYmVsJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uVG9nZ2xlPlxuXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duLk1lbnU+XG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd24uSXRlbVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17YWN0aXZlRmlsdGVyQ29weS5pZCA9PT0gLTEgPyB0cnVlIDogZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzYXZlQWN0aXZlRmlsdGVyKGFjdGl2ZUZpbHRlckNvcHkpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLnNhdmUuZXhpc3RpbmcnKX1cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uSXRlbT5cbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93biBjbGFzc05hbWU9eydhY3Rpb24gYWN0aW9uLS1zYXZlJ30+XG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5Ub2dnbGUgdmFyaWFudD1cInN1Y2Nlc3NcIiBpZD1cImRyb3Bkb3duLWJhc2ljXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZpbHRlci5zYXZlLm5ldycpfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLlRvZ2dsZT5cblxuICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24uTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J25ldy1maWx0ZXItcG9wdXAnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVudHNfb3ZlcnZpZXcuZmlsdGVyLnNhdmUuZmllbGRfcGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmFtZSB0aGlzIGZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJiYXNpYy1hZGRvbjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25hbWVJbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ3JlYXRpb25DbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2RldmljZV9oZWFsdGhfc3RhdHVzLm9rJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5NZW51PlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLk1lbnU+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZmlsdGVyLWNvbnRhaW5lcl9fY29udGVudF9fYm9keSd9PlxuICAgICAgICAgICAgPEZpbHRlclxuICAgICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJDb3B5PXtzZXRBY3RpdmVGaWx0ZXJDb3B5fVxuICAgICAgICAgICAgICBhY3RpdmVGaWx0ZXJDb3B5PXthY3RpdmVGaWx0ZXJDb3B5fVxuICAgICAgICAgICAgICBhdmFpbGFibGVGaWx0ZXJJdGVtcz17YXZhaWxhYmxlRmlsdGVySXRlbXN9XG4gICAgICAgICAgICAgIHBhcnNlU2VsZWN0ZWRJdGVtcz17cGFyc2VTZWxlY3RlZEl0ZW1zfVxuICAgICAgICAgICAgICBhcHBseUZpbHRlcj17YXBwbHlGaWx0ZXJ9XG4gICAgICAgICAgICAgIHJlc2V0RmlsdGVyPXtyZXNldEZpbHRlciA/IGhhbmRsZVJlc2V0RmlsdGVyIDogbnVsbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3RvcihGaWx0ZXJDb250YWluZXIpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQXNFLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUFBLElBQUFPLEtBQUEsR0FBQVAsT0FBQTtBQU10RSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFLQSxJQUFBUyxLQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxJQUFBLEdBQUFWLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFXLE9BQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLGdCQUFBLEdBQUFULHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBYSxlQUFBLEdBQUFiLE9BQUE7QUFBcUUsU0FBQWMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFoQix3QkFBQW9CLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxV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