@igo2/geo 18.0.0-next.8 → 18.0.0
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/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +4 -6
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +13 -10
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +151 -102
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +177 -83
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +93 -44
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions.component.mjs +55 -31
- package/esm2022/lib/directions/shared/directions.enum.mjs +51 -7
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +122 -96
- package/esm2022/lib/directions/shared/directions.utils.mjs +281 -318
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +8 -20
- package/esm2022/lib/download/shared/download.service.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +1 -1
- package/esm2022/lib/draw/draw/draw.component.mjs +5 -12
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +2 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +5 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +1 -1
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +8 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -8
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -8
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +13 -10
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +4 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +5 -16
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -17
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +23 -12
- package/esm2022/lib/import-export/shared/export.service.mjs +7 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
- package/esm2022/lib/layer/index.mjs +10 -5
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +61 -128
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +5 -8
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -6
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +14 -21
- package/esm2022/lib/layer/layer-list/index.mjs +1 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +176 -775
- package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +51 -84
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +56 -16
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +51 -33
- package/esm2022/lib/layer/shared/index.mjs +2 -1
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +56 -14
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
- package/esm2022/lib/layer/shared/layers/layer.mjs +113 -113
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +9 -3
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
- package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -6
- package/esm2022/lib/map/map-center/map-center.component.mjs +1 -2
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +1 -9
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
- package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
- package/esm2022/lib/map/shared/map.mjs +7 -243
- package/esm2022/lib/map/shared/map.service.mjs +1 -1
- package/esm2022/lib/map/shared/map.utils.mjs +3 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -5
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +1 -3
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +7 -25
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -18
- package/esm2022/lib/offline/offline.provider.mjs +10 -11
- package/esm2022/lib/print/shared/print.service.mjs +3 -3
- package/esm2022/lib/query/shared/query.directive.mjs +9 -5
- package/esm2022/lib/query/shared/query.service.mjs +7 -7
- package/esm2022/lib/query/shared/query.utils.mjs +5 -1
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +15 -9
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +1 -10
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -17
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +17 -2
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +22 -4
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +6 -2
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +4 -3
- package/fesm2022/igo2-geo.mjs +22502 -21440
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/capabilities.service.d.ts +7 -2
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +6 -6
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +57 -20
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +115 -13
- package/lib/directions/directions-results/directions-results.component.d.ts +50 -16
- package/lib/directions/directions-sources/directions-source.d.ts +2 -2
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +2 -2
- package/lib/directions/directions.component.d.ts +5 -5
- package/lib/directions/shared/directions.enum.d.ts +42 -1
- package/lib/directions/shared/directions.interface.d.ts +50 -25
- package/lib/directions/shared/directions.service.d.ts +46 -8
- package/lib/directions/shared/directions.utils.d.ts +102 -23
- package/lib/directions/shared/store.d.ts +3 -3
- package/lib/download/download-button/download-button.component.d.ts +4 -8
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/draw/shared/draw.utils.d.ts +2 -1
- package/lib/environment/environment.interface.d.ts +2 -0
- package/lib/feature/shared/feature-store.utils.d.ts +1 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
- package/lib/import-export/export-button/export-button.component.d.ts +3 -7
- package/lib/import-export/import-export/import-export.component.d.ts +1 -2
- package/lib/import-export/shared/export.service.d.ts +2 -2
- package/lib/layer/index.d.ts +9 -4
- package/lib/layer/layer-group/index.d.ts +1 -0
- package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
- package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
- package/lib/layer/layer-list/index.d.ts +0 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
- package/lib/layer/layer-list-tool/index.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
- package/lib/layer/layer-search/index.d.ts +1 -0
- package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
- package/lib/layer/layer-unavailable/index.d.ts +2 -0
- package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
- package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
- package/lib/layer/layer-viewer/index.d.ts +2 -0
- package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
- package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
- package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
- package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
- package/lib/layer/layer-visibility-button/index.d.ts +1 -0
- package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
- package/lib/layer/layer.module.d.ts +18 -6
- package/lib/layer/shared/index.d.ts +1 -0
- package/lib/layer/shared/layer-controller.d.ts +81 -0
- package/lib/layer/shared/layer-selection.d.ts +14 -0
- package/lib/layer/shared/layer.service.d.ts +12 -3
- package/lib/layer/shared/layers/any-layer.d.ts +3 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
- package/lib/layer/shared/layers/image-layer.d.ts +5 -2
- package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
- package/lib/layer/shared/layers/index.d.ts +5 -0
- package/lib/layer/shared/layers/layer-base.d.ts +75 -0
- package/lib/layer/shared/layers/layer-group.d.ts +32 -0
- package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
- package/lib/layer/shared/layers/layer.d.ts +27 -44
- package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
- package/lib/layer/shared/layers/linked/index.d.ts +3 -0
- package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
- package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
- package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
- package/lib/layer/shared/layers/vector-layer.d.ts +7 -3
- package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
- package/lib/layer/utils/layer.utils.d.ts +12 -2
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/shared/controllers/geolocation.interface.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +0 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
- package/lib/map/shared/map.abstract.d.ts +12 -29
- package/lib/map/shared/map.d.ts +10 -85
- package/lib/map/shared/map.service.d.ts +1 -1
- package/lib/map/shared/map.utils.d.ts +5 -3
- package/lib/map/utils/index.d.ts +1 -0
- package/lib/map/utils/layer-watcher.d.ts +18 -8
- package/lib/measure/measurer/measurer.component.d.ts +0 -8
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
- package/lib/offline/offline.provider.d.ts +1 -1
- package/lib/query/shared/query.service.d.ts +1 -1
- package/lib/query/shared/query.utils.d.ts +2 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/locale/en.geo.json +106 -89
- package/locale/fr.geo.json +105 -89
- package/package.json +5 -5
- package/src/geo-theme.scss +1 -1
- package/src/lib/directions/directions-inputs/directions-inputs.theming.scss +21 -0
- package/src/lib/directions/directions.theming.scss +2 -0
- package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
- package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
- package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
- package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
- package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
- package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
- package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
- package/src/lib/layer/layer.theming.scss +14 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
- package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
|
@@ -1,51 +1,68 @@
|
|
|
1
1
|
import { getUid } from 'ol/util';
|
|
2
2
|
import { WMSDataSource } from '../../datasource/shared/datasources/wms-datasource';
|
|
3
3
|
import { OgcFilterWriter } from '../../filter/shared/ogc-filter';
|
|
4
|
-
import {
|
|
5
|
-
export function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const layerLLOptions = getLinkedLayersOptions(layer);
|
|
14
|
-
if (layerLLOptions?.links) {
|
|
15
|
-
const link = layerLLOptions.links.find((l) => l.properties.includes(property));
|
|
16
|
-
hasLinkWithProperty = link ? true : false;
|
|
4
|
+
import { isLayerGroup, isLayerItem } from '../../layer/utils/layer.utils';
|
|
5
|
+
export function getRootParentByProperty(layers, layer, property) {
|
|
6
|
+
let layerToUse = layer;
|
|
7
|
+
let parentLayer = layerToUse;
|
|
8
|
+
let hasParentLayer = true;
|
|
9
|
+
while (hasParentLayer) {
|
|
10
|
+
layerToUse = parentLayer;
|
|
11
|
+
parentLayer = getDirectParentLayerByProperty(layers, layerToUse, property);
|
|
12
|
+
hasParentLayer = parentLayer ? true : false;
|
|
17
13
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const layerLLOptions = getLinkedLayersOptions(layer);
|
|
23
|
-
if (layerLLOptions?.links) {
|
|
24
|
-
const link = layerLLOptions.links.find((l) => l.syncedDelete);
|
|
25
|
-
hasLinkWithSyncedDelete = link ? true : false;
|
|
14
|
+
if (!hasParentLayer) {
|
|
15
|
+
if (!layerHasLinkWithProperty(layerToUse, property)) {
|
|
16
|
+
layerToUse = undefined;
|
|
17
|
+
}
|
|
26
18
|
}
|
|
27
|
-
return
|
|
19
|
+
return hasParentLayer ? parentLayer : layerToUse;
|
|
28
20
|
}
|
|
29
|
-
export function
|
|
21
|
+
export function getAllChildLayersByProperty(layers, layer, knownChildLayers, property) {
|
|
22
|
+
const childLayers = getDirectChildLayersByProperty(layers, layer, property);
|
|
23
|
+
childLayers.map((cl) => {
|
|
24
|
+
knownChildLayers.push(cl);
|
|
25
|
+
const directChildLayers = getDirectChildLayersByProperty(layers, cl, property);
|
|
26
|
+
if (directChildLayers) {
|
|
27
|
+
getAllChildLayersByProperty(layers, cl, knownChildLayers, property);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return knownChildLayers;
|
|
31
|
+
}
|
|
32
|
+
export function getRootParentByDeletion(layer, layers) {
|
|
30
33
|
let layerToUse = layer;
|
|
31
34
|
let parentLayer = layerToUse;
|
|
32
35
|
let hasParentLayer = true;
|
|
33
36
|
while (hasParentLayer) {
|
|
34
37
|
layerToUse = parentLayer;
|
|
35
|
-
parentLayer =
|
|
38
|
+
parentLayer = getDirectParentLayerByDeletion(layerToUse, layers);
|
|
36
39
|
hasParentLayer = parentLayer ? true : false;
|
|
37
40
|
}
|
|
38
41
|
if (!hasParentLayer) {
|
|
39
|
-
if (!
|
|
42
|
+
if (!hasLinkDeletion(layerToUse)) {
|
|
40
43
|
layerToUse = undefined;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
return hasParentLayer ? parentLayer : layerToUse;
|
|
44
47
|
}
|
|
45
|
-
export function
|
|
48
|
+
export function getAllChildLayersByDeletion(layers, layer, knownChildLayers) {
|
|
49
|
+
const childLayers = getLayersByDeletion(layers, layer.options.linkedLayers.links);
|
|
50
|
+
childLayers.map((cl) => {
|
|
51
|
+
knownChildLayers.push(cl);
|
|
52
|
+
const directChildLayers = getLayersByDeletion(layers, cl.options.linkedLayers.links);
|
|
53
|
+
if (directChildLayers) {
|
|
54
|
+
getAllChildLayersByDeletion(layers, cl, knownChildLayers);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return knownChildLayers;
|
|
58
|
+
}
|
|
59
|
+
function getDirectParentLayerByProperty(layers, layer, property) {
|
|
46
60
|
if (layer?.options.linkedLayers?.linkId) {
|
|
47
61
|
const currentLinkId = layer.options.linkedLayers.linkId;
|
|
48
|
-
const parents =
|
|
62
|
+
const parents = layers.filter((pl) => {
|
|
63
|
+
if (isLayerGroup(pl)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
49
66
|
const linkedLayers = pl.options.linkedLayers;
|
|
50
67
|
if (linkedLayers && linkedLayers.links) {
|
|
51
68
|
const a = linkedLayers.links.find((l) => l.linkedIds.includes(currentLinkId) &&
|
|
@@ -60,7 +77,7 @@ export function getDirectParentLayerByProperty(map, layer, property) {
|
|
|
60
77
|
return parents[0];
|
|
61
78
|
}
|
|
62
79
|
}
|
|
63
|
-
|
|
80
|
+
function getDirectChildLayersByProperty(layers, layer, property) {
|
|
64
81
|
let linkedIds = [];
|
|
65
82
|
if (layer?.options.linkedLayers?.links) {
|
|
66
83
|
layer.options.linkedLayers.links
|
|
@@ -69,40 +86,38 @@ export function getDirectChildLayersByProperty(map, layer, property) {
|
|
|
69
86
|
linkedIds = linkedIds.concat(link.linkedIds);
|
|
70
87
|
});
|
|
71
88
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
export function getAllChildLayersByProperty(map, layer, knownChildLayers, property) {
|
|
75
|
-
const childLayers = getDirectChildLayersByProperty(map, layer, property);
|
|
76
|
-
childLayers.map((cl) => {
|
|
77
|
-
knownChildLayers.push(cl);
|
|
78
|
-
const directChildLayers = getDirectChildLayersByProperty(map, cl, property);
|
|
79
|
-
if (directChildLayers) {
|
|
80
|
-
getAllChildLayersByProperty(map, cl, knownChildLayers, property);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
return knownChildLayers;
|
|
89
|
+
const layerItems = layers.filter((layer) => isLayerItem(layer));
|
|
90
|
+
return linkedIds.map((lid) => findLayerByLinkId(layerItems, lid));
|
|
84
91
|
}
|
|
85
|
-
|
|
86
|
-
let
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
parentLayer = getDirectParentLayerByDeletion(map, layerToUse);
|
|
92
|
-
hasParentLayer = parentLayer ? true : false;
|
|
93
|
-
}
|
|
94
|
-
if (!hasParentLayer) {
|
|
95
|
-
if (!layerHasLinkDeletion(layerToUse)) {
|
|
96
|
-
layerToUse = undefined;
|
|
97
|
-
}
|
|
92
|
+
function layerHasLinkWithProperty(layer, property) {
|
|
93
|
+
let hasLinkWithProperty = false;
|
|
94
|
+
const layerLLOptions = getLinkedLayersOptions(layer);
|
|
95
|
+
if (layerLLOptions?.links) {
|
|
96
|
+
const link = layerLLOptions.links.find((l) => l.properties.includes(property));
|
|
97
|
+
hasLinkWithProperty = link ? true : false;
|
|
98
98
|
}
|
|
99
|
-
return
|
|
99
|
+
return hasLinkWithProperty;
|
|
100
|
+
}
|
|
101
|
+
function hasLinkDeletion(layer) {
|
|
102
|
+
const layerLLOptions = getLinkedLayersOptions(layer);
|
|
103
|
+
return layerLLOptions?.links
|
|
104
|
+
? layerLLOptions.links.some((l) => l.syncedDelete)
|
|
105
|
+
: false;
|
|
106
|
+
}
|
|
107
|
+
export function getLinkedLayersOptions(layer) {
|
|
108
|
+
return layer.options.linkedLayers;
|
|
109
|
+
}
|
|
110
|
+
export function findLayerByLinkId(layers, id) {
|
|
111
|
+
return layers.find((l) => l.options.linkedLayers?.linkId === id);
|
|
100
112
|
}
|
|
101
|
-
|
|
113
|
+
function getDirectParentLayerByDeletion(layer, layers) {
|
|
102
114
|
if (layer.options.linkedLayers?.linkId) {
|
|
103
115
|
const currentLinkId = layer.options.linkedLayers.linkId;
|
|
104
|
-
const parents =
|
|
105
|
-
|
|
116
|
+
const parents = layers.filter((parent) => {
|
|
117
|
+
if (isLayerGroup(parent)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const linkedLayers = parent.options.linkedLayers;
|
|
106
121
|
if (linkedLayers && linkedLayers.links) {
|
|
107
122
|
const a = linkedLayers.links.find((l) => l.linkedIds.includes(currentLinkId) && l.syncedDelete);
|
|
108
123
|
return a;
|
|
@@ -115,98 +130,74 @@ export function getDirectParentLayerByDeletion(map, layer) {
|
|
|
115
130
|
return parents[0];
|
|
116
131
|
}
|
|
117
132
|
}
|
|
118
|
-
export function
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
return linkedIds.map((lid) => getIgoLayerByLinkId(map, lid));
|
|
133
|
+
export function getLayersByDeletion(layers, links) {
|
|
134
|
+
return links
|
|
135
|
+
?.filter((l) => l.syncedDelete)
|
|
136
|
+
.reduce((layerAcc, link) => {
|
|
137
|
+
const linkedLayers = getLayersByLink(link, layers);
|
|
138
|
+
return layerAcc.concat(linkedLayers);
|
|
139
|
+
}, []);
|
|
128
140
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (directChildLayers) {
|
|
135
|
-
getAllChildLayersByDeletion(map, cl, knownChildLayers);
|
|
141
|
+
function getLayersByLink(link, layers) {
|
|
142
|
+
return link.linkedIds.reduce((linkedLayers, id) => {
|
|
143
|
+
const linkedLayer = findLayerByLinkId(layers, id);
|
|
144
|
+
if (linkedLayer) {
|
|
145
|
+
linkedLayers.push(linkedLayer);
|
|
136
146
|
}
|
|
137
|
-
|
|
138
|
-
|
|
147
|
+
return linkedLayers;
|
|
148
|
+
}, []);
|
|
139
149
|
}
|
|
140
|
-
export function
|
|
141
|
-
|
|
142
|
-
const keys = Object.keys(LinkedProperties);
|
|
143
|
-
keys.map((k) => {
|
|
144
|
-
rootLayersByProperty[LinkedProperties[k]] = [];
|
|
145
|
-
});
|
|
146
|
-
layers
|
|
147
|
-
.filter((l) => getLinkedLayersOptions(l))
|
|
148
|
-
.map((l) => {
|
|
149
|
-
keys.map((key) => {
|
|
150
|
-
const k = LinkedProperties[key];
|
|
151
|
-
const plbp = getRootParentByProperty(map, l, k);
|
|
152
|
-
const layers = rootLayersByProperty[k];
|
|
153
|
-
const layersId = layers.map((l) => l.id);
|
|
154
|
-
if (plbp && !layersId.includes(plbp.id)) {
|
|
155
|
-
rootLayersByProperty[k].push(plbp);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
Object.keys(rootLayersByProperty).map((k) => {
|
|
160
|
-
const layers = rootLayersByProperty[k];
|
|
161
|
-
layers.map((l) => l.ol.notify(k, undefined));
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer) {
|
|
165
|
-
if (!propertyChange) {
|
|
150
|
+
export function handleLayerPropertyChange(layers, change, viewController) {
|
|
151
|
+
if (!change) {
|
|
166
152
|
return;
|
|
167
153
|
}
|
|
168
154
|
const ogcFilterWriter = new OgcFilterWriter();
|
|
169
155
|
let isLayerProperty = true;
|
|
170
156
|
let isDatasourceProperty = true;
|
|
171
|
-
const key =
|
|
157
|
+
const key = change.event.key;
|
|
172
158
|
let newValue;
|
|
173
159
|
if (key === 'ogcFilters') {
|
|
174
160
|
isLayerProperty = false;
|
|
175
161
|
isDatasourceProperty = true;
|
|
176
|
-
newValue =
|
|
162
|
+
newValue = change.layer.dataSource.options.ogcFilters;
|
|
177
163
|
}
|
|
178
164
|
else if (key === 'timeFilter') {
|
|
179
165
|
isLayerProperty = false;
|
|
180
166
|
isDatasourceProperty = true;
|
|
181
|
-
newValue =
|
|
167
|
+
newValue = change.layer.dataSource.options.timeFilter;
|
|
182
168
|
}
|
|
183
169
|
else {
|
|
184
170
|
isLayerProperty = true;
|
|
185
171
|
isDatasourceProperty = false;
|
|
186
|
-
newValue =
|
|
172
|
+
newValue = change.layer.ol.get(key);
|
|
187
173
|
}
|
|
188
|
-
const initiatorLinkedLayersOptions = getLinkedLayersOptions(
|
|
174
|
+
const initiatorLinkedLayersOptions = getLinkedLayersOptions(change.layer);
|
|
189
175
|
if (initiatorLinkedLayersOptions) {
|
|
190
|
-
let rootParentByProperty = getRootParentByProperty(
|
|
176
|
+
let rootParentByProperty = getRootParentByProperty(layers, change.layer, key);
|
|
191
177
|
if (!rootParentByProperty) {
|
|
192
|
-
rootParentByProperty =
|
|
178
|
+
rootParentByProperty = change.layer;
|
|
193
179
|
}
|
|
194
180
|
const clbp = [rootParentByProperty];
|
|
195
|
-
getAllChildLayersByProperty(
|
|
181
|
+
getAllChildLayersByProperty(layers, rootParentByProperty, clbp, key);
|
|
196
182
|
let resolutionPropertyHasChanged = false;
|
|
197
|
-
const initiatorIgoLayerSourceType =
|
|
198
|
-
const initiatorIgoLayerOgcFilterableDataSourceOptions =
|
|
183
|
+
const initiatorIgoLayerSourceType = change.layer.options.source.options.type;
|
|
184
|
+
const initiatorIgoLayerOgcFilterableDataSourceOptions = change.layer
|
|
199
185
|
.dataSource.options;
|
|
200
186
|
clbp.map((l) => {
|
|
201
|
-
if (
|
|
202
|
-
l &&
|
|
203
|
-
getUid(initiatorIgoLayer.ol) !== getUid(l?.ol)) {
|
|
187
|
+
if (change.layer && l && getUid(change.layer.ol) !== getUid(l?.ol)) {
|
|
204
188
|
const lLayerType = l.options.source.options.type;
|
|
205
189
|
if (isLayerProperty) {
|
|
206
|
-
l.ol.set(key, newValue, true);
|
|
207
190
|
if (key === 'visible') {
|
|
208
|
-
|
|
191
|
+
// Exception for layer not in list when the changed layer have a group not displayed
|
|
192
|
+
if (newValue &&
|
|
193
|
+
change.layer.showInLayerList &&
|
|
194
|
+
change.layer.parent &&
|
|
195
|
+
!change.layer.parent.displayed) {
|
|
196
|
+
newValue = change.layer.displayed;
|
|
197
|
+
}
|
|
198
|
+
l.visible = newValue;
|
|
209
199
|
}
|
|
200
|
+
l.ol.set(key, newValue, true);
|
|
210
201
|
if (key === 'minResolution' || key === 'maxResolution') {
|
|
211
202
|
resolutionPropertyHasChanged = true;
|
|
212
203
|
}
|
|
@@ -220,11 +211,10 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
|
|
|
220
211
|
if (lLayerType === 'wms') {
|
|
221
212
|
let appliedOgcFilter;
|
|
222
213
|
if (initiatorIgoLayerSourceType === 'wfs') {
|
|
223
|
-
appliedOgcFilter = ogcFilterWriter.handleOgcFiltersAppliedValue(initiatorIgoLayerOgcFilterableDataSourceOptions,
|
|
224
|
-
.fieldNameGeometry, undefined, map.viewController.getOlProjection());
|
|
214
|
+
appliedOgcFilter = ogcFilterWriter.handleOgcFiltersAppliedValue(initiatorIgoLayerOgcFilterableDataSourceOptions, change.layer.dataSource.options.fieldNameGeometry, undefined, viewController.getOlProjection());
|
|
225
215
|
}
|
|
226
216
|
else if (initiatorIgoLayerSourceType === 'wms') {
|
|
227
|
-
appliedOgcFilter =
|
|
217
|
+
appliedOgcFilter = change.layer.dataSource.ol.getParams().FILTER;
|
|
228
218
|
}
|
|
229
219
|
l.dataSource.ol.updateParams({
|
|
230
220
|
FILTER: appliedOgcFilter
|
|
@@ -234,15 +224,15 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
|
|
|
234
224
|
else if (l.dataSource instanceof WMSDataSource &&
|
|
235
225
|
key === 'timeFilter') {
|
|
236
226
|
l.dataSource.setTimeFilter(newValue, false);
|
|
237
|
-
const appliedTimeFilter =
|
|
227
|
+
const appliedTimeFilter = change.layer.ol.getSource().getParams().TIME;
|
|
238
228
|
l.dataSource.ol.updateParams({ TIME: appliedTimeFilter });
|
|
239
229
|
}
|
|
240
230
|
}
|
|
241
231
|
}
|
|
242
232
|
});
|
|
243
233
|
if (resolutionPropertyHasChanged) {
|
|
244
|
-
|
|
234
|
+
viewController.resolution$.next(viewController.resolution$.value);
|
|
245
235
|
}
|
|
246
236
|
}
|
|
247
237
|
}
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIs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SSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHtcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XG4gIHJldHVybiBtYXAubGF5ZXJzLmZpbmQoKGwpID0+IGwub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xuICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKChsKSA9PlxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICk7XG4gICAgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGhhc0xpbmtXaXRoUHJvcGVydHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtEZWxldGlvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XG4gIGlmIChsYXllckxMT3B0aW9ucz8ubGlua3MpIHtcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT4gbC5zeW5jZWREZWxldGUpO1xuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaGFzTGlua1dpdGhTeW5jZWREZWxldGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua1dpdGhQcm9wZXJ0eShsYXllclRvVXNlLCBwcm9wZXJ0eSkpIHtcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgY29uc3QgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+XG4gICAgICAgICAgICBsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJlxuICAgICAgICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocGFyZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtcbiAgICAgICAgbGF5ZXIudGl0bGUgfHwgbGF5ZXIuaWRcbiAgICAgIH0gbXVzdCBvbmx5IGhhdmUgMSBwYXJlbnQgKCR7cGFyZW50cy5tYXAoKHApID0+IHAudGl0bGUgfHwgcC5pZCl9KVxuICAgICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcbiAgICAgICAgICAgIH0pIHdpbGwgYmUgdXNlIHRvIHN5bmMgcHJvcGVydGllc2ApO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50c1swXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllcixcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyW10ge1xuICBsZXQgbGlua2VkSWRzID0gW107XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKSB7XG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXG4gICAgICAubWFwKChsaW5rKSA9PiB7XG4gICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO1xuICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIGxpbmtlZElkcy5tYXAoKGxpZCkgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllcixcbiAga25vd25DaGlsZExheWVyczogTGF5ZXJbXSxcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyW10ge1xuICBjb25zdCBjaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGxheWVyLCBwcm9wZXJ0eSk7XG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIHByb3BlcnR5KTtcbiAgICBpZiAoZGlyZWN0Q2hpbGRMYXllcnMpIHtcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzLCBwcm9wZXJ0eSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlEZWxldGlvbihtYXA6IE1hcEJhc2UsIGxheWVyOiBMYXllcik6IExheWVyIHtcbiAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcbiAgbGV0IHBhcmVudExheWVyID0gbGF5ZXJUb1VzZTtcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcbiAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XG4gICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKG1hcCwgbGF5ZXJUb1VzZSk7XG4gICAgaGFzUGFyZW50TGF5ZXIgPSBwYXJlbnRMYXllciA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICBpZiAoIWhhc1BhcmVudExheWVyKSB7XG4gICAgaWYgKCFsYXllckhhc0xpbmtEZWxldGlvbihsYXllclRvVXNlKSkge1xuICAgICAgbGF5ZXJUb1VzZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGhhc1BhcmVudExheWVyID8gcGFyZW50TGF5ZXIgOiBsYXllclRvVXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllclxuKTogTGF5ZXIge1xuICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgY29uc3QgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke1xuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXG4gICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gbGlua2VkSWRzLm1hcCgobGlkKSA9PiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcCwgbGlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyLFxuICBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdXG4pOiBMYXllcltdIHtcbiAgY29uc3QgY2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBsYXllcik7XG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wpO1xuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xuICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyczogTGF5ZXJbXVxuKSB7XG4gIGNvbnN0IHJvb3RMYXllcnNCeVByb3BlcnR5ID0ge307XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhMaW5rZWRQcm9wZXJ0aWVzKTtcbiAga2V5cy5tYXAoKGspID0+IHtcbiAgICByb290TGF5ZXJzQnlQcm9wZXJ0eVtMaW5rZWRQcm9wZXJ0aWVzW2tdXSA9IFtdO1xuICB9KTtcbiAgbGF5ZXJzXG4gICAgLmZpbHRlcigobCkgPT4gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsKSlcbiAgICAubWFwKChsKSA9PiB7XG4gICAgICBrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGsgPSBMaW5rZWRQcm9wZXJ0aWVzW2tleV07XG4gICAgICAgIGNvbnN0IHBsYnAgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShtYXAsIGwsIGsgYXMgTGlua2VkUHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgICAgICBjb25zdCBsYXllcnNJZCA9IGxheWVycy5tYXAoKGwpID0+IGwuaWQpO1xuICAgICAgICBpZiAocGxicCAmJiAhbGF5ZXJzSWQuaW5jbHVkZXMocGxicC5pZCkpIHtcbiAgICAgICAgICByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXS5wdXNoKHBsYnApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgT2JqZWN0LmtleXMocm9vdExheWVyc0J5UHJvcGVydHkpLm1hcCgoaykgPT4ge1xuICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgIGxheWVycy5tYXAoKGw6IExheWVyKSA9PiBsLm9sLm5vdGlmeShrLCB1bmRlZmluZWQpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKFxuICBtYXA6IE1hcEJhc2UsXG4gIHByb3BlcnR5Q2hhbmdlOiBPYmplY3RFdmVudCxcbiAgaW5pdGlhdG9ySWdvTGF5ZXI6IExheWVyXG4pIHtcbiAgaWYgKCFwcm9wZXJ0eUNoYW5nZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XG4gIGxldCBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xuICBsZXQgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICBjb25zdCBrZXkgPSBwcm9wZXJ0eUNoYW5nZS5rZXk7XG4gIGxldCBuZXdWYWx1ZTtcbiAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XG4gICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICAgIG5ld1ZhbHVlID0gKFxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICAgICkub2djRmlsdGVycztcbiAgfSBlbHNlIGlmIChrZXkgPT09ICd0aW1lRmlsdGVyJykge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgICBuZXdWYWx1ZSA9IChcbiAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICAgKS50aW1lRmlsdGVyO1xuICB9IGVsc2Uge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSBmYWxzZTtcbiAgICBuZXdWYWx1ZSA9IGluaXRpYXRvcklnb0xheWVyLm9sLmdldChrZXkpO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucyA9XG4gICAgZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhpbml0aWF0b3JJZ29MYXllcik7XG4gIGlmIChpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zKSB7XG4gICAgbGV0IHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXG4gICAgICBtYXAsXG4gICAgICBpbml0aWF0b3JJZ29MYXllcixcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXG4gICAgKTtcbiAgICBpZiAoIXJvb3RQYXJlbnRCeVByb3BlcnR5KSB7XG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGluaXRpYXRvcklnb0xheWVyO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYnAgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xuICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgICAgIG1hcCxcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5LFxuICAgICAgY2xicCxcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXG4gICAgKTtcblxuICAgIGxldCByZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID1cbiAgICAgIGluaXRpYXRvcklnb0xheWVyLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcbiAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyA9IGluaXRpYXRvcklnb0xheWVyXG4gICAgICAuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICBjbGJwLm1hcCgobCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpbml0aWF0b3JJZ29MYXllciAmJlxuICAgICAgICBsICYmXG4gICAgICAgIGdldFVpZChpbml0aWF0b3JJZ29MYXllci5vbCkgIT09IGdldFVpZChsPy5vbClcbiAgICAgICkge1xuICAgICAgICBjb25zdCBsTGF5ZXJUeXBlID0gbC5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XG4gICAgICAgIGlmIChpc0xheWVyUHJvcGVydHkpIHtcbiAgICAgICAgICBsLm9sLnNldChrZXksIG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgIGwudmlzaWJsZSQubmV4dChuZXdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChrZXkgPT09ICdtaW5SZXNvbHV0aW9uJyB8fCBrZXkgPT09ICdtYXhSZXNvbHV0aW9uJykge1xuICAgICAgICAgICAgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0YXNvdXJjZVByb3BlcnR5KSB7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKFxuICAgICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgICAgICAgICAgbC5vbC5nZXRTb3VyY2UoKS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgICAgICAgICAgbGV0IGFwcGxpZWRPZ2NGaWx0ZXI7XG4gICAgICAgICAgICAgIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IG9nY0ZpbHRlcldyaXRlci5oYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSlcbiAgICAgICAgICAgICAgICAgICAgLmZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3bXMnKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IChcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgICkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHtcbiAgICAgICAgICAgICAgICBGSUxURVI6IGFwcGxpZWRPZ2NGaWx0ZXJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UgJiZcbiAgICAgICAgICAgIGtleSA9PT0gJ3RpbWVGaWx0ZXInXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0VGltZUZpbHRlcihcbiAgICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgYXBwbGllZFRpbWVGaWx0ZXIgPSAoXG4gICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVNcbiAgICAgICAgICAgICkuZ2V0UGFyYW1zKCkuVElNRTtcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xuICAgICAgbWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLm5leHQobWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBV2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJMUUsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFrQixFQUNsQixLQUFZLEVBQ1osUUFBMEI7SUFFMUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUM3QixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDMUIsT0FBTyxjQUFjLEVBQUUsQ0FBQztRQUN0QixVQUFVLEdBQUcsV0FBVyxDQUFDO1FBQ3pCLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLGNBQWMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3BELFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDbkQsQ0FBQztBQUVE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QUFDLE1BQU0sQ0FBQzs0QkFDMUIsQ0FBQzs0QkFDQSxDQUFDLENBQUMsVUFBNEIsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO2dDQUM5QyxNQUFNLEVBQUUsZ0JBQWdCOzZCQUN6QixDQUFDLENBQUM7d0JBQ0wsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQ0wsQ0FBQyxDQUFDLFVBQVUsWUFBWSxhQUFhO3dCQUNyQyxHQUFHLEtBQUssWUFBWSxFQUNwQixDQUFDO3dCQUNBLENBQUMsQ0FBQyxVQUF1QyxDQUFDLGFBQWEsQ0FDdEQsUUFBUSxFQUNSLEtBQUssQ0FDTixDQUFDO3dCQUNGLE1BQU0saUJBQWlCLEdBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFDMUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ25CLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksNEJBQTRCLEVBQUUsQ0FBQztZQUNqQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHtcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxuICB0eXBlIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgQW55TGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2FueS1sYXllcic7XG5pbXBvcnQgdHlwZSB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQge1xuICBMYXllcnNMaW5rUHJvcGVydGllcyxcbiAgTGlua2VkUHJvcGVydGllc1xufSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xpbmtlZC9saW5rZWQtbGF5ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzTGF5ZXJHcm91cCwgaXNMYXllckl0ZW0gfSBmcm9tICcuLi8uLi9sYXllci91dGlscy9sYXllci51dGlscyc7XG5pbXBvcnQgeyBNYXBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldyc7XG5pbXBvcnQgeyBMYXllcldhdGNoZXJDaGFuZ2UgfSBmcm9tICcuLi91dGlscy9sYXllci13YXRjaGVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KFxuICBsYXllcnM6IEFueUxheWVyW10sXG4gIGxheWVyOiBMYXllcixcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyIHtcbiAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcbiAgbGV0IHBhcmVudExheWVyID0gbGF5ZXJUb1VzZTtcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcbiAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XG4gICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeVByb3BlcnR5KGxheWVycywgbGF5ZXJUb1VzZSwgcHJvcGVydHkpO1xuICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgaWYgKCFoYXNQYXJlbnRMYXllcikge1xuICAgIGlmICghbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KGxheWVyVG9Vc2UsIHByb3BlcnR5KSkge1xuICAgICAgbGF5ZXJUb1VzZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGhhc1BhcmVudExheWVyID8gcGFyZW50TGF5ZXIgOiBsYXllclRvVXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBsYXllcnM6IEFueUxheWVyW10sXG4gIGxheWVyOiBMYXllcixcbiAga25vd25DaGlsZExheWVyczogQW55TGF5ZXJbXSxcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IEFueUxheWVyW10ge1xuICBjb25zdCBjaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShsYXllcnMsIGxheWVyLCBwcm9wZXJ0eSk7XG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICAgICAgbGF5ZXJzLFxuICAgICAgY2wsXG4gICAgICBwcm9wZXJ0eVxuICAgICk7XG4gICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XG4gICAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkobGF5ZXJzLCBjbCwga25vd25DaGlsZExheWVycywgcHJvcGVydHkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24oXG4gIGxheWVyOiBMYXllcixcbiAgbGF5ZXJzOiBBbnlMYXllcltdXG4pOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihsYXllclRvVXNlLCBsYXllcnMpO1xuICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgaWYgKCFoYXNQYXJlbnRMYXllcikge1xuICAgIGlmICghaGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XG4gICAgICBsYXllclRvVXNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXI6IExheWVyLFxuICBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdXG4pOiBMYXllcltdIHtcbiAgY29uc3QgY2hpbGRMYXllcnMgPSBnZXRMYXllcnNCeURlbGV0aW9uKFxuICAgIGxheWVycyxcbiAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rc1xuICApO1xuICBjaGlsZExheWVycy5tYXAoKGNsKSA9PiB7XG4gICAga25vd25DaGlsZExheWVycy5wdXNoKGNsKTtcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldExheWVyc0J5RGVsZXRpb24oXG4gICAgICBsYXllcnMsXG4gICAgICBjbC5vcHRpb25zLmxpbmtlZExheWVycy5saW5rc1xuICAgICk7XG4gICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XG4gICAgICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24obGF5ZXJzLCBjbCwga25vd25DaGlsZExheWVycyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XG59XG5cbmZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcbiAgbGF5ZXJzOiBBbnlMYXllcltdLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgY29uc3QgcGFyZW50cyA9IGxheWVycy5maWx0ZXIoKHBsKSA9PiB7XG4gICAgICBpZiAoaXNMYXllckdyb3VwKHBsKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW5rZWRMYXllcnMgPSBwbC5vcHRpb25zLmxpbmtlZExheWVycztcbiAgICAgIGlmIChsaW5rZWRMYXllcnMgJiYgbGlua2VkTGF5ZXJzLmxpbmtzKSB7XG4gICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChcbiAgICAgICAgICAobCkgPT5cbiAgICAgICAgICAgIGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmXG4gICAgICAgICAgICBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pIGFzIExheWVyW107XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XG4gICAgICAgIGxheWVyLnRpdGxlIHx8IGxheWVyLmlkXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcbiAgICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcbiAgICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHNbMF07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBsYXllcnM6IEFueUxheWVyW10sXG4gIGxheWVyOiBMYXllcixcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyW10ge1xuICBsZXQgbGlua2VkSWRzID0gW107XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKSB7XG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXG4gICAgICAubWFwKChsaW5rKSA9PiB7XG4gICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO1xuICAgICAgfSk7XG4gIH1cbiAgY29uc3QgbGF5ZXJJdGVtcyA9IGxheWVycy5maWx0ZXIoKGxheWVyKSA9PiBpc0xheWVySXRlbShsYXllcikpIGFzIExheWVyW107XG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGZpbmRMYXllckJ5TGlua0lkKGxheWVySXRlbXMsIGxpZCkpO1xufVxuXG5mdW5jdGlvbiBsYXllckhhc0xpbmtXaXRoUHJvcGVydHkoXG4gIGxheWVyOiBMYXllcixcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IGJvb2xlYW4ge1xuICBsZXQgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGZhbHNlO1xuICBjb25zdCBsYXllckxMT3B0aW9ucyA9IGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXIpO1xuICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XG4gICAgY29uc3QgbGluayA9IGxheWVyTExPcHRpb25zLmxpbmtzLmZpbmQoKGwpID0+XG4gICAgICBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpXG4gICAgKTtcbiAgICBoYXNMaW5rV2l0aFByb3BlcnR5ID0gbGluayA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaGFzTGlua1dpdGhQcm9wZXJ0eTtcbn1cblxuZnVuY3Rpb24gaGFzTGlua0RlbGV0aW9uKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xuICBjb25zdCBsYXllckxMT3B0aW9ucyA9IGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXIpO1xuICByZXR1cm4gbGF5ZXJMTE9wdGlvbnM/LmxpbmtzXG4gICAgPyBsYXllckxMT3B0aW9ucy5saW5rcy5zb21lKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcjogTGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZExheWVyQnlMaW5rSWQobGF5ZXJzOiBMYXllcltdLCBpZDogc3RyaW5nKSB7XG4gIHJldHVybiBsYXllcnMuZmluZCgobCkgPT4gbC5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBpZCk7XG59XG5cbmZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihcbiAgbGF5ZXI6IExheWVyLFxuICBsYXllcnM6IEFueUxheWVyW11cbik6IExheWVyIHtcbiAgaWYgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQpIHtcbiAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xuICAgIGNvbnN0IHBhcmVudHMgPSBsYXllcnMuZmlsdGVyKChwYXJlbnQpID0+IHtcbiAgICAgIGlmIChpc0xheWVyR3JvdXAocGFyZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW5rZWRMYXllcnMgPSBwYXJlbnQub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pIGFzIExheWVyW107XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XG4gICAgICAgIGxheWVyLnRpdGxlIHx8IGxheWVyLmlkXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcbiAgICAgICAgICAsIFRoZSBmaXJzdCBwYXJlbnQgKCR7XG4gICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcbiAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHNbMF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyc0J5RGVsZXRpb24oXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGlua3M6IExheWVyc0xpbmtQcm9wZXJ0aWVzW11cbik6IExheWVyW10ge1xuICByZXR1cm4gbGlua3NcbiAgICA/LmZpbHRlcigobCkgPT4gbC5zeW5jZWREZWxldGUpXG4gICAgLnJlZHVjZSgobGF5ZXJBY2MsIGxpbmspID0+IHtcbiAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IGdldExheWVyc0J5TGluayhsaW5rLCBsYXllcnMpO1xuICAgICAgcmV0dXJuIGxheWVyQWNjLmNvbmNhdChsaW5rZWRMYXllcnMpO1xuICAgIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gZ2V0TGF5ZXJzQnlMaW5rKGxpbms6IExheWVyc0xpbmtQcm9wZXJ0aWVzLCBsYXllcnM6IExheWVyW10pOiBMYXllcltdIHtcbiAgcmV0dXJuIGxpbmsubGlua2VkSWRzLnJlZHVjZSgobGlua2VkTGF5ZXJzLCBpZCkgPT4ge1xuICAgIGNvbnN0IGxpbmtlZExheWVyID0gZmluZExheWVyQnlMaW5rSWQobGF5ZXJzLCBpZCk7XG4gICAgaWYgKGxpbmtlZExheWVyKSB7XG4gICAgICBsaW5rZWRMYXllcnMucHVzaChsaW5rZWRMYXllcik7XG4gICAgfVxuICAgIHJldHVybiBsaW5rZWRMYXllcnM7XG4gIH0sIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UoXG4gIGxheWVyczogQW55TGF5ZXJbXSxcbiAgY2hhbmdlOiBMYXllcldhdGNoZXJDaGFuZ2UsXG4gIHZpZXdDb250cm9sbGVyOiBNYXBWaWV3Q29udHJvbGxlclxuKSB7XG4gIGlmICghY2hhbmdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcbiAgbGV0IGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XG4gIGxldCBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XG4gIGNvbnN0IGtleSA9IGNoYW5nZS5ldmVudC5rZXk7XG4gIGxldCBuZXdWYWx1ZTtcbiAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XG4gICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICAgIG5ld1ZhbHVlID0gKFxuICAgICAgY2hhbmdlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgICApLm9nY0ZpbHRlcnM7XG4gIH0gZWxzZSBpZiAoa2V5ID09PSAndGltZUZpbHRlcicpIHtcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XG4gICAgbmV3VmFsdWUgPSAoXG4gICAgICBjaGFuZ2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgICApLnRpbWVGaWx0ZXI7XG4gIH0gZWxzZSB7XG4gICAgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IGZhbHNlO1xuICAgIG5ld1ZhbHVlID0gY2hhbmdlLmxheWVyLm9sLmdldChrZXkpO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucyA9IGdldExpbmtlZExheWVyc09wdGlvbnMoY2hhbmdlLmxheWVyKTtcbiAgaWYgKGluaXRpYXRvckxpbmtlZExheWVyc09wdGlvbnMpIHtcbiAgICBsZXQgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcbiAgICAgIGxheWVycyxcbiAgICAgIGNoYW5nZS5sYXllcixcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXG4gICAgKTtcbiAgICBpZiAoIXJvb3RQYXJlbnRCeVByb3BlcnR5KSB7XG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGNoYW5nZS5sYXllcjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGJwID0gW3Jvb3RQYXJlbnRCeVByb3BlcnR5XTtcbiAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkoXG4gICAgICBsYXllcnMsXG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSxcbiAgICAgIGNsYnAsXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xuICAgICk7XG5cbiAgICBsZXQgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9XG4gICAgICBjaGFuZ2UubGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xuICAgIGNvbnN0IGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zID0gY2hhbmdlLmxheWVyXG4gICAgICAuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICBjbGJwLm1hcCgobCkgPT4ge1xuICAgICAgaWYgKGNoYW5nZS5sYXllciAmJiBsICYmIGdldFVpZChjaGFuZ2UubGF5ZXIub2wpICE9PSBnZXRVaWQobD8ub2wpKSB7XG4gICAgICAgIGNvbnN0IGxMYXllclR5cGUgPSBsLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcbiAgICAgICAgaWYgKGlzTGF5ZXJQcm9wZXJ0eSkge1xuICAgICAgICAgIGlmIChrZXkgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgICAgLy8gRXhjZXB0aW9uIGZvciBsYXllciBub3QgaW4gbGlzdCB3aGVuIHRoZSBjaGFuZ2VkIGxheWVyIGhhdmUgYSBncm91cCBub3QgZGlzcGxheWVkXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG5ld1ZhbHVlICYmXG4gICAgICAgICAgICAgIGNoYW5nZS5sYXllci5zaG93SW5MYXllckxpc3QgJiZcbiAgICAgICAgICAgICAgY2hhbmdlLmxheWVyLnBhcmVudCAmJlxuICAgICAgICAgICAgICAhY2hhbmdlLmxheWVyLnBhcmVudC5kaXNwbGF5ZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGNoYW5nZS5sYXllci5kaXNwbGF5ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsLnZpc2libGUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbC5vbC5zZXQoa2V5LCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ21pblJlc29sdXRpb24nIHx8IGtleSA9PT0gJ21heFJlc29sdXRpb24nKSB7XG4gICAgICAgICAgICByZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRhc291cmNlUHJvcGVydHkpIHtcbiAgICAgICAgICBpZiAoa2V5ID09PSAnb2djRmlsdGVycycpIHtcbiAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMoXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd2ZzJykge1xuICAgICAgICAgICAgICBsLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd21zJykge1xuICAgICAgICAgICAgICBsZXQgYXBwbGllZE9nY0ZpbHRlcjtcbiAgICAgICAgICAgICAgaWYgKGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWVkT2djRmlsdGVyID0gb2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXG4gICAgICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSkuZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB2aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd21zJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSAoXG4gICAgICAgICAgICAgICAgICBjaGFuZ2UubGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlXG4gICAgICAgICAgICAgICAgKS5vbC5nZXRQYXJhbXMoKS5GSUxURVI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoe1xuICAgICAgICAgICAgICAgIEZJTFRFUjogYXBwbGllZE9nY0ZpbHRlclxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgbC5kYXRhU291cmNlIGluc3RhbmNlb2YgV01TRGF0YVNvdXJjZSAmJlxuICAgICAgICAgICAga2V5ID09PSAndGltZUZpbHRlcidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRUaW1lRmlsdGVyKFxuICAgICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9IChcbiAgICAgICAgICAgICAgY2hhbmdlLmxheWVyLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVNcbiAgICAgICAgICAgICkuZ2V0UGFyYW1zKCkuVElNRTtcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xuICAgICAgdmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQubmV4dCh2aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export class MapBase {
|
|
2
2
|
ol;
|
|
3
3
|
forcedOffline$;
|
|
4
|
-
layers$;
|
|
5
4
|
layersAddedByClick$;
|
|
6
5
|
status$;
|
|
7
6
|
propertyChange$;
|
|
@@ -14,10 +13,12 @@ export class MapBase {
|
|
|
14
13
|
mapCenter$;
|
|
15
14
|
selectedFeatures$;
|
|
16
15
|
bufferDataSource;
|
|
16
|
+
layerWatcher;
|
|
17
|
+
options;
|
|
17
18
|
// Getter
|
|
18
|
-
|
|
19
|
+
layerController;
|
|
19
20
|
projection;
|
|
20
21
|
viewProjection;
|
|
21
22
|
projectionCode;
|
|
22
23
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JBLE1BQU0sT0FBZ0IsT0FBTztJQUMzQixFQUFFLENBQU07SUFDUixjQUFjLENBQTJCO0lBQ3pDLG1CQUFtQixDQUE4QjtJQUNqRCxPQUFPLENBQXlCO0lBQ2hDLGVBQWUsQ0FBOEI7SUFDN0MsT0FBTyxDQUFVO0lBQ2pCLG1CQUFtQixDQUFVO0lBQzdCLG9CQUFvQixDQUFVO0lBQzlCLGNBQWMsQ0FBb0I7SUFDbEMscUJBQXFCLENBQTJCO0lBQ2hELGFBQWEsQ0FBMkI7SUFDeEMsVUFBVSxDQUEyQjtJQUNyQyxpQkFBaUIsQ0FBMkI7SUFDNUMsZ0JBQWdCLENBQW9CO0lBQ3BDLFlBQVksQ0FBZTtJQUNsQixPQUFPLENBQWE7SUFFN0IsU0FBUztJQUNULGVBQWUsQ0FBa0I7SUFDakMsVUFBVSxDQUFTO0lBQ25CLGNBQWMsQ0FBYTtJQUMzQixjQUFjLENBQVM7Q0FXeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBQcm9qZWN0aW9uIH0gZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IExheWVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllci1jb250cm9sbGVyJztcbmltcG9ydCB0eXBlIHsgQW55TGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2FueS1sYXllcic7XG5pbXBvcnQgdHlwZSB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vb3ZlcmxheS9zaGFyZWQvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIsXG4gIE1hcFZpZXdDb250cm9sbGVyXG59IGZyb20gJy4uL3NoYXJlZC9jb250cm9sbGVycyc7XG5pbXBvcnQge1xuICBNYXBDb250cm9sc09wdGlvbnMsXG4gIE1hcEV4dGVudCxcbiAgTWFwT3B0aW9ucyxcbiAgTWFwVmlld09wdGlvbnNcbn0gZnJvbSAnLi4vc2hhcmVkL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGF5ZXJXYXRjaGVyLCBMYXllcldhdGNoZXJDaGFuZ2UgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYXBCYXNlIHtcbiAgb2w6IE1hcDtcbiAgZm9yY2VkT2ZmbGluZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgbGF5ZXJzQWRkZWRCeUNsaWNrJDogQmVoYXZpb3JTdWJqZWN0PEFueUxheWVyW10+O1xuICBzdGF0dXMkOiBTdWJqZWN0PFN1YmplY3RTdGF0dXM+O1xuICBwcm9wZXJ0eUNoYW5nZSQ6IFN1YmplY3Q8TGF5ZXJXYXRjaGVyQ2hhbmdlPjtcbiAgb3ZlcmxheTogT3ZlcmxheTtcbiAgcXVlcnlSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcbiAgc2VhcmNoUmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XG4gIHZpZXdDb250cm9sbGVyOiBNYXBWaWV3Q29udHJvbGxlcjtcbiAgZ2VvbG9jYXRpb25Db250cm9sbGVyOiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7XG4gIHN3aXBlRW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgbWFwQ2VudGVyJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBzZWxlY3RlZEZlYXR1cmVzJDogQmVoYXZpb3JTdWJqZWN0PExheWVyW10+O1xuICBidWZmZXJEYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZTtcbiAgbGF5ZXJXYXRjaGVyOiBMYXllcldhdGNoZXI7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IE1hcE9wdGlvbnM7XG5cbiAgLy8gR2V0dGVyXG4gIGxheWVyQ29udHJvbGxlcjogTGF5ZXJDb250cm9sbGVyO1xuICBwcm9qZWN0aW9uOiBzdHJpbmc7XG4gIHZpZXdQcm9qZWN0aW9uOiBQcm9qZWN0aW9uO1xuICBwcm9qZWN0aW9uQ29kZTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IHNldFRhcmdldChpZDogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgdXBkYXRlVmlldyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucyk6IHZvaWQ7XG4gIGFic3RyYWN0IHNldFZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpOiB2b2lkO1xuICBhYnN0cmFjdCB1cGRhdGVDb250cm9scyh2YWx1ZTogTWFwQ29udHJvbHNPcHRpb25zKTogdm9pZDtcbiAgYWJzdHJhY3QgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBQcm9qZWN0aW9uKTogW251bWJlciwgbnVtYmVyXTtcbiAgYWJzdHJhY3QgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBQcm9qZWN0aW9uKTogTWFwRXh0ZW50O1xuICBhYnN0cmFjdCBnZXRab29tKCk6IG51bWJlcjtcbiAgLyoqIEBkZXByZWNhdGVkIGZpbmQgYSB3YXkgdG8gcmVtb3ZlIHRoaXMgbWV0aG9kLiBGb3Igbm93IHdlIGRpc2NvdXJhZ2UgdG8gdXNlIGl0IHVudGlsIHdlIGZpbmQgdGhlIHdheSB0byByZW1vdmUgaXQgKi9cbiAgYWJzdHJhY3QgZ2V0TGF5ZXJCeU9sVUlkKG9sVUlkOiBzdHJpbmcpOiBBbnlMYXllcjtcbn1cbiJdfQ==
|