@kando-env/kando-ui 1.2.371-alpha.9 → 1.2.372

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 (586) hide show
  1. package/lib/Router.js +36 -73
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +25 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +27 -39
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +83 -124
  6. package/lib/Widgets/Map/MapUtils.js +70 -99
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +53 -77
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +23 -24
  9. package/lib/Widgets/Map/areas/AreaUtils.js +47 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +31 -35
  12. package/lib/Widgets/Map/edges/Edges.js +19 -23
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +23 -44
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +65 -60
  16. package/lib/Widgets/Map/events/EventPath.js +24 -22
  17. package/lib/Widgets/Map/events/EventUtils.js +60 -80
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -18
  19. package/lib/Widgets/Map/events/PointOfEvent.js +29 -34
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +30 -37
  21. package/lib/Widgets/Map/events/Snail.js +19 -20
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +93 -86
  23. package/lib/Widgets/Map/map/FloatingGraph.js +22 -18
  24. package/lib/Widgets/Map/map/GraphDateButton.js +25 -17
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +13 -12
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -15
  27. package/lib/Widgets/Map/points/PointIcon.js +22 -15
  28. package/lib/Widgets/Map/points/PointMarker.js +71 -87
  29. package/lib/Widgets/Map/points/PointMarkers.js +45 -66
  30. package/lib/Widgets/Map/points/PointUtils.js +145 -84
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +30 -48
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +29 -10
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -12
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +31 -60
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -8
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +39 -70
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +12 -10
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +22 -28
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +18 -22
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +6 -4
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -4
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +19 -13
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +35 -30
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +45 -35
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +39 -35
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +54 -50
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +7 -5
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
  60. package/lib/Widgets/PotentialImpactSummary/index.js +19 -27
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +47 -52
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +9 -7
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +22 -17
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +35 -32
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -24
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -37
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +9 -13
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +23 -15
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -13
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -26
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +29 -24
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +30 -37
  75. package/lib/Widgets/UtilityInformation/styles.js +34 -25
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +6 -4
  84. package/lib/components/ContentLoader/ContentLoader.js +11 -9
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +13 -12
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +20 -12
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +13 -20
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -4
  91. package/lib/components/CustomInputs/Search/Search.js +42 -63
  92. package/lib/components/CustomInputs/Select/Select.js +45 -58
  93. package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
  94. package/lib/components/DamageType/DamageType.js +35 -57
  95. package/lib/components/DataLoaderError/DataLoaderError.js +8 -6
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +9 -10
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +70 -71
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +27 -37
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -12
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +27 -41
  104. package/lib/components/Events/Events.js +41 -58
  105. package/lib/components/Graph/Graph.js +70 -89
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +17 -21
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +25 -33
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +3 -5
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +90 -108
  113. package/lib/components/Header/InfoBar/InfoBar.js +74 -103
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -5
  116. package/lib/components/Header/InfoBar/Search/Search.js +16 -21
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -33
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +41 -49
  119. package/lib/components/Header/InfoBar/TimeFilter.js +11 -14
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +64 -89
  121. package/lib/components/Header/Slideshow/Slideshow.js +68 -90
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +6 -4
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +21 -23
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +37 -43
  126. package/lib/components/Header/Toolbar/Toolbar.js +55 -74
  127. package/lib/components/InfoBar/InfoBar.js +10 -23
  128. package/lib/components/InfoBar/InfoBar.stories.js +3 -5
  129. package/lib/components/KandoModal/KandoModal.js +27 -41
  130. package/lib/components/Link.js +8 -7
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -8
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +11 -10
  134. package/lib/components/LiveEvents/CarouselSlide.js +9 -7
  135. package/lib/components/LiveEvents/LiveEvents.js +5 -3
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -29
  137. package/lib/components/Map/Map.js +20 -23
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +17 -31
  140. package/lib/components/PointInfo/PointInfo.js +19 -17
  141. package/lib/components/PopupModal/PopupModal.js +12 -16
  142. package/lib/components/PopupModal/PopupModal.stories.js +15 -19
  143. package/lib/components/Sector/Sector.js +8 -6
  144. package/lib/components/Sector/Sector.test.js +19 -20
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +49 -52
  147. package/lib/components/SevereEvent/Eta/styles.js +10 -6
  148. package/lib/components/SevereEvent/SevereEvent.js +30 -37
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +4 -6
  151. package/lib/components/Spinner/styles.js +22 -14
  152. package/lib/components/Tabs/Tabs.js +21 -29
  153. package/lib/components/Tabs/Tabs.stories.js +4 -6
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -15
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +40 -51
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +19 -31
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +20 -25
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +23 -24
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -25
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -32
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +12 -17
  166. package/lib/components/TrendGraph/TrendGraph.js +23 -39
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  168. package/lib/development-environment/index.js +8 -12
  169. package/lib/development-environment/mock/browser.js +2 -4
  170. package/lib/development-environment/mock/get.js +8 -10
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +13 -22
  192. package/lib/development-environment/togly/ToglyItem.js +36 -31
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +14 -10
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  196. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  197. package/lib/hooks/useApi.js +19 -55
  198. package/lib/hooks/useApiWithDashboardQuery.js +30 -49
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +16 -29
  202. package/lib/hooks/useMap.js +22 -34
  203. package/lib/hooks/useNavContext.js +22 -26
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +13 -17
  206. package/lib/hooks/useUserTimeZone.js +33 -30
  207. package/lib/hooks/useUserTimeZone.test.js +19 -22
  208. package/lib/hooks/useWindowSize.js +7 -14
  209. package/lib/i18n/en.json +0 -5
  210. package/lib/i18n/he.json +0 -1
  211. package/lib/index.js +11 -12
  212. package/lib/macros/getVersion.js +3 -3
  213. package/lib/pages/AreaPage/AreaPage.js +34 -67
  214. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -17
  215. package/lib/pages/AreaPage/Dashboard/Dashboard.js +28 -29
  216. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +17 -25
  217. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  219. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  220. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  221. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  222. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  223. package/lib/pages/AssessmentPage/AssessmentPage.js +40 -46
  224. package/lib/pages/CannyWidget/Feedback.js +13 -13
  225. package/lib/pages/CovidPage/CovidPage.js +8 -13
  226. package/lib/pages/CovidPage/components/Body.js +25 -27
  227. package/lib/pages/CovidPage/components/Map.js +29 -39
  228. package/lib/pages/CovidPage/components/Sidebar.js +16 -15
  229. package/lib/pages/CovidPage/components/Summary.js +20 -27
  230. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  231. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +51 -73
  232. package/lib/pages/CovidPage/components/areas/Area.js +29 -40
  233. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +55 -46
  234. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -35
  235. package/lib/pages/CovidPage/components/areas/AreasList.js +34 -46
  236. package/lib/pages/CovidPage/components/areas/Sort.js +11 -14
  237. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  238. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  239. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
  240. package/lib/pages/DashboardMap/Capacity.js +31 -80
  241. package/lib/pages/DashboardMap/FactoryCard.js +31 -26
  242. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -4
  243. package/lib/pages/DashboardMap/List.js +72 -113
  244. package/lib/pages/DashboardMap/ListContext.js +15 -19
  245. package/lib/pages/DashboardMap/Loader.js +2 -2
  246. package/lib/pages/DashboardMap/SeverityBadge.js +10 -18
  247. package/lib/pages/DashboardMap/WWTPMap.js +74 -93
  248. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  249. package/lib/pages/DashboardMap/Widget.js +54 -71
  250. package/lib/pages/DashboardMap/utils.js +48 -65
  251. package/lib/pages/EventsPage/Body/Body.js +20 -15
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -19
  253. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -35
  254. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +8 -6
  255. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -7
  256. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +21 -30
  257. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +53 -64
  258. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +19 -31
  259. package/lib/pages/EventsPage/EventsPage.js +7 -10
  260. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -38
  261. package/lib/pages/EventsPage/events/MoreInfo.js +17 -16
  262. package/lib/pages/EventsPage/events/Sidebar.js +21 -16
  263. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  264. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +17 -20
  265. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +30 -35
  266. package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -37
  267. package/lib/pages/EventsPage/events/event_info/EventInfo.js +43 -42
  268. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  269. package/lib/pages/EventsPage/events/event_info/EventSection.js +17 -19
  270. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +43 -38
  271. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -47
  272. package/lib/pages/EventsPage/events/event_info/Header/Header.js +6 -4
  273. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -33
  274. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  275. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +29 -36
  276. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +4 -6
  277. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  278. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +7 -9
  279. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +22 -21
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +12 -19
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +5 -3
  282. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +11 -9
  283. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -26
  284. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +12 -8
  285. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +12 -10
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +10 -8
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +10 -12
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +5 -3
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +7 -5
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +7 -5
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +6 -4
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +11 -9
  296. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  297. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  298. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +7 -5
  299. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +17 -15
  300. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  301. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +10 -8
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +16 -11
  303. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +9 -8
  304. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  305. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  306. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -38
  307. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +29 -36
  308. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +11 -9
  309. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +15 -17
  310. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -30
  311. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +23 -26
  312. package/lib/pages/EventsPage/events/event_info/styles.js +20 -12
  313. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -19
  314. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  315. package/lib/pages/EventsPage/events/events_list/EventsList.js +124 -145
  316. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +40 -55
  317. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +79 -115
  318. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +60 -77
  319. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +38 -41
  320. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +29 -36
  321. package/lib/pages/EventsPage/events/events_list/Sort.js +13 -16
  322. package/lib/pages/ImportFileWizard/FileUploadRespones.js +13 -20
  323. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +6 -4
  324. package/lib/pages/ImportFileWizard/ImportFile.js +20 -22
  325. package/lib/pages/ImportFileWizard/ResponseBody.js +24 -33
  326. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -22
  327. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  328. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  329. package/lib/pages/ImportGisPage/ImportGisContainer.js +21 -24
  330. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +21 -23
  331. package/lib/pages/ImportGisPage/importGisUtils.js +13 -21
  332. package/lib/pages/ImportGisProcess/index.js +12 -15
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -12
  334. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +17 -19
  335. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  336. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +56 -65
  337. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +6 -8
  338. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -12
  339. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  340. package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
  341. package/lib/pages/NotificationsPage/NotificationsPage.js +18 -36
  342. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  343. package/lib/pages/NotificationsPageV2/NotificationsPage.js +71 -97
  344. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +94 -63
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +14 -16
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +18 -16
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +17 -21
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +17 -21
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +18 -22
  350. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +83 -69
  351. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +18 -22
  352. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  353. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +97 -95
  354. package/lib/pages/NotificationsPageV2/notificationUtils.js +54 -48
  355. package/lib/pages/OldSitePage/OldSitePage.js +57 -132
  356. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  357. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -6
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -20
  360. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  361. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -18
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -63
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -53
  368. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  369. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -10
  371. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  372. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +32 -28
  373. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +27 -29
  374. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  375. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +18 -12
  376. package/lib/pages/ProfilePage/Container.js +2 -2
  377. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +28 -44
  378. package/lib/pages/ProfilePage/ProfilePage.js +120 -237
  379. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -33
  380. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +19 -16
  381. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +28 -30
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -117
  383. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +17 -20
  384. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +12 -10
  385. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -41
  386. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -26
  387. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  388. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -15
  389. package/lib/pages/SamplingsPage/NavigationDropdown.js +45 -32
  390. package/lib/pages/SamplingsPage/NewSamplingAction.js +76 -100
  391. package/lib/pages/SamplingsPage/SamplingMobileModal.js +129 -101
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +21 -22
  393. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +34 -22
  394. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -59
  395. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +15 -18
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -7
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +110 -194
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +49 -55
  399. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -43
  400. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -45
  401. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +19 -20
  402. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  403. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +10 -6
  404. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +58 -54
  405. package/lib/pages/SamplingsPage/SamplingsMobileList.js +21 -28
  406. package/lib/pages/SamplingsPage/SamplingsPage.js +27 -33
  407. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +50 -58
  408. package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -76
  409. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -4
  410. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +14 -13
  411. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +10 -13
  412. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  413. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  414. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +14 -10
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -8
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +26 -23
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +14 -17
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +36 -32
  419. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  420. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -24
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  424. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -70
  425. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -26
  427. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  428. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  429. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  430. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +29 -37
  431. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  432. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  433. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -59
  434. package/lib/pages/SitePage/SamplingParameters/dataParser.js +30 -39
  435. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  436. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  437. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +18 -12
  438. package/lib/pages/SitePage/SiteInformation/EmptyState.js +11 -7
  439. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -32
  440. package/lib/pages/SitePage/SitePage.js +40 -79
  441. package/lib/pages/UploadLabResult/index.js +13 -13
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +26 -35
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +6 -8
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +9 -8
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -48
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +10 -6
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  449. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +4 -6
  450. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -12
  451. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -12
  452. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  453. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +18 -26
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +26 -30
  456. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -18
  457. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -13
  458. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +27 -31
  459. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -8
  460. package/lib/pages/WbeDashboard/GraphWrapper.js +30 -36
  461. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +17 -19
  462. package/lib/pages/WbeDashboard/SearchInput.js +15 -20
  463. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -76
  464. package/lib/pages/WbeDashboard/SummaryGraphModal.js +19 -17
  465. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  466. package/lib/pages/WbeDashboard/WbeDashboardPage.js +151 -213
  467. package/lib/pages/WbeDashboard/WbeSummaryBar.js +40 -48
  468. package/lib/pages/WwtpPage/DashboardCard.js +26 -23
  469. package/lib/pages/WwtpPage/DischargePatternCard.js +14 -23
  470. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +26 -22
  471. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +19 -18
  472. package/lib/pages/WwtpPage/Map.js +5 -3
  473. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  474. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -6
  476. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +9 -8
  477. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +18 -14
  478. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  479. package/lib/pages/WwtpPage/TrendCard.js +18 -19
  480. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  481. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  482. package/lib/pages/WwtpPage/WwtpPageContainer.js +21 -16
  483. package/lib/providers/Slideshow/SlideshowContext.js +11 -9
  484. package/lib/providers/Slideshow/SlideshowProvider.js +22 -38
  485. package/lib/providers/Slideshow/SlideshowRunner.js +17 -19
  486. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -4
  487. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -11
  488. package/lib/providers/UrlHistory/index.js +2 -2
  489. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  490. package/lib/store/ImportGis/actionTypes.js +1 -1
  491. package/lib/store/ImportGis/actionsCreator.js +7 -5
  492. package/lib/store/ImportGis/reducer.js +40 -29
  493. package/lib/store/WBE/actionTypes.js +2 -2
  494. package/lib/store/WBE/reducer.js +13 -9
  495. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -14
  496. package/lib/store/areas/actionTypes.js +4 -4
  497. package/lib/store/areas/actions.js +7 -13
  498. package/lib/store/areas/reducer.js +8 -6
  499. package/lib/store/context/actionTypes.js +3 -3
  500. package/lib/store/context/actions.js +3 -3
  501. package/lib/store/context/contextMiddlewares.js +14 -16
  502. package/lib/store/context/reducer.js +13 -9
  503. package/lib/store/dashboard/dashboardSlice.js +18 -10
  504. package/lib/store/edges/actionTypes.js +5 -5
  505. package/lib/store/edges/actions.js +4 -8
  506. package/lib/store/edges/reducer.js +13 -17
  507. package/lib/store/events/actionTypes.js +17 -17
  508. package/lib/store/events/actions.js +3 -7
  509. package/lib/store/events/reducer.js +42 -49
  510. package/lib/store/global/actionTypes.js +11 -11
  511. package/lib/store/global/actions.js +8 -6
  512. package/lib/store/global/reducer.js +11 -10
  513. package/lib/store/permissions/permissionsSlice.js +12 -8
  514. package/lib/store/points/actionTypes.js +3 -3
  515. package/lib/store/points/actions.js +4 -8
  516. package/lib/store/points/reducer.js +7 -5
  517. package/lib/store/rootActionTypes.js +2 -2
  518. package/lib/store/rootReducer.js +17 -12
  519. package/lib/store/rootStore.js +5 -5
  520. package/lib/store/samplings/actionTypes.js +1 -1
  521. package/lib/store/samplings/reducer.js +16 -14
  522. package/lib/styles/StylesLayout.js +5 -3
  523. package/lib/styles/theme/theme.js +27 -28
  524. package/lib/test/mocks/browser.js +2 -4
  525. package/lib/test/test-utils.js +17 -15
  526. package/lib/ui-kit/Button/Button.js +128 -80
  527. package/lib/ui-kit/Button/Button.test.js +24 -29
  528. package/lib/ui-kit/Checkbox/Checkbox.js +30 -20
  529. package/lib/ui-kit/ContentCard/ContentCard.js +15 -18
  530. package/lib/ui-kit/Dashboard/Dashboard.js +25 -22
  531. package/lib/ui-kit/DropDown/DropDown.js +23 -24
  532. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  533. package/lib/ui-kit/DropDown/DropDownItem.js +24 -21
  534. package/lib/ui-kit/DropDown/DropdownToggle.js +12 -8
  535. package/lib/ui-kit/EmptyState/EmptyState.js +6 -4
  536. package/lib/ui-kit/IconAction/IconAction.js +7 -5
  537. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +48 -64
  538. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +69 -52
  539. package/lib/ui-kit/InletsPie/InletsPie.js +15 -13
  540. package/lib/ui-kit/InletsPie/options.js +6 -6
  541. package/lib/ui-kit/KandoList/KandoList.js +14 -12
  542. package/lib/ui-kit/KandoTable/KandoTable.js +48 -40
  543. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -22
  544. package/lib/ui-kit/Layout/Layout.js +6 -4
  545. package/lib/ui-kit/MobileInput/MobileInput.js +60 -50
  546. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +13 -16
  547. package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -6
  548. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  549. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +27 -20
  550. package/lib/ui-kit/OrganicEvents/TextInfo.js +15 -10
  551. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -8
  552. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -17
  553. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  554. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  555. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  556. package/lib/ui-kit/TimeLineChart/TrendChart.js +54 -42
  557. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +8 -7
  558. package/lib/ui-kit/Tooltip/Tooltip.js +14 -8
  559. package/lib/ui-kit/index.js +8 -8
  560. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  561. package/lib/ui-kit/siteName/SiteName.js +11 -8
  562. package/lib/utilities/ActionUtility.js +7 -7
  563. package/lib/utilities/Alert.js +21 -17
  564. package/lib/utilities/Analytics.js +11 -11
  565. package/lib/utilities/Array.js +4 -5
  566. package/lib/utilities/Enum.js +15 -51
  567. package/lib/utilities/ErrorBoundary.js +27 -41
  568. package/lib/utilities/File.js +40 -69
  569. package/lib/utilities/GetDir.js +8 -7
  570. package/lib/utilities/KandoDate.js +7 -15
  571. package/lib/utilities/KandoModal.js +16 -26
  572. package/lib/utilities/LocalStorage.js +8 -10
  573. package/lib/utilities/ThousandsToK.js +3 -3
  574. package/lib/utilities/TimeFormat.js +21 -20
  575. package/lib/utilities/Truncate.js +17 -25
  576. package/lib/utilities/edgesMath.js +14 -15
  577. package/lib/utilities/i18n.js +3 -3
  578. package/lib/utilities/kql.js +12 -14
  579. package/lib/utilities/map/icons.js +3 -3
  580. package/lib/utilities/polylinedecorator.js +87 -112
  581. package/lib/utilities/scoreToData.js +17 -17
  582. package/lib/utilities/scoreToData.test.js +5 -5
  583. package/lib/utilities/time.js +8 -8
  584. package/lib/utilities/uploadToS3.js +11 -11
  585. package/lib/utilities/urls.js +61 -59
  586. package/package.json +1 -1
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.ProfilePage = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
- var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
8
  var _react = _interopRequireWildcard(require("react"));
13
9
  var _Select = require("components/CustomInputs/Select/Select");
14
10
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
@@ -25,11 +21,11 @@ var _Analytics = require("../../utilities/Analytics");
25
21
  var _reactRedux = require("react-redux");
26
22
  var _reactToastify = require("react-toastify");
27
23
  var _permissionsSlice = require("store/permissions/permissionsSlice");
28
- 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); }
29
- 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; }
30
- var ProfilePage = function ProfilePage() {
31
- var timezonesArray = _momentTimezone.default.tz.names();
32
- var dateTimeFormatOptions = [{
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+ 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; }
26
+ const ProfilePage = () => {
27
+ const timezonesArray = _momentTimezone.default.tz.names();
28
+ const dateTimeFormatOptions = [{
33
29
  value: 'us',
34
30
  label: 'United States',
35
31
  format: {
@@ -51,13 +47,13 @@ var ProfilePage = function ProfilePage() {
51
47
  hour12: false
52
48
  }
53
49
  }];
54
- var timezones = timezonesArray.map(function (t) {
50
+ const timezones = timezonesArray.map(t => {
55
51
  return {
56
52
  value: t,
57
53
  label: t
58
54
  };
59
55
  });
60
- var localeOptions = [{
56
+ const localeOptions = [{
61
57
  value: 'en',
62
58
  label: 'English'
63
59
  }, {
@@ -73,7 +69,7 @@ var ProfilePage = function ProfilePage() {
73
69
  value: 'it',
74
70
  label: 'Italiano'
75
71
  }];
76
- var flowRateUnitOptions = [{
72
+ const flowRateUnitOptions = [{
77
73
  value: 'gd_us',
78
74
  label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.gd_us')
79
75
  }, {
@@ -83,56 +79,21 @@ var ProfilePage = function ProfilePage() {
83
79
  value: 'm3d',
84
80
  label: _i18n.default.t('dashboard_v2.profile.flow_rate_unit_options.m3d')
85
81
  }];
86
- var temperatureUnitOptions = [{
87
- value: 'celcius',
88
- label: _i18n.default.t('dashboard_v2.profile.temperature_unit_options.celsius')
89
- }, {
90
- value: 'fahrenheit',
91
- label: _i18n.default.t('dashboard_v2.profile.temperature_unit_options.fahrenheit')
92
- }];
93
- var _useState = (0, _react.useState)(localeOptions[0]),
94
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
95
- locale = _useState2[0],
96
- setLocale = _useState2[1];
97
- var _useState3 = (0, _react.useState)(flowRateUnitOptions[0]),
98
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
99
- flowRateUnit = _useState4[0],
100
- setFlowRateUnit = _useState4[1];
101
- var _useState5 = (0, _react.useState)(temperatureUnitOptions[0]),
102
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
103
- temperatureUnit = _useState6[0],
104
- setTemperatureUnit = _useState6[1];
105
- var _useState7 = (0, _react.useState)(dateTimeFormatOptions[0]),
106
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
107
- dateTimeFormat = _useState8[0],
108
- setDateTimeFormat = _useState8[1];
109
- var _useState9 = (0, _react.useState)(timezones[20]),
110
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
111
- timezone = _useState10[0],
112
- setTimezone = _useState10[1];
113
- var _useState11 = (0, _react.useState)([{
114
- value: '',
115
- label: ''
116
- }]),
117
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
118
- departments = _useState12[0],
119
- setDepartments = _useState12[1];
120
- var _useState13 = (0, _react.useState)([{
121
- value: '',
122
- label: ''
123
- }]),
124
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
125
- businessRoles = _useState14[0],
126
- setBusinessRoles = _useState14[1];
127
- var _useState15 = (0, _react.useState)(departments[0]),
128
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
129
- department = _useState16[0],
130
- setDepartment = _useState16[1];
131
- var _useState17 = (0, _react.useState)(businessRoles[0]),
132
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
133
- businessRole = _useState18[0],
134
- setBusinessRole = _useState18[1];
135
- var initialParamsState = {
82
+ const [locale, setLocale] = (0, _react.useState)(localeOptions[0]);
83
+ const [flowRateUnit, setFlowRateUnit] = (0, _react.useState)(flowRateUnitOptions[0]);
84
+ const [dateTimeFormat, setDateTimeFormat] = (0, _react.useState)(dateTimeFormatOptions[0]);
85
+ const [timezone, setTimezone] = (0, _react.useState)(timezones[20]);
86
+ const [departments, setDepartments] = (0, _react.useState)([{
87
+ value: '',
88
+ label: ''
89
+ }]);
90
+ const [businessRoles, setBusinessRoles] = (0, _react.useState)([{
91
+ value: '',
92
+ label: ''
93
+ }]);
94
+ const [department, setDepartment] = (0, _react.useState)(departments[0]);
95
+ const [businessRole, setBusinessRole] = (0, _react.useState)(businessRoles[0]);
96
+ const initialParamsState = {
136
97
  first_name: '',
137
98
  last_name: '',
138
99
  phone: '',
@@ -145,101 +106,80 @@ var ProfilePage = function ProfilePage() {
145
106
  other_department_name: '',
146
107
  business_role: '',
147
108
  department: '',
148
- flow_rate_unit: '',
149
- temperature_unit: ''
109
+ flow_rate_unit: ''
150
110
  };
151
- var _useState19 = (0, _react.useState)(false),
152
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
153
- isTelegramOpen = _useState20[0],
154
- setIsTelegramOpen = _useState20[1];
155
- var _useState21 = (0, _react.useState)(false),
156
- _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
157
- showPasswordModal = _useState22[0],
158
- setShowPasswordModal = _useState22[1];
159
- var _useState23 = (0, _react.useState)(false),
160
- _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
161
- submitting = _useState24[0],
162
- setSubmitting = _useState24[1];
163
- var _useState25 = (0, _react.useState)(false),
164
- _useState26 = (0, _slicedToArray2.default)(_useState25, 2),
165
- showSuccessMessage = _useState26[0],
166
- setShowSuccessMessage = _useState26[1];
167
- var _useState27 = (0, _react.useState)(false),
168
- _useState28 = (0, _slicedToArray2.default)(_useState27, 2),
169
- showErrorMessage = _useState28[0],
170
- setShowErrorMessage = _useState28[1];
171
- var _useState29 = (0, _react.useState)({
172
- show: false,
173
- status: '',
174
- message: ''
175
- }),
176
- _useState30 = (0, _slicedToArray2.default)(_useState29, 2),
177
- showTelegramResponseMessage = _useState30[0],
178
- setShowTelegramResponseMessage = _useState30[1];
179
- var _useState31 = (0, _react.useState)(initialParamsState),
180
- _useState32 = (0, _slicedToArray2.default)(_useState31, 2),
181
- params = _useState32[0],
182
- setParams = _useState32[1];
183
- var handleOnChange = function handleOnChange(e) {
111
+ const [isTelegramOpen, setIsTelegramOpen] = (0, _react.useState)(false);
112
+ const [showPasswordModal, setShowPasswordModal] = (0, _react.useState)(false);
113
+ const [submitting, setSubmitting] = (0, _react.useState)(false);
114
+ const [showSuccessMessage, setShowSuccessMessage] = (0, _react.useState)(false);
115
+ const [showErrorMessage, setShowErrorMessage] = (0, _react.useState)(false);
116
+ const [showTelegramResponseMessage, setShowTelegramResponseMessage] = (0, _react.useState)({
117
+ show: false,
118
+ status: '',
119
+ message: ''
120
+ });
121
+ const [params, setParams] = (0, _react.useState)(initialParamsState);
122
+ const handleOnChange = e => {
184
123
  if (typeof e === 'string') {
185
124
  if (e.startsWith('9720')) {
186
125
  e = e.replace(/(9720)/g, '972');
187
126
  }
188
- setParams(function (prevState) {
189
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
190
- phone: e
191
- });
192
- });
127
+ setParams(prevState => ({
128
+ ...prevState,
129
+ phone: e
130
+ }));
193
131
  } else {
194
- var _e$target = e.target,
195
- value = _e$target.value,
196
- name = _e$target.name;
197
- setParams(function (prevState) {
198
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, (0, _defineProperty2.default)({}, name, value));
199
- });
132
+ const {
133
+ value,
134
+ name
135
+ } = e.target;
136
+ setParams(prevState => ({
137
+ ...prevState,
138
+ [name]: value
139
+ }));
200
140
  }
201
141
  };
202
- var handleBusinessRoleChange = function handleBusinessRoleChange(e) {
142
+ const handleBusinessRoleChange = e => {
203
143
  if (e.target !== null) {
204
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
144
+ setParams({
145
+ ...params,
205
146
  business_role: e.value,
206
147
  other_business_role_name: e.target.value
207
- }));
148
+ });
208
149
  }
209
150
  };
210
- var handleDepartmentChange = function handleDepartmentChange(e) {
151
+ const handleDepartmentChange = e => {
211
152
  if (e.target !== null) {
212
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
153
+ setParams({
154
+ ...params,
213
155
  department: e.value,
214
156
  other_department_name: e.target.value
215
- }));
157
+ });
216
158
  }
217
159
  };
218
- var getParamsWithAggregatedValues = function getParamsWithAggregatedValues() {
219
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
160
+ const getParamsWithAggregatedValues = () => {
161
+ return {
162
+ ...params,
220
163
  date_time_format: dateTimeFormat.value,
221
164
  locale: locale.value,
222
165
  time_zone: timezone.value,
223
166
  department_id: department === undefined ? null : department.value,
224
167
  business_role_id: businessRole === undefined ? null : businessRole.value,
225
- flow_rate_unit: flowRateUnit.value,
226
- temperature_unit: temperatureUnit.value
227
- });
168
+ flow_rate_unit: flowRateUnit.value
169
+ };
228
170
  };
229
- var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
230
- return state.global_data.waterAuthorityName;
231
- });
232
- var showToast = function showToast(data) {
233
- var username = data.username;
234
- var error = data.error;
171
+ const waterAuthorityName = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityName);
172
+ const showToast = data => {
173
+ const username = data.username;
174
+ const error = data.error;
235
175
  if (data.status === 'success') {
236
- _reactToastify.toast.success(_i18n.default.t("my_profile_tab.telegram_messages.".concat(data.message), {
237
- username: username
176
+ _reactToastify.toast.success(_i18n.default.t(`my_profile_tab.telegram_messages.${data.message}`, {
177
+ username
238
178
  }), {
239
179
  position: 'top-center'
240
180
  });
241
181
  } else {
242
- _reactToastify.toast.error(_i18n.default.t("my_profile_tab.telegram_messages.".concat(data.message), {
182
+ _reactToastify.toast.error(_i18n.default.t(`my_profile_tab.telegram_messages.${data.message}`, {
243
183
  error: error,
244
184
  username: username
245
185
  }), {
@@ -247,106 +187,81 @@ var ProfilePage = function ProfilePage() {
247
187
  });
248
188
  }
249
189
  };
250
- var dispatch = (0, _reactRedux.useDispatch)();
251
- var handleSubmit = function handleSubmit(e) {
190
+ const dispatch = (0, _reactRedux.useDispatch)();
191
+ const handleSubmit = e => {
252
192
  e.preventDefault();
253
193
  setSubmitting(true);
254
194
  _axios.default.put('/profiles', {
255
195
  user: getParamsWithAggregatedValues()
256
- }).then(function (resp) {
196
+ }).then(resp => {
257
197
  if (resp.data.errors === null) {
258
198
  dispatch(_permissionsSlice.PermissionsSlice.actions.setUserInfo(JSON.parse(resp.data.user)));
259
- document.querySelectorAll('.error-message').forEach(function (p) {
260
- return p.innerHTML = '';
261
- });
262
- document.querySelectorAll('.invalid-field').forEach(function (p) {
263
- return p.classList.remove('invalid-field');
264
- });
265
- var user = JSON.parse(resp.data.user);
266
- var findLocale = localeOptions.find(function (e) {
267
- return e.value === user.locale;
268
- });
269
- var findFlowRateUnit = flowRateUnitOptions.find(function (e) {
270
- return e.value === user.flow_rate_unit;
271
- });
272
- var findTemperatureUnit = temperatureUnitOptions.find(function (e) {
273
- return e.value === user.temperature_unit;
274
- });
275
- var findDateTimeFormat = dateTimeFormatOptions.find(function (e) {
276
- return e.value === user.date_time_format;
277
- });
278
- var findTimezone = timezones.find(function (e) {
279
- return e.value === user.time_zone;
280
- });
199
+ document.querySelectorAll('.error-message').forEach(p => p.innerHTML = '');
200
+ document.querySelectorAll('.invalid-field').forEach(p => p.classList.remove('invalid-field'));
201
+ let user = JSON.parse(resp.data.user);
202
+ const findLocale = localeOptions.find(e => e.value === user.locale);
203
+ const findFlowRateUnit = flowRateUnitOptions.find(e => e.value === user.flow_rate_unit);
204
+ const findDateTimeFormat = dateTimeFormatOptions.find(e => e.value === user.date_time_format);
205
+ const findTimezone = timezones.find(e => e.value === user.time_zone);
281
206
  setParams(user);
282
207
  setLocale(findLocale);
283
208
  setFlowRateUnit(findFlowRateUnit);
284
- setTemperatureUnit(findTemperatureUnit);
285
209
  setDateTimeFormat(findDateTimeFormat);
286
210
  setTimezone(findTimezone);
287
211
  setShowSuccessMessage(true);
288
- setTimeout(function () {
212
+ setTimeout(() => {
289
213
  setShowSuccessMessage(false);
290
214
  }, 6000);
291
215
  } else {
292
- document.querySelectorAll('.error-message').forEach(function (p) {
293
- return p.innerHTML = '';
294
- });
295
- var errors = resp.data.user.errors;
296
- for (var error in errors) {
297
- var findElement = document.querySelector("input[name='".concat(error, "']"));
298
- var parent = findElement.closest('.field');
299
- var findInput = parent.querySelector('input');
216
+ document.querySelectorAll('.error-message').forEach(p => p.innerHTML = '');
217
+ let errors = resp.data.user.errors;
218
+ for (const error in errors) {
219
+ let findElement = document.querySelector(`input[name='${error}']`);
220
+ let parent = findElement.closest('.field');
221
+ let findInput = parent.querySelector('input');
300
222
  findInput.classList.add('invalid-field');
301
- parent.querySelector('.error-message').innerHTML = _i18n.default.t("dashboard_v2.profile.errors.".concat(error));
223
+ parent.querySelector('.error-message').innerHTML = _i18n.default.t(`dashboard_v2.profile.errors.${error}`);
302
224
  }
303
225
  setShowSuccessMessage(false);
304
226
  }
305
227
  setSubmitting(false);
306
- }).catch(function (error) {
228
+ }).catch(error => {
307
229
  setShowErrorMessage(true);
308
230
  setShowSuccessMessage(false);
309
231
  setSubmitting(false);
310
- setTimeout(function () {
232
+ setTimeout(() => {
311
233
  setShowErrorMessage(false);
312
234
  }, 6000);
313
235
  });
314
236
  };
315
- (0, _react.useEffect)(function () {
237
+ (0, _react.useEffect)(() => {
316
238
  (0, _Analytics.analyticsTrack)('Viewed Profile Page', {
317
239
  utility_name: waterAuthorityName
318
240
  });
319
241
  // @ts-ignore
320
- var token = document.querySelector('[name=csrf-token]').content;
242
+ const token = document.querySelector('[name=csrf-token]').content;
321
243
  _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = token;
322
244
  _axios.default.defaults.headers.common['Content-Type'] = 'application/js';
323
- _axios.default.get("/profiles/resource").then(function (resp) {
245
+ _axios.default.get(`/profiles/resource`).then(resp => {
324
246
  setParams(resp.data.user);
325
- var findProperty = function findProperty(object, property) {
326
- return object.find(function (e) {
327
- return e.value === property;
328
- });
247
+ const findProperty = (object, property) => {
248
+ return object.find(e => e.value === property);
329
249
  };
330
250
  setLocale(findProperty(localeOptions, resp.data.user.locale));
331
251
  setFlowRateUnit(findProperty(flowRateUnitOptions, resp.data.user.flow_rate_unit));
332
- setTemperatureUnit(findProperty(temperatureUnitOptions, resp.data.user.temperature_unit));
333
252
  setDateTimeFormat(findProperty(dateTimeFormatOptions, resp.data.user.date_time_format));
334
253
  setTimezone(findProperty(timezones, resp.data.user.time_zone));
335
254
  setBusinessRole(findProperty(resp.data.business_roles, resp.data.user.business_role_id));
336
255
  setDepartment(findProperty(resp.data.departments, resp.data.user.department_id));
337
256
  setDepartments(resp.data.departments);
338
257
  setBusinessRoles(resp.data.business_roles);
339
- }).catch(function (error) {
340
- return alert(error);
341
- });
258
+ }).catch(error => alert(error));
342
259
  }, []);
343
260
  return /*#__PURE__*/_react.default.createElement(_Container.Container, null, /*#__PURE__*/_react.default.createElement("div", {
344
261
  className: "header-title"
345
262
  }, _i18n.default.t('dashboard_v2.profile.title')), /*#__PURE__*/_react.default.createElement("form", {
346
263
  action: "",
347
- onSubmit: function onSubmit(e) {
348
- return handleSubmit(e);
349
- }
264
+ onSubmit: e => handleSubmit(e)
350
265
  }, /*#__PURE__*/_react.default.createElement("div", {
351
266
  className: "content"
352
267
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -362,9 +277,7 @@ var ProfilePage = function ProfilePage() {
362
277
  className: "my-input",
363
278
  name: 'first_name',
364
279
  value: params.first_name,
365
- onChange: function onChange(e) {
366
- return handleOnChange(e);
367
- }
280
+ onChange: e => handleOnChange(e)
368
281
  }), /*#__PURE__*/_react.default.createElement("p", {
369
282
  className: 'error-message'
370
283
  })), /*#__PURE__*/_react.default.createElement("div", {
@@ -376,9 +289,7 @@ var ProfilePage = function ProfilePage() {
376
289
  className: "my-input",
377
290
  name: 'last_name',
378
291
  value: params.last_name,
379
- onChange: function onChange(e) {
380
- return handleOnChange(e);
381
- }
292
+ onChange: e => handleOnChange(e)
382
293
  }), /*#__PURE__*/_react.default.createElement("p", {
383
294
  className: 'error-message'
384
295
  })), /*#__PURE__*/_react.default.createElement("div", {
@@ -408,7 +319,7 @@ var ProfilePage = function ProfilePage() {
408
319
  enableSearch: true,
409
320
  searchPlaceholder: _i18n.default.t('search'),
410
321
  countryCodeEditable: false,
411
- onChange: function onChange(value) {
322
+ onChange: value => {
412
323
  handleOnChange(value);
413
324
  },
414
325
  inputProps: {
@@ -425,7 +336,7 @@ var ProfilePage = function ProfilePage() {
425
336
  }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
426
337
  setValue: setDepartment,
427
338
  value: {
428
- label: _i18n.default.t("dashboard_v2.profile.departments.".concat(department === null || department === void 0 ? void 0 : department.label)),
339
+ label: _i18n.default.t(`dashboard_v2.profile.departments.${department === null || department === void 0 ? void 0 : department.label}`),
429
340
  value: department === null || department === void 0 ? void 0 : department.value
430
341
  },
431
342
  options: departments,
@@ -443,7 +354,7 @@ var ProfilePage = function ProfilePage() {
443
354
  }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
444
355
  setValue: setBusinessRole,
445
356
  value: {
446
- label: _i18n.default.t("dashboard_v2.profile.business_roles.".concat(businessRole === null || businessRole === void 0 ? void 0 : businessRole.label)),
357
+ label: _i18n.default.t(`dashboard_v2.profile.business_roles.${businessRole === null || businessRole === void 0 ? void 0 : businessRole.label}`),
447
358
  value: businessRole === null || businessRole === void 0 ? void 0 : businessRole.value
448
359
  },
449
360
  options: businessRoles,
@@ -453,7 +364,7 @@ var ProfilePage = function ProfilePage() {
453
364
  translation_key: 'dashboard_v2.profile.business_roles'
454
365
  }
455
366
  })))), departments[0].value !== '' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
456
- className: "field ".concat(department && (department === null || department === void 0 ? void 0 : department.value) === departments[departments.length - 1].value ? '' : 'field--hidden')
367
+ className: `field ${department && (department === null || department === void 0 ? void 0 : department.value) === departments[departments.length - 1].value ? '' : 'field--hidden'}`
457
368
  }, /*#__PURE__*/_react.default.createElement("div", {
458
369
  className: "label"
459
370
  }, _i18n.default.t('dashboard_v2.profile.department_alt')), /*#__PURE__*/_react.default.createElement("input", {
@@ -462,11 +373,9 @@ var ProfilePage = function ProfilePage() {
462
373
  className: "my-input",
463
374
  name: 'other_department_name',
464
375
  value: params.other_department_name,
465
- onChange: function onChange(e) {
466
- return handleDepartmentChange(e);
467
- }
376
+ onChange: e => handleDepartmentChange(e)
468
377
  })), /*#__PURE__*/_react.default.createElement("div", {
469
- className: "field ".concat(businessRole && (businessRole === null || businessRole === void 0 ? void 0 : businessRole.value) === businessRoles[businessRoles.length - 1].value ? '' : 'field--hidden', " ")
378
+ className: `field ${businessRole && (businessRole === null || businessRole === void 0 ? void 0 : businessRole.value) === businessRoles[businessRoles.length - 1].value ? '' : 'field--hidden'} `
470
379
  }, /*#__PURE__*/_react.default.createElement("div", {
471
380
  className: "label"
472
381
  }, _i18n.default.t('dashboard_v2.profile.business_role_alt')), /*#__PURE__*/_react.default.createElement("input", {
@@ -475,16 +384,12 @@ var ProfilePage = function ProfilePage() {
475
384
  className: "my-input",
476
385
  name: 'other_business_role_name',
477
386
  value: params.other_business_role_name,
478
- onChange: function onChange(e) {
479
- return handleBusinessRoleChange(e);
480
- }
387
+ onChange: e => handleBusinessRoleChange(e)
481
388
  }))), /*#__PURE__*/_react.default.createElement("div", {
482
389
  className: "field"
483
390
  }, /*#__PURE__*/_react.default.createElement("div", {
484
391
  className: "change-password",
485
- onClick: function onClick() {
486
- return setShowPasswordModal(true);
487
- }
392
+ onClick: () => setShowPasswordModal(true)
488
393
  }, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
489
394
  width: "12px",
490
395
  height: "12px",
@@ -528,33 +433,18 @@ var ProfilePage = function ProfilePage() {
528
433
  value: locale,
529
434
  setValue: setLocale,
530
435
  cancelTextWidth: true
531
- }))), /*#__PURE__*/_react.default.createElement("div", {
532
- className: "field"
533
- }, /*#__PURE__*/_react.default.createElement("div", {
534
- className: "label"
535
- }, _i18n.default.t('dashboard_v2.profile.temperature_units')), /*#__PURE__*/_react.default.createElement("div", {
536
- className: 'my-input'
537
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
538
- options: temperatureUnitOptions,
539
- value: temperatureUnit,
540
- setValue: setTemperatureUnit,
541
- cancelTextWidth: true
542
436
  }))), /*#__PURE__*/_react.default.createElement("div", {
543
437
  className: "field field--buttons"
544
438
  }, params.telegram_name === '' && /*#__PURE__*/_react.default.createElement("a", {
545
439
  className: "telegram",
546
- onClick: function onClick() {
547
- return setIsTelegramOpen(true);
548
- }
440
+ onClick: () => setIsTelegramOpen(true)
549
441
  }, _i18n.default.t('dashboard_v2.profile.connect-to-telegram')), params.telegram_name !== '' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
550
442
  className: "field"
551
443
  }, /*#__PURE__*/_react.default.createElement("div", {
552
444
  className: "label"
553
445
  }, _i18n.default.t('dashboard_v2.profile.telegram_name'), /*#__PURE__*/_react.default.createElement("div", {
554
446
  className: "right",
555
- onClick: function onClick() {
556
- return setIsTelegramOpen(true);
557
- }
447
+ onClick: () => setIsTelegramOpen(true)
558
448
  }, /*#__PURE__*/_react.default.createElement(_pen.ReactComponent, {
559
449
  width: "12px",
560
450
  height: "12px",
@@ -569,25 +459,24 @@ var ProfilePage = function ProfilePage() {
569
459
  value: params.telegram_name
570
460
  }), /*#__PURE__*/_react.default.createElement("div", {
571
461
  className: 'telegram-existing-input__cancel-button',
572
- onClick: function onClick(e) {
573
- setParams(function (prevState) {
574
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
575
- telegram_name: ''
576
- });
577
- });
462
+ onClick: e => {
463
+ setParams(prevState => ({
464
+ ...prevState,
465
+ telegram_name: ''
466
+ }));
578
467
  }
579
468
  }, /*#__PURE__*/_react.default.createElement(_cancel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("p", {
580
469
  className: 'error-message'
581
470
  })), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
582
471
  className: 'telegram open',
583
- onClick: function onClick() {
584
- _axios.default.get("/telegram/send_test_message.json").then(function (resp) {
472
+ onClick: () => {
473
+ _axios.default.get(`/telegram/send_test_message.json`).then(resp => {
585
474
  setShowTelegramResponseMessage({
586
475
  status: resp.data.status[0].toUpperCase() + resp.data.status.substring(1),
587
476
  message: resp.data.message,
588
477
  show: true
589
478
  });
590
- setTimeout(function () {
479
+ setTimeout(() => {
591
480
  setShowTelegramResponseMessage({
592
481
  status: '',
593
482
  message: '',
@@ -595,9 +484,7 @@ var ProfilePage = function ProfilePage() {
595
484
  });
596
485
  }, 6000);
597
486
  showToast(resp.data);
598
- }).catch(function (error) {
599
- return alert(error);
600
- });
487
+ }).catch(error => alert(error));
601
488
  }
602
489
  }, !showTelegramResponseMessage.show && _i18n.default.t('dashboard_v2.profile.send_telegram_message'), showTelegramResponseMessage.show && showTelegramResponseMessage.status)))), /*#__PURE__*/_react.default.createElement("div", {
603
490
  className: "field"
@@ -615,17 +502,13 @@ var ProfilePage = function ProfilePage() {
615
502
  className: 'save',
616
503
  disabled: submitting
617
504
  }, !submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submit'), submitting && !showSuccessMessage && !showErrorMessage && _i18n.default.t('dashboard_v2.profile.submitting'), showSuccessMessage && _i18n.default.t('dashboard_v2.profile.success'), showErrorMessage && _i18n.default.t('dashboard_v2.profile.error')))), showPasswordModal && /*#__PURE__*/_react.default.createElement(_PasswordModal.PasswordModal, {
618
- close: function close() {
619
- return setShowPasswordModal(false);
620
- },
621
- save: function save() {}
505
+ close: () => setShowPasswordModal(false),
506
+ save: () => {}
622
507
  }), isTelegramOpen && /*#__PURE__*/_react.default.createElement(_TelegramModal.TelegramModal, {
623
- close: function close() {
624
- return setIsTelegramOpen(false);
625
- },
508
+ close: () => setIsTelegramOpen(false),
626
509
  handleOnChange: handleOnChange,
627
510
  handleSubmit: handleSubmit
628
511
  }));
629
512
  };
630
513
  exports.ProfilePage = ProfilePage;
631
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJQcm9maWxlUGFnZSIsInRpbWV6b25lc0FycmF5IiwibW9tZW50IiwidHoiLCJuYW1lcyIsImRhdGVUaW1lRm9ybWF0T3B0aW9ucyIsInZhbHVlIiwibGFiZWwiLCJmb3JtYXQiLCJtb250aCIsImRheSIsInllYXIiLCJob3VyIiwibWludXRlIiwiaG91cjEyIiwidGltZXpvbmVzIiwibWFwIiwidCIsImxvY2FsZU9wdGlvbnMiLCJmbG93UmF0ZVVuaXRPcHRpb25zIiwiaTE4biIsInRlbXBlcmF0dXJlVW5pdE9wdGlvbnMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZsb3dSYXRlVW5pdCIsInNldEZsb3dSYXRlVW5pdCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidGVtcGVyYXR1cmVVbml0Iiwic2V0VGVtcGVyYXR1cmVVbml0IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidGltZXpvbmUiLCJzZXRUaW1lem9uZSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJkZXBhcnRtZW50cyIsInNldERlcGFydG1lbnRzIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImJ1c2luZXNzUm9sZXMiLCJzZXRCdXNpbmVzc1JvbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImRlcGFydG1lbnQiLCJzZXREZXBhcnRtZW50IiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImJ1c2luZXNzUm9sZSIsInNldEJ1c2luZXNzUm9sZSIsImluaXRpYWxQYXJhbXNTdGF0ZSIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJwaG9uZSIsImVtYWlsIiwidGltZV96b25lIiwiZGF0ZV90aW1lX2Zvcm1hdCIsInRlbGVncmFtX25hbWUiLCJvdGhlcl9idXNpbmVzc19yb2xlX25hbWUiLCJvdGhlcl9kZXBhcnRtZW50X25hbWUiLCJidXNpbmVzc19yb2xlIiwiZmxvd19yYXRlX3VuaXQiLCJ0ZW1wZXJhdHVyZV91bml0IiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsImlzVGVsZWdyYW1PcGVuIiwic2V0SXNUZWxlZ3JhbU9wZW4iLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwic2hvd1Bhc3N3b3JkTW9kYWwiLCJzZXRTaG93UGFzc3dvcmRNb2RhbCIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJzZXRTaG93U3VjY2Vzc01lc3NhZ2UiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4Iiwic2hvd0Vycm9yTWVzc2FnZSIsInNldFNob3dFcnJvck1lc3NhZ2UiLCJfdXNlU3RhdGUyOSIsInNob3ciLCJzdGF0dXMiLCJtZXNzYWdlIiwiX3VzZVN0YXRlMzAiLCJzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJfdXNlU3RhdGUzMSIsIl91c2VTdGF0ZTMyIiwicGFyYW1zIiwic2V0UGFyYW1zIiwiaGFuZGxlT25DaGFuZ2UiLCJlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJwcmV2U3RhdGUiLCJfb2JqZWN0U3ByZWFkMyIsIl9lJHRhcmdldCIsInRhcmdldCIsIm5hbWUiLCJfZGVmaW5lUHJvcGVydHkyIiwiaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlIiwiaGFuZGxlRGVwYXJ0bWVudENoYW5nZSIsImdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzIiwiZGVwYXJ0bWVudF9pZCIsInVuZGVmaW5lZCIsImJ1c2luZXNzX3JvbGVfaWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJzaG93VG9hc3QiLCJkYXRhIiwidXNlcm5hbWUiLCJlcnJvciIsInRvYXN0Iiwic3VjY2VzcyIsImNvbmNhdCIsInBvc2l0aW9uIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwiYXhpb3MiLCJwdXQiLCJ1c2VyIiwidGhlbiIsInJlc3AiLCJlcnJvcnMiLCJQZXJtaXNzaW9uc1NsaWNlIiwiYWN0aW9ucyIsInNldFVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInAiLCJpbm5lckhUTUwiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJmaW5kTG9jYWxlIiwiZmluZCIsImZpbmRGbG93UmF0ZVVuaXQiLCJmaW5kVGVtcGVyYXR1cmVVbml0IiwiZmluZERhdGVUaW1lRm9ybWF0IiwiZmluZFRpbWV6b25lIiwic2V0VGltZW91dCIsImZpbmRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInBhcmVudCIsImNsb3Nlc3QiLCJmaW5kSW5wdXQiLCJhZGQiLCJjYXRjaCIsInVzZUVmZmVjdCIsImFuYWx5dGljc1RyYWNrIiwidXRpbGl0eV9uYW1lIiwidG9rZW4iLCJjb250ZW50IiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIiwiZmluZFByb3BlcnR5Iiwib2JqZWN0IiwicHJvcGVydHkiLCJidXNpbmVzc19yb2xlcyIsImFsZXJ0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsImNsYXNzTmFtZSIsImFjdGlvbiIsIm9uU3VibWl0IiwidHlwZSIsIm9uQ2hhbmdlIiwicmVhZE9ubHkiLCJjb3VudHJ5IiwibG9jYWxpemF0aW9uIiwiaW5wdXRDbGFzcyIsImNvbnRhaW5lckNsYXNzIiwiYnV0dG9uQ2xhc3MiLCJkcm9wZG93bkNsYXNzIiwiZW5hYmxlU2VhcmNoIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJjb3VudHJ5Q29kZUVkaXRhYmxlIiwiaW5wdXRQcm9wcyIsIkZyYWdtZW50IiwiU2VsZWN0Iiwic2V0VmFsdWUiLCJvcHRpb25zIiwiY2FuY2VsVGV4dFdpZHRoIiwidHJhbnNsYXRlIiwidHJhbnNsYXRpb25fa2V5IiwibGVuZ3RoIiwib25DbGljayIsIlJlYWN0Q29tcG9uZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsIiwiRGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiZGlzYWJsZWQiLCJQYXNzd29yZE1vZGFsIiwiY2xvc2UiLCJzYXZlIiwiVGVsZWdyYW1Nb2RhbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvUHJvZmlsZVBhZ2UvUHJvZmlsZVBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvQ3VzdG9tSW5wdXRzL1NlbGVjdC9TZWxlY3QnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IFBhc3N3b3JkTW9kYWwgfSBmcm9tICcuL1Bhc3N3b3JkTW9kYWwvUGFzc3dvcmRNb2RhbCc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBQZW5TdmcgfSBmcm9tICcuL3Blbi5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgQ2FuY2VsIH0gZnJvbSAnLi9jYW5jZWwuc3ZnJztcbmltcG9ydCBQaG9uZUlucHV0IGZyb20gJ3JlYWN0LXBob25lLWlucHV0LTInO1xuaW1wb3J0ICdyZWFjdC1waG9uZS1pbnB1dC0yL2xpYi9zdHlsZS5jc3MnO1xuaW1wb3J0IHsgVGVsZWdyYW1Nb2RhbCB9IGZyb20gJy4vVGVsZWdyYW1Nb2RhbC9UZWxlZ3JhbU1vZGFsJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tICcuL0NvbnRhaW5lcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1NsaWNlIH0gZnJvbSAnc3JjL3N0b3JlL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zU2xpY2UnO1xuXG5leHBvcnQgY29uc3QgUHJvZmlsZVBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHRpbWV6b25lc0FycmF5ID0gbW9tZW50LnR6Lm5hbWVzKCk7XG4gIGNvbnN0IGRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ3VzJyxcbiAgICAgIGxhYmVsOiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdldScsXG4gICAgICBsYWJlbDogJ0V1cm9wZScsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0aW1lem9uZXMgPSB0aW1lem9uZXNBcnJheS5tYXAoKHQpID0+IHtcbiAgICByZXR1cm4geyB2YWx1ZTogdCwgbGFiZWw6IHQgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9jYWxlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnZW4nLCBsYWJlbDogJ0VuZ2xpc2gnIH0sXG4gICAgeyB2YWx1ZTogJ2VuX3VrJywgbGFiZWw6ICdFbmdsaXNoIChVSyknIH0sXG4gICAgeyB2YWx1ZTogJ2hlJywgbGFiZWw6ICfXoteR16jXmdeqJyB9LFxuICAgIHsgdmFsdWU6ICdmcicsIGxhYmVsOiAnRnJhbsOnYWlzJyB9LFxuICAgIHsgdmFsdWU6ICdpdCcsIGxhYmVsOiAnSXRhbGlhbm8nIH0sXG4gIF07XG5cbiAgY29uc3QgZmxvd1JhdGVVbml0T3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ2dkX3VzJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZsb3dfcmF0ZV91bml0X29wdGlvbnMuZ2RfdXMnKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnZ2RfdWsnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy5nZF91aycpLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdtM2QnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy5tM2QnKSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IHRlbXBlcmF0dXJlVW5pdE9wdGlvbnMgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdjZWxjaXVzJyxcbiAgICAgIGxhYmVsOiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbXBlcmF0dXJlX3VuaXRfb3B0aW9ucy5jZWxzaXVzJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2ZhaHJlbmhlaXQnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVtcGVyYXR1cmVfdW5pdF9vcHRpb25zLmZhaHJlbmhlaXQnKSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IFtsb2NhbGUsIHNldExvY2FsZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pihsb2NhbGVPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZmxvd1JhdGVVbml0LCBzZXRGbG93UmF0ZVVuaXRdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfT4oZmxvd1JhdGVVbml0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RlbXBlcmF0dXJlVW5pdCwgc2V0VGVtcGVyYXR1cmVVbml0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KHRlbXBlcmF0dXJlVW5pdE9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtkYXRlVGltZUZvcm1hdCwgc2V0RGF0ZVRpbWVGb3JtYXRdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBmb3JtYXQ6IG9iamVjdDtcbiAgfT4oZGF0ZVRpbWVGb3JtYXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbdGltZXpvbmUsIHNldFRpbWV6b25lXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KHRpbWV6b25lc1syMF0pO1xuXG4gIGNvbnN0IFtkZXBhcnRtZW50cywgc2V0RGVwYXJ0bWVudHNdID0gdXNlU3RhdGU8XG4gICAge1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgfVtdXG4gID4oW3sgdmFsdWU6ICcnLCBsYWJlbDogJycgfV0pO1xuXG4gIGNvbnN0IFtidXNpbmVzc1JvbGVzLCBzZXRCdXNpbmVzc1JvbGVzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudCwgc2V0RGVwYXJ0bWVudF0gPSB1c2VTdGF0ZTxhbnk+KGRlcGFydG1lbnRzWzBdKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlLCBzZXRCdXNpbmVzc1JvbGVdID0gdXNlU3RhdGU8YW55PihidXNpbmVzc1JvbGVzWzBdKTtcblxuICBjb25zdCBpbml0aWFsUGFyYW1zU3RhdGUgPSB7XG4gICAgZmlyc3RfbmFtZTogJycsXG4gICAgbGFzdF9uYW1lOiAnJyxcbiAgICBwaG9uZTogJycsXG4gICAgZW1haWw6ICcnLFxuICAgIHRpbWVfem9uZTogJycsXG4gICAgZGF0ZV90aW1lX2Zvcm1hdDogJycsXG4gICAgbG9jYWxlOiAnJyxcbiAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6ICcnLFxuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogJycsXG4gICAgYnVzaW5lc3Nfcm9sZTogJycsXG4gICAgZGVwYXJ0bWVudDogJycsXG4gICAgZmxvd19yYXRlX3VuaXQ6ICcnLFxuICAgIHRlbXBlcmF0dXJlX3VuaXQ6ICcnLFxuICB9O1xuXG4gIGNvbnN0IFtpc1RlbGVncmFtT3Blbiwgc2V0SXNUZWxlZ3JhbU9wZW5dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1Bhc3N3b3JkTW9kYWwsIHNldFNob3dQYXNzd29yZE1vZGFsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3N1Ym1pdHRpbmcsIHNldFN1Ym1pdHRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1N1Y2Nlc3NNZXNzYWdlLCBzZXRTaG93U3VjY2Vzc01lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd0Vycm9yTWVzc2FnZSwgc2V0U2hvd0Vycm9yTWVzc2FnZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UsIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZV0gPVxuICAgIHVzZVN0YXRlPHtcbiAgICAgIHNob3c6IGJvb2xlYW47XG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9Pih7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHN0YXR1czogJycsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICB9KTtcbiAgY29uc3QgW3BhcmFtcywgc2V0UGFyYW1zXSA9IHVzZVN0YXRlPHtcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gICAgcGhvbmU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHRpbWVfem9uZTogc3RyaW5nO1xuICAgIGRhdGVfdGltZV9mb3JtYXQ6IHN0cmluZztcbiAgICBsb2NhbGU6IHN0cmluZztcbiAgICB0ZWxlZ3JhbV9uYW1lOiBzdHJpbmc7XG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBzdHJpbmc7XG4gICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBzdHJpbmc7XG4gICAgZmxvd19yYXRlX3VuaXQ6IHN0cmluZztcbiAgfT4oaW5pdGlhbFBhcmFtc1N0YXRlKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGUuc3RhcnRzV2l0aCgnOTcyMCcpKSB7XG4gICAgICAgIGUgPSBlLnJlcGxhY2UoLyg5NzIwKS9nLCAnOTcyJyk7XG4gICAgICB9XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBwaG9uZTogZSxcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgbmFtZSB9ID0gZS50YXJnZXQ7XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBbbmFtZV06IHZhbHVlLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBidXNpbmVzc19yb2xlOiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlcGFydG1lbnRDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBkZXBhcnRtZW50OiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBkYXRlX3RpbWVfZm9ybWF0OiBkYXRlVGltZUZvcm1hdC52YWx1ZSxcbiAgICAgIGxvY2FsZTogbG9jYWxlLnZhbHVlLFxuICAgICAgdGltZV96b25lOiB0aW1lem9uZS52YWx1ZSxcbiAgICAgIGRlcGFydG1lbnRfaWQ6IGRlcGFydG1lbnQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZXBhcnRtZW50LnZhbHVlLFxuICAgICAgYnVzaW5lc3Nfcm9sZV9pZDogYnVzaW5lc3NSb2xlID09PSB1bmRlZmluZWQgPyBudWxsIDogYnVzaW5lc3NSb2xlLnZhbHVlLFxuICAgICAgZmxvd19yYXRlX3VuaXQ6IGZsb3dSYXRlVW5pdC52YWx1ZSxcbiAgICAgIHRlbXBlcmF0dXJlX3VuaXQ6IHRlbXBlcmF0dXJlVW5pdC52YWx1ZSxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IHNob3dUb2FzdCA9IChkYXRhKSA9PiB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBkYXRhLnVzZXJuYW1lO1xuICAgIGNvbnN0IGVycm9yID0gZGF0YS5lcnJvcjtcbiAgICBpZiAoZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgdG9hc3Quc3VjY2VzcyhcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvYXN0LmVycm9yKFxuICAgICAgICBpMThuLnQoYG15X3Byb2ZpbGVfdGFiLnRlbGVncmFtX21lc3NhZ2VzLiR7ZGF0YS5tZXNzYWdlfWAsIHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2V0U3VibWl0dGluZyh0cnVlKTtcbiAgICBheGlvc1xuICAgICAgLnB1dCgnL3Byb2ZpbGVzJywgeyB1c2VyOiBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcygpIH0pXG4gICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICBpZiAocmVzcC5kYXRhLmVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgICAgUGVybWlzc2lvbnNTbGljZS5hY3Rpb25zLnNldFVzZXJJbmZvKEpTT04ucGFyc2UocmVzcC5kYXRhLnVzZXIpKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3ItbWVzc2FnZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gKHAuaW5uZXJIVE1MID0gJycpKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmludmFsaWQtZmllbGQnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IHAuY2xhc3NMaXN0LnJlbW92ZSgnaW52YWxpZC1maWVsZCcpKTtcbiAgICAgICAgICBsZXQgdXNlciA9IEpTT04ucGFyc2UocmVzcC5kYXRhLnVzZXIpO1xuICAgICAgICAgIGNvbnN0IGZpbmRMb2NhbGUgPSBsb2NhbGVPcHRpb25zLmZpbmQoKGUpID0+IGUudmFsdWUgPT09IHVzZXIubG9jYWxlKTtcbiAgICAgICAgICBjb25zdCBmaW5kRmxvd1JhdGVVbml0ID0gZmxvd1JhdGVVbml0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIuZmxvd19yYXRlX3VuaXQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmaW5kVGVtcGVyYXR1cmVVbml0ID0gdGVtcGVyYXR1cmVVbml0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIudGVtcGVyYXR1cmVfdW5pdCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGZpbmREYXRlVGltZUZvcm1hdCA9IGRhdGVUaW1lRm9ybWF0T3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIuZGF0ZV90aW1lX2Zvcm1hdCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGZpbmRUaW1lem9uZSA9IHRpbWV6b25lcy5maW5kKFxuICAgICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHVzZXIudGltZV96b25lLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBzZXRQYXJhbXModXNlcik7XG4gICAgICAgICAgc2V0TG9jYWxlKGZpbmRMb2NhbGUhKTtcbiAgICAgICAgICBzZXRGbG93UmF0ZVVuaXQoZmluZEZsb3dSYXRlVW5pdCEpO1xuICAgICAgICAgIHNldFRlbXBlcmF0dXJlVW5pdChmaW5kVGVtcGVyYXR1cmVVbml0ISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEudXNlci5lcnJvcnM7XG4gICAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgIGxldCBmaW5kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBmaW5kRWxlbWVudCEuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICAgICAgICBsZXQgZmluZElucHV0ID0gcGFyZW50IS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgZmluZElucHV0IS5jbGFzc0xpc3QuYWRkKCdpbnZhbGlkLWZpZWxkJyk7XG4gICAgICAgICAgICBwYXJlbnQhLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykhLmlubmVySFRNTCA9IGkxOG4udChcbiAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmVycm9ycy4ke2Vycm9yfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBzZXRTaG93RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIH0sIDYwMDApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnVmlld2VkIFByb2ZpbGUgUGFnZScsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0b2tlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPWNzcmYtdG9rZW5dJykhLmNvbnRlbnQ7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID0gdG9rZW47XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICBheGlvc1xuICAgICAgLmdldChgL3Byb2ZpbGVzL3Jlc291cmNlYClcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIHNldFBhcmFtcyhyZXNwLmRhdGEudXNlcik7XG4gICAgICAgIGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5maW5kKChlKSA9PiBlLnZhbHVlID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldExvY2FsZShmaW5kUHJvcGVydHkobG9jYWxlT3B0aW9ucywgcmVzcC5kYXRhLnVzZXIubG9jYWxlKSk7XG4gICAgICAgIHNldEZsb3dSYXRlVW5pdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZmxvd1JhdGVVbml0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZmxvd19yYXRlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXRUZW1wZXJhdHVyZVVuaXQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHRlbXBlcmF0dXJlVW5pdE9wdGlvbnMsIHJlc3AuZGF0YS51c2VyLnRlbXBlcmF0dXJlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtkZXBhcnRtZW50c1swXS52YWx1ZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwYXJ0bWVudD8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtkZXBhcnRtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGRlcGFydG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGVzLiR7YnVzaW5lc3NSb2xlPy5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YnVzaW5lc3NSb2xlc31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJ1c2luZXNzUm9sZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmaWVsZCAke1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnQ/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5vdGhlcl9kZXBhcnRtZW50X25hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRGVwYXJ0bWVudENoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZT8udmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlc1tidXNpbmVzc1JvbGVzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9IGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlX2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2J1c2luZXNzX3JvbGVfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoYW5nZS1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+XG4gICAgICAgICAgICAgICAgeycgICd9XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLXBhc3N3b3JkJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZXR0aW5ncycpfTwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aW1lLXpvbmUnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGltZXpvbmVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRhdGUtdGltZS1mb3JtYXQnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGF0ZVRpbWVGb3JtYXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZGF0ZS10aW1lLWZvcm1hdCd9PlxuICAgICAgICAgICAgICAgIHtkYXRlVGltZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCBkYXRlVGltZUZvcm1hdC5mb3JtYXQpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFuZ3VhZ2UnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17bG9jYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0TG9jYWxlfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbXBlcmF0dXJlX3VuaXRzJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGVtcGVyYXR1cmVVbml0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0ZW1wZXJhdHVyZVVuaXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0VGVtcGVyYXR1cmVVbml0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lID09PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGVsZWdyYW1cIiBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jb25uZWN0LXRvLXRlbGVncmFtJyl9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVsZWdyYW1fbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLW5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXQnfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17J3RlbGVncmFtX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy50ZWxlZ3JhbV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXRfX2NhbmNlbC1idXR0b24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVncmFtX25hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW5jZWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0gb3Blbid9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChgL3RlbGVncmFtL3NlbmRfdGVzdF9tZXNzYWdlLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXMuc3Vic3RyaW5nKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGFsZXJ0KGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHshc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2VuZF90ZWxlZ3JhbV9tZXNzYWdlJyl9XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zaG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRzJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17Zmxvd1JhdGVVbml0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmbG93UmF0ZVVuaXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0Rmxvd1JhdGVVbml0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPXsnc3VibWl0J30gY2xhc3NOYW1lPXsnc2F2ZSd9IGRpc2FibGVkPXtzdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHshc3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0Jyl9XG4gICAgICAgICAgICB7c3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0dGluZycpfVxuICAgICAgICAgICAge3Nob3dTdWNjZXNzTWVzc2FnZSAmJiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Y2Nlc3MnKX1cbiAgICAgICAgICAgIHtzaG93RXJyb3JNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZXJyb3InKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG5cbiAgICAgIHtzaG93UGFzc3dvcmRNb2RhbCAmJiAoXG4gICAgICAgIDxQYXNzd29yZE1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldFNob3dQYXNzd29yZE1vZGFsKGZhbHNlKX1cbiAgICAgICAgICBzYXZlPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7aXNUZWxlZ3JhbU9wZW4gJiYgKFxuICAgICAgICA8VGVsZWdyYW1Nb2RhbFxuICAgICAgICAgIGNsb3NlPXsoKSA9PiBzZXRJc1RlbGVncmFtT3BlbihmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlT25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIGhhbmRsZVN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBSixPQUFBO0FBQThELElBQUFLLElBQUEsR0FBQUwsT0FBQTtBQUFBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUc5RCxJQUFBTyxnQkFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFS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
514
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9wZXJtaXNzaW9uc1NsaWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlByb2ZpbGVQYWdlIiwidGltZXpvbmVzQXJyYXkiLCJtb21lbnQiLCJ0eiIsIm5hbWVzIiwiZGF0ZVRpbWVGb3JtYXRPcHRpb25zIiwidmFsdWUiLCJsYWJlbCIsImZvcm1hdCIsIm1vbnRoIiwiZGF5IiwieWVhciIsImhvdXIiLCJtaW51dGUiLCJob3VyMTIiLCJ0aW1lem9uZXMiLCJtYXAiLCJ0IiwibG9jYWxlT3B0aW9ucyIsImZsb3dSYXRlVW5pdE9wdGlvbnMiLCJpMThuIiwibG9jYWxlIiwic2V0TG9jYWxlIiwidXNlU3RhdGUiLCJmbG93UmF0ZVVuaXQiLCJzZXRGbG93UmF0ZVVuaXQiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwidGltZXpvbmUiLCJzZXRUaW1lem9uZSIsImRlcGFydG1lbnRzIiwic2V0RGVwYXJ0bWVudHMiLCJidXNpbmVzc1JvbGVzIiwic2V0QnVzaW5lc3NSb2xlcyIsImRlcGFydG1lbnQiLCJzZXREZXBhcnRtZW50IiwiYnVzaW5lc3NSb2xlIiwic2V0QnVzaW5lc3NSb2xlIiwiaW5pdGlhbFBhcmFtc1N0YXRlIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsInBob25lIiwiZW1haWwiLCJ0aW1lX3pvbmUiLCJkYXRlX3RpbWVfZm9ybWF0IiwidGVsZWdyYW1fbmFtZSIsIm90aGVyX2J1c2luZXNzX3JvbGVfbmFtZSIsIm90aGVyX2RlcGFydG1lbnRfbmFtZSIsImJ1c2luZXNzX3JvbGUiLCJmbG93X3JhdGVfdW5pdCIsImlzVGVsZWdyYW1PcGVuIiwic2V0SXNUZWxlZ3JhbU9wZW4iLCJzaG93UGFzc3dvcmRNb2RhbCIsInNldFNob3dQYXNzd29yZE1vZGFsIiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJzaG93U3VjY2Vzc01lc3NhZ2UiLCJzZXRTaG93U3VjY2Vzc01lc3NhZ2UiLCJzaG93RXJyb3JNZXNzYWdlIiwic2V0U2hvd0Vycm9yTWVzc2FnZSIsInNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSIsInNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSIsInNob3ciLCJzdGF0dXMiLCJtZXNzYWdlIiwicGFyYW1zIiwic2V0UGFyYW1zIiwiaGFuZGxlT25DaGFuZ2UiLCJlIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJwcmV2U3RhdGUiLCJuYW1lIiwidGFyZ2V0IiwiaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlIiwiaGFuZGxlRGVwYXJ0bWVudENoYW5nZSIsImdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzIiwiZGVwYXJ0bWVudF9pZCIsInVuZGVmaW5lZCIsImJ1c2luZXNzX3JvbGVfaWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJzaG93VG9hc3QiLCJkYXRhIiwidXNlcm5hbWUiLCJlcnJvciIsInRvYXN0Iiwic3VjY2VzcyIsInBvc2l0aW9uIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwiYXhpb3MiLCJwdXQiLCJ1c2VyIiwidGhlbiIsInJlc3AiLCJlcnJvcnMiLCJQZXJtaXNzaW9uc1NsaWNlIiwiYWN0aW9ucyIsInNldFVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInAiLCJpbm5lckhUTUwiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJmaW5kTG9jYWxlIiwiZmluZCIsImZpbmRGbG93UmF0ZVVuaXQiLCJmaW5kRGF0ZVRpbWVGb3JtYXQiLCJmaW5kVGltZXpvbmUiLCJzZXRUaW1lb3V0IiwiZmluZEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGFyZW50IiwiY2xvc2VzdCIsImZpbmRJbnB1dCIsImFkZCIsImNhdGNoIiwidXNlRWZmZWN0IiwiYW5hbHl0aWNzVHJhY2siLCJ1dGlsaXR5X25hbWUiLCJ0b2tlbiIsImNvbnRlbnQiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJmaW5kUHJvcGVydHkiLCJvYmplY3QiLCJwcm9wZXJ0eSIsImJ1c2luZXNzX3JvbGVzIiwiYWxlcnQiLCJjcmVhdGVFbGVtZW50IiwiQ29udGFpbmVyIiwiY2xhc3NOYW1lIiwiYWN0aW9uIiwib25TdWJtaXQiLCJ0eXBlIiwib25DaGFuZ2UiLCJyZWFkT25seSIsImNvdW50cnkiLCJsb2NhbGl6YXRpb24iLCJpbnB1dENsYXNzIiwiY29udGFpbmVyQ2xhc3MiLCJidXR0b25DbGFzcyIsImRyb3Bkb3duQ2xhc3MiLCJlbmFibGVTZWFyY2giLCJzZWFyY2hQbGFjZWhvbGRlciIsImNvdW50cnlDb2RlRWRpdGFibGUiLCJpbnB1dFByb3BzIiwiRnJhZ21lbnQiLCJTZWxlY3QiLCJzZXRWYWx1ZSIsIm9wdGlvbnMiLCJjYW5jZWxUZXh0V2lkdGgiLCJ0cmFuc2xhdGUiLCJ0cmFuc2xhdGlvbl9rZXkiLCJsZW5ndGgiLCJvbkNsaWNrIiwiUmVhY3RDb21wb25lbnQiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJkaXNhYmxlZCIsIlBhc3N3b3JkTW9kYWwiLCJjbG9zZSIsInNhdmUiLCJUZWxlZ3JhbU1vZGFsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9Qcm9maWxlUGFnZS9Qcm9maWxlUGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21JbnB1dHMvU2VsZWN0L1NlbGVjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgUGFzc3dvcmRNb2RhbCB9IGZyb20gJy4vUGFzc3dvcmRNb2RhbC9QYXNzd29yZE1vZGFsJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFBlblN2ZyB9IGZyb20gJy4vcGVuLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBDYW5jZWwgfSBmcm9tICcuL2NhbmNlbC5zdmcnO1xuaW1wb3J0IFBob25lSW5wdXQgZnJvbSAncmVhY3QtcGhvbmUtaW5wdXQtMic7XG5pbXBvcnQgJ3JlYWN0LXBob25lLWlucHV0LTIvbGliL3N0eWxlLmNzcyc7XG5pbXBvcnQgeyBUZWxlZ3JhbU1vZGFsIH0gZnJvbSAnLi9UZWxlZ3JhbU1vZGFsL1RlbGVncmFtTW9kYWwnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gJy4vQ29udGFpbmVyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5JztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2xpY2UgfSBmcm9tICdzcmMvc3RvcmUvcGVybWlzc2lvbnMvcGVybWlzc2lvbnNTbGljZSc7XG5cbmV4cG9ydCBjb25zdCBQcm9maWxlUGFnZSA9ICgpID0+IHtcbiAgY29uc3QgdGltZXpvbmVzQXJyYXkgPSBtb21lbnQudHoubmFtZXMoKTtcbiAgY29uc3QgZGF0ZVRpbWVGb3JtYXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAndXMnLFxuICAgICAgbGFiZWw6ICdVbml0ZWQgU3RhdGVzJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2V1JyxcbiAgICAgIGxhYmVsOiAnRXVyb3BlJyxcbiAgICAgIGZvcm1hdDoge1xuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IHRpbWV6b25lcyA9IHRpbWV6b25lc0FycmF5Lm1hcCgodCkgPT4ge1xuICAgIHJldHVybiB7IHZhbHVlOiB0LCBsYWJlbDogdCB9O1xuICB9KTtcblxuICBjb25zdCBsb2NhbGVPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdlbicsIGxhYmVsOiAnRW5nbGlzaCcgfSxcbiAgICB7IHZhbHVlOiAnZW5fdWsnLCBsYWJlbDogJ0VuZ2xpc2ggKFVLKScgfSxcbiAgICB7IHZhbHVlOiAnaGUnLCBsYWJlbDogJ9ei15HXqNeZ16onIH0sXG4gICAgeyB2YWx1ZTogJ2ZyJywgbGFiZWw6ICdGcmFuw6dhaXMnIH0sXG4gICAgeyB2YWx1ZTogJ2l0JywgbGFiZWw6ICdJdGFsaWFubycgfSxcbiAgXTtcblxuICBjb25zdCBmbG93UmF0ZVVuaXRPcHRpb25zID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnZ2RfdXMnLFxuICAgICAgbGFiZWw6IGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy5nZF91cycpLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdnZF91aycsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLmdkX3VrJyksXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ20zZCcsXG4gICAgICBsYWJlbDogaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5mbG93X3JhdGVfdW5pdF9vcHRpb25zLm0zZCcpLFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgW2xvY2FsZSwgc2V0TG9jYWxlXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KGxvY2FsZU9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtmbG93UmF0ZVVuaXQsIHNldEZsb3dSYXRlVW5pdF0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9PihmbG93UmF0ZVVuaXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZGF0ZVRpbWVGb3JtYXQsIHNldERhdGVUaW1lRm9ybWF0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBvYmplY3Q7XG4gIH0+KGRhdGVUaW1lRm9ybWF0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0aW1lem9uZXNbMjBdKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudHMsIHNldERlcGFydG1lbnRzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlcywgc2V0QnVzaW5lc3NSb2xlc10gPSB1c2VTdGF0ZTxcbiAgICB7XG4gICAgICB2YWx1ZTogc3RyaW5nO1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICB9W11cbiAgPihbeyB2YWx1ZTogJycsIGxhYmVsOiAnJyB9XSk7XG5cbiAgY29uc3QgW2RlcGFydG1lbnQsIHNldERlcGFydG1lbnRdID0gdXNlU3RhdGU8YW55PihkZXBhcnRtZW50c1swXSk7XG5cbiAgY29uc3QgW2J1c2luZXNzUm9sZSwgc2V0QnVzaW5lc3NSb2xlXSA9IHVzZVN0YXRlPGFueT4oYnVzaW5lc3NSb2xlc1swXSk7XG5cbiAgY29uc3QgaW5pdGlhbFBhcmFtc1N0YXRlID0ge1xuICAgIGZpcnN0X25hbWU6ICcnLFxuICAgIGxhc3RfbmFtZTogJycsXG4gICAgcGhvbmU6ICcnLFxuICAgIGVtYWlsOiAnJyxcbiAgICB0aW1lX3pvbmU6ICcnLFxuICAgIGRhdGVfdGltZV9mb3JtYXQ6ICcnLFxuICAgIGxvY2FsZTogJycsXG4gICAgdGVsZWdyYW1fbmFtZTogJycsXG4gICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiAnJyxcbiAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6ICcnLFxuICAgIGJ1c2luZXNzX3JvbGU6ICcnLFxuICAgIGRlcGFydG1lbnQ6ICcnLFxuICAgIGZsb3dfcmF0ZV91bml0OiAnJyxcbiAgfTtcblxuICBjb25zdCBbaXNUZWxlZ3JhbU9wZW4sIHNldElzVGVsZWdyYW1PcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dQYXNzd29yZE1vZGFsLCBzZXRTaG93UGFzc3dvcmRNb2RhbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFcnJvck1lc3NhZ2UsIHNldFNob3dFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLCBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2VdID1cbiAgICB1c2VTdGF0ZTx7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBzdGF0dXM6ICcnLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgfSk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTx7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB0aW1lX3pvbmU6IHN0cmluZztcbiAgICBkYXRlX3RpbWVfZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgdGVsZWdyYW1fbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2J1c2luZXNzX3JvbGVfbmFtZTogc3RyaW5nO1xuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogc3RyaW5nO1xuICAgIGZsb3dfcmF0ZV91bml0OiBzdHJpbmc7XG4gIH0+KGluaXRpYWxQYXJhbXNTdGF0ZSk7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlLnN0YXJ0c1dpdGgoJzk3MjAnKSkge1xuICAgICAgICBlID0gZS5yZXBsYWNlKC8oOTcyMCkvZywgJzk3MicpO1xuICAgICAgfVxuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgcGhvbmU6IGUsXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIG5hbWUgfSA9IGUudGFyZ2V0O1xuICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgYnVzaW5lc3Nfcm9sZTogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZXBhcnRtZW50Q2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IG51bGwpIHtcbiAgICAgIHNldFBhcmFtcyh7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgZGVwYXJ0bWVudDogZS52YWx1ZSxcbiAgICAgICAgb3RoZXJfZGVwYXJ0bWVudF9uYW1lOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQYXJhbXNXaXRoQWdncmVnYXRlZFZhbHVlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgZGF0ZV90aW1lX2Zvcm1hdDogZGF0ZVRpbWVGb3JtYXQudmFsdWUsXG4gICAgICBsb2NhbGU6IGxvY2FsZS52YWx1ZSxcbiAgICAgIHRpbWVfem9uZTogdGltZXpvbmUudmFsdWUsXG4gICAgICBkZXBhcnRtZW50X2lkOiBkZXBhcnRtZW50ID09PSB1bmRlZmluZWQgPyBudWxsIDogZGVwYXJ0bWVudC52YWx1ZSxcbiAgICAgIGJ1c2luZXNzX3JvbGVfaWQ6IGJ1c2luZXNzUm9sZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGJ1c2luZXNzUm9sZS52YWx1ZSxcbiAgICAgIGZsb3dfcmF0ZV91bml0OiBmbG93UmF0ZVVuaXQudmFsdWUsXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBzaG93VG9hc3QgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZGF0YS51c2VybmFtZTtcbiAgICBjb25zdCBlcnJvciA9IGRhdGEuZXJyb3I7XG4gICAgaWYgKGRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIGkxOG4udChgbXlfcHJvZmlsZV90YWIudGVsZWdyYW1fbWVzc2FnZXMuJHtkYXRhLm1lc3NhZ2V9YCwge1xuICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgYXhpb3NcbiAgICAgIC5wdXQoJy9wcm9maWxlcycsIHsgdXNlcjogZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMoKSB9KVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3AuZGF0YS5lcnJvcnMgPT09IG51bGwpIHtcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIFBlcm1pc3Npb25zU2xpY2UuYWN0aW9ucy5zZXRVc2VySW5mbyhKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yLW1lc3NhZ2UnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IChwLmlubmVySFRNTCA9ICcnKSk7XG5cbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnZhbGlkLWZpZWxkJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiBwLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQtZmllbGQnKSk7XG4gICAgICAgICAgbGV0IHVzZXIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICBjb25zdCBmaW5kTG9jYWxlID0gbG9jYWxlT3B0aW9ucy5maW5kKChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmxvY2FsZSk7XG4gICAgICAgICAgY29uc3QgZmluZEZsb3dSYXRlVW5pdCA9IGZsb3dSYXRlVW5pdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmZsb3dfcmF0ZV91bml0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZERhdGVUaW1lRm9ybWF0ID0gZGF0ZVRpbWVGb3JtYXRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci5kYXRlX3RpbWVfZm9ybWF0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZFRpbWV6b25lID0gdGltZXpvbmVzLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci50aW1lX3pvbmUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHNldFBhcmFtcyh1c2VyKTtcbiAgICAgICAgICBzZXRMb2NhbGUoZmluZExvY2FsZSEpO1xuICAgICAgICAgIHNldEZsb3dSYXRlVW5pdChmaW5kRmxvd1JhdGVVbml0ISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEudXNlci5lcnJvcnM7XG4gICAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgIGxldCBmaW5kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBmaW5kRWxlbWVudCEuY2xvc2VzdCgnLmZpZWxkJyk7XG4gICAgICAgICAgICBsZXQgZmluZElucHV0ID0gcGFyZW50IS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgZmluZElucHV0IS5jbGFzc0xpc3QuYWRkKCdpbnZhbGlkLWZpZWxkJyk7XG4gICAgICAgICAgICBwYXJlbnQhLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykhLmlubmVySFRNTCA9IGkxOG4udChcbiAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmVycm9ycy4ke2Vycm9yfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBzZXRTaG93RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICBzZXRTaG93U3VjY2Vzc01lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIH0sIDYwMDApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnVmlld2VkIFByb2ZpbGUgUGFnZScsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0b2tlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPWNzcmYtdG9rZW5dJykhLmNvbnRlbnQ7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID0gdG9rZW47XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICBheGlvc1xuICAgICAgLmdldChgL3Byb2ZpbGVzL3Jlc291cmNlYClcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIHNldFBhcmFtcyhyZXNwLmRhdGEudXNlcik7XG4gICAgICAgIGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChvYmplY3QsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5maW5kKChlKSA9PiBlLnZhbHVlID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIH07XG4gICAgICAgIHNldExvY2FsZShmaW5kUHJvcGVydHkobG9jYWxlT3B0aW9ucywgcmVzcC5kYXRhLnVzZXIubG9jYWxlKSk7XG4gICAgICAgIHNldEZsb3dSYXRlVW5pdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZmxvd1JhdGVVbml0T3B0aW9ucywgcmVzcC5kYXRhLnVzZXIuZmxvd19yYXRlX3VuaXQpLFxuICAgICAgICApO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtkZXBhcnRtZW50c1swXS52YWx1ZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGVwYXJ0bWVudD8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtkZXBhcnRtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGRlcGFydG1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25fa2V5OiAnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGVwYXJ0bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldEJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGVzLiR7YnVzaW5lc3NSb2xlPy5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17YnVzaW5lc3NSb2xlc31cbiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJ1c2luZXNzUm9sZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZGVwYXJ0bWVudHNbMF0udmFsdWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmaWVsZCAke1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnQ/LnZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5vdGhlcl9kZXBhcnRtZW50X25hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRGVwYXJ0bWVudENoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZT8udmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlc1tidXNpbmVzc1JvbGVzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2ZpZWxkLS1oaWRkZW4nXG4gICAgICAgICAgICAgICAgICB9IGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlX2FsdCcpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17J290aGVyX2J1c2luZXNzX3JvbGVfbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUJ1c2luZXNzUm9sZUNoYW5nZShlKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoYW5nZS1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwodHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+XG4gICAgICAgICAgICAgICAgeycgICd9XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLXBhc3N3b3JkJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZXR0aW5ncycpfTwvZGl2PlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aW1lLXpvbmUnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldFRpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGltZXpvbmVzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRhdGUtdGltZS1mb3JtYXQnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17ZGF0ZVRpbWVGb3JtYXRPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldERhdGVUaW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZGF0ZS10aW1lLWZvcm1hdCd9PlxuICAgICAgICAgICAgICAgIHtkYXRlVGltZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCBkYXRlVGltZUZvcm1hdC5mb3JtYXQpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUubGFuZ3VhZ2UnKX0qXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17bG9jYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0TG9jYWxlfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQgZmllbGQtLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lID09PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGVsZWdyYW1cIiBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jb25uZWN0LXRvLXRlbGVncmFtJyl9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgIT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGVsZWdyYW1fbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY2hhbmdlLW5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXQnfT5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17J3RlbGVncmFtX25hbWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy50ZWxlZ3JhbV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0tZXhpc3RpbmctaW5wdXRfX2NhbmNlbC1idXR0b24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFyYW1zKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVncmFtX25hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDYW5jZWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsndGVsZWdyYW0gb3Blbid9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChgL3RlbGVncmFtL3NlbmRfdGVzdF9tZXNzYWdlLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS5zdGF0dXMuc3Vic3RyaW5nKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KHJlc3AuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGFsZXJ0KGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHshc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2VuZF90ZWxlZ3JhbV9tZXNzYWdlJyl9XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zaG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRzJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J215LWlucHV0J30+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17Zmxvd1JhdGVVbml0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtmbG93UmF0ZVVuaXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0Rmxvd1JhdGVVbml0fVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPXsnc3VibWl0J30gY2xhc3NOYW1lPXsnc2F2ZSd9IGRpc2FibGVkPXtzdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHshc3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0Jyl9XG4gICAgICAgICAgICB7c3VibWl0dGluZyAmJlxuICAgICAgICAgICAgICAhc2hvd1N1Y2Nlc3NNZXNzYWdlICYmXG4gICAgICAgICAgICAgICFzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VibWl0dGluZycpfVxuICAgICAgICAgICAge3Nob3dTdWNjZXNzTWVzc2FnZSAmJiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Y2Nlc3MnKX1cbiAgICAgICAgICAgIHtzaG93RXJyb3JNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZXJyb3InKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG5cbiAgICAgIHtzaG93UGFzc3dvcmRNb2RhbCAmJiAoXG4gICAgICAgIDxQYXNzd29yZE1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldFNob3dQYXNzd29yZE1vZGFsKGZhbHNlKX1cbiAgICAgICAgICBzYXZlPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7aXNUZWxlZ3JhbU9wZW4gJiYgKFxuICAgICAgICA8VGVsZWdyYW1Nb2RhbFxuICAgICAgICAgIGNsb3NlPXsoKSA9PiBzZXRJc1RlbGVncmFtT3BlbihmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlT25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIGhhbmRsZVN1Ym1pdD17aGFuZGxlU3VibWl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFBOEQsSUFBQUssSUFBQSxHQUFBTCxPQUFBO0FBQUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBRzlELElBQUFPLGdCQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQU4sc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGVBQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLFVBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFdBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGNBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLGlCQUFBLEdBQUFmLE9B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