@igo2/geo 18.0.1-next.2 → 18.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/igo2-geo.mjs +5 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +234 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +272 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +19 -0
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +136 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +60 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +232 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +24 -0
- package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
- package/esm2022/lib/catalog/catalog.module.mjs +26 -0
- package/esm2022/lib/catalog/index.mjs +6 -0
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
- package/esm2022/lib/catalog/shared/catalog.service.mjs +706 -0
- package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
- package/esm2022/lib/catalog/shared/index.mjs +5 -0
- package/esm2022/lib/datasource/index.mjs +3 -0
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +17 -0
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +441 -0
- package/esm2022/lib/datasource/shared/datasource.service.mjs +258 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +222 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +118 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +24 -0
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +42 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +52 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +70 -0
- package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +33 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +14 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +60 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +17 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +56 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +137 -0
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +170 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +227 -0
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +224 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +18 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +11 -0
- package/esm2022/lib/datasource/shared/index.mjs +6 -0
- package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
- package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
- package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
- package/esm2022/lib/datasource/utils/index.mjs +2 -0
- package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +246 -0
- package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +312 -0
- package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +192 -0
- package/esm2022/lib/directions/directions-results/index.mjs +2 -0
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -0
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +23 -0
- package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +159 -0
- package/esm2022/lib/directions/directions.component.mjs +437 -0
- package/esm2022/lib/directions/directions.module.mjs +46 -0
- package/esm2022/lib/directions/directions.provider.mjs +16 -0
- package/esm2022/lib/directions/index.mjs +8 -0
- package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
- package/esm2022/lib/directions/shared/directions.enum.mjs +72 -0
- package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
- package/esm2022/lib/directions/shared/directions.service.mjs +239 -0
- package/esm2022/lib/directions/shared/directions.utils.mjs +522 -0
- package/esm2022/lib/directions/shared/index.mjs +6 -0
- package/esm2022/lib/directions/shared/store.mjs +21 -0
- package/esm2022/lib/download/download-button/download-button.component.mjs +48 -0
- package/esm2022/lib/download/download-button/index.mjs +2 -0
- package/esm2022/lib/download/download.module.mjs +24 -0
- package/esm2022/lib/download/index.mjs +3 -0
- package/esm2022/lib/download/shared/download.interface.mjs +2 -0
- package/esm2022/lib/download/shared/download.service.mjs +67 -0
- package/esm2022/lib/download/shared/index.mjs +3 -0
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +42 -0
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +421 -0
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +28 -0
- package/esm2022/lib/draw/draw/draw.component.mjs +1136 -0
- package/esm2022/lib/draw/draw/draw.module.mjs +19 -0
- package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
- package/esm2022/lib/draw/index.mjs +3 -0
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
- package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
- package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
- package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
- package/esm2022/lib/draw/shared/index.mjs +5 -0
- package/esm2022/lib/environment/environment.interface.mjs +2 -0
- package/esm2022/lib/environment/index.mjs +2 -0
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +306 -0
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +56 -0
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +26 -0
- package/esm2022/lib/feature/feature-details/index.mjs +4 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +101 -0
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +19 -0
- package/esm2022/lib/feature/feature.module.mjs +26 -0
- package/esm2022/lib/feature/index.mjs +5 -0
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +28 -0
- package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
- package/esm2022/lib/feature/shared/feature.utils.mjs +332 -0
- package/esm2022/lib/feature/shared/index.mjs +8 -0
- package/esm2022/lib/feature/shared/store.mjs +143 -0
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +119 -0
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +99 -0
- package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +103 -0
- package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
- package/esm2022/lib/feature/shared/strategies/search.mjs +158 -0
- package/esm2022/lib/feature/shared/strategies/selection.mjs +385 -0
- package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
- package/esm2022/lib/filter/filter.module.mjs +131 -0
- package/esm2022/lib/filter/index.mjs +17 -0
- package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +141 -0
- package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +325 -0
- package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +787 -0
- package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +201 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +665 -0
- package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +66 -0
- package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +244 -0
- package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +39 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +32 -0
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +63 -0
- package/esm2022/lib/filter/shared/index.mjs +12 -0
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/ogc-filter.mjs +756 -0
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +47 -0
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
- package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +282 -0
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/time-filter.service.mjs +107 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +875 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +191 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +120 -0
- package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +70 -0
- package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +537 -0
- package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +90 -0
- package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +39 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +24 -0
- package/esm2022/lib/geo.module.mjs +63 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +559 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +170 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +24 -0
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
- package/esm2022/lib/geometry/geometry.module.mjs +18 -0
- package/esm2022/lib/geometry/index.mjs +3 -0
- package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
- package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
- package/esm2022/lib/geometry/shared/controls/modify.mjs +538 -0
- package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +24 -0
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +113 -0
- package/esm2022/lib/geometry/shared/index.mjs +5 -0
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +49 -0
- package/esm2022/lib/import-export/export-button/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +876 -0
- package/esm2022/lib/import-export/import-export/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export.module.mjs +31 -0
- package/esm2022/lib/import-export/index.mjs +5 -0
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +114 -0
- package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
- package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/export.service.mjs +378 -0
- package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
- package/esm2022/lib/import-export/shared/export.utils.mjs +51 -0
- package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
- package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
- package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
- package/esm2022/lib/import-export/shared/index.mjs +11 -0
- package/esm2022/lib/layer/index.mjs +16 -0
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/index.mjs +2 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +196 -0
- package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +287 -0
- package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +85 -0
- package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +104 -0
- package/esm2022/lib/layer/layer-list/index.mjs +2 -0
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +232 -0
- package/esm2022/lib/layer/layer-list-tool/index.mjs +4 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +92 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +61 -0
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +26 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +107 -0
- package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
- package/esm2022/lib/layer/shared/index.mjs +6 -0
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.enums.mjs +2 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +315 -0
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +75 -0
- package/esm2022/lib/layer/shared/layers/index.mjs +18 -0
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +7 -0
- package/esm2022/lib/layer/shared/layers/layer.mjs +178 -0
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +55 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +576 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +112 -0
- package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +54 -0
- package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
- package/esm2022/lib/layer/utils/index.mjs +6 -0
- package/esm2022/lib/layer/utils/layer.utils.mjs +57 -0
- package/esm2022/lib/layer/utils/outputLegend.mjs +32 -0
- package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
- package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +87 -0
- package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +122 -0
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +78 -0
- package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +73 -0
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/index.mjs +3 -0
- package/esm2022/lib/map/index.mjs +14 -0
- package/esm2022/lib/map/info-section/index.mjs +2 -0
- package/esm2022/lib/map/info-section/info-section.component.mjs +15 -0
- package/esm2022/lib/map/map-browser/index.mjs +2 -0
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +67 -0
- package/esm2022/lib/map/map-center/index.mjs +2 -0
- package/esm2022/lib/map/map-center/map-center.component.mjs +56 -0
- package/esm2022/lib/map/map.module.mjs +89 -0
- package/esm2022/lib/map/menu-button/index.mjs +2 -0
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +57 -0
- package/esm2022/lib/map/offline-button/index.mjs +2 -0
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +53 -0
- package/esm2022/lib/map/rotation-button/index.mjs +2 -0
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +58 -0
- package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
- package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
- package/esm2022/lib/map/shared/controllers/view.mjs +361 -0
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +481 -0
- package/esm2022/lib/map/shared/index.mjs +15 -0
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +238 -0
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +122 -0
- package/esm2022/lib/map/shared/map.abstract.mjs +24 -0
- package/esm2022/lib/map/shared/map.enums.mjs +6 -0
- package/esm2022/lib/map/shared/map.interface.mjs +2 -0
- package/esm2022/lib/map/shared/map.mjs +201 -0
- package/esm2022/lib/map/shared/map.service.mjs +29 -0
- package/esm2022/lib/map/shared/map.utils.mjs +455 -0
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +114 -0
- package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
- package/esm2022/lib/map/shared/projection.service.mjs +67 -0
- package/esm2022/lib/map/shared/projection.utils.mjs +122 -0
- package/esm2022/lib/map/swipe-control/index.mjs +2 -0
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +211 -0
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +112 -0
- package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +103 -0
- package/esm2022/lib/map/zoom-button/index.mjs +2 -0
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +35 -0
- package/esm2022/lib/measure/index.mjs +3 -0
- package/esm2022/lib/measure/measure.module.mjs +20 -0
- package/esm2022/lib/measure/measurer/index.mjs +6 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +40 -0
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +38 -0
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +143 -0
- package/esm2022/lib/measure/measurer/measurer.component.mjs +948 -0
- package/esm2022/lib/measure/measurer/measurer.module.mjs +20 -0
- package/esm2022/lib/measure/shared/index.mjs +4 -0
- package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
- package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
- package/esm2022/lib/metadata/index.mjs +4 -0
- package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +96 -0
- package/esm2022/lib/metadata/metadata.module.mjs +29 -0
- package/esm2022/lib/metadata/shared/index.mjs +3 -0
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
- package/esm2022/lib/metadata/shared/metadata.service.mjs +18 -0
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +130 -0
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +172 -0
- package/esm2022/lib/offline/geoDB/index.mjs +5 -0
- package/esm2022/lib/offline/index.mjs +6 -0
- package/esm2022/lib/offline/layerDB/index.mjs +3 -0
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +83 -0
- package/esm2022/lib/offline/offline.interface.mjs +2 -0
- package/esm2022/lib/offline/offline.provider.mjs +50 -0
- package/esm2022/lib/offline/shared/geo-network.service.mjs +79 -0
- package/esm2022/lib/offline/shared/index.mjs +2 -0
- package/esm2022/lib/overlay/index.mjs +2 -0
- package/esm2022/lib/overlay/shared/index.mjs +4 -0
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
- package/esm2022/lib/overlay/shared/overlay.mjs +139 -0
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
- package/esm2022/lib/print/index.mjs +4 -0
- package/esm2022/lib/print/print/print.component.mjs +116 -0
- package/esm2022/lib/print/print-form/index.mjs +2 -0
- package/esm2022/lib/print/print-form/print-form.component.mjs +320 -0
- package/esm2022/lib/print/print.module.mjs +20 -0
- package/esm2022/lib/print/shared/geopdf.mjs +68 -0
- package/esm2022/lib/print/shared/index.mjs +5 -0
- package/esm2022/lib/print/shared/print.interface.mjs +2 -0
- package/esm2022/lib/print/shared/print.service.mjs +1136 -0
- package/esm2022/lib/print/shared/print.type.mjs +30 -0
- package/esm2022/lib/query/index.mjs +2 -0
- package/esm2022/lib/query/query.module.mjs +27 -0
- package/esm2022/lib/query/shared/index.mjs +8 -0
- package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
- package/esm2022/lib/query/shared/query.directive.mjs +290 -0
- package/esm2022/lib/query/shared/query.enums.mjs +32 -0
- package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
- package/esm2022/lib/query/shared/query.service.mjs +753 -0
- package/esm2022/lib/query/shared/query.utils.mjs +45 -0
- package/esm2022/lib/search/index.mjs +10 -0
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +483 -0
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
- package/esm2022/lib/search/search-results/index.mjs +5 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +101 -0
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +433 -0
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +119 -0
- package/esm2022/lib/search/search-results/search-results.component.mjs +297 -0
- package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
- package/esm2022/lib/search/search-results/search-results.module.mjs +20 -0
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +118 -0
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +19 -0
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +264 -0
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +19 -0
- package/esm2022/lib/search/search.module.mjs +77 -0
- package/esm2022/lib/search/shared/index.mjs +10 -0
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +328 -0
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
- package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
- package/esm2022/lib/search/shared/search.enums.mjs +4 -0
- package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/search.provider.mjs +20 -0
- package/esm2022/lib/search/shared/search.service.mjs +149 -0
- package/esm2022/lib/search/shared/search.utils.mjs +92 -0
- package/esm2022/lib/search/shared/sources/cadastre.mjs +142 -0
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +32 -0
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/coordinates.mjs +168 -0
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +52 -0
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/icherche.mjs +816 -0
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +87 -0
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/ilayer.mjs +339 -0
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +58 -0
- package/esm2022/lib/search/shared/sources/index.mjs +23 -0
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +31 -0
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -0
- package/esm2022/lib/search/shared/sources/source.mjs +221 -0
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +454 -0
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +56 -0
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/workspace.mjs +192 -0
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +31 -0
- package/esm2022/lib/style/index.mjs +5 -0
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +360 -0
- package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
- package/esm2022/lib/style/shared/feature/feature-style.mjs +162 -0
- package/esm2022/lib/style/shared/feature/index.mjs +2 -0
- package/esm2022/lib/style/shared/font.enum.mjs +17 -0
- package/esm2022/lib/style/shared/index.mjs +5 -0
- package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +39 -0
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
- package/esm2022/lib/style/shared/vector/index.mjs +4 -0
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/index.mjs +5 -0
- package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
- package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
- package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
- package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +193 -0
- package/esm2022/lib/style/style-modal/index.mjs +5 -0
- package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +142 -0
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
- package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
- package/esm2022/lib/style/style-service/draw-style.service.mjs +255 -0
- package/esm2022/lib/style/style-service/index.mjs +3 -0
- package/esm2022/lib/style/style-service/style.service.mjs +393 -0
- package/esm2022/lib/style/style.module.mjs +46 -0
- package/esm2022/lib/toast/index.mjs +2 -0
- package/esm2022/lib/toast/toast.component.mjs +99 -0
- package/esm2022/lib/toast/toast.module.mjs +24 -0
- package/esm2022/lib/utils/googleLinks.mjs +13 -0
- package/esm2022/lib/utils/id-generator.mjs +112 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/osmLinks.mjs +9 -0
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
- package/esm2022/lib/wkt/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/wkt.service.mjs +235 -0
- package/esm2022/lib/wkt/wkt.module.mjs +25 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +36 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +19 -0
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
- package/esm2022/lib/workspace/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +301 -0
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +720 -0
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +113 -0
- package/esm2022/lib/workspace/shared/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +121 -0
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +248 -0
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +188 -0
- package/esm2022/lib/workspace/widgets/index.mjs +4 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +48 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +19 -0
- package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +172 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +137 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +19 -0
- package/esm2022/lib/workspace/workspace.module.mjs +32 -0
- package/esm2022/public_api.mjs +56 -0
- package/fesm2022/igo2-geo.mjs +717 -691
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
- package/lib/directions/shared/directions.service.d.ts +0 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
- package/lib/style/style-list/style-list.provider.d.ts +8 -1
- package/lib/style/style-list/style-list.service.d.ts +1 -1
- package/package.json +16 -14
- package/src/lib/layer/layer-list/layer-list.theme.scss +1 -2
- package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
- package/src/style/style.scss +1 -1
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { NgFor, NgIf } from '@angular/common';
|
|
2
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
5
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
6
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
7
|
+
import { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';
|
|
8
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
+
import { MatInputModule } from '@angular/material/input';
|
|
10
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
11
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
12
|
+
import { LanguageService } from '@igo2/core/language';
|
|
13
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
14
|
+
import OlFeature from 'ol/Feature';
|
|
15
|
+
import Circle from 'ol/geom/Circle';
|
|
16
|
+
import { fromCircle } from 'ol/geom/Polygon';
|
|
17
|
+
import { transform } from 'ol/proj';
|
|
18
|
+
import { getLength } from 'ol/sphere';
|
|
19
|
+
import { roundCoordTo } from '../../map/shared';
|
|
20
|
+
import { MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureLengthUnit, MeasureLengthUnitAbbreviation } from '../../measure/shared/measure.enum';
|
|
21
|
+
import { measureOlGeometryArea, measureOlGeometryLength, metersToUnit, squareMetersToUnit } from '../../measure/shared/measure.utils';
|
|
22
|
+
import { CoordinatesUnit, GeometryType, LabelType } from '../shared/draw.enum';
|
|
23
|
+
import { DDtoDMS } from '../shared/draw.utils';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
import * as i1 from "@igo2/core/language";
|
|
26
|
+
import * as i2 from "@angular/material/dialog";
|
|
27
|
+
import * as i3 from "@angular/material/button-toggle";
|
|
28
|
+
import * as i4 from "@angular/material/radio";
|
|
29
|
+
import * as i5 from "@angular/material/checkbox";
|
|
30
|
+
import * as i6 from "@angular/material/form-field";
|
|
31
|
+
import * as i7 from "@angular/material/input";
|
|
32
|
+
import * as i8 from "@angular/material/select";
|
|
33
|
+
import * as i9 from "@angular/material/core";
|
|
34
|
+
import * as i10 from "@angular/material/button";
|
|
35
|
+
import * as i11 from "@ngx-translate/core";
|
|
36
|
+
export class DrawPopupComponent {
|
|
37
|
+
languageService;
|
|
38
|
+
dialogRef;
|
|
39
|
+
data;
|
|
40
|
+
confirmFlag = false;
|
|
41
|
+
labelFlag = LabelType.Custom;
|
|
42
|
+
coordinatesMeasureUnit;
|
|
43
|
+
lengthMeasureUnit;
|
|
44
|
+
areaMeasureUnit;
|
|
45
|
+
geometryType = GeometryType;
|
|
46
|
+
labelType = LabelType;
|
|
47
|
+
arrayBuiltInType = [];
|
|
48
|
+
currentLabel;
|
|
49
|
+
currentCoordinates;
|
|
50
|
+
currentArea;
|
|
51
|
+
currentLength;
|
|
52
|
+
olGeometryType = undefined;
|
|
53
|
+
lengthInMeters;
|
|
54
|
+
areaInMetersSquare;
|
|
55
|
+
coordinatesInDD;
|
|
56
|
+
currentCoordinatesUnit;
|
|
57
|
+
longlatDD;
|
|
58
|
+
labelLength;
|
|
59
|
+
polygonCheck = 0; // Count for polygon label types checkboxes
|
|
60
|
+
constructor(languageService, dialogRef, data) {
|
|
61
|
+
this.languageService = languageService;
|
|
62
|
+
this.dialogRef = dialogRef;
|
|
63
|
+
this.data = data;
|
|
64
|
+
this.currentLabel = this.data.olGeometry.get('draw');
|
|
65
|
+
this.labelLength = this.currentLabel ? this.currentLabel.length : 0;
|
|
66
|
+
let olGeometry;
|
|
67
|
+
const projection = this.data.map.ol.getView().getProjection();
|
|
68
|
+
if (this.data.olGeometry instanceof OlFeature) {
|
|
69
|
+
if (this.data.olGeometry.get('rad')) {
|
|
70
|
+
const longitudeLatitude = [
|
|
71
|
+
this.data.olGeometry.get('longitude'),
|
|
72
|
+
this.data.olGeometry.get('latitude')
|
|
73
|
+
];
|
|
74
|
+
this.olGeometryType = GeometryType.Circle;
|
|
75
|
+
olGeometry = new Circle(longitudeLatitude, this.data.olGeometry.get('rad'));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.olGeometryType = this.data.olGeometry.getGeometry().getType();
|
|
79
|
+
olGeometry = this.data.olGeometry.get('geometry');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.olGeometryType = this.data.olGeometry.getType();
|
|
84
|
+
olGeometry = this.data.olGeometry;
|
|
85
|
+
}
|
|
86
|
+
if (this.olGeometryType === GeometryType.Point ||
|
|
87
|
+
this.olGeometryType === GeometryType.Circle) {
|
|
88
|
+
if (this.data.olGeometry instanceof OlFeature) {
|
|
89
|
+
const longitude = this.data.olGeometry.get('longitude');
|
|
90
|
+
const latitude = this.data.olGeometry.get('latitude');
|
|
91
|
+
this.longlatDD = roundCoordTo([longitude, latitude], 5);
|
|
92
|
+
this.coordinatesInDD = '(' + latitude + ', ' + longitude + ')';
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const point4326 = transform(this.data.olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
|
|
96
|
+
this.longlatDD = roundCoordTo([point4326[0], point4326[1]], 5);
|
|
97
|
+
this.coordinatesInDD =
|
|
98
|
+
'(' + this.longlatDD[1] + ', ' + this.longlatDD[0] + ')';
|
|
99
|
+
}
|
|
100
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
101
|
+
}
|
|
102
|
+
if (this.olGeometryType === GeometryType.LineString) {
|
|
103
|
+
this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
|
|
104
|
+
this.currentLength = this.lengthInMeters;
|
|
105
|
+
}
|
|
106
|
+
else if (this.olGeometryType === GeometryType.Polygon) {
|
|
107
|
+
this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
|
|
108
|
+
this.currentLength = this.lengthInMeters;
|
|
109
|
+
this.areaInMetersSquare = measureOlGeometryArea(olGeometry, projection.getCode()).toFixed(2);
|
|
110
|
+
this.currentArea = this.areaInMetersSquare;
|
|
111
|
+
}
|
|
112
|
+
else if (this.olGeometryType === GeometryType.Circle) {
|
|
113
|
+
const circularPolygon = fromCircle(olGeometry, 10000);
|
|
114
|
+
const radius = this.getRadius(circularPolygon);
|
|
115
|
+
this.lengthInMeters = radius.toFixed(2);
|
|
116
|
+
this.currentLength = this.lengthInMeters;
|
|
117
|
+
this.areaInMetersSquare = measureOlGeometryArea(circularPolygon, projection.getCode()).toFixed(2);
|
|
118
|
+
this.currentArea = this.areaInMetersSquare;
|
|
119
|
+
}
|
|
120
|
+
if (data.olGeometry.get('labelType') === LabelType.Coordinates) {
|
|
121
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
122
|
+
this.onLabelTypeChange(LabelType.Coordinates, true);
|
|
123
|
+
this.coordinatesMeasureUnit = data.olGeometry.get('measureUnit');
|
|
124
|
+
}
|
|
125
|
+
else if (data.olGeometry.get('labelType') === LabelType.Length) {
|
|
126
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
127
|
+
this.onLabelTypeChange(LabelType.Length, true);
|
|
128
|
+
this.lengthMeasureUnit = data.olGeometry.get('measureUnit');
|
|
129
|
+
}
|
|
130
|
+
else if (data.olGeometry.get('labelType') === LabelType.Area) {
|
|
131
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
132
|
+
this.onLabelTypeChange(LabelType.Area, true);
|
|
133
|
+
this.areaMeasureUnit = data.olGeometry.get('measureUnit');
|
|
134
|
+
}
|
|
135
|
+
else if (data.olGeometry.get('labelType')?.length === 2) {
|
|
136
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
137
|
+
this.onLabelTypeChange(LabelType.Length, true);
|
|
138
|
+
this.onLabelTypeChange(LabelType.Area, true);
|
|
139
|
+
this.lengthMeasureUnit = data.olGeometry.get('measureUnit')[0];
|
|
140
|
+
this.areaMeasureUnit = data.olGeometry.get('measureUnit')[1];
|
|
141
|
+
}
|
|
142
|
+
this.buildArrayType();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* HTML Interactions
|
|
146
|
+
*/
|
|
147
|
+
cancelDrawing() {
|
|
148
|
+
this.dialogRef.close();
|
|
149
|
+
}
|
|
150
|
+
confirm(input) {
|
|
151
|
+
this.confirmFlag = true;
|
|
152
|
+
if (this.labelFlag === LabelType.Predefined) {
|
|
153
|
+
this.dialogRef.close();
|
|
154
|
+
}
|
|
155
|
+
else if (this.labelFlag === LabelType.Custom) {
|
|
156
|
+
this.dialogRef.close({
|
|
157
|
+
label: input
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else if (this.labelFlag === LabelType.Coordinates) {
|
|
161
|
+
this.dialogRef.close({
|
|
162
|
+
label: this.currentCoordinates,
|
|
163
|
+
measureUnit: this.coordinatesMeasureUnit
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
else if (this.olGeometryType === GeometryType.Polygon) {
|
|
167
|
+
if (this.polygonCheck === 2) {
|
|
168
|
+
this.labelFlag = [LabelType.Length, LabelType.Area];
|
|
169
|
+
this.dialogRef.close({
|
|
170
|
+
label: 'P: ' +
|
|
171
|
+
this.currentLength +
|
|
172
|
+
' ' +
|
|
173
|
+
MeasureLengthUnitAbbreviation[MeasureLengthUnit.Meters] +
|
|
174
|
+
'\n' +
|
|
175
|
+
this.languageService.translate.instant('igo.geo.draw.labelType.A') +
|
|
176
|
+
this.currentArea +
|
|
177
|
+
' ' +
|
|
178
|
+
MeasureAreaUnitAbbreviation[MeasureAreaUnit.SquareMeters],
|
|
179
|
+
measureUnit: [this.lengthMeasureUnit, this.areaMeasureUnit]
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
this.labelFlag === LabelType.Length
|
|
184
|
+
? this.dialogRef.close({
|
|
185
|
+
label: 'P: ' +
|
|
186
|
+
this.currentLength +
|
|
187
|
+
' ' +
|
|
188
|
+
MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
189
|
+
measureUnit: this.lengthMeasureUnit
|
|
190
|
+
})
|
|
191
|
+
: this.dialogRef.close({
|
|
192
|
+
label: this.currentArea +
|
|
193
|
+
' ' +
|
|
194
|
+
MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
|
|
195
|
+
measureUnit: this.areaMeasureUnit
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (this.labelFlag === LabelType.Length) {
|
|
200
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
201
|
+
this.dialogRef.close({
|
|
202
|
+
label: 'R: ' +
|
|
203
|
+
this.currentLength +
|
|
204
|
+
' ' +
|
|
205
|
+
MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
206
|
+
measureUnit: this.lengthMeasureUnit
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
210
|
+
this.dialogRef.close({
|
|
211
|
+
label: this.currentLength +
|
|
212
|
+
' ' +
|
|
213
|
+
MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
214
|
+
measureUnit: this.lengthMeasureUnit
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else if (this.labelFlag === LabelType.Area) {
|
|
219
|
+
this.dialogRef.close({
|
|
220
|
+
label: this.currentArea +
|
|
221
|
+
' ' +
|
|
222
|
+
MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
|
|
223
|
+
measureUnit: this.areaMeasureUnit
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
onLabelTypeChange(labelType, checked) {
|
|
228
|
+
if (labelType !== LabelType.Predefined &&
|
|
229
|
+
labelType !== LabelType.Custom &&
|
|
230
|
+
this.olGeometryType === GeometryType.Polygon) {
|
|
231
|
+
this.arrayBuiltInType.find((type) => type.value === labelType)
|
|
232
|
+
? (this.arrayBuiltInType.find((type) => type.value === labelType).checked = checked)
|
|
233
|
+
: (this.labelFlag = undefined);
|
|
234
|
+
checked
|
|
235
|
+
? (this.labelFlag = labelType)
|
|
236
|
+
: (this.labelFlag = this.arrayBuiltInType.find((type) => type.checked)?.value);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
this.labelFlag = labelType;
|
|
240
|
+
}
|
|
241
|
+
if (labelType === LabelType.Predefined) {
|
|
242
|
+
if (this.olGeometryType === GeometryType.Point) {
|
|
243
|
+
this.labelFlag = LabelType.Coordinates;
|
|
244
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
245
|
+
this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
|
|
246
|
+
}
|
|
247
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
248
|
+
this.labelFlag = LabelType.Length;
|
|
249
|
+
this.currentLength = this.lengthInMeters;
|
|
250
|
+
this.lengthMeasureUnit = MeasureLengthUnit.Meters;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else if (labelType === LabelType.Area) {
|
|
254
|
+
this.currentArea = this.areaInMetersSquare;
|
|
255
|
+
this.areaMeasureUnit = MeasureAreaUnit.SquareMeters;
|
|
256
|
+
}
|
|
257
|
+
else if (labelType === LabelType.Length) {
|
|
258
|
+
this.currentLength = this.lengthInMeters;
|
|
259
|
+
this.lengthMeasureUnit = MeasureLengthUnit.Meters;
|
|
260
|
+
}
|
|
261
|
+
else if (this.labelFlag === LabelType.Coordinates) {
|
|
262
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
263
|
+
this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
|
|
264
|
+
}
|
|
265
|
+
const labeltypes = [this.labelType.Length, this.labelType.Area];
|
|
266
|
+
if (this.olGeometryType === GeometryType.Polygon &&
|
|
267
|
+
labeltypes.includes(labelType)) {
|
|
268
|
+
checked ? (this.polygonCheck += 1) : (this.polygonCheck -= 1);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
this.polygonCheck = 0;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
onChangeLengthUnit(lengthUnit) {
|
|
275
|
+
this.lengthMeasureUnit = lengthUnit;
|
|
276
|
+
this.currentLength = metersToUnit(Number(this.lengthInMeters), lengthUnit).toFixed(2);
|
|
277
|
+
}
|
|
278
|
+
onChangeAreaUnit(areaUnit) {
|
|
279
|
+
this.areaMeasureUnit = areaUnit;
|
|
280
|
+
this.currentArea = squareMetersToUnit(Number(this.areaInMetersSquare), areaUnit).toFixed(2);
|
|
281
|
+
}
|
|
282
|
+
onChangeCoordinateUnit(coordinatesUnit) {
|
|
283
|
+
this.coordinatesMeasureUnit = coordinatesUnit;
|
|
284
|
+
const coordinates = DDtoDMS(this.longlatDD, coordinatesUnit);
|
|
285
|
+
this.currentCoordinates =
|
|
286
|
+
'(' + coordinates[1] + ', ' + coordinates[0] + ')';
|
|
287
|
+
}
|
|
288
|
+
buildArrayType() {
|
|
289
|
+
for (const labelType of Object.values(LabelType)) {
|
|
290
|
+
if (labelType !== LabelType.Custom &&
|
|
291
|
+
labelType !== LabelType.Predefined) {
|
|
292
|
+
this.arrayBuiltInType.push({
|
|
293
|
+
value: labelType,
|
|
294
|
+
checked: this.selectOptions(labelType) ||
|
|
295
|
+
this.labelFlag === labelType ||
|
|
296
|
+
(this.polygonCheck === 2 && labelType !== LabelType.Coordinates)
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
noLabelButton() {
|
|
302
|
+
if (this.labelFlag === LabelType.Predefined ||
|
|
303
|
+
(this.labelFlag === LabelType.Custom && this.labelLength === 0)) {
|
|
304
|
+
return this.languageService.translate.instant('igo.geo.draw.noLabel');
|
|
305
|
+
}
|
|
306
|
+
return 'OK';
|
|
307
|
+
}
|
|
308
|
+
get customOrPredefined() {
|
|
309
|
+
if (this.labelFlag === LabelType.Custom) {
|
|
310
|
+
return LabelType.Custom;
|
|
311
|
+
}
|
|
312
|
+
return LabelType.Predefined;
|
|
313
|
+
}
|
|
314
|
+
optionAvailable(currentOption) {
|
|
315
|
+
switch (this.olGeometryType) {
|
|
316
|
+
case GeometryType.Point:
|
|
317
|
+
if (currentOption === LabelType.Coordinates) {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
return true;
|
|
321
|
+
case GeometryType.LineString:
|
|
322
|
+
if (currentOption === LabelType.Length) {
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
return true;
|
|
326
|
+
case GeometryType.Polygon:
|
|
327
|
+
if (currentOption === LabelType.Coordinates) {
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
return false;
|
|
331
|
+
default:
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
get allLengthUnits() {
|
|
336
|
+
return Object.values(MeasureLengthUnit);
|
|
337
|
+
}
|
|
338
|
+
getLengthUnitEnum(lengthUnit) {
|
|
339
|
+
return MeasureLengthUnitAbbreviation[lengthUnit];
|
|
340
|
+
}
|
|
341
|
+
get allAreaUnits() {
|
|
342
|
+
return Object.values(MeasureAreaUnit);
|
|
343
|
+
}
|
|
344
|
+
get allCoordinatesUnits() {
|
|
345
|
+
return Object.values(CoordinatesUnit);
|
|
346
|
+
}
|
|
347
|
+
getAreaUnitEnum(areaUnit) {
|
|
348
|
+
return MeasureAreaUnitAbbreviation[areaUnit];
|
|
349
|
+
}
|
|
350
|
+
getRadius(olGeometry) {
|
|
351
|
+
const length = getLength(olGeometry);
|
|
352
|
+
return Number(length / (2 * Math.PI));
|
|
353
|
+
}
|
|
354
|
+
get lengthLabelT() {
|
|
355
|
+
if (this.olGeometryType === GeometryType.Polygon) {
|
|
356
|
+
return this.languageService.translate.instant('igo.geo.measure.perimeter');
|
|
357
|
+
}
|
|
358
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
359
|
+
return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
|
|
360
|
+
}
|
|
361
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
|
|
362
|
+
}
|
|
363
|
+
getLabelLength(event) {
|
|
364
|
+
this.labelLength = event.length;
|
|
365
|
+
}
|
|
366
|
+
selectOptions(option) {
|
|
367
|
+
if (this.olGeometryType === GeometryType.Point) {
|
|
368
|
+
return option === LabelType.Coordinates;
|
|
369
|
+
}
|
|
370
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
371
|
+
return option === LabelType.Length;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
getProperLengthLabel(option) {
|
|
375
|
+
if (option === LabelType.Length) {
|
|
376
|
+
if (this.olGeometryType === GeometryType.Polygon) {
|
|
377
|
+
return this.languageService.translate.instant('igo.geo.measure.perimeter');
|
|
378
|
+
}
|
|
379
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
380
|
+
return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
|
|
381
|
+
}
|
|
382
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
|
|
383
|
+
}
|
|
384
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
|
|
385
|
+
}
|
|
386
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawPopupComponent, deps: [{ token: i1.LanguageService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
387
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DrawPopupComponent, isStandalone: true, selector: "igo-draw-popup-component", inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, ngImport: i0, template: "<h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n</h2>\n\n<ng-container *ngIf=\"labelFlag !== labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div>\n <p>\n {{ 'igo.geo.draw.builtInInstructions' | translate }}\n </p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\">\n <mat-radio-button\n *ngFor=\"let option of arrayBuiltInType\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.value)\"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"\n onLabelTypeChange($any($event.source.value), $event.checked)\n \"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\" class=\"fields-container\">\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>(Latitude, Longitude)</mat-label>\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{ currentCoordinates }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"coordinatesMeasureUnit\"\n (selectionChange)=\"onChangeCoordinateUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{ unit }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ lengthLabelT }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ lengthLabelT }}\"\n value=\"{{ currentLength }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"lengthMeasureUnit\"\n (selectionChange)=\"onChangeLengthUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{ getLengthUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ 'igo.geo.draw.labelType.Area' | translate }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{ currentArea }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"areaMeasureUnit\"\n (selectionChange)=\"onChangeAreaUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{ getAreaUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"labelFlag === labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <p>\n {{ 'igo.geo.draw.dialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"input\">\n <mat-label>{{ 'igo.geo.draw.dialogTitle' | translate }}</mat-label>\n <input\n #input\n matInput\n (select)=\"(true)\"\n (input)=\"getLabelLength($any($event.target).value)\"\n placeholder=\"{{ 'igo.geo.draw.dialogTitle' | translate }}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial\n />\n </mat-form-field>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n", styles: [":host .mat-mdc-radio-button~.mat-radio-button{margin-left:12px}:host .readOnly-Input{width:200px!important}:host .button-toggle-container{margin-bottom:12px}:host .unit-field{margin-left:12px}:host .unit-field ::ng-deep .mat-mdc-form-field-infix{width:fit-content}:host .unit-field ::ng-deep .mat-mdc-select-min-line{padding-right:24px}:host .mat-mdc-form-field{position:sticky!important}:host .coordinatesInputView{top:5em!important}:host .mat-mdc-dialog-actions{display:flex!important;justify-content:flex-end}:host .input{width:auto!important}:host .mat-button-toggle-group,:host .mat-button-toggle{width:100%}:host mat-checkbox{margin-right:10px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
|
|
388
|
+
}
|
|
389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawPopupComponent, decorators: [{
|
|
390
|
+
type: Component,
|
|
391
|
+
args: [{ selector: 'igo-draw-popup-component', standalone: true, imports: [
|
|
392
|
+
MatDialogTitle,
|
|
393
|
+
NgIf,
|
|
394
|
+
MatDialogContent,
|
|
395
|
+
MatButtonToggleModule,
|
|
396
|
+
MatRadioModule,
|
|
397
|
+
NgFor,
|
|
398
|
+
MatCheckboxModule,
|
|
399
|
+
MatFormFieldModule,
|
|
400
|
+
MatInputModule,
|
|
401
|
+
MatSelectModule,
|
|
402
|
+
MatOptionModule,
|
|
403
|
+
MatDialogActions,
|
|
404
|
+
MatButtonModule,
|
|
405
|
+
IgoLanguageModule
|
|
406
|
+
], template: "<h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n</h2>\n\n<ng-container *ngIf=\"labelFlag !== labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div>\n <p>\n {{ 'igo.geo.draw.builtInInstructions' | translate }}\n </p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\">\n <mat-radio-button\n *ngFor=\"let option of arrayBuiltInType\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.value)\"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"\n onLabelTypeChange($any($event.source.value), $event.checked)\n \"\n [checked]=\"option.checked\"\n >\n {{ getProperLengthLabel(option.value) }}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\" class=\"fields-container\">\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>(Latitude, Longitude)</mat-label>\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{ currentCoordinates }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"coordinatesMeasureUnit\"\n (selectionChange)=\"onChangeCoordinateUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{ unit }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ lengthLabelT }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ lengthLabelT }}\"\n value=\"{{ currentLength }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"lengthMeasureUnit\"\n (selectionChange)=\"onChangeLengthUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{ getLengthUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div\n *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\"\n class=\"fields-container\"\n >\n <mat-form-field class=\"readOnly-Input\">\n <mat-label>{{ 'igo.geo.draw.labelType.Area' | translate }}</mat-label>\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{ currentArea }}\"\n readonly\n />\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"areaMeasureUnit\"\n (selectionChange)=\"onChangeAreaUnit($event.value)\"\n >\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{ getAreaUnitEnum(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"labelFlag === labelType.Custom\">\n <div mat-dialog-content class=\"geometry-type-toggle\">\n <div class=\"button-toggle-container\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\"\n [value]=\"customOrPredefined\"\n >\n <mat-button-toggle [value]=\"labelType.Custom\">\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <p>\n {{ 'igo.geo.draw.dialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"input\">\n <mat-label>{{ 'igo.geo.draw.dialogTitle' | translate }}</mat-label>\n <input\n #input\n matInput\n (select)=\"(true)\"\n (input)=\"getLabelLength($any($event.target).value)\"\n placeholder=\"{{ 'igo.geo.draw.dialogTitle' | translate }}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial\n />\n </mat-form-field>\n </div>\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n {{ noLabelButton() }}\n </button>\n </div>\n</ng-container>\n", styles: [":host .mat-mdc-radio-button~.mat-radio-button{margin-left:12px}:host .readOnly-Input{width:200px!important}:host .button-toggle-container{margin-bottom:12px}:host .unit-field{margin-left:12px}:host .unit-field ::ng-deep .mat-mdc-form-field-infix{width:fit-content}:host .unit-field ::ng-deep .mat-mdc-select-min-line{padding-right:24px}:host .mat-mdc-form-field{position:sticky!important}:host .coordinatesInputView{top:5em!important}:host .mat-mdc-dialog-actions{display:flex!important;justify-content:flex-end}:host .input{width:auto!important}:host .mat-button-toggle-group,:host .mat-button-toggle{width:100%}:host mat-checkbox{margin-right:10px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}\n"] }]
|
|
407
|
+
}], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
|
|
408
|
+
type: Inject,
|
|
409
|
+
args: [MAT_DIALOG_DATA]
|
|
410
|
+
}] }], propDecorators: { confirmFlag: [{
|
|
411
|
+
type: Input
|
|
412
|
+
}], labelFlag: [{
|
|
413
|
+
type: Input
|
|
414
|
+
}], coordinatesMeasureUnit: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], lengthMeasureUnit: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], areaMeasureUnit: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}] } });
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8s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aEIscUJBQXFCLHNvQkFDckIsY0FBYyxxbEJBQ2QsS0FBSyxrSEFDTCxpQkFBaUIsb1lBQ2pCLGtCQUFrQiwwU0FDbEIsY0FBYywwV0FDZCxlQUFlLG1yQkFDZixlQUFlLCtCQUNmLGdCQUFnQiwySEFDaEIsZUFBZSw0TkFDZixpQkFBaUI7OzRGQUdSLGtCQUFrQjtrQkF0QjlCLFNBQVM7K0JBQ0UsMEJBQTBCLGNBR3hCLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsS0FBSzt3QkFDTCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEI7OzBCQWdDRSxNQUFNOzJCQUFDLGVBQWU7eUNBN0JoQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtcbiAgTUFUX0RJQUxPR19EQVRBLFxuICBNYXREaWFsb2dBY3Rpb25zLFxuICBNYXREaWFsb2dDb250ZW50LFxuICBNYXREaWFsb2dSZWYsXG4gIE1hdERpYWxvZ1RpdGxlXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgeyBDb29yZGluYXRlIH0gZnJvbSAnb2wvY29vcmRpbmF0ZSc7XG5pbXBvcnQgQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgeyBnZXRMZW5ndGggfSBmcm9tICdvbC9zcGhlcmUnO1xuXG5pbXBvcnQgeyBJZ29NYXAsIHJvdW5kQ29vcmRUbyB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgTWVhc3VyZUFyZWFVbml0LFxuICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb24sXG4gIE1lYXN1cmVMZW5ndGhVbml0LFxuICBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvblxufSBmcm9tICcuLi8uLi9tZWFzdXJlL3NoYXJlZC9tZWFzdXJlLmVudW0nO1xuaW1wb3J0IHtcbiAgbWVhc3VyZU9sR2VvbWV0cnlBcmVhLFxuICBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aCxcbiAgbWV0ZXJzVG9Vbml0LFxuICBzcXVhcmVNZXRlcnNUb1VuaXRcbn0gZnJvbSAnLi4vLi4vbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS51dGlscyc7XG5pbXBvcnQgeyBDb29yZGluYXRlc1VuaXQsIEdlb21ldHJ5VHlwZSwgTGFiZWxUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL2RyYXcuZW51bSc7XG5pbXBvcnQgeyBERHRvRE1TIH0gZnJvbSAnLi4vc2hhcmVkL2RyYXcudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZHJhdy1wb3B1cC1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgIE5nSWYsXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEcmF3UG9wdXBDb21wb25lbnQge1xuICBASW5wdXQoKSBjb25maXJtRmxhZyA9IGZhbHNlO1xuICBASW5wdXQoKSBsYWJlbEZsYWc6IExhYmVsVHlwZSB8IFtMYWJlbFR5cGUsIExhYmVsVHlwZV0gPSBMYWJlbFR5cGUuQ3VzdG9tO1xuICBASW5wdXQoKSBjb29yZGluYXRlc01lYXN1cmVVbml0OiBDb29yZGluYXRlc1VuaXQ7XG4gIEBJbnB1dCgpIGxlbmd0aE1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdDtcbiAgQElucHV0KCkgYXJlYU1lYXN1cmVVbml0OiBNZWFzdXJlQXJlYVVuaXQ7XG5cbiAgcHVibGljIGdlb21ldHJ5VHlwZSA9IEdlb21ldHJ5VHlwZTtcbiAgcHVibGljIGxhYmVsVHlwZSA9IExhYmVsVHlwZTtcbiAgcHVibGljIGFycmF5QnVpbHRJblR5cGU6IGFueVtdID0gW107XG5cbiAgcHVibGljIGN1cnJlbnRMYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudENvb3JkaW5hdGVzOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50QXJlYTogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudExlbmd0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyBvbEdlb21ldHJ5VHlwZTogR2VvbWV0cnlUeXBlID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgbGVuZ3RoSW5NZXRlcnM6IHN0cmluZztcbiAgcHVibGljIGFyZWFJbk1ldGVyc1NxdWFyZTogc3RyaW5nO1xuICBwdWJsaWMgY29vcmRpbmF0ZXNJbkREOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50Q29vcmRpbmF0ZXNVbml0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBsb25nbGF0REQ6IENvb3JkaW5hdGU7XG4gIHByaXZhdGUgbGFiZWxMZW5ndGg6IG51bWJlcjtcblxuICBwdWJsaWMgcG9seWdvbkNoZWNrID0gMDsgLy8gQ291bnQgZm9yIHBvbHlnb24gbGFiZWwgdHlwZXMgY2hlY2tib3hlc1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERyYXdQb3B1cENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7IG9sR2VvbWV0cnk6IGFueTsgbWFwOiBJZ29NYXAgfVxuICApIHtcbiAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnZHJhdycpO1xuICAgIHRoaXMubGFiZWxMZW5ndGggPSB0aGlzLmN1cnJlbnRMYWJlbCA/IHRoaXMuY3VycmVudExhYmVsLmxlbmd0aCA6IDA7XG4gICAgbGV0IG9sR2VvbWV0cnk7XG5cbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5kYXRhLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuZGF0YS5vbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XG4gICAgICBpZiAodGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdyYWQnKSkge1xuICAgICAgICBjb25zdCBsb25naXR1ZGVMYXRpdHVkZSA9IFtcbiAgICAgICAgICB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2xvbmdpdHVkZScpLFxuICAgICAgICAgIHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnbGF0aXR1ZGUnKVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID0gR2VvbWV0cnlUeXBlLkNpcmNsZTtcbiAgICAgICAgb2xHZW9tZXRyeSA9IG5ldyBDaXJjbGUoXG4gICAgICAgICAgbG9uZ2l0dWRlTGF0aXR1ZGUsXG4gICAgICAgICAgdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdyYWQnKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpO1xuICAgICAgICBvbEdlb21ldHJ5ID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdnZW9tZXRyeScpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0VHlwZSgpO1xuICAgICAgb2xHZW9tZXRyeSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5O1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2ludCB8fFxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZVxuICAgICkge1xuICAgICAgaWYgKHRoaXMuZGF0YS5vbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnbG9uZ2l0dWRlJyk7XG4gICAgICAgIGNvbnN0IGxhdGl0dWRlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsYXRpdHVkZScpO1xuICAgICAgICB0aGlzLmxvbmdsYXRERCA9IHJvdW5kQ29vcmRUbyhbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIDUpO1xuICAgICAgICB0aGlzLmNvb3JkaW5hdGVzSW5ERCA9ICcoJyArIGxhdGl0dWRlICsgJywgJyArIGxvbmdpdHVkZSArICcpJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBvaW50NDMyNiA9IHRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKSxcbiAgICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAgICdFUFNHOjQzMjYnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9uZ2xhdEREID0gcm91bmRDb29yZFRvKFtwb2ludDQzMjZbMF0sIHBvaW50NDMyNlsxXV0sIDUpO1xuICAgICAgICB0aGlzLmNvb3JkaW5hdGVzSW5ERCA9XG4gICAgICAgICAgJygnICsgdGhpcy5sb25nbGF0RERbMV0gKyAnLCAnICsgdGhpcy5sb25nbGF0RERbMF0gKyAnKSc7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuY29vcmRpbmF0ZXNJbkREO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmcpIHtcbiAgICAgIHRoaXMubGVuZ3RoSW5NZXRlcnMgPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChcbiAgICAgICAgb2xHZW9tZXRyeSxcbiAgICAgICAgcHJvamVjdGlvbi5nZXRDb2RlKClcbiAgICAgICkudG9GaXhlZCgyKTtcbiAgICAgIHRoaXMuY3VycmVudExlbmd0aCA9IHRoaXMubGVuZ3RoSW5NZXRlcnM7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgdGhpcy5sZW5ndGhJbk1ldGVycyA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKFxuICAgICAgICBvbEdlb21ldHJ5LFxuICAgICAgICBwcm9qZWN0aW9uLmdldENvZGUoKVxuICAgICAgKS50b0ZpeGVkKDIpO1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlID0gbWVhc3VyZU9sR2VvbWV0cnlBcmVhKFxuICAgICAgICBvbEdlb21ldHJ5LFxuICAgICAgICBwcm9qZWN0aW9uLmdldENvZGUoKVxuICAgICAgKS50b0ZpeGVkKDIpO1xuICAgICAgdGhpcy5jdXJyZW50QXJlYSA9IHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSkge1xuICAgICAgY29uc3QgY2lyY3VsYXJQb2x5Z29uID0gZnJvbUNpcmNsZShvbEdlb21ldHJ5LCAxMDAwMCk7XG4gICAgICBjb25zdCByYWRpdXMgPSB0aGlzLmdldFJhZGl1cyhjaXJjdWxhclBvbHlnb24pO1xuICAgICAgdGhpcy5sZW5ndGhJbk1ldGVycyA9IHJhZGl1cy50b0ZpeGVkKDIpO1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlID0gbWVhc3VyZU9sR2VvbWV0cnlBcmVhKFxuICAgICAgICBjaXJjdWxhclBvbHlnb24sXG4gICAgICAgIHByb2plY3Rpb24uZ2V0Q29kZSgpXG4gICAgICApLnRvRml4ZWQoMik7XG4gICAgICB0aGlzLmN1cnJlbnRBcmVhID0gdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuQ29vcmRpbmF0ZXMsIHRydWUpO1xuICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5QcmVkZWZpbmVkKTtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLkxlbmd0aCwgdHJ1ZSk7XG4gICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuQXJlYSkge1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuUHJlZGVmaW5lZCk7XG4gICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5BcmVhLCB0cnVlKTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpPy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgdGhpcy5vbkxhYmVsVHlwZUNoYW5nZShMYWJlbFR5cGUuTGVuZ3RoLCB0cnVlKTtcbiAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLkFyZWEsIHRydWUpO1xuICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0JylbMF07XG4gICAgICB0aGlzLmFyZWFNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0JylbMV07XG4gICAgfVxuICAgIHRoaXMuYnVpbGRBcnJheVR5cGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIVE1MIEludGVyYWN0aW9uc1xuICAgKi9cblxuICBjYW5jZWxEcmF3aW5nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBjb25maXJtKGlucHV0Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maXJtRmxhZyA9IHRydWU7XG4gICAgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ3VzdG9tKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgIGxhYmVsOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyxcbiAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMuY29vcmRpbmF0ZXNNZWFzdXJlVW5pdFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgaWYgKHRoaXMucG9seWdvbkNoZWNrID09PSAyKSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gW0xhYmVsVHlwZS5MZW5ndGgsIExhYmVsVHlwZS5BcmVhXTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgJ1A6ICcgK1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvbltNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnNdICtcbiAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLkEnKSArXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcmVhICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVyc10sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IFt0aGlzLmxlbmd0aE1lYXN1cmVVbml0LCB0aGlzLmFyZWFNZWFzdXJlVW5pdF1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkxlbmd0aFxuICAgICAgICAgID8gdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICAgICAnUDogJyArXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoICtcbiAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXRdLFxuICAgICAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5sZW5ndGhNZWFzdXJlVW5pdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgbGFiZWw6XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXJlYSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bdGhpcy5hcmVhTWVhc3VyZVVuaXRdLFxuICAgICAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5MZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICdSOiAnICtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExlbmd0aCArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bdGhpcy5sZW5ndGhNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMubGVuZ3RoTWVhc3VyZVVuaXRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExlbmd0aCArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bdGhpcy5sZW5ndGhNZWFzdXJlVW5pdF0sXG4gICAgICAgICAgbWVhc3VyZVVuaXQ6IHRoaXMubGVuZ3RoTWVhc3VyZVVuaXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgbGFiZWw6XG4gICAgICAgICAgdGhpcy5jdXJyZW50QXJlYSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bdGhpcy5hcmVhTWVhc3VyZVVuaXRdLFxuICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uTGFiZWxUeXBlQ2hhbmdlKGxhYmVsVHlwZTogTGFiZWxUeXBlLCBjaGVja2VkPzogYm9vbGVhbikge1xuICAgIGlmIChcbiAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWQgJiZcbiAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLkN1c3RvbSAmJlxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb25cbiAgICApIHtcbiAgICAgIHRoaXMuYXJyYXlCdWlsdEluVHlwZS5maW5kKCh0eXBlKSA9PiB0eXBlLnZhbHVlID09PSBsYWJlbFR5cGUpXG4gICAgICAgID8gKHRoaXMuYXJyYXlCdWlsdEluVHlwZS5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IHR5cGUudmFsdWUgPT09IGxhYmVsVHlwZVxuICAgICAgICAgICkuY2hlY2tlZCA9IGNoZWNrZWQpXG4gICAgICAgIDogKHRoaXMubGFiZWxGbGFnID0gdW5kZWZpbmVkKTtcbiAgICAgIGNoZWNrZWRcbiAgICAgICAgPyAodGhpcy5sYWJlbEZsYWcgPSBsYWJlbFR5cGUpXG4gICAgICAgIDogKHRoaXMubGFiZWxGbGFnID0gdGhpcy5hcnJheUJ1aWx0SW5UeXBlLmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gdHlwZS5jaGVja2VkXG4gICAgICAgICAgKT8udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhYmVsRmxhZyA9IGxhYmVsVHlwZTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2ludCkge1xuICAgICAgICB0aGlzLmxhYmVsRmxhZyA9IExhYmVsVHlwZS5Db29yZGluYXRlcztcbiAgICAgICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPSB0aGlzLmNvb3JkaW5hdGVzSW5ERDtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gQ29vcmRpbmF0ZXNVbml0LkRlY2ltYWxEZWdyZWU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gTGFiZWxUeXBlLkxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxhYmVsVHlwZSA9PT0gTGFiZWxUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuY3VycmVudEFyZWEgPSB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcbiAgICB9IGVsc2UgaWYgKGxhYmVsVHlwZSA9PT0gTGFiZWxUeXBlLkxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIHRoaXMubGVuZ3RoTWVhc3VyZVVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnM7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKSB7XG4gICAgICB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuY29vcmRpbmF0ZXNJbkREO1xuICAgICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gQ29vcmRpbmF0ZXNVbml0LkRlY2ltYWxEZWdyZWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWx0eXBlcyA9IFt0aGlzLmxhYmVsVHlwZS5MZW5ndGgsIHRoaXMubGFiZWxUeXBlLkFyZWFdO1xuICAgIGlmIChcbiAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uICYmXG4gICAgICBsYWJlbHR5cGVzLmluY2x1ZGVzKGxhYmVsVHlwZSlcbiAgICApIHtcbiAgICAgIGNoZWNrZWQgPyAodGhpcy5wb2x5Z29uQ2hlY2sgKz0gMSkgOiAodGhpcy5wb2x5Z29uQ2hlY2sgLT0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9seWdvbkNoZWNrID0gMDtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZUxlbmd0aFVuaXQobGVuZ3RoVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gbGVuZ3RoVW5pdDtcbiAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSBtZXRlcnNUb1VuaXQoXG4gICAgICBOdW1iZXIodGhpcy5sZW5ndGhJbk1ldGVycyksXG4gICAgICBsZW5ndGhVbml0XG4gICAgKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25DaGFuZ2VBcmVhVW5pdChhcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0KSB7XG4gICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBhcmVhVW5pdDtcbiAgICB0aGlzLmN1cnJlbnRBcmVhID0gc3F1YXJlTWV0ZXJzVG9Vbml0KFxuICAgICAgTnVtYmVyKHRoaXMuYXJlYUluTWV0ZXJzU3F1YXJlKSxcbiAgICAgIGFyZWFVbml0XG4gICAgKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25DaGFuZ2VDb29yZGluYXRlVW5pdChjb29yZGluYXRlc1VuaXQ6IENvb3JkaW5hdGVzVW5pdCkge1xuICAgIHRoaXMuY29vcmRpbmF0ZXNNZWFzdXJlVW5pdCA9IGNvb3JkaW5hdGVzVW5pdDtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IEREdG9ETVModGhpcy5sb25nbGF0REQsIGNvb3JkaW5hdGVzVW5pdCk7XG4gICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPVxuICAgICAgJygnICsgY29vcmRpbmF0ZXNbMV0gKyAnLCAnICsgY29vcmRpbmF0ZXNbMF0gKyAnKSc7XG4gIH1cblxuICBidWlsZEFycmF5VHlwZSgpIHtcbiAgICBmb3IgKGNvbnN0IGxhYmVsVHlwZSBvZiBPYmplY3QudmFsdWVzKExhYmVsVHlwZSkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuQ3VzdG9tICYmXG4gICAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmFycmF5QnVpbHRJblR5cGUucHVzaCh7XG4gICAgICAgICAgdmFsdWU6IGxhYmVsVHlwZSxcbiAgICAgICAgICBjaGVja2VkOlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKGxhYmVsVHlwZSkgfHxcbiAgICAgICAgICAgIHRoaXMubGFiZWxGbGFnID09PSBsYWJlbFR5cGUgfHxcbiAgICAgICAgICAgICh0aGlzLnBvbHlnb25DaGVjayA9PT0gMiAmJiBsYWJlbFR5cGUgIT09IExhYmVsVHlwZS5Db29yZGluYXRlcylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbm9MYWJlbEJ1dHRvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLlByZWRlZmluZWQgfHxcbiAgICAgICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkN1c3RvbSAmJiB0aGlzLmxhYmVsTGVuZ3RoID09PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubm9MYWJlbCcpO1xuICAgIH1cblxuICAgIHJldHVybiAnT0snO1xuICB9XG5cbiAgZ2V0IGN1c3RvbU9yUHJlZGVmaW5lZCgpIHtcbiAgICBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20pIHtcbiAgICAgIHJldHVybiBMYWJlbFR5cGUuQ3VzdG9tO1xuICAgIH1cbiAgICByZXR1cm4gTGFiZWxUeXBlLlByZWRlZmluZWQ7XG4gIH1cblxuICBvcHRpb25BdmFpbGFibGUoY3VycmVudE9wdGlvbjogTGFiZWxUeXBlKSB7XG4gICAgc3dpdGNoICh0aGlzLm9sR2VvbWV0cnlUeXBlKSB7XG4gICAgICBjYXNlIEdlb21ldHJ5VHlwZS5Qb2ludDpcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmc6XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBHZW9tZXRyeVR5cGUuUG9seWdvbjpcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgYWxsTGVuZ3RoVW5pdHMoKTogTWVhc3VyZUxlbmd0aFVuaXRbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVhc3VyZUxlbmd0aFVuaXQpO1xuICB9XG5cbiAgZ2V0TGVuZ3RoVW5pdEVudW0obGVuZ3RoVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICByZXR1cm4gTWVhc3VyZUxlbmd0aFVuaXRBYmJyZXZpYXRpb25bbGVuZ3RoVW5pdF07XG4gIH1cblxuICBnZXQgYWxsQXJlYVVuaXRzKCk6IE1lYXN1cmVBcmVhVW5pdFtdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWFzdXJlQXJlYVVuaXQpO1xuICB9XG5cbiAgZ2V0IGFsbENvb3JkaW5hdGVzVW5pdHMoKTogQ29vcmRpbmF0ZXNVbml0W10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKENvb3JkaW5hdGVzVW5pdCk7XG4gIH1cblxuICBnZXRBcmVhVW5pdEVudW0oYXJlYVVuaXQ6IE1lYXN1cmVBcmVhVW5pdCkge1xuICAgIHJldHVybiBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bYXJlYVVuaXRdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYWRpdXMob2xHZW9tZXRyeSk6IG51bWJlciB7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoKG9sR2VvbWV0cnkpO1xuICAgIHJldHVybiBOdW1iZXIobGVuZ3RoIC8gKDIgKiBNYXRoLlBJKSk7XG4gIH1cblxuICBnZXQgbGVuZ3RoTGFiZWxUKCkge1xuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcidcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uZ2VvLnNlYXJjaC5jb29yZGluYXRlcy5yYWRpdXMnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5MZW5ndGgnXG4gICAgKTtcbiAgfVxuXG4gIGdldExhYmVsTGVuZ3RoKGV2ZW50Pykge1xuICAgIHRoaXMubGFiZWxMZW5ndGggPSBldmVudC5sZW5ndGg7XG4gIH1cblxuICBzZWxlY3RPcHRpb25zKG9wdGlvbikge1xuICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9pbnQpIHtcbiAgICAgIHJldHVybiBvcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcztcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbikge1xuICAgIGlmIChvcHRpb24gPT09IExhYmVsVHlwZS5MZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8ubWVhc3VyZS5wZXJpbWV0ZXInXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uc2VhcmNoLmNvb3JkaW5hdGVzLnJhZGl1cydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuTGVuZ3RoJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuJyArIG9wdGlvblxuICAgICk7XG4gIH1cbn1cbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPlxuICB7eyAnaWdvLmdlby5kcmF3LnBvcHVwVGl0bGUnIHwgdHJhbnNsYXRlIH19XG48L2gyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxGbGFnICE9PSBsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICBbdmFsdWVdPVwiY3VzdG9tT3JQcmVkZWZpbmVkXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuY3VzdG9tJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cImxhYmVsVHlwZS5QcmVkZWZpbmVkXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUucHJlZGVmaW5lZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxwPlxuICAgICAgICB7eyAnaWdvLmdlby5kcmF3LmJ1aWx0SW5JbnN0cnVjdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgICA8bWF0LXJhZGlvLWdyb3VwICpuZ0lmPVwib2xHZW9tZXRyeVR5cGUgIT09ICdQb2x5Z29uJ1wiPlxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXJyYXlCdWlsdEluVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbkF2YWlsYWJsZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5jaGVja2VkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbi52YWx1ZSkgfX1cbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2xHZW9tZXRyeVR5cGUgPT09ICdQb2x5Z29uJ1wiPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhcnJheUJ1aWx0SW5UeXBlXCJcbiAgICAgICAgICBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uQXZhaWxhYmxlKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICBvbkxhYmVsVHlwZUNoYW5nZSgkYW55KCRldmVudC5zb3VyY2UudmFsdWUpLCAkZXZlbnQuY2hlY2tlZClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5jaGVja2VkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbi52YWx1ZSkgfX1cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5Db29yZGluYXRlc1wiIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+KExhdGl0dWRlLCBMb25naXR1ZGUpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIihMYXRpdHVkZSwgTG9uZ2l0dWRlKVwiXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRDb29yZGluYXRlcyB9fVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvb3JkaW5hdGVzTWVhc3VyZVVuaXRcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZUNvb3JkaW5hdGVVbml0KCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGFsbENvb3JkaW5hdGVzVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAgICB7eyB1bml0IH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuTGVuZ3RoIHx8IHBvbHlnb25DaGVjayA9PT0gMlwiXG4gICAgICAgIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJlYWRPbmx5LUlucHV0XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsZW5ndGhMYWJlbFQgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbGVuZ3RoTGFiZWxUIH19XCJcbiAgICAgICAgICAgIHZhbHVlPVwie3sgY3VycmVudExlbmd0aCB9fVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgW3ZhbHVlXT1cImxlbmd0aE1lYXN1cmVVbml0XCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VMZW5ndGhVbml0KCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGFsbExlbmd0aFVuaXRzXCIgW3ZhbHVlXT1cInVuaXRcIj5cbiAgICAgICAgICAgICAge3sgZ2V0TGVuZ3RoVW5pdEVudW0odW5pdCkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5BcmVhIHx8IHBvbHlnb25DaGVjayA9PT0gMlwiXG4gICAgICAgIGNsYXNzPVwiZmllbGRzLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJlYWRPbmx5LUlucHV0XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5BcmVhJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5kcmF3LmxhYmVsVHlwZS5BcmVhJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRBcmVhIH19XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBbdmFsdWVdPVwiYXJlYU1lYXN1cmVVbml0XCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VBcmVhVW5pdCgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBhbGxBcmVhVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAgICB7eyBnZXRBcmVhVW5pdEVudW0odW5pdCkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsRHJhd2luZygpXCI+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtKClcIj5cbiAgICAgIHt7IG5vTGFiZWxCdXR0b24oKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxGbGFnID09PSBsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIlxuICAgICAgICBbdmFsdWVdPVwiY3VzdG9tT3JQcmVkZWZpbmVkXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuY3VzdG9tJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cImxhYmVsVHlwZS5QcmVkZWZpbmVkXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUucHJlZGVmaW5lZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPHA+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmRpYWxvZ0luc3RydWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dFwiPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5kcmF3LmRpYWxvZ1RpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAoc2VsZWN0KT1cIih0cnVlKVwiXG4gICAgICAgIChpbnB1dCk9XCJnZXRMYWJlbExlbmd0aCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dUaXRsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB2YWx1ZT1cInt7IGN1cnJlbnRMYWJlbCB9fVwiXG4gICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWxEcmF3aW5nKClcIj5cbiAgICAgIHt7ICdpZ28uZ2VvLmRyYXcuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm0oaW5wdXQudmFsdWUpXCI+XG4gICAgICB7eyBub0xhYmVsQnV0dG9uKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatDialogActions, MatDialogClose, MatDialogContent } from '@angular/material/dialog';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { IgoIconComponent, KEYBOARD_ESC_ICON } from '@igo2/common/icon';
|
|
6
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/icon";
|
|
9
|
+
import * as i2 from "@angular/material/button";
|
|
10
|
+
import * as i3 from "@ngx-translate/core";
|
|
11
|
+
export class DrawShorcutsComponent {
|
|
12
|
+
svgIcon = KEYBOARD_ESC_ICON;
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawShorcutsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DrawShorcutsComponent, isStandalone: true, selector: "igo-draw-shorcuts", ngImport: i0, template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_return</mat-icon\n >{{ 'igo.geo.draw.finish' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_backspace</mat-icon\n >{{ 'igo.geo.draw.undo' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <igo-icon [icon]=\"svgIcon\" />\n {{ 'igo.geo.draw.abort' | translate }}\n </span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">space_bar</mat-icon\n >{{ 'igo.geo.draw.move' | translate }}</span\n >\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>\n", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IgoIconComponent, selector: "igo-icon", inputs: ["icon"] }] });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DrawShorcutsComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'igo-draw-shorcuts', standalone: true, imports: [
|
|
19
|
+
MatDialogContent,
|
|
20
|
+
MatIconModule,
|
|
21
|
+
MatDialogActions,
|
|
22
|
+
MatButtonModule,
|
|
23
|
+
MatDialogClose,
|
|
24
|
+
IgoLanguageModule,
|
|
25
|
+
IgoIconComponent
|
|
26
|
+
], template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_return</mat-icon\n >{{ 'igo.geo.draw.finish' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">keyboard_backspace</mat-icon\n >{{ 'igo.geo.draw.undo' | translate }}</span\n >\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <igo-icon [icon]=\"svgIcon\" />\n {{ 'igo.geo.draw.abort' | translate }}\n </span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\">space_bar</mat-icon\n >{{ 'igo.geo.draw.move' | translate }}</span\n >\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>\n", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"] }]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFpQnhELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsT0FBTyxHQUFZLGlCQUFpQixDQUFDO3dHQUQxQixxQkFBcUI7NEZBQXJCLHFCQUFxQiw2RUMvQmxDLGk2QkE2QkEsNExEUEksZ0JBQWdCLHdHQUNoQixhQUFhLG9MQUNiLGdCQUFnQiwySEFDaEIsZUFBZSw0TkFDZixjQUFjLG9MQUNkLGlCQUFpQiw0RkFDakIsZ0JBQWdCOzs0RkFHUCxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ2xvc2UsXG4gIE1hdERpYWxvZ0NvbnRlbnRcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHtcbiAgSWNvblN2ZyxcbiAgSWdvSWNvbkNvbXBvbmVudCxcbiAgS0VZQk9BUkRfRVNDX0lDT05cbn0gZnJvbSAnQGlnbzIvY29tbW9uL2ljb24nO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRyYXctc2hvcmN1dHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1zaG9yY3V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctc2hvcmN1dHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREaWFsb2dDbG9zZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBJZ29JY29uQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd1Nob3JjdXRzQ29tcG9uZW50IHtcbiAgc3ZnSWNvbjogSWNvblN2ZyA9IEtFWUJPQVJEX0VTQ19JQ09OO1xufVxuIiwiPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPGRpdj5cbiAgICA8c3BhbiBjbGFzcz1cInNob3J0Y3V0IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJzaG9ydGN1dC1pY29uXCI+a2V5Ym9hcmRfcmV0dXJuPC9tYXQtaWNvblxuICAgICAgPnt7ICdpZ28uZ2VvLmRyYXcuZmluaXNoJyB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2hvcnRjdXQtaWNvblwiPmtleWJvYXJkX2JhY2tzcGFjZTwvbWF0LWljb25cbiAgICAgID57eyAnaWdvLmdlby5kcmF3LnVuZG8nIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8c3BhbiBjbGFzcz1cInNob3J0Y3V0IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICA8aWdvLWljb24gW2ljb25dPVwic3ZnSWNvblwiIC8+XG4gICAgICB7eyAnaWdvLmdlby5kcmF3LmFib3J0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPHNwYW4gY2xhc3M9XCJzaG9ydGN1dCBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2hvcnRjdXQtaWNvblwiPnNwYWNlX2JhcjwvbWF0LWljb25cbiAgICAgID57eyAnaWdvLmdlby5kcmF3Lm1vdmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cInNob3J0Y3V0cy1jbG9zZVwiPlxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY29sb3I9XCJwcmltYXJ5XCI+T0s8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
|