@igo2/geo 17.0.0-next.5 → 17.0.0-next.7
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/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +8 -6
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +9 -8
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -2
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +6 -6
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +36 -14
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -1
- package/esm2022/lib/catalog/catalog-library/index.mjs +2 -7
- package/esm2022/lib/catalog/catalog.module.mjs +13 -6
- package/esm2022/lib/catalog/index.mjs +2 -7
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/index.mjs +1 -1
- package/esm2022/lib/datasource/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +5 -5
- package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +5 -5
- package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +5 -5
- package/esm2022/lib/directions/directions-results/index.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +8 -1
- package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +67 -36
- package/esm2022/lib/directions/directions.component.mjs +72 -18
- package/esm2022/lib/directions/directions.module.mjs +4 -10
- package/esm2022/lib/directions/directions.provider.mjs +16 -0
- package/esm2022/lib/directions/index.mjs +2 -1
- package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +11 -19
- package/esm2022/lib/directions/shared/directions.utils.mjs +22 -22
- package/esm2022/lib/directions/shared/index.mjs +1 -1
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +5 -5
- package/esm2022/lib/download/download-button/index.mjs +1 -1
- package/esm2022/lib/download/index.mjs +1 -1
- package/esm2022/lib/download/shared/download.interface.mjs +1 -1
- package/esm2022/lib/download/shared/index.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +8 -5
- package/esm2022/lib/draw/draw/draw.component.mjs +7 -7
- package/esm2022/lib/draw/index.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +7 -6
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +10 -4
- package/esm2022/lib/feature/feature-details/index.mjs +2 -7
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
- package/esm2022/lib/feature/feature.module.mjs +13 -6
- package/esm2022/lib/feature/index.mjs +2 -7
- package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
- package/esm2022/lib/feature/shared/store.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/search.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
- package/esm2022/lib/filter/filter.module.mjs +4 -4
- package/esm2022/lib/filter/index.mjs +2 -36
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +6 -6
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +5 -5
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +7 -7
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +7 -7
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +19 -21
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +6 -6
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +5 -5
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +6 -6
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -5
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +6 -6
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +6 -6
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +10 -10
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +6 -6
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +1 -1
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +6 -6
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -1
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +3 -8
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/index.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +5 -5
- package/esm2022/lib/import-export/export-button/index.mjs +1 -1
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +8 -6
- package/esm2022/lib/import-export/import-export/index.mjs +1 -1
- package/esm2022/lib/import-export/import-export.module.mjs +6 -1
- package/esm2022/lib/import-export/index.mjs +2 -9
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -3
- package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +8 -2
- package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/import-export/shared/index.mjs +1 -1
- package/esm2022/lib/layer/index.mjs +2 -19
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +5 -5
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +8 -6
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +5 -5
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +26 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +6 -6
- package/esm2022/lib/layer/layer.module.mjs +12 -1
- package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +5 -5
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +5 -5
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +9 -9
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
- package/esm2022/lib/map/index.mjs +1 -32
- package/esm2022/lib/map/map.module.mjs +34 -34
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +5 -5
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +5 -5
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +5 -5
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +2 -2
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +8 -8
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer.component.mjs +6 -6
- package/esm2022/lib/measure/shared/index.mjs +1 -1
- package/esm2022/lib/metadata/index.mjs +2 -6
- package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +7 -7
- package/esm2022/lib/metadata/metadata.module.mjs +5 -1
- package/esm2022/lib/metadata/shared/index.mjs +1 -1
- package/esm2022/lib/metadata/shared/metadata.service.mjs +1 -1
- package/esm2022/lib/offline/geoDB/index.mjs +1 -1
- package/esm2022/lib/offline/shared/index.mjs +1 -1
- package/esm2022/lib/overlay/index.mjs +1 -1
- package/esm2022/lib/print/index.mjs +1 -1
- package/esm2022/lib/print/print-form/index.mjs +1 -1
- package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
- package/esm2022/lib/print/shared/index.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +85 -76
- package/esm2022/lib/query/index.mjs +1 -1
- package/esm2022/lib/query/shared/index.mjs +2 -1
- package/esm2022/lib/query/shared/query.directive.mjs +1 -1
- package/esm2022/lib/query/shared/query.enums.mjs +1 -1
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/search/index.mjs +2 -13
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +9 -6
- package/esm2022/lib/search/search-results/index.mjs +2 -7
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +5 -5
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +10 -8
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +5 -4
- package/esm2022/lib/search/search-results/search-results.component.mjs +7 -5
- package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +5 -5
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +5 -5
- package/esm2022/lib/search/search.module.mjs +15 -1
- package/esm2022/lib/search/shared/index.mjs +2 -1
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +2 -2
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.provider.mjs +20 -0
- package/esm2022/lib/search/shared/search.service.mjs +29 -10
- package/esm2022/lib/search/shared/search.utils.mjs +2 -2
- package/esm2022/lib/search/shared/sources/cadastre.mjs +2 -2
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +8 -1
- package/esm2022/lib/search/shared/sources/coordinates.mjs +2 -2
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +11 -1
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
- package/esm2022/lib/search/shared/sources/icherche.mjs +9 -4
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +20 -1
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +11 -1
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +2 -2
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +8 -1
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +3 -3
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +14 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +2 -2
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +8 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +6 -6
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +6 -6
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
- package/esm2022/lib/toast/index.mjs +1 -1
- package/esm2022/lib/toast/toast.component.mjs +6 -4
- package/esm2022/lib/wkt/index.mjs +1 -1
- package/esm2022/lib/wkt/shared/index.mjs +1 -1
- package/esm2022/lib/workspace/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +5 -4
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -2
- package/esm2022/lib/workspace/shared/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -2
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +3 -2
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +3 -3
- package/esm2022/lib/workspace/widgets/index.mjs +1 -1
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +1 -1
- package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
- package/esm2022/lib/workspace/workspace.module.mjs +2 -2
- package/fesm2022/igo2-geo.mjs +30424 -30117
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +2 -2
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +7 -2
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -0
- package/lib/catalog/catalog-library/index.d.ts +1 -3
- package/lib/catalog/catalog.module.d.ts +6 -3
- package/lib/catalog/index.d.ts +1 -2
- package/lib/catalog/shared/catalog.interface.d.ts +1 -1
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -2
- package/lib/directions/directions-sources/directions-source.d.ts +7 -3
- package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
- package/lib/directions/directions-sources/directions-source.provider.d.ts +2 -0
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +19 -10
- package/lib/directions/directions.component.d.ts +15 -3
- package/lib/directions/directions.module.d.ts +5 -6
- package/lib/directions/directions.provider.d.ts +3 -0
- package/lib/directions/index.d.ts +1 -0
- package/lib/directions/shared/directions.interface.d.ts +2 -9
- package/lib/directions/shared/directions.service.d.ts +3 -2
- package/lib/directions/shared/directions.utils.d.ts +1 -1
- package/lib/directions/shared/store.d.ts +1 -1
- package/lib/draw/draw/draw-shorcuts.component.d.ts +2 -0
- package/lib/draw/draw/draw.component.d.ts +1 -1
- package/lib/environment/environment.interface.d.ts +2 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.module.d.ts +3 -0
- package/lib/feature/feature-details/index.d.ts +1 -3
- package/lib/feature/feature-form/feature-form.component.d.ts +1 -2
- package/lib/feature/feature.module.d.ts +6 -3
- package/lib/feature/index.d.ts +1 -2
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/feature.utils.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
- package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
- package/lib/feature/shared/strategies/loading.d.ts +1 -1
- package/lib/feature/shared/strategies/search.d.ts +1 -1
- package/lib/feature/shared/strategies/selection.d.ts +1 -1
- package/lib/filter/filter.module.d.ts +19 -0
- package/lib/filter/index.d.ts +1 -16
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +3 -3
- package/lib/filter/shared/ogc-filter.d.ts +7 -0
- package/lib/filter/shared/ogc-filter.interface.d.ts +2 -3
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -2
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +3 -0
- package/lib/geometry/geometry-form-field/index.d.ts +2 -4
- package/lib/geometry/shared/controls/draw.d.ts +4 -4
- package/lib/geometry/shared/controls/slice.d.ts +4 -4
- package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +2 -2
- package/lib/import-export/import-export.module.d.ts +4 -0
- package/lib/import-export/index.d.ts +1 -4
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +2 -1
- package/lib/import-export/shared/export.utils.d.ts +1 -1
- package/lib/import-export/shared/import.utils.d.ts +1 -1
- package/lib/layer/index.d.ts +1 -8
- package/lib/layer/layer-list/layer-list.component.d.ts +4 -1
- package/lib/layer/layer.module.d.ts +10 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +3 -4
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -2
- package/lib/map/index.d.ts +0 -14
- package/lib/map/map.module.d.ts +32 -15
- package/lib/measure/measurer/measurer.component.d.ts +1 -1
- package/lib/metadata/index.d.ts +1 -2
- package/lib/metadata/metadata.module.d.ts +2 -0
- package/lib/print/shared/print.service.d.ts +11 -7
- package/lib/query/shared/index.d.ts +1 -0
- package/lib/query/shared/query.interfaces.d.ts +1 -2
- package/lib/search/index.d.ts +1 -5
- package/lib/search/search-bar/search-bar.component.d.ts +2 -1
- package/lib/search/search-results/index.d.ts +1 -3
- package/lib/search/search-results/search-results-add-button.component.d.ts +2 -2
- package/lib/search/search-results/search-results.component.d.ts +1 -1
- package/lib/search/search-results/search-results.directive.d.ts +3 -0
- package/lib/search/search.module.d.ts +8 -0
- package/lib/search/shared/index.d.ts +1 -0
- package/lib/search/shared/search-source.service.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +12 -10
- package/lib/search/shared/search.provider.d.ts +8 -0
- package/lib/search/shared/search.service.d.ts +7 -2
- package/lib/search/shared/sources/cadastre.providers.d.ts +2 -0
- package/lib/search/shared/sources/coordinates.providers.d.ts +2 -0
- package/lib/search/shared/sources/icherche-icons.d.ts +7 -0
- package/lib/search/shared/sources/icherche.providers.d.ts +6 -12
- package/lib/search/shared/sources/ilayer.providers.d.ts +2 -0
- package/lib/search/shared/sources/nominatim.providers.d.ts +2 -0
- package/lib/search/shared/sources/source.d.ts +1 -1
- package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
- package/lib/search/shared/sources/storedqueries.providers.d.ts +3 -0
- package/lib/search/shared/sources/workspace.providers.d.ts +2 -0
- package/lib/style/shared/vector/conversion.utils.d.ts +2 -3
- package/lib/toast/toast.component.d.ts +1 -1
- package/lib/workspace/shared/edition-workspace.d.ts +1 -1
- package/lib/workspace/shared/edition-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/feature-workspace.d.ts +1 -1
- package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
- package/lib/workspace/shared/workspace.utils.d.ts +2 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +2 -1
- package/lib/workspace/widgets/widgets.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
- package/lib/workspace/workspace.module.d.ts +1 -1
- package/locale/en.geo.json +6 -1
- package/locale/fr.geo.json +6 -1
- package/package.json +6 -6
- package/style/style.css +2 -1
|
@@ -1,45 +1,85 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
1
|
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
3
2
|
import { Injectable } from '@angular/core';
|
|
4
3
|
import { ConfigService } from '@igo2/core/config';
|
|
5
|
-
import {
|
|
6
|
-
import { Observable } from 'rxjs';
|
|
4
|
+
import { uuid } from '@igo2/utils';
|
|
7
5
|
import { map } from 'rxjs/operators';
|
|
8
|
-
import { Cacheable } from 'ts-cacheable';
|
|
9
6
|
import { DirectionsFormat, SourceDirectionsType } from '../shared/directions.enum';
|
|
10
7
|
import { DirectionsSource } from './directions-source';
|
|
11
8
|
import * as i0 from "@angular/core";
|
|
12
9
|
import * as i1 from "@angular/common/http";
|
|
13
10
|
import * as i2 from "@igo2/core/config";
|
|
14
11
|
export class OsrmDirectionsSource extends DirectionsSource {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
get
|
|
18
|
-
return this.
|
|
19
|
-
}
|
|
20
|
-
set
|
|
21
|
-
this.
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
12
|
+
_http;
|
|
13
|
+
_config;
|
|
14
|
+
get options() {
|
|
15
|
+
return this._options;
|
|
16
|
+
}
|
|
17
|
+
set options(value) {
|
|
18
|
+
this._options = value;
|
|
19
|
+
}
|
|
20
|
+
get sourceName() {
|
|
21
|
+
return this._options.name;
|
|
22
|
+
}
|
|
23
|
+
set sourceName(value) {
|
|
24
|
+
this._options.name = value;
|
|
25
|
+
}
|
|
26
|
+
get baseUrl() {
|
|
27
|
+
return this._options.baseUrl;
|
|
28
|
+
}
|
|
29
|
+
set baseUrl(value) {
|
|
30
|
+
this._options.baseUrl = value;
|
|
31
|
+
}
|
|
32
|
+
get url() {
|
|
33
|
+
return `${this.baseUrl}${this.getEnabledProfile().name}/`;
|
|
34
|
+
}
|
|
35
|
+
get profiles() {
|
|
36
|
+
return this._options.profiles;
|
|
37
|
+
}
|
|
38
|
+
set profiles(value) {
|
|
39
|
+
this._options.profiles = value;
|
|
40
|
+
}
|
|
41
|
+
_options;
|
|
42
|
+
constructor(_http, _config) {
|
|
27
43
|
super();
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
|
|
44
|
+
this._http = _http;
|
|
45
|
+
this._config = _config;
|
|
46
|
+
this._options = this._config.getConfig('directionsSources.osrm');
|
|
47
|
+
if (!this.baseUrl) {
|
|
48
|
+
this.baseUrl = '/apis/itineraire/route/v1/';
|
|
49
|
+
}
|
|
50
|
+
if (!this.sourceName) {
|
|
51
|
+
this.sourceName = 'OSRM Québec';
|
|
52
|
+
}
|
|
53
|
+
if (!this.profiles) {
|
|
54
|
+
const profile = {
|
|
55
|
+
enabled: true,
|
|
56
|
+
name: 'driving'
|
|
57
|
+
};
|
|
58
|
+
this.profiles = [profile];
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (!this.profiles.find((profile) => profile.enabled)) {
|
|
62
|
+
this.profiles[0].enabled = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
getSourceName() {
|
|
67
|
+
return this.sourceName;
|
|
68
|
+
}
|
|
69
|
+
getEnabledProfile() {
|
|
70
|
+
return this.profiles.find((profile) => profile.enabled);
|
|
32
71
|
}
|
|
33
|
-
|
|
34
|
-
return
|
|
72
|
+
getProfileWithAuthorization() {
|
|
73
|
+
return this.profiles.find((profile) => profile.authorization);
|
|
35
74
|
}
|
|
36
75
|
route(coordinates, directionsOptions = {}) {
|
|
37
76
|
const directionsParams = this.getRouteParams(directionsOptions);
|
|
38
77
|
return this.getRoute(coordinates, directionsParams);
|
|
39
78
|
}
|
|
40
79
|
getRoute(coordinates, params) {
|
|
41
|
-
|
|
42
|
-
|
|
80
|
+
const url = this.url;
|
|
81
|
+
return this._http
|
|
82
|
+
.get(url + coordinates.join(';'), {
|
|
43
83
|
params
|
|
44
84
|
})
|
|
45
85
|
.pipe(map((res) => this.extractRoutesData(res)));
|
|
@@ -94,7 +134,7 @@ export class OsrmDirectionsSource extends DirectionsSource {
|
|
|
94
134
|
return {
|
|
95
135
|
id: uuid(),
|
|
96
136
|
title: roadNetworkRoute.legs[0].summary,
|
|
97
|
-
source:
|
|
137
|
+
source: this.url,
|
|
98
138
|
sourceType: SourceDirectionsType.Route,
|
|
99
139
|
order: 1,
|
|
100
140
|
format: DirectionsFormat.GeoJSON,
|
|
@@ -113,16 +153,7 @@ export class OsrmDirectionsSource extends DirectionsSource {
|
|
|
113
153
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OsrmDirectionsSource, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
114
154
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OsrmDirectionsSource });
|
|
115
155
|
}
|
|
116
|
-
__decorate([
|
|
117
|
-
Cacheable({
|
|
118
|
-
maxCacheCount: 20,
|
|
119
|
-
cacheHasher: customCacheHasher
|
|
120
|
-
}),
|
|
121
|
-
__metadata("design:type", Function),
|
|
122
|
-
__metadata("design:paramtypes", [Array, HttpParams]),
|
|
123
|
-
__metadata("design:returntype", Observable)
|
|
124
|
-
], OsrmDirectionsSource.prototype, "getRoute", null);
|
|
125
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: OsrmDirectionsSource, decorators: [{
|
|
126
157
|
type: Injectable
|
|
127
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }]
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3NybS1kaXJlY3Rpb25zLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy1zb3VyY2VzL29zcm0tZGlyZWN0aW9ucy1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFJdkQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUFnQjtJQWE5QztJQUNBO0lBYlYsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztJQUNyQixhQUFhLEdBQ25CLHFFQUFxRSxDQUFDO0lBQ2hFLE9BQU8sQ0FB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QyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtZQUMzQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQy9CLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO1NBQzFDLENBQUM7SUFDSixDQUFDO3VHQXBIVSxvQkFBb0I7MkdBQXBCLG9CQUFvQjs7QUFxQ3ZCO0lBSlAsU0FBUyxDQUFDO1FBQ1QsYUFBYSxFQUFFLEVBQUU7UUFDakIsV0FBVyxFQUFFLGlCQUFpQjtLQUMvQixDQUFDOzs0Q0FHUSxVQUFVO29DQUNqQixVQUFVO29EQU1aOzJGQTlDVSxvQkFBb0I7a0JBRGhDLFVBQVU7MkdBc0NELFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgY3VzdG9tQ2FjaGVIYXNoZXIsIHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhY2hlYWJsZSB9IGZyb20gJ3RzLWNhY2hlYWJsZSc7XG5cbmltcG9ydCB7XG4gIERpcmVjdGlvbnNGb3JtYXQsXG4gIFNvdXJjZURpcmVjdGlvbnNUeXBlXG59IGZyb20gJy4uL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2UgfSBmcm9tICcuL2RpcmVjdGlvbnMtc291cmNlJztcbmltcG9ydCB7IE9zcm1EaXJlY3Rpb25zU291cmNlT3B0aW9ucyB9IGZyb20gJy4vZGlyZWN0aW9ucy1zb3VyY2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9zcm1EaXJlY3Rpb25zU291cmNlIGV4dGVuZHMgRGlyZWN0aW9uc1NvdXJjZSB7XG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZW5hYmxlZCAhPT0gZmFsc2U7XG4gIH1cbiAgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wdGlvbnMuZW5hYmxlZCA9IHZhbHVlO1xuICB9XG4gIHN0YXRpYyBfbmFtZSA9ICdPU1JNIFF1w6liZWMnO1xuICBwcml2YXRlIGRpcmVjdGlvbnNVcmwgPVxuICAgICdodHRwczovL2dlb2VnbC5tc3AuZ291di5xYy5jYS9zZXJ2aWNlcy9pdGluZXJhaXJlL3JvdXRlL3YxL2RyaXZpbmcvJztcbiAgcHJpdmF0ZSBvcHRpb25zOiBPc3JtRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdkaXJlY3Rpb25zU291cmNlcy5vc3JtJykgfHwge307XG4gICAgdGhpcy5kaXJlY3Rpb25zVXJsID0gdGhpcy5vcHRpb25zLnVybCB8fCB0aGlzLmRpcmVjdGlvbnNVcmw7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9zcm1EaXJlY3Rpb25zU291cmNlLl9uYW1lO1xuICB9XG5cbiAgcm91dGUoXG4gICAgY29vcmRpbmF0ZXM6IFtudW1iZXIsIG51bWJlcl1bXSxcbiAgICBkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8RGlyZWN0aW9uW10+IHtcbiAgICBjb25zdCBkaXJlY3Rpb25zUGFyYW1zID0gdGhpcy5nZXRSb3V0ZVBhcmFtcyhkaXJlY3Rpb25zT3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGUoY29vcmRpbmF0ZXMsIGRpcmVjdGlvbnNQYXJhbXMpO1xuICB9XG5cbiAgQENhY2hlYWJsZSh7XG4gICAgbWF4Q2FjaGVDb3VudDogMjAsXG4gICAgY2FjaGVIYXNoZXI6IGN1c3RvbUNhY2hlSGFzaGVyXG4gIH0pXG4gIHByaXZhdGUgZ2V0Um91dGUoXG4gICAgY29vcmRpbmF0ZXM6IFtudW1iZXIsIG51bWJlcl1bXSxcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXNcbiAgKTogT2JzZXJ2YWJsZTxEaXJlY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8SlNPTltdPih0aGlzLmRpcmVjdGlvbnNVcmwgKyBjb29yZGluYXRlcy5qb2luKCc7JyksIHtcbiAgICAgICAgcGFyYW1zXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHRoaXMuZXh0cmFjdFJvdXRlc0RhdGEocmVzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Um91dGVzRGF0YShyZXNwb25zZSk6IERpcmVjdGlvbltdIHtcbiAgICBjb25zdCByb3V0ZVJlc3BvbnNlID0gW107XG4gICAgcmVzcG9uc2Uucm91dGVzLmZvckVhY2goKHJvdXRlKSA9PiB7XG4gICAgICByb3V0ZVJlc3BvbnNlLnB1c2godGhpcy5mb3JtYXRSb3V0ZShyb3V0ZSwgcmVzcG9uc2Uud2F5cG9pbnRzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGFyYW1zKGRpcmVjdGlvbnNPcHRpb25zOiBEaXJlY3Rpb25PcHRpb25zID0ge30pOiBIdHRwUGFyYW1zIHtcbiAgICBkaXJlY3Rpb25zT3B0aW9ucy5hbHRlcm5hdGl2ZXMgPVxuICAgICAgZGlyZWN0aW9uc09wdGlvbnMuYWx0ZXJuYXRpdmVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBkaXJlY3Rpb25zT3B0aW9ucy5hbHRlcm5hdGl2ZXNcbiAgICAgICAgOiB0cnVlO1xuICAgIGRpcmVjdGlvbnNPcHRpb25zLnN0ZXBzID1cbiAgICAgIGRpcmVjdGlvbnNPcHRpb25zLnN0ZXBzICE9PSB1bmRlZmluZWQgPyBkaXJlY3Rpb25zT3B0aW9ucy5zdGVwcyA6IHRydWU7XG4gICAgZGlyZWN0aW9uc09wdGlvbnMuZ2VvbWV0cmllcyA9XG4gICAgICBkaXJlY3Rpb25zT3B0aW9ucy5nZW9tZXRyaWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBkaXJlY3Rpb25zT3B0aW9ucy5nZW9tZXRyaWVzXG4gICAgICAgIDogJ2dlb2pzb24nO1xuICAgIGRpcmVjdGlvbnNPcHRpb25zLm92ZXJ2aWV3ID1cbiAgICAgIGRpcmVjdGlvbnNPcHRpb25zLm92ZXJ2aWV3ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBkaXJlY3Rpb25zT3B0aW9ucy5vdmVydmlld1xuICAgICAgICA6IGZhbHNlO1xuICAgIGRpcmVjdGlvbnNPcHRpb25zLmNvbnRpbnVlX3N0cmFpZ2h0ID1cbiAgICAgIGRpcmVjdGlvbnNPcHRpb25zLmNvbnRpbnVlX3N0cmFpZ2h0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBkaXJlY3Rpb25zT3B0aW9ucy5jb250aW51ZV9zdHJhaWdodFxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgYWx0ZXJuYXRpdmVzOiBkaXJlY3Rpb25zT3B0aW9ucy5hbHRlcm5hdGl2ZXMgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBvdmVydmlldzogZGlyZWN0aW9uc09wdGlvbnMub3ZlcnZpZXcgPyAnc2ltcGxpZmllZCcgOiAnZnVsbCcsXG4gICAgICAgIHN0ZXBzOiBkaXJlY3Rpb25zT3B0aW9ucy5zdGVwcyA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgIGdlb21ldHJpZXM6IGRpcmVjdGlvbnNPcHRpb25zLmdlb21ldHJpZXNcbiAgICAgICAgICA/IGRpcmVjdGlvbnNPcHRpb25zLmdlb21ldHJpZXNcbiAgICAgICAgICA6ICdnZW9qc29uJyxcbiAgICAgICAgY29udGludWVfc3RyYWlnaHQ6IGRpcmVjdGlvbnNPcHRpb25zLmNvbnRpbnVlX3N0cmFpZ2h0XG4gICAgICAgICAgPyAndHJ1ZSdcbiAgICAgICAgICA6ICdmYWxzZSdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0Um91dGUocm9hZE5ldHdvcmtSb3V0ZTogYW55LCB3YXlwb2ludHM6IGFueSk6IERpcmVjdGlvbiB7XG4gICAgY29uc3Qgc3RlcHNVSSA9IFtdO1xuICAgIHJvYWROZXR3b3JrUm91dGUubGVncy5mb3JFYWNoKChsZWcpID0+IHtcbiAgICAgIGxlZy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgIHN0ZXBzVUkucHVzaChzdGVwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdXVpZCgpLFxuICAgICAgdGl0bGU6IHJvYWROZXR3b3JrUm91dGUubGVnc1swXS5zdW1tYXJ5LFxuICAgICAgc291cmNlOiBPc3JtRGlyZWN0aW9uc1NvdXJjZS5fbmFtZSxcbiAgICAgIHNvdXJjZVR5cGU6IFNvdXJjZURpcmVjdGlvbnNUeXBlLlJvdXRlLFxuICAgICAgb3JkZXI6IDEsXG4gICAgICBmb3JtYXQ6IERpcmVjdGlvbnNGb3JtYXQuR2VvSlNPTixcbiAgICAgIGljb246ICdkaXJlY3Rpb25zJyxcbiAgICAgIHByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgICAgd2F5cG9pbnRzLFxuICAgICAgZGlzdGFuY2U6IHJvYWROZXR3b3JrUm91dGUuZGlzdGFuY2UsXG4gICAgICBkdXJhdGlvbjogcm9hZE5ldHdvcmtSb3V0ZS5kdXJhdGlvbixcbiAgICAgIGdlb21ldHJ5OiByb2FkTmV0d29ya1JvdXRlLmdlb21ldHJ5LFxuICAgICAgbGVnczogcm9hZE5ldHdvcmtSb3V0ZS5sZWdzLFxuICAgICAgc3RlcHM6IHN0ZXBzVUksXG4gICAgICB3ZWlnaHQ6IHJvYWROZXR3b3JrUm91dGUud2VpZ2h0LFxuICAgICAgd2VpZ2h0X25hbWU6IHJvYWROZXR3b3JrUm91dGUud2VpZ2h0X25hbWVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
158
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3NybS1kaXJlY3Rpb25zLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy1zb3VyY2VzL29zcm0tZGlyZWN0aW9ucy1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSW5DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNyQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBT3ZELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUF3QzlDO0lBQ0E7SUF4Q1YsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFrQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENB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QUFnQixDQUFDLE9BQU87WUFDaEMsSUFBSSxFQUFFLFlBQVk7WUFDbEIsVUFBVSxFQUFFLFdBQVc7WUFDdkIsU0FBUztZQUNULFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ25DLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ25DLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ25DLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO1lBQzNCLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07WUFDL0IsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7U0FDMUMsQ0FBQztJQUNKLENBQUM7dUdBdEtVLG9CQUFvQjsyR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnZ2VvanNvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIERpcmVjdGlvbnNGb3JtYXQsXG4gIFNvdXJjZURpcmVjdGlvbnNUeXBlXG59IGZyb20gJy4uL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2UgfSBmcm9tICcuL2RpcmVjdGlvbnMtc291cmNlJztcbmltcG9ydCB7XG4gIEJhc2VEaXJlY3Rpb25zU291cmNlT3B0aW9uc1Byb2ZpbGUsXG4gIE9zcm1EaXJlY3Rpb25zU291cmNlT3B0aW9uc1xufSBmcm9tICcuL2RpcmVjdGlvbnMtc291cmNlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPc3JtRGlyZWN0aW9uc1NvdXJjZSBleHRlbmRzIERpcmVjdGlvbnNTb3VyY2Uge1xuICBnZXQgb3B0aW9ucygpOiBPc3JtRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgc2V0IG9wdGlvbnModmFsdWU6IE9zcm1EaXJlY3Rpb25zU291cmNlT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzb3VyY2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubmFtZTtcbiAgfVxuXG4gIHNldCBzb3VyY2VOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9vcHRpb25zLm5hbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBiYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuYmFzZVVybDtcbiAgfVxuXG4gIHNldCBiYXNlVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9vcHRpb25zLmJhc2VVcmwgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5iYXNlVXJsfSR7dGhpcy5nZXRFbmFibGVkUHJvZmlsZSgpLm5hbWV9L2A7XG4gIH1cblxuICBnZXQgcHJvZmlsZXMoKTogQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5wcm9maWxlcztcbiAgfVxuXG4gIHNldCBwcm9maWxlcyh2YWx1ZTogQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZVtdKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5wcm9maWxlcyA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9uczogT3NybURpcmVjdGlvbnNTb3VyY2VPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBfY29uZmlnOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX2NvbmZpZy5nZXRDb25maWcoJ2RpcmVjdGlvbnNTb3VyY2VzLm9zcm0nKTtcbiAgICBpZiAoIXRoaXMuYmFzZVVybCkge1xuICAgICAgdGhpcy5iYXNlVXJsID0gJy9hcGlzL2l0aW5lcmFpcmUvcm91dGUvdjEvJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc291cmNlTmFtZSkge1xuICAgICAgdGhpcy5zb3VyY2VOYW1lID0gJ09TUk0gUXXDqWJlYyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByb2ZpbGVzKSB7XG4gICAgICBjb25zdCBwcm9maWxlOiBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlID0ge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBuYW1lOiAnZHJpdmluZydcbiAgICAgIH07XG4gICAgICB0aGlzLnByb2ZpbGVzID0gW3Byb2ZpbGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMucHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5lbmFibGVkKSkge1xuICAgICAgICB0aGlzLnByb2ZpbGVzWzBdLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFNvdXJjZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VOYW1lO1xuICB9XG5cbiAgZ2V0RW5hYmxlZFByb2ZpbGUoKTogQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5lbmFibGVkKTtcbiAgfVxuXG4gIGdldFByb2ZpbGVXaXRoQXV0aG9yaXphdGlvbigpOiBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlcy5maW5kKChwcm9maWxlKSA9PiBwcm9maWxlLmF1dGhvcml6YXRpb24pO1xuICB9XG5cbiAgcm91dGUoXG4gICAgY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10sXG4gICAgZGlyZWN0aW9uc09wdGlvbnM6IERpcmVjdGlvbk9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPERpcmVjdGlvbltdPiB7XG4gICAgY29uc3QgZGlyZWN0aW9uc1BhcmFtcyA9IHRoaXMuZ2V0Um91dGVQYXJhbXMoZGlyZWN0aW9uc09wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlKGNvb3JkaW5hdGVzLCBkaXJlY3Rpb25zUGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGUoXG4gICAgY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10sXG4gICAgcGFyYW1zOiBIdHRwUGFyYW1zXG4gICk6IE9ic2VydmFibGU8RGlyZWN0aW9uW10+IHtcbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IHRoaXMudXJsO1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAuZ2V0PEpTT05bXT4odXJsICsgY29vcmRpbmF0ZXMuam9pbignOycpLCB7XG4gICAgICAgIHBhcmFtc1xuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiB0aGlzLmV4dHJhY3RSb3V0ZXNEYXRhKHJlcykpKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFJvdXRlc0RhdGEocmVzcG9uc2UpOiBEaXJlY3Rpb25bXSB7XG4gICAgY29uc3Qgcm91dGVSZXNwb25zZSA9IFtdO1xuICAgIHJlc3BvbnNlLnJvdXRlcy5mb3JFYWNoKChyb3V0ZSkgPT4ge1xuICAgICAgcm91dGVSZXNwb25zZS5wdXNoKHRoaXMuZm9ybWF0Um91dGUocm91dGUsIHJlc3BvbnNlLndheXBvaW50cykpO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZVJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhcmFtcyhkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9KTogSHR0cFBhcmFtcyB7XG4gICAgZGlyZWN0aW9uc09wdGlvbnMuYWx0ZXJuYXRpdmVzID1cbiAgICAgIGRpcmVjdGlvbnNPcHRpb25zLmFsdGVybmF0aXZlcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGlyZWN0aW9uc09wdGlvbnMuYWx0ZXJuYXRpdmVzXG4gICAgICAgIDogdHJ1ZTtcbiAgICBkaXJlY3Rpb25zT3B0aW9ucy5zdGVwcyA9XG4gICAgICBkaXJlY3Rpb25zT3B0aW9ucy5zdGVwcyAhPT0gdW5kZWZpbmVkID8gZGlyZWN0aW9uc09wdGlvbnMuc3RlcHMgOiB0cnVlO1xuICAgIGRpcmVjdGlvbnNPcHRpb25zLmdlb21ldHJpZXMgPVxuICAgICAgZGlyZWN0aW9uc09wdGlvbnMuZ2VvbWV0cmllcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGlyZWN0aW9uc09wdGlvbnMuZ2VvbWV0cmllc1xuICAgICAgICA6ICdnZW9qc29uJztcbiAgICBkaXJlY3Rpb25zT3B0aW9ucy5vdmVydmlldyA9XG4gICAgICBkaXJlY3Rpb25zT3B0aW9ucy5vdmVydmlldyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGlyZWN0aW9uc09wdGlvbnMub3ZlcnZpZXdcbiAgICAgICAgOiBmYWxzZTtcbiAgICBkaXJlY3Rpb25zT3B0aW9ucy5jb250aW51ZV9zdHJhaWdodCA9XG4gICAgICBkaXJlY3Rpb25zT3B0aW9ucy5jb250aW51ZV9zdHJhaWdodCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGlyZWN0aW9uc09wdGlvbnMuY29udGludWVfc3RyYWlnaHRcbiAgICAgICAgOiBmYWxzZTtcblxuICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgIGFsdGVybmF0aXZlczogZGlyZWN0aW9uc09wdGlvbnMuYWx0ZXJuYXRpdmVzID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgb3ZlcnZpZXc6IGRpcmVjdGlvbnNPcHRpb25zLm92ZXJ2aWV3ID8gJ3NpbXBsaWZpZWQnIDogJ2Z1bGwnLFxuICAgICAgICBzdGVwczogZGlyZWN0aW9uc09wdGlvbnMuc3RlcHMgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBnZW9tZXRyaWVzOiBkaXJlY3Rpb25zT3B0aW9ucy5nZW9tZXRyaWVzXG4gICAgICAgICAgPyBkaXJlY3Rpb25zT3B0aW9ucy5nZW9tZXRyaWVzXG4gICAgICAgICAgOiAnZ2VvanNvbicsXG4gICAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBkaXJlY3Rpb25zT3B0aW9ucy5jb250aW51ZV9zdHJhaWdodFxuICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgOiAnZmFsc2UnXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFJvdXRlKHJvYWROZXR3b3JrUm91dGU6IGFueSwgd2F5cG9pbnRzOiBhbnkpOiBEaXJlY3Rpb24ge1xuICAgIGNvbnN0IHN0ZXBzVUkgPSBbXTtcbiAgICByb2FkTmV0d29ya1JvdXRlLmxlZ3MuZm9yRWFjaCgobGVnKSA9PiB7XG4gICAgICBsZWcuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICBzdGVwc1VJLnB1c2goc3RlcCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgIHRpdGxlOiByb2FkTmV0d29ya1JvdXRlLmxlZ3NbMF0uc3VtbWFyeSxcbiAgICAgIHNvdXJjZTogdGhpcy51cmwsXG4gICAgICBzb3VyY2VUeXBlOiBTb3VyY2VEaXJlY3Rpb25zVHlwZS5Sb3V0ZSxcbiAgICAgIG9yZGVyOiAxLFxuICAgICAgZm9ybWF0OiBEaXJlY3Rpb25zRm9ybWF0Lkdlb0pTT04sXG4gICAgICBpY29uOiAnZGlyZWN0aW9ucycsXG4gICAgICBwcm9qZWN0aW9uOiAnRVBTRzo0MzI2JyxcbiAgICAgIHdheXBvaW50cyxcbiAgICAgIGRpc3RhbmNlOiByb2FkTmV0d29ya1JvdXRlLmRpc3RhbmNlLFxuICAgICAgZHVyYXRpb246IHJvYWROZXR3b3JrUm91dGUuZHVyYXRpb24sXG4gICAgICBnZW9tZXRyeTogcm9hZE5ldHdvcmtSb3V0ZS5nZW9tZXRyeSxcbiAgICAgIGxlZ3M6IHJvYWROZXR3b3JrUm91dGUubGVncyxcbiAgICAgIHN0ZXBzOiBzdGVwc1VJLFxuICAgICAgd2VpZ2h0OiByb2FkTmV0d29ya1JvdXRlLndlaWdodCxcbiAgICAgIHdlaWdodF9uYW1lOiByb2FkTmV0d29ya1JvdXRlLndlaWdodF9uYW1lXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
1
3
|
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
2
4
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
3
|
-
import { EntityStoreWatcher } from '@igo2/common';
|
|
5
|
+
import { EntityStoreWatcher } from '@igo2/common/entity';
|
|
4
6
|
import { LanguageService } from '@igo2/core/language';
|
|
7
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
8
|
+
import { MessageService } from '@igo2/core/message';
|
|
5
9
|
import { ChangeUtils, ObjectUtils } from '@igo2/utils';
|
|
6
10
|
import * as olCondition from 'ol/events/condition';
|
|
7
11
|
import * as olInteraction from 'ol/interaction';
|
|
8
12
|
import * as olProj from 'ol/proj';
|
|
9
|
-
import {
|
|
10
|
-
import { Subject } from 'rxjs';
|
|
13
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
11
14
|
import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
|
|
12
15
|
import { FeatureStoreLoadingStrategy } from '../feature/shared/strategies/loading';
|
|
13
16
|
import { roundCoordTo, stringToLonLat } from '../map';
|
|
@@ -16,25 +19,35 @@ import { SearchService } from '../search/shared/search.service';
|
|
|
16
19
|
import { DirectionsButtonsComponent } from './directions-buttons/directions-buttons.component';
|
|
17
20
|
import { DirectionsInputsComponent } from './directions-inputs/directions-inputs.component';
|
|
18
21
|
import { DirectionsResultsComponent } from './directions-results/directions-results.component';
|
|
22
|
+
import { DirectionsSourceService } from './shared/directions-source.service';
|
|
19
23
|
import { DirectionType, ProposalType } from './shared/directions.enum';
|
|
20
24
|
import { DirectionsService } from './shared/directions.service';
|
|
21
25
|
import { addDirectionToRoutesFeatureStore, addStopToStopsFeatureStore, addStopToStore, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, updateStoreSorting } from './shared/directions.utils';
|
|
22
26
|
import { RoutesFeatureStore, StepFeatureStore, StopsFeatureStore, StopsStore } from './shared/store';
|
|
23
27
|
import * as i0 from "@angular/core";
|
|
24
|
-
import * as i1 from "@
|
|
25
|
-
import * as i2 from "
|
|
26
|
-
import * as i3 from "
|
|
27
|
-
import * as i4 from "
|
|
28
|
-
import * as i5 from "
|
|
29
|
-
import * as i6 from "
|
|
28
|
+
import * as i1 from "@angular/common/http";
|
|
29
|
+
import * as i2 from "@igo2/core/language";
|
|
30
|
+
import * as i3 from "./shared/directions.service";
|
|
31
|
+
import * as i4 from "./shared/directions-source.service";
|
|
32
|
+
import * as i5 from "../search/shared/search.service";
|
|
33
|
+
import * as i6 from "../query/shared/query.service";
|
|
34
|
+
import * as i7 from "@igo2/core/message";
|
|
35
|
+
import * as i8 from "@angular/common";
|
|
36
|
+
import * as i9 from "@angular/material/slide-toggle";
|
|
37
|
+
import * as i10 from "@ngx-translate/core";
|
|
30
38
|
export class DirectionsComponent {
|
|
31
39
|
cdRef;
|
|
40
|
+
http;
|
|
32
41
|
languageService;
|
|
33
42
|
directionsService;
|
|
43
|
+
directionsSourceService;
|
|
34
44
|
searchService;
|
|
35
45
|
queryService;
|
|
46
|
+
messageService;
|
|
36
47
|
watcher;
|
|
37
48
|
projection = 'EPSG:4326';
|
|
49
|
+
hasOsrmPrivateAccess = false;
|
|
50
|
+
twoSourcesAvailable = false;
|
|
38
51
|
zoomRoute$$;
|
|
39
52
|
storeEmpty$$;
|
|
40
53
|
storeChange$$;
|
|
@@ -46,6 +59,7 @@ export class DirectionsComponent {
|
|
|
46
59
|
isTranslating = false;
|
|
47
60
|
previousStops = [];
|
|
48
61
|
searchs$$ = [];
|
|
62
|
+
authenticated$$;
|
|
49
63
|
contextUri;
|
|
50
64
|
stopsStore;
|
|
51
65
|
stopsFeatureStore;
|
|
@@ -55,6 +69,7 @@ export class DirectionsComponent {
|
|
|
55
69
|
length = 2;
|
|
56
70
|
coordRoundedDecimals = 6;
|
|
57
71
|
zoomToActiveRoute$ = new Subject();
|
|
72
|
+
authenticated$;
|
|
58
73
|
/**
|
|
59
74
|
* Wheter one of the direction control is active
|
|
60
75
|
* @internal
|
|
@@ -65,14 +80,38 @@ export class DirectionsComponent {
|
|
|
65
80
|
get interactions() {
|
|
66
81
|
return [this.selectStopInteraction, this.translateStop, this.selectedRoute];
|
|
67
82
|
}
|
|
68
|
-
|
|
83
|
+
get enabledProfileHasAuthorization() {
|
|
84
|
+
return this.directionsSourceService.sources[0].getEnabledProfile()
|
|
85
|
+
.authorization;
|
|
86
|
+
}
|
|
87
|
+
constructor(cdRef, http, languageService, directionsService, directionsSourceService, searchService, queryService, messageService) {
|
|
69
88
|
this.cdRef = cdRef;
|
|
89
|
+
this.http = http;
|
|
70
90
|
this.languageService = languageService;
|
|
71
91
|
this.directionsService = directionsService;
|
|
92
|
+
this.directionsSourceService = directionsSourceService;
|
|
72
93
|
this.searchService = searchService;
|
|
73
94
|
this.queryService = queryService;
|
|
95
|
+
this.messageService = messageService;
|
|
74
96
|
}
|
|
75
97
|
ngOnInit() {
|
|
98
|
+
this.authenticated$$ = this.authenticated$.subscribe((authenticated) => {
|
|
99
|
+
if (authenticated) {
|
|
100
|
+
const profileWithAuth = this.directionsSourceService.sources[0].getProfileWithAuthorization();
|
|
101
|
+
if (profileWithAuth) {
|
|
102
|
+
this.http
|
|
103
|
+
.get(profileWithAuth.authorization.url)
|
|
104
|
+
.subscribe((user) => {
|
|
105
|
+
this.hasOsrmPrivateAccess =
|
|
106
|
+
user[profileWithAuth.authorization.property];
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
this.twoSourcesAvailable =
|
|
112
|
+
this.directionsSourceService.sources[0].profiles.length === 2
|
|
113
|
+
? true
|
|
114
|
+
: false;
|
|
76
115
|
this.queryService.queryEnabled = false;
|
|
77
116
|
this.initEntityStores();
|
|
78
117
|
setTimeout(() => {
|
|
@@ -88,6 +127,7 @@ export class DirectionsComponent {
|
|
|
88
127
|
this.storeChange$$.unsubscribe();
|
|
89
128
|
this.routesQueries$$.map((u) => u.unsubscribe());
|
|
90
129
|
this.zoomRoute$$.unsubscribe();
|
|
130
|
+
this.authenticated$$.unsubscribe();
|
|
91
131
|
this.freezeStores();
|
|
92
132
|
}
|
|
93
133
|
freezeStores() {
|
|
@@ -310,10 +350,10 @@ export class DirectionsComponent {
|
|
|
310
350
|
this.routesQueries$$.map((u) => u.unsubscribe());
|
|
311
351
|
const routeResponse = this.directionsService.route(roundedCoordinates, isOverview ? overviewDirectionsOptions : undefined);
|
|
312
352
|
if (routeResponse) {
|
|
313
|
-
|
|
353
|
+
this.routesQueries$$.push(routeResponse.subscribe((directions) => {
|
|
314
354
|
this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());
|
|
315
355
|
directions.map((direction) => addDirectionToRoutesFeatureStore(this.routesFeatureStore, direction, this.projection, direction === directions[0] ? true : false));
|
|
316
|
-
}))
|
|
356
|
+
}));
|
|
317
357
|
}
|
|
318
358
|
}
|
|
319
359
|
addStopOverlay(stop) {
|
|
@@ -326,19 +366,31 @@ export class DirectionsComponent {
|
|
|
326
366
|
? ol.addInteraction(interaction)
|
|
327
367
|
: ol.removeInteraction(interaction));
|
|
328
368
|
}
|
|
329
|
-
|
|
330
|
-
|
|
369
|
+
onTogglePrivateModeControl(isActive) {
|
|
370
|
+
this.directionsSourceService.sources[0].profiles.forEach((profile) => (profile.enabled = false));
|
|
371
|
+
if (isActive) {
|
|
372
|
+
this.directionsSourceService.sources[0].profiles.find((profile) => profile.authorization).enabled = true;
|
|
373
|
+
this.messageService.alert(this.languageService.translate.instant('igo.geo.directionsForm.forestRoadsWarning.text'), this.languageService.translate.instant('igo.geo.directionsForm.forestRoadsWarning.title'));
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
this.directionsSourceService.sources[0].profiles.find((profile) => !profile.authorization).enabled = true;
|
|
377
|
+
}
|
|
378
|
+
this.getRoutes();
|
|
379
|
+
}
|
|
380
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DirectionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.LanguageService }, { token: i3.DirectionsService }, { token: i4.DirectionsSourceService }, { token: i5.SearchService }, { token: i6.QueryService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
381
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: DirectionsComponent, isStandalone: true, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$", authenticated$: "authenticated$" }, ngImport: i0, template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleType' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomToActiveRoute$", "stopsStore", "routesFeatureStore", "stepFeatureStore"] }, { kind: "component", type: DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepFeatureStore"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
|
|
331
382
|
}
|
|
332
383
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DirectionsComponent, decorators: [{
|
|
333
384
|
type: Component,
|
|
334
385
|
args: [{ selector: 'igo-directions', standalone: true, imports: [
|
|
386
|
+
CommonModule,
|
|
335
387
|
MatSlideToggleModule,
|
|
336
388
|
DirectionsButtonsComponent,
|
|
337
389
|
DirectionsInputsComponent,
|
|
338
390
|
DirectionsResultsComponent,
|
|
339
|
-
|
|
340
|
-
], template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"] }]
|
|
341
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.
|
|
391
|
+
IgoLanguageModule
|
|
392
|
+
], template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleType' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"] }]
|
|
393
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.LanguageService }, { type: i3.DirectionsService }, { type: i4.DirectionsSourceService }, { type: i5.SearchService }, { type: i6.QueryService }, { type: i7.MessageService }], propDecorators: { contextUri: [{
|
|
342
394
|
type: Input
|
|
343
395
|
}], stopsStore: [{
|
|
344
396
|
type: Input
|
|
@@ -356,5 +408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
356
408
|
type: Input
|
|
357
409
|
}], zoomToActiveRoute$: [{
|
|
358
410
|
type: Input
|
|
411
|
+
}], authenticated$: [{
|
|
412
|
+
type: Input
|
|
359
413
|
}] } });
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxLQUFLLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FB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QiwwQkFBMEIsc0hBQzFCLGVBQWU7OzJGQUdOLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FHZCxJQUFJLFdBQ1A7d0JBQ1Asb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixlQUFlO3FCQUNoQjsyTUFzQlEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5cbmltcG9ydCB7IEVudGl0eVN0b3JlV2F0Y2hlciB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSAnb2wvQ29sbGVjdGlvbic7XG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcbmltcG9ydCAqIGFzIG9sSW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgU2VsZWN0RXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9TZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XG5pbXBvcnQgeyByb3VuZENvb3JkVG8sIHN0cmluZ1RvTG9uTGF0IH0gZnJvbSAnLi4vbWFwJztcbmltcG9ydCB7IFF1ZXJ5U2VydmljZSB9IGZyb20gJy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2VhcmNoLCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zZWFyY2gvc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi9zZWFyY2gvc2hhcmVkL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMvZGlyZWN0aW9ucy1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cy9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1Jlc3VsdHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cy9kaXJlY3Rpb25zLXJlc3VsdHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvblR5cGUsIFByb3Bvc2FsVHlwZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuZW51bSc7XG5pbXBvcnQge1xuICBEaXJlY3Rpb25PcHRpb25zLFxuICBGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzLFxuICBTdG9wXG59IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGFkZERpcmVjdGlvblRvUm91dGVzRmVhdHVyZVN0b3JlLFxuICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZSxcbiAgYWRkU3RvcFRvU3RvcmUsXG4gIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIGluaXRTdGVwRmVhdHVyZVN0b3JlLFxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXG4gIHVwZGF0ZVN0b3JlU29ydGluZ1xufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLnV0aWxzJztcbmltcG9ydCB7XG4gIFJvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgU3RlcEZlYXR1cmVTdG9yZSxcbiAgU3RvcHNGZWF0dXJlU3RvcmUsXG4gIFN0b3BzU3RvcmVcbn0gZnJvbSAnLi9zaGFyZWQvc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZGlyZWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgRGlyZWN0aW9uc0J1dHRvbnNDb21wb25lbnQsXG4gICAgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHdhdGNoZXI6IEVudGl0eVN0b3JlV2F0Y2hlcjxTdG9wPjtcblxuICBwdWJsaWMgcHJvamVjdGlvbjogc3RyaW5nID0gJ0VQU0c6NDMyNic7XG5cbiAgcHJpdmF0ZSB6b29tUm91dGUkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN0b3JlRW1wdHkkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN0b3JlQ2hhbmdlJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByb3V0ZXNRdWVyaWVzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdG9wSW50ZXJhY3Rpb246IG9sSW50ZXJhY3Rpb24uU2VsZWN0O1xuICBwcml2YXRlIHRyYW5zbGF0ZVN0b3A6IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlO1xuICBwcml2YXRlIHNlbGVjdGVkUm91dGU6IG9sSW50ZXJhY3Rpb24uU2VsZWN0O1xuICBwcml2YXRlIGZvY3VzT25TdG9wOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNUcmFuc2xhdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwcmV2aW91c1N0b3BzOiBTdG9wW10gPSBbXTtcblxuICBwcml2YXRlIHNlYXJjaHMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKSBjb250ZXh0VXJpOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0b3BzU3RvcmU6IFN0b3BzU3RvcmU7XG4gIEBJbnB1dCgpIHN0b3BzRmVhdHVyZVN0b3JlOiBTdG9wc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmU7XG4gIEBJbnB1dCgpIHN0ZXBGZWF0dXJlU3RvcmU6IFN0ZXBGZWF0dXJlU3RvcmU7XG4gIEBJbnB1dCgpIGRlYm91bmNlOiBudW1iZXIgPSAyMDA7XG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyID0gMjtcbiAgQElucHV0KCkgY29vcmRSb3VuZGVkRGVjaW1hbHM6IG51bWJlciA9IDY7XG4gIEBJbnB1dCgpIHpvb21Ub0FjdGl2ZVJvdXRlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRlciBvbmUgb2YgdGhlIGRpcmVjdGlvbiBjb250cm9sIGlzIGFjdGl2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBkaXJlY3Rpb25Db250cm9sSXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQ7XG4gIH1cblxuICBnZXQgaW50ZXJhY3Rpb25zKCk6IG9sSW50ZXJhY3Rpb24uSW50ZXJhY3Rpb25bXSB7XG4gICAgcmV0dXJuIFt0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiwgdGhpcy50cmFuc2xhdGVTdG9wLCB0aGlzLnNlbGVjdGVkUm91dGVdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTZXJ2aWNlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RW50aXR5U3RvcmVzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbml0U3RvcHNGZWF0dXJlU3RvcmUodGhpcy5zdG9wc0ZlYXR1cmVTdG9yZSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICAgICAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICAgICAgaW5pdFN0ZXBGZWF0dXJlU3RvcmUodGhpcy5zdGVwRmVhdHVyZVN0b3JlKTtcbiAgICAgIHRoaXMuaW5pdE9sSW50ZXJhY3Rpb24oKTtcbiAgICB9LCAxKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5zdG9yZUVtcHR5JCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN0b3JlQ2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy56b29tUm91dGUkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZnJlZXplU3RvcmVzKCk7XG4gIH1cblxuICBwcml2YXRlIGZyZWV6ZVN0b3JlcygpIHtcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxuICAgICk7XG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xuICAgIHRoaXMud2F0Y2hlciA9IG5ldyBFbnRpdHlTdG9yZVdhdGNoZXIodGhpcy5zdG9wc1N0b3JlLCB0aGlzLmNkUmVmKTtcbiAgICB0aGlzLm1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCk7XG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcbiAgICB0aGlzLm1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpIHtcbiAgICB0aGlzLnpvb21Sb3V0ZSQkID0gdGhpcy56b29tVG9BY3RpdmVSb3V0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmVcbiAgICAgICAgICAuYWxsKClcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcblxuICAgICAgICBpZiAoYWN0aXZlUm91dGUpIHtcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgIGNvbnN0IHJvdXRlRXh0ZW50ID0gYWN0aXZlUm91dGUub2wuZ2V0R2VvbWV0cnkoKS5nZXRFeHRlbnQoKTtcbiAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuem9vbVRvRXh0ZW50KFxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRPbEludGVyYWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgY29uZGl0aW9uOiAoZXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTdG9wID0gbmV3IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlKHtcbiAgICAgIGZlYXR1cmVzOiB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbi5nZXRGZWF0dXJlcygpXG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGluZycsIChldnQ6IFRyYW5zbGF0ZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmlzVHJhbnNsYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGVlbmQnLCAoZXZ0OiBUcmFuc2xhdGVFdmVudCkgPT4ge1xuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZXZ0LmZlYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZSA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5vbF0sXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgZmlsdGVyOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCd0eXBlJykgPT09IERpcmVjdGlvblR5cGUuUm91dGUgJiZcbiAgICAgICAgICBmZWF0dXJlLmdldCgnYWN0aXZlJykgJiZcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLm9uKCdzZWxlY3QnLCAoZXZ0OiBTZWxlY3RFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNPblN0b3AgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgIG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICAgICAgICAoZXZ0IGFzIGFueSkubWFwQnJvd3NlckV2ZW50LmNvb3JkaW5hdGUsXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucHJvamVjdGlvblxuICAgICAgICAgICkgYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFkZGVkU3RvcCA9IGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xuICAgICAgICBhZGRlZFN0b3AuY29vcmRpbmF0ZXMgPSBbc2VsZWN0Q29vcmRpbmF0ZXNbMF0sIHNlbGVjdENvb3JkaW5hdGVzWzFdXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXG4gICAgKTtcbiAgfVxuXG4gIG9uU3RvcElucHV0SGFzRm9jdXNDaGFuZ2Uoc3RvcElucHV0SGFzRm9jdXM6IGJvb2xlYW4pIHtcbiAgICBzdG9wSW5wdXRIYXNGb2N1c1xuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xuICAgIGlmIChmZWF0dXJlcy5nZXRMZW5ndGgoKSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdEZlYXR1cmUgPSBmZWF0dXJlcy5nZXRBcnJheSgpWzBdO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wSWQgPSBmaXJzdEZlYXR1cmUuZ2V0SWQoKTtcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9uQ29vcmRpbmF0ZXMgPSBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgZmlyc3RGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0Q29vcmRpbmF0ZXMoKSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXG4gICAgICB0aGlzLnByb2plY3Rpb25cbiAgICApO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcbiAgICBjb25zdCByb3VuZGVkQ29vcmQgPSByb3VuZENvb3JkVG8oXG4gICAgICB0cmFuc2xhdGlvbkNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgKTtcbiAgICB0cmFuc2xhdGVkU3RvcC5jb29yZGluYXRlcyA9IHJvdW5kZWRDb29yZDtcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcbiAgICB0aGlzLnN0b3BzU3RvcmUudXBkYXRlKHRyYW5zbGF0ZWRTdG9wKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVtcHR5RW50aXR5U3RvcmUoKSB7XG4gICAgLy8gV2F0Y2ggaWYgdGhlIHN0b3JlIGlzIGVtcHR5IHRvIHJlc2V0IGl0XG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnQpID0+IHtcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xuICAgICAgICAgIGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc3RvcHNTdG9yZS5jb3VudCA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xuICAgIHRoaXMuc3RvcmVDaGFuZ2UkJCA9IHRoaXMuc3RvcHNTdG9yZS5lbnRpdGllcyRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9wRGlmZihzdG9wcyk7XG4gICAgICAgIHVwZGF0ZVN0b3JlU29ydGluZyh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xuICAgICAgICB0aGlzLmdldFJvdXRlcyh0aGlzLmlzVHJhbnNsYXRpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICBjYW5jZWxTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZFN0b3BzID0gc3RvcHMubWFwKChzdG9wOiBTdG9wKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcbiAgICAgICdjb29yZGluYXRlcydcbiAgICBdKTtcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcbiAgICBpZiAoc3RvcElkVG9Qcm9jZXNzKSB7XG4gICAgICBzdG9wSWRUb1Byb2Nlc3MubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcbiAgICAgICAgaWYgKGNoYW5nZWRTdG9wKSB7XG4gICAgICAgICAgY29uc3Qgc3RvcDogU3RvcCA9IHRoaXMuc3RvcHNTdG9yZS5nZXQoY2hhbmdlZFN0b3AuaWQpO1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XG4gICAgICAgICAgaWYgKCF0ZXJtIHx8IHRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gc3RyaW5nVG9Mb25MYXQoXG4gICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc2VhcmNoZXM6IFJlc2VhcmNoW107XG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UubG9uTGF0KSB7XG4gICAgICAgICAgICBpc0Nvb3JkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzZWFyY2hlcyA9IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2godGVybSwge1xuICAgICAgICAgICAgc2VhcmNoVHlwZTogJ0ZlYXR1cmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxTZWFyY2goKTtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0cyQgPSByZXNlYXJjaGVzLm1hcCgocmVzKSA9PlxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcbiAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcbiAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2VhcmNocyQkID0gcmVxdWVzdHMkLm1hcCgocmVxdWVzdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZmlsdGVyKChyKSA9PlxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXG4gICAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgICA6IHIuZGF0YS5nZW9tZXRyeVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSByZXNbMF0uc291cmNlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlcy5tYXAoKHIpID0+IHIuZGF0YSk7XG4gICAgICAgICAgICAgICAgICBpZiAoIXN0b3Auc2VhcmNoUHJvcG9zYWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IHN0b3Auc2VhcmNoUHJvcG9zYWxzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgKGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkU291cmNlID0gc3RvcC5zZWFyY2hQcm9wb3NhbHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PiBzcC5zb3VyY2UgPT09IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkU291cmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDb29yZCA/IFByb3Bvc2FsVHlwZS5Db29yZCA6IFByb3Bvc2FsVHlwZS5UZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xuICAgIGNvbnN0IHN0b3BzID0gdGhpcy5zdG9wc1N0b3JlLmFsbCgpO1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmVcbiAgICAgIC5hbGwoKVxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BzU3RvcmUuZ2V0KHN0b3BGZWF0dXJlLnByb3BlcnRpZXMuaWQpKSB7XG4gICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWxldGUoc3RvcEZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBzdG9wc1dpdGhvdXRDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gIXN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcEZlYXR1cmUgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgICAgIGlmIChzdG9wRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlcyhpc092ZXJ2aWV3OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWxldGVNYW55KHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkQ29vcmRpbmF0ZXMgPSBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgc3RvcC5jb29yZGluYXRlcyxcbiAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgKTtcbiAgICAgIHJldHVybiByb3VuZGVkQ29vcmQ7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIG92ZXJ2aWV3OiB0cnVlLFxuICAgICAgc3RlcHM6IGZhbHNlLFxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcbiAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbnN0IHJvdXRlUmVzcG9uc2UgPSB0aGlzLmRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxuICAgICAgcm91bmRlZENvb3JkaW5hdGVzLFxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmIChyb3V0ZVJlc3BvbnNlKSB7XG4gICAgICByb3V0ZVJlc3BvbnNlLm1hcCgocmVzKSA9PlxuICAgICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5wdXNoKFxuICAgICAgICAgIHJlcy5zdWJzY3JpYmUoKGRpcmVjdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgICAgICAgZGlyZWN0aW9ucy5tYXAoKGRpcmVjdGlvbikgPT5cbiAgICAgICAgICAgICAgYWRkRGlyZWN0aW9uVG9Sb3V0ZXNGZWF0dXJlU3RvcmUoXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRTdG9wT3ZlcmxheShzdG9wOiBTdG9wKSB7XG4gICAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUoXG4gICAgICBzdG9wLFxuICAgICAgdGhpcy5zdG9wc1N0b3JlLFxuICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZSxcbiAgICAgIHRoaXMucHJvamVjdGlvbixcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIG9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSAhaXNBY3RpdmU7XG4gICAgY29uc3Qgb2wgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2w7XG4gICAgdGhpcy5pbnRlcmFjdGlvbnMubWFwKChpbnRlcmFjdGlvbikgPT5cbiAgICAgIGlzQWN0aXZlXG4gICAgICAgID8gb2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXG4gICAgICAgIDogb2wucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpcmVjdGlvbnMtb3B0aW9uc1wiPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgIFtjaGVja2VkXT1cImRpcmVjdGlvbkNvbnRyb2xJc0FjdGl2ZVwiXG4gICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0udG9nZ2xlQWN0aXZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L21hdC1zbGlkZS10b2dnbGU+XG48L2Rpdj5cblxuPGlnby1kaXJlY3Rpb25zLWJ1dHRvbnNcbiAgW3N0ZXBGZWF0dXJlU3RvcmVdPVwic3RlcEZlYXR1cmVTdG9yZVwiXG4gIFtjb250ZXh0VXJpXT1cImNvbnRleHRVcmlcIlxuICBbem9vbVRvQWN0aXZlUm91dGUkXT1cInpvb21Ub0FjdGl2ZVJvdXRlJFwiXG4gIFtyb3V0ZXNGZWF0dXJlU3RvcmVdPVwicm91dGVzRmVhdHVyZVN0b3JlXCJcbiAgW3N0b3BzU3RvcmVdPVwic3RvcHNTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1idXR0b25zPlxuXG48aWdvLWRpcmVjdGlvbnMtaW5wdXRzXG4gIChzdG9wSW5wdXRIYXNGb2N1cyk9XCJvblN0b3BJbnB1dEhhc0ZvY3VzQ2hhbmdlKCRldmVudClcIlxuICBbY29vcmRSb3VuZGVkRGVjaW1hbHNdPVwiY29vcmRSb3VuZGVkRGVjaW1hbHNcIlxuICBbcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uXCJcbiAgW3N0b3BzRmVhdHVyZVN0b3JlXT1cInN0b3BzRmVhdHVyZVN0b3JlXCJcbiAgW3N0b3BzU3RvcmVdPVwic3RvcHNTdG9yZVwiXG4gIFtkZWJvdW5jZV09XCJkZWJvdW5jZVwiXG4gIFtsZW5ndGhdPVwibGVuZ3RoXCJcbj48L2lnby1kaXJlY3Rpb25zLWlucHV0cz5cblxuPGlnby1kaXJlY3Rpb25zLXJlc3VsdHNcbiAgW3N0ZXBGZWF0dXJlU3RvcmVdPVwic3RlcEZlYXR1cmVTdG9yZVwiXG4gIFtyb3V0ZXNGZWF0dXJlU3RvcmVdPVwicm91dGVzRmVhdHVyZVN0b3JlXCJcbj48L2lnby1kaXJlY3Rpb25zLXJlc3VsdHM+XG4iXX0=
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pF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d0NBLGtTRDJCSSxZQUFZLGtJQUNaLG9CQUFvQixtV0FDcEIsMEJBQTBCLHlLQUMxQix5QkFBeUIsMk1BQ3pCLDBCQUEwQixzSEFDMUIsaUJBQWlCOzsyRkFHUixtQkFBbUI7a0JBZC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixpQkFBaUI7cUJBQ2xCO3VTQXlCUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5cbmltcG9ydCB7IEVudGl0eVN0b3JlV2F0Y2hlciB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgQ2hhbmdlVXRpbHMsIE9iamVjdFV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJztcbmltcG9ydCAqIGFzIG9sQ29uZGl0aW9uIGZyb20gJ29sL2V2ZW50cy9jb25kaXRpb24nO1xuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBTZWxlY3RFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1NlbGVjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1RyYW5zbGF0ZSc7XG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9sb2FkaW5nJztcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xuaW1wb3J0IHsgUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzZWFyY2gsIFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0J1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtYnV0dG9ucy9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNJbnB1dHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtaW5wdXRzL2RpcmVjdGlvbnMtaW5wdXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1yZXN1bHRzL2RpcmVjdGlvbnMtcmVzdWx0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZSB9IGZyb20gJy4vZGlyZWN0aW9ucy1zb3VyY2VzJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy1zb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aW9uT3B0aW9ucyxcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcbiAgU3RvcFxufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQge1xuICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXG4gIGFkZFN0b3BUb1N0b3JlLFxuICBpbml0Um91dGVzRmVhdHVyZVN0b3JlLFxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcbiAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlLFxuICB1cGRhdGVTdG9yZVNvcnRpbmdcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XG5pbXBvcnQge1xuICBSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXG4gIFN0b3BzRmVhdHVyZVN0b3JlLFxuICBTdG9wc1N0b3JlXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50LFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XG5cbiAgcHVibGljIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjQzMjYnO1xuICBwdWJsaWMgaGFzT3NybVByaXZhdGVBY2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHR3b1NvdXJjZXNBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHpvb21Sb3V0ZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVDaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlc1F1ZXJpZXMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIHNlbGVjdFN0b3BJbnRlcmFjdGlvbjogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgdHJhbnNsYXRlU3RvcDogb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGU7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgZm9jdXNPblN0b3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1RyYW5zbGF0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHByZXZpb3VzU3RvcHM6IFN0b3BbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZWQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbnRleHRVcmk6IHN0cmluZztcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcbiAgQElucHV0KCkgc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoKSByb3V0ZXNGZWF0dXJlU3RvcmU6IFJvdXRlc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgZGVib3VuY2U6IG51bWJlciA9IDIwMDtcbiAgQElucHV0KCkgbGVuZ3RoOiBudW1iZXIgPSAyO1xuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFsczogbnVtYmVyID0gNjtcbiAgQElucHV0KCkgem9vbVRvQWN0aXZlUm91dGUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgQElucHV0KCkgYXV0aGVudGljYXRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hldGVyIG9uZSBvZiB0aGUgZGlyZWN0aW9uIGNvbnRyb2wgaXMgYWN0aXZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGRpcmVjdGlvbkNvbnRyb2xJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvbnMoKTogb2xJbnRlcmFjdGlvbi5JbnRlcmFjdGlvbltdIHtcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XG4gIH1cblxuICBnZXQgZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0uZ2V0RW5hYmxlZFByb2ZpbGUoKVxuICAgICAgLmF1dGhvcml6YXRpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTZXJ2aWNlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlOiBEaXJlY3Rpb25zU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkJCQgPSB0aGlzLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShcbiAgICAgIChhdXRoZW50aWNhdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJvZmlsZVdpdGhBdXRoOiBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlID1cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5nZXRQcm9maWxlV2l0aEF1dGhvcml6YXRpb24oKTtcbiAgICAgICAgICBpZiAocHJvZmlsZVdpdGhBdXRoKSB7XG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgLmdldChwcm9maWxlV2l0aEF1dGguYXV0aG9yaXphdGlvbi51cmwpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc09zcm1Qcml2YXRlQWNjZXNzID1cbiAgICAgICAgICAgICAgICAgIHVzZXJbcHJvZmlsZVdpdGhBdXRoLmF1dGhvcml6YXRpb24ucHJvcGVydHldO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMudHdvU291cmNlc0F2YWlsYWJsZSA9XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMubGVuZ3RoID09PSAyXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlKHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRTdGVwRmVhdHVyZVN0b3JlKHRoaXMuc3RlcEZlYXR1cmVTdG9yZSk7XG4gICAgICB0aGlzLmluaXRPbEludGVyYWN0aW9uKCk7XG4gICAgfSwgMSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmVFbXB0eSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuem9vbVJvdXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZnJlZXplU3RvcmVzKCk7XG4gIH1cblxuICBwcml2YXRlIGZyZWV6ZVN0b3JlcygpIHtcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShcbiAgICAgIEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneVxuICAgICk7XG4gICAgdGhpcy5zdGVwRmVhdHVyZVN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RW50aXR5U3RvcmVzKCkge1xuICAgIHRoaXMud2F0Y2hlciA9IG5ldyBFbnRpdHlTdG9yZVdhdGNoZXIodGhpcy5zdG9wc1N0b3JlLCB0aGlzLmNkUmVmKTtcbiAgICB0aGlzLm1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCk7XG4gICAgdGhpcy5tb25pdG9yRW50aXR5U3RvcmVDaGFuZ2UoKTtcbiAgICB0aGlzLm1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckFjdGl2ZVJvdXRlWm9vbSgpIHtcbiAgICB0aGlzLnpvb21Sb3V0ZSQkID0gdGhpcy56b29tVG9BY3RpdmVSb3V0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmVcbiAgICAgICAgICAuYWxsKClcbiAgICAgICAgICAuZmluZCgocm91dGUpID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcblxuICAgICAgICBpZiAoYWN0aXZlUm91dGUpIHtcbiAgICAgICAgICBhY3RpdmVSb3V0ZS5vbC5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgIGNvbnN0IHJvdXRlRXh0ZW50ID0gYWN0aXZlUm91dGUub2wuZ2V0R2VvbWV0cnkoKS5nZXRFeHRlbnQoKTtcbiAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuem9vbVRvRXh0ZW50KFxuICAgICAgICAgICAgcm91dGVFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRPbEludGVyYWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcbiAgICAgIGxheWVyczogW3RoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgY29uZGl0aW9uOiAoZXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdwb2ludGVybW92ZScgJiYgIWV2ZW50LmRyYWdnaW5nO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTdG9wID0gbmV3IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlKHtcbiAgICAgIGZlYXR1cmVzOiB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbi5nZXRGZWF0dXJlcygpXG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGluZycsIChldnQ6IFRyYW5zbGF0ZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmlzVHJhbnNsYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGVlbmQnLCAoZXZ0OiBUcmFuc2xhdGVFdmVudCkgPT4ge1xuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZXZ0LmZlYXR1cmVzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZSA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5vbF0sXG4gICAgICBjb25kaXRpb246IG9sQ29uZGl0aW9uLmNsaWNrLFxuICAgICAgaGl0VG9sZXJhbmNlOiA3LFxuICAgICAgZmlsdGVyOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCd0eXBlJykgPT09IERpcmVjdGlvblR5cGUuUm91dGUgJiZcbiAgICAgICAgICBmZWF0dXJlLmdldCgnYWN0aXZlJykgJiZcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLm9uKCdzZWxlY3QnLCAoZXZ0OiBTZWxlY3RFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9jdXNPblN0b3AgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvb3JkaW5hdGVzID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgIG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICAgICAgICAoZXZ0IGFzIGFueSkubWFwQnJvd3NlckV2ZW50LmNvb3JkaW5hdGUsXG4gICAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucHJvamVjdGlvblxuICAgICAgICAgICkgYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFkZGVkU3RvcCA9IGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgIGFkZGVkU3RvcC50ZXh0ID0gc2VsZWN0Q29vcmRpbmF0ZXMuam9pbignLCcpO1xuICAgICAgICBhZGRlZFN0b3AuY29vcmRpbmF0ZXMgPSBbc2VsZWN0Q29vcmRpbmF0ZXNbMF0sIHNlbGVjdENvb3JkaW5hdGVzWzFdXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pXG4gICAgKTtcbiAgfVxuXG4gIG9uU3RvcElucHV0SGFzRm9jdXNDaGFuZ2Uoc3RvcElucHV0SGFzRm9jdXM6IGJvb2xlYW4pIHtcbiAgICBzdG9wSW5wdXRIYXNGb2N1c1xuICAgICAgPyB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wucmVtb3ZlSW50ZXJhY3Rpb24oXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKHRoaXMuc2VsZWN0ZWRSb3V0ZSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdG9wVHJhbnNsYXRpb24oZmVhdHVyZXM6IENvbGxlY3Rpb248YW55Pikge1xuICAgIGlmIChmZWF0dXJlcy5nZXRMZW5ndGgoKSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdEZlYXR1cmUgPSBmZWF0dXJlcy5nZXRBcnJheSgpWzBdO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wSWQgPSBmaXJzdEZlYXR1cmUuZ2V0SWQoKTtcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9uQ29vcmRpbmF0ZXMgPSBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgZmlyc3RGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0Q29vcmRpbmF0ZXMoKSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXG4gICAgICB0aGlzLnByb2plY3Rpb25cbiAgICApO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldCh0cmFuc2xhdGVkU3RvcElkKTtcbiAgICBjb25zdCByb3VuZGVkQ29vcmQgPSByb3VuZENvb3JkVG8oXG4gICAgICB0cmFuc2xhdGlvbkNvb3JkaW5hdGVzIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgKTtcbiAgICB0cmFuc2xhdGVkU3RvcC5jb29yZGluYXRlcyA9IHJvdW5kZWRDb29yZDtcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRlZENvb3JkLmpvaW4oJywnKTtcbiAgICB0aGlzLnN0b3BzU3RvcmUudXBkYXRlKHRyYW5zbGF0ZWRTdG9wKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVtcHR5RW50aXR5U3RvcmUoKSB7XG4gICAgLy8gV2F0Y2ggaWYgdGhlIHN0b3JlIGlzIGVtcHR5IHRvIHJlc2V0IGl0XG4gICAgdGhpcy5zdG9yZUVtcHR5JCQgPSB0aGlzLnN0b3BzU3RvcmUuY291bnQkXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnQpID0+IHtcbiAgICAgICAgaWYgKGNvdW50IDwgMikge1xuICAgICAgICAgIGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc3RvcHNTdG9yZS5jb3VudCA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnN0b3JlSW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCkge1xuICAgIHRoaXMuc3RvcmVDaGFuZ2UkJCA9IHRoaXMuc3RvcHNTdG9yZS5lbnRpdGllcyRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0b3BzOiBTdG9wW10pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9wRGlmZihzdG9wcyk7XG4gICAgICAgIHVwZGF0ZVN0b3JlU29ydGluZyh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICB0aGlzLmhhbmRsZVN0b3BzRmVhdHVyZSgpO1xuICAgICAgICB0aGlzLmdldFJvdXRlcyh0aGlzLmlzVHJhbnNsYXRpbmcpO1xuICAgICAgfSk7XG4gIH1cblxuICBjYW5jZWxTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hzJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdG9wRGlmZihzdG9wczogU3RvcFtdKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZFN0b3BzID0gc3RvcHMubWFwKChzdG9wOiBTdG9wKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgICAgLi4ueyBpZDogc3RvcC5pZCwgdGV4dDogc3RvcC50ZXh0LCBjb29yZGluYXRlczogc3RvcC5jb29yZGluYXRlcyB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBkaWZmID0gQ2hhbmdlVXRpbHMuZmluZENoYW5nZXModGhpcy5wcmV2aW91c1N0b3BzLCBzaW1wbGlmaWVkU3RvcHMsIFtcbiAgICAgICdjb29yZGluYXRlcydcbiAgICBdKTtcbiAgICBjb25zdCBzdG9wSWRUb1Byb2Nlc3MgPSBkaWZmLmFkZGVkLmNvbmNhdChkaWZmLm1vZGlmaWVkKTtcbiAgICBpZiAoc3RvcElkVG9Qcm9jZXNzKSB7XG4gICAgICBzdG9wSWRUb1Byb2Nlc3MubWFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlZFN0b3AgPSBjaGFuZ2UubmV3VmFsdWUgYXMgU3RvcDtcbiAgICAgICAgaWYgKGNoYW5nZWRTdG9wKSB7XG4gICAgICAgICAgY29uc3Qgc3RvcDogU3RvcCA9IHRoaXMuc3RvcHNTdG9yZS5nZXQoY2hhbmdlZFN0b3AuaWQpO1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBzdG9wLnRleHQ7XG4gICAgICAgICAgaWYgKCF0ZXJtIHx8IHRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gc3RyaW5nVG9Mb25MYXQoXG4gICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvblxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IHJlc2VhcmNoZXM6IFJlc2VhcmNoW107XG4gICAgICAgICAgbGV0IGlzQ29vcmQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UubG9uTGF0KSB7XG4gICAgICAgICAgICBpc0Nvb3JkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzZWFyY2hlcyA9IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2godGVybSwge1xuICAgICAgICAgICAgc2VhcmNoVHlwZTogJ0ZlYXR1cmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxTZWFyY2goKTtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0cyQgPSByZXNlYXJjaGVzLm1hcCgocmVzKSA9PlxuICAgICAgICAgICAgcmVzLnJlcXVlc3QucGlwZShcbiAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgIGlzQ29vcmRcbiAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2VhcmNocyQkID0gcmVxdWVzdHMkLm1hcCgocmVxdWVzdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSkgPT5cbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZmlsdGVyKChyKSA9PlxuICAgICAgICAgICAgICAgICAgICBpc0Nvb3JkXG4gICAgICAgICAgICAgICAgICAgICAgPyByLmRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50JyAmJiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgICAgICA6IHIuZGF0YS5nZW9tZXRyeVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFNlYXJjaFJlc3VsdFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSByZXNbMF0uc291cmNlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlcy5tYXAoKHIpID0+IHIuZGF0YSk7XG4gICAgICAgICAgICAgICAgICBpZiAoIXN0b3Auc2VhcmNoUHJvcG9zYWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IHN0b3Auc2VhcmNoUHJvcG9zYWxzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgKGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkU291cmNlID0gc3RvcC5zZWFyY2hQcm9wb3NhbHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PiBzcC5zb3VyY2UgPT09IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkU291cmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDb29yZCA/IFByb3Bvc2FsVHlwZS5Db29yZCA6IFByb3Bvc2FsVHlwZS5UZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xuICAgIGNvbnN0IHN0b3BzID0gdGhpcy5zdG9wc1N0b3JlLmFsbCgpO1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmVcbiAgICAgIC5hbGwoKVxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BzU3RvcmUuZ2V0KHN0b3BGZWF0dXJlLnByb3BlcnRpZXMuaWQpKSB7XG4gICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWxldGUoc3RvcEZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBzdG9wc1dpdGhvdXRDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gIXN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcEZlYXR1cmUgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgICAgIGlmIChzdG9wRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlcyhpc092ZXJ2aWV3OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWxldGVNYW55KHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkQ29vcmRpbmF0ZXMgPSBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgc3RvcC5jb29yZGluYXRlcyxcbiAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgKTtcbiAgICAgIHJldHVybiByb3VuZGVkQ29vcmQ7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIG92ZXJ2aWV3OiB0cnVlLFxuICAgICAgc3RlcHM6IGZhbHNlLFxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcbiAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbnN0IHJvdXRlUmVzcG9uc2UgPSB0aGlzLmRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxuICAgICAgcm91bmRlZENvb3JkaW5hdGVzLFxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmIChyb3V0ZVJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5wdXNoKFxuICAgICAgICByb3V0ZVJlc3BvbnNlLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgICAgIGRpcmVjdGlvbnMubWFwKChkaXJlY3Rpb24pID0+XG4gICAgICAgICAgICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZShcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkU3RvcE92ZXJsYXkoc3RvcDogU3RvcCkge1xuICAgIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlKFxuICAgICAgc3RvcCxcbiAgICAgIHRoaXMuc3RvcHNTdG9yZSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsXG4gICAgICB0aGlzLnByb2plY3Rpb24sXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZURpcmVjdGlvbnNDb250cm9sKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xuICAgIGNvbnN0IG9sID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IG9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICAgICA6IG9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5mb3JFYWNoKFxuICAgICAgKHByb2ZpbGUpID0+IChwcm9maWxlLmVuYWJsZWQgPSBmYWxzZSlcbiAgICApO1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLnByb2ZpbGVzLmZpbmQoXG4gICAgICAgIChwcm9maWxlKSA9PiBwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5mb3Jlc3RSb2Fkc1dhcm5pbmcudGV4dCdcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZm9yZXN0Um9hZHNXYXJuaW5nLnRpdGxlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMuZmluZChcbiAgICAgICAgKHByb2ZpbGUpID0+ICFwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuZ2V0Um91dGVzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cbiAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJkaXJlY3Rpb25Db250cm9sSXNBY3RpdmVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwiaGFzT3NybVByaXZhdGVBY2Nlc3MgJiYgdHdvU291cmNlc0F2YWlsYWJsZVwiXG4gICAgW2NoZWNrZWRdPVwiZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uXCJcbiAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgKGNoYW5nZSk9XCJvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0udG9nZ2xlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1yZXN1bHRzXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1yZXN1bHRzPlxuIl19
|