@kando-env/kando-ui 1.2.354-alpha.7 → 1.2.354-alpha.9
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 +5 -7
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +6 -7
- package/lib/Widgets/EventsRow/EventsRow.js +6 -7
- package/lib/Widgets/Map/GraphUtils.js +4 -6
- package/lib/Widgets/Map/Map.js +5 -7
- package/lib/Widgets/Map/MapUtils.js +4 -5
- package/lib/Widgets/Map/areas/AreaPolygon.js +4 -5
- package/lib/Widgets/Map/areas/AreaPolygons.js +3 -4
- package/lib/Widgets/Map/areas/AreaUtils.js +4 -3
- package/lib/Widgets/Map/areas/Patterns.js +2 -2
- package/lib/Widgets/Map/edges/Edge.js +7 -6
- package/lib/Widgets/Map/edges/Edges.js +4 -6
- package/lib/Widgets/Map/edges/arrows/Arrows.js +2 -2
- package/lib/Widgets/Map/events/Event.js +3 -4
- package/lib/Widgets/Map/events/EventIndicator.js +4 -6
- package/lib/Widgets/Map/events/EventPath.js +4 -6
- package/lib/Widgets/Map/events/EventUtils.js +8 -6
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +3 -4
- package/lib/Widgets/Map/events/PointOfEvent.js +6 -7
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +2 -3
- package/lib/Widgets/Map/events/Snail.js +3 -4
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +5 -8
- package/lib/Widgets/Map/map/FloatingGraph.js +3 -4
- package/lib/Widgets/Map/map/GraphDateButton.js +3 -4
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +2 -3
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +2 -2
- package/lib/Widgets/Map/points/PointIcon.js +11 -7
- package/lib/Widgets/Map/points/PointMarker.js +5 -7
- package/lib/Widgets/Map/points/PointMarkers.js +3 -4
- package/lib/Widgets/Map/points/PointUtils.js +84 -20
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +5 -6
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +3 -4
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +4 -5
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
- package/lib/Widgets/MostPolluting/Areas/Areas.js +7 -8
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +2 -3
- package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +2 -2
- package/lib/Widgets/MostPolluting/Factories/Factories.js +10 -11
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +4 -4
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +3 -3
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +3 -3
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
- package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
- package/lib/Widgets/MostPolluting/MostPolluting.js +3 -4
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +7 -15
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +2 -2
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +3 -4
- package/lib/Widgets/MostPolluting/assets/index.js +2 -2
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +2 -2
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +6 -6
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +5 -8
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +6 -6
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +5 -5
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +12 -12
- package/lib/Widgets/MostPolluting/models.js +1 -1
- package/lib/Widgets/MostPolluting/styles.js +4 -6
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +2 -2
- package/lib/Widgets/PotentialImpactSummary/Icon.js +3 -2
- package/lib/Widgets/PotentialImpactSummary/index.js +4 -4
- package/lib/Widgets/PotentialImpactSummary/index.test.js +5 -6
- package/lib/Widgets/PotentialImpactSummary/styles.js +7 -12
- package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +2 -2
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +2 -2
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +4 -4
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +2 -2
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +5 -6
- package/lib/Widgets/QualitySummary/QualitySummary.js +2 -2
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
- package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/styles.js +7 -12
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +3 -4
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +5 -6
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +3 -4
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +5 -6
- package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
- package/lib/Widgets/UtilityInformation/styles.js +9 -19
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
- package/lib/assets/icons/TopNavbar/index.js +1 -1
- package/lib/assets/icons/TrendSvg.js +2 -2
- package/lib/assets/icons/index.js +1 -1
- package/lib/assets/icons/kandoStepper/index.js +1 -1
- package/lib/assets/icons/siteTypes/index.js +1 -1
- package/lib/components/ApplyButton/ApplyButton.js +4 -5
- package/lib/components/ApplyButton/index.js +3 -4
- package/lib/components/Backdrop/Backdrop.js +2 -2
- package/lib/components/ContentLoader/ContentLoader.js +2 -2
- package/lib/components/ContentLoader/index.js +1 -1
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +6 -7
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +4 -6
- package/lib/components/CustomInputs/DoubleTabs/styles.js +5 -8
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +4 -5
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +3 -4
- package/lib/components/CustomInputs/Search/Search.js +8 -10
- package/lib/components/CustomInputs/Search/index.js +3 -4
- package/lib/components/CustomInputs/Select/Select.js +6 -7
- package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
- package/lib/components/DamageType/DamageType.js +7 -10
- package/lib/components/DamageType/index.js +3 -4
- package/lib/components/DataLoaderError/DataLoaderError.js +2 -2
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +3 -4
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +10 -10
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +5 -7
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +3 -5
- package/lib/components/DischargeHeatmap/index.js +3 -4
- package/lib/components/DischargeHeatmap/mocks/handlers.js +2 -3
- package/lib/components/DischargeHeatmap/popupText.js +4 -5
- package/lib/components/DischargeHeatmap/titles.js +4 -6
- package/lib/components/DischargeHeatmap/types.js +1 -1
- package/lib/components/ErrorBoundary.js +2 -3
- package/lib/components/Events/Events.js +18 -20
- package/lib/components/Events/index.js +3 -4
- package/lib/components/Graph/Graph.js +10 -12
- package/lib/components/Graph/index.js +3 -4
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +4 -5
- package/lib/components/Header/Breadcrumbs/index.js +3 -4
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +10 -12
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +4 -6
- package/lib/components/Header/DoubleTabs/styles.js +5 -8
- package/lib/components/Header/Header.js +2 -2
- package/lib/components/Header/Header.stories.js +4 -6
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +6 -6
- package/lib/components/Header/InfoBar/InfoBar.js +14 -15
- package/lib/components/Header/InfoBar/Search/Control.js +3 -4
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +4 -5
- package/lib/components/Header/InfoBar/Search/Search.js +6 -8
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +6 -8
- package/lib/components/Header/InfoBar/Search/index.js +3 -4
- package/lib/components/Header/InfoBar/Search/searchStyle.js +2 -3
- package/lib/components/Header/InfoBar/TimeFilter.js +3 -4
- package/lib/components/Header/InfoBar/types.js +1 -1
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +11 -13
- package/lib/components/Header/KandoNavbar/index.js +3 -4
- package/lib/components/Header/Slideshow/Slideshow.js +7 -9
- package/lib/components/Header/Slideshow/index.js +3 -4
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +2 -2
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -3
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +10 -10
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +4 -4
- package/lib/components/Header/Toolbar/Toolbar.js +6 -7
- package/lib/components/InfoBar/InfoBar.js +3 -4
- package/lib/components/InfoBar/InfoBar.stories.js +4 -6
- package/lib/components/KandoModal/KandoModal.js +8 -10
- package/lib/components/KandoModal/index.js +3 -4
- package/lib/components/Link.js +2 -2
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +2 -2
- package/lib/components/Links/StyledLink/StyledLink.js +3 -4
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +3 -4
- package/lib/components/LiveEvents/CarouselSlide.js +3 -4
- package/lib/components/LiveEvents/LiveEvents.js +3 -4
- package/lib/components/LiveEvents/index.js +3 -4
- package/lib/components/LoaderByPercent/LoaderByPercent.js +4 -5
- package/lib/components/Map/Map.js +5 -7
- package/lib/components/Map/index.js +3 -4
- package/lib/components/Modal/Modal.js +2 -2
- package/lib/components/NarrowHeader.js +2 -2
- package/lib/components/PointInfo/PointInfo.js +4 -5
- package/lib/components/PointInfo/index.js +3 -4
- package/lib/components/PopupModal/PopupModal.js +2 -2
- package/lib/components/PopupModal/PopupModal.stories.js +5 -8
- package/lib/components/Sector/Sector.js +3 -4
- package/lib/components/Sector/Sector.test.js +6 -6
- package/lib/components/Sector/index.js +3 -4
- package/lib/components/Sector/sectorIcons.js +3 -4
- package/lib/components/SevereEvent/Eta/Eta.js +5 -7
- package/lib/components/SevereEvent/Eta/styles.js +3 -4
- package/lib/components/SevereEvent/SevereEvent.js +6 -7
- package/lib/components/Spinner/Spinner.js +3 -3
- package/lib/components/Spinner/Spinner.stories.js +5 -8
- package/lib/components/Spinner/index.js +3 -4
- package/lib/components/Spinner/styles.js +7 -10
- package/lib/components/Tabs/Tabs.js +6 -10
- package/lib/components/Tabs/Tabs.stories.js +4 -6
- package/lib/components/Tabs/assets/index.js +1 -1
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +10 -12
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +4 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +6 -6
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +5 -6
- package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
- package/lib/components/TimeRangeSelector/TimeRangeList.js +4 -6
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +5 -7
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +7 -9
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
- package/lib/components/TimeRangeSelector/constants.js +3 -5
- package/lib/components/TimeRangeSelector/index.js +3 -4
- package/lib/components/Toggle/Toggle.js +6 -8
- package/lib/components/Toggle/index.js +3 -4
- package/lib/components/TrendGraph/TrendGraph.js +7 -9
- package/lib/components/TrendGraph/index.js +3 -4
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +8 -9
- package/lib/components/TrendGraphNVL/index.js +3 -4
- package/lib/development-environment/index.js +3 -3
- package/lib/development-environment/mock/browser.js +2 -3
- package/lib/development-environment/mock/get.js +1 -1
- package/lib/development-environment/mock/handlers.js +2 -3
- package/lib/development-environment/mock/mockBus.js +2 -3
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
- package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
- package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
- package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
- package/lib/development-environment/togly/ToglyDashboard.js +3 -4
- package/lib/development-environment/togly/ToglyItem.js +4 -8
- package/lib/development-environment/togly/flags.js +1 -1
- package/lib/development-environment/togly/init.js +3 -3
- package/lib/development-environment/togly/macro.js +2 -2
- package/lib/development-environment/togly/useDoubleKeyDown.js +1 -1
- package/lib/development-environment/togly/useLocalStorage.js +1 -1
- package/lib/hooks/useApi.js +2 -2
- package/lib/hooks/useApiWithDashboardQuery.js +1 -1
- package/lib/hooks/useClickOutside.js +2 -3
- package/lib/hooks/useInitializeHeaders.js +2 -2
- package/lib/hooks/useKandoFetch.js +4 -5
- package/lib/hooks/useMap.js +4 -4
- package/lib/hooks/useNavContext.js +1 -1
- package/lib/hooks/useQueryURL.js +2 -3
- package/lib/hooks/useRemoveExistingLayers.js +2 -3
- package/lib/hooks/useUpdateEventBodyTail.js +2 -3
- package/lib/hooks/useUserTimeZone.js +7 -7
- package/lib/hooks/useUserTimeZone.test.js +3 -4
- package/lib/hooks/useWindowSize.js +1 -1
- package/lib/index.js +3 -4
- package/lib/macros/getVersion.js +3 -3
- package/lib/models/IAction.js +1 -1
- package/lib/models/IAppState.js +1 -1
- package/lib/pages/AreaPage/AreaPage.js +4 -5
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +2 -3
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +9 -10
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +3 -4
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +2 -2
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +3 -3
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +4 -4
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
- package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
- package/lib/pages/AssessmentPage/AssessmentPage.js +7 -9
- package/lib/pages/CannyWidget/Feedback.js +4 -6
- package/lib/pages/CovidPage/CovidPage.js +4 -6
- package/lib/pages/CovidPage/components/Body.js +5 -7
- package/lib/pages/CovidPage/components/Map.js +6 -8
- package/lib/pages/CovidPage/components/Sidebar.js +6 -8
- package/lib/pages/CovidPage/components/Summary.js +6 -8
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +8 -9
- package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +5 -7
- package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
- package/lib/pages/CovidPage/components/areas/Area.js +8 -9
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +16 -10
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +3 -4
- package/lib/pages/CovidPage/components/areas/AreasList.js +8 -9
- package/lib/pages/CovidPage/components/areas/Sort.js +4 -6
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +1 -1
- package/lib/pages/DashboardMap/AreaCard.js +4 -4
- package/lib/pages/DashboardMap/AssessmentIcon.js +3 -3
- package/lib/pages/DashboardMap/Capacity.js +2 -2
- package/lib/pages/DashboardMap/FactoryCard.js +6 -5
- package/lib/pages/DashboardMap/HighchartsOptions.js +2 -2
- package/lib/pages/DashboardMap/List.js +7 -8
- package/lib/pages/DashboardMap/ListContext.js +2 -3
- package/lib/pages/DashboardMap/Loader.js +2 -2
- package/lib/pages/DashboardMap/SeverityBadge.js +3 -3
- package/lib/pages/DashboardMap/WWTPMap.js +4 -6
- package/lib/pages/DashboardMap/WaterDischarge.js +2 -2
- package/lib/pages/DashboardMap/Widget.js +4 -5
- package/lib/pages/DashboardMap/index.js +3 -4
- package/lib/pages/DashboardMap/utils.js +6 -7
- package/lib/pages/EventsPage/Body/Body.js +4 -6
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +4 -5
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +2 -3
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +3 -4
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +3 -4
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +2 -2
- package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +3 -4
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +1 -1
- package/lib/pages/EventsPage/EventsPage.js +4 -6
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +6 -8
- package/lib/pages/EventsPage/events/MoreInfo.js +4 -6
- package/lib/pages/EventsPage/events/Sidebar.js +4 -6
- package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +5 -7
- package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +4 -6
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +13 -14
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +6 -8
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +2 -2
- package/lib/pages/EventsPage/events/event_info/EventSection.js +5 -6
- package/lib/pages/EventsPage/events/event_info/EventSection.test.js +6 -6
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +5 -8
- package/lib/pages/EventsPage/events/event_info/Header/Header.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +8 -10
- package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +5 -6
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +4 -6
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +3 -4
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +4 -6
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +4 -6
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +5 -7
- package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +4 -5
- package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +4 -5
- package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +3 -3
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +3 -3
- package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +6 -6
- package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +6 -7
- package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +2 -2
- package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +4 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/style.js +4 -6
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +8 -10
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +5 -7
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +3 -4
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +3 -4
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +5 -6
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +6 -8
- package/lib/pages/EventsPage/events/event_info/styles.js +4 -6
- package/lib/pages/EventsPage/events/events_list/EventItem.js +5 -7
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +2 -2
- package/lib/pages/EventsPage/events/events_list/EventsList.js +16 -19
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +7 -9
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +12 -14
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +16 -18
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +4 -6
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +4 -6
- package/lib/pages/EventsPage/events/events_list/Sort.js +4 -6
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +6 -7
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -5
- package/lib/pages/ImportFileWizard/ImportFile.js +4 -6
- package/lib/pages/ImportFileWizard/ResponseBody.js +6 -7
- package/lib/pages/ImportFileWizard/ValidationForm.js +5 -6
- package/lib/pages/ImportFileWizard/ValidationResponse.js +5 -7
- package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
- package/lib/pages/ImportFileWizard/index.js +3 -4
- package/lib/pages/ImportGisPage/ImportGisContainer.js +4 -6
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +3 -4
- package/lib/pages/ImportGisPage/importGisUtils.js +6 -7
- package/lib/pages/ImportGisProcess/index.js +3 -4
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +3 -4
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +3 -3
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +2 -2
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +10 -13
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +4 -6
- package/lib/pages/NotificationsPage/Notification/Notification.js +2 -2
- package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
- package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
- package/lib/pages/NotificationsPage/NotificationsPage.js +4 -5
- package/lib/pages/NotificationsPage/assets/index.js +1 -1
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +5 -8
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +4 -5
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +9 -11
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +6 -8
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +2 -2
- package/lib/pages/NotificationsPageV2/notificationUtils.js +24 -29
- package/lib/pages/OldSitePage/IDashboardData.js +1 -1
- package/lib/pages/OldSitePage/OldSitePage.js +9 -10
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +4 -6
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +6 -10
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +3 -4
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -6
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +7 -11
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +6 -7
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +3 -4
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +7 -12
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +3 -4
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +3 -4
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +8 -8
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +4 -4
- package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +7 -9
- package/lib/pages/ProfilePage/Container.js +3 -4
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +8 -9
- package/lib/pages/ProfilePage/ProfilePage.js +13 -14
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +3 -4
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +6 -9
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +12 -13
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +6 -8
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +4 -6
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +3 -4
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +6 -9
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +3 -4
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +4 -5
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +3 -4
- package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
- package/lib/pages/SamplingsPage/NavigationDropdown.js +10 -11
- package/lib/pages/SamplingsPage/NewSamplingAction.js +8 -11
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +10 -8
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +3 -4
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -4
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +9 -11
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +4 -6
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +4 -5
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +8 -9
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +7 -8
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +9 -10
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +11 -12
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +8 -14
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +2 -2
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +10 -6
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +4 -6
- package/lib/pages/SamplingsPage/SamplingsPage.js +6 -8
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +4 -5
- package/lib/pages/SamplingsPage/index.js +2 -3
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +19 -35
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -4
- package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +3 -4
- package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +3 -4
- package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +2 -2
- package/lib/pages/SitePage/PollutionContributor/index.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +4 -6
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +6 -10
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +4 -4
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +5 -5
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +6 -10
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -6
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +7 -11
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +7 -8
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +7 -12
- package/lib/pages/SitePage/SamplingParameters/body/Body.js +4 -5
- package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +4 -6
- package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +9 -8
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +4 -4
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +7 -9
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +3 -4
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +3 -4
- package/lib/pages/SitePage/SitePage.js +10 -11
- package/lib/pages/UploadLabResult/index.js +3 -4
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +4 -5
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +5 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +7 -12
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +4 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +5 -7
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +3 -4
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +5 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +3 -4
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +5 -5
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +3 -3
- package/lib/pages/UtilityDashboardPage/TopBar/constants.js +3 -4
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +5 -7
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +7 -15
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +2 -3
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +3 -4
- package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +4 -5
- package/lib/pages/WbeDashboard/ExpandableComponent.js +3 -4
- package/lib/pages/WbeDashboard/GraphWrapper.js +5 -6
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +2 -3
- package/lib/pages/WbeDashboard/SearchInput.js +3 -4
- package/lib/pages/WbeDashboard/SummaryGraph.js +3 -4
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +2 -2
- package/lib/pages/WbeDashboard/Tabs.js +3 -3
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +8 -9
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +4 -5
- package/lib/pages/WwtpPage/DashboardCard.js +6 -7
- package/lib/pages/WwtpPage/DischargePatternCard.js +4 -6
- package/lib/pages/WwtpPage/InletsCard/InletsBar.js +4 -5
- package/lib/pages/WwtpPage/InletsCard/InletsCard.js +4 -5
- package/lib/pages/WwtpPage/InletsCard/index.js +3 -4
- package/lib/pages/WwtpPage/Map.js +3 -4
- package/lib/pages/WwtpPage/OrganicCard.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +5 -6
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
- package/lib/pages/WwtpPage/PredictionCard.js +3 -4
- package/lib/pages/WwtpPage/TrendCard.js +3 -4
- package/lib/pages/WwtpPage/UpgradeBox.js +4 -5
- package/lib/pages/WwtpPage/WwtpPage.js +4 -5
- package/lib/pages/WwtpPage/WwtpPageContainer.js +3 -4
- package/lib/pages/WwtpPage/index.js +3 -4
- package/lib/providers/Slideshow/SlideshowContext.js +2 -3
- package/lib/providers/Slideshow/SlideshowProvider.js +3 -5
- package/lib/providers/Slideshow/SlideshowRunner.js +3 -4
- package/lib/providers/UrlHistory/UrlHistoryContext.js +3 -4
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +3 -5
- package/lib/providers/UrlHistory/index.js +2 -2
- package/lib/providers/UrlHistory/useLastVisited.js +3 -4
- package/lib/react-app-env.d.js +1 -1
- package/lib/store/ImportGis/action.js +1 -1
- package/lib/store/ImportGis/actionTypes.js +4 -5
- package/lib/store/ImportGis/actionsCreator.js +1 -1
- package/lib/store/ImportGis/models/gisImports.js +1 -1
- package/lib/store/ImportGis/reducer.js +2 -2
- package/lib/store/WBE/actionTypes.js +2 -3
- package/lib/store/WBE/actions.js +1 -1
- package/lib/store/WBE/models/IAreaWBE.js +1 -1
- package/lib/store/WBE/models/IWBE.js +1 -1
- package/lib/store/WBE/models/IWBEState.js +1 -1
- package/lib/store/WBE/reducer.js +2 -2
- package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +2 -3
- package/lib/store/WWTPDashboard/types.js +1 -1
- package/lib/store/areas/actionTypes.js +4 -7
- package/lib/store/areas/actions.js +2 -2
- package/lib/store/areas/models/IArea.js +1 -1
- package/lib/store/areas/models/IAreasState.js +1 -1
- package/lib/store/areas/reducer.js +1 -1
- package/lib/store/context/actionTypes.js +3 -5
- package/lib/store/context/actions.js +1 -1
- package/lib/store/context/contextMiddlewares.js +2 -3
- package/lib/store/context/models/INavContext.js +1 -1
- package/lib/store/context/models/INavContextState.js +1 -1
- package/lib/store/context/reducer.js +2 -2
- package/lib/store/dashboard/dashboardSlice.js +2 -3
- package/lib/store/dashboard/periodType.js +1 -1
- package/lib/store/edges/actionTypes.js +5 -9
- package/lib/store/edges/actions.js +2 -2
- package/lib/store/edges/models/IEdge.js +1 -1
- package/lib/store/edges/models/IEdgesState.js +1 -1
- package/lib/store/edges/reducer.js +1 -1
- package/lib/store/events/actionTypes.js +17 -33
- package/lib/store/events/actions.js +2 -2
- package/lib/store/events/models/IEvent.js +1 -1
- package/lib/store/events/models/IEventsState.js +1 -1
- package/lib/store/events/models/ISource.js +1 -1
- package/lib/store/events/reducer.js +1 -1
- package/lib/store/filters/IFilter.js +1 -1
- package/lib/store/filters/IFilterItem.js +1 -1
- package/lib/store/global/actionTypes.js +11 -21
- package/lib/store/global/actions.js +1 -1
- package/lib/store/global/models/IGlobalState.js +1 -1
- package/lib/store/global/reducer.js +1 -1
- package/lib/store/permissions/permissionsSlice.js +2 -3
- package/lib/store/points/actionTypes.js +3 -5
- package/lib/store/points/actions.js +2 -2
- package/lib/store/points/models/IGroup.js +1 -1
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/store/points/models/IPointsState.js +1 -1
- package/lib/store/points/reducer.js +1 -1
- package/lib/store/rootActionTypes.js +2 -3
- package/lib/store/rootActions.js +1 -1
- package/lib/store/rootReducer.js +2 -3
- package/lib/store/rootStore.js +2 -2
- package/lib/store/samplings/action.js +1 -1
- package/lib/store/samplings/actionTypes.js +4 -5
- package/lib/store/samplings/actionsCreator.js +1 -1
- package/lib/store/samplings/models/Samplings.js +1 -1
- package/lib/store/samplings/reducer.js +1 -1
- package/lib/styles/StylesLayout.js +3 -4
- package/lib/styles/theme/theme.js +4 -7
- package/lib/test/mocks/browser.js +2 -3
- package/lib/test/test-utils.js +2 -2
- package/lib/ui-kit/Button/Button.js +5 -7
- package/lib/ui-kit/Button/Button.test.js +6 -7
- package/lib/ui-kit/Button/ButtonUtils.js +1 -1
- package/lib/ui-kit/Checkbox/Checkbox.js +4 -6
- package/lib/ui-kit/ContentCard/ContentCard.js +5 -6
- package/lib/ui-kit/Dashboard/Dashboard.js +7 -9
- package/lib/ui-kit/Dashboard/index.js +3 -4
- package/lib/ui-kit/DropDown/DropDown.js +3 -3
- package/lib/ui-kit/DropDown/DropDown.test.js +2 -2
- package/lib/ui-kit/DropDown/DropDownItem.js +4 -6
- package/lib/ui-kit/DropDown/DropdownToggle.js +3 -4
- package/lib/ui-kit/EmptyState/EmptyState.js +4 -5
- package/lib/ui-kit/IconAction/IconAction.js +3 -4
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +6 -7
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +14 -6
- package/lib/ui-kit/InletsPie/InletsPie.js +3 -4
- package/lib/ui-kit/InletsPie/index.js +3 -4
- package/lib/ui-kit/InletsPie/options.js +3 -5
- package/lib/ui-kit/KandoList/KandoList.js +2 -3
- package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.js +3 -4
- package/lib/ui-kit/KandoTable/KandoTable.test.js +6 -6
- package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
- package/lib/ui-kit/Layout/Layout.js +3 -4
- package/lib/ui-kit/MobileInput/MobileInput.js +8 -4
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +2 -2
- package/lib/ui-kit/ModalConfirmation/index.js +2 -3
- package/lib/ui-kit/OrganicEvents/GaugeChart.js +4 -5
- package/lib/ui-kit/OrganicEvents/OrganicEvents.js +3 -4
- package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +3 -4
- package/lib/ui-kit/OrganicEvents/TextInfo.js +3 -4
- package/lib/ui-kit/OrganicEvents/index.js +3 -4
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +3 -4
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +4 -5
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +2 -3
- package/lib/ui-kit/ScoreGauge/ScoreGauge.js +5 -8
- package/lib/ui-kit/ScoreGauge/constant.js +2 -3
- package/lib/ui-kit/ScoreGauge/index.js +3 -4
- package/lib/ui-kit/TimeLineChart/TrendChart.js +3 -4
- package/lib/ui-kit/TimeLineChart/index.js +3 -4
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +4 -6
- package/lib/ui-kit/Tooltip/Tooltip.js +2 -2
- package/lib/ui-kit/index.js +1 -1
- package/lib/ui-kit/kandoStepper/KandoStepper.js +5 -6
- package/lib/ui-kit/siteName/SiteName.js +3 -4
- package/lib/utilities/ActionUtility.js +1 -1
- package/lib/utilities/Alert.js +3 -4
- package/lib/utilities/Analytics.js +2 -2
- package/lib/utilities/Array.js +1 -1
- package/lib/utilities/Enum.js +1 -1
- package/lib/utilities/ErrorBoundary.js +2 -3
- package/lib/utilities/File.js +2 -2
- package/lib/utilities/GetDir.js +3 -4
- package/lib/utilities/KandoDate.js +1 -1
- package/lib/utilities/KandoModal.js +3 -5
- package/lib/utilities/LocalStorage.js +4 -4
- package/lib/utilities/ThousandsToK.js +2 -2
- package/lib/utilities/TimeFormat.js +4 -6
- package/lib/utilities/Truncate.js +5 -7
- package/lib/utilities/edgesMath.js +2 -2
- package/lib/utilities/i18n.js +3 -4
- package/lib/utilities/kql.js +3 -3
- package/lib/utilities/map/icons.js +2 -2
- package/lib/utilities/polylinedecorator.js +2 -2
- package/lib/utilities/scoreToData.js +7 -7
- package/lib/utilities/scoreToData.test.js +1 -1
- package/lib/utilities/time.js +3 -4
- package/lib/utilities/uploadToS3.js +2 -2
- package/lib/utilities/urls.js +50 -51
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -9,8 +10,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
10
|
var _PointMarker = _interopRequireDefault(require("./PointMarker"));
|
|
10
11
|
var _PointUtils = require("./PointUtils");
|
|
11
12
|
var _reactRedux = require("react-redux");
|
|
12
|
-
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); }
|
|
13
|
-
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; }
|
|
14
13
|
const PointMarkers = props => {
|
|
15
14
|
const {
|
|
16
15
|
points,
|
|
@@ -120,4 +119,4 @@ const PointMarkers = props => {
|
|
|
120
119
|
})));
|
|
121
120
|
};
|
|
122
121
|
exports.PointMarkers = PointMarkers;
|
|
123
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRNYXJrZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1BvaW50VXRpbHMiLCJfcmVhY3RSZWR1eCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJQb2ludE1hcmtlcnMiLCJwcm9wcyIsInBvaW50cyIsIm1hcCIsImZhY3Rvcmllc0dyb3VwIiwid3d0cHNHcm91cCIsImNvbGxlY3RvcnNHcm91cCIsInJlcmVuZGVyIiwiZm9yRXZlbnRzVmlldyIsImlzUG9pbnRCZWxvbmdUb0dyb3VwVHlwZXMiLCJwb2ludCIsInBvaW50SXNXV1RQIiwicG9pbnRJc0ZhY3RvcnkiLCJncm91cCIsInR5cGUiLCJoYXNfZGV2aWNlIiwiZmlsdGVyU3RhdGVtZW50IiwiZmlsdGVyZWRQb2ludHMiLCJmaWx0ZXIiLCJldmVudHNEYXRhIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImV2ZW50c19kYXRhIiwidXNlckluZm8iLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsImxheWVyc1RvUmVtb3ZlIiwic2V0TGF5ZXJzVG9SZW1vdmUiLCJ1c2VTdGF0ZSIsInJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIiLCJ1bmlxZUlkcyIsImxvY2FsTGF5ZXJzVG9SZW1vdmUiLCJyZWZyZXNoQ2x1c3RlcnMiLCJmb3JFYWNoIiwiaWQiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJrYW5kb19vYmplY3RfaWQiLCJwdXNoIiwicmVtb3ZlTGF5ZXJzIiwiYWRkRXZlbnRQb2ludHNUb0NsdXN0ZXIiLCJsYXllcnNUb0RyYXciLCJsYXllcnNJZHMiLCJsYXllciIsIlNldCIsImZpbmQiLCJiaW5kUG9wdXBUb01hcmtlciIsImZsb3dfcmF0ZV91bml0IiwiYWRkTGF5ZXJzIiwibWFrZVN1cmVUaGVyZUFyZU5vRHVwbGljYXRlcyIsImZvY3VzZWRFdmVudCIsIm9ic0lkcyIsIm9ic2VydmF0aW9ucyIsIm9icyIsInBvaW50X2lkIiwidXNlRWZmZWN0IiwiYWRkTGF5ZXJHcm91cCIsInJlbW92ZUxheWVyR3JvdXAiLCJpc0ZldGNoaW5nIiwiY3JlYXRlRWxlbWVudCIsImhhc0xheWVyIiwibGVuZ3RoIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJsYXllckdyb3VwIiwiZmxvd1JhdGVVbml0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgUG9pbnRNYXJrZXIgZnJvbSAnLi9Qb2ludE1hcmtlcic7XG5pbXBvcnQge1xuICBhZGRMYXllckdyb3VwLFxuICBiaW5kUG9wdXBUb01hcmtlcixcbiAgcmVtb3ZlTGF5ZXJHcm91cCxcbiAgcG9pbnRJc0ZhY3RvcnksXG4gIHBvaW50SXNXV1RQLFxufSBmcm9tICcuL1BvaW50VXRpbHMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuXG50eXBlIFByb3BzID0ge1xuICBtYXA6IGFueTtcbiAgcG9pbnRzOiBhbnk7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50czogYm9vbGVhbjtcbiAgcmVyZW5kZXI6IHN0cmluZztcbiAgZmFjdG9yaWVzR3JvdXA6IGFueTtcbiAgd3d0cHNHcm91cDogYW55O1xuICBjb2xsZWN0b3JzR3JvdXA6IGFueTtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgcG9pbnRzLFxuICAgIG1hcCxcbiAgICBmYWN0b3JpZXNHcm91cCxcbiAgICB3d3Rwc0dyb3VwLFxuICAgIGNvbGxlY3RvcnNHcm91cCxcbiAgICByZXJlbmRlcixcbiAgICBmb3JFdmVudHNWaWV3ID0gZmFsc2UsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBpc1BvaW50QmVsb25nVG9Hcm91cFR5cGVzID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgcG9pbnRJc1dXVFAocG9pbnQpIHx8XG4gICAgICBwb2ludElzRmFjdG9yeShwb2ludCkgfHxcbiAgICAgIChwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpDb2xsZWN0b3JzJyAmJiBwb2ludC5oYXNfZGV2aWNlKSB8fFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6UHVtcFN0YXRpb24nXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBmaWx0ZXJTdGF0ZW1lbnQgPSAocG9pbnQpID0+IHtcbiAgICByZXR1cm4gaXNQb2ludEJlbG9uZ1RvR3JvdXBUeXBlcyhwb2ludCk7XG4gIH07XG5cbiAgY29uc3QgZmlsdGVyZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50cy5maWx0ZXIoKHBvaW50OiBJUG9pbnQpID0+IGZpbHRlclN0YXRlbWVudChwb2ludCkpO1xuICB9O1xuXG4gIGNvbnN0IGV2ZW50c0RhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5ldmVudHNfZGF0YSxcbiAgKTtcblxuICBjb25zdCB1c2VySW5mbyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvKTtcblxuICBjb25zdCBbbGF5ZXJzVG9SZW1vdmUsIHNldExheWVyc1RvUmVtb3ZlXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG5cbiAgY29uc3QgcmVtb3ZlRXZlbnRQb2ludHNGcm9tQ2x1c3RlciA9ICh1bmlxZUlkcywgbG9jYWxMYXllcnNUb1JlbW92ZSkgPT4ge1xuICAgIGZhY3Rvcmllc0dyb3VwLnJlZnJlc2hDbHVzdGVycygpO1xuXG4gICAgdW5pcWVJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbWFwLl9sYXllcnMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1hcC5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdQb2ludCcgJiZcbiAgICAgICAgICBtYXAuX2xheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0X2lkID09PSBpZFxuICAgICAgICApIHtcbiAgICAgICAgICBsb2NhbExheWVyc1RvUmVtb3ZlLnB1c2gobWFwLl9sYXllcnNbcHJvcGVydHldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TGF5ZXJzVG9SZW1vdmUobG9jYWxMYXllcnNUb1JlbW92ZSk7XG4gICAgZmFjdG9yaWVzR3JvdXAucmVtb3ZlTGF5ZXJzKGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICB9O1xuXG4gIGNvbnN0IGFkZEV2ZW50UG9pbnRzVG9DbHVzdGVyID0gKCkgPT4ge1xuICAgIGxldCBsYXllcnNUb0RyYXcgPSBbXTtcbiAgICBsZXQgbGF5ZXJzSWRzID0gbGF5ZXJzVG9SZW1vdmUubWFwKChsYXllcikgPT4gbGF5ZXIua2FuZG9fb2JqZWN0X2lkKTtcbiAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChsYXllcnNJZHMpXTtcbiAgICB1bmlxZUlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgbGF5ZXJzVG9EcmF3LnB1c2goXG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLmZpbmQoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQgPT09IGlkKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsYXllcnNUb0RyYXcuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgIGxldCBwb2ludCA9IHBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuaWQgPT09IGxheWVyLmthbmRvX29iamVjdF9pZCk7XG4gICAgICBwb2ludCAmJiBiaW5kUG9wdXBUb01hcmtlcihwb2ludCwgbGF5ZXIsIHVzZXJJbmZvLmZsb3dfcmF0ZV91bml0KTtcbiAgICB9KTtcblxuICAgIGZhY3Rvcmllc0dyb3VwLmFkZExheWVycyhsYXllcnNUb0RyYXcpO1xuICB9O1xuXG4gIGNvbnN0IG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMgPSAoKSA9PiB7XG4gICAgbGV0IGxvY2FsTGF5ZXJzVG9SZW1vdmUgPSBbXTtcblxuICAgIGlmIChldmVudHNEYXRhLmZvY3VzZWRFdmVudCkge1xuICAgICAgbGV0IG9ic0lkcyA9IGV2ZW50c0RhdGEuZm9jdXNlZEV2ZW50Lm9ic2VydmF0aW9ucy5tYXAoXG4gICAgICAgIChvYnMpID0+IG9icy5wb2ludF9pZCxcbiAgICAgICk7XG4gICAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChvYnNJZHMpXTtcbiAgICAgIHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRFdmVudFBvaW50c1RvQ2x1c3RlcigpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXApIHtcbiAgICAgIGlmIChmb3JFdmVudHNWaWV3KSB7XG4gICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlcmVuZGVyKSB7XG4gICAgICAgICAgY2FzZSAnWExhcmdlJzpcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgd3d0cHNHcm91cCk7XG4gICAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0xhcmdlJzpcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgd3d0cHNHcm91cCk7XG4gICAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ01MYXJnZSc6XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgZmFjdG9yaWVzR3JvdXApO1xuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIHd3dHBzR3JvdXApO1xuICAgICAgICAgICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdNZWRpdW0nOlxuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnU21hbGwnOlxuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVyZW5kZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMoKTtcbiAgfSwgW2V2ZW50c0RhdGEuZm9jdXNlZEV2ZW50LCBldmVudHNEYXRhLmlzRmV0Y2hpbmcsIHJlcmVuZGVyXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHshbWFwLmhhc0xheWVyKGZhY3Rvcmllc0dyb3VwKSAmJlxuICAgICAgICAhbWFwLmhhc0xheWVyKHd3dHBzR3JvdXApICYmXG4gICAgICAgICFtYXAuaGFzTGF5ZXIoY29sbGVjdG9yc0dyb3VwKSAmJlxuICAgICAgICBwb2ludHMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgIGZpbHRlcmVkUG9pbnRzKCkubWFwKFxuICAgICAgICAgIChwb2ludDogSVBvaW50KSA9PlxuICAgICAgICAgICAgcG9pbnQubGF0aXR1ZGUgJiZcbiAgICAgICAgICAgIHBvaW50LmxvbmdpdHVkZSAmJiAoXG4gICAgICAgICAgICAgIDxQb2ludE1hcmtlclxuICAgICAgICAgICAgICAgIG1hcD17bWFwfVxuICAgICAgICAgICAgICAgIHBvaW50PXtwb2ludH1cbiAgICAgICAgICAgICAgICBrZXk9e3BvaW50LmlkfVxuICAgICAgICAgICAgICAgIHJlcmVuZGVyPXtyZXJlbmRlcn1cbiAgICAgICAgICAgICAgICBsYXllckdyb3VwPXtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkZhY3RvcnknXG4gICAgICAgICAgICAgICAgICAgID8gZmFjdG9yaWVzR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgOiBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnXG4gICAgICAgICAgICAgICAgICAgID8gd3d0cHNHcm91cFxuICAgICAgICAgICAgICAgICAgICA6IGNvbGxlY3RvcnNHcm91cFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmbG93UmF0ZVVuaXQ9e3VzZXJJbmZvLmZsb3dfcmF0ZV91bml0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFPQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFBMEMsU0FBQUsseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVAsd0JBQUFXLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FB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
|
|
122
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRNYXJrZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1BvaW50VXRpbHMiLCJfcmVhY3RSZWR1eCIsIlBvaW50TWFya2VycyIsInByb3BzIiwicG9pbnRzIiwibWFwIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwicmVyZW5kZXIiLCJmb3JFdmVudHNWaWV3IiwiaXNQb2ludEJlbG9uZ1RvR3JvdXBUeXBlcyIsInBvaW50IiwicG9pbnRJc1dXVFAiLCJwb2ludElzRmFjdG9yeSIsImdyb3VwIiwidHlwZSIsImhhc19kZXZpY2UiLCJmaWx0ZXJTdGF0ZW1lbnQiLCJmaWx0ZXJlZFBvaW50cyIsImZpbHRlciIsImV2ZW50c0RhdGEiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwiZXZlbnRzX2RhdGEiLCJ1c2VySW5mbyIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwibGF5ZXJzVG9SZW1vdmUiLCJzZXRMYXllcnNUb1JlbW92ZSIsInVzZVN0YXRlIiwicmVtb3ZlRXZlbnRQb2ludHNGcm9tQ2x1c3RlciIsInVuaXFlSWRzIiwibG9jYWxMYXllcnNUb1JlbW92ZSIsInJlZnJlc2hDbHVzdGVycyIsImZvckVhY2giLCJpZCIsInByb3BlcnR5IiwiX2xheWVycyIsImthbmRvX29iamVjdCIsImthbmRvX29iamVjdF9pZCIsInB1c2giLCJyZW1vdmVMYXllcnMiLCJhZGRFdmVudFBvaW50c1RvQ2x1c3RlciIsImxheWVyc1RvRHJhdyIsImxheWVyc0lkcyIsImxheWVyIiwiU2V0IiwiZmluZCIsImJpbmRQb3B1cFRvTWFya2VyIiwiZmxvd19yYXRlX3VuaXQiLCJhZGRMYXllcnMiLCJtYWtlU3VyZVRoZXJlQXJlTm9EdXBsaWNhdGVzIiwiZm9jdXNlZEV2ZW50Iiwib2JzSWRzIiwib2JzZXJ2YXRpb25zIiwib2JzIiwicG9pbnRfaWQiLCJ1c2VFZmZlY3QiLCJhZGRMYXllckdyb3VwIiwicmVtb3ZlTGF5ZXJHcm91cCIsImlzRmV0Y2hpbmciLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImhhc0xheWVyIiwibGVuZ3RoIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJrZXkiLCJsYXllckdyb3VwIiwiZmxvd1JhdGVVbml0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgUG9pbnRNYXJrZXIgZnJvbSAnLi9Qb2ludE1hcmtlcic7XG5pbXBvcnQge1xuICBhZGRMYXllckdyb3VwLFxuICBiaW5kUG9wdXBUb01hcmtlcixcbiAgcmVtb3ZlTGF5ZXJHcm91cCxcbiAgcG9pbnRJc0ZhY3RvcnksXG4gIHBvaW50SXNXV1RQLFxufSBmcm9tICcuL1BvaW50VXRpbHMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuXG50eXBlIFByb3BzID0ge1xuICBtYXA6IGFueTtcbiAgcG9pbnRzOiBhbnk7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50czogYm9vbGVhbjtcbiAgcmVyZW5kZXI6IHN0cmluZztcbiAgZmFjdG9yaWVzR3JvdXA6IGFueTtcbiAgd3d0cHNHcm91cDogYW55O1xuICBjb2xsZWN0b3JzR3JvdXA6IGFueTtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgcG9pbnRzLFxuICAgIG1hcCxcbiAgICBmYWN0b3JpZXNHcm91cCxcbiAgICB3d3Rwc0dyb3VwLFxuICAgIGNvbGxlY3RvcnNHcm91cCxcbiAgICByZXJlbmRlcixcbiAgICBmb3JFdmVudHNWaWV3ID0gZmFsc2UsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBpc1BvaW50QmVsb25nVG9Hcm91cFR5cGVzID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgcG9pbnRJc1dXVFAocG9pbnQpIHx8XG4gICAgICBwb2ludElzRmFjdG9yeShwb2ludCkgfHxcbiAgICAgIChwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpDb2xsZWN0b3JzJyAmJiBwb2ludC5oYXNfZGV2aWNlKSB8fFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6UHVtcFN0YXRpb24nXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBmaWx0ZXJTdGF0ZW1lbnQgPSAocG9pbnQpID0+IHtcbiAgICByZXR1cm4gaXNQb2ludEJlbG9uZ1RvR3JvdXBUeXBlcyhwb2ludCk7XG4gIH07XG5cbiAgY29uc3QgZmlsdGVyZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHBvaW50cy5maWx0ZXIoKHBvaW50OiBJUG9pbnQpID0+IGZpbHRlclN0YXRlbWVudChwb2ludCkpO1xuICB9O1xuXG4gIGNvbnN0IGV2ZW50c0RhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5ldmVudHNfZGF0YSxcbiAgKTtcblxuICBjb25zdCB1c2VySW5mbyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvKTtcblxuICBjb25zdCBbbGF5ZXJzVG9SZW1vdmUsIHNldExheWVyc1RvUmVtb3ZlXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG5cbiAgY29uc3QgcmVtb3ZlRXZlbnRQb2ludHNGcm9tQ2x1c3RlciA9ICh1bmlxZUlkcywgbG9jYWxMYXllcnNUb1JlbW92ZSkgPT4ge1xuICAgIGZhY3Rvcmllc0dyb3VwLnJlZnJlc2hDbHVzdGVycygpO1xuXG4gICAgdW5pcWVJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbWFwLl9sYXllcnMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1hcC5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdQb2ludCcgJiZcbiAgICAgICAgICBtYXAuX2xheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0X2lkID09PSBpZFxuICAgICAgICApIHtcbiAgICAgICAgICBsb2NhbExheWVyc1RvUmVtb3ZlLnB1c2gobWFwLl9sYXllcnNbcHJvcGVydHldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TGF5ZXJzVG9SZW1vdmUobG9jYWxMYXllcnNUb1JlbW92ZSk7XG4gICAgZmFjdG9yaWVzR3JvdXAucmVtb3ZlTGF5ZXJzKGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICB9O1xuXG4gIGNvbnN0IGFkZEV2ZW50UG9pbnRzVG9DbHVzdGVyID0gKCkgPT4ge1xuICAgIGxldCBsYXllcnNUb0RyYXcgPSBbXTtcbiAgICBsZXQgbGF5ZXJzSWRzID0gbGF5ZXJzVG9SZW1vdmUubWFwKChsYXllcikgPT4gbGF5ZXIua2FuZG9fb2JqZWN0X2lkKTtcbiAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChsYXllcnNJZHMpXTtcbiAgICB1bmlxZUlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgbGF5ZXJzVG9EcmF3LnB1c2goXG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLmZpbmQoKGxheWVyKSA9PiBsYXllci5rYW5kb19vYmplY3RfaWQgPT09IGlkKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsYXllcnNUb0RyYXcuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgIGxldCBwb2ludCA9IHBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuaWQgPT09IGxheWVyLmthbmRvX29iamVjdF9pZCk7XG4gICAgICBwb2ludCAmJiBiaW5kUG9wdXBUb01hcmtlcihwb2ludCwgbGF5ZXIsIHVzZXJJbmZvLmZsb3dfcmF0ZV91bml0KTtcbiAgICB9KTtcblxuICAgIGZhY3Rvcmllc0dyb3VwLmFkZExheWVycyhsYXllcnNUb0RyYXcpO1xuICB9O1xuXG4gIGNvbnN0IG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMgPSAoKSA9PiB7XG4gICAgbGV0IGxvY2FsTGF5ZXJzVG9SZW1vdmUgPSBbXTtcblxuICAgIGlmIChldmVudHNEYXRhLmZvY3VzZWRFdmVudCkge1xuICAgICAgbGV0IG9ic0lkcyA9IGV2ZW50c0RhdGEuZm9jdXNlZEV2ZW50Lm9ic2VydmF0aW9ucy5tYXAoXG4gICAgICAgIChvYnMpID0+IG9icy5wb2ludF9pZCxcbiAgICAgICk7XG4gICAgICBsZXQgdW5pcWVJZHMgPSBbLi4ubmV3IFNldChvYnNJZHMpXTtcbiAgICAgIHJlbW92ZUV2ZW50UG9pbnRzRnJvbUNsdXN0ZXIodW5pcWVJZHMsIGxvY2FsTGF5ZXJzVG9SZW1vdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRFdmVudFBvaW50c1RvQ2x1c3RlcigpO1xuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtYXApIHtcbiAgICAgIGlmIChmb3JFdmVudHNWaWV3KSB7XG4gICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlcmVuZGVyKSB7XG4gICAgICAgICAgY2FzZSAnWExhcmdlJzpcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgd3d0cHNHcm91cCk7XG4gICAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0xhcmdlJzpcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBmYWN0b3JpZXNHcm91cCk7XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgd3d0cHNHcm91cCk7XG4gICAgICAgICAgICByZW1vdmVMYXllckdyb3VwKG1hcCwgY29sbGVjdG9yc0dyb3VwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ01MYXJnZSc6XG4gICAgICAgICAgICBhZGRMYXllckdyb3VwKG1hcCwgZmFjdG9yaWVzR3JvdXApO1xuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIHd3dHBzR3JvdXApO1xuICAgICAgICAgICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGNvbGxlY3RvcnNHcm91cCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdNZWRpdW0nOlxuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnU21hbGwnOlxuICAgICAgICAgICAgYWRkTGF5ZXJHcm91cChtYXAsIGZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCB3d3Rwc0dyb3VwKTtcbiAgICAgICAgICAgIGFkZExheWVyR3JvdXAobWFwLCBjb2xsZWN0b3JzR3JvdXApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVyZW5kZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIG1ha2VTdXJlVGhlcmVBcmVOb0R1cGxpY2F0ZXMoKTtcbiAgfSwgW2V2ZW50c0RhdGEuZm9jdXNlZEV2ZW50LCBldmVudHNEYXRhLmlzRmV0Y2hpbmcsIHJlcmVuZGVyXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHshbWFwLmhhc0xheWVyKGZhY3Rvcmllc0dyb3VwKSAmJlxuICAgICAgICAhbWFwLmhhc0xheWVyKHd3dHBzR3JvdXApICYmXG4gICAgICAgICFtYXAuaGFzTGF5ZXIoY29sbGVjdG9yc0dyb3VwKSAmJlxuICAgICAgICBwb2ludHMubGVuZ3RoICE9PSAwICYmXG4gICAgICAgIGZpbHRlcmVkUG9pbnRzKCkubWFwKFxuICAgICAgICAgIChwb2ludDogSVBvaW50KSA9PlxuICAgICAgICAgICAgcG9pbnQubGF0aXR1ZGUgJiZcbiAgICAgICAgICAgIHBvaW50LmxvbmdpdHVkZSAmJiAoXG4gICAgICAgICAgICAgIDxQb2ludE1hcmtlclxuICAgICAgICAgICAgICAgIG1hcD17bWFwfVxuICAgICAgICAgICAgICAgIHBvaW50PXtwb2ludH1cbiAgICAgICAgICAgICAgICBrZXk9e3BvaW50LmlkfVxuICAgICAgICAgICAgICAgIHJlcmVuZGVyPXtyZXJlbmRlcn1cbiAgICAgICAgICAgICAgICBsYXllckdyb3VwPXtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkZhY3RvcnknXG4gICAgICAgICAgICAgICAgICAgID8gZmFjdG9yaWVzR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgOiBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnXG4gICAgICAgICAgICAgICAgICAgID8gd3d0cHNHcm91cFxuICAgICAgICAgICAgICAgICAgICA6IGNvbGxlY3RvcnNHcm91cFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmbG93UmF0ZVVuaXQ9e3VzZXJJbmZvLmZsb3dfcmF0ZV91bml0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsWUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBT0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBY08sTUFBTUssWUFBNkIsR0FBSUMsS0FBSyxJQUFLO0VBQ3RELE1BQU07SUFDSkMsTUFBTTtJQUNOQyxHQUFHO0lBQ0hDLGNBQWM7SUFDZEMsVUFBVTtJQUNWQyxlQUFlO0lBQ2ZDLFFBQVE7SUFDUkMsYUFBYSxHQUFHO0VBQ2xCLENBQUMsR0FBR1AsS0FBSztFQUVULE1BQU1RLHlCQUF5QixHQUFJQyxLQUFhLElBQUs7SUFDbkQsT0FDRSxJQUFBQyx1QkFBVyxFQUFDRCxLQUFLLENBQUMsSUFDbEIsSUFBQUUsMEJBQWMsRUFBQ0YsS0FBSyxDQUFDLElBQ3BCQSxLQUFLLENBQUNHLEtBQUssQ0FBQ0MsSUFBSSxLQUFLLG9CQUFvQixJQUFJSixLQUFLLENBQUNLLFVBQVcsSUFDL0RMLEtBQUssQ0FBQ0csS0FBSyxDQUFDQyxJQUFJLEtBQUsscUJBQXFCO0VBRTlDLENBQUM7RUFFRCxNQUFNRSxlQUFlLEdBQUlOLEtBQUssSUFBSztJQUNqQyxPQUFPRCx5QkFBeUIsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3pDLENBQUM7RUFFRCxNQUFNTyxjQUFjLEdBQUdBLENBQUEsS0FBTTtJQUMzQixPQUFPZixNQUFNLENBQUNnQixNQUFN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WUFDVixJQUFBbUQseUJBQWEsRUFBQ3RELEdBQUcsRUFBRUMsY0FBYyxDQUFDO1lBQ2xDLElBQUFxRCx5QkFBYSxFQUFDdEQsR0FBRyxFQUFFRSxVQUFVLENBQUM7WUFDOUIsSUFBQW9ELHlCQUFhLEVBQUN0RCxHQUFHLEVBQUVHLGVBQWUsQ0FBQztZQUNuQztVQUNGO1lBQ0U7UUFDSjtNQUNGO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7RUFFZCxJQUFBaUQsZ0JBQVMsRUFBQyxNQUFNO0lBQ2ROLDRCQUE0QixDQUFDLENBQUM7RUFDaEMsQ0FBQyxFQUFFLENBQUMvQixVQUFVLENBQUNnQyxZQUFZLEVBQUVoQyxVQUFVLENBQUN3QyxVQUFVLEVBQUVwRCxRQUFRLENBQUMsQ0FBQztFQUM5RCxvQkFDRWQsTUFBQSxDQUFBbUUsT0FBQSxDQUFBQyxhQUFBLGNBQ0csQ0FBQzFELEdBQUcsQ0FBQzJELFFBQVEsQ0FBQzFELGNBQWMsQ0FBQyxJQUM1QixDQUFDRCxHQUFHLENBQUMyRCxRQUFRLENBQUN6RCxVQUFVLENBQUMsSUFDekIsQ0FBQ0YsR0FBRyxDQUFDMkQsUUFBUSxDQUFDeEQsZUFBZSxDQUFDLElBQzlCSixNQUFNLENBQUM2RCxNQUFNLEtBQUssQ0FBQyxJQUNuQjlDLGNBQWMsQ0FBQyxDQUFDLENBQUNkLEdBQUcsQ0FDakJPLEtBQWEsSUFDWkEsS0FBSyxDQUFDc0QsUUFBUSxJQUNkdEQsS0FBSyxDQUFDdUQsU0FBUyxpQkFDYnhFLE1BQUEsQ0FBQW1FLE9BQUEsQ0FBQUMsYUFBQSxDQUFDakUsWUFBQSxDQUFBZ0UsT0FBVztJQUNWekQsR0FBRyxFQUFFQSxHQUFJO0lBQ1RPLEtBQUssRUFBRUEsS0FBTTtJQUNid0QsR0FBRyxFQUFFeEQsS0FBSyxDQUFDd0IsRUFBRztJQUNkM0IsUUFBUSxFQUFFQSxRQUFTO0lBQ25CNEQsVUFBVSxFQUNSekQsS0FBSyxDQUFDRyxLQUFLLENBQUNDLElBQUksS0FBSyxpQkFBaUIsR0FDbENWLGNBQWMsR0FDZE0sS0FBSyxDQUFDRyxLQUFLLENBQUNDLElBQUksS0FBSyxrQ0FBa0MsR0FDdkRULFVBQVUsR0FDVkMsZUFDTDtJQUNEOEQsWUFBWSxFQUFFN0MsUUFBUSxDQUFDeUI7RUFBZSxDQUN2QyxDQUVQLENBQ0MsQ0FBQztBQUVWLENBQUM7QUFBQ3FCLE9BQUEsQ0FBQXJFLFlBQUEsR0FBQUEsWUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
@@ -34,12 +34,12 @@ const isCollectorFocused = (point, event) => {
|
|
|
34
34
|
};
|
|
35
35
|
exports.isCollectorFocused = isCollectorFocused;
|
|
36
36
|
const buildManholeTooltipString = point => {
|
|
37
|
-
let string =
|
|
37
|
+
let string = `${point.group.name} `;
|
|
38
38
|
if (pointIsFactory(point)) {
|
|
39
|
-
string +=
|
|
40
|
-
string +=
|
|
39
|
+
string += `<br/>Sector: ${point.group.sector_name}`;
|
|
40
|
+
string += `<br/>Water Consumption: ${point.group.water_discharge}`;
|
|
41
41
|
} else {
|
|
42
|
-
string =
|
|
42
|
+
string = `${point.name}`;
|
|
43
43
|
}
|
|
44
44
|
return string;
|
|
45
45
|
};
|
|
@@ -72,8 +72,11 @@ const createBubblePoint = function (markerLocation, point, map, hovered, layerGr
|
|
|
72
72
|
if (point.relatedEventsAmount) {
|
|
73
73
|
let pointCustomIcon = _leaflet.default.marker(markerLocation, {
|
|
74
74
|
icon: _leaflet.default.divIcon({
|
|
75
|
-
className:
|
|
76
|
-
|
|
75
|
+
className: `
|
|
76
|
+
${point.relatedEventsAmount >= 100 ? 'circle-events-amount circle-events-amount--tridigit' : 'circle-events-amount'}
|
|
77
|
+
${point.relatedEventsAmount > 2 ? 'alert-color' : ''}
|
|
78
|
+
`,
|
|
79
|
+
html: `<p>${point.relatedEventsAmount}</p>`,
|
|
77
80
|
iconAnchor: (0, _MapUtils.eventsCountIcon)(map._zoom).iconAnchor
|
|
78
81
|
}),
|
|
79
82
|
riseOnHover: false,
|
|
@@ -168,7 +171,7 @@ const standardBackground = function () {
|
|
|
168
171
|
});
|
|
169
172
|
};
|
|
170
173
|
exports.standardBackground = standardBackground;
|
|
171
|
-
const combinedFactoryIcon = [_leaflet.default.icon({
|
|
174
|
+
const combinedFactoryIcon = exports.combinedFactoryIcon = [_leaflet.default.icon({
|
|
172
175
|
iconUrl: _yellowCircle.default,
|
|
173
176
|
iconSize: [0, 0],
|
|
174
177
|
iconAnchor: [10.7, 33.7],
|
|
@@ -179,8 +182,7 @@ const combinedFactoryIcon = [_leaflet.default.icon({
|
|
|
179
182
|
iconAnchor: [5, 30],
|
|
180
183
|
popupAnchor: [0, -30]
|
|
181
184
|
})];
|
|
182
|
-
exports.
|
|
183
|
-
const combinedPumpStationIcon = [_leaflet.default.icon({
|
|
185
|
+
const combinedPumpStationIcon = exports.combinedPumpStationIcon = [_leaflet.default.icon({
|
|
184
186
|
iconUrl: _greenCircle.default,
|
|
185
187
|
iconSize: [0, 0],
|
|
186
188
|
iconAnchor: [10.7, 33.7],
|
|
@@ -191,15 +193,13 @@ const combinedPumpStationIcon = [_leaflet.default.icon({
|
|
|
191
193
|
iconAnchor: [7, 32],
|
|
192
194
|
popupAnchor: [0, -30]
|
|
193
195
|
})];
|
|
194
|
-
exports.
|
|
195
|
-
const combinedCollectorsIcon = [_leaflet.default.icon({
|
|
196
|
+
const combinedCollectorsIcon = exports.combinedCollectorsIcon = [_leaflet.default.icon({
|
|
196
197
|
iconUrl: _pinWater.default,
|
|
197
198
|
iconSize: [0, 0],
|
|
198
199
|
iconAnchor: [25, 50],
|
|
199
200
|
popupAnchor: [0, -30]
|
|
200
201
|
})];
|
|
201
|
-
exports.
|
|
202
|
-
const combinedWWTPIcon = [_leaflet.default.icon({
|
|
202
|
+
const combinedWWTPIcon = exports.combinedWWTPIcon = [_leaflet.default.icon({
|
|
203
203
|
iconUrl: _brightBlueCircle.default,
|
|
204
204
|
iconSize: [0, 0],
|
|
205
205
|
iconAnchor: [10.7, 33.7],
|
|
@@ -210,7 +210,6 @@ const combinedWWTPIcon = [_leaflet.default.icon({
|
|
|
210
210
|
iconAnchor: [8, 31],
|
|
211
211
|
popupAnchor: [0, -30]
|
|
212
212
|
})];
|
|
213
|
-
exports.combinedWWTPIcon = combinedWWTPIcon;
|
|
214
213
|
const selectedBackground = () => {
|
|
215
214
|
return _leaflet.default.icon({
|
|
216
215
|
iconUrl: _redPinRedShadow.default,
|
|
@@ -329,9 +328,51 @@ const createSamplingIcons = (markerLocation, event, point, map, hovered, layerGr
|
|
|
329
328
|
exports.createSamplingIcons = createSamplingIcons;
|
|
330
329
|
const popupContent = (obs, point) => {
|
|
331
330
|
if (obs === null) {
|
|
332
|
-
return
|
|
331
|
+
return `
|
|
332
|
+
<div class="event-popup">
|
|
333
|
+
<div class="popup-graph-icon popup-graph-icon-${point.id}">
|
|
334
|
+
<img src="${_lineChart.default}"/>
|
|
335
|
+
</div>
|
|
336
|
+
<div class="popup-content">
|
|
337
|
+
<h5 class="popup-content__site-name"><b>${point.group.name}</b></h5>
|
|
338
|
+
<hr/>
|
|
339
|
+
|
|
340
|
+
<div id="sector"></div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
`;
|
|
333
344
|
} else {
|
|
334
|
-
return
|
|
345
|
+
return `
|
|
346
|
+
<div class="event-popup">
|
|
347
|
+
<div class="popup-graph-icon popup-graph-icon-${obs.id}">
|
|
348
|
+
<img src="${_lineChart.default}"/>
|
|
349
|
+
</div>
|
|
350
|
+
<div class="popup-content">
|
|
351
|
+
<h5 class="popup-content__site-name"><b>${point.group.name}</b></h5>
|
|
352
|
+
<div class="popup-content__severity">
|
|
353
|
+
<p class="popup-content__severity-p">${_i18n.default.t(`events_overview.severity`)}</p>
|
|
354
|
+
<span class="${'popup-content__severity--' + obs.severity}">
|
|
355
|
+
<b class="popup-content__severity-b">
|
|
356
|
+
${_i18n.default.t(`events_overview.severities.${obs.severity}`)}
|
|
357
|
+
</b>
|
|
358
|
+
</span>
|
|
359
|
+
</div>
|
|
360
|
+
|
|
361
|
+
<hr class="popup-content__hr" />
|
|
362
|
+
|
|
363
|
+
<div class="popup-content__discharge-time">
|
|
364
|
+
<div>
|
|
365
|
+
<p class="popup-content__severity-p">${_i18n.default.t(`events_overview.first_seen`)}:</p>
|
|
366
|
+
<span><b id="first-seen-popup"></b></span>
|
|
367
|
+
</div>
|
|
368
|
+
<div>
|
|
369
|
+
<p class="popup-content__severity-p">${_i18n.default.t(`events_overview.last_seen`)}:</p>
|
|
370
|
+
<span><b id="last-seen-popup"></b></span>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
`;
|
|
335
376
|
}
|
|
336
377
|
};
|
|
337
378
|
exports.popupContent = popupContent;
|
|
@@ -383,7 +424,7 @@ const roundToNearestThousand = number => {
|
|
|
383
424
|
// }
|
|
384
425
|
|
|
385
426
|
const translateFlowRate = flow_rate_unit => {
|
|
386
|
-
return _i18n.default.t(
|
|
427
|
+
return _i18n.default.t(`dashboard_v2.profile.flow_rate_unit_options.${flow_rate_unit.includes('gd') ? 'gd' : flow_rate_unit}`);
|
|
387
428
|
};
|
|
388
429
|
exports.translateFlowRate = translateFlowRate;
|
|
389
430
|
const handleMarkerEvents = (map, point, pointCustomIcon, handleClick) => {
|
|
@@ -423,7 +464,30 @@ const handleMarkerEvents = (map, point, pointCustomIcon, handleClick) => {
|
|
|
423
464
|
};
|
|
424
465
|
exports.handleMarkerEvents = handleMarkerEvents;
|
|
425
466
|
const bindPopupToMarker = (point, layerGroup, flow_rate_unit) => {
|
|
426
|
-
let content =
|
|
467
|
+
let content = `
|
|
468
|
+
<div class='main-content'>
|
|
469
|
+
<div class='main-content__header'>
|
|
470
|
+
<div class="main-content__header__titles">
|
|
471
|
+
<div class='main-content__header__titles__title'>${point.name}</div>
|
|
472
|
+
<div class='main-content__header__titles__subtitle'>${point.group.sector_name}</div>
|
|
473
|
+
</div>
|
|
474
|
+
</div>
|
|
475
|
+
|
|
476
|
+
<div class='main-content__body'>
|
|
477
|
+
<div class='main-content__body__item'>
|
|
478
|
+
<div class='main-content__body__item__icon'>
|
|
479
|
+
<img src='${_water_reuse.default}' />
|
|
480
|
+
</div>
|
|
481
|
+
<div class='main-content__body__item__titles'>
|
|
482
|
+
<div class='main-content__body__item__titles__title'>
|
|
483
|
+
${getFlowRate(point.group.water_discharge, flow_rate_unit)}
|
|
484
|
+
</div>
|
|
485
|
+
<div class='main-content__body__item__titles__subtitle'>${_i18n.default.t('water_discharge')}</div>
|
|
486
|
+
</div>
|
|
487
|
+
</div>
|
|
488
|
+
</div>
|
|
489
|
+
</div>
|
|
490
|
+
`;
|
|
427
491
|
layerGroup.bindPopup(content, {
|
|
428
492
|
className: 'point-marker-popup',
|
|
429
493
|
minWidth: '214px',
|
|
@@ -467,4 +531,4 @@ const isFactoryType = type => {
|
|
|
467
531
|
return type === 'Groups::Factory';
|
|
468
532
|
};
|
|
469
533
|
exports.isFactoryType = isFactoryType;
|
|
470
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfTWFwVXRpbHMiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJjb25jYXQiLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwid3d0cFBvaW50IiwidHlwZSIsInJpc2VPbkhvdmVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJzdWJ0aXRsZSIsImFkZExheWVyIiwiYmluZFBvcHVwVG9NYXJrZXIiLCJoYW5kbGVNYXJrZXJFdmVudHMiLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJpY29uQW5jaG9yIiwiZXZlbnRzQ291bnRJY29uIiwiX3pvb20iLCJvcGFjaXR5IiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5Iiwic2V0SWNvbiIsImVsZW1lbnQiLCJjbGlja2VkIiwiY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiIsIndhdGVyQ29uc3VtcHRpb24iLCJyb3VuZF90b19uZWFyZXN0X2siLCJjYWxjdWxhdGVkIiwidG9GaXhlZCIsInJvdW5kVG9OZWFyZXN0VGhvdXNhbmQiLCJwYXJzZUZsb2F0IiwidG9Mb2NhbGVTdHJpbmciLCJNYXRoIiwicm91bmQiLCJudW1iZXIiLCJyb3VuZGVkVGhvdXNhbmRzIiwicm91bmRlZFZhbHVlIiwidHJhbnNsYXRlRmxvd1JhdGUiLCJ0b29sdGlwVmlzaWJsZSIsIm9uIiwiY2xvc2VQb3B1cCIsImlzUG9wdXBPcGVuIiwia2FuZG9fb2JqZWN0X2lkIiwic2VuZEFuYWx5dGljc0V2ZW50IiwicG9pbnRfbmFtZSIsImNvbnRlbnQiLCJ3YXRlclJldXNlSWNvbiIsImdldEZsb3dSYXRlIiwiYmluZFBvcHVwIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwiZmxvd1JhdGVVbml0IiwiaXNSb3VuZCIsInJlbW92ZUxheWVyR3JvdXAiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiYWRkTGF5ZXJHcm91cCIsInBvaW50SXNXV1RQIiwiaXNGYWN0b3J5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZXZlbnRzQ291bnRJY29uIH0gZnJvbSAnLi4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgc3RyaW5nICs9IGA8YnIvPlNlY3RvcjogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbjogJHtwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2V9YDtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmcgPSBgJHtwb2ludC5uYW1lfWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUZvcldXVFAgPSAoYXJncykgPT4ge1xuICBjb25zdCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIoYXJncy5tYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIGFyZ3Mud3d0cFBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBhcmdzLnd3dHBQb2ludC5uYW1lLFxuICAgICAgJycsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWUsXG4gICAgKSxcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHBvaW50Q3VzdG9tSWNvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWJibGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbiAgZmxvd19yYXRlX3VuaXQgPSAnZ2RfdXMnLFxuICBoYW5kbGVDbGljaz8sXG4pID0+IHtcbiAgY29uc3Qgc3VidGl0bGUgPSBwb2ludElzRmFjdG9yeShwb2ludCkgPyBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSA6ICcnO1xuICBsZXQgcG9pbnRDdXN0b21JY29uOiBMLk1hcmtlciA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgaWNvbjogZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSxcbiAgICAgIHBvaW50Lm5hbWUsXG4gICAgICBzdWJ0aXRsZSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZSxcbiAgICApLFxuICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICB9KTtcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG5cbiAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgYmluZFBvcHVwVG9NYXJrZXIocG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgZmxvd19yYXRlX3VuaXQpO1xuICB9XG5cbiAgaGFuZGxlTWFya2VyRXZlbnRzKG1hcCwgcG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgaGFuZGxlQ2xpY2spO1xuXG4gIGlmIChwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50KSB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbiA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICBjbGFzc05hbWU6IGBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+PSAxMDBcbiAgICAgICAgICAgICAgPyAnY2lyY2xlLWV2ZW50cy1hbW91bnQgY2lyY2xlLWV2ZW50cy1hbW91bnQtLXRyaWRpZ2l0J1xuICAgICAgICAgICAgICA6ICdjaXJjbGUtZXZlbnRzLWFtb3VudCdcbiAgICAgICAgICB9IFxuICAgICAgICAgICR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+IDIgPyAnYWxlcnQtY29sb3InIDogJyd9XG4gICAgICAgICAgICBgLFxuICAgICAgICBodG1sOiBgPHA+JHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50fTwvcD5gLFxuICAgICAgICBpY29uQW5jaG9yOiBldmVudHNDb3VudEljb24obWFwLl96b29tKS5pY29uQW5jaG9yLFxuICAgICAgfSksXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICBvcGFjaXR5OiBob3ZlcmVkID8gMSA6IDAsXG4gICAgfSk7XG5cbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVyJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVySG92ZXJlZCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYW5ob2xlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IG5ldyBMLkljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICBpY29uQW5jaG9yOiBbNC41LCA0LjVdLFxuICB9KTtcbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBuZXcgTC5NYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICBpY29uOiBwb2ludEljb24sXG4gICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gIH0pO1xuICBtYW5ob2xlSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICBtYW5ob2xlSWNvblsna2FuZG9fcG9pbnRfdHlwZSddID0gJ01hbmhvbGUnO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG4gIGxheWVyR3JvdXAuYWRkTGF5ZXIobWFuaG9sZUljb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICBjYXNlICdHcm91cHM6OkZhY3RvcnknOlxuICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICBpZiAoY29tYmluZWRQdW1wU3RhdGlvbkljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgY2FzZSAnR3JvdXBzOjpDb2xsZWN0b3JzJzpcbiAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQsIGV2ZW50KSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICBzZWNvbmRhcnk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRQdW1wU3RhdGlvbkljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNywgMzJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkV1dUUEljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzgsIDMxXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBzYW1wbGluZ0ljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDE1XSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGxldCB0aGlyZEljb24gPSBmYWxzZTtcbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIHRoaXJkSWNvbiA9IHRydWU7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRoaXJkSWNvbikpO1xuICB9XG5cbiAgc2FtcGxpbmdJY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSBmYWxzZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbic7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb25Ib3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvbnMgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkLFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgc2FtcGxlZFBvaW50SWRzID0gZXZlbnQuc2FtcGxpbmdzLm1hcCgocykgPT4gcy5wb2ludF9pZCk7XG4gIGlmIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNhbXBsaW5ncy5sZW5ndGggIT09IDAgJiZcbiAgICBzYW1wbGVkUG9pbnRJZHMuaW5jbHVkZXMocG9pbnQuaWQpXG4gICkge1xuICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGwsXG4gICAgICBtYXAsXG4gICAgICBwb2ludCxcbiAgICAgIGV2ZW50LFxuICAgICAgaG92ZXJlZCxcbiAgICAgIGxheWVyR3JvdXAsXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvcHVwQ29udGVudCA9IChvYnM6IGFueSwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAob2JzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtwb2ludC5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtwb2ludC5ncm91cC5uYW1lfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInNlY3RvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7b2JzLmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXR5YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtY29udGVudF9fc2V2ZXJpdHktLScgKyBvYnMuc2V2ZXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLiR7b2JzLnNldmVyaXR5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2hyXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fZGlzY2hhcmdlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LmZpcnN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImZpcnN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5sYXN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImxhc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNldEljb24gPSAoZWxlbWVudCwgY2xpY2tlZCwgcG9pbnQpID0+IHtcbiAgZWxlbWVudC5zZXRJY29uKFxuICAgIGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBwb2ludC5uYW1lLFxuICAgICAgcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWUsXG4gICAgICBjbGlja2VkLFxuICAgICAgIWNsaWNrZWQsXG4gICAgKSxcbiAgKTtcbn07XG5cbi8vIHJvdW5kIHRvIG5lYXJlc3QgdGhvdXNhbmQgaXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHJvdW5kIHRoZSB3YXRlciBjb25zdW1wdGlvbiB0byB0aGUgbmVhcmVzdCB0aG91c2FuZFxuLy8gZm9yIGV4YW1wbGU6IDIzNCw1NjcgLT4gMjM1LDAwMFxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24gPSAoXG4gIGZsb3dfcmF0ZV91bml0OiBzdHJpbmcsXG4gIHdhdGVyQ29uc3VtcHRpb246IG51bWJlcixcbiAgcm91bmRfdG9fbmVhcmVzdF9rOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgbGV0IGNhbGN1bGF0ZWQgPSAnMCc7XG5cbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgc3dpdGNoIChmbG93X3JhdGVfdW5pdCkge1xuICAgICAgY2FzZSAnbTNkJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9IHdhdGVyQ29uc3VtcHRpb24udG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91cyc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDI2NC4xNzIpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ2RfdWsnOlxuICAgICAgICBjYWxjdWxhdGVkID0gKHdhdGVyQ29uc3VtcHRpb24gKiAyMTkuOTY5KS50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHJvdW5kX3RvX25lYXJlc3Rfaykge1xuICAgIHJldHVybiByb3VuZFRvTmVhcmVzdFRob3VzYW5kKHBhcnNlRmxvYXQoY2FsY3VsYXRlZCkpLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfVxufTtcblxuY29uc3Qgcm91bmRUb05lYXJlc3RUaG91c2FuZCA9IChudW1iZXIpID0+IHtcbiAgLy8gaWYoaXNBbHJlYWR5Um91bmRlZChudW1iZXIpKSB7XG4gIC8vICAgcmV0dXJuIG51bWJlcjtcbiAgLy8gfVxuXG4gIGlmIChudW1iZXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgfVxuXG4gIGNvbnN0IHJvdW5kZWRUaG91c2FuZHMgPSBNYXRoLnJvdW5kKG51bWJlciAvIDEwMDApO1xuICBjb25zdCByb3VuZGVkVmFsdWUgPSByb3VuZGVkVGhvdXNhbmRzICogMTAwMDtcblxuICByZXR1cm4gcm91bmRlZFZhbHVlO1xufTtcblxuLy8gY29uc3QgaXNBbHJlYWR5Um91bmRlZCA9IChudW1iZXIpID0+IHtcbi8vICAgcmV0dXJuIG51bWJlciA9PT0gTWF0aC5yb3VuZChudW1iZXIpO1xuLy8gfVxuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRlRmxvd1JhdGUgPSAoZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgcmV0dXJuIGkxOG4udChcbiAgICBgZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy4ke1xuICAgICAgZmxvd19yYXRlX3VuaXQuaW5jbHVkZXMoJ2dkJykgPyAnZ2QnIDogZmxvd19yYXRlX3VuaXRcbiAgICB9YCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNYXJrZXJFdmVudHMgPSAoXG4gIG1hcCxcbiAgcG9pbnQsXG4gIHBvaW50Q3VzdG9tSWNvbixcbiAgaGFuZGxlQ2xpY2ssXG4pID0+IHtcbiAgbGV0IHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG5cbiAgbWFwLm9uKCd6b29tc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cGNsb3NlJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCBmYWxzZSwgcG9pbnQpO1xuICAgIHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICBpZiAodG9vbHRpcFZpc2libGUpIHJldHVybjtcblxuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgIGlmIChwb2ludEN1c3RvbUljb24uaXNQb3B1cE9wZW4oKSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVDbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHBvaW50Q3VzdG9tSWNvbi5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBoYW5kbGVDbGljayhwb2ludEN1c3RvbUljb24ua2FuZG9fb2JqZWN0X2lkKTtcblxuICAgICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgICBzZW5kQW5hbHl0aWNzRXZlbnQoJ01hcCBWaWV3IC0gRmFjdG9yeSBjbGlja2VkJywgJ21hcCcsIHtcbiAgICAgICAgICBwb2ludF9pZDogcG9pbnQuaWQsXG4gICAgICAgICAgcG9pbnRfbmFtZTogcG9pbnQubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBiaW5kUG9wdXBUb01hcmtlciA9IChwb2ludCwgbGF5ZXJHcm91cCwgZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgbGV0IGNvbnRlbnQgPSBgXG4gICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50Jz5cbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudF9faGVhZGVyX190aXRsZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fc3VidGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX19pY29uJz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9JyR7d2F0ZXJSZXVzZUljb259JyAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzJz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX190aXRsZSc+XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0Rmxvd1JhdGUocG9pbnQuZ3JvdXAud2F0ZXJfZGlzY2hhcmdlLCBmbG93X3JhdGVfdW5pdCl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93UmF0ZSA9IChcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICBmbG93UmF0ZVVuaXQ6IHN0cmluZyxcbiAgaXNSb3VuZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIGlmICh3YXRlckNvbnN1bXB0aW9uID4gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBjYWxjdWxhdGVXYXRlckNvbnN1bXB0aW9uKGZsb3dSYXRlVW5pdCwgd2F0ZXJDb25zdW1wdGlvbiwgaXNSb3VuZCkgK1xuICAgICAgJyAnICtcbiAgICAgIHRyYW5zbGF0ZUZsb3dSYXRlKGZsb3dSYXRlVW5pdClcbiAgICApO1xuICB9XG4gIHJldHVybiBpMThuLnQoJ2V2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLnVua25vd24nKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAobWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLnJlbW92ZUxheWVyKGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKCFtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAuYWRkTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH0gZWxzZSB7XG4gICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICAgIGFkZExheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc0ZhY3RvcnkgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gaXNGYWN0b3J5VHlwZShwb2ludC5ncm91cC50eXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ZhY3RvcnlUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gdHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeSc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSyxnQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBTzNDLElBQUFNLGdCQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxrQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUF5RixJQUFBUyxhQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBVSxZQUFBLEdBQUFYLHNCQUFBLENB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
|
|
534
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfTWFwVXRpbHMiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiX3V0aWxzIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmciLCJzdHJpbmciLCJncm91cCIsIm5hbWUiLCJwb2ludElzRmFjdG9yeSIsInNlY3Rvcl9uYW1lIiwid2F0ZXJfZGlzY2hhcmdlIiwiYnViYmxlRm9yV1dUUCIsImFyZ3MiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwibWFya2VyTG9jYXRpb24iLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwid3d0cFBvaW50IiwidHlwZSIsInJpc2VPbkhvdmVyIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJtYXAiLCJob3ZlcmVkIiwibGF5ZXJHcm91cCIsImZsb3dfcmF0ZV91bml0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2siLCJzdWJ0aXRsZSIsImFkZExheWVyIiwiYmluZFBvcHVwVG9NYXJrZXIiLCJoYW5kbGVNYXJrZXJFdmVudHMiLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJpY29uQW5jaG9yIiwiZXZlbnRzQ291bnRJY29uIiwiX3pvb20iLCJvcGFjaXR5IiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5Iiwic2V0SWNvbiIsImVsZW1lbnQiLCJjbGlja2VkIiwiY2FsY3VsYXRlV2F0ZXJDb25zdW1wdGlvbiIsIndhdGVyQ29uc3VtcHRpb24iLCJyb3VuZF90b19uZWFyZXN0X2siLCJjYWxjdWxhdGVkIiwidG9GaXhlZCIsInJvdW5kVG9OZWFyZXN0VGhvdXNhbmQiLCJwYXJzZUZsb2F0IiwidG9Mb2NhbGVTdHJpbmciLCJNYXRoIiwicm91bmQiLCJudW1iZXIiLCJyb3VuZGVkVGhvdXNhbmRzIiwicm91bmRlZFZhbHVlIiwidHJhbnNsYXRlRmxvd1JhdGUiLCJ0b29sdGlwVmlzaWJsZSIsIm9uIiwiY2xvc2VQb3B1cCIsImlzUG9wdXBPcGVuIiwia2FuZG9fb2JqZWN0X2lkIiwic2VuZEFuYWx5dGljc0V2ZW50IiwicG9pbnRfbmFtZSIsImNvbnRlbnQiLCJ3YXRlclJldXNlSWNvbiIsImdldEZsb3dSYXRlIiwiYmluZFBvcHVwIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwiZmxvd1JhdGVVbml0IiwiaXNSb3VuZCIsInJlbW92ZUxheWVyR3JvdXAiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiYWRkTGF5ZXJHcm91cCIsInBvaW50SXNXV1RQIiwiaXNGYWN0b3J5VHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZXZlbnRzQ291bnRJY29uIH0gZnJvbSAnLi4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgc3RyaW5nICs9IGA8YnIvPlNlY3RvcjogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbjogJHtwb2ludC5ncm91cC53YXRlcl9kaXNjaGFyZ2V9YDtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmcgPSBgJHtwb2ludC5uYW1lfWA7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUZvcldXVFAgPSAoYXJncykgPT4ge1xuICBjb25zdCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIoYXJncy5tYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIGFyZ3Mud3d0cFBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBhcmdzLnd3dHBQb2ludC5uYW1lLFxuICAgICAgJycsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWUsXG4gICAgKSxcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHBvaW50Q3VzdG9tSWNvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVCdWJibGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbiAgZmxvd19yYXRlX3VuaXQgPSAnZ2RfdXMnLFxuICBoYW5kbGVDbGljaz8sXG4pID0+IHtcbiAgY29uc3Qgc3VidGl0bGUgPSBwb2ludElzRmFjdG9yeShwb2ludCkgPyBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSA6ICcnO1xuICBsZXQgcG9pbnRDdXN0b21JY29uOiBMLk1hcmtlciA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgaWNvbjogZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSxcbiAgICAgIHBvaW50Lm5hbWUsXG4gICAgICBzdWJ0aXRsZSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZSxcbiAgICApLFxuICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICB9KTtcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG5cbiAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICBpZiAocG9pbnRJc0ZhY3RvcnkocG9pbnQpKSB7XG4gICAgYmluZFBvcHVwVG9NYXJrZXIocG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgZmxvd19yYXRlX3VuaXQpO1xuICB9XG5cbiAgaGFuZGxlTWFya2VyRXZlbnRzKG1hcCwgcG9pbnQsIHBvaW50Q3VzdG9tSWNvbiwgaGFuZGxlQ2xpY2spO1xuXG4gIGlmIChwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50KSB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbiA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICBjbGFzc05hbWU6IGBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+PSAxMDBcbiAgICAgICAgICAgICAgPyAnY2lyY2xlLWV2ZW50cy1hbW91bnQgY2lyY2xlLWV2ZW50cy1hbW91bnQtLXRyaWRpZ2l0J1xuICAgICAgICAgICAgICA6ICdjaXJjbGUtZXZlbnRzLWFtb3VudCdcbiAgICAgICAgICB9IFxuICAgICAgICAgICR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+IDIgPyAnYWxlcnQtY29sb3InIDogJyd9XG4gICAgICAgICAgICBgLFxuICAgICAgICBodG1sOiBgPHA+JHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50fTwvcD5gLFxuICAgICAgICBpY29uQW5jaG9yOiBldmVudHNDb3VudEljb24obWFwLl96b29tKS5pY29uQW5jaG9yLFxuICAgICAgfSksXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICBvcGFjaXR5OiBob3ZlcmVkID8gMSA6IDAsXG4gICAgfSk7XG5cbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVyJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVySG92ZXJlZCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYW5ob2xlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IG5ldyBMLkljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICBpY29uQW5jaG9yOiBbNC41LCA0LjVdLFxuICB9KTtcbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBuZXcgTC5NYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICBpY29uOiBwb2ludEljb24sXG4gICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gIH0pO1xuICBtYW5ob2xlSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb29sdGlwU3RyaW5nKHBvaW50KSk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICBtYW5ob2xlSWNvblsna2FuZG9fcG9pbnRfdHlwZSddID0gJ01hbmhvbGUnO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG4gIGxheWVyR3JvdXAuYWRkTGF5ZXIobWFuaG9sZUljb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICBjYXNlICdHcm91cHM6OkZhY3RvcnknOlxuICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICBpZiAoY29tYmluZWRQdW1wU3RhdGlvbkljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgY2FzZSAnR3JvdXBzOjpDb2xsZWN0b3JzJzpcbiAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQsIGV2ZW50KSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICBzZWNvbmRhcnk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRQdW1wU3RhdGlvbkljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNywgMzJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkV1dUUEljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzgsIDMxXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBzYW1wbGluZ0ljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDE1XSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGxldCB0aGlyZEljb24gPSBmYWxzZTtcbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIHRoaXJkSWNvbiA9IHRydWU7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRoaXJkSWNvbikpO1xuICB9XG5cbiAgc2FtcGxpbmdJY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb2x0aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gc2Vjb25kYXJ5SWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3RoaXJkJ10gPSBmYWxzZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbic7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb25Ib3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvbnMgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkLFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgc2FtcGxlZFBvaW50SWRzID0gZXZlbnQuc2FtcGxpbmdzLm1hcCgocykgPT4gcy5wb2ludF9pZCk7XG4gIGlmIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNhbXBsaW5ncy5sZW5ndGggIT09IDAgJiZcbiAgICBzYW1wbGVkUG9pbnRJZHMuaW5jbHVkZXMocG9pbnQuaWQpXG4gICkge1xuICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGwsXG4gICAgICBtYXAsXG4gICAgICBwb2ludCxcbiAgICAgIGV2ZW50LFxuICAgICAgaG92ZXJlZCxcbiAgICAgIGxheWVyR3JvdXAsXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvcHVwQ29udGVudCA9IChvYnM6IGFueSwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAob2JzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtwb2ludC5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtwb2ludC5ncm91cC5uYW1lfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInNlY3RvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7b2JzLmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXR5YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtY29udGVudF9fc2V2ZXJpdHktLScgKyBvYnMuc2V2ZXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLiR7b2JzLnNldmVyaXR5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2hyXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudF9fZGlzY2hhcmdlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LmZpcnN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImZpcnN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5sYXN0X3NlZW5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48YiBpZD1cImxhc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNldEljb24gPSAoZWxlbWVudCwgY2xpY2tlZCwgcG9pbnQpID0+IHtcbiAgZWxlbWVudC5zZXRJY29uKFxuICAgIGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBwb2ludC5uYW1lLFxuICAgICAgcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWUsXG4gICAgICBjbGlja2VkLFxuICAgICAgIWNsaWNrZWQsXG4gICAgKSxcbiAgKTtcbn07XG5cbi8vIHJvdW5kIHRvIG5lYXJlc3QgdGhvdXNhbmQgaXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHJvdW5kIHRoZSB3YXRlciBjb25zdW1wdGlvbiB0byB0aGUgbmVhcmVzdCB0aG91c2FuZFxuLy8gZm9yIGV4YW1wbGU6IDIzNCw1NjcgLT4gMjM1LDAwMFxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdhdGVyQ29uc3VtcHRpb24gPSAoXG4gIGZsb3dfcmF0ZV91bml0OiBzdHJpbmcsXG4gIHdhdGVyQ29uc3VtcHRpb246IG51bWJlcixcbiAgcm91bmRfdG9fbmVhcmVzdF9rOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgbGV0IGNhbGN1bGF0ZWQgPSAnMCc7XG5cbiAgaWYgKHdhdGVyQ29uc3VtcHRpb24gPiAwKSB7XG4gICAgc3dpdGNoIChmbG93X3JhdGVfdW5pdCkge1xuICAgICAgY2FzZSAnbTNkJzpcbiAgICAgICAgY2FsY3VsYXRlZCA9IHdhdGVyQ29uc3VtcHRpb24udG9GaXhlZCgyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdnZF91cyc6XG4gICAgICAgIGNhbGN1bGF0ZWQgPSAod2F0ZXJDb25zdW1wdGlvbiAqIDI2NC4xNzIpLnRvRml4ZWQoMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ2RfdWsnOlxuICAgICAgICBjYWxjdWxhdGVkID0gKHdhdGVyQ29uc3VtcHRpb24gKiAyMTkuOTY5KS50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHJvdW5kX3RvX25lYXJlc3Rfaykge1xuICAgIHJldHVybiByb3VuZFRvTmVhcmVzdFRob3VzYW5kKHBhcnNlRmxvYXQoY2FsY3VsYXRlZCkpLnRvTG9jYWxlU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChjYWxjdWxhdGVkKSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgfVxufTtcblxuY29uc3Qgcm91bmRUb05lYXJlc3RUaG91c2FuZCA9IChudW1iZXIpID0+IHtcbiAgLy8gaWYoaXNBbHJlYWR5Um91bmRlZChudW1iZXIpKSB7XG4gIC8vICAgcmV0dXJuIG51bWJlcjtcbiAgLy8gfVxuXG4gIGlmIChudW1iZXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgfVxuXG4gIGNvbnN0IHJvdW5kZWRUaG91c2FuZHMgPSBNYXRoLnJvdW5kKG51bWJlciAvIDEwMDApO1xuICBjb25zdCByb3VuZGVkVmFsdWUgPSByb3VuZGVkVGhvdXNhbmRzICogMTAwMDtcblxuICByZXR1cm4gcm91bmRlZFZhbHVlO1xufTtcblxuLy8gY29uc3QgaXNBbHJlYWR5Um91bmRlZCA9IChudW1iZXIpID0+IHtcbi8vICAgcmV0dXJuIG51bWJlciA9PT0gTWF0aC5yb3VuZChudW1iZXIpO1xuLy8gfVxuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRlRmxvd1JhdGUgPSAoZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgcmV0dXJuIGkxOG4udChcbiAgICBgZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmxvd19yYXRlX3VuaXRfb3B0aW9ucy4ke1xuICAgICAgZmxvd19yYXRlX3VuaXQuaW5jbHVkZXMoJ2dkJykgPyAnZ2QnIDogZmxvd19yYXRlX3VuaXRcbiAgICB9YCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNYXJrZXJFdmVudHMgPSAoXG4gIG1hcCxcbiAgcG9pbnQsXG4gIHBvaW50Q3VzdG9tSWNvbixcbiAgaGFuZGxlQ2xpY2ssXG4pID0+IHtcbiAgbGV0IHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG5cbiAgbWFwLm9uKCd6b29tc3RhcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgfSk7XG5cbiAgcG9pbnRDdXN0b21JY29uLm9uKCdwb3B1cGNsb3NlJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCBmYWxzZSwgcG9pbnQpO1xuICAgIHRvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIC8vIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICBpZiAodG9vbHRpcFZpc2libGUpIHJldHVybjtcblxuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgIGlmIChwb2ludEN1c3RvbUljb24uaXNQb3B1cE9wZW4oKSkgcmV0dXJuO1xuXG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gICAgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVDbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHBvaW50Q3VzdG9tSWNvbi5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBoYW5kbGVDbGljayhwb2ludEN1c3RvbUljb24ua2FuZG9fb2JqZWN0X2lkKTtcblxuICAgICAgaWYgKHBvaW50SXNGYWN0b3J5KHBvaW50KSkge1xuICAgICAgICBzZW5kQW5hbHl0aWNzRXZlbnQoJ01hcCBWaWV3IC0gRmFjdG9yeSBjbGlja2VkJywgJ21hcCcsIHtcbiAgICAgICAgICBwb2ludF9pZDogcG9pbnQuaWQsXG4gICAgICAgICAgcG9pbnRfbmFtZTogcG9pbnQubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBiaW5kUG9wdXBUb01hcmtlciA9IChwb2ludCwgbGF5ZXJHcm91cCwgZmxvd19yYXRlX3VuaXQpID0+IHtcbiAgbGV0IGNvbnRlbnQgPSBgXG4gICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50Jz5cbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudF9faGVhZGVyX190aXRsZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fc3VidGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX19pY29uJz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9JyR7d2F0ZXJSZXVzZUljb259JyAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzJz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX190aXRsZSc+XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0Rmxvd1JhdGUocG9pbnQuZ3JvdXAud2F0ZXJfZGlzY2hhcmdlLCBmbG93X3JhdGVfdW5pdCl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93UmF0ZSA9IChcbiAgd2F0ZXJDb25zdW1wdGlvbjogbnVtYmVyLFxuICBmbG93UmF0ZVVuaXQ6IHN0cmluZyxcbiAgaXNSb3VuZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIGlmICh3YXRlckNvbnN1bXB0aW9uID4gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBjYWxjdWxhdGVXYXRlckNvbnN1bXB0aW9uKGZsb3dSYXRlVW5pdCwgd2F0ZXJDb25zdW1wdGlvbiwgaXNSb3VuZCkgK1xuICAgICAgJyAnICtcbiAgICAgIHRyYW5zbGF0ZUZsb3dSYXRlKGZsb3dSYXRlVW5pdClcbiAgICApO1xuICB9XG4gIHJldHVybiBpMThuLnQoJ2V2ZW50c19vdmVydmlldy5zZXZlcml0aWVzLnVua25vd24nKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMYXllckdyb3VwID0gKG1hcCwgbGF5ZXJHcm91cCkgPT4ge1xuICBpZiAobWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLnJlbW92ZUxheWVyKGxheWVyR3JvdXApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKCFtYXAuaGFzTGF5ZXIobGF5ZXJHcm91cCkpIHtcbiAgICBtYXAuYWRkTGF5ZXIobGF5ZXJHcm91cCk7XG4gIH0gZWxzZSB7XG4gICAgcmVtb3ZlTGF5ZXJHcm91cChtYXAsIGxheWVyR3JvdXApO1xuICAgIGFkZExheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc0ZhY3RvcnkgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICByZXR1cm4gaXNGYWN0b3J5VHlwZShwb2ludC5ncm91cC50eXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ZhY3RvcnlUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICByZXR1cm4gdHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeSc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBSyxnQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBTzNDLElBQUFNLGdCQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxrQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUF5RixJQUFBUyxhQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFBQSxJQUFBVSxZQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7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
|