@kando-env/kando-ui 1.2.236 → 1.2.237

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 (592) hide show
  1. package/lib/Router.js +66 -4
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +41 -11
  3. package/lib/Widgets/EventsRow/EventsRow.js +41 -14
  4. package/lib/Widgets/Map/GraphUtils.js +4 -1
  5. package/lib/Widgets/Map/Map.js +62 -117
  6. package/lib/Widgets/Map/Map.scss +0 -67
  7. package/lib/Widgets/Map/MapUtils.js +67 -28
  8. package/lib/Widgets/Map/areas/AreaPolygon.js +27 -7
  9. package/lib/Widgets/Map/areas/AreaPolygons.js +23 -10
  10. package/lib/Widgets/Map/edges/Edge.js +31 -10
  11. package/lib/Widgets/Map/edges/Edge.scss +2 -7
  12. package/lib/Widgets/Map/edges/Edges.js +18 -24
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +22 -7
  14. package/lib/Widgets/Map/events/Event.js +23 -7
  15. package/lib/Widgets/Map/events/EventIndicator.js +43 -20
  16. package/lib/Widgets/Map/events/EventPath.js +20 -5
  17. package/lib/Widgets/Map/events/EventUtils.js +69 -26
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -10
  19. package/lib/Widgets/Map/events/PointOfEvent.js +37 -11
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +14 -4
  21. package/lib/Widgets/Map/events/Snail.js +19 -7
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +54 -15
  23. package/lib/Widgets/Map/map/FloatingGraph.js +19 -3
  24. package/lib/Widgets/Map/map/GraphDateButton.js +9 -3
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +11 -5
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +10 -4
  27. package/lib/Widgets/Map/points/PointMarker.js +35 -22
  28. package/lib/Widgets/Map/points/PointMarkers.js +26 -62
  29. package/lib/Widgets/Map/points/PointUtils.js +106 -85
  30. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +49 -15
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +19 -4
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +13 -1
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +5 -1
  34. package/lib/Widgets/MostPolluting/Areas/Areas.js +53 -19
  35. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
  36. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +7 -1
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -3
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +64 -30
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +21 -4
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +10 -1
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +17 -4
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +7 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
  45. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  46. package/lib/Widgets/MostPolluting/Factories/styles.js +7 -1
  47. package/lib/Widgets/MostPolluting/MostPolluting.js +18 -22
  48. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +17 -13
  49. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +9 -2
  50. package/lib/Widgets/MostPolluting/ShowMore/styles.js +5 -1
  51. package/lib/Widgets/MostPolluting/assets/index.js +28 -17
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.js +16 -1
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +26 -15
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +26 -4
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +33 -25
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +20 -4
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +43 -29
  58. package/lib/Widgets/MostPolluting/models.js +1 -1
  59. package/lib/Widgets/MostPolluting/styles.js +7 -1
  60. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +9 -2
  61. package/lib/Widgets/PotentialImpactSummary/Icon.js +11 -1
  62. package/lib/Widgets/PotentialImpactSummary/index.js +29 -7
  63. package/lib/Widgets/PotentialImpactSummary/index.test.js +36 -17
  64. package/lib/Widgets/PotentialImpactSummary/styles.js +15 -2
  65. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  66. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -4
  67. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +21 -7
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +29 -19
  69. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +24 -15
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +21 -7
  71. package/lib/Widgets/QualitySummary/QualitySummary.js +24 -8
  72. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
  73. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  74. package/lib/Widgets/QualitySummary/styles.js +15 -2
  75. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +20 -9
  76. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +34 -9
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +18 -9
  78. package/lib/Widgets/UtilityInformation/UtilityInformation.js +45 -22
  79. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  80. package/lib/Widgets/UtilityInformation/styles.js +22 -2
  81. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
  82. package/lib/assets/icons/index.js +8 -5
  83. package/lib/assets/icons/kandoStepper/index.js +14 -9
  84. package/lib/assets/icons/pin/pin-matash-white.svg +42 -8
  85. package/lib/assets/map/pin-matash-white.svg +28 -8
  86. package/lib/assets/map/pin-plant-white.svg +28 -6
  87. package/lib/assets/map/pin-suction.svg +23 -6
  88. package/lib/assets/map/pin-water.svg +17 -7
  89. package/lib/assets/point_icons/WWTP-icon.svg +21 -8
  90. package/lib/assets/point_icons/factory-icon.svg +21 -6
  91. package/lib/assets/point_icons/pump-station-icon.svg +16 -6
  92. package/lib/components/ApplyButton/ApplyButton.js +11 -5
  93. package/lib/components/ApplyButton/index.js +4 -1
  94. package/lib/components/Backdrop/Backdrop.js +8 -2
  95. package/lib/components/ContentLoader/ContentLoader.js +12 -7
  96. package/lib/components/ContentLoader/index.js +2 -1
  97. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +14 -7
  98. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +8 -2
  99. package/lib/components/CustomInputs/DoubleTabs/styles.js +10 -2
  100. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +18 -5
  101. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +5 -1
  102. package/lib/components/CustomInputs/Search/Search.js +38 -13
  103. package/lib/components/CustomInputs/Search/index.js +4 -1
  104. package/lib/components/CustomInputs/Select/Select.js +33 -33
  105. package/lib/components/CustomInputs/Select/Select.stories.js +8 -2
  106. package/lib/components/DamageType/DamageType.js +76 -37
  107. package/lib/components/DamageType/index.js +4 -1
  108. package/lib/components/DataLoaderError/DataLoaderError.js +10 -4
  109. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +16 -6
  110. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +37 -17
  111. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -12
  112. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -6
  113. package/lib/components/DischargeHeatmap/index.js +4 -1
  114. package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
  115. package/lib/components/DischargeHeatmap/popupText.js +16 -1
  116. package/lib/components/DischargeHeatmap/titles.js +8 -1
  117. package/lib/components/DischargeHeatmap/types.js +1 -1
  118. package/lib/components/ErrorBoundary.js +15 -3
  119. package/lib/components/Events/Events.js +30 -5
  120. package/lib/components/Events/index.js +4 -1
  121. package/lib/components/Graph/Graph.js +74 -31
  122. package/lib/components/Graph/index.js +4 -1
  123. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +7 -1
  124. package/lib/components/Header/Breadcrumbs/index.js +4 -1
  125. package/lib/components/Header/DoubleTabs/DoubleTabs.js +30 -14
  126. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +8 -2
  127. package/lib/components/Header/DoubleTabs/styles.js +10 -2
  128. package/lib/components/Header/Header.js +7 -1
  129. package/lib/components/Header/Header.stories.js +8 -2
  130. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +11 -1
  131. package/lib/components/Header/InfoBar/InfoBar.js +30 -10
  132. package/lib/components/Header/InfoBar/Search/Control.js +13 -2
  133. package/lib/components/Header/InfoBar/Search/GroupLabel.js +12 -1
  134. package/lib/components/Header/InfoBar/Search/Search.js +26 -5
  135. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -4
  136. package/lib/components/Header/InfoBar/Search/index.js +4 -1
  137. package/lib/components/Header/InfoBar/Search/searchStyle.js +4 -1
  138. package/lib/components/Header/KandoNavbar/KandoNavbar.js +91 -46
  139. package/lib/components/Header/KandoNavbar/index.js +4 -1
  140. package/lib/components/Header/Slideshow/Slideshow.js +67 -31
  141. package/lib/components/Header/Slideshow/index.js +4 -1
  142. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -1
  143. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +15 -2
  144. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +15 -1
  145. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +24 -7
  146. package/lib/components/Header/Toolbar/Toolbar.js +84 -46
  147. package/lib/components/InfoBar/InfoBar.js +23 -8
  148. package/lib/components/InfoBar/InfoBar.stories.js +8 -2
  149. package/lib/components/KandoModal/KandoModal.js +42 -19
  150. package/lib/components/KandoModal/index.js +4 -1
  151. package/lib/components/Link.js +11 -2
  152. package/lib/components/Links/CustomRedirect/CustomRedirect.js +12 -3
  153. package/lib/components/Links/StyledLink/StyledLink.js +16 -6
  154. package/lib/components/Links/StyledNavLink/StyledNavLink.js +14 -4
  155. package/lib/components/LiveEvents/CarouselSlide.js +11 -5
  156. package/lib/components/LiveEvents/LiveEvents.js +10 -1
  157. package/lib/components/LiveEvents/index.js +4 -1
  158. package/lib/components/LoaderByPercent/LoaderByPercent.js +23 -13
  159. package/lib/components/Map/Map.js +26 -12
  160. package/lib/components/Map/index.js +4 -1
  161. package/lib/components/Modal/Modal.js +10 -3
  162. package/lib/components/NarrowHeader.js +12 -1
  163. package/lib/components/PointInfo/PointInfo.js +22 -10
  164. package/lib/components/PointInfo/index.js +4 -1
  165. package/lib/components/PopupModal/PopupModal.js +17 -6
  166. package/lib/components/PopupModal/PopupModal.stories.js +11 -2
  167. package/lib/components/Sector/Sector.js +13 -4
  168. package/lib/components/Sector/Sector.test.js +8 -3
  169. package/lib/components/Sector/index.js +4 -1
  170. package/lib/components/Sector/sectorIcons.js +27 -1
  171. package/lib/components/SevereEvent/Eta/Eta.js +40 -20
  172. package/lib/components/SevereEvent/Eta/styles.js +5 -1
  173. package/lib/components/SevereEvent/SevereEvent.js +36 -15
  174. package/lib/components/Spinner/Spinner.js +10 -5
  175. package/lib/components/Spinner/Spinner.stories.js +8 -2
  176. package/lib/components/Spinner/index.js +4 -1
  177. package/lib/components/Spinner/styles.js +9 -1
  178. package/lib/components/Tabs/Tabs.js +24 -4
  179. package/lib/components/Tabs/Tabs.stories.js +8 -2
  180. package/lib/components/Tabs/assets/index.js +6 -1
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -2
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +43 -12
  183. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +36 -12
  184. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -1
  185. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +29 -9
  186. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +9 -4
  187. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -1
  188. package/lib/components/TimeRangeSelector/TimeRangeList.js +13 -4
  189. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +24 -11
  190. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +36 -11
  191. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -2
  192. package/lib/components/TimeRangeSelector/constants.js +2 -2
  193. package/lib/components/TimeRangeSelector/index.js +4 -1
  194. package/lib/components/Toggle/Toggle.js +21 -7
  195. package/lib/components/Toggle/index.js +4 -1
  196. package/lib/components/TrendGraph/TrendGraph.js +49 -16
  197. package/lib/components/TrendGraph/index.js +4 -1
  198. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +36 -11
  199. package/lib/components/TrendGraphNVL/index.js +4 -1
  200. package/lib/development-environment/index.js +13 -1
  201. package/lib/development-environment/mock/browser.js +8 -1
  202. package/lib/development-environment/mock/get.js +5 -1
  203. package/lib/development-environment/mock/handlers.js +26 -1
  204. package/lib/development-environment/mock/mockBus.js +7 -2
  205. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
  206. package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
  207. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
  208. package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
  209. package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
  210. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
  211. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
  212. package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
  213. package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
  214. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
  215. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
  216. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
  217. package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
  218. package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
  219. package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
  220. package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
  221. package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
  222. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
  223. package/lib/development-environment/togly/ToglyDashboard.js +22 -4
  224. package/lib/development-environment/togly/ToglyItem.js +25 -5
  225. package/lib/development-environment/togly/flags.js +1 -1
  226. package/lib/development-environment/togly/init.js +6 -1
  227. package/lib/development-environment/togly/macro.js +9 -7
  228. package/lib/development-environment/togly/useDoubleKeyDown.js +8 -1
  229. package/lib/development-environment/togly/useLocalStorage.js +19 -12
  230. package/lib/hooks/useApi.js +29 -10
  231. package/lib/hooks/useApiWithDashboardQuery.js +30 -10
  232. package/lib/hooks/useClickOutside.js +5 -1
  233. package/lib/hooks/useInitializeHeaders.js +7 -1
  234. package/lib/hooks/useKandoFetch.js +27 -13
  235. package/lib/hooks/useMap.js +52 -11
  236. package/lib/hooks/useNavContext.js +22 -13
  237. package/lib/hooks/useQueryURL.js +4 -1
  238. package/lib/hooks/useRemoveExistingLayers.js +7 -2
  239. package/lib/hooks/useUpdateEventBodyTail.js +10 -1
  240. package/lib/hooks/useUserTimeZone.js +9 -1
  241. package/lib/hooks/useUserTimeZone.test.js +9 -1
  242. package/lib/hooks/useWindowSize.js +19 -14
  243. package/lib/i18n/en.json +8 -36
  244. package/lib/i18n/en_uk.json +1 -24
  245. package/lib/i18n/fr.json +0 -23
  246. package/lib/i18n/he.json +0 -30
  247. package/lib/i18n/it.json +0 -23
  248. package/lib/index.js +29 -21
  249. package/lib/macros/getVersion.js +3 -2
  250. package/lib/models/IAction.js +1 -1
  251. package/lib/models/IAppState.js +1 -1
  252. package/lib/pages/AreaPage/AreaPage.js +34 -5
  253. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -6
  254. package/lib/pages/AreaPage/Dashboard/Dashboard.js +23 -2
  255. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +35 -11
  256. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +8 -6
  257. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +65 -46
  258. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +10 -1
  259. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +15 -3
  260. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +7 -3
  261. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  262. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
  263. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +10 -2
  264. package/lib/pages/AssessmentPage/AssessmentPage.js +30 -5
  265. package/lib/pages/CannyWidget/Feedback.js +25 -10
  266. package/lib/pages/CovidPage/CovidPage.js +14 -1
  267. package/lib/pages/CovidPage/components/Body.js +33 -9
  268. package/lib/pages/CovidPage/components/Map.js +38 -20
  269. package/lib/pages/CovidPage/components/Sidebar.js +18 -4
  270. package/lib/pages/CovidPage/components/Summary.js +29 -8
  271. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +36 -11
  272. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -1
  273. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +41 -13
  274. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -1
  275. package/lib/pages/CovidPage/components/areas/Area.js +33 -6
  276. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -4
  277. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +18 -5
  278. package/lib/pages/CovidPage/components/areas/AreasList.js +33 -14
  279. package/lib/pages/CovidPage/components/areas/Sort.js +19 -5
  280. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -2
  281. package/lib/pages/EventsPage/Body/Body.js +19 -2
  282. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +28 -11
  283. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +31 -11
  284. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +11 -4
  285. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -3
  286. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +10 -5
  287. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -1
  288. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +36 -26
  289. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +24 -5
  290. package/lib/pages/EventsPage/EventsPage.js +13 -1
  291. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +32 -9
  292. package/lib/pages/EventsPage/events/MoreInfo.js +19 -1
  293. package/lib/pages/EventsPage/events/Sidebar.js +18 -5
  294. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +29 -5
  295. package/lib/pages/EventsPage/events/event_info/EventDetails.js +32 -8
  296. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -14
  297. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +14 -2
  298. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +40 -10
  299. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +12 -1
  300. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -8
  301. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +8 -1
  302. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +27 -7
  303. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +10 -2
  304. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -5
  305. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +23 -4
  306. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +22 -4
  307. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +33 -6
  308. package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +15 -3
  309. package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +10 -2
  310. package/lib/pages/EventsPage/events/event_info/sources/Source.js +31 -8
  311. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +20 -4
  312. package/lib/pages/EventsPage/events/events_list/EventItem.js +24 -3
  313. package/lib/pages/EventsPage/events/events_list/EventUtils.js +13 -2
  314. package/lib/pages/EventsPage/events/events_list/EventsList.js +111 -54
  315. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +32 -11
  316. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +96 -35
  317. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +55 -10
  318. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +17 -5
  319. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +38 -15
  320. package/lib/pages/EventsPage/events/events_list/Sort.js +23 -4
  321. package/lib/pages/ImportFileWizard/FileUploadRespones.js +19 -4
  322. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -2
  323. package/lib/pages/ImportFileWizard/ImportFile.js +29 -10
  324. package/lib/pages/ImportFileWizard/ResponseBody.js +12 -3
  325. package/lib/pages/ImportFileWizard/ValidationForm.js +27 -7
  326. package/lib/pages/ImportFileWizard/ValidationResponse.js +30 -6
  327. package/lib/pages/ImportFileWizard/importFileUtils.js +2 -1
  328. package/lib/pages/ImportFileWizard/index.js +4 -1
  329. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -7
  330. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +27 -10
  331. package/lib/pages/ImportGisPage/importGisUtils.js +13 -1
  332. package/lib/pages/ImportGisProcess/index.js +18 -4
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +19 -5
  334. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +10 -3
  335. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +8 -1
  336. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +58 -25
  337. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -2
  338. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -8
  339. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  340. package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
  341. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -2
  342. package/lib/pages/NotificationsPage/NotificationsPage.js +35 -11
  343. package/lib/pages/NotificationsPage/assets/index.js +24 -15
  344. package/lib/pages/NotificationsPageV2/NotificationsPage.js +83 -35
  345. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +24 -4
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +46 -27
  347. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +49 -18
  348. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +47 -4
  349. package/lib/pages/NotificationsPageV2/notificationUtils.js +30 -2
  350. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  351. package/lib/pages/OldSitePage/OldSitePage.js +77 -16
  352. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +16 -3
  353. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +8 -2
  354. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -4
  355. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +12 -5
  356. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -2
  357. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +23 -7
  358. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +20 -6
  359. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +10 -4
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -2
  361. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +24 -9
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +12 -4
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +59 -28
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  366. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +18 -3
  367. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +15 -2
  368. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +16 -8
  369. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +16 -1
  370. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  371. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +10 -2
  372. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +7 -2
  373. package/lib/pages/ProfilePage/Container.js +6 -2
  374. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +43 -16
  375. package/lib/pages/ProfilePage/ProfilePage.js +115 -172
  376. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +32 -9
  377. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +17 -7
  378. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +14 -3
  379. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +48 -18
  380. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +21 -4
  381. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +15 -7
  382. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +29 -8
  383. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -6
  384. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +21 -9
  385. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -1
  386. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -1
  387. package/lib/pages/SamplingsPage/NavigationDropdown.js +21 -3
  388. package/lib/pages/SamplingsPage/NewSamplingAction.js +84 -38
  389. package/lib/pages/SamplingsPage/SamplingMobileModal.js +65 -12
  390. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +19 -5
  391. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +13 -2
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +56 -22
  393. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +20 -4
  394. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +14 -1
  395. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +112 -40
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +42 -11
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -14
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -15
  399. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -5
  400. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +8 -2
  401. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -1
  402. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +36 -7
  403. package/lib/pages/SamplingsPage/SamplingsMobileList.js +34 -10
  404. package/lib/pages/SamplingsPage/SamplingsPage.js +39 -14
  405. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +48 -14
  406. package/lib/pages/SamplingsPage/index.js +3 -1
  407. package/lib/pages/SamplingsPage/samplingsPageUtils.js +30 -7
  408. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +10 -2
  409. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +8 -2
  410. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +17 -3
  411. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +11 -6
  412. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -15
  413. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -7
  414. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +27 -18
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -2
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +26 -9
  417. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +20 -6
  418. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +10 -4
  419. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -2
  420. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +24 -9
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +12 -4
  422. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +68 -32
  423. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  424. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  425. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +19 -4
  426. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +15 -2
  427. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +38 -17
  428. package/lib/pages/SitePage/SamplingParameters/dataParser.js +29 -13
  429. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +7 -3
  430. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  431. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +10 -2
  432. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +8 -2
  433. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +12 -5
  434. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -1
  435. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +15 -5
  436. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +48 -17
  437. package/lib/pages/SitePage/SiteInformation/style.js +8 -2
  438. package/lib/pages/SitePage/SitePage.js +49 -10
  439. package/lib/pages/UploadLabResult/index.js +8 -1
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -9
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +9 -2
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +16 -2
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +8 -2
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +35 -9
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +5 -1
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +7 -1
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +10 -1
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +16 -7
  449. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  450. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +10 -1
  451. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +5 -1
  452. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +25 -3
  453. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +19 -13
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +18 -9
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +20 -5
  456. package/lib/pages/WbeDashboard/ExpandableComponent.js +12 -2
  457. package/lib/pages/WbeDashboard/GraphWrapper.js +27 -6
  458. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -6
  459. package/lib/pages/WbeDashboard/SearchInput.js +22 -4
  460. package/lib/pages/WbeDashboard/SummaryGraph.js +49 -16
  461. package/lib/pages/WbeDashboard/SummaryGraphModal.js +13 -1
  462. package/lib/pages/WbeDashboard/Tabs.js +9 -3
  463. package/lib/pages/WbeDashboard/WbeDashboardPage.js +124 -38
  464. package/lib/pages/WbeDashboard/WbeSummaryBar.js +45 -11
  465. package/lib/providers/Slideshow/SlideshowContext.js +5 -3
  466. package/lib/providers/Slideshow/SlideshowProvider.js +31 -16
  467. package/lib/providers/Slideshow/SlideshowRunner.js +17 -7
  468. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -3
  469. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -1
  470. package/lib/providers/UrlHistory/index.js +8 -5
  471. package/lib/providers/UrlHistory/useLastVisited.js +7 -1
  472. package/lib/react-app-env.d.js +1 -1
  473. package/lib/store/ImportGis/action.js +1 -1
  474. package/lib/store/ImportGis/actionTypes.js +2 -1
  475. package/lib/store/ImportGis/actionsCreator.js +17 -7
  476. package/lib/store/ImportGis/models/gisImports.js +1 -1
  477. package/lib/store/ImportGis/reducer.js +17 -1
  478. package/lib/store/WBE/actionTypes.js +1 -1
  479. package/lib/store/WBE/actions.js +3 -1
  480. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  481. package/lib/store/WBE/models/IWBE.js +1 -1
  482. package/lib/store/WBE/models/IWBEState.js +1 -1
  483. package/lib/store/WBE/reducer.js +9 -2
  484. package/lib/store/areas/actionTypes.js +2 -2
  485. package/lib/store/areas/actions.js +11 -2
  486. package/lib/store/areas/models/IArea.js +1 -1
  487. package/lib/store/areas/models/IAreasState.js +1 -1
  488. package/lib/store/areas/reducer.js +9 -1
  489. package/lib/store/context/actionTypes.js +2 -2
  490. package/lib/store/context/actions.js +6 -2
  491. package/lib/store/context/contextMiddlewares.js +9 -1
  492. package/lib/store/context/models/INavContext.js +1 -1
  493. package/lib/store/context/models/INavContextState.js +1 -1
  494. package/lib/store/context/reducer.js +9 -2
  495. package/lib/store/dashboard/dashboardSlice.js +3 -1
  496. package/lib/store/dashboard/periodType.js +1 -1
  497. package/lib/store/edges/actionTypes.js +2 -2
  498. package/lib/store/edges/actions.js +9 -3
  499. package/lib/store/edges/models/IEdge.js +1 -1
  500. package/lib/store/edges/models/IEdgesState.js +1 -1
  501. package/lib/store/edges/reducer.js +16 -2
  502. package/lib/store/events/actionTypes.js +2 -2
  503. package/lib/store/events/actions.js +30 -12
  504. package/lib/store/events/models/IEvent.js +1 -1
  505. package/lib/store/events/models/IEventsState.js +1 -1
  506. package/lib/store/events/models/ISource.js +1 -1
  507. package/lib/store/events/reducer.js +41 -3
  508. package/lib/store/filters/IFilter.js +1 -1
  509. package/lib/store/filters/IFilterItem.js +1 -1
  510. package/lib/store/global/actionTypes.js +2 -2
  511. package/lib/store/global/actions.js +20 -8
  512. package/lib/store/global/models/IGlobalState.js +1 -1
  513. package/lib/store/global/reducer.js +18 -2
  514. package/lib/store/permissions/permissionsSlice.js +6 -1
  515. package/lib/store/points/actionTypes.js +2 -2
  516. package/lib/store/points/actions.js +5 -1
  517. package/lib/store/points/models/IGroup.js +1 -1
  518. package/lib/store/points/models/IPoint.js +1 -1
  519. package/lib/store/points/models/IPointsState.js +1 -1
  520. package/lib/store/points/reducer.js +7 -1
  521. package/lib/store/rootActionTypes.js +1 -1
  522. package/lib/store/rootActions.js +3 -1
  523. package/lib/store/rootReducer.js +23 -4
  524. package/lib/store/rootStore.js +12 -4
  525. package/lib/store/samplings/action.js +1 -1
  526. package/lib/store/samplings/actionTypes.js +2 -1
  527. package/lib/store/samplings/actionsCreator.js +5 -2
  528. package/lib/store/samplings/models/Samplings.js +1 -1
  529. package/lib/store/samplings/reducer.js +9 -1
  530. package/lib/styles/StylesLayout.js +7 -1
  531. package/lib/styles/theme/theme.js +4 -2
  532. package/lib/test/mocks/browser.js +7 -3
  533. package/lib/test/test-utils.js +21 -11
  534. package/lib/ui-kit/Button/Button.js +23 -15
  535. package/lib/ui-kit/Button/Button.test.js +26 -6
  536. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  537. package/lib/ui-kit/Checkbox/Checkbox.js +21 -7
  538. package/lib/ui-kit/DropDown/DropDown.js +16 -5
  539. package/lib/ui-kit/DropDown/DropDown.test.js +12 -6
  540. package/lib/ui-kit/DropDown/DropDownItem.js +13 -5
  541. package/lib/ui-kit/DropDown/DropdownToggle.js +13 -2
  542. package/lib/ui-kit/IconAction/IconAction.js +9 -3
  543. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +54 -16
  544. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +28 -24
  545. package/lib/ui-kit/KandoList/KandoList.js +16 -5
  546. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  547. package/lib/ui-kit/KandoTable/KandoTable.js +36 -22
  548. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -1
  549. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  550. package/lib/ui-kit/Layout/Layout.js +8 -1
  551. package/lib/ui-kit/MobileInput/MobileInput.js +33 -18
  552. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -8
  553. package/lib/ui-kit/ModalConfirmation/index.js +3 -1
  554. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -5
  555. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +11 -3
  556. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +11 -4
  557. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +14 -5
  558. package/lib/ui-kit/Tooltip/Tooltip.js +8 -3
  559. package/lib/ui-kit/index.js +15 -1
  560. package/lib/ui-kit/kandoStepper/KandoStepper.js +7 -2
  561. package/lib/utilities/ActionUtility.js +2 -1
  562. package/lib/utilities/Alert.js +10 -2
  563. package/lib/utilities/Analytics.js +12 -2
  564. package/lib/utilities/Array.js +6 -2
  565. package/lib/utilities/Enum.js +16 -12
  566. package/lib/utilities/ErrorBoundary.js +18 -3
  567. package/lib/utilities/File.js +24 -5
  568. package/lib/utilities/GetDir.js +8 -4
  569. package/lib/utilities/KandoDate.js +7 -1
  570. package/lib/utilities/KandoModal.js +22 -7
  571. package/lib/utilities/LocalStorage.js +13 -2
  572. package/lib/utilities/ThousandsToK.js +3 -1
  573. package/lib/utilities/TimeFormat.js +19 -6
  574. package/lib/utilities/Truncate.js +27 -7
  575. package/lib/utilities/edgesMath.js +26 -9
  576. package/lib/utilities/i18n.js +14 -1
  577. package/lib/utilities/kql.js +10 -3
  578. package/lib/utilities/map/icons.js +20 -19
  579. package/lib/utilities/scoreToColor.js +8 -1
  580. package/lib/utilities/time.js +9 -2
  581. package/lib/utilities/uploadToS3.js +9 -1
  582. package/lib/utilities/urls.js +12 -4
  583. package/package.json +4 -9
  584. package/lib/Widgets/Map/points/PointIcon.js +0 -44
  585. package/lib/Widgets/Map/points/PointIcon.scss +0 -230
  586. package/lib/assets/icons/plus_v.svg +0 -13
  587. package/lib/assets/icons/water_reuse.svg +0 -27
  588. package/lib/assets/map/pin-matash-clicked.svg +0 -12
  589. package/lib/assets/map/pin-plant-clicked.svg +0 -10
  590. package/lib/assets/map/pin-suction-clicked.svg +0 -10
  591. package/lib/assets/map/pin-water-clicked.svg +0 -11
  592. package/lib/utilities/polylinedecorator.js +0 -383
@@ -1,104 +1,161 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.WbeDashboardPage = exports.WBEIsraelId = void 0;
11
+
9
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
13
+
10
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
15
+
11
16
  var _styledComponents = _interopRequireDefault(require("styled-components"));
17
+
12
18
  var _react = _interopRequireWildcard(require("react"));
19
+
13
20
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
21
+
14
22
  var _reactRedux = require("react-redux");
23
+
15
24
  var _reactRouterDom = require("react-router-dom");
25
+
16
26
  var _Analytics = require("../../utilities/Analytics");
27
+
17
28
  var _SearchInput = require("./SearchInput");
29
+
18
30
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
31
+
19
32
  var _GraphWrapper = require("./GraphWrapper");
33
+
20
34
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
35
+
21
36
  var _actions = require("../../store/context/actions");
37
+
22
38
  var _ThousandsToK = require("../../utilities/ThousandsToK");
39
+
23
40
  var _DrillDownIcon = require("@svgr/webpack?-svgo!./DrillDownIcon.svg");
41
+
24
42
  var _BaseLevel = require("@svgr/webpack?-svgo!./BaseLevel.svg");
43
+
25
44
  var _reactDataTableComponent = require("react-data-table-component");
45
+
26
46
  var _nvlStatusHelper = require("../CovidPage/components/nvlStatusHelper");
47
+
27
48
  var _Map = require("../../Widgets/Map/Map");
49
+
28
50
  var _KandoTable = require("ui-kit/KandoTable/KandoTable");
51
+
29
52
  var _Tabs = require("./Tabs");
53
+
30
54
  var _useKandoFetch2 = _interopRequireDefault(require("../../hooks/useKandoFetch"));
55
+
31
56
  var _useQueryURL = _interopRequireDefault(require("../../hooks/useQueryURL"));
57
+
32
58
  var _Dropdown = _interopRequireDefault(require("react-bootstrap/cjs/Dropdown"));
59
+
33
60
  var _DropdownButton = _interopRequireDefault(require("react-bootstrap/cjs/DropdownButton"));
61
+
34
62
  var _axios = _interopRequireDefault(require("axios"));
63
+
35
64
  var _Truncate = _interopRequireDefault(require("../../utilities/Truncate"));
65
+
36
66
  var _ExpandableComponent = require("./ExpandableComponent");
67
+
37
68
  var _Spinner = require("../../components/Spinner/Spinner");
69
+
38
70
  var _WbeSummaryBar = require("./WbeSummaryBar");
71
+
39
72
  var _ErrorBoundary = _interopRequireDefault(require("../../utilities/ErrorBoundary"));
73
+
40
74
  var _theme = require("../../styles/theme/theme");
75
+
41
76
  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); }
77
+
42
78
  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; }
79
+
43
80
  var TABLE_ROWS_PER_PAGE = 25;
44
81
  var MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
45
82
  var WBEIsraelId = 463;
46
83
  exports.WBEIsraelId = WBEIsraelId;
84
+
47
85
  var WbeDashboardPage = function WbeDashboardPage() {
48
86
  var getWAId = function getWAId() {
49
87
  return query.get('water_authority_id');
50
88
  };
89
+
51
90
  var fetchUrl = function fetchUrl(firstParam) {
52
91
  return "/api_ui/wbe_dashboard/".concat(selectedPathogen, "/").concat(firstParam, "?water_authority_id=").concat(getWAId());
53
92
  };
93
+
54
94
  var DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
95
+
55
96
  var convertTabNameToParam = function convertTabNameToParam(tab_name) {
56
97
  if (tab_name === _i18n.default.t('components.wbe_dashboard.cities')) {
57
98
  return 'city';
58
99
  } else if (tab_name === _i18n.default.t('components.wbe_dashboard.monitored_areas')) {
59
100
  return 'monitored';
60
101
  }
102
+
61
103
  return 'city';
62
104
  };
105
+
63
106
  var query = (0, _useQueryURL.default)();
107
+
64
108
  var getPathogen = function getPathogen() {
65
- return query.get('pathogen') || 'covid';
109
+ return query.get('pathogen') || '';
66
110
  };
67
- var pathogens = (0, _reactRedux.useSelector)(function (state) {
68
- return state.permissions.pathogens;
111
+
112
+ var pathogens = (0, _reactRedux.useSelector)(function (_ref) {
113
+ var permissions = _ref.permissions;
114
+ return permissions.pathogens;
69
115
  });
116
+
70
117
  var _useState = (0, _react.useState)([]),
71
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
72
- currentData = _useState2[0],
73
- setCurrentData = _useState2[1];
74
- var _useState3 = (0, _react.useState)([]),
75
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
76
- mapAreas = _useState4[0],
77
- setMapAreas = _useState4[1];
118
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
119
+ currentData = _useState2[0],
120
+ setCurrentData = _useState2[1];
121
+
122
+ var _useState3 = (0, _react.useState)(pathogens.find(function (item) {
123
+ return item.toLowerCase() === getPathogen().toLowerCase();
124
+ }) || ''),
125
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
126
+ selectedPathogen = _useState4[0],
127
+ setSelectedPathogen = _useState4[1];
128
+
78
129
  var _useState5 = (0, _react.useState)([]),
79
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
80
- mapZoom = _useState6[0],
81
- setMapZoom = _useState6[1];
130
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
131
+ mapAreas = _useState6[0],
132
+ setMapAreas = _useState6[1];
133
+
82
134
  var _useState7 = (0, _react.useState)([]),
83
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
84
- rows = _useState8[0],
85
- setRows = _useState8[1];
86
- var _useState9 = (0, _react.useState)(DEFAULT_TABS),
87
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
88
- tabs = _useState10[0],
89
- setTabs = _useState10[1];
90
- var _useState11 = (0, _react.useState)(tabs[0]),
91
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
92
- selectedTab = _useState12[0],
93
- setSelectedTab = _useState12[1];
94
- var _useState13 = (0, _react.useState)(getPathogen()),
95
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
96
- selectedPathogen = _useState14[0],
97
- setSelectedPathogen = _useState14[1];
135
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
136
+ mapZoom = _useState8[0],
137
+ setMapZoom = _useState8[1];
138
+
139
+ var _useState9 = (0, _react.useState)([]),
140
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
141
+ rows = _useState10[0],
142
+ setRows = _useState10[1];
143
+
144
+ var _useState11 = (0, _react.useState)(DEFAULT_TABS),
145
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
146
+ tabs = _useState12[0],
147
+ setTabs = _useState12[1];
148
+
149
+ var _useState13 = (0, _react.useState)(tabs[0]),
150
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
151
+ selectedTab = _useState14[0],
152
+ setSelectedTab = _useState14[1];
153
+
98
154
  var _useKandoFetch = (0, _useKandoFetch2.default)(fetchUrl(convertTabNameToParam(selectedTab))),
99
- data = _useKandoFetch.data,
100
- isFetching = _useKandoFetch.isFetching,
101
- setFetching = _useKandoFetch.setFetching;
155
+ data = _useKandoFetch.data,
156
+ isFetching = _useKandoFetch.isFetching,
157
+ setFetching = _useKandoFetch.setFetching;
158
+
102
159
  var dispatch = (0, _reactRedux.useDispatch)();
103
160
  var navContext = (0, _reactRedux.useSelector)(function (state) {
104
161
  return state.nav_context_data.navContext;
@@ -107,8 +164,10 @@ var WbeDashboardPage = function WbeDashboardPage() {
107
164
  return state.global_data;
108
165
  });
109
166
  var isRtl = navContext.locale === 'he' ? true : false;
167
+
110
168
  var colorForRow = function colorForRow(row) {
111
169
  var quality;
170
+
112
171
  if (!row.sample_active) {
113
172
  quality = 'inactive-sampling';
114
173
  } else if (isInfected(row.nvl)) {
@@ -116,8 +175,10 @@ var WbeDashboardPage = function WbeDashboardPage() {
116
175
  } else {
117
176
  quality = 'clean';
118
177
  }
178
+
119
179
  return "row_name--".concat(quality);
120
180
  };
181
+
121
182
  var columns = _react.default.useMemo(function () {
122
183
  return [{
123
184
  name: _i18n.default.t('components.wbe_dashboard.name'),
@@ -213,14 +274,17 @@ var WbeDashboardPage = function WbeDashboardPage() {
213
274
  }
214
275
  }];
215
276
  }, [isRtl, selectedPathogen]);
277
+
216
278
  var initializeMapAreas = function initializeMapAreas(areas) {
217
279
  var mappedWithColor = areas.map(function (a) {
218
280
  a.wbe_dashboard_name = a.name;
219
281
  a.showColorOnlyInBorders = true;
282
+
220
283
  if (!a.sample_active) {
221
284
  a.color = _theme.theme.colorScheme.natural.n60;
222
285
  return a;
223
286
  }
287
+
224
288
  if (isInfected(a.nvl)) {
225
289
  a.color = _theme.theme.colorScheme.data.R100;
226
290
  return a;
@@ -231,41 +295,50 @@ var WbeDashboardPage = function WbeDashboardPage() {
231
295
  });
232
296
  setMapAreas(mappedWithColor);
233
297
  };
298
+
234
299
  var zoomToArea = function zoomToArea(area) {
235
300
  area.shape_data !== undefined && setMapZoom(area.shape_data);
236
301
  };
302
+
237
303
  var zoomAllAreas = function zoomAllAreas(data) {
238
304
  var shapeData = data.map(function (datum) {
239
305
  return datum.shape_data;
240
306
  });
241
307
  setMapZoom(shapeData);
242
308
  };
309
+
243
310
  var isInfected = function isInfected(nvl) {
244
311
  if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'clean') {
245
312
  return false;
246
313
  } else if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'low' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'medium' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'high') {
247
314
  return true;
248
315
  }
316
+
249
317
  return;
250
318
  };
319
+
251
320
  var history = (0, _reactRouterDom.useHistory)();
252
321
  var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
253
322
  return state.global_data.waterAuthorityId;
254
323
  });
255
324
  var dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
325
+
256
326
  var filterResultsAndSetRows = function filterResultsAndSetRows(text) {
257
327
  var results = currentData.filter(function (el) {
258
328
  return el.name.toLowerCase().includes(text.toLowerCase());
259
329
  });
260
330
  setRows(results);
261
331
  };
332
+
262
333
  var handleOnRowExpand = function handleOnRowExpand(expanded, row) {
263
334
  expanded && zoomToArea(row);
264
335
  !expanded && zoomAllAreas(data);
265
336
  };
337
+
266
338
  var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
267
339
  return state.global_data.waterAuthorityName;
268
340
  });
341
+
269
342
  var handleSelectPathogenClick = function handleSelectPathogenClick(pathogen) {
270
343
  (0, _Analytics.analyticsTrack)('WBE Status Report - Pathogen change clicked', {
271
344
  pathogen: pathogen,
@@ -274,8 +347,10 @@ var WbeDashboardPage = function WbeDashboardPage() {
274
347
  setSelectedPathogen(pathogen);
275
348
  history.push("/wbe_dashboard/index?locale=".concat(navContext.locale, "&water_authority_id=").concat(waterAuthorityId, "&pathogen=").concat(pathogen));
276
349
  };
350
+
277
351
  var fetchForTabSelection = function fetchForTabSelection(tab) {
278
352
  setFetching(true);
353
+
279
354
  _axios.default.get(fetchUrl(tab)).then(function (response) {
280
355
  var responseData = response.data.data;
281
356
  setFetching(false);
@@ -286,15 +361,18 @@ var WbeDashboardPage = function WbeDashboardPage() {
286
361
  zoomAllAreas(responseData);
287
362
  });
288
363
  };
364
+
289
365
  var handleTabSelectionClick = function handleTabSelectionClick(tab) {
290
366
  if (!isFetching) {
291
367
  setSelectedTab(tab);
368
+
292
369
  if (tab !== _i18n.default.t('components.wbe_dashboard.custom')) {
293
370
  tab = tab === _i18n.default.t('components.wbe_dashboard.cities') ? 'city' : tab === _i18n.default.t('components.wbe_dashboard.monitored_areas') ? 'monitored' : '';
294
371
  fetchForTabSelection(tab);
295
372
  }
296
373
  }
297
374
  };
375
+
298
376
  var initializeDrilledArea = function initializeDrilledArea(response) {
299
377
  var data = response.data.data;
300
378
  setRows(data);
@@ -302,16 +380,20 @@ var WbeDashboardPage = function WbeDashboardPage() {
302
380
  initializeMapAreas(data);
303
381
  zoomAllAreas(data);
304
382
  };
383
+
305
384
  var handleAreaClick = function handleAreaClick(area) {
306
385
  zoomToArea(area);
386
+
307
387
  if (area.has_children) {
308
388
  setTabs([].concat((0, _toConsumableArray2.default)(tabs), [_i18n.default.t('components.wbe_dashboard.custom')]));
309
389
  setSelectedTab(_i18n.default.t('components.wbe_dashboard.custom'));
390
+
310
391
  _axios.default.get(fetchUrl(area.id)).then(function (response) {
311
392
  initializeDrilledArea(response);
312
393
  });
313
394
  }
314
395
  };
396
+
315
397
  var initializeComponent = function initializeComponent() {
316
398
  setCurrentData(data);
317
399
  setRows(data);
@@ -324,19 +406,16 @@ var WbeDashboardPage = function WbeDashboardPage() {
324
406
  initializeMapAreas(data);
325
407
  zoomAllAreas(data);
326
408
  };
409
+
327
410
  (0, _react.useEffect)(function () {
328
411
  if (!isFetching && data !== null) {
329
412
  initializeComponent();
330
413
  }
331
414
  }, [isFetching, selectedPathogen, data]);
332
- var pathogenTitle = pathogens.find(function (item) {
333
- return item.toLowerCase() === selectedPathogen.toLowerCase();
334
- });
335
- var dropDownTitle = pathogenTitle || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
336
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, "".concat(_i18n.default.t('components.wbe_dashboard.table_name'), " (").concat(pathogenTitle || getPathogen(), ")")), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, pathogens.length > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
415
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, "".concat(_i18n.default.t('components.wbe_dashboard.table_name'), " (").concat(selectedPathogen || getPathogen(), ")")), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, pathogens.length > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
337
416
  id: "dropdown-basic-button",
338
417
  className: 'button button--sort',
339
- title: dropDownTitle + ' ',
418
+ title: selectedPathogen + ' ',
340
419
  variant: "secondary"
341
420
  }, pathogens.map(function (pathogen) {
342
421
  return /*#__PURE__*/_react.default.createElement(_Dropdown.default.Item, {
@@ -385,31 +464,38 @@ var WbeDashboardPage = function WbeDashboardPage() {
385
464
  defaultSortFieldId: 3
386
465
  })))));
387
466
  };
467
+
388
468
  exports.WbeDashboardPage = WbeDashboardPage;
469
+
389
470
  var RowName = _styledComponents.default.div.withConfig({
390
471
  displayName: "WbeDashboardPage__RowName",
391
472
  componentId: "sc-14f81cv-0"
392
473
  })(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, function (p) {
393
474
  return p.isRtl ? 'right: 51px;' : 'left: 51px;';
394
475
  });
476
+
395
477
  var ActionsContainer = _styledComponents.default.div.withConfig({
396
478
  displayName: "WbeDashboardPage__ActionsContainer",
397
479
  componentId: "sc-14f81cv-1"
398
480
  })(["display:flex;justify-content:start;align-items:center;"]);
481
+
399
482
  var FirstSection = _styledComponents.default.div.withConfig({
400
483
  displayName: "WbeDashboardPage__FirstSection",
401
484
  componentId: "sc-14f81cv-2"
402
485
  })(["margin:85px 0 20px 0;"]);
486
+
403
487
  var SecondSection = _styledComponents.default.div.withConfig({
404
488
  displayName: "WbeDashboardPage__SecondSection",
405
489
  componentId: "sc-14f81cv-3"
406
490
  })(["padding:20px;background:#fcfcfc;border:1px solid #e7e7e7;border-radius:6px;"]);
491
+
407
492
  var MapTableContainer = _styledComponents.default.div.withConfig({
408
493
  displayName: "WbeDashboardPage__MapTableContainer",
409
494
  componentId: "sc-14f81cv-4"
410
495
  })(["display:flex;justify-content:start;flex-direction:row-reverse;.map-container{width:unset !important;.event-timerange{display:none;}#map{height:69vh;width:30vw;}}[data-testid='kando-table']{width:100%;}[data-column-id='1']{justify-content:flex-start !important;overflow:visible;position:relative;cursor:pointer;&:hover{.name{color:white !important;}.expandable-icon{width:calc(120px + 1vw);transition:0.2s cubic-bezier(0.65,0.05,0.36,1);}}}.spinner-container{width:100%;display:flex;justify-content:center;}"]);
496
+
411
497
  var Content = _styledComponents.default.div.withConfig({
412
498
  displayName: "WbeDashboardPage__Content",
413
499
  componentId: "sc-14f81cv-5"
414
500
  })(["@media (max-width:576px){padding:20px;}h1{font-weight:bold;}padding:60px 60px;"]);
415
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaDIiLCJfdXNlUXVlcnlVUkwiLCJfRHJvcGRvd24iLCJfRHJvcGRvd25CdXR0b24iLCJfYXhpb3MiLCJfVHJ1bmNhdGUiLCJfRXhwYW5kYWJsZUNvbXBvbmVudCIsIl9TcGlubmVyIiwiX1diZVN1bW1hcnlCYXIiLCJfRXJyb3JCb3VuZGFyeSIsIl90aGVtZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV0JFSXNyYWVsSWQiLCJleHBvcnRzIiwiV2JlRGFzaGJvYXJkUGFnZSIsImdldFdBSWQiLCJxdWVyeSIsImZldGNoVXJsIiwiZmlyc3RQYXJhbSIsImNvbmNhdCIsInNlbGVjdGVkUGF0aG9nZW4iLCJERUZBVUxUX1RBQlMiLCJpMThuIiwidCIsImNvbnZlcnRUYWJOYW1lVG9QYXJhbSIsInRhYl9uYW1lIiwidXNlUXVlcnlVUkwiLCJnZXRQYXRob2dlbiIsInBhdGhvZ2VucyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwZXJtaXNzaW9ucyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImN1cnJlbnREYXRhIiwic2V0Q3VycmVudERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm1hcEFyZWFzIiwic2V0TWFwQXJlYXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJyb3dzIiwic2V0Um93cyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsInRhYnMiLCJzZXRUYWJzIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRUYWIiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2V0U2VsZWN0ZWRQYXRob2dlbiIsIl91c2VLYW5kb0ZldGNoIiwidXNlS2FuZG9GZXRjaCIsImRhdGEiLCJpc0ZldGNoaW5nIiwic2V0RmV0Y2hpbmciLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsIm5hdl9jb250ZXh0X2RhdGEiLCJnbG9iYWxEYXRhIiwiZ2xvYmFsX2RhdGEiLCJpc1J0bCIsImxvY2FsZSIsImNvbG9yRm9yUm93Iiwicm93IiwicXVhbGl0eSIsInNhbXBsZV9hY3RpdmUiLCJpc0luZmVjdGVkIiwibnZsIiwiY29sdW1ucyIsIlJlYWN0IiwidXNlTWVtbyIsIm5hbWUiLCJzZWxlY3RvciIsInNvcnRhYmxlIiwiY2VsbCIsImNyZWF0ZUVsZW1lbnQiLCJSb3dOYW1lIiwiY2xhc3NOYW1lIiwib25DbGljayIsImhhbmRsZUFyZWFDbGljayIsImhhc19jaGlsZHJlbiIsIlJlYWN0Q29tcG9uZW50IiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJudmxfY2hhbmdlIiwic3R5bGUiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm1hcmdpbiIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiR3JhcGhXcmFwcGVyIiwiaWQiLCJ3YXRlcl9hdXRob3JpdHlfaWQiLCJwYXRob2dlbiIsInBvcHVsYXRpb24iLCJrRm9ybWF0dGVyIiwicGFyc2VJbnQiLCJpbml0aWFsaXplTWFwQXJlYXMiLCJhcmVhcyIsIm1hcHBlZFdpdGhDb2xvciIsIm1hcCIsImEiLCJ3YmVfZGFzaGJvYXJkX25hbWUiLCJzaG93Q29sb3JPbmx5SW5Cb3JkZXJzIiwidGhlbWUiLCJjb2xvclNjaGVtZSIsIm5hdHVyYWwiLCJuNjAiLCJSMTAwIiwiRzEwMCIsInpvb21Ub0FyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsInVuZGVmaW5lZCIsInpvb21BbGxBcmVhcyIsInNoYXBlRGF0YSIsImRhdHVtIiwibGV2ZWxOVkwiLCJoaXN0b3J5IiwidXNlSGlzdG9yeSIsIndhdGVyQXV0aG9yaXR5SWQiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudCIsInVwZGF0ZU5hdkNvbnRleHQiLCJ1c2VFZmZlY3QiLCJwYXRob2dlblRpdGxlIiwiZmluZCIsIml0ZW0iLCJkcm9wRG93blRpdGxlIiwiRnJhZ21lbnQiLCJDb250ZW50IiwiQWN0aW9uc0NvbnRhaW5lciIsImxlbmd0aCIsInRpdGxlIiwidmFyaWFudCIsIkl0ZW0iLCJocmVmIiwidGV4dEFsaWduIiwiRmlyc3RTZWN0aW9uIiwiV2JlU3VtbWFyeUJhciIsIlNlY29uZFNlY3Rpb24iLCJTZWFyY2hJbnB1dCIsIm9uQ2hhbmdlQmVoYXZpb3IiLCJUYWJzIiwiaGFuZGxlT25DbGljayIsIk1hcFRhYmxlQ29udGFpbmVyIiwiU3Bpbm5lciIsIk1hcCIsImFyZWFUb0NlbnRlckJ5IiwiZWRnZXMiLCJwb2ludHMiLCJtYXBCb3hTdHlsZSIsIkthbmRvVGFibGUiLCJvblJvd0V4cGFuZFRvZ2dsZWQiLCJleHBhbmRhYmxlUm93cyIsInBhZ2luYXRpb25QZXJQYWdlIiwicm93Q29tcG9uZW50IiwiRXhwYW5kZWRDb21wb25lbnQiLCJleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzIiwiZGVmYXVsdFNvcnRGaWVsZElkIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1diZURhc2hib2FyZC9XYmVEYXNoYm9hcmRQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuY29uc3QgVEFCTEVfUk9XU19QRVJfUEFHRSA9IDI1O1xuY29uc3QgTUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEUgPSAnY2t6emtqc2k3MDA1ZjE0bzlpbTBtY3pzOSc7XG5cbmV4cG9ydCBjb25zdCBXQkVJc3JhZWxJZCA9IDQ2MztcbmV4cG9ydCBjb25zdCBXYmVEYXNoYm9hcmRQYWdlID0gKCkgPT4ge1xuICBjb25zdCBnZXRXQUlkID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpO1xuICB9O1xuICBjb25zdCBmZXRjaFVybCA9IChmaXJzdFBhcmFtKSA9PiB7XG4gICAgcmV0dXJuIGAvYXBpX3VpL3diZV9kYXNoYm9hcmQvJHtzZWxlY3RlZFBhdGhvZ2VufS8ke2ZpcnN0UGFyYW19P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dldFdBSWQoKX1gO1xuICB9O1xuICBjb25zdCBERUZBVUxUX1RBQlMgPSBbXG4gICAgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJyksXG4gICAgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJyksXG4gIF07XG4gIGNvbnN0IGNvbnZlcnRUYWJOYW1lVG9QYXJhbSA9ICh0YWJfbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKSkge1xuICAgICAgcmV0dXJuICdjaXR5JztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGFiX25hbWUgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ21vbml0b3JlZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdjaXR5JztcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeVVSTCgpO1xuICBjb25zdCBnZXRQYXRob2dlbiA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCdwYXRob2dlbicpIHx8ICdjb3ZpZCc7XG4gIH07XG5cbiAgY29uc3QgcGF0aG9nZW5zID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy5wYXRob2dlbnMpO1xuXG4gIGNvbnN0IFtjdXJyZW50RGF0YSwgc2V0Q3VycmVudERhdGFdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbWFwQXJlYXMsIHNldE1hcEFyZWFzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFttYXBab29tLCBzZXRNYXBab29tXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbdGFicywgc2V0VGFic10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oREVGQVVMVF9UQUJTKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiLCBzZXRTZWxlY3RlZFRhYl0gPSB1c2VTdGF0ZTxzdHJpbmc+KHRhYnNbMF0pO1xuICBjb25zdCBbc2VsZWN0ZWRQYXRob2dlbiwgc2V0U2VsZWN0ZWRQYXRob2dlbl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIGdldFBhdGhvZ2VuKCksXG4gICk7XG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgc2V0RmV0Y2hpbmcgfSA9IHVzZUthbmRvRmV0Y2goXG4gICAgZmV0Y2hVcmwoY29udmVydFRhYk5hbWVUb1BhcmFtKHNlbGVjdGVkVGFiKSksXG4gICk7XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LFxuICApO1xuICBjb25zdCBnbG9iYWxEYXRhID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZ2xvYmFsX2RhdGEsXG4gICk7XG4gIGNvbnN0IGlzUnRsOiBib29sZWFuID0gbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyB0cnVlIDogZmFsc2U7XG4gIGNvbnN0IGNvbG9yRm9yUm93ID0gKHJvdykgPT4ge1xuICAgIGxldCBxdWFsaXR5O1xuICAgIGlmICghcm93LnNhbXBsZV9hY3RpdmUpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5hY3RpdmUtc2FtcGxpbmcnO1xuICAgIH0gZWxzZSBpZiAoaXNJbmZlY3RlZChyb3cubnZsKSkge1xuICAgICAgcXVhbGl0eSA9ICdpbmZlY3RlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1YWxpdHkgPSAnY2xlYW4nO1xuICAgIH1cblxuICAgIHJldHVybiBgcm93X25hbWUtLSR7cXVhbGl0eX1gO1xuICB9O1xuICBjb25zdCBjb2x1bW5zOiBhbnkgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubmFtZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm5hbWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG5hbWU6IHN0cmluZzsgbnZsOiBudW1iZXI7IGhhc19jaGlsZHJlbjogYm9vbGVhbiB9KSA9PiAoXG4gICAgICAgICAgPFJvd05hbWUgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvd19uYW1lICR7Y29sb3JGb3JSb3cocm93KX1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJlYUNsaWNrKHJvdyk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZXhwYW5kYWJsZS1pY29uJ30+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICB7cm93Lmhhc19jaGlsZHJlbiAmJiA8RHJpbGxEb3duSWNvbiAvPn1cbiAgICAgICAgICAgICAgICAgIHshcm93Lmhhc19jaGlsZHJlbiAmJiA8QmFzZUxldmVsIC8+fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J25hbWUnfT5cbiAgICAgICAgICAgICAgICA8VHJ1bmNhdGUgY2hhcmFjdGVycz17M30gaW5oZXJpdFRleHRBbGlnbj17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5hbWV9XG4gICAgICAgICAgICAgICAgPC9UcnVuY2F0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Sb3dOYW1lPlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubnZsX3Njb3JlJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmw6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+e3Jvdy5udmx9PC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wZXJjZW50YWdlX2Zyb21fbGFzdF9zYW1wbGluZycpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bF9jaGFuZ2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bF9jaGFuZ2U6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJyMwMDAwMDAnLCBtYXJnaW46ICcwIDZweCcgfX0+XG4gICAgICAgICAgICAgIHtyb3cubnZsX2NoYW5nZX0lXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICAgIGljb249e3Jvdy5udmxfY2hhbmdlID4gMCA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93bn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmxhc3Rfc2FtcGxlZCcpLFxuICAgICAgICBzZWxlY3RvcjogJ2xhc3Rfc2FtcGxlZCcsXG4gICAgICAgIHNvcnRhYmxlOiAocm93KSA9PiByb3cubGFzdF91cGRhdGVkLFxuICAgICAgICBjZWxsOiAocm93OiB7IGxhc3RfdXBkYXRlZDogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtyb3cubGFzdF91cGRhdGVkID09PSBudWxsXG4gICAgICAgICAgICAgID8gJy0nXG4gICAgICAgICAgICAgIDogbmV3IERhdGUocm93Lmxhc3RfdXBkYXRlZCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudHJlbmRfZ3JhcGgnKSxcbiAgICAgICAgc2VsZWN0b3I6ICd0cmVuZF9ncmFwaCcsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IGlkOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAgPEdyYXBoV3JhcHBlclxuICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgcm93PXtyb3d9XG4gICAgICAgICAgICAgIHdhdGVyX2F1dGhvcml0eV9pZD17Z2V0V0FJZCgpfVxuICAgICAgICAgICAgICBwYXRob2dlbj17c2VsZWN0ZWRQYXRob2dlbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wb3B1bGF0aW9uJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cucG9wdWxhdGlvbixcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgcG9wdWxhdGlvbjogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtrRm9ybWF0dGVyKHBhcnNlSW50KHJvdy5wb3B1bGF0aW9uKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgIF0sXG4gICAgW2lzUnRsLCBzZWxlY3RlZFBhdGhvZ2VuXSxcbiAgKTtcblxuICBjb25zdCBpbml0aWFsaXplTWFwQXJlYXMgPSAoYXJlYXMpID0+IHtcbiAgICBjb25zdCBtYXBwZWRXaXRoQ29sb3IgPSBhcmVhcy5tYXAoKGE6IGFueSkgPT4ge1xuICAgICAgYS53YmVfZGFzaGJvYXJkX25hbWUgPSBhLm5hbWU7XG4gICAgICBhLnNob3dDb2xvck9ubHlJbkJvcmRlcnMgPSB0cnVlO1xuXG4gICAgICBpZiAoIWEuc2FtcGxlX2FjdGl2ZSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbmZlY3RlZChhLm52bCkpIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLmRhdGEuUjEwMDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5HMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldE1hcEFyZWFzKG1hcHBlZFdpdGhDb2xvcik7XG4gIH07XG5cbiAgY29uc3Qgem9vbVRvQXJlYSA9IChhcmVhKSA9PiB7XG4gICAgYXJlYS5zaGFwZV9kYXRhICE9PSB1bmRlZmluZWQgJiYgc2V0TWFwWm9vbShhcmVhLnNoYXBlX2RhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHpvb21BbGxBcmVhcyA9IChkYXRhKSA9PiB7XG4gICAgY29uc3Qgc2hhcGVEYXRhID0gZGF0YS5tYXAoKGRhdHVtKSA9PiB7XG4gICAgICByZXR1cm4gZGF0dW0uc2hhcGVfZGF0YTtcbiAgICB9KTtcblxuICAgIHNldE1hcFpvb20oc2hhcGVEYXRhKTtcbiAgfTtcblxuICBjb25zdCBpc0luZmVjdGVkID0gKG52bDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGxldmVsTlZMKG52bCkgPT09ICdjbGVhbicpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ2xvdycgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdtZWRpdW0nIHx8XG4gICAgICBsZXZlbE5WTChudmwpID09PSAnaGlnaCdcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+XG4gICAgICBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuXG4gIGNvbnN0IGRpcjogRGlyZWN0aW9uID1cbiAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IERpcmVjdGlvbi5SVEwgOiBEaXJlY3Rpb24uTFRSO1xuXG4gIGNvbnN0IGZpbHRlclJlc3VsdHNBbmRTZXRSb3dzID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGxldCByZXN1bHRzID0gY3VycmVudERhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbDogYW55KSB7XG4gICAgICByZXR1cm4gZWwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfSk7XG5cbiAgICBzZXRSb3dzKHJlc3VsdHMpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9uUm93RXhwYW5kID0gKGV4cGFuZGVkLCByb3cpID0+IHtcbiAgICBleHBhbmRlZCAmJiB6b29tVG9BcmVhKHJvdyk7XG4gICAgIWV4cGFuZGVkICYmIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrID0gKHBhdGhvZ2VuKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1dCRSBTdGF0dXMgUmVwb3J0IC0gUGF0aG9nZW4gY2hhbmdlIGNsaWNrZWQnLCB7XG4gICAgICBwYXRob2dlbjogcGF0aG9nZW4sXG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBzZXRTZWxlY3RlZFBhdGhvZ2VuKHBhdGhvZ2VuKTtcbiAgICBoaXN0b3J5LnB1c2goXG4gICAgICBgL3diZV9kYXNoYm9hcmQvaW5kZXg/bG9jYWxlPSR7bmF2Q29udGV4dC5sb2NhbGV9JndhdGVyX2F1dGhvcml0eV9pZD0ke3dhdGVyQXV0aG9yaXR5SWR9JnBhdGhvZ2VuPSR7cGF0aG9nZW59YCxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRm9yVGFiU2VsZWN0aW9uID0gKHRhYikgPT4ge1xuICAgIHNldEZldGNoaW5nKHRydWUpO1xuICAgIGF4aW9zLmdldChmZXRjaFVybCh0YWIpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgc2V0RmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgc2V0VGFicyhERUZBVUxUX1RBQlMpO1xuICAgICAgc2V0Um93cyhyZXNwb25zZURhdGEpO1xuICAgICAgc2V0Q3VycmVudERhdGEocmVzcG9uc2VEYXRhKTtcbiAgICAgIGluaXRpYWxpemVNYXBBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgICAgem9vbUFsbEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2sgPSAodGFiKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nKSB7XG4gICAgICBzZXRTZWxlY3RlZFRhYih0YWIpO1xuXG4gICAgICBpZiAodGFiICE9PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSkge1xuICAgICAgICB0YWIgPVxuICAgICAgICAgIHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJylcbiAgICAgICAgICAgID8gJ2NpdHknXG4gICAgICAgICAgICA6IHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICAgICAgICAgID8gJ21vbml0b3JlZCdcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgZmV0Y2hGb3JUYWJTZWxlY3Rpb24odGFiKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZURyaWxsZWRBcmVhID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFyZWFDbGljayA9IChhcmVhKSA9PiB7XG4gICAgem9vbVRvQXJlYShhcmVhKTtcblxuICAgIGlmIChhcmVhLmhhc19jaGlsZHJlbikge1xuICAgICAgc2V0VGFicyhbLi4udGFicywgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJyldKTtcbiAgICAgIHNldFNlbGVjdGVkVGFiKGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKTtcblxuICAgICAgYXhpb3MuZ2V0KGZldGNoVXJsKGFyZWEuaWQpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpbml0aWFsaXplRHJpbGxlZEFyZWEocmVzcG9uc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVDb21wb25lbnQgPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBkaXNwYXRjaCh1cGRhdGVOYXZDb250ZXh0KHsgbmFtZTogJ3diZV9kYXNoYm9hcmQnIH0pKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgIGluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICB9XG4gIH0sIFtpc0ZldGNoaW5nLCBzZWxlY3RlZFBhdGhvZ2VuLCBkYXRhXSk7XG5cbiAgY29uc3QgcGF0aG9nZW5UaXRsZSA9IHBhdGhvZ2Vucy5maW5kKFxuICAgIChpdGVtKSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkUGF0aG9nZW4udG9Mb3dlckNhc2UoKSxcbiAgKTtcbiAgY29uc3QgZHJvcERvd25UaXRsZSA9XG4gICAgcGF0aG9nZW5UaXRsZSB8fCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENvbnRlbnQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxPlxuICAgICAgICAgICAge2Ake2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnRhYmxlX25hbWUnKX0gKCR7XG4gICAgICAgICAgICAgIHBhdGhvZ2VuVGl0bGUgfHwgZ2V0UGF0aG9nZW4oKVxuICAgICAgICAgICAgfSlgfVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPEFjdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICB7cGF0aG9nZW5zLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25CdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duLWJhc2ljLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnYnV0dG9uIGJ1dHRvbi0tc29ydCd9XG4gICAgICAgICAgICAgICAgdGl0bGU9e2Ryb3BEb3duVGl0bGUgKyAnICd9XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cGF0aG9nZW5zLm1hcCgocGF0aG9nZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2socGF0aG9nZW4pfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gJ3JpZ2h0JyA6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3BhdGhvZ2VufVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FjdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Rmlyc3RTZWN0aW9uPlxuICAgICAgICAgIDxXYmVTdW1tYXJ5QmFyXG4gICAgICAgICAgICBwYXRob2dlbj17c2VsZWN0ZWRQYXRob2dlbn1cbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ9e3dhdGVyQXV0aG9yaXR5SWR9XG4gICAgICAgICAgICBpc1J0bD17aXNSdGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9GaXJzdFNlY3Rpb24+XG5cbiAgICAgICAgPFNlY29uZFNlY3Rpb24+XG4gICAgICAgICAgPFNlYXJjaElucHV0IG9uQ2hhbmdlQmVoYXZpb3I9e2ZpbHRlclJlc3VsdHNBbmRTZXRSb3dzfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGFicy1jb250YWluZXInfT5cbiAgICAgICAgICAgIDxUYWJzXG4gICAgICAgICAgICAgIHRhYnM9e3RhYnN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkVGFiPXtzZWxlY3RlZFRhYn1cbiAgICAgICAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxNYXBUYWJsZUNvbnRhaW5lciBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAge2lzRmV0Y2hpbmcgJiYgPFNwaW5uZXIgLz59XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J21hcC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgbWFwWm9vbSAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgICAgICA8TWFwXG4gICAgICAgICAgICAgICAgICAgIGFyZWFzPXttYXBBcmVhc31cbiAgICAgICAgICAgICAgICAgICAgYXJlYVRvQ2VudGVyQnk9e21hcFpvb219XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbERhdGF9XG4gICAgICAgICAgICAgICAgICAgIG1hcEJveFN0eWxlPXtNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7IWlzRmV0Y2hpbmcgJiYgcm93cyAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgIDxLYW5kb1RhYmxlXG4gICAgICAgICAgICAgICAgb25Sb3dFeHBhbmRUb2dnbGVkPXtoYW5kbGVPblJvd0V4cGFuZH1cbiAgICAgICAgICAgICAgICBkYXRhPXtyb3dzfVxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uPXtkaXJ9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3M9e3RydWV9XG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvblBlclBhZ2U9e1RBQkxFX1JPV1NfUEVSX1BBR0V9XG4gICAgICAgICAgICAgICAgcm93Q29tcG9uZW50PXtFeHBhbmRlZENvbXBvbmVudH1cbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzPXt7IHBhdGhvZ2VuOiBzZWxlY3RlZFBhdGhvZ2VuIH19XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNvcnRGaWVsZElkPXszfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L01hcFRhYmxlQ29udGFpbmVyPlxuICAgICAgICA8L1NlY29uZFNlY3Rpb24+XG4gICAgICA8L0NvbnRlbnQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBSb3dOYW1lID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICAgIHdpZHRoOiAxMDAlO1xuICAgICAgXG4gICAgLnJvd19uYW1lIHtcbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAuMnMgZWFzZS1pbjsgICAgICBcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwIDRweDtcbiAgICAgICAgXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDJweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0tY2xlYW4ge1xuICAgICAgICAgY29sb3I6ICMyN2E2M2E7IFxuICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjdhNjNhOyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmZlY3RlZCB7XG4gICAgICAgICAgY29sb3I6ICNlMTAwMzY7XG4gICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTEwMDM2OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmFjdGl2ZS1zYW1wbGluZyB7XG4gICAgICAgICAgY29sb3I6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5uYW1lIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICAgICAgICAkeyhwKSA9PiAocC5pc1J0bCA/ICdyaWdodDogNTFweDsnIDogJ2xlZnQ6IDUxcHg7Jyl9XG4gICAgICAgICAgdG9wOiAxNnB4O1xuICAgICAgICAgIHdpZHRoOiA3LjVlbTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGA7XG5cbmNvbnN0IEFjdGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgRmlyc3RTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luOiA4NXB4IDAgMjBweCAwO1xuYDtcblxuY29uc3QgU2Vjb25kU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDIwcHg7XG4gIGJhY2tncm91bmQ6ICNmY2ZjZmM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlN2U3ZTc7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbmA7XG5cbmNvbnN0IE1hcFRhYmxlQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIC5tYXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAuZXZlbnQtdGltZXJhbmdlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICNtYXAge1xuICAgICAgaGVpZ2h0OiA2OXZoO1xuICAgICAgd2lkdGg6IDMwdnc7XG4gICAgfVxuICB9XG4gIFtkYXRhLXRlc3RpZD0na2FuZG8tdGFibGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgW2RhdGEtY29sdW1uLWlkPScxJ10ge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgJjpob3ZlciB7XG4gICAgICAubmFtZSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEyMHB4ICsgMXZ3KTtcbiAgICAgICAgdHJhbnNpdGlvbjogMC4ycyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXItY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5gO1xuXG5jb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgfVxuXG4gIGgxIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIHBhZGRpbmc6IDYwcHggNjBweDtcbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFBMEQsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBQUEsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBRzFELElBQUFjLHdCQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLElBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFB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
501
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9XYmVEYXNoYm9hcmQvV2JlRGFzaGJvYXJkUGFnZS50c3giXSwibmFtZXMiOlsiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV0JFSXNyYWVsSWQiLCJXYmVEYXNoYm9hcmRQYWdlIiwiZ2V0V0FJZCIsInF1ZXJ5IiwiZ2V0IiwiZmV0Y2hVcmwiLCJmaXJzdFBhcmFtIiwic2VsZWN0ZWRQYXRob2dlbiIsIkRFRkFVTFRfVEFCUyIsImkxOG4iLCJ0IiwiY29udmVydFRhYk5hbWVUb1BhcmFtIiwidGFiX25hbWUiLCJnZXRQYXRob2dlbiIsInBhdGhvZ2VucyIsInBlcm1pc3Npb25zIiwiY3VycmVudERhdGEiLCJzZXRDdXJyZW50RGF0YSIsImZpbmQiLCJpdGVtIiwidG9Mb3dlckNhc2UiLCJzZXRTZWxlY3RlZFBhdGhvZ2VuIiwibWFwQXJlYXMiLCJzZXRNYXBBcmVhcyIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwicm93cyIsInNldFJvd3MiLCJ0YWJzIiwic2V0VGFicyIsInNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRUYWIiLCJkYXRhIiwiaXNGZXRjaGluZyIsInNldEZldGNoaW5nIiwiZGlzcGF0Y2giLCJuYXZDb250ZXh0Iiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwiZ2xvYmFsRGF0YSIsImdsb2JhbF9kYXRhIiwiaXNSdGwiLCJsb2NhbGUiLCJjb2xvckZvclJvdyIsInJvdyIsInF1YWxpdHkiLCJzYW1wbGVfYWN0aXZlIiwiaXNJbmZlY3RlZCIsIm52bCIsImNvbHVtbnMiLCJSZWFjdCIsInVzZU1lbW8iLCJuYW1lIiwic2VsZWN0b3IiLCJzb3J0YWJsZSIsImNlbGwiLCJoYW5kbGVBcmVhQ2xpY2siLCJoYXNfY2hpbGRyZW4iLCJudmxfY2hhbmdlIiwiZGlyZWN0aW9uIiwiY29sb3IiLCJtYXJnaW4iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiaWQiLCJwb3B1bGF0aW9uIiwicGFyc2VJbnQiLCJpbml0aWFsaXplTWFwQXJlYXMiLCJhcmVhcyIsIm1hcHBlZFdpdGhDb2xvciIsIm1hcCIsImEiLCJ3YmVfZGFzaGJvYXJkX25hbWUiLCJzaG93Q29sb3JPbmx5SW5Cb3JkZXJzIiwidGhlbWUiLCJjb2xvclNjaGVtZSIsIm5hdHVyYWwiLCJuNjAiLCJSMTAwIiwiRzEwMCIsInpvb21Ub0FyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsInVuZGVmaW5lZCIsInpvb21BbGxBcmVhcyIsInNoYXBlRGF0YSIsImRhdHVtIiwiaGlzdG9yeSIsIndhdGVyQXV0aG9yaXR5SWQiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJpbmNsdWRlcyIsImhhbmRsZU9uUm93RXhwYW5kIiwiZXhwYW5kZWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrIiwicGF0aG9nZW4iLCJ1dGlsaXR5X25hbWUiLCJwdXNoIiwiZmV0Y2hGb3JUYWJTZWxlY3Rpb24iLCJ0YWIiLCJheGlvcyIsInRoZW4iLCJyZXNwb25zZSIsInJlc3BvbnNlRGF0YSIsImhhbmRsZVRhYlNlbGVjdGlvbkNsaWNrIiwiaW5pdGlhbGl6ZURyaWxsZWRBcmVhIiwiaW5pdGlhbGl6ZUNvbXBvbmVudCIsImxlbmd0aCIsInRleHRBbGlnbiIsIkV4cGFuZGVkQ29tcG9uZW50IiwiUm93TmFtZSIsInN0eWxlZCIsImRpdiIsInAiLCJBY3Rpb25zQ29udGFpbmVyIiwiRmlyc3RTZWN0aW9uIiwiU2Vjb25kU2VjdGlvbiIsIk1hcFRhYmxlQ29udGFpbmVyIiwiQ29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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RUFBRTBILHNDQVBoQjtBQVFFLElBQUEsNEJBQTRCLEVBQUU7QUFBRWQsTUFBQUEsUUFBUSxFQUFFbkc7QUFBWixLQVJoQztBQVNFLElBQUEsa0JBQWtCLEVBQUU7QUFUdEIsSUFqQkosQ0FURixDQXpDRixDQURGLENBREY7QUFzRkQsQ0FyWk07Ozs7QUF1WlAsSUFBTWtILE9BQU8sR0FBR0MsMEJBQU9DLEdBQVY7QUFBQTtBQUFBO0FBQUEseWRBaUNNOUMsYUFBTUMsV0FBTixDQUFrQkMsT0FBbEIsQ0FBMEJDLEdBakNoQyxFQW1DYUgsYUFBTUMsV0FBTixDQUFrQkMsT0FBbEIsQ0FBMEJDLEdBbkN2QyxFQTBDRCxVQUFDNEMsQ0FBRDtBQUFBLFNBQVFBLENBQUMsQ0FBQ25GLEtBQUYsR0FBVSxjQUFWLEdBQTJCLGFBQW5DO0FBQUEsQ0ExQ0MsQ0FBYjs7QUFtREEsSUFBTW9GLGdCQUFnQixHQUFHSCwwQkFBT0MsR0FBVjtBQUFBO0FBQUE7QUFBQSw4REFBdEI7O0FBTUEsSUFBTUcsWUFBWSxHQUFHSiwwQkFBT0MsR0FBVjtBQUFBO0FBQUE7QUFBQSw2QkFBbEI7O0FBSUEsSUFBTUksYUFBYSxHQUFHTCwwQkFBT0MsR0FBVjtBQUFBO0FBQUE7QUFBQSxtRkFBbkI7O0FBT0EsSUFBTUssaUJBQWlCLEdBQUdOLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLGtnQkFBdkI7O0FBd0NBLElBQU1NLE9BQU8sR0FBR1AsMEJBQU9DLEdBQVY7QUFBQTtBQUFBO0FBQUEsc0ZBQWIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuY29uc3QgVEFCTEVfUk9XU19QRVJfUEFHRSA9IDI1O1xuY29uc3QgTUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEUgPSAnY2t6emtqc2k3MDA1ZjE0bzlpbTBtY3pzOSc7XG5cbmV4cG9ydCBjb25zdCBXQkVJc3JhZWxJZCA9IDQ2MztcbmV4cG9ydCBjb25zdCBXYmVEYXNoYm9hcmRQYWdlID0gKCkgPT4ge1xuICBjb25zdCBnZXRXQUlkID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpO1xuICB9O1xuICBjb25zdCBmZXRjaFVybCA9IChmaXJzdFBhcmFtKSA9PiB7XG4gICAgcmV0dXJuIGAvYXBpX3VpL3diZV9kYXNoYm9hcmQvJHtzZWxlY3RlZFBhdGhvZ2VufS8ke2ZpcnN0UGFyYW19P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dldFdBSWQoKX1gO1xuICB9O1xuICBjb25zdCBERUZBVUxUX1RBQlMgPSBbXG4gICAgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJyksXG4gICAgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJyksXG4gIF07XG4gIGNvbnN0IGNvbnZlcnRUYWJOYW1lVG9QYXJhbSA9ICh0YWJfbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKSkge1xuICAgICAgcmV0dXJuICdjaXR5JztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGFiX25hbWUgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ21vbml0b3JlZCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdjaXR5JztcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeVVSTCgpO1xuICBjb25zdCBnZXRQYXRob2dlbiA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCdwYXRob2dlbicpIHx8ICcnO1xuICB9O1xuXG4gIGNvbnN0IHBhdGhvZ2VucyA9IHVzZVNlbGVjdG9yKCh7IHBlcm1pc3Npb25zIH0pID0+IHBlcm1pc3Npb25zLnBhdGhvZ2Vucyk7XG5cbiAgY29uc3QgW2N1cnJlbnREYXRhLCBzZXRDdXJyZW50RGF0YV0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzZWxlY3RlZFBhdGhvZ2VuLCBzZXRTZWxlY3RlZFBhdGhvZ2VuXSA9IHVzZVN0YXRlPHN0cmluZz4oXG4gICAgcGF0aG9nZW5zLmZpbmQoXG4gICAgICAoaXRlbSkgPT4gaXRlbS50b0xvd2VyQ2FzZSgpID09PSBnZXRQYXRob2dlbigpLnRvTG93ZXJDYXNlKCksXG4gICAgKSB8fCAnJyxcbiAgKTtcbiAgY29uc3QgW21hcEFyZWFzLCBzZXRNYXBBcmVhc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbbWFwWm9vbSwgc2V0TWFwWm9vbV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbcm93cywgc2V0Um93c10gPSB1c2VTdGF0ZTxhbnk+KFtdKTtcbiAgY29uc3QgW3RhYnMsIHNldFRhYnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KERFRkFVTFRfVEFCUyk7XG4gIGNvbnN0IFtzZWxlY3RlZFRhYiwgc2V0U2VsZWN0ZWRUYWJdID0gdXNlU3RhdGU8c3RyaW5nPih0YWJzWzBdKTtcbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCBzZXRGZXRjaGluZyB9ID0gdXNlS2FuZG9GZXRjaChcbiAgICBmZXRjaFVybChjb252ZXJ0VGFiTmFtZVRvUGFyYW0oc2VsZWN0ZWRUYWIpKSxcbiAgKTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG4gIGNvbnN0IGdsb2JhbERhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5nbG9iYWxfZGF0YSxcbiAgKTtcbiAgY29uc3QgaXNSdGw6IGJvb2xlYW4gPSBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IHRydWUgOiBmYWxzZTtcbiAgY29uc3QgY29sb3JGb3JSb3cgPSAocm93KSA9PiB7XG4gICAgbGV0IHF1YWxpdHk7XG4gICAgaWYgKCFyb3cuc2FtcGxlX2FjdGl2ZSkge1xuICAgICAgcXVhbGl0eSA9ICdpbmFjdGl2ZS1zYW1wbGluZyc7XG4gICAgfSBlbHNlIGlmIChpc0luZmVjdGVkKHJvdy5udmwpKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luZmVjdGVkJztcbiAgICB9IGVsc2Uge1xuICAgICAgcXVhbGl0eSA9ICdjbGVhbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGByb3dfbmFtZS0tJHtxdWFsaXR5fWA7XG4gIH07XG4gIGNvbnN0IGNvbHVtbnM6IGFueSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5uYW1lJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubmFtZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbmFtZTogc3RyaW5nOyBudmw6IG51bWJlcjsgaGFzX2NoaWxkcmVuOiBib29sZWFuIH0pID0+IChcbiAgICAgICAgICA8Um93TmFtZSBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm93X25hbWUgJHtjb2xvckZvclJvdyhyb3cpfWB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVBcmVhQ2xpY2socm93KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydleHBhbmRhYmxlLWljb24nfT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHtyb3cuaGFzX2NoaWxkcmVuICYmIDxEcmlsbERvd25JY29uIC8+fVxuICAgICAgICAgICAgICAgICAgeyFyb3cuaGFzX2NoaWxkcmVuICYmIDxCYXNlTGV2ZWwgLz59XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnbmFtZSd9PlxuICAgICAgICAgICAgICAgIDxUcnVuY2F0ZSBjaGFyYWN0ZXJzPXszfSBpbmhlcml0VGV4dEFsaWduPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgIHtyb3cubmFtZX1cbiAgICAgICAgICAgICAgICA8L1RydW5jYXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1Jvd05hbWU+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5udmxfc2NvcmUnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5udmwsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj57cm93Lm52bH08L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBlcmNlbnRhZ2VfZnJvbV9sYXN0X3NhbXBsaW5nJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsX2NoYW5nZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbnZsX2NoYW5nZTogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAnIzAwMDAwMCcsIG1hcmdpbjogJzAgNnB4JyB9fT5cbiAgICAgICAgICAgICAge3Jvdy5udmxfY2hhbmdlfSVcbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgICAgICAgaWNvbj17cm93Lm52bF9jaGFuZ2UgPiAwID8gZmFDaGV2cm9uVXAgOiBmYUNoZXZyb25Eb3dufVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubGFzdF9zYW1wbGVkJyksXG4gICAgICAgIHNlbGVjdG9yOiAnbGFzdF9zYW1wbGVkJyxcbiAgICAgICAgc29ydGFibGU6IChyb3cpID0+IHJvdy5sYXN0X3VwZGF0ZWQsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbGFzdF91cGRhdGVkOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge3Jvdy5sYXN0X3VwZGF0ZWQgPT09IG51bGxcbiAgICAgICAgICAgICAgPyAnLSdcbiAgICAgICAgICAgICAgOiBuZXcgRGF0ZShyb3cubGFzdF91cGRhdGVkKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50cmVuZF9ncmFwaCcpLFxuICAgICAgICBzZWxlY3RvcjogJ3RyZW5kX2dyYXBoJyxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgaWQ6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICA8R3JhcGhXcmFwcGVyXG4gICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgd2F0ZXJfYXV0aG9yaXR5X2lkPXtnZXRXQUlkKCl9XG4gICAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBvcHVsYXRpb24nKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5wb3B1bGF0aW9uLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBwb3B1bGF0aW9uOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge2tGb3JtYXR0ZXIocGFyc2VJbnQocm93LnBvcHVsYXRpb24pKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbaXNSdGwsIHNlbGVjdGVkUGF0aG9nZW5dLFxuICApO1xuXG4gIGNvbnN0IGluaXRpYWxpemVNYXBBcmVhcyA9IChhcmVhcykgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFdpdGhDb2xvciA9IGFyZWFzLm1hcCgoYTogYW55KSA9PiB7XG4gICAgICBhLndiZV9kYXNoYm9hcmRfbmFtZSA9IGEubmFtZTtcbiAgICAgIGEuc2hvd0NvbG9yT25seUluQm9yZGVycyA9IHRydWU7XG5cbiAgICAgIGlmICghYS5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0luZmVjdGVkKGEubnZsKSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5SMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLkcxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TWFwQXJlYXMobWFwcGVkV2l0aENvbG9yKTtcbiAgfTtcblxuICBjb25zdCB6b29tVG9BcmVhID0gKGFyZWEpID0+IHtcbiAgICBhcmVhLnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCAmJiBzZXRNYXBab29tKGFyZWEuc2hhcGVfZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgem9vbUFsbEFyZWFzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCBzaGFwZURhdGEgPSBkYXRhLm1hcCgoZGF0dW0pID0+IHtcbiAgICAgIHJldHVybiBkYXR1bS5zaGFwZV9kYXRhO1xuICAgIH0pO1xuXG4gICAgc2V0TWFwWm9vbShzaGFwZURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGlzSW5mZWN0ZWQgPSAobnZsOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGV2ZWxOVkwobnZsKSA9PT0gJ2NsZWFuJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbG93JyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ21lZGl1bScgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdoaWdoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT5cbiAgICAgIHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG5cbiAgY29uc3QgZGlyOiBEaXJlY3Rpb24gPVxuICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gRGlyZWN0aW9uLlJUTCA6IERpcmVjdGlvbi5MVFI7XG5cbiAgY29uc3QgZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHJlc3VsdHMgPSBjdXJyZW50RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVsOiBhbnkpIHtcbiAgICAgIHJldHVybiBlbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHNldFJvd3MocmVzdWx0cyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT25Sb3dFeHBhbmQgPSAoZXhwYW5kZWQsIHJvdykgPT4ge1xuICAgIGV4cGFuZGVkICYmIHpvb21Ub0FyZWEocm93KTtcbiAgICAhZXhwYW5kZWQgJiYgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2sgPSAocGF0aG9nZW4pID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQgLSBQYXRob2dlbiBjaGFuZ2UgY2xpY2tlZCcsIHtcbiAgICAgIHBhdGhvZ2VuOiBwYXRob2dlbixcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIHNldFNlbGVjdGVkUGF0aG9nZW4ocGF0aG9nZW4pO1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvd2JlX2Rhc2hib2FyZC9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2F0ZXJBdXRob3JpdHlJZH0mcGF0aG9nZW49JHtwYXRob2dlbn1gLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hGb3JUYWJTZWxlY3Rpb24gPSAodGFiKSA9PiB7XG4gICAgc2V0RmV0Y2hpbmcodHJ1ZSk7XG4gICAgYXhpb3MuZ2V0KGZldGNoVXJsKHRhYikpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuXG4gICAgICBzZXRGZXRjaGluZyhmYWxzZSk7XG4gICAgICBzZXRUYWJzKERFRkFVTFRfVEFCUyk7XG4gICAgICBzZXRSb3dzKHJlc3BvbnNlRGF0YSk7XG4gICAgICBzZXRDdXJyZW50RGF0YShyZXNwb25zZURhdGEpO1xuICAgICAgaW5pdGlhbGl6ZU1hcEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgICB6b29tQWxsQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWJTZWxlY3Rpb25DbGljayA9ICh0YWIpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcpIHtcbiAgICAgIHNldFNlbGVjdGVkVGFiKHRhYik7XG5cbiAgICAgIGlmICh0YWIgIT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKSB7XG4gICAgICAgIHRhYiA9XG4gICAgICAgICAgdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKVxuICAgICAgICAgICAgPyAnY2l0eSdcbiAgICAgICAgICAgIDogdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICAgICAgICAgPyAnbW9uaXRvcmVkJ1xuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBmZXRjaEZvclRhYlNlbGVjdGlvbih0YWIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplRHJpbGxlZEFyZWEgPSAocmVzcG9uc2UpID0+IHtcbiAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQXJlYUNsaWNrID0gKGFyZWEpID0+IHtcbiAgICB6b29tVG9BcmVhKGFyZWEpO1xuXG4gICAgaWYgKGFyZWEuaGFzX2NoaWxkcmVuKSB7XG4gICAgICBzZXRUYWJzKFsuLi50YWJzLCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKV0pO1xuICAgICAgc2V0U2VsZWN0ZWRUYWIoaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpO1xuXG4gICAgICBheGlvcy5nZXQoZmV0Y2hVcmwoYXJlYS5pZCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVEcmlsbGVkQXJlYShyZXNwb25zZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNvbXBvbmVudCA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIGFuYWx5dGljc1RyYWNrKCdXQkUgU3RhdHVzIFJlcG9ydCcsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIGRpc3BhdGNoKHVwZGF0ZU5hdkNvbnRleHQoeyBuYW1lOiAnd2JlX2Rhc2hib2FyZCcgfSkpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwgW2lzRmV0Y2hpbmcsIHNlbGVjdGVkUGF0aG9nZW4sIGRhdGFdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Q29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDE+XG4gICAgICAgICAgICB7YCR7aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFibGVfbmFtZScpfSAoJHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRQYXRob2dlbiB8fCBnZXRQYXRob2dlbigpXG4gICAgICAgICAgICB9KWB9XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgICA8QWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIHtwYXRob2dlbnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tYmFzaWMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydidXR0b24gYnV0dG9uLS1zb3J0J31cbiAgICAgICAgICAgICAgICB0aXRsZT17c2VsZWN0ZWRQYXRob2dlbiArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXRob2dlbnMubWFwKChwYXRob2dlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UGF0aG9nZW5DbGljayhwYXRob2dlbil9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyAncmlnaHQnIDogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7cGF0aG9nZW59XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uSXRlbT5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxGaXJzdFNlY3Rpb24+XG4gICAgICAgICAgPFdiZVN1bW1hcnlCYXJcbiAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgd2F0ZXJBdXRob3JpdHlJZD17d2F0ZXJBdXRob3JpdHlJZH1cbiAgICAgICAgICAgIGlzUnRsPXtpc1J0bH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0ZpcnN0U2VjdGlvbj5cblxuICAgICAgICA8U2Vjb25kU2VjdGlvbj5cbiAgICAgICAgICA8U2VhcmNoSW5wdXQgb25DaGFuZ2VCZWhhdmlvcj17ZmlsdGVyUmVzdWx0c0FuZFNldFJvd3N9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyd0YWJzLWNvbnRhaW5lcid9PlxuICAgICAgICAgICAgPFRhYnNcbiAgICAgICAgICAgICAgdGFicz17dGFic31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRUYWI9e3NlbGVjdGVkVGFifVxuICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrPXtoYW5kbGVUYWJTZWxlY3Rpb25DbGlja31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPE1hcFRhYmxlQ29udGFpbmVyIGlzUnRsPXtpc1J0bH0+XG4gICAgICAgICAgICB7aXNGZXRjaGluZyAmJiA8U3Bpbm5lciAvPn1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbWFwLWNvbnRhaW5lcid9PlxuICAgICAgICAgICAgICB7IWlzRmV0Y2hpbmcgJiYgcm93cyAhPT0gbnVsbCAmJiBtYXBab29tICE9PSBudWxsICYmIChcbiAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgICAgIDxNYXBcbiAgICAgICAgICAgICAgICAgICAgYXJlYXM9e21hcEFyZWFzfVxuICAgICAgICAgICAgICAgICAgICBhcmVhVG9DZW50ZXJCeT17bWFwWm9vbX1cbiAgICAgICAgICAgICAgICAgICAgZWRnZXM9e1tdfVxuICAgICAgICAgICAgICAgICAgICBwb2ludHM9e1tdfVxuICAgICAgICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgbWFwQm94U3R5bGU9e01BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIChcbiAgICAgICAgICAgICAgPEthbmRvVGFibGVcbiAgICAgICAgICAgICAgICBvblJvd0V4cGFuZFRvZ2dsZWQ9e2hhbmRsZU9uUm93RXhwYW5kfVxuICAgICAgICAgICAgICAgIGRhdGE9e3Jvd3N9XG4gICAgICAgICAgICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICAgICAgICBkaXJlY3Rpb249e2Rpcn1cbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlUm93cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uUGVyUGFnZT17VEFCTEVfUk9XU19QRVJfUEFHRX1cbiAgICAgICAgICAgICAgICByb3dDb21wb25lbnQ9e0V4cGFuZGVkQ29tcG9uZW50fVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHM9e3sgcGF0aG9nZW46IHNlbGVjdGVkUGF0aG9nZW4gfX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0U29ydEZpZWxkSWQ9ezN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvTWFwVGFibGVDb250YWluZXI+XG4gICAgICAgIDwvU2Vjb25kU2VjdGlvbj5cbiAgICAgIDwvQ29udGVudD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IFJvd05hbWUgPSBzdHlsZWQuZGl2PHsgaXNSdGw6IGJvb2xlYW4gfT5gXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgICBcbiAgICAucm93X25hbWUge1xuICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IC4ycyBlYXNlLWluOyAgICAgIFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgICBcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogMnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1jbGVhbiB7XG4gICAgICAgICBjb2xvcjogIzI3YTYzYTsgXG4gICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyN2E2M2E7ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWluZmVjdGVkIHtcbiAgICAgICAgICBjb2xvcjogI2UxMDAzNjtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlMTAwMzY7ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWluYWN0aXZlLXNhbXBsaW5nIHtcbiAgICAgICAgICBjb2xvcjogJHt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07XG4gICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLm5hbWUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwO1xuICAgICAgICAgICR7KHApID0+IChwLmlzUnRsID8gJ3JpZ2h0OiA1MXB4OycgOiAnbGVmdDogNTFweDsnKX1cbiAgICAgICAgICB0b3A6IDE2cHg7XG4gICAgICAgICAgd2lkdGg6IDcuNWVtO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDNweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgYDtcblxuY29uc3QgQWN0aW9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBGaXJzdFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBtYXJnaW46IDg1cHggMCAyMHB4IDA7XG5gO1xuXG5jb25zdCBTZWNvbmRTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMjBweDtcbiAgYmFja2dyb3VuZDogI2ZjZmNmYztcbiAgYm9yZGVyOiAxcHggc29saWQgI2U3ZTdlNztcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuYDtcblxuY29uc3QgTWFwVGFibGVDb250YWluZXIgPSBzdHlsZWQuZGl2PHsgaXNSdGw6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgLm1hcC1jb250YWluZXIge1xuICAgIHdpZHRoOiB1bnNldCAhaW1wb3J0YW50O1xuICAgIC5ldmVudC10aW1lcmFuZ2Uge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI21hcCB7XG4gICAgICBoZWlnaHQ6IDY5dmg7XG4gICAgICB3aWR0aDogMzB2dztcbiAgICB9XG4gIH1cbiAgW2RhdGEtdGVzdGlkPSdrYW5kby10YWJsZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICBbZGF0YS1jb2x1bW4taWQ9JzEnXSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIC5uYW1lIHtcbiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTIwcHggKyAxdncpO1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjJzIGN1YmljLWJlemllcigwLjY1LCAwLjA1LCAwLjM2LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3Bpbm5lci1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICB9XG5cbiAgaDEge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgcGFkZGluZzogNjBweCA2MHB4O1xuYDtcbiJdfQ==