@igo2/geo 1.12.0 → 1.13.0-alpha.1
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/{esm2015/igo2-geo.js → esm2020/igo2-geo.mjs} +0 -0
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +299 -0
- package/{esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js → esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs} +13 -19
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +244 -0
- package/{esm2015/lib/catalog/catalog-browser/catalog-browser.module.js → esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs} +17 -19
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +209 -0
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +79 -0
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +217 -0
- package/{esm2015/lib/catalog/catalog-library/catalog-library.module.js → esm2020/lib/catalog/catalog-library/catalog-library.module.mjs} +21 -23
- package/{esm2015/lib/catalog/catalog.module.js → esm2020/lib/catalog/catalog.module.mjs} +9 -11
- package/{esm2015/lib/catalog/index.js → esm2020/lib/catalog/index.mjs} +0 -0
- package/{esm2015/lib/catalog/shared/catalog.abstract.js → esm2020/lib/catalog/shared/catalog.abstract.mjs} +0 -0
- package/{esm2015/lib/catalog/shared/catalog.enum.js → esm2020/lib/catalog/shared/catalog.enum.mjs} +0 -0
- package/{esm2015/lib/catalog/shared/catalog.interface.js → esm2020/lib/catalog/shared/catalog.interface.mjs} +0 -0
- package/esm2020/lib/catalog/shared/catalog.service.mjs +606 -0
- package/{esm2015/lib/catalog/shared/index.js → esm2020/lib/catalog/shared/index.mjs} +0 -0
- package/{esm2015/lib/datasource/datasource.module.js → esm2020/lib/datasource/datasource.module.mjs} +2 -2
- package/{esm2015/lib/datasource/index.js → esm2020/lib/datasource/index.mjs} +0 -0
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +426 -0
- package/{esm2015/lib/datasource/shared/datasource.service.js → esm2020/lib/datasource/shared/datasource.service.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/any-datasource.interface.js → esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/any-datasource.js → esm2020/lib/datasource/shared/datasources/any-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js → esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js → esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js → esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/carto-datasource.js → esm2020/lib/datasource/shared/datasources/carto-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js → esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/cluster-datasource.js → esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/data.service.js → esm2020/lib/datasource/shared/datasources/data.service.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/datasource.interface.js → esm2020/lib/datasource/shared/datasources/datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/datasource.js → esm2020/lib/datasource/shared/datasources/datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js → esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/feature-datasource.js → esm2020/lib/datasource/shared/datasources/feature-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js → esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js → esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/index.js → esm2020/lib/datasource/shared/datasources/index.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js → esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/mvt-datasource.js → esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js → esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/osm-datasource.js → esm2020/lib/datasource/shared/datasources/osm-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js → esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js → esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js → esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js → esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js → esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/websocket-datasource.js → esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js → esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs} +0 -0
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +74 -0
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +152 -0
- package/{esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js → esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs} +0 -0
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -0
- package/{esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js → esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs} +4 -4
- package/{esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js → esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/wmts-datasource.js → esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js → esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/datasources/xyz-datasource.js → esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/index.js → esm2020/lib/datasource/shared/index.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/options/index.js → esm2020/lib/datasource/shared/options/index.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/options/options-api.interface.js → esm2020/lib/datasource/shared/options/options-api.interface.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/options/options-api.providers.js → esm2020/lib/datasource/shared/options/options-api.providers.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/options/options-api.service.js → esm2020/lib/datasource/shared/options/options-api.service.mjs} +0 -0
- package/{esm2015/lib/datasource/shared/options/options.service.js → esm2020/lib/datasource/shared/options/options.service.mjs} +0 -0
- package/{esm2015/lib/datasource/utils/esri-style-generator.js → esm2020/lib/datasource/utils/esri-style-generator.mjs} +0 -0
- package/{esm2015/lib/datasource/utils/index.js → esm2020/lib/datasource/utils/index.mjs} +0 -0
- package/{esm2015/lib/datasource/utils/tilegrid.js → esm2020/lib/datasource/utils/tilegrid.mjs} +0 -0
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +224 -0
- package/{esm2015/lib/directions/directions-buttons/index.js → esm2020/lib/directions/directions-buttons/index.mjs} +0 -0
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +290 -0
- package/{esm2015/lib/directions/directions-inputs/index.js → esm2020/lib/directions/directions-inputs/index.mjs} +0 -0
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +196 -0
- package/{esm2015/lib/directions/directions-results/index.js → esm2020/lib/directions/directions-results/index.mjs} +0 -0
- package/{esm2015/lib/directions/directions-sources/directions-source.interface.js → esm2020/lib/directions/directions-sources/directions-source.interface.mjs} +0 -0
- package/{esm2015/lib/directions/directions-sources/directions-source.js → esm2020/lib/directions/directions-sources/directions-source.mjs} +0 -0
- package/{esm2015/lib/directions/directions-sources/directions-source.provider.js → esm2020/lib/directions/directions-sources/directions-source.provider.mjs} +0 -0
- package/{esm2015/lib/directions/directions-sources/index.js → esm2020/lib/directions/directions-sources/index.mjs} +0 -0
- package/{esm2015/lib/directions/directions-sources/osrm-directions-source.js → esm2020/lib/directions/directions-sources/osrm-directions-source.mjs} +0 -0
- package/esm2020/lib/directions/directions.component.mjs +311 -0
- package/{esm2015/lib/directions/directions.module.js → esm2020/lib/directions/directions.module.mjs} +16 -18
- package/{esm2015/lib/directions/index.js → esm2020/lib/directions/index.mjs} +0 -0
- package/{esm2015/lib/directions/shared/directions-source.service.js → esm2020/lib/directions/shared/directions-source.service.mjs} +0 -0
- package/{esm2015/lib/directions/shared/directions.enum.js → esm2020/lib/directions/shared/directions.enum.mjs} +0 -0
- package/{esm2015/lib/directions/shared/directions.interface.js → esm2020/lib/directions/shared/directions.interface.mjs} +0 -0
- package/{esm2015/lib/directions/shared/directions.service.js → esm2020/lib/directions/shared/directions.service.mjs} +0 -0
- package/esm2020/lib/directions/shared/directions.utils.mjs +510 -0
- package/{esm2015/lib/directions/shared/index.js → esm2020/lib/directions/shared/index.mjs} +0 -0
- package/{esm2015/lib/directions/shared/store.js → esm2020/lib/directions/shared/store.mjs} +0 -0
- package/esm2020/lib/download/download-button/download-button.component.mjs +61 -0
- package/{esm2015/lib/download/download-button/index.js → esm2020/lib/download/download-button/index.mjs} +0 -0
- package/{esm2015/lib/download/download.module.js → esm2020/lib/download/download.module.mjs} +6 -8
- package/{esm2015/lib/download/index.js → esm2020/lib/download/index.mjs} +0 -0
- package/{esm2015/lib/download/shared/download.interface.js → esm2020/lib/download/shared/download.interface.mjs} +0 -0
- package/{esm2015/lib/download/shared/download.service.js → esm2020/lib/download/shared/download.service.mjs} +0 -0
- package/{esm2015/lib/download/shared/index.js → esm2020/lib/download/shared/index.mjs} +0 -0
- package/{esm2015/lib/draw/draw/draw-popup.component.js → esm2020/lib/draw/draw/draw-popup.component.mjs} +11 -19
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +48 -0
- package/esm2020/lib/draw/draw/draw.component.mjs +714 -0
- package/{esm2015/lib/draw/draw/draw.module.js → esm2020/lib/draw/draw/draw.module.mjs} +19 -21
- package/{esm2015/lib/draw/drawingTool.module.js → esm2020/lib/draw/drawingTool.module.mjs} +2 -2
- package/{esm2015/lib/draw/index.js → esm2020/lib/draw/index.mjs} +0 -0
- package/{esm2015/lib/draw/shared/draw-icon.service.js → esm2020/lib/draw/shared/draw-icon.service.mjs} +0 -0
- package/{esm2015/lib/draw/shared/draw-style.service.js → esm2020/lib/draw/shared/draw-style.service.mjs} +0 -0
- package/{esm2015/lib/draw/shared/draw.enum.js → esm2020/lib/draw/shared/draw.enum.mjs} +0 -0
- package/{esm2015/lib/draw/shared/draw.interface.js → esm2020/lib/draw/shared/draw.interface.mjs} +0 -0
- package/{esm2015/lib/draw/shared/draw.utils.js → esm2020/lib/draw/shared/draw.utils.mjs} +0 -0
- package/{esm2015/lib/draw/shared/index.js → esm2020/lib/draw/shared/index.mjs} +0 -0
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +377 -0
- package/{esm2015/lib/feature/feature-details/feature-details.directive.js → esm2020/lib/feature/feature-details/feature-details.directive.mjs} +0 -0
- package/{esm2015/lib/feature/feature-details/feature-details.module.js → esm2020/lib/feature/feature-details/feature-details.module.mjs} +6 -8
- package/{esm2015/lib/feature/feature-form/feature-form.component.js → esm2020/lib/feature/feature-form/feature-form.component.mjs} +3 -8
- package/{esm2015/lib/feature/feature-form/feature-form.module.js → esm2020/lib/feature/feature-form/feature-form.module.mjs} +3 -5
- package/{esm2015/lib/feature/feature.module.js → esm2020/lib/feature/feature.module.mjs} +2 -4
- package/{esm2015/lib/feature/index.js → esm2020/lib/feature/index.mjs} +0 -0
- package/{esm2015/lib/feature/shared/feature.enums.js → esm2020/lib/feature/shared/feature.enums.mjs} +0 -0
- package/{esm2015/lib/feature/shared/feature.interfaces.js → esm2020/lib/feature/shared/feature.interfaces.mjs} +0 -0
- package/{esm2015/lib/feature/shared/feature.utils.js → esm2020/lib/feature/shared/feature.utils.mjs} +0 -0
- package/{esm2015/lib/feature/shared/index.js → esm2020/lib/feature/shared/index.mjs} +0 -0
- package/{esm2015/lib/feature/shared/store.js → esm2020/lib/feature/shared/store.mjs} +0 -0
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +113 -0
- package/{esm2015/lib/feature/shared/strategies/in-map-resolution.js → esm2020/lib/feature/shared/strategies/in-map-resolution.mjs} +0 -0
- package/{esm2015/lib/feature/shared/strategies/index.js → esm2020/lib/feature/shared/strategies/index.mjs} +0 -0
- package/{esm2015/lib/feature/shared/strategies/loading-layer.js → esm2020/lib/feature/shared/strategies/loading-layer.mjs} +0 -0
- package/{esm2015/lib/feature/shared/strategies/loading.js → esm2020/lib/feature/shared/strategies/loading.mjs} +0 -0
- package/{esm2015/lib/feature/shared/strategies/selection.js → esm2020/lib/feature/shared/strategies/selection.mjs} +0 -0
- package/{esm2015/lib/feature/shared/strategies.utils.js → esm2020/lib/feature/shared/strategies.utils.mjs} +0 -0
- package/esm2020/lib/filter/filter.module.mjs +289 -0
- package/{esm2015/lib/filter/index.js → esm2020/lib/filter/index.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filter-button/index.js → esm2020/lib/filter/ogc-filter-button/index.mjs} +0 -0
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +140 -0
- package/{esm2015/lib/filter/ogc-filter-form/index.js → esm2020/lib/filter/ogc-filter-form/index.mjs} +0 -0
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +645 -0
- package/{esm2015/lib/filter/ogc-filter-selection/index.js → esm2020/lib/filter/ogc-filter-selection/index.mjs} +0 -0
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1302 -0
- package/{esm2015/lib/filter/ogc-filter-time/index.js → esm2020/lib/filter/ogc-filter-time/index.mjs} +0 -0
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +177 -0
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +871 -0
- package/{esm2015/lib/filter/ogc-filterable-form/index.js → esm2020/lib/filter/ogc-filterable-form/index.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js → esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs} +3 -6
- package/{esm2015/lib/filter/ogc-filterable-item/index.js → esm2020/lib/filter/ogc-filterable-item/index.mjs} +0 -0
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +302 -0
- package/{esm2015/lib/filter/ogc-filterable-list/index.js → esm2020/lib/filter/ogc-filterable-list/index.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js → esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs} +0 -0
- package/{esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js → esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs} +2 -6
- package/{esm2015/lib/filter/shared/filterable-datasource.pipe.js → esm2020/lib/filter/shared/filterable-datasource.pipe.mjs} +0 -0
- package/{esm2015/lib/filter/shared/index.js → esm2020/lib/filter/shared/index.mjs} +0 -0
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
- package/{esm2015/lib/filter/shared/ogc-filter.enum.js → esm2020/lib/filter/shared/ogc-filter.enum.mjs} +0 -0
- package/{esm2015/lib/filter/shared/ogc-filter.interface.js → esm2020/lib/filter/shared/ogc-filter.interface.mjs} +0 -0
- package/esm2020/lib/filter/shared/ogc-filter.mjs +692 -0
- package/{esm2015/lib/filter/shared/ogc-filter.service.js → esm2020/lib/filter/shared/ogc-filter.service.mjs} +0 -0
- package/{esm2015/lib/filter/shared/spatial-filter.enum.js → esm2020/lib/filter/shared/spatial-filter.enum.mjs} +0 -0
- package/{esm2015/lib/filter/shared/spatial-filter.interface.js → esm2020/lib/filter/shared/spatial-filter.interface.mjs} +0 -0
- package/{esm2015/lib/filter/shared/spatial-filter.service.js → esm2020/lib/filter/shared/spatial-filter.service.mjs} +0 -0
- package/{esm2015/lib/filter/shared/time-filter.enum.js → esm2020/lib/filter/shared/time-filter.enum.mjs} +0 -0
- package/{esm2015/lib/filter/shared/time-filter.interface.js → esm2020/lib/filter/shared/time-filter.interface.mjs} +0 -0
- package/{esm2015/lib/filter/shared/time-filter.service.js → esm2020/lib/filter/shared/time-filter.service.mjs} +0 -0
- package/{esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js → esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs} +0 -0
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1076 -0
- package/{esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js → esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs} +0 -0
- package/{esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js → esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs} +16 -32
- package/{esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js → esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs} +0 -0
- package/{esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js → esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs} +7 -20
- package/{esm2015/lib/filter/time-filter-button/index.js → esm2020/lib/filter/time-filter-button/index.mjs} +0 -0
- package/{esm2015/lib/filter/time-filter-button/time-filter-button.component.js → esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs} +3 -8
- package/{esm2015/lib/filter/time-filter-form/index.js → esm2020/lib/filter/time-filter-form/index.mjs} +0 -0
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +734 -0
- package/{esm2015/lib/filter/time-filter-item/index.js → esm2020/lib/filter/time-filter-item/index.mjs} +0 -0
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +119 -0
- package/{esm2015/lib/filter/time-filter-list/index.js → esm2020/lib/filter/time-filter-list/index.mjs} +0 -0
- package/{esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js → esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs} +0 -0
- package/{esm2015/lib/filter/time-filter-list/time-filter-list.component.js → esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs} +2 -6
- package/{esm2015/lib/geo.module.js → esm2020/lib/geo.module.mjs} +2 -2
- package/{esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js → esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs} +2 -6
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +189 -0
- package/{esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js → esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs} +10 -12
- package/{esm2015/lib/geometry/geometry.module.js → esm2020/lib/geometry/geometry.module.mjs} +3 -5
- package/{esm2015/lib/geometry/index.js → esm2020/lib/geometry/index.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/controls/draw.js → esm2020/lib/geometry/shared/controls/draw.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/controls/index.js → esm2020/lib/geometry/shared/controls/index.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/controls/modify.js → esm2020/lib/geometry/shared/controls/modify.mjs} +1 -1
- package/{esm2015/lib/geometry/shared/controls/slice.js → esm2020/lib/geometry/shared/controls/slice.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/geometry.errors.js → esm2020/lib/geometry/shared/geometry.errors.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/geometry.interfaces.js → esm2020/lib/geometry/shared/geometry.interfaces.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/geometry.utils.js → esm2020/lib/geometry/shared/geometry.utils.mjs} +0 -0
- package/{esm2015/lib/geometry/shared/index.js → esm2020/lib/geometry/shared/index.mjs} +0 -0
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +64 -0
- package/{esm2015/lib/import-export/export-button/index.js → esm2020/lib/import-export/export-button/index.mjs} +0 -0
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +1190 -0
- package/{esm2015/lib/import-export/import-export/index.js → esm2020/lib/import-export/import-export/index.mjs} +0 -0
- package/{esm2015/lib/import-export/import-export.module.js → esm2020/lib/import-export/import-export.module.mjs} +19 -21
- package/{esm2015/lib/import-export/index.js → esm2020/lib/import-export/index.mjs} +0 -0
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +135 -0
- package/{esm2015/lib/import-export/shared/export.errors.js → esm2020/lib/import-export/shared/export.errors.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/export.interface.js → esm2020/lib/import-export/shared/export.interface.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/export.service.js → esm2020/lib/import-export/shared/export.service.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/export.type.js → esm2020/lib/import-export/shared/export.type.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/export.utils.js → esm2020/lib/import-export/shared/export.utils.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/import.errors.js → esm2020/lib/import-export/shared/import.errors.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/import.interface.js → esm2020/lib/import-export/shared/import.interface.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/import.service.js → esm2020/lib/import-export/shared/import.service.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/import.utils.js → esm2020/lib/import-export/shared/import.utils.mjs} +0 -0
- package/{esm2015/lib/import-export/shared/index.js → esm2020/lib/import-export/shared/index.mjs} +0 -0
- package/{esm2015/lib/import-export/style-list/index.js → esm2020/lib/import-export/style-list/index.mjs} +0 -0
- package/{esm2015/lib/import-export/style-list/style-list.interface.js → esm2020/lib/import-export/style-list/style-list.interface.mjs} +0 -0
- package/{esm2015/lib/import-export/style-list/style-list.module.js → esm2020/lib/import-export/style-list/style-list.module.mjs} +2 -2
- package/{esm2015/lib/import-export/style-list/style-list.provider.js → esm2020/lib/import-export/style-list/style-list.provider.mjs} +0 -0
- package/{esm2015/lib/import-export/style-list/style-list.service.js → esm2020/lib/import-export/style-list/style-list.service.mjs} +0 -0
- package/{esm2015/lib/layer/index.js → esm2020/lib/layer/index.mjs} +0 -0
- package/{esm2015/lib/layer/layer-item/index.js → esm2020/lib/layer/layer-item/index.mjs} +0 -0
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +300 -0
- package/{esm2015/lib/layer/layer-legend/index.js → esm2020/lib/layer/layer-legend/index.mjs} +0 -0
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +382 -0
- package/{esm2015/lib/layer/layer-legend-item/index.js → esm2020/lib/layer/layer-legend-item/index.mjs} +0 -0
- package/{esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js → esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs} +4 -11
- package/{esm2015/lib/layer/layer-legend-list/index.js → esm2020/lib/layer/layer-legend-list/index.mjs} +0 -0
- package/{esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js → esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs} +0 -0
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +195 -0
- package/{esm2015/lib/layer/layer-list/index.js → esm2020/lib/layer/layer-list/index.mjs} +0 -0
- package/{esm2015/lib/layer/layer-list/layer-list-binding.directive.js → esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs} +0 -0
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1024 -0
- package/{esm2015/lib/layer/layer-list/layer-list.enum.js → esm2020/lib/layer/layer-list/layer-list.enum.mjs} +0 -0
- package/{esm2015/lib/layer/layer-list-tool/index.js → esm2020/lib/layer/layer-list-tool/index.mjs} +0 -0
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +165 -0
- package/{esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js → esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs} +0 -0
- package/{esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js → esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs} +0 -0
- package/{esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js → esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs} +0 -0
- package/esm2020/lib/layer/layer.module.mjs +173 -0
- package/{esm2015/lib/layer/shared/clusterParam.js → esm2020/lib/layer/shared/clusterParam.mjs} +0 -0
- package/{esm2015/lib/layer/shared/index.js → esm2020/lib/layer/shared/index.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layer.enums.js → esm2020/lib/layer/shared/layer.enums.mjs} +0 -0
- package/esm2020/lib/layer/shared/layer.service.mjs +186 -0
- package/{esm2015/lib/layer/shared/layers/any-layer.interface.js → esm2020/lib/layer/shared/layers/any-layer.interface.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/any-layer.js → esm2020/lib/layer/shared/layers/any-layer.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/image-layer.interface.js → esm2020/lib/layer/shared/layers/image-layer.interface.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/image-layer.js → esm2020/lib/layer/shared/layers/image-layer.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/index.js → esm2020/lib/layer/shared/layers/index.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/layer.interface.js → esm2020/lib/layer/shared/layers/layer.interface.mjs} +0 -0
- package/esm2020/lib/layer/shared/layers/layer.mjs +170 -0
- package/{esm2015/lib/layer/shared/layers/tile-layer.interface.js → esm2020/lib/layer/shared/layers/tile-layer.interface.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/tile-layer.js → esm2020/lib/layer/shared/layers/tile-layer.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/vector-layer.interface.js → esm2020/lib/layer/shared/layers/vector-layer.interface.mjs} +0 -0
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +376 -0
- package/{esm2015/lib/layer/shared/layers/vectortile-layer.interface.js → esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs} +0 -0
- package/{esm2015/lib/layer/shared/layers/vectortile-layer.js → esm2020/lib/layer/shared/layers/vectortile-layer.mjs} +0 -0
- package/esm2020/lib/layer/shared/style.service.mjs +356 -0
- package/{esm2015/lib/layer/shared/vector-style.interface.js → esm2020/lib/layer/shared/vector-style.interface.mjs} +0 -0
- package/{esm2015/lib/layer/track-feature-button/index.js → esm2020/lib/layer/track-feature-button/index.mjs} +0 -0
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +59 -0
- package/{esm2015/lib/layer/utils/image-watcher.js → esm2020/lib/layer/utils/image-watcher.mjs} +0 -0
- package/{esm2015/lib/layer/utils/index.js → esm2020/lib/layer/utils/index.mjs} +0 -0
- package/esm2020/lib/layer/utils/layer.utils.mjs +10 -0
- package/esm2020/lib/layer/utils/layerSync-watcher.mjs +242 -0
- package/esm2020/lib/layer/utils/outputLegend.mjs +27 -0
- package/{esm2015/lib/layer/utils/tile-watcher.js → esm2020/lib/layer/utils/tile-watcher.mjs} +0 -0
- package/{esm2015/lib/layer/utils/vector-watcher.js → esm2020/lib/layer/utils/vector-watcher.mjs} +0 -0
- package/{esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js → esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs} +0 -0
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +97 -0
- package/{esm2015/lib/map/baselayers-switcher/index.js → esm2020/lib/map/baselayers-switcher/index.mjs} +0 -0
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +133 -0
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +76 -0
- package/{esm2015/lib/map/geolocate-button/index.js → esm2020/lib/map/geolocate-button/index.mjs} +0 -0
- package/{esm2015/lib/map/home-extent-button/home-extent-button.component.js → esm2020/lib/map/home-extent-button/home-extent-button.component.mjs} +8 -14
- package/{esm2015/lib/map/home-extent-button/index.js → esm2020/lib/map/home-extent-button/index.mjs} +0 -0
- package/{esm2015/lib/map/index.js → esm2020/lib/map/index.mjs} +0 -0
- package/{esm2015/lib/map/info-section/index.js → esm2020/lib/map/info-section/index.mjs} +0 -0
- package/esm2020/lib/map/info-section/info-section.component.mjs +30 -0
- package/{esm2015/lib/map/map-browser/index.js → esm2020/lib/map/map-browser/index.mjs} +0 -0
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +66 -0
- package/{esm2015/lib/map/map-center/index.js → esm2020/lib/map/map-center/index.mjs} +0 -0
- package/{esm2015/lib/map/map-center/map-center.component.js → esm2020/lib/map/map-center/map-center.component.mjs} +3 -8
- package/{esm2015/lib/map/map.module.js → esm2020/lib/map/map.module.mjs} +11 -13
- package/{esm2015/lib/map/menu-button/index.js → esm2020/lib/map/menu-button/index.mjs} +0 -0
- package/{esm2015/lib/map/menu-button/menu-button.component.js → esm2020/lib/map/menu-button/menu-button.component.mjs} +7 -11
- package/{esm2015/lib/map/offline-button/index.js → esm2020/lib/map/offline-button/index.mjs} +0 -0
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +76 -0
- package/{esm2015/lib/map/rotation-button/index.js → esm2020/lib/map/rotation-button/index.mjs} +0 -0
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +91 -0
- package/{esm2015/lib/map/shared/controllers/controller.js → esm2020/lib/map/shared/controllers/controller.mjs} +0 -0
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +308 -0
- package/{esm2015/lib/map/shared/controllers/index.js → esm2020/lib/map/shared/controllers/index.mjs} +0 -0
- package/{esm2015/lib/map/shared/controllers/view.js → esm2020/lib/map/shared/controllers/view.mjs} +0 -0
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +506 -0
- package/{esm2015/lib/map/shared/index.js → esm2020/lib/map/shared/index.mjs} +0 -0
- package/{esm2015/lib/map/shared/map-pointer-position.directive.js → esm2020/lib/map/shared/map-pointer-position.directive.mjs} +0 -0
- package/{esm2015/lib/map/shared/map.enums.js → esm2020/lib/map/shared/map.enums.mjs} +0 -0
- package/{esm2015/lib/map/shared/map.interface.js → esm2020/lib/map/shared/map.interface.mjs} +0 -0
- package/esm2020/lib/map/shared/map.mjs +417 -0
- package/{esm2015/lib/map/shared/map.service.js → esm2020/lib/map/shared/map.service.mjs} +0 -0
- package/{esm2015/lib/map/shared/map.utils.js → esm2020/lib/map/shared/map.utils.mjs} +0 -0
- package/{esm2015/lib/map/shared/mapOffline.directive.js → esm2020/lib/map/shared/mapOffline.directive.mjs} +0 -0
- package/{esm2015/lib/map/shared/projection.interfaces.js → esm2020/lib/map/shared/projection.interfaces.mjs} +0 -0
- package/{esm2015/lib/map/shared/projection.service.js → esm2020/lib/map/shared/projection.service.mjs} +0 -0
- package/{esm2015/lib/map/shared/projection.utils.js → esm2020/lib/map/shared/projection.utils.mjs} +0 -0
- package/{esm2015/lib/map/swipe-control/index.js → esm2020/lib/map/swipe-control/index.mjs} +0 -0
- package/{esm2015/lib/map/swipe-control/swipe-control.component.js → esm2020/lib/map/swipe-control/swipe-control.component.mjs} +4 -10
- package/{esm2015/lib/map/utils/layer-watcher.js → esm2020/lib/map/utils/layer-watcher.mjs} +0 -0
- package/{esm2015/lib/map/wake-lock-button/index.js → esm2020/lib/map/wake-lock-button/index.mjs} +0 -0
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +114 -0
- package/{esm2015/lib/map/zoom-button/index.js → esm2020/lib/map/zoom-button/index.mjs} +0 -0
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +40 -0
- package/{esm2015/lib/measure/index.js → esm2020/lib/measure/index.mjs} +0 -0
- package/{esm2015/lib/measure/measure.module.js → esm2020/lib/measure/measure.module.mjs} +2 -2
- package/{esm2015/lib/measure/measurer/measure-format.pipe.js → esm2020/lib/measure/measurer/measure-format.pipe.mjs} +0 -0
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +180 -0
- package/{esm2015/lib/measure/measurer/measurer-item.component.js → esm2020/lib/measure/measurer/measurer-item.component.mjs} +12 -20
- package/esm2020/lib/measure/measurer/measurer.component.mjs +1042 -0
- package/esm2020/lib/measure/measurer/measurer.module.mjs +94 -0
- package/{esm2015/lib/measure/shared/index.js → esm2020/lib/measure/shared/index.mjs} +0 -0
- package/{esm2015/lib/measure/shared/measure.enum.js → esm2020/lib/measure/shared/measure.enum.mjs} +0 -0
- package/{esm2015/lib/measure/shared/measure.interfaces.js → esm2020/lib/measure/shared/measure.interfaces.mjs} +0 -0
- package/{esm2015/lib/measure/shared/measure.utils.js → esm2020/lib/measure/shared/measure.utils.mjs} +0 -0
- package/{esm2015/lib/metadata/index.js → esm2020/lib/metadata/index.mjs} +0 -0
- package/{esm2015/lib/metadata/metadata-button/index.js → esm2020/lib/metadata/metadata-button/index.mjs} +0 -0
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +134 -0
- package/{esm2015/lib/metadata/metadata.module.js → esm2020/lib/metadata/metadata.module.mjs} +7 -9
- package/{esm2015/lib/metadata/shared/index.js → esm2020/lib/metadata/shared/index.mjs} +0 -0
- package/{esm2015/lib/metadata/shared/metadata.interface.js → esm2020/lib/metadata/shared/metadata.interface.mjs} +0 -0
- package/{esm2015/lib/metadata/shared/metadata.service.js → esm2020/lib/metadata/shared/metadata.service.mjs} +0 -0
- package/{esm2015/lib/offline/geoDB/geoDB.enums.js → esm2020/lib/offline/geoDB/geoDB.enums.mjs} +0 -0
- package/{esm2015/lib/offline/geoDB/geoDB.interface.js → esm2020/lib/offline/geoDB/geoDB.interface.mjs} +0 -0
- package/{esm2015/lib/offline/geoDB/geoDB.service.js → esm2020/lib/offline/geoDB/geoDB.service.mjs} +0 -0
- package/{esm2015/lib/offline/geoDB/index.js → esm2020/lib/offline/geoDB/index.mjs} +0 -0
- package/{esm2015/lib/offline/index.js → esm2020/lib/offline/index.mjs} +0 -0
- package/{esm2015/lib/offline/shared/geo-network.service.js → esm2020/lib/offline/shared/geo-network.service.mjs} +0 -0
- package/{esm2015/lib/offline/shared/index.js → esm2020/lib/offline/shared/index.mjs} +0 -0
- package/{esm2015/lib/overlay/index.js → esm2020/lib/overlay/index.mjs} +0 -0
- package/{esm2015/lib/overlay/overlay.module.js → esm2020/lib/overlay/overlay.module.mjs} +2 -2
- package/{esm2015/lib/overlay/shared/index.js → esm2020/lib/overlay/shared/index.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay-marker-style.utils.js → esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay.directive.js → esm2020/lib/overlay/shared/overlay.directive.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay.enum.js → esm2020/lib/overlay/shared/overlay.enum.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay.js → esm2020/lib/overlay/shared/overlay.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay.service.js → esm2020/lib/overlay/shared/overlay.service.mjs} +0 -0
- package/{esm2015/lib/overlay/shared/overlay.utils.js → esm2020/lib/overlay/shared/overlay.utils.mjs} +0 -0
- package/{esm2015/lib/print/index.js → esm2020/lib/print/index.mjs} +0 -0
- package/{esm2015/lib/print/print/print.component.js → esm2020/lib/print/print/print.component.mjs} +3 -6
- package/{esm2015/lib/print/print-form/index.js → esm2020/lib/print/print-form/index.mjs} +0 -0
- package/esm2020/lib/print/print-form/print-form.component.mjs +405 -0
- package/{esm2015/lib/print/print.module.js → esm2020/lib/print/print.module.mjs} +13 -15
- package/{esm2015/lib/print/shared/index.js → esm2020/lib/print/shared/index.mjs} +0 -0
- package/{esm2015/lib/print/shared/print.interface.js → esm2020/lib/print/shared/print.interface.mjs} +0 -0
- package/esm2020/lib/print/shared/print.service.mjs +807 -0
- package/{esm2015/lib/print/shared/print.type.js → esm2020/lib/print/shared/print.type.mjs} +0 -0
- package/{esm2015/lib/query/index.js → esm2020/lib/query/index.mjs} +0 -0
- package/{esm2015/lib/query/query.module.js → esm2020/lib/query/query.module.mjs} +2 -2
- package/{esm2015/lib/query/shared/index.js → esm2020/lib/query/shared/index.mjs} +0 -0
- package/{esm2015/lib/query/shared/query-search-source.js → esm2020/lib/query/shared/query-search-source.mjs} +0 -0
- package/{esm2015/lib/query/shared/query-search-source.providers.js → esm2020/lib/query/shared/query-search-source.providers.mjs} +0 -0
- package/{esm2015/lib/query/shared/query.directive.js → esm2020/lib/query/shared/query.directive.mjs} +0 -0
- package/{esm2015/lib/query/shared/query.enums.js → esm2020/lib/query/shared/query.enums.mjs} +0 -0
- package/{esm2015/lib/query/shared/query.interfaces.js → esm2020/lib/query/shared/query.interfaces.mjs} +0 -0
- package/esm2020/lib/query/shared/query.service.mjs +613 -0
- package/{esm2015/lib/query/shared/query.utils.js → esm2020/lib/query/shared/query.utils.mjs} +0 -0
- package/{esm2015/lib/search/index.js → esm2020/lib/search/index.mjs} +0 -0
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +489 -0
- package/{esm2015/lib/search/search-bar/search-bar.module.js → esm2020/lib/search/search-bar/search-bar.module.mjs} +13 -15
- package/{esm2015/lib/search/search-bar/search-url-param.directive.js → esm2020/lib/search/search-bar/search-url-param.directive.mjs} +0 -0
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +193 -0
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +124 -0
- package/esm2020/lib/search/search-results/search-results.component.mjs +331 -0
- package/{esm2015/lib/search/search-results/search-results.module.js → esm2020/lib/search/search-results/search-results.module.mjs} +13 -15
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +123 -0
- package/{esm2015/lib/search/search-selector/search-selector.module.js → esm2020/lib/search/search-selector/search-selector.module.mjs} +10 -12
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +418 -0
- package/{esm2015/lib/search/search-settings/search-settings.module.js → esm2020/lib/search/search-settings/search-settings.module.mjs} +11 -13
- package/{esm2015/lib/search/search.module.js → esm2020/lib/search/search.module.mjs} +6 -8
- package/{esm2015/lib/search/shared/index.js → esm2020/lib/search/shared/index.mjs} +0 -0
- package/{esm2015/lib/search/shared/search-pointer-summary.directive.js → esm2020/lib/search/shared/search-pointer-summary.directive.mjs} +0 -0
- package/{esm2015/lib/search/shared/search-source-service.providers.js → esm2020/lib/search/shared/search-source-service.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/search-source.service.js → esm2020/lib/search/shared/search-source.service.mjs} +0 -0
- package/{esm2015/lib/search/shared/search.enums.js → esm2020/lib/search/shared/search.enums.mjs} +0 -0
- package/{esm2015/lib/search/shared/search.interfaces.js → esm2020/lib/search/shared/search.interfaces.mjs} +0 -0
- package/esm2020/lib/search/shared/search.service.mjs +118 -0
- package/{esm2015/lib/search/shared/search.utils.js → esm2020/lib/search/shared/search.utils.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/cadastre.js → esm2020/lib/search/shared/sources/cadastre.mjs} +1 -1
- package/{esm2015/lib/search/shared/sources/cadastre.providers.js → esm2020/lib/search/shared/sources/cadastre.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/coordinates.interfaces.js → esm2020/lib/search/shared/sources/coordinates.interfaces.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/coordinates.js → esm2020/lib/search/shared/sources/coordinates.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/coordinates.providers.js → esm2020/lib/search/shared/sources/coordinates.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/icherche.interfaces.js → esm2020/lib/search/shared/sources/icherche.interfaces.mjs} +0 -0
- package/esm2020/lib/search/shared/sources/icherche.mjs +755 -0
- package/{esm2015/lib/search/shared/sources/icherche.providers.js → esm2020/lib/search/shared/sources/icherche.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/ilayer.interfaces.js → esm2020/lib/search/shared/sources/ilayer.interfaces.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/ilayer.js → esm2020/lib/search/shared/sources/ilayer.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/ilayer.providers.js → esm2020/lib/search/shared/sources/ilayer.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/index.js → esm2020/lib/search/shared/sources/index.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/nominatim.interfaces.js → esm2020/lib/search/shared/sources/nominatim.interfaces.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/nominatim.js → esm2020/lib/search/shared/sources/nominatim.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/nominatim.providers.js → esm2020/lib/search/shared/sources/nominatim.providers.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/source.interfaces.js → esm2020/lib/search/shared/sources/source.interfaces.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/source.js → esm2020/lib/search/shared/sources/source.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/storedqueries.interfaces.js → esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs} +0 -0
- package/{esm2015/lib/search/shared/sources/storedqueries.js → esm2020/lib/search/shared/sources/storedqueries.mjs} +1 -1
- package/{esm2015/lib/search/shared/sources/storedqueries.providers.js → esm2020/lib/search/shared/sources/storedqueries.providers.mjs} +0 -0
- package/{esm2015/lib/toast/index.js → esm2020/lib/toast/index.mjs} +0 -0
- package/esm2020/lib/toast/toast.component.mjs +113 -0
- package/{esm2015/lib/toast/toast.module.js → esm2020/lib/toast/toast.module.mjs} +7 -9
- package/{esm2015/lib/utils/commonVectorStyle.interface.js → esm2020/lib/utils/commonVectorStyle.interface.mjs} +0 -0
- package/{esm2015/lib/utils/commonVectorStyle.js → esm2020/lib/utils/commonVectorStyle.mjs} +0 -0
- package/{esm2015/lib/utils/googleLinks.js → esm2020/lib/utils/googleLinks.mjs} +0 -0
- package/{esm2015/lib/utils/id-generator.js → esm2020/lib/utils/id-generator.mjs} +0 -0
- package/{esm2015/lib/utils/index.js → esm2020/lib/utils/index.mjs} +0 -0
- package/{esm2015/lib/utils/osmLinks.js → esm2020/lib/utils/osmLinks.mjs} +0 -0
- package/{esm2015/lib/wkt/index.js → esm2020/lib/wkt/index.mjs} +0 -0
- package/{esm2015/lib/wkt/shared/index.js → esm2020/lib/wkt/shared/index.mjs} +0 -0
- package/{esm2015/lib/wkt/shared/wkt.service.js → esm2020/lib/wkt/shared/wkt.service.mjs} +0 -0
- package/{esm2015/lib/wkt/wkt.module.js → esm2020/lib/wkt/wkt.module.mjs} +2 -2
- package/{esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js → esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs} +7 -15
- package/{esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js → esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs} +5 -7
- package/{esm2015/lib/workspace/confirmation-popup/index.js → esm2020/lib/workspace/confirmation-popup/index.mjs} +0 -0
- package/{esm2015/lib/workspace/index.js → esm2020/lib/workspace/index.mjs} +0 -0
- package/{esm2015/lib/workspace/shared/edition-workspace.js → esm2020/lib/workspace/shared/edition-workspace.mjs} +2 -3
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +642 -0
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +35 -0
- package/{esm2015/lib/workspace/shared/wfs-workspace.service.js → esm2020/lib/workspace/shared/feature-workspace.service.mjs} +8 -9
- package/{esm2015/lib/workspace/shared/index.js → esm2020/lib/workspace/shared/index.mjs} +0 -0
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +35 -0
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +150 -0
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +261 -0
- package/{esm2015/lib/workspace/shared/workspace.utils.js → esm2020/lib/workspace/shared/workspace.utils.mjs} +0 -0
- package/{esm2015/lib/workspace/widgets/index.js → esm2020/lib/workspace/widgets/index.mjs} +0 -0
- package/{esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js → esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs} +3 -8
- package/{esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js → esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs} +5 -7
- package/{esm2015/lib/workspace/widgets/widgets.js → esm2020/lib/workspace/widgets/widgets.mjs} +0 -0
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +133 -0
- package/{esm2015/lib/workspace/workspace-selector/workspace-selector.module.js → esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs} +2 -4
- package/{esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js → esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs} +8 -11
- package/{esm2015/lib/workspace/workspace-updator/workspace-updator.module.js → esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs} +2 -4
- package/{esm2015/lib/workspace/workspace.module.js → esm2020/lib/workspace/workspace.module.mjs} +8 -10
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/fesm2015/igo2-geo.mjs +42904 -0
- package/fesm2015/igo2-geo.mjs.map +1 -0
- package/{fesm2015/igo2-geo.js → fesm2020/igo2-geo.mjs} +1635 -2527
- package/fesm2020/igo2-geo.mjs.map +1 -0
- package/{igo2-geo.d.ts → index.d.ts} +0 -0
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +1 -1
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
- package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
- package/lib/directions/directions.component.d.ts +1 -1
- package/lib/download/download-button/download-button.component.d.ts +1 -1
- package/lib/draw/draw/draw-popup.component.d.ts +1 -1
- package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
- package/lib/feature/feature-form/feature-form.component.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +5 -5
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +1 -1
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +4 -4
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +2 -2
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +1 -1
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
- package/lib/import-export/export-button/export-button.component.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +1 -1
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +1 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -1
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
- package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
- package/lib/map/info-section/info-section.component.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +1 -1
- package/lib/map/map-center/map-center.component.d.ts +1 -1
- package/lib/map/menu-button/menu-button.component.d.ts +1 -1
- package/lib/map/offline-button/offline-button.component.d.ts +1 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +3 -2
- package/lib/map/shared/hover-feature.directive.d.ts +1 -1
- package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
- package/lib/map/shared/map.d.ts +3 -2
- package/lib/map/shared/mapOffline.directive.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +1 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
- package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
- package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
- package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
- package/lib/measure/measurer/measurer.component.d.ts +1 -1
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
- package/lib/overlay/shared/overlay.directive.d.ts +1 -1
- package/lib/print/print/print.component.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +14 -14
- package/lib/print/shared/print.service.d.ts +6 -1
- package/lib/query/shared/query.directive.d.ts +1 -1
- package/lib/search/search-bar/search-bar.component.d.ts +1 -1
- package/lib/search/search-bar/search-url-param.directive.d.ts +1 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/search-results/search-results-item.component.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +1 -1
- package/lib/search/search-selector/search-selector.component.d.ts +1 -1
- package/lib/search/search-settings/search-settings.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +1 -1
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
- package/package.json +31 -18
- package/bundles/igo2-geo.umd.js +0 -47612
- package/bundles/igo2-geo.umd.js.map +0 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +0 -305
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +0 -248
- package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +0 -235
- package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +0 -85
- package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +0 -224
- package/esm2015/lib/catalog/shared/catalog.service.js +0 -606
- package/esm2015/lib/datasource/shared/capabilities.service.js +0 -427
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +0 -74
- package/esm2015/lib/datasource/shared/datasources/wfs.service.js +0 -153
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +0 -205
- package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +0 -229
- package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +0 -300
- package/esm2015/lib/directions/directions-results/directions-results.component.js +0 -204
- package/esm2015/lib/directions/directions.component.js +0 -316
- package/esm2015/lib/directions/shared/directions.utils.js +0 -510
- package/esm2015/lib/download/download-button/download-button.component.js +0 -66
- package/esm2015/lib/draw/draw/draw-shorcuts.component.js +0 -64
- package/esm2015/lib/draw/draw/draw.component.js +0 -745
- package/esm2015/lib/feature/feature-details/feature-details.component.js +0 -393
- package/esm2015/lib/feature/shared/strategies/in-map-extent.js +0 -114
- package/esm2015/lib/filter/filter.module.js +0 -290
- package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +0 -161
- package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +0 -657
- package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +0 -1355
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +0 -185
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +0 -898
- package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +0 -307
- package/esm2015/lib/filter/shared/ogc-filter-time.service.js +0 -73
- package/esm2015/lib/filter/shared/ogc-filter.js +0 -693
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +0 -1108
- package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +0 -772
- package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +0 -126
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +0 -199
- package/esm2015/lib/import-export/export-button/export-button.component.js +0 -70
- package/esm2015/lib/import-export/import-export/import-export.component.js +0 -1238
- package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +0 -136
- package/esm2015/lib/layer/layer-item/layer-item.component.js +0 -305
- package/esm2015/lib/layer/layer-legend/layer-legend.component.js +0 -395
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +0 -200
- package/esm2015/lib/layer/layer-list/layer-list.component.js +0 -1043
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +0 -176
- package/esm2015/lib/layer/layer.module.js +0 -174
- package/esm2015/lib/layer/shared/layer.service.js +0 -186
- package/esm2015/lib/layer/shared/layers/layer.js +0 -169
- package/esm2015/lib/layer/shared/layers/vector-layer.js +0 -376
- package/esm2015/lib/layer/shared/style.service.js +0 -358
- package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +0 -64
- package/esm2015/lib/layer/utils/layer.utils.js +0 -11
- package/esm2015/lib/layer/utils/layerSync-watcher.js +0 -249
- package/esm2015/lib/layer/utils/outputLegend.js +0 -27
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +0 -105
- package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +0 -137
- package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +0 -82
- package/esm2015/lib/map/info-section/info-section.component.js +0 -36
- package/esm2015/lib/map/map-browser/map-browser.component.js +0 -70
- package/esm2015/lib/map/offline-button/offline-button.component.js +0 -84
- package/esm2015/lib/map/rotation-button/rotation-button.component.js +0 -97
- package/esm2015/lib/map/shared/controllers/geolocation.js +0 -295
- package/esm2015/lib/map/shared/hover-feature.directive.js +0 -509
- package/esm2015/lib/map/shared/map.js +0 -417
- package/esm2015/lib/map/wake-lock-button/wake-lock-button.component.js +0 -122
- package/esm2015/lib/map/zoom-button/zoom-button.component.js +0 -46
- package/esm2015/lib/measure/measurer/measurer-dialog.component.js +0 -220
- package/esm2015/lib/measure/measurer/measurer.component.js +0 -1053
- package/esm2015/lib/measure/measurer/measurer.module.js +0 -96
- package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +0 -135
- package/esm2015/lib/print/print-form/print-form.component.js +0 -447
- package/esm2015/lib/print/shared/print.service.js +0 -820
- package/esm2015/lib/query/shared/query.service.js +0 -619
- package/esm2015/lib/search/search-bar/search-bar.component.js +0 -496
- package/esm2015/lib/search/search-results/search-results-add-button.component.js +0 -198
- package/esm2015/lib/search/search-results/search-results-item.component.js +0 -129
- package/esm2015/lib/search/search-results/search-results.component.js +0 -337
- package/esm2015/lib/search/search-selector/search-selector.component.js +0 -132
- package/esm2015/lib/search/search-settings/search-settings.component.js +0 -435
- package/esm2015/lib/search/shared/search.service.js +0 -118
- package/esm2015/lib/search/shared/sources/icherche.js +0 -756
- package/esm2015/lib/toast/toast.component.js +0 -119
- package/esm2015/lib/workspace/shared/edition-workspace.service.js +0 -646
- package/esm2015/lib/workspace/shared/feature-workspace.js +0 -37
- package/esm2015/lib/workspace/shared/feature-workspace.service.js +0 -151
- package/esm2015/lib/workspace/shared/wfs-workspace.js +0 -37
- package/esm2015/lib/workspace/shared/wms-workspace.service.js +0 -263
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +0 -135
- package/fesm2015/igo2-geo.js.map +0 -1
|
@@ -1,898 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import { OgcFilterOperator } from '../../filter/shared/ogc-filter.enum';
|
|
4
|
-
import * as moment_ from 'moment';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../shared/ogc-filter-time.service";
|
|
7
|
-
const _c0 = ["endDatepickerTime"];
|
|
8
|
-
const _c1 = ["beginDatepickerTime"];
|
|
9
|
-
const _c2 = ["beginTime"];
|
|
10
|
-
const _c3 = ["endTime"];
|
|
11
|
-
function OgcFilterTimeComponent_mat_slide_toggle_1_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
13
|
-
i0.ɵɵelementStart(0, "mat-slide-toggle", 4);
|
|
14
|
-
i0.ɵɵlistener("ngModelChange", function OgcFilterTimeComponent_mat_slide_toggle_1_Template_mat_slide_toggle_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.sliderMode = $event; })("change", function OgcFilterTimeComponent_mat_slide_toggle_1_Template_mat_slide_toggle_change_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.modeChange($event); });
|
|
15
|
-
i0.ɵɵtext(1);
|
|
16
|
-
i0.ɵɵpipe(2, "translate");
|
|
17
|
-
i0.ɵɵelementEnd();
|
|
18
|
-
} if (rf & 2) {
|
|
19
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
20
|
-
i0.ɵɵproperty("ngModel", ctx_r0.sliderMode);
|
|
21
|
-
i0.ɵɵadvance(1);
|
|
22
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.filter.sliderModeTitle"), " ");
|
|
23
|
-
} }
|
|
24
|
-
function OgcFilterTimeComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
26
|
-
i0.ɵɵelementStart(0, "div", 5);
|
|
27
|
-
i0.ɵɵelementStart(1, "igo-ogc-filter-time-slider", 6);
|
|
28
|
-
i0.ɵɵlistener("changeProperty", function OgcFilterTimeComponent_div_2_Template_igo_ogc_filter_time_slider_changeProperty_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.changePropertyByPass($event); });
|
|
29
|
-
i0.ɵɵelementEnd();
|
|
30
|
-
i0.ɵɵelementEnd();
|
|
31
|
-
} if (rf & 2) {
|
|
32
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
33
|
-
i0.ɵɵadvance(1);
|
|
34
|
-
i0.ɵɵproperty("begin", ctx_r1.beginValue)("max", ctx_r1.restrictedToStep() ? ctx_r1.maxDate : ctx_r1.endValue)("currentFilter", ctx_r1.currentFilter)("datasource", ctx_r1.datasource);
|
|
35
|
-
} }
|
|
36
|
-
function OgcFilterTimeComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
const _r15 = i0.ɵɵgetCurrentView();
|
|
38
|
-
i0.ɵɵelementStart(0, "div", 9);
|
|
39
|
-
i0.ɵɵelementStart(1, "mat-form-field", 10);
|
|
40
|
-
i0.ɵɵelementStart(2, "mat-label");
|
|
41
|
-
i0.ɵɵtext(3);
|
|
42
|
-
i0.ɵɵpipe(4, "translate");
|
|
43
|
-
i0.ɵɵelementEnd();
|
|
44
|
-
i0.ɵɵelementStart(5, "input", 11);
|
|
45
|
-
i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r14 = i0.ɵɵnextContext(2); return ctx_r14.yearOnlyInputChange($event, _r10, "begin"); });
|
|
46
|
-
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelement(6, "mat-datepicker-toggle", 12);
|
|
48
|
-
i0.ɵɵelementStart(7, "mat-datepicker", 13, 14);
|
|
49
|
-
i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r15); const _r10 = i0.ɵɵreference(8); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.yearSelected($event, _r10, "begin"); });
|
|
50
|
-
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelement(9, "input", 15, 16);
|
|
52
|
-
i0.ɵɵelementEnd();
|
|
53
|
-
i0.ɵɵelementStart(11, "mat-form-field", 10);
|
|
54
|
-
i0.ɵɵelementStart(12, "mat-label");
|
|
55
|
-
i0.ɵɵtext(13);
|
|
56
|
-
i0.ɵɵpipe(14, "translate");
|
|
57
|
-
i0.ɵɵelementEnd();
|
|
58
|
-
i0.ɵɵelementStart(15, "input", 11);
|
|
59
|
-
i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_input_change_15_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.yearOnlyInputChange($event, _r12, "end"); });
|
|
60
|
-
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelement(16, "mat-datepicker-toggle", 12);
|
|
62
|
-
i0.ɵɵelementStart(17, "mat-datepicker", 13, 17);
|
|
63
|
-
i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_1_Template_mat_datepicker_yearSelected_17_listener($event) { i0.ɵɵrestoreView(_r15); const _r12 = i0.ɵɵreference(18); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.yearSelected($event, _r12, "end"); });
|
|
64
|
-
i0.ɵɵelementEnd();
|
|
65
|
-
i0.ɵɵelement(19, "input", 15, 18);
|
|
66
|
-
i0.ɵɵelementEnd();
|
|
67
|
-
i0.ɵɵelementStart(21, "button", 19);
|
|
68
|
-
i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_1_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r15); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.resetFilter(); });
|
|
69
|
-
i0.ɵɵpipe(22, "translate");
|
|
70
|
-
i0.ɵɵelement(23, "mat-icon", 20);
|
|
71
|
-
i0.ɵɵelementEnd();
|
|
72
|
-
i0.ɵɵelementStart(24, "mat-slide-toggle", 21);
|
|
73
|
-
i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_1_Template_mat_slide_toggle_change_24_listener() { i0.ɵɵrestoreView(_r15); const ctx_r20 = i0.ɵɵnextContext(2); return ctx_r20.toggleFilterState(); });
|
|
74
|
-
i0.ɵɵpipe(25, "translate");
|
|
75
|
-
i0.ɵɵelementEnd();
|
|
76
|
-
i0.ɵɵelementEnd();
|
|
77
|
-
} if (rf & 2) {
|
|
78
|
-
const _r10 = i0.ɵɵreference(8);
|
|
79
|
-
const _r12 = i0.ɵɵreference(18);
|
|
80
|
-
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
81
|
-
i0.ɵɵadvance(3);
|
|
82
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 27, "igo.geo.timeFilter.startYear"));
|
|
83
|
-
i0.ɵɵadvance(2);
|
|
84
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearBegin);
|
|
85
|
-
i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
|
|
86
|
-
i0.ɵɵadvance(1);
|
|
87
|
-
i0.ɵɵproperty("for", _r10)("disabled", ctx_r8.filterStateDisable);
|
|
88
|
-
i0.ɵɵadvance(1);
|
|
89
|
-
i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.beginValue);
|
|
90
|
-
i0.ɵɵadvance(2);
|
|
91
|
-
i0.ɵɵproperty("matDatepicker", _r10)("value", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("min", ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.endValue && !ctx_r8.restrictedToStep() ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
|
|
92
|
-
i0.ɵɵadvance(4);
|
|
93
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 29, "igo.geo.timeFilter.endYear"));
|
|
94
|
-
i0.ɵɵadvance(2);
|
|
95
|
-
i0.ɵɵpropertyInterpolate("value", ctx_r8.onlyYearEnd);
|
|
96
|
-
i0.ɵɵproperty("disabled", ctx_r8.filterStateDisable);
|
|
97
|
-
i0.ɵɵadvance(1);
|
|
98
|
-
i0.ɵɵproperty("for", _r12)("disabled", ctx_r8.filterStateDisable);
|
|
99
|
-
i0.ɵɵadvance(1);
|
|
100
|
-
i0.ɵɵproperty("startView", ctx_r8.calendarView())("startAt", ctx_r8.endValue);
|
|
101
|
-
i0.ɵɵadvance(2);
|
|
102
|
-
i0.ɵɵproperty("matDatepicker", _r12)("value", ctx_r8.endValue ? ctx_r8.endValue : ctx_r8.handleDate(ctx_r8.datasource.options.maxDate))("min", ctx_r8.beginValue ? ctx_r8.beginValue : ctx_r8.handleDate(ctx_r8.datasource.options.minDate))("max", ctx_r8.handleDate(ctx_r8.datasource.options.maxDate));
|
|
103
|
-
i0.ɵɵadvance(2);
|
|
104
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(22, 31, "igo.geo.filter.resetFilters"))("disabled", ctx_r8.filterStateDisable);
|
|
105
|
-
i0.ɵɵadvance(2);
|
|
106
|
-
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r8.resetIcon);
|
|
107
|
-
i0.ɵɵadvance(1);
|
|
108
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(25, 33, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r8.filterStateDisable);
|
|
109
|
-
} }
|
|
110
|
-
function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
-
i0.ɵɵelementStart(0, "mat-option", 36);
|
|
112
|
-
i0.ɵɵtext(1);
|
|
113
|
-
i0.ɵɵelementEnd();
|
|
114
|
-
} if (rf & 2) {
|
|
115
|
-
const hour_r27 = ctx.$implicit;
|
|
116
|
-
i0.ɵɵproperty("value", hour_r27);
|
|
117
|
-
i0.ɵɵadvance(1);
|
|
118
|
-
i0.ɵɵtextInterpolate(hour_r27);
|
|
119
|
-
} }
|
|
120
|
-
function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
-
const _r29 = i0.ɵɵgetCurrentView();
|
|
122
|
-
i0.ɵɵelementStart(0, "mat-form-field", 33);
|
|
123
|
-
i0.ɵɵelementStart(1, "mat-label");
|
|
124
|
-
i0.ɵɵtext(2);
|
|
125
|
-
i0.ɵɵpipe(3, "translate");
|
|
126
|
-
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelementStart(4, "mat-select", 34);
|
|
128
|
-
i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r29); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r28 = i0.ɵɵnextContext(2); return ctx_r28.changeTemporalProperty(_r21.value, 1); });
|
|
129
|
-
i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
|
|
130
|
-
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵelementEnd();
|
|
132
|
-
} if (rf & 2) {
|
|
133
|
-
const ctx_r23 = i0.ɵɵnextContext(3);
|
|
134
|
-
i0.ɵɵadvance(2);
|
|
135
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
|
|
136
|
-
i0.ɵɵadvance(2);
|
|
137
|
-
i0.ɵɵproperty("formControl", ctx_r23.beginHourFormControl);
|
|
138
|
-
i0.ɵɵattribute("disabled", !ctx_r23.currentFilter.active);
|
|
139
|
-
i0.ɵɵadvance(1);
|
|
140
|
-
i0.ɵɵproperty("ngForOf", ctx_r23.beginHours);
|
|
141
|
-
} }
|
|
142
|
-
function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "mat-option", 36);
|
|
144
|
-
i0.ɵɵtext(1);
|
|
145
|
-
i0.ɵɵelementEnd();
|
|
146
|
-
} if (rf & 2) {
|
|
147
|
-
const minute_r31 = ctx.$implicit;
|
|
148
|
-
i0.ɵɵproperty("value", minute_r31);
|
|
149
|
-
i0.ɵɵadvance(1);
|
|
150
|
-
i0.ɵɵtextInterpolate(minute_r31);
|
|
151
|
-
} }
|
|
152
|
-
function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
-
const _r33 = i0.ɵɵgetCurrentView();
|
|
154
|
-
i0.ɵɵelementStart(0, "mat-form-field", 37);
|
|
155
|
-
i0.ɵɵelementStart(1, "mat-label");
|
|
156
|
-
i0.ɵɵtext(2);
|
|
157
|
-
i0.ɵɵpipe(3, "translate");
|
|
158
|
-
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵelementStart(4, "mat-select", 34);
|
|
160
|
-
i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r33); i0.ɵɵnextContext(); const _r21 = i0.ɵɵreference(5); const ctx_r32 = i0.ɵɵnextContext(2); return ctx_r32.changeTemporalProperty(_r21.value, 1); });
|
|
161
|
-
i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_mat_option_5_Template, 2, 2, "mat-option", 35);
|
|
162
|
-
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementEnd();
|
|
164
|
-
} if (rf & 2) {
|
|
165
|
-
const ctx_r24 = i0.ɵɵnextContext(3);
|
|
166
|
-
i0.ɵɵadvance(2);
|
|
167
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
|
|
168
|
-
i0.ɵɵadvance(2);
|
|
169
|
-
i0.ɵɵproperty("formControl", ctx_r24.beginMinuteFormControl);
|
|
170
|
-
i0.ɵɵattribute("disabled", !ctx_r24.currentFilter.active);
|
|
171
|
-
i0.ɵɵadvance(1);
|
|
172
|
-
i0.ɵɵproperty("ngForOf", ctx_r24.beginMinutes);
|
|
173
|
-
} }
|
|
174
|
-
function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
-
i0.ɵɵelementStart(0, "mat-option", 36);
|
|
176
|
-
i0.ɵɵtext(1);
|
|
177
|
-
i0.ɵɵelementEnd();
|
|
178
|
-
} if (rf & 2) {
|
|
179
|
-
const hour_r39 = ctx.$implicit;
|
|
180
|
-
i0.ɵɵproperty("value", hour_r39);
|
|
181
|
-
i0.ɵɵadvance(1);
|
|
182
|
-
i0.ɵɵtextInterpolate(hour_r39);
|
|
183
|
-
} }
|
|
184
|
-
function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template(rf, ctx) { if (rf & 1) {
|
|
185
|
-
const _r41 = i0.ɵɵgetCurrentView();
|
|
186
|
-
i0.ɵɵelementStart(0, "mat-form-field", 33);
|
|
187
|
-
i0.ɵɵelementStart(1, "mat-label");
|
|
188
|
-
i0.ɵɵtext(2);
|
|
189
|
-
i0.ɵɵpipe(3, "translate");
|
|
190
|
-
i0.ɵɵelementEnd();
|
|
191
|
-
i0.ɵɵelementStart(4, "mat-select", 34);
|
|
192
|
-
i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r41); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r40 = i0.ɵɵnextContext(3); return ctx_r40.changeTemporalProperty(_r34.value, 2); });
|
|
193
|
-
i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_mat_option_5_Template, 2, 2, "mat-option", 35);
|
|
194
|
-
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵelementEnd();
|
|
196
|
-
} if (rf & 2) {
|
|
197
|
-
const ctx_r36 = i0.ɵɵnextContext(4);
|
|
198
|
-
i0.ɵɵadvance(2);
|
|
199
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.hour"));
|
|
200
|
-
i0.ɵɵadvance(2);
|
|
201
|
-
i0.ɵɵproperty("formControl", ctx_r36.endHourFormControl);
|
|
202
|
-
i0.ɵɵattribute("disabled", !ctx_r36.currentFilter.active);
|
|
203
|
-
i0.ɵɵadvance(1);
|
|
204
|
-
i0.ɵɵproperty("ngForOf", ctx_r36.endHours);
|
|
205
|
-
} }
|
|
206
|
-
function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
-
i0.ɵɵelementStart(0, "mat-option", 36);
|
|
208
|
-
i0.ɵɵtext(1);
|
|
209
|
-
i0.ɵɵelementEnd();
|
|
210
|
-
} if (rf & 2) {
|
|
211
|
-
const minute_r43 = ctx.$implicit;
|
|
212
|
-
i0.ɵɵproperty("value", minute_r43);
|
|
213
|
-
i0.ɵɵadvance(1);
|
|
214
|
-
i0.ɵɵtextInterpolate(minute_r43);
|
|
215
|
-
} }
|
|
216
|
-
function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template(rf, ctx) { if (rf & 1) {
|
|
217
|
-
const _r45 = i0.ɵɵgetCurrentView();
|
|
218
|
-
i0.ɵɵelementStart(0, "mat-form-field", 37);
|
|
219
|
-
i0.ɵɵelementStart(1, "mat-label");
|
|
220
|
-
i0.ɵɵtext(2);
|
|
221
|
-
i0.ɵɵpipe(3, "translate");
|
|
222
|
-
i0.ɵɵelementEnd();
|
|
223
|
-
i0.ɵɵelementStart(4, "mat-select", 34);
|
|
224
|
-
i0.ɵɵlistener("selectionChange", function OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template_mat_select_selectionChange_4_listener() { i0.ɵɵrestoreView(_r45); i0.ɵɵnextContext(); const _r34 = i0.ɵɵreference(4); const ctx_r44 = i0.ɵɵnextContext(3); return ctx_r44.changeTemporalProperty(_r34.value, 2); });
|
|
225
|
-
i0.ɵɵtemplate(5, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_mat_option_5_Template, 2, 2, "mat-option", 35);
|
|
226
|
-
i0.ɵɵelementEnd();
|
|
227
|
-
i0.ɵɵelementEnd();
|
|
228
|
-
} if (rf & 2) {
|
|
229
|
-
const ctx_r37 = i0.ɵɵnextContext(4);
|
|
230
|
-
i0.ɵɵadvance(2);
|
|
231
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.timeFilter.minute"));
|
|
232
|
-
i0.ɵɵadvance(2);
|
|
233
|
-
i0.ɵɵproperty("formControl", ctx_r37.endMinuteFormControl);
|
|
234
|
-
i0.ɵɵattribute("disabled", !ctx_r37.currentFilter.active);
|
|
235
|
-
i0.ɵɵadvance(1);
|
|
236
|
-
i0.ɵɵproperty("ngForOf", ctx_r37.endMinutes);
|
|
237
|
-
} }
|
|
238
|
-
function OgcFilterTimeComponent_div_3_div_2_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
-
const _r47 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "div", 23);
|
|
241
|
-
i0.ɵɵelementStart(1, "mat-form-field", 24);
|
|
242
|
-
i0.ɵɵelement(2, "mat-datepicker-toggle", 12);
|
|
243
|
-
i0.ɵɵelementStart(3, "input", 25, 38);
|
|
244
|
-
i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_input_dateChange_3_listener() { i0.ɵɵrestoreView(_r47); const _r34 = i0.ɵɵreference(4); const ctx_r46 = i0.ɵɵnextContext(3); return ctx_r46.changeTemporalProperty(_r34.value, 2); });
|
|
245
|
-
i0.ɵɵpipe(5, "translate");
|
|
246
|
-
i0.ɵɵelementEnd();
|
|
247
|
-
i0.ɵɵelement(6, "span", 27);
|
|
248
|
-
i0.ɵɵelementStart(7, "mat-datepicker", 28, 17);
|
|
249
|
-
i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_yearSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r48 = i0.ɵɵnextContext(3); return ctx_r48.yearSelected($event, _r35, "end"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_div_13_Template_mat_datepicker_monthSelected_7_listener($event) { i0.ɵɵrestoreView(_r47); const _r35 = i0.ɵɵreference(8); const ctx_r49 = i0.ɵɵnextContext(3); return ctx_r49.monthSelected($event, _r35, "end"); });
|
|
250
|
-
i0.ɵɵelementEnd();
|
|
251
|
-
i0.ɵɵelementEnd();
|
|
252
|
-
i0.ɵɵelementStart(9, "div", 29);
|
|
253
|
-
i0.ɵɵtemplate(10, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_10_Template, 6, 6, "mat-form-field", 30);
|
|
254
|
-
i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_div_13_mat_form_field_11_Template, 6, 6, "mat-form-field", 31);
|
|
255
|
-
i0.ɵɵelementEnd();
|
|
256
|
-
i0.ɵɵelementEnd();
|
|
257
|
-
} if (rf & 2) {
|
|
258
|
-
const _r35 = i0.ɵɵreference(8);
|
|
259
|
-
const ctx_r25 = i0.ɵɵnextContext(3);
|
|
260
|
-
i0.ɵɵadvance(2);
|
|
261
|
-
i0.ɵɵproperty("for", _r35)("disabled", ctx_r25.filterStateDisable);
|
|
262
|
-
i0.ɵɵadvance(1);
|
|
263
|
-
i0.ɵɵproperty("matDatepicker", _r35)("placeholder", i0.ɵɵpipeBind1(5, 14, "igo.geo.timeFilter.endDate"))("matDatepickerFilter", ctx_r25.dateFilter.bind(ctx_r25, "end"))("value", ctx_r25.endValue ? ctx_r25.endValue : ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("min", ctx_r25.beginValue ? ctx_r25.beginValue : ctx_r25.handleDate(ctx_r25.datasource.options.minDate))("max", ctx_r25.handleDate(ctx_r25.datasource.options.maxDate))("disabled", ctx_r25.filterStateDisable);
|
|
264
|
-
i0.ɵɵattribute("disabled", !ctx_r25.currentFilter.active);
|
|
265
|
-
i0.ɵɵadvance(4);
|
|
266
|
-
i0.ɵɵproperty("startView", ctx_r25.calendarView())("startAt", ctx_r25.endValue);
|
|
267
|
-
i0.ɵɵadvance(3);
|
|
268
|
-
i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
|
|
269
|
-
i0.ɵɵadvance(1);
|
|
270
|
-
i0.ɵɵproperty("ngIf", ctx_r25.calendarType() === "datetime");
|
|
271
|
-
} }
|
|
272
|
-
function OgcFilterTimeComponent_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
-
const _r51 = i0.ɵɵgetCurrentView();
|
|
274
|
-
i0.ɵɵelementStart(0, "div", 22);
|
|
275
|
-
i0.ɵɵelementStart(1, "div", 23);
|
|
276
|
-
i0.ɵɵelementStart(2, "mat-form-field", 24);
|
|
277
|
-
i0.ɵɵelement(3, "mat-datepicker-toggle", 12);
|
|
278
|
-
i0.ɵɵelementStart(4, "input", 25, 26);
|
|
279
|
-
i0.ɵɵlistener("dateChange", function OgcFilterTimeComponent_div_3_div_2_Template_input_dateChange_4_listener() { i0.ɵɵrestoreView(_r51); const _r21 = i0.ɵɵreference(5); const ctx_r50 = i0.ɵɵnextContext(2); return ctx_r50.changeTemporalProperty(_r21.value, 1); });
|
|
280
|
-
i0.ɵɵpipe(6, "translate");
|
|
281
|
-
i0.ɵɵelementEnd();
|
|
282
|
-
i0.ɵɵelement(7, "span", 27);
|
|
283
|
-
i0.ɵɵelementStart(8, "mat-datepicker", 28, 14);
|
|
284
|
-
i0.ɵɵlistener("yearSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_yearSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r52 = i0.ɵɵnextContext(2); return ctx_r52.yearSelected($event, _r22, "begin"); })("monthSelected", function OgcFilterTimeComponent_div_3_div_2_Template_mat_datepicker_monthSelected_8_listener($event) { i0.ɵɵrestoreView(_r51); const _r22 = i0.ɵɵreference(9); const ctx_r53 = i0.ɵɵnextContext(2); return ctx_r53.monthSelected($event, _r22, "begin"); });
|
|
285
|
-
i0.ɵɵelementEnd();
|
|
286
|
-
i0.ɵɵelementEnd();
|
|
287
|
-
i0.ɵɵelementStart(10, "div", 29);
|
|
288
|
-
i0.ɵɵtemplate(11, OgcFilterTimeComponent_div_3_div_2_mat_form_field_11_Template, 6, 6, "mat-form-field", 30);
|
|
289
|
-
i0.ɵɵtemplate(12, OgcFilterTimeComponent_div_3_div_2_mat_form_field_12_Template, 6, 6, "mat-form-field", 31);
|
|
290
|
-
i0.ɵɵelementEnd();
|
|
291
|
-
i0.ɵɵelementEnd();
|
|
292
|
-
i0.ɵɵtemplate(13, OgcFilterTimeComponent_div_3_div_2_div_13_Template, 12, 16, "div", 32);
|
|
293
|
-
i0.ɵɵelementStart(14, "button", 19);
|
|
294
|
-
i0.ɵɵlistener("click", function OgcFilterTimeComponent_div_3_div_2_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r51); const ctx_r54 = i0.ɵɵnextContext(2); return ctx_r54.resetFilter(); });
|
|
295
|
-
i0.ɵɵpipe(15, "translate");
|
|
296
|
-
i0.ɵɵelement(16, "mat-icon", 20);
|
|
297
|
-
i0.ɵɵelementEnd();
|
|
298
|
-
i0.ɵɵelementStart(17, "mat-slide-toggle", 21);
|
|
299
|
-
i0.ɵɵlistener("change", function OgcFilterTimeComponent_div_3_div_2_Template_mat_slide_toggle_change_17_listener() { i0.ɵɵrestoreView(_r51); const ctx_r55 = i0.ɵɵnextContext(2); return ctx_r55.toggleFilterState(); });
|
|
300
|
-
i0.ɵɵpipe(18, "translate");
|
|
301
|
-
i0.ɵɵelementEnd();
|
|
302
|
-
i0.ɵɵelementEnd();
|
|
303
|
-
} if (rf & 2) {
|
|
304
|
-
const _r22 = i0.ɵɵreference(9);
|
|
305
|
-
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
306
|
-
i0.ɵɵadvance(3);
|
|
307
|
-
i0.ɵɵproperty("for", _r22)("disabled", ctx_r9.filterStateDisable);
|
|
308
|
-
i0.ɵɵadvance(1);
|
|
309
|
-
i0.ɵɵproperty("matDatepicker", _r22)("placeholder", i0.ɵɵpipeBind1(6, 20, "igo.geo.timeFilter.startDate"))("matDatepickerFilter", ctx_r9.dateFilter.bind(ctx_r9, "begin"))("value", ctx_r9.beginValue ? ctx_r9.beginValue : ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("min", ctx_r9.handleDate(ctx_r9.datasource.options.minDate))("max", ctx_r9.endValue && !ctx_r9.restrictedToStep() ? ctx_r9.endValue : ctx_r9.handleDate(ctx_r9.datasource.options.maxDate))("disabled", ctx_r9.filterStateDisable);
|
|
310
|
-
i0.ɵɵattribute("disabled", !ctx_r9.currentFilter.active);
|
|
311
|
-
i0.ɵɵadvance(4);
|
|
312
|
-
i0.ɵɵproperty("startView", ctx_r9.calendarView())("startAt", ctx_r9.beginValue);
|
|
313
|
-
i0.ɵɵadvance(3);
|
|
314
|
-
i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
|
|
315
|
-
i0.ɵɵadvance(1);
|
|
316
|
-
i0.ɵɵproperty("ngIf", ctx_r9.calendarType() === "datetime");
|
|
317
|
-
i0.ɵɵadvance(1);
|
|
318
|
-
i0.ɵɵproperty("ngIf", !ctx_r9.restrictedToStep());
|
|
319
|
-
i0.ɵɵadvance(1);
|
|
320
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(15, 22, "igo.geo.filter.resetFilters"))("disabled", ctx_r9.filterStateDisable);
|
|
321
|
-
i0.ɵɵadvance(2);
|
|
322
|
-
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r9.resetIcon);
|
|
323
|
-
i0.ɵɵadvance(1);
|
|
324
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(18, 24, "igo.geo.filter.toggleFilterState"))("checked", !ctx_r9.filterStateDisable);
|
|
325
|
-
} }
|
|
326
|
-
function OgcFilterTimeComponent_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
-
i0.ɵɵelementStart(0, "div");
|
|
328
|
-
i0.ɵɵtemplate(1, OgcFilterTimeComponent_div_3_div_1_Template, 26, 35, "div", 7);
|
|
329
|
-
i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_3_div_2_Template, 19, 26, "div", 8);
|
|
330
|
-
i0.ɵɵelementEnd();
|
|
331
|
-
} if (rf & 2) {
|
|
332
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
333
|
-
i0.ɵɵadvance(1);
|
|
334
|
-
i0.ɵɵproperty("ngIf", ctx_r2.calendarTypeYear);
|
|
335
|
-
i0.ɵɵadvance(1);
|
|
336
|
-
i0.ɵɵproperty("ngIf", ctx_r2.calendarType() !== "year");
|
|
337
|
-
} }
|
|
338
|
-
const moment = moment_;
|
|
339
|
-
export class OgcFilterTimeComponent {
|
|
340
|
-
constructor(ogcFilterTimeService) {
|
|
341
|
-
this.ogcFilterTimeService = ogcFilterTimeService;
|
|
342
|
-
this.changeProperty = new EventEmitter();
|
|
343
|
-
this.beginHourFormControl = new FormControl();
|
|
344
|
-
this.beginMinuteFormControl = new FormControl();
|
|
345
|
-
this.endHourFormControl = new FormControl();
|
|
346
|
-
this.endMinuteFormControl = new FormControl();
|
|
347
|
-
this._defaultMin = '1900-01-01';
|
|
348
|
-
this._defaultMax = '2052-01-06';
|
|
349
|
-
this._defaultDisplayFormat = 'DD/MM/YYYY HH:mm A';
|
|
350
|
-
this._defaultSliderModeEnabled = true;
|
|
351
|
-
this.ogcFilterOperator = OgcFilterOperator;
|
|
352
|
-
this.sliderMode = false;
|
|
353
|
-
this.defaultStepMillisecond = 60000;
|
|
354
|
-
this.calendarTypeYear = false;
|
|
355
|
-
this.resetIcon = 'replay';
|
|
356
|
-
}
|
|
357
|
-
get step() {
|
|
358
|
-
return this.datasource.options.stepDate
|
|
359
|
-
? this.datasource.options.stepDate
|
|
360
|
-
: this.currentFilter.step;
|
|
361
|
-
}
|
|
362
|
-
get stepMilliseconds() {
|
|
363
|
-
const step = moment.duration(this.step).asMilliseconds();
|
|
364
|
-
return step === 0 ? this.defaultStepMillisecond : step;
|
|
365
|
-
}
|
|
366
|
-
set beginValue(begin) {
|
|
367
|
-
this._beginValue = begin;
|
|
368
|
-
}
|
|
369
|
-
get beginValue() {
|
|
370
|
-
return this._beginValue;
|
|
371
|
-
}
|
|
372
|
-
set endValue(end) {
|
|
373
|
-
this._endValue = end;
|
|
374
|
-
}
|
|
375
|
-
get endValue() {
|
|
376
|
-
return this._endValue;
|
|
377
|
-
}
|
|
378
|
-
get sliderInterval() {
|
|
379
|
-
return this.currentFilter.sliderInterval === undefined
|
|
380
|
-
? 2000
|
|
381
|
-
: this.currentFilter.sliderInterval;
|
|
382
|
-
}
|
|
383
|
-
get maxDate() {
|
|
384
|
-
return this.datasource.options.maxDate ? this.datasource.options.maxDate : this._defaultMax;
|
|
385
|
-
}
|
|
386
|
-
get displayFormat() {
|
|
387
|
-
return this.currentFilter.displayFormat ? this.currentFilter.displayFormat : this._defaultDisplayFormat;
|
|
388
|
-
}
|
|
389
|
-
ngOnInit() {
|
|
390
|
-
if (this.currentFilter.sliderOptions) {
|
|
391
|
-
this.currentFilter.sliderOptions.enabled = this.currentFilter.sliderOptions.enabled !== undefined ?
|
|
392
|
-
this.currentFilter.sliderOptions.enabled : this._defaultSliderModeEnabled;
|
|
393
|
-
}
|
|
394
|
-
this.beginValue = this.parseFilter(this.handleMin());
|
|
395
|
-
this.endValue = this.parseFilter(this.handleMax());
|
|
396
|
-
this.onlyYearBegin = this.beginValue.getUTCFullYear();
|
|
397
|
-
this.onlyYearEnd = this.endValue.getUTCFullYear();
|
|
398
|
-
this.calendarTypeYear = this.isCalendarYearMode();
|
|
399
|
-
this.setFilterStateDisable();
|
|
400
|
-
this.updateHoursMinutesArray();
|
|
401
|
-
// update value for now value
|
|
402
|
-
this.updateValues();
|
|
403
|
-
}
|
|
404
|
-
parseFilter(filter) {
|
|
405
|
-
if (!filter) {
|
|
406
|
-
return new Date();
|
|
407
|
-
}
|
|
408
|
-
else if (isNaN(new Date(filter).getTime())) {
|
|
409
|
-
if (filter.search('now') >= 0) {
|
|
410
|
-
const interval = filter.match(/years|months|weeks|days|hours|seconds/);
|
|
411
|
-
if (filter.match(/\+/)) {
|
|
412
|
-
const intervalInt = parseInt(filter.substring(filter.search('+') + 1, interval.index), 10);
|
|
413
|
-
return moment().add(intervalInt, interval[0]).toDate();
|
|
414
|
-
}
|
|
415
|
-
if (filter.match(/\-/)) {
|
|
416
|
-
const intervalInt = parseInt(filter.substring(filter.search('-') + 1, interval.index), 10);
|
|
417
|
-
return moment().subtract(intervalInt, interval[0]).toDate();
|
|
418
|
-
}
|
|
419
|
-
return new Date();
|
|
420
|
-
}
|
|
421
|
-
if (filter.search('today') >= 0) {
|
|
422
|
-
const _now = moment().endOf('day').toDate();
|
|
423
|
-
const interval = filter.match(/years|months|weeks|days|hours|seconds/);
|
|
424
|
-
if (filter.match(/\+/)) {
|
|
425
|
-
const intervalInt = parseInt(filter.substring(filter.search('+') + 1, interval.index), 10);
|
|
426
|
-
return moment(_now).add(intervalInt, interval[0]).toDate();
|
|
427
|
-
}
|
|
428
|
-
if (filter.match(/\-/)) {
|
|
429
|
-
const intervalInt = parseInt(filter.substring(filter.search('-') + 1, interval.index), 10);
|
|
430
|
-
return moment(_now).subtract(intervalInt, interval[0]).toDate();
|
|
431
|
-
}
|
|
432
|
-
return _now;
|
|
433
|
-
}
|
|
434
|
-
return new Date();
|
|
435
|
-
}
|
|
436
|
-
if (this.currentFilter.calendarModeYear) {
|
|
437
|
-
const date = this.getDateFromStringWithoutTime(filter);
|
|
438
|
-
return date;
|
|
439
|
-
}
|
|
440
|
-
else {
|
|
441
|
-
return filter ? new Date(filter) : new Date();
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
changeTemporalProperty(value, position, refreshFilter = true) {
|
|
445
|
-
let valueTmp = this.getDateTime(value, position);
|
|
446
|
-
if (this.isCalendarYearMode()) {
|
|
447
|
-
let dateStringFromYearNotime;
|
|
448
|
-
if (position === 1) {
|
|
449
|
-
this.beginValue = value;
|
|
450
|
-
this.onlyYearBegin = this.beginValue.getFullYear();
|
|
451
|
-
dateStringFromYearNotime = `${this.onlyYearBegin}-01-01`;
|
|
452
|
-
}
|
|
453
|
-
else {
|
|
454
|
-
this.endValue = value;
|
|
455
|
-
this.onlyYearEnd = this.endValue.getFullYear();
|
|
456
|
-
dateStringFromYearNotime = `${this.onlyYearEnd}-01-01`;
|
|
457
|
-
}
|
|
458
|
-
// call service with string date without time
|
|
459
|
-
this.changeProperty.next({ value: dateStringFromYearNotime, pos: position, refreshFilter });
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
if (position === 2 && this.calendarType() === 'date' && !this.sliderMode) {
|
|
463
|
-
/* Above month: see yearSelected or monthSelected */
|
|
464
|
-
valueTmp = moment(valueTmp).endOf('day').toDate();
|
|
465
|
-
}
|
|
466
|
-
if (position === 1) {
|
|
467
|
-
this.beginValue = valueTmp;
|
|
468
|
-
if (this.restrictedToStep()) {
|
|
469
|
-
this.changeTemporalProperty(this.ogcFilterTimeService.addStep(valueTmp, this.stepMilliseconds), 2, refreshFilter);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
else {
|
|
473
|
-
this.endValue = valueTmp;
|
|
474
|
-
}
|
|
475
|
-
this.updateHoursMinutesArray();
|
|
476
|
-
this.changeProperty.next({ value: valueTmp.toISOString(), pos: position, refreshFilter });
|
|
477
|
-
}
|
|
478
|
-
handleDate(value) {
|
|
479
|
-
if (!value || value === '') {
|
|
480
|
-
return undefined;
|
|
481
|
-
}
|
|
482
|
-
if (typeof (value) === 'string' && this.currentFilter.calendarModeYear) {
|
|
483
|
-
return this.getDateFromStringWithoutTime(value);
|
|
484
|
-
}
|
|
485
|
-
return new Date(value);
|
|
486
|
-
}
|
|
487
|
-
calendarType() {
|
|
488
|
-
if (this.currentFilter.calendarModeYear) {
|
|
489
|
-
return 'year';
|
|
490
|
-
}
|
|
491
|
-
if (this.stepMilliseconds < 86400000) {
|
|
492
|
-
return 'datetime';
|
|
493
|
-
}
|
|
494
|
-
return 'date';
|
|
495
|
-
}
|
|
496
|
-
isCalendarYearMode() {
|
|
497
|
-
if (this.calendarType() === 'year') {
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
else {
|
|
501
|
-
return false;
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
yearOnlyInputChange(changeEvent, datePicker, property) {
|
|
505
|
-
const year = changeEvent.target.value;
|
|
506
|
-
const date = this.getDateFromStringWithoutTime(year);
|
|
507
|
-
this.yearSelected(date, datePicker, property);
|
|
508
|
-
}
|
|
509
|
-
yearSelected(year, datePicker, property, refreshFilter = true) {
|
|
510
|
-
if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
|
|
511
|
-
if (datePicker) {
|
|
512
|
-
datePicker.close();
|
|
513
|
-
}
|
|
514
|
-
if (property === 'end') {
|
|
515
|
-
// change value 01 jan to 31 dec same year
|
|
516
|
-
year = moment(year).endOf('year').toDate();
|
|
517
|
-
}
|
|
518
|
-
else if (property === 'begin' && this.restrictedToStep() && !this.calendarTypeYear) {
|
|
519
|
-
this.yearSelected(year, undefined, 'end');
|
|
520
|
-
}
|
|
521
|
-
this.changeTemporalProperty(year, property === 'begin' ? 1 : 2, refreshFilter);
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
monthSelected(month, datePicker, property, refreshFilter = true) {
|
|
525
|
-
if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
|
|
526
|
-
if (datePicker) {
|
|
527
|
-
datePicker.close();
|
|
528
|
-
}
|
|
529
|
-
if (property === 'end') {
|
|
530
|
-
month = moment(month).endOf('month').toDate();
|
|
531
|
-
}
|
|
532
|
-
else if (property === 'begin' && this.restrictedToStep()) {
|
|
533
|
-
this.monthSelected(month, undefined, 'end');
|
|
534
|
-
}
|
|
535
|
-
this.changeTemporalProperty(month, property === 'begin' ? 1 : 2, refreshFilter);
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
calendarView() {
|
|
539
|
-
const test = this.stepMilliseconds;
|
|
540
|
-
const diff = Math.abs(this.parseFilter(this.currentFilter.end).getTime() -
|
|
541
|
-
this.parseFilter(this.currentFilter.begin).getTime());
|
|
542
|
-
if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
|
|
543
|
-
return 'multi-year';
|
|
544
|
-
}
|
|
545
|
-
else if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
|
|
546
|
-
return 'year';
|
|
547
|
-
}
|
|
548
|
-
else if (test < 86400000 && diff < 86400000) {
|
|
549
|
-
return 'clock';
|
|
550
|
-
}
|
|
551
|
-
else {
|
|
552
|
-
return 'month';
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
dateFilter(type, date) {
|
|
556
|
-
const dateValue = new Date(date);
|
|
557
|
-
const diff = dateValue.getTime() - new Date(this.handleMin()).getTime();
|
|
558
|
-
if (this.ogcFilterTimeService.stepIsYearDuration(this.step)) {
|
|
559
|
-
const monthDiff = moment(dateValue).diff(moment(this.handleMin()), 'years', true);
|
|
560
|
-
if (type === 'end') {
|
|
561
|
-
const dateValuePlus1 = moment(dateValue).add(1, 'd');
|
|
562
|
-
const monthDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'years', true);
|
|
563
|
-
return (monthDiffPlus1 % moment.duration(this.step).asYears()) === 0;
|
|
564
|
-
}
|
|
565
|
-
else if (type === 'begin') {
|
|
566
|
-
return (monthDiff % moment.duration(this.step).asYears()) === 0;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
else if (this.ogcFilterTimeService.stepIsMonthDuration(this.step)) {
|
|
570
|
-
const monthDiff = moment(dateValue).diff(moment(this.handleMin()), 'months', true);
|
|
571
|
-
if (type === 'end') {
|
|
572
|
-
const dateValuePlus1 = moment(dateValue).add(1, 'd');
|
|
573
|
-
const monthDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'months', true);
|
|
574
|
-
return (monthDiffPlus1 % moment.duration(this.step).asMonths()) === 0;
|
|
575
|
-
}
|
|
576
|
-
else if (type === 'begin') {
|
|
577
|
-
return (monthDiff % moment.duration(this.step).asMonths()) === 0;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
else if (this.ogcFilterTimeService.stepIsWeekDuration(this.step)) {
|
|
581
|
-
const weekDiff = moment(dateValue).diff(moment(this.handleMin()), 'weeks', true);
|
|
582
|
-
if (type === 'end') {
|
|
583
|
-
const dateValuePlus1 = moment(dateValue).add(1, 'd');
|
|
584
|
-
const weekDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'weeks', true);
|
|
585
|
-
return (weekDiffPlus1 % moment.duration(this.step).asWeeks()) === 0;
|
|
586
|
-
}
|
|
587
|
-
else if (type === 'begin') {
|
|
588
|
-
return (weekDiff % moment.duration(this.step).asWeeks()) === 0;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
else if (this.ogcFilterTimeService.stepIsDayDuration(this.step)) {
|
|
592
|
-
const dayDiff = moment(dateValue).diff(moment(this.handleMin()), 'days', true);
|
|
593
|
-
if (type === 'end') {
|
|
594
|
-
const dateValuePlus1 = moment(dateValue).add(1, 'd');
|
|
595
|
-
const dayDiffPlus1 = moment(dateValuePlus1).diff(moment(this.handleMin()), 'days', true);
|
|
596
|
-
const _mod = (dayDiffPlus1 % moment.duration(this.step).asDays());
|
|
597
|
-
return (_mod < 0.0000001 && _mod > -0.0000001) || _mod === 0; // 1 millisecond = 1.1574074074074076e-8
|
|
598
|
-
}
|
|
599
|
-
else if (type === 'begin') {
|
|
600
|
-
const _mod = ((dayDiff % moment.duration(this.step).asDays()) + 1);
|
|
601
|
-
return (_mod < 0.0000001 && _mod > -0.0000001 && _mod !== 0) || _mod === 1; // 1 millisecond = 1.1574074074074076e-8
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
else if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
|
|
605
|
-
const hourDiff = moment(dateValue).diff(moment(this.handleMin()), 'hours', true);
|
|
606
|
-
return (hourDiff % moment.duration(this.step).asHours()) === 0;
|
|
607
|
-
}
|
|
608
|
-
else if (this.ogcFilterTimeService.stepIsMinuteDuration(this.step)) {
|
|
609
|
-
return true;
|
|
610
|
-
}
|
|
611
|
-
return diff % this.stepMilliseconds === 0;
|
|
612
|
-
}
|
|
613
|
-
getDateTime(date, pos) {
|
|
614
|
-
const valuetmp = new Date(date);
|
|
615
|
-
let valuetmp2;
|
|
616
|
-
if (!this.sliderMode) {
|
|
617
|
-
switch (pos) {
|
|
618
|
-
case 1: {
|
|
619
|
-
if (this.currentFilter.calendarModeYear) {
|
|
620
|
-
valuetmp2 = valuetmp.setHours(0, 0);
|
|
621
|
-
break;
|
|
622
|
-
}
|
|
623
|
-
else {
|
|
624
|
-
valuetmp2 = valuetmp.setHours(this.beginHourFormControl.value, this.beginMinuteFormControl.value);
|
|
625
|
-
break;
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
case 2: {
|
|
629
|
-
if (this.currentFilter.calendarModeYear) {
|
|
630
|
-
valuetmp2 = valuetmp.setHours(0, 0);
|
|
631
|
-
break;
|
|
632
|
-
}
|
|
633
|
-
else {
|
|
634
|
-
valuetmp2 = valuetmp.setHours(this.endHourFormControl.value, this.endMinuteFormControl.value);
|
|
635
|
-
break;
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
return new Date(valuetmp2 ? valuetmp2 : valuetmp);
|
|
641
|
-
}
|
|
642
|
-
handleMinuteIncrement() {
|
|
643
|
-
if (this.ogcFilterTimeService.stepIsMinuteDuration(this.step)) {
|
|
644
|
-
if (this.stepMilliseconds < 3600000) {
|
|
645
|
-
return this.stepMilliseconds / 1000 === 60 ? 1 : this.stepMilliseconds / 1000;
|
|
646
|
-
}
|
|
647
|
-
else {
|
|
648
|
-
return (this.stepMilliseconds % 3600000) / 60;
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
else if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
|
|
652
|
-
return 60;
|
|
653
|
-
}
|
|
654
|
-
return 1;
|
|
655
|
-
}
|
|
656
|
-
handleHourIncrement() {
|
|
657
|
-
if (this.ogcFilterTimeService.stepIsHourDuration(this.step)) {
|
|
658
|
-
return this.stepMilliseconds / 1000 / 60 / 60;
|
|
659
|
-
}
|
|
660
|
-
return 1;
|
|
661
|
-
}
|
|
662
|
-
fullBeginHoursArray(checkEndValue) {
|
|
663
|
-
if (checkEndValue) {
|
|
664
|
-
this.beginHours = Array.from({
|
|
665
|
-
length: (this.endHourFormControl.value - 0) / this.handleHourIncrement() + 1
|
|
666
|
-
}, (_, i) => 0 + i * this.handleHourIncrement());
|
|
667
|
-
}
|
|
668
|
-
else {
|
|
669
|
-
this.beginHours = Array.from({ length: (23 - 0) / this.handleHourIncrement() + 1 }, (_, i) => 0 + i * this.handleHourIncrement());
|
|
670
|
-
}
|
|
671
|
-
this.beginHourFormControl.setValue(this.beginValue.getHours());
|
|
672
|
-
}
|
|
673
|
-
fullEndHoursArray(checkEndValue) {
|
|
674
|
-
if (checkEndValue) {
|
|
675
|
-
this.endHours = Array.from({
|
|
676
|
-
length: (23 - this.beginHourFormControl.value) /
|
|
677
|
-
this.handleHourIncrement() +
|
|
678
|
-
1
|
|
679
|
-
}, (_, i) => this.beginHourFormControl.value + i * this.handleHourIncrement());
|
|
680
|
-
}
|
|
681
|
-
else {
|
|
682
|
-
this.endHours = Array.from({ length: (23 - 0) / this.handleHourIncrement() + 1 }, (_, i) => 0 + i * this.handleHourIncrement());
|
|
683
|
-
}
|
|
684
|
-
this.endHourFormControl.setValue(this.endValue.getHours());
|
|
685
|
-
}
|
|
686
|
-
fullBeginMinutesArray(checkEndValue) {
|
|
687
|
-
if (checkEndValue) {
|
|
688
|
-
this.beginMinutes = Array.from({
|
|
689
|
-
length: (this.endMinuteFormControl.value - 0) /
|
|
690
|
-
this.handleMinuteIncrement() +
|
|
691
|
-
1
|
|
692
|
-
}, (_, i) => 0 + i * this.handleMinuteIncrement());
|
|
693
|
-
}
|
|
694
|
-
else {
|
|
695
|
-
this.beginMinutes = Array.from({ length: (59 - 0) / this.handleMinuteIncrement() + 1 }, (_, i) => 0 + i * this.handleMinuteIncrement());
|
|
696
|
-
}
|
|
697
|
-
this.beginMinuteFormControl.setValue(this.beginValue.getMinutes());
|
|
698
|
-
}
|
|
699
|
-
fullEndMinutesArray(checkEndValue) {
|
|
700
|
-
if (checkEndValue) {
|
|
701
|
-
this.endMinutes = Array.from({
|
|
702
|
-
length: (59 - this.beginMinuteFormControl.value) /
|
|
703
|
-
this.handleMinuteIncrement() +
|
|
704
|
-
1
|
|
705
|
-
}, (_, i) => this.beginMinuteFormControl.value + i * this.handleMinuteIncrement());
|
|
706
|
-
}
|
|
707
|
-
else {
|
|
708
|
-
this.endMinutes = Array.from({ length: (59 - 0) / this.handleMinuteIncrement() + 1 }, (_, i) => 0 + i * this.handleMinuteIncrement());
|
|
709
|
-
}
|
|
710
|
-
this.endMinuteFormControl.setValue(this.endValue.getMinutes());
|
|
711
|
-
}
|
|
712
|
-
updateHoursMinutesArray() {
|
|
713
|
-
const beginTmp = new Date(this.beginValue);
|
|
714
|
-
const endTmp = new Date(this.endValue);
|
|
715
|
-
if (beginTmp.setHours(0, 0) === endTmp.setHours(0, 0)) {
|
|
716
|
-
this.fullBeginHoursArray(true);
|
|
717
|
-
this.fullEndHoursArray(true);
|
|
718
|
-
if (this.beginValue.getHours() === this.endValue.getHours()) {
|
|
719
|
-
this.fullBeginMinutesArray(true);
|
|
720
|
-
this.fullEndMinutesArray(true);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
else {
|
|
724
|
-
this.fullBeginHoursArray();
|
|
725
|
-
this.fullEndHoursArray();
|
|
726
|
-
this.fullBeginMinutesArray();
|
|
727
|
-
this.fullEndMinutesArray();
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
updateValues() {
|
|
731
|
-
this.changeTemporalProperty(this.beginValue, 1, false);
|
|
732
|
-
this.changeTemporalProperty(this.endValue, 2, true);
|
|
733
|
-
}
|
|
734
|
-
restrictedToStep() {
|
|
735
|
-
return this.currentFilter.restrictToStep
|
|
736
|
-
? this.currentFilter.restrictToStep : false;
|
|
737
|
-
}
|
|
738
|
-
handleMin() {
|
|
739
|
-
return this.currentFilter.begin ? this.currentFilter.begin :
|
|
740
|
-
(this.datasource.options.minDate ? this.datasource.options.minDate : this._defaultMin);
|
|
741
|
-
}
|
|
742
|
-
handleMax() {
|
|
743
|
-
return this.currentFilter.end ? this.currentFilter.end :
|
|
744
|
-
(this.datasource.options.maxDate ? this.datasource.options.maxDate : this._defaultMax);
|
|
745
|
-
}
|
|
746
|
-
changePropertyByPass(event) {
|
|
747
|
-
this.changeProperty.next(event);
|
|
748
|
-
}
|
|
749
|
-
modeChange(event) {
|
|
750
|
-
if (!event.checked) {
|
|
751
|
-
this.updateValues();
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
setFilterStateDisable() {
|
|
755
|
-
if (this.currentFilter) {
|
|
756
|
-
this.filterStateDisable = !this.currentFilter.active;
|
|
757
|
-
}
|
|
758
|
-
else {
|
|
759
|
-
this.filterStateDisable = false;
|
|
760
|
-
}
|
|
761
|
-
if (this.calendarType() === 'datetime') {
|
|
762
|
-
if (this.filterStateDisable === true) {
|
|
763
|
-
this.beginHourFormControl.disable();
|
|
764
|
-
this.beginMinuteFormControl.disable();
|
|
765
|
-
this.endHourFormControl.disable();
|
|
766
|
-
this.endMinuteFormControl.disable();
|
|
767
|
-
}
|
|
768
|
-
else {
|
|
769
|
-
this.beginHourFormControl.enable();
|
|
770
|
-
this.beginMinuteFormControl.enable();
|
|
771
|
-
this.endHourFormControl.enable();
|
|
772
|
-
this.endMinuteFormControl.enable();
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
getDateFromStringWithoutTime(stringDate) {
|
|
777
|
-
// warning create date with no time make a date UTC with TZ and the date create maybe not the same year, month and day
|
|
778
|
-
// exemple:
|
|
779
|
-
// new Date('2022-01-01') -> Fri Dec 31 2021 19:00:00 GMT-0500 (heure normale de l’Est nord-américain)
|
|
780
|
-
// to create same date as string, add time 00 in the creation
|
|
781
|
-
// new Date('2022-01-01 00:00:00') -> Sat Jan 01 2022 00:00:00 GMT-0500 (heure normale de l’Est nord-américain)
|
|
782
|
-
let year;
|
|
783
|
-
let month = '01';
|
|
784
|
-
let day = '01';
|
|
785
|
-
if (stringDate.length === 10) {
|
|
786
|
-
const dateItems = stringDate.split('-');
|
|
787
|
-
if (dateItems.length !== 3) {
|
|
788
|
-
throw new Error('Error in config date begin-end for ogcFilter: Date without time format need to be YYYY-MM-DD or YYYY');
|
|
789
|
-
}
|
|
790
|
-
else {
|
|
791
|
-
year = dateItems[0];
|
|
792
|
-
month = dateItems[1];
|
|
793
|
-
day = dateItems[2];
|
|
794
|
-
}
|
|
795
|
-
}
|
|
796
|
-
else if (stringDate.length === 4) {
|
|
797
|
-
year = stringDate;
|
|
798
|
-
}
|
|
799
|
-
else {
|
|
800
|
-
return new Date(stringDate);
|
|
801
|
-
}
|
|
802
|
-
return new Date(`${year}-${month}-${day} 00:00:00`);
|
|
803
|
-
}
|
|
804
|
-
resetFilter() {
|
|
805
|
-
let filterOriginConfig = this.datasource.options.ogcFilters.filters;
|
|
806
|
-
let minDefaultDate;
|
|
807
|
-
let maxDefaultDate;
|
|
808
|
-
let minDefaultISOString;
|
|
809
|
-
let maxDefaultISOString;
|
|
810
|
-
if (this.calendarTypeYear) {
|
|
811
|
-
if (filterOriginConfig.end === 'today') {
|
|
812
|
-
let todayDateStringNoTime = new Date().toLocaleDateString('en-CA'); // '2022-02-13'
|
|
813
|
-
maxDefaultISOString = `${todayDateStringNoTime.substring(0, 4)}-01-01`;
|
|
814
|
-
}
|
|
815
|
-
else {
|
|
816
|
-
maxDefaultISOString = `${filterOriginConfig.end.substring(0, 4)}-01-01`;
|
|
817
|
-
}
|
|
818
|
-
minDefaultISOString = `${filterOriginConfig.begin.substring(0, 4)}-01-01`;
|
|
819
|
-
minDefaultDate = this.getDateFromStringWithoutTime(minDefaultISOString);
|
|
820
|
-
maxDefaultDate = this.getDateFromStringWithoutTime(maxDefaultISOString);
|
|
821
|
-
}
|
|
822
|
-
else {
|
|
823
|
-
minDefaultDate = this.parseFilter(filterOriginConfig.begin);
|
|
824
|
-
maxDefaultDate = this.parseFilter(filterOriginConfig.end);
|
|
825
|
-
minDefaultISOString = minDefaultDate.toISOString();
|
|
826
|
-
maxDefaultISOString = maxDefaultDate.toISOString();
|
|
827
|
-
}
|
|
828
|
-
if ((this.currentFilter.begin !== minDefaultISOString) ||
|
|
829
|
-
(this.currentFilter.end !== maxDefaultISOString)) {
|
|
830
|
-
this.beginValue = minDefaultDate;
|
|
831
|
-
this.endValue = maxDefaultDate;
|
|
832
|
-
this.updateValues();
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
|
-
toggleFilterState() {
|
|
836
|
-
if (this.currentFilter.active === true) {
|
|
837
|
-
this.currentFilter.active = false;
|
|
838
|
-
}
|
|
839
|
-
else {
|
|
840
|
-
this.currentFilter.active = true;
|
|
841
|
-
}
|
|
842
|
-
this.setFilterStateDisable();
|
|
843
|
-
this.updateValues();
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
OgcFilterTimeComponent.ɵfac = function OgcFilterTimeComponent_Factory(t) { return new (t || OgcFilterTimeComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterTimeService)); };
|
|
847
|
-
OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterTimeComponent, selectors: [["igo-ogc-filter-time"]], viewQuery: function OgcFilterTimeComponent_Query(rf, ctx) { if (rf & 1) {
|
|
848
|
-
i0.ɵɵviewQuery(_c0, 5);
|
|
849
|
-
i0.ɵɵviewQuery(_c1, 5);
|
|
850
|
-
i0.ɵɵviewQuery(_c2, 5);
|
|
851
|
-
i0.ɵɵviewQuery(_c3, 5);
|
|
852
|
-
} if (rf & 2) {
|
|
853
|
-
let _t;
|
|
854
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endDatepickerTime = _t.first);
|
|
855
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginDatepickerTime = _t.first);
|
|
856
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.beginTime = _t.first);
|
|
857
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTime = _t.first);
|
|
858
|
-
} }, inputs: { datasource: "datasource", currentFilter: "currentFilter" }, outputs: { changeProperty: "changeProperty" }, decls: 4, vars: 3, consts: [[1, "datetime-container"], [3, "ngModel", "ngModelChange", "change", 4, "ngIf"], ["class", "slider-container", 4, "ngIf"], [4, "ngIf"], [3, "ngModel", "ngModelChange", "change"], [1, "slider-container"], [3, "begin", "max", "currentFilter", "datasource", "changeProperty"], ["class", "year-input-container", 4, "ngIf"], ["class", "datetime-input-container", 4, "ngIf"], [1, "year-input-container"], [1, "year-input"], ["matInput", "", 1, "year-input-only-year", 3, "value", "disabled", "change"], ["matSuffix", "", 3, "for", "disabled"], ["panelClass", "datepicker-year", 3, "startView", "startAt", "yearSelected"], ["beginDatepicker", ""], ["matInput", "", "enabled", "false", "readonly", "true", 1, "year-input-hide", 3, "matDatepicker", "value", "min", "max"], ["beginYear", ""], ["endDatepicker", ""], ["endYear", ""], ["mat-icon-button", "", "color", "primary", 1, "reset-button", 3, "matTooltip", "disabled", "click"], [3, "svgIcon"], ["tooltip-position", "below", "matTooltipShowDelay", "500", 1, "toggle-filter-state", 3, "matTooltip", "checked", "change"], [1, "datetime-input-container"], [1, "datetime-input"], [1, "date-input"], ["matInput", "", 3, "matDatepicker", "placeholder", "matDatepickerFilter", "value", "min", "max", "disabled", "dateChange"], ["begin", ""], [1, "filler"], [3, "startView", "startAt", "yearSelected", "monthSelected"], [1, "time-input"], ["class", "hour-input", 4, "ngIf"], ["class", "minute-input", 4, "ngIf"], ["class", "datetime-input", 4, "ngIf"], [1, "hour-input"], [3, "formControl", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "minute-input"], ["end", ""]], template: function OgcFilterTimeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
859
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
860
|
-
i0.ɵɵtemplate(1, OgcFilterTimeComponent_mat_slide_toggle_1_Template, 3, 4, "mat-slide-toggle", 1);
|
|
861
|
-
i0.ɵɵtemplate(2, OgcFilterTimeComponent_div_2_Template, 2, 4, "div", 2);
|
|
862
|
-
i0.ɵɵtemplate(3, OgcFilterTimeComponent_div_3_Template, 3, 2, "div", 3);
|
|
863
|
-
i0.ɵɵelementEnd();
|
|
864
|
-
} if (rf & 2) {
|
|
865
|
-
i0.ɵɵadvance(1);
|
|
866
|
-
i0.ɵɵproperty("ngIf", ctx.currentFilter.sliderOptions == null ? null : ctx.currentFilter.sliderOptions.enabled);
|
|
867
|
-
i0.ɵɵadvance(1);
|
|
868
|
-
i0.ɵɵproperty("ngIf", ctx.sliderMode);
|
|
869
|
-
i0.ɵɵadvance(1);
|
|
870
|
-
i0.ɵɵproperty("ngIf", !ctx.sliderMode);
|
|
871
|
-
} }, styles: ["input{text-align:center!important;margin:auto 5px!important}.slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;width:117px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input[_ngcontent-%COMP%]{width:36%;margin:0}}.date-input[_ngcontent-%COMP%]{width:100px;margin-right:25px}.time-input[_ngcontent-%COMP%]{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input[_ngcontent-%COMP%]{margin-right:5px}}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:35px;margin-left:7px}.year-input[_ngcontent-%COMP%]{width:98px;margin:10px 18px 5px 12px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input[_ngcontent-%COMP%]{width:33%;margin:0 0 0 10px}}.year-input-hide[_ngcontent-%COMP%]{width:120px;margin-right:25px;display:none}.year-input-only-year[_ngcontent-%COMP%]{width:120px;margin-right:25px}.reset-button[_ngcontent-%COMP%]{width:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button[_ngcontent-%COMP%]{padding-left:6px}}.toggle-filter-state[_ngcontent-%COMP%]{padding-left:15px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state[_ngcontent-%COMP%]{padding-left:7px}} .datepicker-year .mat-calendar-arrow{display:none} .datepicker-year .mat-calendar-period-button{pointer-events:none} .datepicker-year .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}"] });
|
|
872
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeComponent, [{
|
|
873
|
-
type: Component,
|
|
874
|
-
args: [{
|
|
875
|
-
selector: 'igo-ogc-filter-time',
|
|
876
|
-
templateUrl: './ogc-filter-time.component.html',
|
|
877
|
-
styleUrls: ['./ogc-filter-time.component.scss']
|
|
878
|
-
}]
|
|
879
|
-
}], function () { return [{ type: i1.OGCFilterTimeService }]; }, { datasource: [{
|
|
880
|
-
type: Input
|
|
881
|
-
}], currentFilter: [{
|
|
882
|
-
type: Input
|
|
883
|
-
}], changeProperty: [{
|
|
884
|
-
type: Output
|
|
885
|
-
}], endDatepickerTime: [{
|
|
886
|
-
type: ViewChild,
|
|
887
|
-
args: ['endDatepickerTime']
|
|
888
|
-
}], beginDatepickerTime: [{
|
|
889
|
-
type: ViewChild,
|
|
890
|
-
args: ['beginDatepickerTime']
|
|
891
|
-
}], beginTime: [{
|
|
892
|
-
type: ViewChild,
|
|
893
|
-
args: ['beginTime']
|
|
894
|
-
}], endTime: [{
|
|
895
|
-
type: ViewChild,
|
|
896
|
-
args: ['endTime']
|
|
897
|
-
}] }); })();
|
|
898
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVF4RSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0lDakJoQywyQ0FHZ0M7SUFEOUIsOE9BQXdCLGtOQUFBO0lBRXhCLFlBQ0Y7O0lBQUEsaUJBQW1COzs7SUFIakIsMkNBQXdCO0lBRXhCLGVBQ0Y7SUFERSx1RkFDRjs7OztJQUVBLDhCQUFpRDtJQUMvQyxxREFNQztJQURDLHNQQUErQztJQUVqRCxpQkFBNkI7SUFFL0IsaUJBQU07OztJQVJGLGVBQW9CO0lBQXBCLHlDQUFvQixxRUFBQSx1Q0FBQSxpQ0FBQTs7OztJQVl0Qiw4QkFBMkQ7SUFHekQsMENBQW9DO0lBQ2xDLGlDQUFXO0lBQUEsWUFBNkM7O0lBQUEsaUJBQVk7SUFDcEUsaUNBTUc7SUFGRCw2UEFBd0QsT0FBTyxLQUFFO0lBSm5FLGlCQU1HO0lBQ0gsNENBQWlIO0lBRWpILDhDQU1HO0lBREQsMlFBQXNELE9BQU8sS0FBRTtJQUVqRSxpQkFBaUI7SUFFakIsZ0NBU0c7SUFDTCxpQkFBaUI7SUFF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QyxtQkFBbUI7WUFDSSxtQkFBbUI7a0JBQXBELFNBQVM7bUJBQUMscUJBQXFCO1lBQ1IsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0EsT0FBTztrQkFBNUIsU0FBUzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmVudW0nO1xyXG5pbXBvcnQgeyBPR0NGaWx0ZXJUaW1lU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLXRpbWUuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlLFxyXG4gIE9nY0ZpbHRlckR1cmluZ09wdGlvbnNcclxufSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci10aW1lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXRpbWUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2djRmlsdGVyVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XHJcbiAgQElucHV0KCkgY3VycmVudEZpbHRlcjogYW55O1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VQcm9wZXJ0eTogRXZlbnRFbWl0dGVyPHtcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgICBwb3M6IG51bWJlcjtcclxuICAgIHJlZnJlc2hGaWx0ZXI6IGJvb2xlYW47XHJcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgYmVnaW5Ib3VyczogbnVtYmVyW107XHJcbiAgZW5kSG91cnM6IG51bWJlcltdO1xyXG4gIGJlZ2luTWludXRlczogbnVtYmVyW107XHJcbiAgZW5kTWludXRlczogbnVtYmVyW107XHJcbiAgYmVnaW5Ib3VyRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBiZWdpbk1pbnV0ZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kSG91ckZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kTWludXRlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBfYmVnaW5WYWx1ZTogRGF0ZTtcclxuICBfZW5kVmFsdWU6IERhdGU7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRNaW46IHN0cmluZyA9ICcxOTAwLTAxLTAxJztcclxuICByZWFkb25seSBfZGVmYXVsdE1heDogc3RyaW5nID0gJzIwNTItMDEtMDYnO1xyXG4gIHJlYWRvbmx5IF9kZWZhdWx0RGlzcGxheUZvcm1hdDogc3RyaW5nID0gJ0REL01NL1lZWVkgSEg6bW0gQSc7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb2djRmlsdGVyT3BlcmF0b3IgPSBPZ2NGaWx0ZXJPcGVyYXRvcjtcclxuICBwdWJsaWMgc2xpZGVyTW9kZSA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBkZWZhdWx0U3RlcE1pbGxpc2Vjb25kID0gNjAwMDA7XHJcbiAgcHVibGljIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcclxuXHJcbiAgcHVibGljIG9ubHlZZWFyQmVnaW46IG51bWJlcjtcclxuICBwdWJsaWMgb25seVllYXJFbmQ6IG51bWJlcjtcclxuICBwdWJsaWMgY2FsZW5kYXJUeXBlWWVhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcclxuICBwdWJsaWMgZmlsdGVyU3RhdGVEaXNhYmxlOiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbmREYXRlcGlja2VyVGltZScpIGVuZERhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luRGF0ZXBpY2tlclRpbWUnKSBiZWdpbkRhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luVGltZScpIGJlZ2luVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdlbmRUaW1lJykgZW5kVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgZ2V0IHN0ZXAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLnN0ZXBEYXRlXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnN0ZXA7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RlcE1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RlcCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTWlsbGlzZWNvbmRzKCk7XHJcbiAgICByZXR1cm4gc3RlcCA9PT0gMCA/IHRoaXMuZGVmYXVsdFN0ZXBNaWxsaXNlY29uZCA6IHN0ZXA7XHJcbiAgfVxyXG5cclxuICBzZXQgYmVnaW5WYWx1ZShiZWdpbjogRGF0ZSkge1xyXG4gICAgdGhpcy5fYmVnaW5WYWx1ZSA9IGJlZ2luO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJlZ2luVmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCBlbmRWYWx1ZShlbmQ6IERhdGUpIHtcclxuICAgIHRoaXMuX2VuZFZhbHVlID0gZW5kO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZFZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNsaWRlckludGVydmFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcclxuICAgICAgPyAyMDAwXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXg7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzcGxheUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0ID8gdGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQgOiB0aGlzLl9kZWZhdWx0RGlzcGxheUZvcm1hdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvZ2NGaWx0ZXJUaW1lU2VydmljZTogT0dDRmlsdGVyVGltZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA9IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA6IHRoaXMuX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5oYW5kbGVNaW4oKSk7XHJcbiAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1heCgpKTtcclxuXHJcbiAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyVHlwZVllYXIgPSB0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKTtcclxuICAgIC8vIHVwZGF0ZSB2YWx1ZSBmb3Igbm93IHZhbHVlXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VGaWx0ZXIoZmlsdGVyKTogRGF0ZSB7XHJcbiAgICBpZiAoIWZpbHRlcil7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgfSBlbHNlIGlmICggaXNOYU4oIG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpICkgKcKge1xyXG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgnbm93JykgPj0gMCApwqB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXCsvKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCcrJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmFkZChpbnRlcnZhbEludCwgaW50ZXJ2YWxbMF0pLnRvRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXC0vKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWx0ZXIuc2VhcmNoKCd0b2RheScpID49IDApe1xyXG4gICAgICAgIGNvbnN0IF9ub3cgPSBtb21lbnQoKS5lbmRPZignZGF5JykudG9EYXRlKCk7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoIGZpbHRlci5tYXRjaCgvXFwrLykgKSB7XHJcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KCBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5zZWFyY2goJysnKSArIDEsIGludGVydmFsLmluZGV4KSwgMTAgKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuYWRkKGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICggZmlsdGVyLm1hdGNoKC9cXC0vKSApIHtcclxuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksIDEwKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuc3VidHJhY3QoaW50ZXJ2YWxJbnQsIGludGVydmFsWzBdKS50b0RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIF9ub3c7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShmaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXIgPyBuZXcgRGF0ZShmaWx0ZXIpIDogbmV3IERhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkodmFsdWUsIHBvc2l0aW9uPywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGxldCB2YWx1ZVRtcCA9IHRoaXMuZ2V0RGF0ZVRpbWUodmFsdWUsIHBvc2l0aW9uKTtcclxuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpKSB7XHJcbiAgICAgIGxldCBkYXRlU3RyaW5nRnJvbVllYXJOb3RpbWU7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJCZWdpbn0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLm9ubHlZZWFyRW5kID0gdGhpcy5lbmRWYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJFbmR9LTAxLTAxYDtcclxuICAgICAgfVxyXG4gICAgICAvLyBjYWxsIHNlcnZpY2Ugd2l0aCBzdHJpbmcgZGF0ZSB3aXRob3V0IHRpbWVcclxuICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHsgdmFsdWU6IGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHBvc2l0aW9uID09PSAyICYmIHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRlJyAmJiAhdGhpcy5zbGlkZXJNb2RlKSB7XHJcbiAgICAgIC8qIEFib3ZlIG1vbnRoOiBzZWUgeWVhclNlbGVjdGVkIG9yIG1vbnRoU2VsZWN0ZWQgKi9cclxuICAgICAgdmFsdWVUbXAgPSBtb21lbnQodmFsdWVUbXApLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcclxuICAgICAgdGhpcy5iZWdpblZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLmFkZFN0ZXAodmFsdWVUbXAsIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyksIDIsIHJlZnJlc2hGaWx0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUhvdXJzTWludXRlc0FycmF5KCk7XHJcbiAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoeyB2YWx1ZTogdmFsdWVUbXAudG9JU09TdHJpbmcoKSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURhdGUodmFsdWUpOiBEYXRlIHtcclxuICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ3N0cmluZycgJiYgdGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGVwTWlsbGlzZWNvbmRzIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdkYXRldGltZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2RhdGUnO1xyXG4gIH1cclxuXHJcbiAgaXNDYWxlbmRhclllYXJNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJPbmx5SW5wdXRDaGFuZ2UoY2hhbmdlRXZlbnQsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB5ZWFyID0gY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh5ZWFyKTtcclxuICAgIHRoaXMueWVhclNlbGVjdGVkKGRhdGUsIGRhdGVQaWNrZXIsIHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIHllYXJTZWxlY3RlZCh5ZWFyLCBkYXRlUGlja2VyPzogYW55LCBwcm9wZXJ0eT86IHN0cmluZywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAvLyBjaGFuZ2UgdmFsdWUgMDEgamFuIHRvIDMxIGRlYyBzYW1lIHllYXJcclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkgJiYgIXRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICAgIHRoaXMueWVhclNlbGVjdGVkKHllYXIsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh5ZWFyLCBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyA/IDEgOiAyLCByZWZyZXNoRmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbnRoU2VsZWN0ZWQobW9udGgsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nLCByZWZyZXNoRmlsdGVyID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICBtb250aCA9IG1vbWVudChtb250aCkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkpIHtcclxuICAgICAgICB0aGlzLm1vbnRoU2VsZWN0ZWQobW9udGgsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShtb250aCwgcHJvcGVydHkgPT09ICdiZWdpbicgPyAxIDogMiwgcmVmcmVzaEZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhclZpZXcoKSB7XHJcbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5zdGVwTWlsbGlzZWNvbmRzO1xyXG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKFxyXG4gICAgICB0aGlzLnBhcnNlRmlsdGVyKHRoaXMuY3VycmVudEZpbHRlci5lbmQpLmdldFRpbWUoKSAtXHJcbiAgICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4pLmdldFRpbWUoKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRlc3QgPCA4NjQwMDAwMCAmJiBkaWZmIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdjbG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ21vbnRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRhdGVGaWx0ZXIodHlwZTogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgY29uc3QgZGlmZiA9IGRhdGVWYWx1ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSh0aGlzLmhhbmRsZU1pbigpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgY29uc3QgbW9udGhEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd5ZWFycycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGhEaWZmUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlUGx1czEpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAneWVhcnMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpKSA9PT0gMDtcclxuICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ2JlZ2luJyApIHtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzWWVhcnMoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAnbW9udGhzJywgdHJ1ZSk7XHJcbiAgICAgIGlmICggdHlwZSA9PT0gJ2VuZCcgKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcclxuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdtb250aHMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuIChtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc01vbnRocygpKSA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1dlZWtEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IHdlZWtEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiAod2Vla0RpZmZQbHVzMSAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuICh3ZWVrRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNEYXlEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2RheXMnLCB0cnVlKTtcclxuICAgICAgaWYgKCB0eXBlID09PSAnZW5kJyApIHtcclxuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xyXG4gICAgICAgIGNvbnN0IGRheURpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdkYXlzJywgdHJ1ZSk7XHJcbiAgICAgICAgY29uc3QgX21vZCA9IChkYXlEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSk7XHJcbiAgICAgICAgcmV0dXJuIChfbW9kIDwgMC4wMDAwMDAxICYmIF9tb2QgPiAtMC4wMDAwMDAxKSB8fCBfbW9kID09PSAwIDsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxyXG4gICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnYmVnaW4nICkge1xyXG4gICAgICAgIGNvbnN0IF9tb2QgPSAoKGRheURpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSkgKyAxKTtcclxuICAgICAgICByZXR1cm4gKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEgJiYgX21vZCAhPT0gMCkgfHwgX21vZCA9PT0gMSA7IC8vIDEgbWlsbGlzZWNvbmQgPSAxLjE1NzQwNzQwNzQwNzQwNzZlLThcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgY29uc3QgaG91ckRpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2hvdXJzJywgdHJ1ZSk7XHJcbiAgICAgIHJldHVybiAoaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkpID09PSAwO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRpZmYgJSB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlVGltZShkYXRlLCBwb3MpIHtcclxuICAgIGNvbnN0IHZhbHVldG1wID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBsZXQgdmFsdWV0bXAyO1xyXG4gICAgaWYgKCF0aGlzLnNsaWRlck1vZGUpIHtcclxuICAgICAgc3dpdGNoIChwb3MpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgICB0aGlzLmVuZEhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVldG1wMiA/IHZhbHVldG1wMiA6IHZhbHVldG1wKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1pbnV0ZUluY3JlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01pbnV0ZUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCA9PT0gNjAgPyAxIDogdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAlIDM2MDAwMDApIC8gNjA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUhvdXJJbmNyZW1lbnQoKSB7XHJcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCAvIDYwIC8gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbkhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAodGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgeyBsZW5ndGg6ICgyMyAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5iZWdpblZhbHVlLmdldEhvdXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgZnVsbEVuZEhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKDIzIC0gdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSkgL1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnZhbHVlICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZEhvdXJzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcclxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRIb3VycygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbk1pbnV0ZXNBcnJheShjaGVja0VuZFZhbHVlPykge1xyXG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcclxuICAgICAgdGhpcy5iZWdpbk1pbnV0ZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvXHJcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArXHJcbiAgICAgICAgICAgIDFcclxuICAgICAgICB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5NaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJlZ2luVmFsdWUuZ2V0TWludXRlcygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxFbmRNaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kTWludXRlcyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAoNTkgLSB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUpIC9cclxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRNaW51dGVzKCkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKSB7XHJcbiAgICBjb25zdCBiZWdpblRtcCA9IG5ldyBEYXRlKHRoaXMuYmVnaW5WYWx1ZSk7XHJcbiAgICBjb25zdCBlbmRUbXAgPSBuZXcgRGF0ZSh0aGlzLmVuZFZhbHVlKTtcclxuICAgIGlmIChiZWdpblRtcC5zZXRIb3VycygwLCAwKSA9PT0gZW5kVG1wLnNldEhvdXJzKDAsIDApKSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgdGhpcy5mdWxsRW5kSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgaWYgKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpID09PSB0aGlzLmVuZFZhbHVlLmdldEhvdXJzKCkpIHtcclxuICAgICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSh0cnVlKTtcclxuICAgICAgICB0aGlzLmZ1bGxFbmRNaW51dGVzQXJyYXkodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSgpO1xyXG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luTWludXRlc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEVuZE1pbnV0ZXNBcnJheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5iZWdpblZhbHVlLCAxLCBmYWxzZSk7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5lbmRWYWx1ZSwgMiwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdHJpY3RlZFRvU3RlcCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXBcclxuICAgICAgPyB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNaW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luID8gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luIDpcclxuICAgICAgICAgICAgICAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUgOiB0aGlzLl9kZWZhdWx0TWluKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNYXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmVuZCA/IHRoaXMuY3VycmVudEZpbHRlci5lbmQgOlxyXG4gICAgICAgICAgICAgICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUHJvcGVydHlCeVBhc3MoZXZlbnQpIHtcclxuICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBtb2RlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoIWV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZpbHRlclN0YXRlRGlzYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSAhdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGVEaXNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShzdHJpbmdEYXRlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIC8vIHdhcm5pbmcgY3JlYXRlIGRhdGUgd2l0aCBubyB0aW1lIG1ha2UgYSBkYXRlIFVUQyB3aXRoIFRaIGFuZCB0aGUgZGF0ZSBjcmVhdGUgbWF5YmUgbm90IHRoZSBzYW1lIHllYXIsIG1vbnRoIGFuZCBkYXlcclxuICAgIC8vIGV4ZW1wbGU6XHJcbiAgICAvLyBuZXcgRGF0ZSgnMjAyMi0wMS0wMScpIC0+IEZyaSBEZWMgMzEgMjAyMSAxOTowMDowMCBHTVQtMDUwMCAoaGV1cmUgbm9ybWFsZSBkZSBs4oCZRXN0IG5vcmQtYW3DqXJpY2FpbilcclxuICAgIC8vIHRvIGNyZWF0ZSBzYW1lIGRhdGUgYXMgc3RyaW5nLCBhZGQgdGltZSAwMCBpbiB0aGUgY3JlYXRpb25cclxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxyXG4gICAgbGV0IHllYXI7XHJcbiAgICBsZXQgbW9udGggPSAnMDEnO1xyXG4gICAgbGV0IGRheSA9ICcwMSc7XHJcbiAgICBpZiAoc3RyaW5nRGF0ZS5sZW5ndGggPT09IDEwKSB7XHJcbiAgICAgICBjb25zdCBkYXRlSXRlbXMgPSBzdHJpbmdEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gY29uZmlnIGRhdGUgYmVnaW4tZW5kIGZvciBvZ2NGaWx0ZXI6IERhdGUgd2l0aG91dCB0aW1lIGZvcm1hdCBuZWVkIHRvIGJlIFlZWVktTU0tREQgb3IgWVlZWScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5ZWFyID0gZGF0ZUl0ZW1zWzBdO1xyXG4gICAgICAgICAgbW9udGggPSBkYXRlSXRlbXNbMV07XHJcbiAgICAgICAgICBkYXkgPSBkYXRlSXRlbXNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzdHJpbmdEYXRlLmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICB5ZWFyID0gc3RyaW5nRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShzdHJpbmdEYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gMDA6MDA6MDBgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVyKCkge1xyXG4gICAgbGV0IGZpbHRlck9yaWdpbkNvbmZpZyA9IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyBhcyBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zO1xyXG5cclxuICAgIGxldCBtaW5EZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtYXhEZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtaW5EZWZhdWx0SVNPU3RyaW5nO1xyXG4gICAgbGV0IG1heERlZmF1bHRJU09TdHJpbmc7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICBpZiAoZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIGxldCB0b2RheURhdGVTdHJpbmdOb1RpbWUgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQ0EnKTsgLy8gJzIwMjItMDItMTMnXHJcbiAgICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IGAke3RvZGF5RGF0ZVN0cmluZ05vVGltZS5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1heERlZmF1bHRJU09TdHJpbmcgPSBgJHtmaWx0ZXJPcmlnaW5Db25maWcuZW5kLnN1YnN0cmluZygwLDQpfS0wMS0wMWA7XHJcbiAgICAgIH1cclxuICAgICAgbWluRGVmYXVsdElTT1N0cmluZyA9IGAke2ZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShtaW5EZWZhdWx0SVNPU3RyaW5nKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWF4RGVmYXVsdElTT1N0cmluZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIoZmlsdGVyT3JpZ2luQ29uZmlnLmJlZ2luKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLnBhcnNlRmlsdGVyKGZpbHRlck9yaWdpbkNvbmZpZy5lbmQpO1xyXG4gICAgICBtaW5EZWZhdWx0SVNPU3RyaW5nID0gbWluRGVmYXVsdERhdGUudG9JU09TdHJpbmcoKTtcclxuICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IG1heERlZmF1bHREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4gIT09IG1pbkRlZmF1bHRJU09TdHJpbmcgKSB8fFxyXG4gICAgKHRoaXMuY3VycmVudEZpbHRlci5lbmQgIT09IG1heERlZmF1bHRJU09TdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IG1pbkRlZmF1bHREYXRlO1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gbWF4RGVmYXVsdERhdGU7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXJTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRldGltZS1jb250YWluZXJcIj5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJzbGlkZXJNb2RlXCJcclxuICAgIChjaGFuZ2UpPVwibW9kZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICB7eydpZ28uZ2VvLmZpbHRlci5zbGlkZXJNb2RlVGl0bGUnIHwgdHJhbnNsYXRlfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XHJcbiAgICA8aWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXJcclxuICAgICAgW2JlZ2luXT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXHJcbiAgICAgIFtjdXJyZW50RmlsdGVyXT1cImN1cnJlbnRGaWx0ZXJcIiBcclxuICAgICAgW2RhdGFzb3VyY2VdPVwiZGF0YXNvdXJjZVwiXHJcbiAgICAgIChjaGFuZ2VQcm9wZXJ0eSk9XCJjaGFuZ2VQcm9wZXJ0eUJ5UGFzcygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvaWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXI+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFzbGlkZXJNb2RlXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInllYXItaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGVZZWFyXCI+XHJcbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXHJcbiAgICAgICAgd2l0aCB0aGUgZGF0ZXBpY2tlciAgLS0+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCAgY2xhc3M9XCJ5ZWFyLWlucHV0XCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnRZZWFyJ3wgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcclxuICAgICAgICAgIHZhbHVlPVwie3tvbmx5WWVhckJlZ2lufX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gIFxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgcGFuZWxDbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXHJcbiAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2JlZ2luWWVhclxyXG4gICAgICAgICAgY2xhc3M9IFwieWVhci1pbnB1dC1oaWRlXCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJiZWdpbkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgZW5hYmxlZD0gZmFsc2VcclxuICAgICAgICAgIHJlYWRvbmx5PSB0cnVlXHJcbiAgICAgICAgICBbdmFsdWVdPVwiYmVnaW5WYWx1ZT9iZWdpblZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXCJcclxuICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgW21heF09XCIoZW5kVmFsdWUgJiYgKCFyZXN0cmljdGVkVG9TdGVwKCkpKT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgIGNsYXNzPVwieWVhci1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmVuZFllYXInfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwieWVhci1pbnB1dC1vbmx5LXllYXJcIlxyXG4gICAgICAgICAgdmFsdWU9XCJ7e29ubHlZZWFyRW5kfX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdID0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImVuZERhdGVwaWNrZXJcIiBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyXHJcbiAgICAgICAgICBwYW5lbENsYXNzPVwiZGF0ZXBpY2tlci15ZWFyXCJcclxuICAgICAgICAgICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImVuZFZhbHVlXCJcclxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2VuZFllYXJcclxuICAgICAgICAgIGNsYXNzPSBcInllYXItaW5wdXQtaGlkZVwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZW5kRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICBlbmFibGVkPSBmYWxzZVxyXG4gICAgICAgICAgcmVhZG9ubHk9IHRydWVcclxuICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICBbbWluXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz0ndG9nZ2xlLWZpbHRlci1zdGF0ZScgXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVGaWx0ZXJTdGF0ZSgpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnRvZ2dsZUZpbHRlclN0YXRlJyB8IHRyYW5zbGF0ZVwiIFxyXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIFxyXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpIT09J3llYXInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxpbnB1dCAjYmVnaW5cclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoYmVnaW4udmFsdWUsIDEpXCJcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIihlbmRWYWx1ZSAmJiAoIXJlc3RyaWN0ZWRUb1N0ZXAoKSkpP2VuZFZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCIgXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxyXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJiZWdpblZhbHVlXCJcclxuICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIj5cclxuICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpPT09J2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8udGltZUZpbHRlci5ob3VyJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e2hvdXJ9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1pbnV0ZS1pbnB1dFwiICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCk9PT0nZGF0ZXRpbWUnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbk1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57e21pbnV0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiICpuZ0lmPVwiIXJlc3RyaWN0ZWRUb1N0ZXAoKVwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZW5kRGF0ZXBpY2tlclwiIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZW5kXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJlbmREYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5lbmREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIlxyXG4gICAgICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzLCAnZW5kJylcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICAgICAgW21pbl09XCJiZWdpblZhbHVlP2JlZ2luVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICAgIFttYXhdPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIiBcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxyXG4gICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJtb250aFNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCI+XHJcbiAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIiA+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmhvdXInIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgZW5kSG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7aG91cn19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIubWludXRlJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZE1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7bWludXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz1cInRvZ2dsZS1maWx0ZXItc3RhdGVcIiBcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIiBcclxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCIgXHJcbiAgICAgICAgW2NoZWNrZWRdPSBcIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|