@kando-env/kando-ui 1.2.232-alpha.4 → 1.2.233

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