@kando-env/kando-ui 1.2.371-alpha.31 → 1.2.371-alpha.34
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.
- package/lib/Router.js +36 -73
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +25 -35
- package/lib/Widgets/EventsRow/EventsRow.js +27 -39
- package/lib/Widgets/Map/GraphUtils.js +3 -3
- package/lib/Widgets/Map/Map.js +90 -125
- package/lib/Widgets/Map/MapUtils.js +71 -69
- package/lib/Widgets/Map/areas/AreaPolygon.js +53 -77
- package/lib/Widgets/Map/areas/AreaPolygons.js +23 -24
- package/lib/Widgets/Map/areas/AreaUtils.js +47 -46
- package/lib/Widgets/Map/areas/Patterns.js +4 -4
- package/lib/Widgets/Map/edges/Edge.js +33 -37
- package/lib/Widgets/Map/edges/Edges.js +21 -26
- package/lib/Widgets/Map/edges/arrows/Arrows.js +23 -44
- package/lib/Widgets/Map/events/Event.js +17 -17
- package/lib/Widgets/Map/events/EventIndicator.js +65 -60
- package/lib/Widgets/Map/events/EventPath.js +24 -22
- package/lib/Widgets/Map/events/EventUtils.js +60 -80
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -18
- package/lib/Widgets/Map/events/PointOfEvent.js +29 -34
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +30 -37
- package/lib/Widgets/Map/events/Snail.js +19 -20
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +93 -86
- package/lib/Widgets/Map/map/FloatingGraph.js +22 -18
- package/lib/Widgets/Map/map/GraphDateButton.js +25 -17
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +13 -12
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -15
- package/lib/Widgets/Map/points/PointIcon.js +22 -15
- package/lib/Widgets/Map/points/PointMarker.js +71 -87
- package/lib/Widgets/Map/points/PointMarkers.js +45 -66
- package/lib/Widgets/Map/points/PointUtils.js +145 -83
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +30 -47
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -10
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -12
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
- package/lib/Widgets/MostPolluting/Areas/Areas.js +31 -60
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
- package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -8
- package/lib/Widgets/MostPolluting/Factories/Factories.js +39 -70
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +12 -10
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
- package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
- package/lib/Widgets/MostPolluting/MostPolluting.js +25 -35
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +18 -22
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +6 -4
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -4
- package/lib/Widgets/MostPolluting/assets/index.js +10 -10
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +19 -13
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +35 -30
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +45 -35
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +39 -35
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +54 -50
- package/lib/Widgets/MostPolluting/styles.js +3 -3
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +7 -5
- package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
- package/lib/Widgets/PotentialImpactSummary/index.js +19 -27
- package/lib/Widgets/PotentialImpactSummary/index.test.js +47 -52
- package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +9 -7
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +22 -17
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +35 -32
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -24
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -37
- package/lib/Widgets/QualitySummary/QualitySummary.js +9 -13
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
- package/lib/Widgets/QualitySummary/styles.js +23 -15
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -13
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -26
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +29 -24
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -37
- package/lib/Widgets/UtilityInformation/styles.js +34 -25
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
- package/lib/assets/icons/TopNavbar/index.js +6 -6
- package/lib/assets/icons/TrendSvg.js +6 -6
- package/lib/assets/icons/index.js +15 -15
- package/lib/assets/icons/kandoStepper/index.js +5 -5
- package/lib/assets/icons/siteTypes/index.js +1 -1
- package/lib/components/ApplyButton/ApplyButton.js +9 -9
- package/lib/components/Backdrop/Backdrop.js +6 -4
- package/lib/components/ContentLoader/ContentLoader.js +11 -9
- package/lib/components/ContentLoader/index.js +1 -1
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +13 -12
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
- package/lib/components/CustomInputs/DoubleTabs/styles.js +20 -12
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +13 -20
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -4
- package/lib/components/CustomInputs/Search/Search.js +42 -63
- package/lib/components/CustomInputs/Select/Select.js +45 -58
- package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
- package/lib/components/DamageType/DamageType.js +35 -57
- package/lib/components/DataLoaderError/DataLoaderError.js +8 -6
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +9 -10
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +70 -71
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +27 -37
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -12
- package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
- package/lib/components/DischargeHeatmap/popupText.js +10 -10
- package/lib/components/DischargeHeatmap/titles.js +3 -3
- package/lib/components/ErrorBoundary.js +27 -41
- package/lib/components/Events/Events.js +41 -58
- package/lib/components/Graph/Graph.js +77 -96
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +17 -21
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +25 -33
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
- package/lib/components/Header/DoubleTabs/styles.js +4 -4
- package/lib/components/Header/Header.js +2 -2
- package/lib/components/Header/Header.stories.js +3 -5
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +22 -34
- package/lib/components/Header/InfoBar/InfoBar.js +74 -103
- package/lib/components/Header/InfoBar/Search/Control.js +9 -9
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -5
- package/lib/components/Header/InfoBar/Search/Search.js +16 -21
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -33
- package/lib/components/Header/InfoBar/Search/searchStyle.js +41 -49
- package/lib/components/Header/InfoBar/TimeFilter.js +11 -14
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +64 -89
- package/lib/components/Header/Slideshow/Slideshow.js +68 -90
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +6 -4
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +21 -23
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +37 -43
- package/lib/components/Header/Toolbar/Toolbar.js +55 -74
- package/lib/components/InfoBar/InfoBar.js +10 -23
- package/lib/components/InfoBar/InfoBar.stories.js +3 -5
- package/lib/components/KandoModal/KandoModal.js +27 -41
- package/lib/components/Link.js +8 -7
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -8
- package/lib/components/Links/StyledLink/StyledLink.js +12 -12
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +11 -10
- package/lib/components/LiveEvents/CarouselSlide.js +9 -7
- package/lib/components/LiveEvents/LiveEvents.js +5 -3
- package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -29
- package/lib/components/Map/Map.js +20 -23
- package/lib/components/Modal/Modal.js +9 -9
- package/lib/components/NarrowHeader.js +17 -31
- package/lib/components/PointInfo/PointInfo.js +19 -17
- package/lib/components/PopupModal/PopupModal.js +12 -16
- package/lib/components/PopupModal/PopupModal.stories.js +15 -19
- package/lib/components/Sector/Sector.js +8 -6
- package/lib/components/Sector/Sector.test.js +19 -20
- package/lib/components/Sector/sectorIcons.js +2 -2
- package/lib/components/SevereEvent/Eta/Eta.js +49 -52
- package/lib/components/SevereEvent/Eta/styles.js +10 -6
- package/lib/components/SevereEvent/SevereEvent.js +30 -37
- package/lib/components/Spinner/Spinner.js +8 -8
- package/lib/components/Spinner/Spinner.stories.js +4 -6
- package/lib/components/Spinner/styles.js +22 -14
- package/lib/components/Tabs/Tabs.js +21 -29
- package/lib/components/Tabs/Tabs.stories.js +4 -6
- package/lib/components/Tabs/assets/index.js +5 -5
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -15
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +40 -51
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +19 -31
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +20 -25
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
- package/lib/components/TimeRangeSelector/TimeRangeList.js +23 -24
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -25
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -32
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
- package/lib/components/TimeRangeSelector/constants.js +3 -3
- package/lib/components/Toggle/Toggle.js +12 -17
- package/lib/components/TrendGraph/TrendGraph.js +23 -39
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
- package/lib/development-environment/index.js +8 -12
- package/lib/development-environment/mock/browser.js +2 -4
- package/lib/development-environment/mock/get.js +8 -10
- package/lib/development-environment/mock/handlers.js +2 -2
- package/lib/development-environment/mock/mockBus.js +4 -4
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
- package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
- package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
- package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
- package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
- package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
- package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
- package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
- package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
- package/lib/development-environment/togly/ToglyDashboard.js +13 -22
- package/lib/development-environment/togly/ToglyItem.js +36 -31
- package/lib/development-environment/togly/init.js +2 -2
- package/lib/development-environment/togly/macro.js +14 -10
- package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
- package/lib/development-environment/togly/useLocalStorage.js +13 -18
- package/lib/hooks/useApi.js +19 -55
- package/lib/hooks/useApiWithDashboardQuery.js +30 -49
- package/lib/hooks/useClickOutside.js +3 -3
- package/lib/hooks/useInitializeHeaders.js +5 -5
- package/lib/hooks/useKandoFetch.js +16 -29
- package/lib/hooks/useMap.js +22 -34
- package/lib/hooks/useNavContext.js +22 -26
- package/lib/hooks/useRemoveExistingLayers.js +6 -6
- package/lib/hooks/useUpdateEventBodyTail.js +13 -17
- package/lib/hooks/useUserTimeZone.js +33 -30
- package/lib/hooks/useUserTimeZone.test.js +19 -22
- package/lib/hooks/useWindowSize.js +7 -14
- package/lib/index.js +11 -12
- package/lib/macros/getVersion.js +3 -3
- package/lib/pages/AreaPage/AreaPage.js +34 -67
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -17
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +30 -31
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +17 -25
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
- package/lib/pages/AssessmentPage/AssessmentPage.js +40 -46
- package/lib/pages/CannyWidget/Feedback.js +13 -13
- package/lib/pages/CovidPage/CovidPage.js +8 -13
- package/lib/pages/CovidPage/components/Body.js +25 -27
- package/lib/pages/CovidPage/components/Map.js +29 -39
- package/lib/pages/CovidPage/components/Sidebar.js +16 -15
- package/lib/pages/CovidPage/components/Summary.js +20 -27
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +51 -73
- package/lib/pages/CovidPage/components/areas/Area.js +29 -40
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +55 -46
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -35
- package/lib/pages/CovidPage/components/areas/AreasList.js +34 -46
- package/lib/pages/CovidPage/components/areas/Sort.js +11 -14
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
- package/lib/pages/DashboardMap/AreaCard.js +28 -28
- package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
- package/lib/pages/DashboardMap/Capacity.js +31 -80
- package/lib/pages/DashboardMap/FactoryCard.js +31 -26
- package/lib/pages/DashboardMap/HighchartsOptions.js +5 -4
- package/lib/pages/DashboardMap/List.js +74 -105
- package/lib/pages/DashboardMap/ListContext.js +15 -19
- package/lib/pages/DashboardMap/Loader.js +2 -2
- package/lib/pages/DashboardMap/SeverityBadge.js +10 -18
- package/lib/pages/DashboardMap/WWTPMap.js +48 -60
- package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
- package/lib/pages/DashboardMap/Widget.js +54 -71
- package/lib/pages/DashboardMap/utils.js +48 -65
- package/lib/pages/EventsPage/Body/Body.js +20 -15
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -19
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -35
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +8 -6
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -7
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +21 -30
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +53 -64
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +19 -31
- package/lib/pages/EventsPage/EventsPage.js +7 -10
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -38
- package/lib/pages/EventsPage/events/MoreInfo.js +17 -16
- package/lib/pages/EventsPage/events/Sidebar.js +21 -16
- package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
- package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +17 -20
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +30 -35
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -37
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +43 -42
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
- package/lib/pages/EventsPage/events/event_info/EventSection.js +17 -19
- package/lib/pages/EventsPage/events/event_info/EventSection.test.js +43 -38
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -47
- package/lib/pages/EventsPage/events/event_info/Header/Header.js +6 -4
- package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -33
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +29 -36
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +4 -6
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +7 -9
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +22 -21
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +12 -19
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +5 -3
- package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +11 -9
- package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -26
- package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +12 -8
- package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +12 -10
- package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +10 -8
- package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +10 -12
- package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +5 -3
- package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +7 -5
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +7 -5
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +6 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +11 -9
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
- package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
- package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +7 -5
- package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +17 -15
- package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +10 -8
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +16 -11
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +9 -8
- package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
- package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -38
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +29 -36
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +11 -9
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +15 -17
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -30
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +23 -26
- package/lib/pages/EventsPage/events/event_info/styles.js +20 -12
- package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -19
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
- package/lib/pages/EventsPage/events/events_list/EventsList.js +124 -145
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +40 -55
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +79 -115
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +60 -77
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +38 -41
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +29 -36
- package/lib/pages/EventsPage/events/events_list/Sort.js +13 -16
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +13 -20
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +6 -4
- package/lib/pages/ImportFileWizard/ImportFile.js +20 -22
- package/lib/pages/ImportFileWizard/ResponseBody.js +24 -33
- package/lib/pages/ImportFileWizard/ValidationForm.js +23 -22
- package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
- package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
- package/lib/pages/ImportGisPage/ImportGisContainer.js +21 -24
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +21 -23
- package/lib/pages/ImportGisPage/importGisUtils.js +13 -21
- package/lib/pages/ImportGisProcess/index.js +12 -15
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -12
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +17 -19
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +56 -65
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +6 -8
- package/lib/pages/NotificationsPage/Notification/Notification.js +16 -12
- package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
- package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
- package/lib/pages/NotificationsPage/NotificationsPage.js +18 -36
- package/lib/pages/NotificationsPage/assets/index.js +9 -9
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +71 -97
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +94 -63
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +14 -16
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +18 -16
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +17 -21
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +17 -21
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +18 -22
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +83 -69
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +18 -22
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +97 -95
- package/lib/pages/NotificationsPageV2/notificationUtils.js +54 -48
- package/lib/pages/OldSitePage/OldSitePage.js +57 -132
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -6
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -20
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -18
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -63
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -53
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -10
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -11
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +32 -28
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +27 -29
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +18 -12
- package/lib/pages/ProfilePage/Container.js +2 -2
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +28 -44
- package/lib/pages/ProfilePage/ProfilePage.js +121 -214
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -33
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +19 -16
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +28 -30
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -117
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +17 -20
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +12 -10
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -41
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -26
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -15
- package/lib/pages/SamplingsPage/NavigationDropdown.js +45 -32
- package/lib/pages/SamplingsPage/NewSamplingAction.js +76 -100
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +129 -101
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +21 -22
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +34 -22
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -59
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +15 -18
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -7
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +110 -194
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +49 -55
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -43
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -45
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +19 -20
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +10 -6
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +58 -54
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +21 -28
- package/lib/pages/SamplingsPage/SamplingsPage.js +27 -33
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +50 -58
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -76
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -4
- package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +14 -13
- package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +10 -13
- package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +14 -10
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -8
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +26 -23
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +14 -17
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +36 -32
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -24
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -70
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -26
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
- package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
- package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +29 -37
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -11
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -59
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +30 -39
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +18 -12
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +11 -7
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -30
- package/lib/pages/SitePage/SitePage.js +42 -81
- package/lib/pages/UploadLabResult/index.js +13 -13
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +26 -35
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +6 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +9 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -48
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +10 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +4 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -12
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -12
- package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +21 -29
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +26 -30
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -17
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -13
- package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +27 -31
- package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -8
- package/lib/pages/WbeDashboard/GraphWrapper.js +30 -36
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +17 -19
- package/lib/pages/WbeDashboard/SearchInput.js +15 -20
- package/lib/pages/WbeDashboard/SummaryGraph.js +50 -76
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +19 -17
- package/lib/pages/WbeDashboard/Tabs.js +11 -11
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +151 -213
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +40 -48
- package/lib/pages/WwtpPage/DashboardCard.js +26 -23
- package/lib/pages/WwtpPage/DischargePatternCard.js +14 -23
- package/lib/pages/WwtpPage/InletsCard/InletsBar.js +26 -22
- package/lib/pages/WwtpPage/InletsCard/InletsCard.js +19 -18
- package/lib/pages/WwtpPage/Map.js +5 -3
- package/lib/pages/WwtpPage/OrganicCard.js +2 -2
- package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
- package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -6
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +9 -8
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +18 -14
- package/lib/pages/WwtpPage/PredictionCard.js +2 -2
- package/lib/pages/WwtpPage/TrendCard.js +18 -19
- package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
- package/lib/pages/WwtpPage/WwtpPage.js +8 -8
- package/lib/pages/WwtpPage/WwtpPageContainer.js +21 -16
- package/lib/providers/Slideshow/SlideshowContext.js +11 -9
- package/lib/providers/Slideshow/SlideshowProvider.js +22 -38
- package/lib/providers/Slideshow/SlideshowRunner.js +17 -19
- package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -4
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -11
- package/lib/providers/UrlHistory/index.js +2 -2
- package/lib/providers/UrlHistory/useLastVisited.js +5 -5
- package/lib/store/ImportGis/actionTypes.js +1 -1
- package/lib/store/ImportGis/actionsCreator.js +7 -5
- package/lib/store/ImportGis/reducer.js +40 -29
- package/lib/store/WBE/actionTypes.js +2 -2
- package/lib/store/WBE/reducer.js +13 -9
- package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -14
- package/lib/store/areas/actionTypes.js +4 -4
- package/lib/store/areas/actions.js +7 -13
- package/lib/store/areas/reducer.js +8 -6
- package/lib/store/context/actionTypes.js +3 -3
- package/lib/store/context/actions.js +3 -3
- package/lib/store/context/contextMiddlewares.js +14 -16
- package/lib/store/context/reducer.js +13 -9
- package/lib/store/dashboard/dashboardSlice.js +18 -10
- package/lib/store/edges/actionTypes.js +5 -5
- package/lib/store/edges/actions.js +4 -8
- package/lib/store/edges/reducer.js +13 -17
- package/lib/store/events/actionTypes.js +17 -17
- package/lib/store/events/actions.js +3 -7
- package/lib/store/events/reducer.js +42 -49
- package/lib/store/global/actionTypes.js +11 -11
- package/lib/store/global/actions.js +8 -6
- package/lib/store/global/reducer.js +11 -10
- package/lib/store/permissions/permissionsSlice.js +12 -8
- package/lib/store/points/actionTypes.js +3 -3
- package/lib/store/points/actions.js +4 -8
- package/lib/store/points/reducer.js +7 -5
- package/lib/store/rootActionTypes.js +2 -2
- package/lib/store/rootReducer.js +17 -12
- package/lib/store/rootStore.js +5 -5
- package/lib/store/samplings/actionTypes.js +1 -1
- package/lib/store/samplings/reducer.js +16 -14
- package/lib/styles/StylesLayout.js +5 -3
- package/lib/styles/theme/theme.js +26 -27
- package/lib/test/mocks/browser.js +2 -4
- package/lib/test/test-utils.js +17 -15
- package/lib/ui-kit/Button/Button.js +128 -80
- package/lib/ui-kit/Button/Button.test.js +24 -29
- package/lib/ui-kit/Checkbox/Checkbox.js +30 -20
- package/lib/ui-kit/ContentCard/ContentCard.js +15 -18
- package/lib/ui-kit/Dashboard/Dashboard.js +25 -22
- package/lib/ui-kit/DropDown/DropDown.js +23 -24
- package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
- package/lib/ui-kit/DropDown/DropDownItem.js +24 -21
- package/lib/ui-kit/DropDown/DropdownToggle.js +12 -8
- package/lib/ui-kit/EmptyState/EmptyState.js +6 -4
- package/lib/ui-kit/IconAction/IconAction.js +7 -5
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +48 -64
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +69 -52
- package/lib/ui-kit/InletsPie/InletsPie.js +15 -13
- package/lib/ui-kit/InletsPie/options.js +6 -6
- package/lib/ui-kit/KandoList/KandoList.js +14 -12
- package/lib/ui-kit/KandoTable/KandoTable.js +48 -40
- package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -22
- package/lib/ui-kit/Layout/Layout.js +6 -4
- package/lib/ui-kit/MobileInput/MobileInput.js +60 -50
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +13 -16
- package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -6
- package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
- package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +27 -20
- package/lib/ui-kit/OrganicEvents/TextInfo.js +15 -10
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -8
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -17
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
- package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
- package/lib/ui-kit/ScoreGauge/constant.js +3 -3
- package/lib/ui-kit/TimeLineChart/TrendChart.js +54 -42
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +8 -7
- package/lib/ui-kit/Tooltip/Tooltip.js +14 -8
- package/lib/ui-kit/index.js +8 -8
- package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
- package/lib/ui-kit/siteName/SiteName.js +11 -8
- package/lib/utilities/ActionUtility.js +7 -7
- package/lib/utilities/Alert.js +21 -17
- package/lib/utilities/Analytics.js +11 -11
- package/lib/utilities/Array.js +4 -5
- package/lib/utilities/Enum.js +15 -51
- package/lib/utilities/ErrorBoundary.js +27 -41
- package/lib/utilities/File.js +40 -69
- package/lib/utilities/GetDir.js +8 -7
- package/lib/utilities/KandoDate.js +7 -15
- package/lib/utilities/KandoModal.js +16 -26
- package/lib/utilities/LocalStorage.js +8 -10
- package/lib/utilities/ThousandsToK.js +3 -3
- package/lib/utilities/TimeFormat.js +21 -20
- package/lib/utilities/Truncate.js +17 -25
- package/lib/utilities/edgesMath.js +14 -15
- package/lib/utilities/i18n.js +3 -3
- package/lib/utilities/kql.js +12 -14
- package/lib/utilities/map/icons.js +3 -3
- package/lib/utilities/polylinedecorator.js +87 -112
- package/lib/utilities/scoreToData.js +17 -17
- package/lib/utilities/scoreToData.test.js +5 -5
- package/lib/utilities/time.js +8 -8
- package/lib/utilities/uploadToS3.js +11 -11
- package/lib/utilities/urls.js +61 -59
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.graphDatesButtons = exports.dndGraphInitOptions = void 0;
|
|
8
8
|
var _i18n = _interopRequireDefault(require("../../utilities/i18n"));
|
|
9
|
-
|
|
9
|
+
const dndGraphInitOptions = {
|
|
10
10
|
scrollbar: {
|
|
11
11
|
enabled: true,
|
|
12
12
|
barBackgroundColor: '#DBDEE3',
|
|
@@ -86,7 +86,7 @@ var dndGraphInitOptions = {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
exports.dndGraphInitOptions = dndGraphInitOptions;
|
|
89
|
-
|
|
89
|
+
const graphDatesButtons = [{
|
|
90
90
|
title: '1 Day',
|
|
91
91
|
time: 24
|
|
92
92
|
}, {
|
|
@@ -100,4 +100,4 @@ var graphDatesButtons = [{
|
|
|
100
100
|
time: 2880
|
|
101
101
|
}];
|
|
102
102
|
exports.graphDatesButtons = graphDatesButtons;
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZG5kR3JhcGhJbml0T3B0aW9ucyIsInNjcm9sbGJhciIsImVuYWJsZWQiLCJiYXJCYWNrZ3JvdW5kQ29sb3IiLCJiYXJCb3JkZXJSYWRpdXMiLCJiYXJCb3JkZXJXaWR0aCIsImJ1dHRvbkJhY2tncm91bmRDb2xvciIsImJ1dHRvbkJvcmRlcldpZHRoIiwiYnV0dG9uQXJyb3dDb2xvciIsImJ1dHRvbkJvcmRlclJhZGl1cyIsInJpZmxlQ29sb3IiLCJ0cmFja0JhY2tncm91bmRDb2xvciIsInRyYWNrQm9yZGVyV2lkdGgiLCJ0cmFja0JvcmRlckNvbG9yIiwidHJhY2tCb3JkZXJSYWRpdXMiLCJjaGFydCIsInNwYWNpbmdCb3R0b20iLCJzcGFjaW5nTGVmdCIsInNwYWNpbmdSaWdodCIsInNwYWNpbmdUb3AiLCJiYWNrZ3JvdW5kQ29sb3IiLCJoZWlnaHQiLCJ6b29tVHlwZSIsInJhbmdlU2VsZWN0b3IiLCJhbGxCdXR0b25zRW5hYmxlZCIsImlucHV0RW5hYmxlZCIsImJ1dHRvbnMiLCJ0eXBlIiwiY291bnQiLCJ0ZXh0IiwiaTE4biIsInQiLCJidXR0b25UaGVtZSIsIndpZHRoIiwiZmlsbCIsInN0cm9rZSIsInBhZGRpbmciLCJyIiwic3R5bGUiLCJmb250U2l6ZSIsInN0YXRlcyIsImhvdmVyIiwiY29sb3IiLCJmb250V2VpZ2h0Iiwic2VsZWN0IiwiZXhwb3J0cyIsImdyYXBoRGF0ZXNCdXR0b25zIiwidGl0bGUiLCJ0aW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL0dyYXBoVXRpbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJRXZlbnRzU3RhdGUgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnRzU3RhdGUnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCBIaWdoY2hhcnRzIGZyb20gJ2hpZ2hjaGFydHMvaGlnaHN0b2NrJztcbmltcG9ydCBpMThuIGZyb20gJy4uLy4uL3V0aWxpdGllcy9pMThuJztcblxuZXhwb3J0IGludGVyZmFjZSBHcmFwaFR5cGUge1xuICBncmFwaERhdGE6IHtcbiAgICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICAgIGV2ZW50c19kYXRhOiBJRXZlbnRzU3RhdGU7XG4gICAgZ3JhcGhEYXRlOiBudW1iZXI7XG4gIH07XG4gIGdyYXBoRWxlbWVudDogUmVhY3QuUmVhY3RFbGVtZW50O1xufVxuZXhwb3J0IGludGVyZmFjZSBHcmFwaHNDb2x1bW5UeXBlIHtcbiAgaWQ6IHN0cmluZztcbiAgZ3JhcGhzOiBHcmFwaFR5cGVbXSB8IFtdO1xufVxuZXhwb3J0IGNvbnN0IGRuZEdyYXBoSW5pdE9wdGlvbnM6IEhpZ2hjaGFydHMuT3B0aW9ucyA9IHtcbiAgc2Nyb2xsYmFyOiB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBiYXJCYWNrZ3JvdW5kQ29sb3I6ICcjREJERUUzJyxcbiAgICBiYXJCb3JkZXJSYWRpdXM6IDcsXG4gICAgYmFyQm9yZGVyV2lkdGg6IDAsXG4gICAgYnV0dG9uQmFja2dyb3VuZENvbG9yOiAnI0RCREVFMycsXG4gICAgYnV0dG9uQm9yZGVyV2lkdGg6IDAsXG4gICAgYnV0dG9uQXJyb3dDb2xvcjogJyNmNjAwNGYnLFxuICAgIGJ1dHRvbkJvcmRlclJhZGl1czogNyxcbiAgICByaWZsZUNvbG9yOiAnI2Y2MDA0ZicsXG4gICAgdHJhY2tCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZicsXG4gICAgdHJhY2tCb3JkZXJXaWR0aDogMixcbiAgICB0cmFja0JvcmRlckNvbG9yOiAnI0RCREVFMycsXG4gICAgdHJhY2tCb3JkZXJSYWRpdXM6IDcsXG4gIH0sXG4gIGNoYXJ0OiB7XG4gICAgc3BhY2luZ0JvdHRvbTogMCxcbiAgICBzcGFjaW5nTGVmdDogMCxcbiAgICBzcGFjaW5nUmlnaHQ6IDAsXG4gICAgc3BhY2luZ1RvcDogMCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICBoZWlnaHQ6IDIzMCxcbiAgICB6b29tVHlwZTogJ3gnLFxuICB9LFxuXG4gIHJhbmdlU2VsZWN0b3I6IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGFsbEJ1dHRvbnNFbmFibGVkOiB0cnVlLFxuICAgIGlucHV0RW5hYmxlZDogZmFsc2UsXG4gICAgYnV0dG9uczogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnZGF5JyxcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHRleHQ6IGkxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZsb2F0aW5nX2dyYXBoLnRpbWVfc2VsZWN0aW9uLm9uZV9kYXknKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdkYXknLFxuICAgICAgICBjb3VudDogMixcbiAgICAgICAgdGV4dDogaTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmxvYXRpbmdfZ3JhcGgudGltZV9zZWxlY3Rpb24udHdvX2RheXMnKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd3ZWVrJyxcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHRleHQ6IGkxOG4udCgnZXZlbnRzX292ZXJ2aWV3LmZsb2F0aW5nX2dyYXBoLnRpbWVfc2VsZWN0aW9uLm9uZV93ZWVrJyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbW9udGgnLFxuICAgICAgICBjb3VudDogMSxcbiAgICAgICAgdGV4dDogaTE4bi50KCdldmVudHNfb3ZlcnZpZXcuZmxvYXRpbmdfZ3JhcGgudGltZV9zZWxlY3Rpb24ub25lX21vbnRoJyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbW9udGgnLFxuICAgICAgICBjb3VudDogMyxcbiAgICAgICAgdGV4dDogaTE4bi50KFxuICAgICAgICAgICdldmVudHNfb3ZlcnZpZXcuZmxvYXRpbmdfZ3JhcGgudGltZV9zZWxlY3Rpb24ub25lX3F1YXJ0ZXInLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGJ1dHRvblRoZW1lOiB7XG4gICAgICB3aWR0aDogNjAsXG4gICAgICBmaWxsOiAnbm9uZScsXG4gICAgICBzdHJva2U6ICdub25lJyxcbiAgICAgICdzdHJva2Utd2lkdGgnOiAwLFxuICAgICAgcGFkZGluZzogNSxcbiAgICAgIHI6IDgsXG4gICAgICBzdHlsZToge1xuICAgICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlczoge1xuICAgICAgICBob3Zlcjoge1xuICAgICAgICAgIGZpbGw6ICcjRTMxQjYyJyxcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Q6IHtcbiAgICAgICAgICBmaWxsOiAnI0UzMUI2MicsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogJzQwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn07XG5leHBvcnQgY29uc3QgZ3JhcGhEYXRlc0J1dHRvbnMgPSBbXG4gIHtcbiAgICB0aXRsZTogJzEgRGF5JyxcbiAgICB0aW1lOiAyNCxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnMSBXZWVrJyxcbiAgICB0aW1lOiAxNjgsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJzEgTW9udGgnLFxuICAgIHRpbWU6IDcyMCxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnMSBRdWFydGVyJyxcbiAgICB0aW1lOiAyODgwLFxuICB9LFxuXTtcbiJdLCJtYXBwaW5n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
|
package/lib/Widgets/Map/Map.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.Map = void 0;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
8
|
var L = _interopRequireWildcard(require("leaflet"));
|
|
11
9
|
require("utilities/polylinedecorator");
|
|
12
10
|
require("leaflet.markercluster");
|
|
@@ -23,90 +21,61 @@ var _Event = require("./events/Event");
|
|
|
23
21
|
var _MapUtils = require("./MapUtils");
|
|
24
22
|
var _theme = require("../../styles/theme/theme");
|
|
25
23
|
var _ListContext = require("pages/DashboardMap/ListContext");
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function
|
|
27
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
26
|
// @ts-ignore
|
|
29
27
|
|
|
30
28
|
// import { storeMap } from 'src/store/global/actions';
|
|
31
29
|
|
|
32
30
|
require('leaflet.markercluster');
|
|
33
31
|
require("utilities/polylinedecorator");
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
hideEdges =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
setMapZoomLevel = _useState2[1];
|
|
64
|
-
var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
|
|
65
|
-
selectedItem = _useSelectedItem.selectedItem;
|
|
66
|
-
var eventsData = (0, _reactRedux.useSelector)(function (state) {
|
|
67
|
-
return state.events_data;
|
|
68
|
-
});
|
|
69
|
-
var hoveredEventPresent = (0, _react.useMemo)(function () {
|
|
32
|
+
const Map = _ref => {
|
|
33
|
+
let {
|
|
34
|
+
areas,
|
|
35
|
+
edges,
|
|
36
|
+
points,
|
|
37
|
+
global_data,
|
|
38
|
+
areaToCenterBy,
|
|
39
|
+
focusedEvent,
|
|
40
|
+
hoveredEvent,
|
|
41
|
+
hideEdges = false,
|
|
42
|
+
mapBoxStyle = _theme.leafletMap.mapDefault,
|
|
43
|
+
children,
|
|
44
|
+
includeUnmonitoredPoints = true,
|
|
45
|
+
includeUnmonitoredDescendantsForEdges = false,
|
|
46
|
+
forEventsView = false,
|
|
47
|
+
style = {},
|
|
48
|
+
forWWTPDashboard = false
|
|
49
|
+
} = _ref;
|
|
50
|
+
const {
|
|
51
|
+
map
|
|
52
|
+
} = global_data;
|
|
53
|
+
const mapRef = (0, _react.useRef)(null);
|
|
54
|
+
const dispatch = (0, _reactRedux.useDispatch)();
|
|
55
|
+
const [mapZoomLevel, setMapZoomLevel] = (0, _react.useState)(2);
|
|
56
|
+
const {
|
|
57
|
+
selectedItem
|
|
58
|
+
} = (0, _ListContext.useSelectedItem)();
|
|
59
|
+
const eventsData = (0, _reactRedux.useSelector)(state => state.events_data);
|
|
60
|
+
const hoveredEventPresent = (0, _react.useMemo)(() => {
|
|
70
61
|
return hoveredEvent !== null && hoveredEvent !== undefined;
|
|
71
62
|
}, [hoveredEvent]);
|
|
72
|
-
|
|
63
|
+
const focusedEventPresent = (0, _react.useMemo)(() => {
|
|
73
64
|
return focusedEvent !== null && focusedEvent !== undefined;
|
|
74
65
|
}, [focusedEvent]);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
_useState12 = (0, _slicedToArray2.default)(_useState11, 1),
|
|
89
|
-
hiddenUnmonitoredEdgesGroup = _useState12[0];
|
|
90
|
-
var _useState13 = (0, _react.useState)(L.layerGroup()),
|
|
91
|
-
_useState14 = (0, _slicedToArray2.default)(_useState13, 1),
|
|
92
|
-
monitoredEdgesGroup = _useState14[0];
|
|
93
|
-
var _useState15 = (0, _react.useState)(L.layerGroup()),
|
|
94
|
-
_useState16 = (0, _slicedToArray2.default)(_useState15, 1),
|
|
95
|
-
wwtpsLayerGroup = _useState16[0];
|
|
96
|
-
var _useState17 = (0, _react.useState)(L.layerGroup()),
|
|
97
|
-
_useState18 = (0, _slicedToArray2.default)(_useState17, 1),
|
|
98
|
-
collectorsLayerGroup = _useState18[0];
|
|
99
|
-
var _useState19 = (0, _react.useState)(new L.FeatureGroup()),
|
|
100
|
-
_useState20 = (0, _slicedToArray2.default)(_useState19, 1),
|
|
101
|
-
areasLayerGroup = _useState20[0];
|
|
102
|
-
var _useState21 = (0, _react.useState)(true),
|
|
103
|
-
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
|
104
|
-
edgesCheckbox = _useState22[0],
|
|
105
|
-
setEdgesCheckbox = _useState22[1];
|
|
106
|
-
var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
|
|
107
|
-
var monitoredPoints = points.filter(function (point) {
|
|
108
|
-
return point.has_device;
|
|
109
|
-
});
|
|
66
|
+
const [hiddenFactoriesClusterGroup] = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions));
|
|
67
|
+
const [unmonitoredFactoriesClusterGroup] = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions));
|
|
68
|
+
const [monitoredFactoriesClusterGroup] = (0, _react.useState)(window.customLeaflet.markerClusterGroup(_MapUtils.clusterGroupOptions));
|
|
69
|
+
const [unmonitoredEdgesGroup] = (0, _react.useState)(L.layerGroup());
|
|
70
|
+
const [hiddenUnmonitoredEdgesGroup] = (0, _react.useState)(L.layerGroup());
|
|
71
|
+
const [monitoredEdgesGroup] = (0, _react.useState)(L.layerGroup());
|
|
72
|
+
const [wwtpsLayerGroup] = (0, _react.useState)(L.layerGroup());
|
|
73
|
+
const [collectorsLayerGroup] = (0, _react.useState)(L.layerGroup());
|
|
74
|
+
const [areasLayerGroup] = (0, _react.useState)(new L.FeatureGroup());
|
|
75
|
+
const [edgesCheckbox, setEdgesCheckbox] = (0, _react.useState)(true);
|
|
76
|
+
const [pointsCheckbox, setPointsCheckbox] = (0, _react.useState)(true);
|
|
77
|
+
const memoizedMonitoredPoints = (0, _react.useMemo)(() => {
|
|
78
|
+
let monitoredPoints = points.filter(point => point.has_device);
|
|
110
79
|
return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, {
|
|
111
80
|
map: mapRef.current,
|
|
112
81
|
points: monitoredPoints,
|
|
@@ -118,10 +87,8 @@ var Map = function Map(_ref) {
|
|
|
118
87
|
forEventsView: false
|
|
119
88
|
});
|
|
120
89
|
}, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return point.has_device === false;
|
|
124
|
-
});
|
|
90
|
+
const memoizedUnmonitoredPoints = (0, _react.useMemo)(() => {
|
|
91
|
+
let unmonitoredPoints = points.filter(point => point.has_device === false);
|
|
125
92
|
return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, {
|
|
126
93
|
map: mapRef.current,
|
|
127
94
|
points: unmonitoredPoints,
|
|
@@ -133,14 +100,10 @@ var Map = function Map(_ref) {
|
|
|
133
100
|
forEventsView: false
|
|
134
101
|
});
|
|
135
102
|
}, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
});
|
|
141
|
-
var parentPoint = points.find(function (point) {
|
|
142
|
-
return point.id === edge.target_point_id && edge.descendants_has_device || sourcePoint !== undefined;
|
|
143
|
-
});
|
|
103
|
+
const memoizedEdges = (0, _react.useMemo)(() => {
|
|
104
|
+
const monitoredEdges = edges.filter(edge => {
|
|
105
|
+
const sourcePoint = points.find(point => point.id === edge.source_point_id && edge.descendants_has_device || point.id === edge.source_point_id && point.has_device);
|
|
106
|
+
const parentPoint = points.find(point => point.id === edge.target_point_id && edge.descendants_has_device || sourcePoint !== undefined);
|
|
144
107
|
|
|
145
108
|
// Only keep edges where both source and parent points exist in points array and have has_device as true
|
|
146
109
|
return parentPoint;
|
|
@@ -156,14 +119,10 @@ var Map = function Map(_ref) {
|
|
|
156
119
|
group: monitoredEdgesGroup
|
|
157
120
|
});
|
|
158
121
|
}, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
});
|
|
164
|
-
var parentPoint = points.find(function (point) {
|
|
165
|
-
return point.id === edge.target_point_id && !point.descendants_has_device;
|
|
166
|
-
});
|
|
122
|
+
const memoizedUnmonitoredEdges = (0, _react.useMemo)(() => {
|
|
123
|
+
const unmonitoredEdges = edges.filter(edge => {
|
|
124
|
+
const sourcePoint = points.find(point => point.id === edge.source_point_id && !point.descendants_has_device);
|
|
125
|
+
const parentPoint = points.find(point => point.id === edge.target_point_id && !point.descendants_has_device);
|
|
167
126
|
return sourcePoint && parentPoint;
|
|
168
127
|
});
|
|
169
128
|
return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, {
|
|
@@ -177,19 +136,21 @@ var Map = function Map(_ref) {
|
|
|
177
136
|
group: unmonitoredEdgesGroup,
|
|
178
137
|
shouldntDraw: hiddenUnmonitoredEdgesGroup.getLayers().length !== 0
|
|
179
138
|
});
|
|
180
|
-
}, [mapRef.current, points, focusedEventPresent, mapZoomLevel]);
|
|
181
|
-
|
|
182
|
-
|
|
139
|
+
}, [mapRef.current, points, focusedEventPresent, mapZoomLevel, pointsCheckbox]);
|
|
140
|
+
const setupCheckboxListener = (selector, onChange) => {
|
|
141
|
+
const checkbox = document.querySelector(selector);
|
|
183
142
|
if (checkbox === null) return;
|
|
184
|
-
checkbox.addEventListener('change',
|
|
185
|
-
return onChange(checkbox.checked);
|
|
186
|
-
});
|
|
143
|
+
checkbox.addEventListener('change', () => onChange(checkbox.checked));
|
|
187
144
|
};
|
|
188
|
-
|
|
145
|
+
const handleEdgesCheckboxChange = isChecked => {
|
|
189
146
|
setEdgesCheckbox(isChecked);
|
|
190
147
|
};
|
|
191
|
-
|
|
192
|
-
|
|
148
|
+
let isHandlingChange = false;
|
|
149
|
+
const handlePointsCheckboxChange = isChecked => {
|
|
150
|
+
if (isHandlingChange) return;
|
|
151
|
+
isHandlingChange = true;
|
|
152
|
+
let zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
|
|
153
|
+
setPointsCheckbox(isChecked);
|
|
193
154
|
if (isChecked) {
|
|
194
155
|
hiddenFactoriesClusterGroup.addLayer(unmonitoredFactoriesClusterGroup);
|
|
195
156
|
unmonitoredFactoriesClusterGroup.clearLayers();
|
|
@@ -205,17 +166,22 @@ var Map = function Map(_ref) {
|
|
|
205
166
|
unmonitoredEdgesGroup.addTo(mapRef.current);
|
|
206
167
|
}
|
|
207
168
|
}
|
|
169
|
+
isHandlingChange = false;
|
|
170
|
+
};
|
|
171
|
+
const unmonitoredPointAndLinesManually = () => {
|
|
172
|
+
const checkbox = document.querySelector('#monitored-points-checkbox');
|
|
173
|
+
checkbox != null && handlePointsCheckboxChange(checkbox.checked);
|
|
208
174
|
};
|
|
209
|
-
|
|
175
|
+
const trackLayerbox = () => {
|
|
210
176
|
setupCheckboxListener('#edges-checkbox', handleEdgesCheckboxChange);
|
|
211
177
|
setupCheckboxListener('#monitored-points-checkbox', handlePointsCheckboxChange);
|
|
212
178
|
};
|
|
213
|
-
|
|
214
|
-
|
|
179
|
+
const zoomRulesForEventsView = () => {
|
|
180
|
+
const payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
|
|
215
181
|
return payload;
|
|
216
182
|
};
|
|
217
|
-
|
|
218
|
-
|
|
183
|
+
const zoomRulesForDashaboardMaps = () => {
|
|
184
|
+
let payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, " ", memoizedMonitoredPoints);
|
|
219
185
|
switch (_MapUtils.zoomLevels[mapZoomLevel]) {
|
|
220
186
|
case 'Small':
|
|
221
187
|
case 'Medium':
|
|
@@ -231,11 +197,12 @@ var Map = function Map(_ref) {
|
|
|
231
197
|
|
|
232
198
|
return payload;
|
|
233
199
|
};
|
|
234
|
-
|
|
235
|
-
|
|
200
|
+
const memoizedZoomControl = (0, _react.useMemo)(() => {
|
|
201
|
+
const payload = forEventsView ? zoomRulesForEventsView() : zoomRulesForDashaboardMaps();
|
|
202
|
+
unmonitoredPointAndLinesManually();
|
|
236
203
|
return payload;
|
|
237
|
-
}, [mapZoomLevel, eventsData.isFetching, focusedEvent, hoveredEvent, points, mapRef.current, edgesCheckbox, unmonitoredEdgesGroup]);
|
|
238
|
-
|
|
204
|
+
}, [mapZoomLevel, eventsData.isFetching, focusedEvent, hoveredEvent, points, mapRef.current, edgesCheckbox, unmonitoredEdgesGroup, hiddenUnmonitoredEdgesGroup, pointsCheckbox]);
|
|
205
|
+
const memoizedEvent = (0, _react.useMemo)(() => {
|
|
239
206
|
if (focusedEventPresent) {
|
|
240
207
|
focusedEvent.focused = focusedEventPresent;
|
|
241
208
|
focusedEvent.hovered = !focusedEventPresent;
|
|
@@ -253,14 +220,14 @@ var Map = function Map(_ref) {
|
|
|
253
220
|
includeNetwork: !hoveredEventPresent
|
|
254
221
|
});
|
|
255
222
|
}, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
|
|
256
|
-
(0, _react.useEffect)(
|
|
223
|
+
(0, _react.useEffect)(() => {
|
|
257
224
|
return function cleanup() {
|
|
258
225
|
var _mapRef$current;
|
|
259
226
|
collectorsLayerGroup.clearLayers();
|
|
260
227
|
(_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.removeLayer(collectorsLayerGroup);
|
|
261
228
|
};
|
|
262
229
|
}, [focusedEvent, hoveredEvent, global_data.eventFilterParam]);
|
|
263
|
-
(0, _react.useEffect)(
|
|
230
|
+
(0, _react.useEffect)(() => {
|
|
264
231
|
(0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, true, global_data.waterAuthorityId);
|
|
265
232
|
return function cleanup() {
|
|
266
233
|
// factoriesClusterGroup.clearLayers();
|
|
@@ -276,24 +243,22 @@ var Map = function Map(_ref) {
|
|
|
276
243
|
// dispatch(storeMap(undefined));
|
|
277
244
|
};
|
|
278
245
|
}, [global_data.waterAuthorityId]);
|
|
279
|
-
(0, _react.useEffect)(
|
|
246
|
+
(0, _react.useEffect)(() => {
|
|
280
247
|
if (!mapRef.current) {
|
|
281
248
|
(0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, true, global_data.waterAuthorityId);
|
|
282
249
|
} else {
|
|
283
250
|
setMapZoomLevel(mapRef.current.getZoom());
|
|
284
251
|
if (!areaToCenterBy) {
|
|
285
|
-
areaToCenterBy = areas.map(
|
|
286
|
-
return area.shape_data;
|
|
287
|
-
}).flat();
|
|
252
|
+
areaToCenterBy = areas.map(area => area.shape_data).flat();
|
|
288
253
|
}
|
|
289
254
|
(0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
|
|
290
255
|
trackLayerbox();
|
|
291
256
|
}
|
|
292
257
|
}, [mapRef.current, areaToCenterBy]);
|
|
293
|
-
(0, _react.useEffect)(
|
|
258
|
+
(0, _react.useEffect)(() => {
|
|
294
259
|
var _mapRef$current2;
|
|
295
|
-
|
|
296
|
-
(_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.eachLayer(
|
|
260
|
+
let clicked = false;
|
|
261
|
+
(_mapRef$current2 = mapRef.current) === null || _mapRef$current2 === void 0 ? void 0 : _mapRef$current2.eachLayer(layer => {
|
|
297
262
|
if (clicked) return;
|
|
298
263
|
if ((layer === null || layer === void 0 ? void 0 : layer.kando_object_id) === selectedItem && layer.isPopupOpen() === false) {
|
|
299
264
|
if (layer instanceof L.Marker) {
|
|
@@ -309,7 +274,7 @@ var Map = function Map(_ref) {
|
|
|
309
274
|
className: "kd-map-container",
|
|
310
275
|
style: style
|
|
311
276
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
312
|
-
className:
|
|
277
|
+
className: ` map-container ${global_data.sidenavExpanded ? '' : 'map-container--sidenav-collapsed'}`
|
|
313
278
|
}, /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
314
279
|
id: "map"
|
|
315
280
|
}), (0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points) && /*#__PURE__*/_react.default.createElement(_AreaPolygons.AreaPolygons, {
|
|
@@ -324,4 +289,4 @@ var Map = function Map(_ref) {
|
|
|
324
289
|
}), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent, memoizedZoomControl, children))));
|
|
325
290
|
};
|
|
326
291
|
exports.Map = Map;
|
|
327
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWFwIiwiX3JlZiIsImFyZWFzIiwiZWRnZXMiLCJwb2ludHMiLCJnbG9iYWxfZGF0YSIsImFyZWFUb0NlbnRlckJ5IiwiZm9jdXNlZEV2ZW50IiwiaG92ZXJlZEV2ZW50IiwiX3JlZiRoaWRlRWRnZXMiLCJoaWRlRWRnZXMiLCJfcmVmJG1hcEJveFN0eWxlIiwibWFwQm94U3R5bGUiLCJsZWFmbGV0TWFwIiwibWFwRGVmYXVsdCIsImNoaWxkcmVuIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yIiwiaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzIiwiX3JlZiRpbmNsdWRlVW5tb25pdG9yMiIsImluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMiLCJfcmVmJGZvckV2ZW50c1ZpZXciLCJmb3JFdmVudHNWaWV3IiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiX3JlZiRmb3JXV1RQRGFzaGJvYXJkIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJfdXNlU2VsZWN0ZWRJdGVtIiwidXNlU2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtIiwiZXZlbnRzRGF0YSIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJldmVudHNfZGF0YSIsImhvdmVyZWRFdmVudFByZXNlbnQiLCJ1c2VNZW1vIiwidW5kZWZpbmVkIiwiZm9jdXNlZEV2ZW50UHJlc2VudCIsIl91c2VTdGF0ZTMiLCJ3aW5kb3ciLCJjdXN0b21MZWFmbGV0IiwibWFya2VyQ2x1c3Rlckdyb3VwIiwiY2x1c3Rlckdyb3VwT3B0aW9ucyIsIl91c2VTdGF0ZTQiLCJoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJtb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXAiLCJfdXNlU3RhdGU5IiwibGF5ZXJHcm91cCIsIl91c2VTdGF0ZTEwIiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cCIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJtb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInd3dHBzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJjb2xsZWN0b3JzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTE5IiwiRmVhdHVyZUdyb3VwIiwiX3VzZVN0YXRlMjAiLCJhcmVhc0xheWVyR3JvdXAiLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwiZWRnZXNDaGVja2JveCIsInNldEVkZ2VzQ2hlY2tib3giLCJtZW1vaXplZE1vbml0b3JlZFBvaW50cyIsIm1vbml0b3JlZFBvaW50cyIsImZpbHRlciIsInBvaW50IiwiaGFzX2RldmljZSIsImN1cnJlbnQiLCJjcmVhdGVFbGVtZW50IiwiUG9pbnRNYXJrZXJzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZWRnZSIsInNvdXJjZVBvaW50IiwiZmluZCIsImlkIiwic291cmNlX3BvaW50X2lkIiwiZGVzY2VuZGFudHNfaGFzX2RldmljZSIsInBhcmVudFBvaW50IiwidGFyZ2V0X3BvaW50X2lkIiwiaGlkZUFycm93cyIsImFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50cyIsImdyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzIiwidW5tb25pdG9yZWRFZGdlcyIsInNob3VsZG50RHJhdyIsImdldExheWVycyIsImxlbmd0aCIsInNldHVwQ2hlY2tib3hMaXN0ZW5lciIsInNlbGVjdG9yIiwib25DaGFuZ2UiLCJjaGVja2JveCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjaGVja2VkIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJhZGRMYXllciIsImNsZWFyTGF5ZXJzIiwicmVtb3ZlRnJvbSIsImFkZFRvIiwidHJhY2tMYXllcmJveCIsInpvb21SdWxlc0ZvckV2ZW50c1ZpZXciLCJwYXlsb2FkIiwiRnJhZ21lbnQiLCJ6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcyIsIm1lbW9pemVkWm9vbUNvbnRyb2wiLCJpc0ZldGNoaW5nIiwibWVtb2l6ZWRFdmVudCIsImZvY3VzZWQiLCJob3ZlcmVkIiwiRXZlbnQiLCJldmVudCIsImluY2x1ZGVOZXR3b3JrIiwiZXZlbnRGaWx0ZXJQYXJhbSIsInVzZUVmZmVjdCIsImNsZWFudXAiLCJfbWFwUmVmJGN1cnJlbnQiLCJyZW1vdmVMYXllciIsImluaXRpYWxpemVNYXAiLCJzYXRlbGxpdGUiLCJpc1ZhbGlkQXJlYSIsIndhdGVyQXV0aG9yaXR5SWQiLCJyZW1vdmUiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudDIiLCJjbGlja2VkIiwiZWFjaExheWVyIiwibGF5ZXIiLCJrYW5kb19vYmplY3RfaWQiLCJpc1BvcHVwT3BlbiIsIk1hcmtlciIsImZpcmUiLCJQb2x5Z29uIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJBcmVhUG9seWdvbnMiLCJtYXBab29tIiwiZmVhdHVyZUdyb3VwIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvTWFwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdzcmMvdXRpbGl0aWVzL3BvbHlsaW5lZGVjb3JhdG9yJztcbmltcG9ydCAnbGVhZmxldC5tYXJrZXJjbHVzdGVyJztcbmltcG9ydCAnbGVhZmxldC5wYXR0ZXJuJztcbmltcG9ydCBSZWFjdCwge1xuICBDU1NQcm9wZXJ0aWVzLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL21vZGVscy9JQXJlYSc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJ3NyYy9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50Jztcbi8vIGltcG9ydCB7IHN0b3JlTWFwIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCB7IElHbG9iYWxTdGF0ZSB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvbW9kZWxzL0lHbG9iYWxTdGF0ZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnc3JjL3V0aWxpdGllcy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCB7IEFyZWFQb2x5Z29ucyB9IGZyb20gJy4vYXJlYXMvQXJlYVBvbHlnb25zJztcbmltcG9ydCBFZGdlcyBmcm9tICcuL2VkZ2VzL0VkZ2VzJztcbmltcG9ydCAnLi9NYXAuc2Nzcyc7XG5pbXBvcnQgJy4vcG9pbnRzL1BvaW50SWNvbi5zY3NzJztcbmltcG9ydCB7IFBvaW50TWFya2VycyB9IGZyb20gJy4vcG9pbnRzL1BvaW50TWFya2Vycyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9FdmVudCc7XG5pbXBvcnQge1xuICBhcmVhRm9jdXNMb2dpYyxcbiAgY2x1c3Rlckdyb3VwT3B0aW9ucyxcbiAgaW5pdGlhbGl6ZU1hcCxcbiAgaXNWYWxpZEFyZWEsXG4gIHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMsXG4gIHNob3VsZExvYWRNYXBPYmplY3RzLFxuICB6b29tTGV2ZWxzLFxufSBmcm9tICcuL01hcFV0aWxzJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5yZXF1aXJlKCdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInKTtcbnJlcXVpcmUoJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InKTtcblxuaW50ZXJmYWNlIE1hcFByb3BzIHtcbiAgYXJlYXM6IElBcmVhW107XG4gIGVkZ2VzPzogSUVkZ2VbXTtcbiAgcG9pbnRzPzogSVBvaW50W107XG4gIGdsb2JhbF9kYXRhOiBJR2xvYmFsU3RhdGU7XG4gIGFyZWFUb0NlbnRlckJ5PzogYW55O1xuICBmb2N1c2VkRXZlbnQ/OiBJRXZlbnQgfCBudWxsO1xuICBob3ZlcmVkRXZlbnQ/OiBJRXZlbnQgfCBudWxsO1xuICBoaWRlRWRnZXM/OiBib29sZWFuO1xuICBtYXBCb3hTdHlsZT86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBhbnk7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzPzogYm9vbGVhbjtcbiAgaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcz86IGJvb2xlYW47XG4gIGZvckV2ZW50c1ZpZXc6IGJvb2xlYW47XG4gIGZvcldXVFBEYXNoYm9hcmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTWFwOiBSZWFjdC5GQzxNYXBQcm9wcz4gPSAoe1xuICBhcmVhcyxcbiAgZWRnZXMsXG4gIHBvaW50cyxcbiAgZ2xvYmFsX2RhdGEsXG4gIGFyZWFUb0NlbnRlckJ5LFxuICBmb2N1c2VkRXZlbnQsXG4gIGhvdmVyZWRFdmVudCxcbiAgaGlkZUVkZ2VzID0gZmFsc2UsXG4gIG1hcEJveFN0eWxlID0gbGVhZmxldE1hcC5tYXBEZWZhdWx0LFxuICBjaGlsZHJlbixcbiAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzID0gdHJ1ZSxcbiAgaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyA9IGZhbHNlLFxuICBmb3JFdmVudHNWaWV3ID0gZmFsc2UsXG4gIHN0eWxlID0ge30sXG4gIGZvcldXVFBEYXNoYm9hcmQgPSBmYWxzZSxcbn0pID0+IHtcbiAgY29uc3QgeyBtYXAgfSA9IGdsb2JhbF9kYXRhO1xuICBjb25zdCBtYXBSZWYgPSB1c2VSZWY8TC5NYXAgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWFwWm9vbUxldmVsLCBzZXRNYXBab29tTGV2ZWxdID0gdXNlU3RhdGUoMik7XG4gIGNvbnN0IHsgc2VsZWN0ZWRJdGVtIH0gPSB1c2VTZWxlY3RlZEl0ZW0oKTtcbiAgY29uc3QgZXZlbnRzRGF0YSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLmV2ZW50c19kYXRhLFxuICApO1xuICBjb25zdCBob3ZlcmVkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGhvdmVyZWRFdmVudCAhPT0gbnVsbCAmJiBob3ZlcmVkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2hvdmVyZWRFdmVudF0pO1xuXG4gIGNvbnN0IGZvY3VzZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZm9jdXNlZEV2ZW50ICE9PSBudWxsICYmIGZvY3VzZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbZm9jdXNlZEV2ZW50XSk7XG5cbiAgY29uc3QgW2hpZGRlbkZhY3Rvcmllc0NsdXN0ZXJHcm91cF0gPSB1c2VTdGF0ZShcbiAgICB3aW5kb3cuY3VzdG9tTGVhZmxldC5tYXJrZXJDbHVzdGVyR3JvdXAoY2x1c3Rlckdyb3VwT3B0aW9ucyksXG4gICk7XG5cbiAgY29uc3QgW3VubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwXSA9IHVzZVN0YXRlKFxuICAgIHdpbmRvdy5jdXN0b21MZWFmbGV0Lm1hcmtlckNsdXN0ZXJHcm91cChjbHVzdGVyR3JvdXBPcHRpb25zKSxcbiAgKTtcblxuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwXSA9IHVzZVN0YXRlKFxuICAgIHdpbmRvdy5jdXN0b21MZWFmbGV0Lm1hcmtlckNsdXN0ZXJHcm91cChjbHVzdGVyR3JvdXBPcHRpb25zKSxcbiAgKTtcblxuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2hpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgbW9uaXRvcmVkUG9pbnRzID0gcG9pbnRzLmZpbHRlcigocG9pbnQpID0+IHBvaW50Lmhhc19kZXZpY2UpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBwb2ludHMgJiYgKFxuICAgICAgICA8UG9pbnRNYXJrZXJzXG4gICAgICAgICAgbWFwPXttYXBSZWYuY3VycmVudH1cbiAgICAgICAgICBwb2ludHM9e21vbml0b3JlZFBvaW50c31cbiAgICAgICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM9e2luY2x1ZGVVbm1vbml0b3JlZFBvaW50c31cbiAgICAgICAgICByZXJlbmRlcj17em9vbUxldmVsc1ttYXBab29tTGV2ZWxdfVxuICAgICAgICAgIGZhY3Rvcmllc0dyb3VwPXttb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXB9XG4gICAgICAgICAgd3d0cHNHcm91cD17d3d0cHNMYXllckdyb3VwfVxuICAgICAgICAgIGNvbGxlY3RvcnNHcm91cD17Y29sbGVjdG9yc0xheWVyR3JvdXB9XG4gICAgICAgICAgZm9yRXZlbnRzVmlldz17ZmFsc2V9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgKTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgdW5tb25pdG9yZWRQb2ludHMgPSBwb2ludHMuZmlsdGVyKFxuICAgICAgKHBvaW50KSA9PiBwb2ludC5oYXNfZGV2aWNlID09PSBmYWxzZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBwb2ludHMgJiYgKFxuICAgICAgICA8UG9pbnRNYXJrZXJzXG4gICAgICAgICAgbWFwPXttYXBSZWYuY3VycmVudH1cbiAgICAgICAgICBwb2ludHM9e3VubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz17aW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICAgIHJlcmVuZGVyPXt6b29tTGV2ZWxzW21hcFpvb21MZXZlbF19XG4gICAgICAgICAgZmFjdG9yaWVzR3JvdXA9e3VubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwfVxuICAgICAgICAgIHd3dHBzR3JvdXA9e3d3dHBzTGF5ZXJHcm91cH1cbiAgICAgICAgICBjb2xsZWN0b3JzR3JvdXA9e2NvbGxlY3RvcnNMYXllckdyb3VwfVxuICAgICAgICAgIGZvckV2ZW50c1ZpZXc9e2ZhbHNlfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgICk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkRWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgIChwb2ludCkgPT5cbiAgICAgICAgICAocG9pbnQuaWQgPT09IGVkZ2Uuc291cmNlX3BvaW50X2lkICYmIGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZSkgfHxcbiAgICAgICAgICAocG9pbnQuaWQgPT09IGVkZ2Uuc291cmNlX3BvaW50X2lkICYmIHBvaW50Lmhhc19kZXZpY2UpLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgcGFyZW50UG9pbnQgPSBwb2ludHMuZmluZChcbiAgICAgICAgKHBvaW50KSA9PlxuICAgICAgICAgIChwb2ludC5pZCA9PT0gZWRnZS50YXJnZXRfcG9pbnRfaWQgJiYgZWRnZS5kZXNjZW5kYW50c19oYXNfZGV2aWNlKSB8fFxuICAgICAgICAgIHNvdXJjZVBvaW50ICE9PSB1bmRlZmluZWQsXG4gICAgICApO1xuXG4gICAgICAvLyBPbmx5IGtlZXAgZWRnZXMgd2hlcmUgYm90aCBzb3VyY2UgYW5kIHBhcmVudCBwb2ludHMgZXhpc3QgaW4gcG9pbnRzIGFycmF5IGFuZCBoYXZlIGhhc19kZXZpY2UgYXMgdHJ1ZVxuICAgICAgcmV0dXJuIHBhcmVudFBvaW50O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBlZGdlc0NoZWNrYm94ICYmIChcbiAgICAgICAgPEVkZ2VzXG4gICAgICAgICAgZWRnZXM9e21vbml0b3JlZEVkZ2VzIX1cbiAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgcG9pbnRzPXtwb2ludHMhfVxuICAgICAgICAgIGhpZGVFZGdlcz17aGlkZUVkZ2VzfVxuICAgICAgICAgIGhpZGVBcnJvd3M9e3RydWV9XG4gICAgICAgICAgYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzPXtpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzfVxuICAgICAgICAgIGdyb3VwPXttb25pdG9yZWRFZGdlc0dyb3VwfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgICk7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBmb2N1c2VkRXZlbnRQcmVzZW50LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1bm1vbml0b3JlZEVkZ2VzID0gZWRnZXMuZmlsdGVyKChlZGdlKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQpID0+XG4gICAgICAgICAgcG9pbnQuaWQgPT09IGVkZ2Uuc291cmNlX3BvaW50X2lkICYmICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBhcmVudFBvaW50ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgIChwb2ludCkgPT5cbiAgICAgICAgICBwb2ludC5pZCA9PT0gZWRnZS50YXJnZXRfcG9pbnRfaWQgJiYgIXBvaW50LmRlc2NlbmRhbnRzX2hhc19kZXZpY2UsXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gc291cmNlUG9pbnQgJiYgcGFyZW50UG9pbnQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICAgIGVkZ2VzQ2hlY2tib3ggJiYgKFxuICAgICAgICA8RWRnZXNcbiAgICAgICAgICBlZGdlcz17dW5tb25pdG9yZWRFZGdlcyF9XG4gICAgICAgICAgbWFwPXttYXBSZWYuY3VycmVudH1cbiAgICAgICAgICBMPXtMfVxuICAgICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgICBoaWRlRWRnZXM9e2hpZGVFZGdlc31cbiAgICAgICAgICBoaWRlQXJyb3dzPXt0cnVlfVxuICAgICAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50cz17aW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlc31cbiAgICAgICAgICBncm91cD17dW5tb25pdG9yZWRFZGdlc0dyb3VwfVxuICAgICAgICAgIHNob3VsZG50RHJhdz17aGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwLmdldExheWVycygpLmxlbmd0aCAhPT0gMH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICApO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3Qgc2V0dXBDaGVja2JveExpc3RlbmVyID0gKHNlbGVjdG9yLCBvbkNoYW5nZSkgPT4ge1xuICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgaWYgKGNoZWNrYm94ID09PSBudWxsKSByZXR1cm47XG4gICAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gb25DaGFuZ2UoY2hlY2tib3guY2hlY2tlZCkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgc2V0RWRnZXNDaGVja2JveChpc0NoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuXG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwKTtcbiAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cC5hZGRMYXllcihoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgIGlmICh6b29tID09PSAnTWVkaXVtJyB8fCB6b29tID09PSAnU21hbGwnKSB7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRMYXllcihoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgICBoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB0cmFja0xheWVyYm94ID0gKCkgPT4ge1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcignI2VkZ2VzLWNoZWNrYm94JywgaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSk7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKFxuICAgICAgJyNtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICAgIGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRXZlbnRzVmlldyA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gKFxuICAgICAgPD5cbiAgICAgICAge21lbW9pemVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c30ge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzfVxuICAgICAgPC8+XG4gICAgKTtcbiAgICBzd2l0Y2ggKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkge1xuICAgICAgY2FzZSAnU21hbGwnOlxuICAgICAgY2FzZSAnTWVkaXVtJzpcbiAgICAgICAgcGF5bG9hZCA9IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBjYXNlICdNTGFyZ2UnOlxuICAgICAgLy8gY2FzZSAnTGFyZ2UnOlxuICAgICAgLy8gY2FzZSAnWExhcmdlJzpcbiAgICAgIC8vIGRlZmF1bHQ6XG4gICAgICAvLyAgIHBheWxvYWQgPSA8PnttZW1vaXplZFBvaW50c308Lz47XG4gICAgICAvLyAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkWm9vbUNvbnRyb2wgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZm9yRXZlbnRzVmlld1xuICAgICAgPyB6b29tUnVsZXNGb3JFdmVudHNWaWV3KClcbiAgICAgIDogem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMoKTtcblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9LCBbXG4gICAgbWFwWm9vbUxldmVsLFxuICAgIGV2ZW50c0RhdGEuaXNGZXRjaGluZyxcbiAgICBmb2N1c2VkRXZlbnQsXG4gICAgaG92ZXJlZEV2ZW50LFxuICAgIHBvaW50cyxcbiAgICBtYXBSZWYuY3VycmVudCxcbiAgICBlZGdlc0NoZWNrYm94LFxuICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb2N1c2VkRXZlbnRQcmVzZW50KSB7XG4gICAgICBmb2N1c2VkRXZlbnQhLmZvY3VzZWQgPSBmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgICAgZm9jdXNlZEV2ZW50IS5ob3ZlcmVkID0gIWZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGhvdmVyZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGhvdmVyZWRFdmVudCEuaG92ZXJlZCA9IGhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgICBob3ZlcmVkRXZlbnQhLmZvY3VzZWQgPSAhaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoIWhvdmVyZWRFdmVudFByZXNlbnQgJiYgIWZvY3VzZWRFdmVudFByZXNlbnQpIHJldHVybiA8PjwvPjtcbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50XG4gICAgICAgIGV2ZW50PXtmb2N1c2VkRXZlbnQhIHx8IGhvdmVyZWRFdmVudCF9XG4gICAgICAgIG1hcD17bWFwfVxuICAgICAgICBlZGdlcz17ZWRnZXMhfVxuICAgICAgICBwb2ludHM9e3BvaW50cyF9XG4gICAgICAgIGluY2x1ZGVOZXR3b3JrPXshaG92ZXJlZEV2ZW50UHJlc2VudH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSwgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgIH07XG4gIH0sIFtmb2N1c2VkRXZlbnQsIGhvdmVyZWRFdmVudCwgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbGl6ZU1hcChcbiAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgbGVhZmxldE1hcC5zYXRlbGxpdGUsXG4gICAgICBtYXBSZWYsXG4gICAgICBkaXNwYXRjaCxcbiAgICAgIGlzVmFsaWRBcmVhLFxuICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICBmb3JXV1RQRGFzaGJvYXJkLFxuICAgICAgdHJ1ZSxcbiAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgLy8gZmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAvLyB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIC8vIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAvLyBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIC8vIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihmYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgLy8gbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICAvLyBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgICAgLy8gbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJHcm91cCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmUoKTtcbiAgICAgIC8vIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRNYXBab29tTGV2ZWwobWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpKTtcbiAgICAgIGlmICghYXJlYVRvQ2VudGVyQnkpIHtcbiAgICAgICAgYXJlYVRvQ2VudGVyQnkgPSBhcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuc2hhcGVfZGF0YSkuZmxhdCgpO1xuICAgICAgfVxuXG4gICAgICBhcmVhRm9jdXNMb2dpYyhtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSk7XG4gICAgICB0cmFja0xheWVyYm94KCk7XG4gICAgfVxuICB9LCBbbWFwUmVmLmN1cnJlbnQsIGFyZWFUb0NlbnRlckJ5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgbWFwUmVmLmN1cnJlbnQ/LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgIGlmIChjbGlja2VkKSByZXR1cm47XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXI/LmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRJdGVtICYmXG4gICAgICAgIGxheWVyLmlzUG9wdXBPcGVuKCkgPT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIpIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljaycpO1xuICAgICAgICB9IGVsc2UgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5Qb2x5Z29uKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2stZXZlbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjbGlja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJrZC1tYXAtY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgIG1hcC1jb250YWluZXIgJHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdtYXAtY29udGFpbmVyLS1zaWRlbmF2LWNvbGxhcHNlZCdcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJtYXBcIj48L2Rpdj5cbiAgICAgICAgICB7c2hvdWxkTG9hZE1hcE9iamVjdHMoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgZWRnZXMsIHBvaW50cykgJiYgKFxuICAgICAgICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXthcmVhVG9DZW50ZXJCeX1cbiAgICAgICAgICAgICAgbWFwWm9vbT17bWFwWm9vbUxldmVsfVxuICAgICAgICAgICAgICByZXJlbmRlcj17em9vbUxldmVsc1ttYXBab29tTGV2ZWxdfVxuICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgICAgICAgIGZlYXR1cmVHcm91cD17YXJlYXNMYXllckdyb3VwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzKFxuICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLFxuICAgICAgICAgICAgbWFwUmVmLFxuICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICkgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge21lbW9pemVkRXZlbnR9XG4gICAgICAgICAgICAgIHttZW1vaXplZFpvb21Db250cm9sfVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FB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
|
|
292
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJoaWRlRWRnZXMiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzIiwiZm9yRXZlbnRzVmlldyIsInN0eWxlIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJ1c2VTdGF0ZSIsInNlbGVjdGVkSXRlbSIsInVzZVNlbGVjdGVkSXRlbSIsImV2ZW50c0RhdGEiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZXZlbnRzX2RhdGEiLCJob3ZlcmVkRXZlbnRQcmVzZW50IiwidXNlTWVtbyIsInVuZGVmaW5lZCIsImZvY3VzZWRFdmVudFByZXNlbnQiLCJoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXAiLCJ3aW5kb3ciLCJjdXN0b21MZWFmbGV0IiwibWFya2VyQ2x1c3Rlckdyb3VwIiwiY2x1c3Rlckdyb3VwT3B0aW9ucyIsInVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwIiwibW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwIiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwibGF5ZXJHcm91cCIsImhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cCIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJ3d3Rwc0xheWVyR3JvdXAiLCJjb2xsZWN0b3JzTGF5ZXJHcm91cCIsImFyZWFzTGF5ZXJHcm91cCIsIkZlYXR1cmVHcm91cCIsImVkZ2VzQ2hlY2tib3giLCJzZXRFZGdlc0NoZWNrYm94IiwicG9pbnRzQ2hlY2tib3giLCJzZXRQb2ludHNDaGVja2JveCIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyIiwicG9pbnQiLCJoYXNfZGV2aWNlIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJQb2ludE1hcmtlcnMiLCJyZXJlbmRlciIsInpvb21MZXZlbHMiLCJmYWN0b3JpZXNHcm91cCIsInd3dHBzR3JvdXAiLCJjb2xsZWN0b3JzR3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzIiwidW5tb25pdG9yZWRQb2ludHMiLCJtZW1vaXplZEVkZ2VzIiwibW9uaXRvcmVkRWRnZXMiLCJlZGdlIiwic291cmNlUG9pbnQiLCJmaW5kIiwiaWQiLCJzb3VyY2VfcG9pbnRfaWQiLCJkZXNjZW5kYW50c19oYXNfZGV2aWNlIiwicGFyZW50UG9pbnQiLCJ0YXJnZXRfcG9pbnRfaWQiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwic2hvdWxkbnREcmF3IiwiZ2V0TGF5ZXJzIiwibGVuZ3RoIiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwic2VsZWN0b3IiLCJvbkNoYW5nZSIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNoZWNrZWQiLCJoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlIiwiaXNDaGVja2VkIiwiaXNIYW5kbGluZ0NoYW5nZSIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJhZGRMYXllciIsImNsZWFyTGF5ZXJzIiwicmVtb3ZlRnJvbSIsImFkZFRvIiwidW5tb25pdG9yZWRQb2ludEFuZExpbmVzTWFudWFsbHkiLCJ0cmFja0xheWVyYm94Iiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsImlzRmV0Y2hpbmciLCJtZW1vaXplZEV2ZW50IiwiZm9jdXNlZCIsImhvdmVyZWQiLCJFdmVudCIsImV2ZW50IiwiaW5jbHVkZU5ldHdvcmsiLCJldmVudEZpbHRlclBhcmFtIiwidXNlRWZmZWN0IiwiY2xlYW51cCIsIl9tYXBSZWYkY3VycmVudCIsInJlbW92ZUxheWVyIiwiaW5pdGlhbGl6ZU1hcCIsInNhdGVsbGl0ZSIsImlzVmFsaWRBcmVhIiwid2F0ZXJBdXRob3JpdHlJZCIsInJlbW92ZSIsImFyZWEiLCJzaGFwZV9kYXRhIiwiZmxhdCIsImFyZWFGb2N1c0xvZ2ljIiwiX21hcFJlZiRjdXJyZW50MiIsImNsaWNrZWQiLCJlYWNoTGF5ZXIiLCJsYXllciIsImthbmRvX29iamVjdF9pZCIsImlzUG9wdXBPcGVuIiwiTWFya2VyIiwiZmlyZSIsIlBvbHlnb24iLCJjbGFzc05hbWUiLCJzaWRlbmF2RXhwYW5kZWQiLCJzaG91bGRMb2FkTWFwT2JqZWN0cyIsIkFyZWFQb2x5Z29ucyIsIm1hcFpvb20iLCJmZWF0dXJlR3JvdXAiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuLy8gaW1wb3J0IHsgc3RvcmVNYXAgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vZXZlbnRzL0V2ZW50JztcbmltcG9ydCB7XG4gIGFyZWFGb2N1c0xvZ2ljLFxuICBjbHVzdGVyR3JvdXBPcHRpb25zLFxuICBpbml0aWFsaXplTWFwLFxuICBpc1ZhbGlkQXJlYSxcbiAgc2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyxcbiAgc2hvdWxkTG9hZE1hcE9iamVjdHMsXG4gIHpvb21MZXZlbHMsXG59IGZyb20gJy4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgbGVhZmxldE1hcCB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgeyB1c2VTZWxlY3RlZEl0ZW0gfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL0xpc3RDb250ZXh0JztcbnJlcXVpcmUoJ2xlYWZsZXQubWFya2VyY2x1c3RlcicpO1xucmVxdWlyZSgnc3JjL3V0aWxpdGllcy9wb2x5bGluZWRlY29yYXRvcicpO1xuXG5pbnRlcmZhY2UgTWFwUHJvcHMge1xuICBhcmVhczogSUFyZWFbXTtcbiAgZWRnZXM/OiBJRWRnZVtdO1xuICBwb2ludHM/OiBJUG9pbnRbXTtcbiAgZ2xvYmFsX2RhdGE6IElHbG9iYWxTdGF0ZTtcbiAgYXJlYVRvQ2VudGVyQnk/OiBhbnk7XG4gIGZvY3VzZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhvdmVyZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhpZGVFZGdlcz86IGJvb2xlYW47XG4gIG1hcEJveFN0eWxlPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IGFueTtcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM/OiBib29sZWFuO1xuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzPzogYm9vbGVhbjtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbiAgZm9yV1dUUERhc2hib2FyZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNYXA6IFJlYWN0LkZDPE1hcFByb3BzPiA9ICh7XG4gIGFyZWFzLFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBnbG9iYWxfZGF0YSxcbiAgYXJlYVRvQ2VudGVyQnksXG4gIGZvY3VzZWRFdmVudCxcbiAgaG92ZXJlZEV2ZW50LFxuICBoaWRlRWRnZXMgPSBmYWxzZSxcbiAgbWFwQm94U3R5bGUgPSBsZWFmbGV0TWFwLm1hcERlZmF1bHQsXG4gIGNoaWxkcmVuLFxuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSB0cnVlLFxuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzID0gZmFsc2UsXG4gIGZvckV2ZW50c1ZpZXcgPSBmYWxzZSxcbiAgc3R5bGUgPSB7fSxcbiAgZm9yV1dUUERhc2hib2FyZCA9IGZhbHNlLFxufSkgPT4ge1xuICBjb25zdCB7IG1hcCB9ID0gZ2xvYmFsX2RhdGE7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZjxMLk1hcCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttYXBab29tTGV2ZWwsIHNldE1hcFpvb21MZXZlbF0gPSB1c2VTdGF0ZSgyKTtcbiAgY29uc3QgeyBzZWxlY3RlZEl0ZW0gfSA9IHVzZVNlbGVjdGVkSXRlbSgpO1xuICBjb25zdCBldmVudHNEYXRhID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZXZlbnRzX2RhdGEsXG4gICk7XG4gIGNvbnN0IGhvdmVyZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbaG92ZXJlZEV2ZW50XSk7XG5cbiAgY29uc3QgZm9jdXNlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICBjb25zdCBbaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwXSA9IHVzZVN0YXRlKFxuICAgIHdpbmRvdy5jdXN0b21MZWFmbGV0Lm1hcmtlckNsdXN0ZXJHcm91cChjbHVzdGVyR3JvdXBPcHRpb25zKSxcbiAgKTtcblxuICBjb25zdCBbdW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuXG4gIGNvbnN0IFttb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXBdID0gdXNlU3RhdGUoXG4gICAgd2luZG93LmN1c3RvbUxlYWZsZXQubWFya2VyQ2x1c3Rlckdyb3VwKGNsdXN0ZXJHcm91cE9wdGlvbnMpLFxuICApO1xuXG4gIGNvbnN0IFt1bm1vbml0b3JlZEVkZ2VzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbaGlkZGVuVW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEVkZ2VzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbd3d0cHNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2NvbGxlY3RvcnNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2FyZWFzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShuZXcgTC5GZWF0dXJlR3JvdXAoKSk7XG4gIGNvbnN0IFtlZGdlc0NoZWNrYm94LCBzZXRFZGdlc0NoZWNrYm94XSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbcG9pbnRzQ2hlY2tib3gsIHNldFBvaW50c0NoZWNrYm94XSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBtZW1vaXplZE1vbml0b3JlZFBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBtb25pdG9yZWRQb2ludHMgPSBwb2ludHMuZmlsdGVyKChwb2ludCkgPT4gcG9pbnQuaGFzX2RldmljZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICAgIHBvaW50cyAmJiAoXG4gICAgICAgIDxQb2ludE1hcmtlcnNcbiAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgIHBvaW50cz17bW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz17aW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICAgIHJlcmVuZGVyPXt6b29tTGV2ZWxzW21hcFpvb21MZXZlbF19XG4gICAgICAgICAgZmFjdG9yaWVzR3JvdXA9e21vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cH1cbiAgICAgICAgICB3d3Rwc0dyb3VwPXt3d3Rwc0xheWVyR3JvdXB9XG4gICAgICAgICAgY29sbGVjdG9yc0dyb3VwPXtjb2xsZWN0b3JzTGF5ZXJHcm91cH1cbiAgICAgICAgICBmb3JFdmVudHNWaWV3PXtmYWxzZX1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICApO1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgZm9jdXNlZEV2ZW50UHJlc2VudCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bm1vbml0b3JlZFBvaW50cyA9IHBvaW50cy5maWx0ZXIoXG4gICAgICAocG9pbnQpID0+IHBvaW50Lmhhc19kZXZpY2UgPT09IGZhbHNlLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICAgIHBvaW50cyAmJiAoXG4gICAgICAgIDxQb2ludE1hcmtlcnNcbiAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgIHBvaW50cz17dW5tb25pdG9yZWRQb2ludHN9XG4gICAgICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzPXtpbmNsdWRlVW5tb25pdG9yZWRQb2ludHN9XG4gICAgICAgICAgcmVyZW5kZXI9e3pvb21MZXZlbHNbbWFwWm9vbUxldmVsXX1cbiAgICAgICAgICBmYWN0b3JpZXNHcm91cD17dW5tb25pdG9yZWRGYWN0b3JpZXNDbHVzdGVyR3JvdXB9XG4gICAgICAgICAgd3d0cHNHcm91cD17d3d0cHNMYXllckdyb3VwfVxuICAgICAgICAgIGNvbGxlY3RvcnNHcm91cD17Y29sbGVjdG9yc0xheWVyR3JvdXB9XG4gICAgICAgICAgZm9yRXZlbnRzVmlldz17ZmFsc2V9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgKTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBwb2ludHMuZmluZChcbiAgICAgICAgKHBvaW50KSA9PlxuICAgICAgICAgIChwb2ludC5pZCA9PT0gZWRnZS5zb3VyY2VfcG9pbnRfaWQgJiYgZWRnZS5kZXNjZW5kYW50c19oYXNfZGV2aWNlKSB8fFxuICAgICAgICAgIChwb2ludC5pZCA9PT0gZWRnZS5zb3VyY2VfcG9pbnRfaWQgJiYgcG9pbnQuaGFzX2RldmljZSksXG4gICAgICApO1xuXG4gICAgICBjb25zdCBwYXJlbnRQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQpID0+XG4gICAgICAgICAgKHBvaW50LmlkID09PSBlZGdlLnRhcmdldF9wb2ludF9pZCAmJiBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2UpIHx8XG4gICAgICAgICAgc291cmNlUG9pbnQgIT09IHVuZGVmaW5lZCxcbiAgICAgICk7XG5cbiAgICAgIC8vIE9ubHkga2VlcCBlZGdlcyB3aGVyZSBib3RoIHNvdXJjZSBhbmQgcGFyZW50IHBvaW50cyBleGlzdCBpbiBwb2ludHMgYXJyYXkgYW5kIGhhdmUgaGFzX2RldmljZSBhcyB0cnVlXG4gICAgICByZXR1cm4gcGFyZW50UG9pbnQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICAgIGVkZ2VzQ2hlY2tib3ggJiYgKFxuICAgICAgICA8RWRnZXNcbiAgICAgICAgICBlZGdlcz17bW9uaXRvcmVkRWRnZXMhfVxuICAgICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgICAgTD17TH1cbiAgICAgICAgICBwb2ludHM9e3BvaW50cyF9XG4gICAgICAgICAgaGlkZUVkZ2VzPXtoaWRlRWRnZXN9XG4gICAgICAgICAgaGlkZUFycm93cz17dHJ1ZX1cbiAgICAgICAgICBhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHM9e2luY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXN9XG4gICAgICAgICAgZ3JvdXA9e21vbml0b3JlZEVkZ2VzR3JvdXB9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgKTtcbiAgfSwgW21hcFJlZi5jdXJyZW50LCBwb2ludHMsIGZvY3VzZWRFdmVudFByZXNlbnQsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRFZGdlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHVubW9uaXRvcmVkRWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgIChwb2ludCkgPT5cbiAgICAgICAgICBwb2ludC5pZCA9PT0gZWRnZS5zb3VyY2VfcG9pbnRfaWQgJiYgIXBvaW50LmRlc2NlbmRhbnRzX2hhc19kZXZpY2UsXG4gICAgICApO1xuICAgICAgY29uc3QgcGFyZW50UG9pbnQgPSBwb2ludHMuZmluZChcbiAgICAgICAgKHBvaW50KSA9PlxuICAgICAgICAgIHBvaW50LmlkID09PSBlZGdlLnRhcmdldF9wb2ludF9pZCAmJiAhcG9pbnQuZGVzY2VuZGFudHNfaGFzX2RldmljZSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzb3VyY2VQb2ludCAmJiBwYXJlbnRQb2ludDtcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICAgIDxFZGdlc1xuICAgICAgICAgIGVkZ2VzPXt1bm1vbml0b3JlZEVkZ2VzIX1cbiAgICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgcG9pbnRzPXtwb2ludHMhfVxuICAgICAgICAgIGhpZGVFZGdlcz17aGlkZUVkZ2VzfVxuICAgICAgICAgIGhpZGVBcnJvd3M9e3RydWV9XG4gICAgICAgICAgYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzPXtpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzfVxuICAgICAgICAgIGdyb3VwPXt1bm1vbml0b3JlZEVkZ2VzR3JvdXB9XG4gICAgICAgICAgc2hvdWxkbnREcmF3PXtoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXAuZ2V0TGF5ZXJzKCkubGVuZ3RoICE9PSAwfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgICk7XG4gIH0sIFtcbiAgICBtYXBSZWYuY3VycmVudCxcbiAgICBwb2ludHMsXG4gICAgZm9jdXNlZEV2ZW50UHJlc2VudCxcbiAgICBtYXBab29tTGV2ZWwsXG4gICAgcG9pbnRzQ2hlY2tib3gsXG4gIF0pO1xuXG4gIGNvbnN0IHNldHVwQ2hlY2tib3hMaXN0ZW5lciA9IChzZWxlY3Rvciwgb25DaGFuZ2UpID0+IHtcbiAgICBjb25zdCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGlmIChjaGVja2JveCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IG9uQ2hhbmdlKGNoZWNrYm94LmNoZWNrZWQpKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICBsZXQgaXNIYW5kbGluZ0NoYW5nZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIGlmIChpc0hhbmRsaW5nQ2hhbmdlKSByZXR1cm47XG5cbiAgICBpc0hhbmRsaW5nQ2hhbmdlID0gdHJ1ZTtcbiAgICBsZXQgem9vbSA9IHpvb21MZXZlbHNbbWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpXTtcbiAgICBzZXRQb2ludHNDaGVja2JveChpc0NoZWNrZWQpO1xuXG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwKTtcbiAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bm1vbml0b3JlZEZhY3Rvcmllc0NsdXN0ZXJHcm91cC5hZGRMYXllcihoaWRkZW5GYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgaGlkZGVuRmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG5cbiAgICAgIGlmICh6b29tID09PSAnTWVkaXVtJyB8fCB6b29tID09PSAnU21hbGwnKSB7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRMYXllcihoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgICBoaWRkZW5Vbm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlzSGFuZGxpbmdDaGFuZ2UgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCB1bm1vbml0b3JlZFBvaW50QW5kTGluZXNNYW51YWxseSA9ICgpID0+IHtcbiAgICBjb25zdCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94Jyk7XG4gICAgY2hlY2tib3ggIT0gbnVsbCAmJiBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZShjaGVja2JveC5jaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCB0cmFja0xheWVyYm94ID0gKCkgPT4ge1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcignI2VkZ2VzLWNoZWNrYm94JywgaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSk7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKFxuICAgICAgJyNtb25pdG9yZWQtcG9pbnRzLWNoZWNrYm94JyxcbiAgICAgIGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRXZlbnRzVmlldyA9ICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gKFxuICAgICAgPD5cbiAgICAgICAge21lbW9pemVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkRWRnZXN9XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3Qgem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMgPSAoKSA9PiB7XG4gICAgbGV0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c30ge21lbW9pemVkTW9uaXRvcmVkUG9pbnRzfVxuICAgICAgPC8+XG4gICAgKTtcbiAgICBzd2l0Y2ggKHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSkge1xuICAgICAgY2FzZSAnU21hbGwnOlxuICAgICAgY2FzZSAnTWVkaXVtJzpcbiAgICAgICAgcGF5bG9hZCA9IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBjYXNlICdNTGFyZ2UnOlxuICAgICAgLy8gY2FzZSAnTGFyZ2UnOlxuICAgICAgLy8gY2FzZSAnWExhcmdlJzpcbiAgICAgIC8vIGRlZmF1bHQ6XG4gICAgICAvLyAgIHBheWxvYWQgPSA8PnttZW1vaXplZFBvaW50c308Lz47XG4gICAgICAvLyAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkWm9vbUNvbnRyb2wgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZm9yRXZlbnRzVmlld1xuICAgICAgPyB6b29tUnVsZXNGb3JFdmVudHNWaWV3KClcbiAgICAgIDogem9vbVJ1bGVzRm9yRGFzaGFib2FyZE1hcHMoKTtcblxuICAgIHVubW9uaXRvcmVkUG9pbnRBbmRMaW5lc01hbnVhbGx5KCk7XG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH0sIFtcbiAgICBtYXBab29tTGV2ZWwsXG4gICAgZXZlbnRzRGF0YS5pc0ZldGNoaW5nLFxuICAgIGZvY3VzZWRFdmVudCxcbiAgICBob3ZlcmVkRXZlbnQsXG4gICAgcG9pbnRzLFxuICAgIG1hcFJlZi5jdXJyZW50LFxuICAgIGVkZ2VzQ2hlY2tib3gsXG4gICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIGhpZGRlblVubW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgICBwb2ludHNDaGVja2JveCxcbiAgXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmb2N1c2VkRXZlbnRQcmVzZW50KSB7XG4gICAgICBmb2N1c2VkRXZlbnQhLmZvY3VzZWQgPSBmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgICAgZm9jdXNlZEV2ZW50IS5ob3ZlcmVkID0gIWZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGhvdmVyZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGhvdmVyZWRFdmVudCEuaG92ZXJlZCA9IGhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgICBob3ZlcmVkRXZlbnQhLmZvY3VzZWQgPSAhaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoIWhvdmVyZWRFdmVudFByZXNlbnQgJiYgIWZvY3VzZWRFdmVudFByZXNlbnQpIHJldHVybiA8PjwvPjtcbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50XG4gICAgICAgIGV2ZW50PXtmb2N1c2VkRXZlbnQhIHx8IGhvdmVyZWRFdmVudCF9XG4gICAgICAgIG1hcD17bWFwfVxuICAgICAgICBlZGdlcz17ZWRnZXMhfVxuICAgICAgICBwb2ludHM9e3BvaW50cyF9XG4gICAgICAgIGluY2x1ZGVOZXR3b3JrPXshaG92ZXJlZEV2ZW50UHJlc2VudH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSwgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgIH07XG4gIH0sIFtmb2N1c2VkRXZlbnQsIGhvdmVyZWRFdmVudCwgZ2xvYmFsX2RhdGEuZXZlbnRGaWx0ZXJQYXJhbV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbGl6ZU1hcChcbiAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgbGVhZmxldE1hcC5zYXRlbGxpdGUsXG4gICAgICBtYXBSZWYsXG4gICAgICBkaXNwYXRjaCxcbiAgICAgIGlzVmFsaWRBcmVhLFxuICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICBmb3JXV1RQRGFzaGJvYXJkLFxuICAgICAgdHJ1ZSxcbiAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgLy8gZmFjdG9yaWVzQ2x1c3Rlckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAvLyB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIC8vIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAvLyBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIC8vIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihmYWN0b3JpZXNDbHVzdGVyR3JvdXApO1xuICAgICAgLy8gbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICAvLyBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgICAgLy8gbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGFyZWFzTGF5ZXJHcm91cCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmUoKTtcbiAgICAgIC8vIGRpc3BhdGNoKHN0b3JlTWFwKHVuZGVmaW5lZCkpO1xuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRNYXBab29tTGV2ZWwobWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpKTtcbiAgICAgIGlmICghYXJlYVRvQ2VudGVyQnkpIHtcbiAgICAgICAgYXJlYVRvQ2VudGVyQnkgPSBhcmVhcy5tYXAoKGFyZWEpID0+IGFyZWEuc2hhcGVfZGF0YSkuZmxhdCgpO1xuICAgICAgfVxuXG4gICAgICBhcmVhRm9jdXNMb2dpYyhtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSk7XG4gICAgICB0cmFja0xheWVyYm94KCk7XG4gICAgfVxuICB9LCBbbWFwUmVmLmN1cnJlbnQsIGFyZWFUb0NlbnRlckJ5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgbWFwUmVmLmN1cnJlbnQ/LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgIGlmIChjbGlja2VkKSByZXR1cm47XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXI/LmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRJdGVtICYmXG4gICAgICAgIGxheWVyLmlzUG9wdXBPcGVuKCkgPT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIpIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljaycpO1xuICAgICAgICB9IGVsc2UgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5Qb2x5Z29uKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2stZXZlbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjbGlja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJrZC1tYXAtY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgIG1hcC1jb250YWluZXIgJHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdtYXAtY29udGFpbmVyLS1zaWRlbmF2LWNvbGxhcHNlZCdcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJtYXBcIj48L2Rpdj5cbiAgICAgICAgICB7c2hvdWxkTG9hZE1hcE9iamVjdHMoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgZWRnZXMsIHBvaW50cykgJiYgKFxuICAgICAgICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgICAgICAgIEw9e0x9XG4gICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXthcmVhVG9DZW50ZXJCeX1cbiAgICAgICAgICAgICAgbWFwWm9vbT17bWFwWm9vbUxldmVsfVxuICAgICAgICAgICAgICByZXJlbmRlcj17em9vbUxldmVsc1ttYXBab29tTGV2ZWxdfVxuICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgICAgICAgIGZlYXR1cmVHcm91cD17YXJlYXNMYXllckdyb3VwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzKFxuICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLFxuICAgICAgICAgICAgbWFwUmVmLFxuICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICkgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge21lbW9pemVkRXZlbnR9XG4gICAgICAgICAgICAgIHttZW1vaXplZFpvb21Db250cm9sfVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFPQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFPQSxJQUFBRyxjQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsU0FBQSxHQUFBVCxPQUFBO0FBU0EsSUFBQVUsTUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBQXFFLFNBQUFZLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFkLHdCQUFBa0IsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFK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
|