@igo2/geo 1.13.0-alpha.1 → 1.13.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/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
- package/esm2020/lib/catalog/catalog.module.mjs +1 -1
- package/esm2020/lib/catalog/index.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.service.mjs +1 -1
- package/esm2020/lib/catalog/shared/index.mjs +1 -1
- package/esm2020/lib/datasource/datasource.module.mjs +1 -1
- package/esm2020/lib/datasource/index.mjs +1 -1
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +22 -17
- package/esm2020/lib/datasource/shared/datasource.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/index.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +2 -4
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +3 -3
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/index.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/index.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2020/lib/datasource/utils/esri-style-generator.mjs +1 -1
- package/esm2020/lib/datasource/utils/index.mjs +1 -1
- package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +2 -2
- package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
- package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
- package/esm2020/lib/directions/directions-results/index.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/index.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2020/lib/directions/directions.component.mjs +2 -2
- package/esm2020/lib/directions/directions.module.mjs +1 -1
- package/esm2020/lib/directions/index.mjs +1 -1
- package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.enum.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.utils.mjs +1 -2
- package/esm2020/lib/directions/shared/index.mjs +1 -1
- package/esm2020/lib/directions/shared/store.mjs +1 -1
- package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
- package/esm2020/lib/download/download-button/index.mjs +1 -1
- package/esm2020/lib/download/download.module.mjs +1 -1
- package/esm2020/lib/download/index.mjs +1 -1
- package/esm2020/lib/download/shared/download.interface.mjs +1 -1
- package/esm2020/lib/download/shared/download.service.mjs +1 -1
- package/esm2020/lib/download/shared/index.mjs +1 -1
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +5 -5
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw.component.mjs +386 -275
- package/esm2020/lib/draw/draw/draw.module.mjs +19 -15
- package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
- package/esm2020/lib/draw/index.mjs +1 -1
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
- package/esm2020/lib/draw/shared/draw-style.service.mjs +35 -18
- package/esm2020/lib/draw/shared/draw.enum.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2020/lib/draw/shared/index.mjs +1 -1
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +54 -26
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
- package/esm2020/lib/feature/feature.module.mjs +1 -1
- package/esm2020/lib/feature/index.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.enums.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.utils.mjs +4 -5
- package/esm2020/lib/feature/shared/index.mjs +1 -1
- package/esm2020/lib/feature/shared/store.mjs +14 -2
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/index.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
- package/esm2020/lib/feature/shared/strategies/selection.mjs +2 -2
- package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2020/lib/filter/filter.module.mjs +2 -2
- package/esm2020/lib/filter/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +5 -5
- package/esm2020/lib/filter/ogc-filter-time/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +8 -8
- package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +44 -39
- package/esm2020/lib/filter/ogc-filterable-list/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +23 -10
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
- package/esm2020/lib/filter/shared/index.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +6 -6
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -5
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +4 -4
- package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +4 -4
- package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2020/lib/filter/time-filter-list/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
- package/esm2020/lib/geo.module.mjs +1 -1
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +1 -1
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
- package/esm2020/lib/geometry/geometry.module.mjs +1 -1
- package/esm2020/lib/geometry/index.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/index.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2020/lib/geometry/shared/index.mjs +1 -1
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
- package/esm2020/lib/import-export/export-button/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +100 -70
- package/esm2020/lib/import-export/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export.module.mjs +6 -3
- package/esm2020/lib/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.errors.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.utils.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.utils.mjs +3 -2
- package/esm2020/lib/import-export/shared/index.mjs +1 -1
- package/esm2020/lib/import-export/style-list/index.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.module.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.provider.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.service.mjs +1 -1
- package/esm2020/lib/layer/index.mjs +2 -1
- package/esm2020/lib/layer/layer-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
- package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +28 -22
- package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
- package/esm2020/lib/layer/layer-legend-list/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
- package/esm2020/lib/layer/layer-list/index.mjs +1 -1
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +55 -70
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/index.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +5 -5
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
- package/esm2020/lib/layer/layer.module.mjs +19 -7
- package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2020/lib/layer/shared/index.mjs +1 -1
- package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
- package/esm2020/lib/layer/shared/layer.service.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/index.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/layer.mjs +1 -7
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +11 -9
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/style.service.mjs +1 -1
- package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
- package/esm2020/lib/layer/style-modal/index.mjs +2 -0
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +288 -0
- package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
- package/esm2020/lib/layer/utils/image-watcher.mjs +1 -1
- package/esm2020/lib/layer/utils/index.mjs +1 -2
- package/esm2020/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2020/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
- package/esm2020/lib/map/baselayers-switcher/index.mjs +1 -1
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +21 -18
- package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
- package/esm2020/lib/map/index.mjs +1 -1
- package/esm2020/lib/map/info-section/index.mjs +1 -1
- package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
- package/esm2020/lib/map/map-browser/index.mjs +1 -1
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +2 -2
- package/esm2020/lib/map/map-center/index.mjs +1 -1
- package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
- package/esm2020/lib/map/map.module.mjs +1 -1
- package/esm2020/lib/map/menu-button/index.mjs +1 -1
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +2 -2
- package/esm2020/lib/map/offline-button/index.mjs +1 -1
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +2 -2
- package/esm2020/lib/map/rotation-button/index.mjs +1 -1
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
- package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +1 -1
- package/esm2020/lib/map/shared/controllers/index.mjs +1 -1
- package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +1 -1
- package/esm2020/lib/map/shared/index.mjs +2 -1
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +240 -0
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
- package/esm2020/lib/map/shared/map.enums.mjs +1 -1
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/map/shared/map.mjs +26 -37
- package/esm2020/lib/map/shared/map.service.mjs +1 -1
- package/esm2020/lib/map/shared/map.utils.mjs +1 -1
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +1 -1
- package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2020/lib/map/shared/projection.service.mjs +1 -1
- package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
- package/esm2020/lib/map/swipe-control/index.mjs +1 -1
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +2 -2
- package/esm2020/lib/map/utils/layer-watcher.mjs +22 -1
- package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +2 -2
- package/esm2020/lib/map/zoom-button/index.mjs +1 -1
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
- package/esm2020/lib/measure/index.mjs +1 -1
- package/esm2020/lib/measure/measure.module.mjs +1 -1
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
- package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
- package/esm2020/lib/measure/shared/index.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2020/lib/metadata/index.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
- package/esm2020/lib/metadata/metadata.module.mjs +1 -1
- package/esm2020/lib/metadata/shared/index.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +1 -1
- package/esm2020/lib/offline/geoDB/index.mjs +1 -1
- package/esm2020/lib/offline/index.mjs +1 -1
- package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
- package/esm2020/lib/offline/shared/index.mjs +1 -1
- package/esm2020/lib/overlay/index.mjs +1 -1
- package/esm2020/lib/overlay/overlay.module.mjs +1 -1
- package/esm2020/lib/overlay/shared/index.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +1 -1
- package/esm2020/lib/print/index.mjs +1 -1
- package/esm2020/lib/print/print/print.component.mjs +2 -2
- package/esm2020/lib/print/print-form/index.mjs +1 -1
- package/esm2020/lib/print/print-form/print-form.component.mjs +4 -4
- package/esm2020/lib/print/print.module.mjs +1 -1
- package/esm2020/lib/print/shared/index.mjs +1 -1
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +1 -1
- package/esm2020/lib/print/shared/print.type.mjs +1 -1
- package/esm2020/lib/query/index.mjs +1 -1
- package/esm2020/lib/query/query.module.mjs +1 -1
- package/esm2020/lib/query/shared/index.mjs +1 -1
- package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
- package/esm2020/lib/query/shared/query.directive.mjs +1 -1
- package/esm2020/lib/query/shared/query.enums.mjs +1 -1
- package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +4 -1
- package/esm2020/lib/query/shared/query.utils.mjs +1 -1
- package/esm2020/lib/search/index.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +16 -14
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +2 -2
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +2 -2
- package/esm2020/lib/search/search-results/search-results.component.mjs +2 -2
- package/esm2020/lib/search/search-results/search-results.module.mjs +1 -1
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +2 -2
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
- package/esm2020/lib/search/search.module.mjs +1 -1
- package/esm2020/lib/search/shared/index.mjs +1 -1
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +1 -1
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2020/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2020/lib/search/shared/search.enums.mjs +1 -1
- package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/search.service.mjs +1 -1
- package/esm2020/lib/search/shared/search.utils.mjs +13 -1
- package/esm2020/lib/search/shared/sources/cadastre.mjs +1 -1
- package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/index.mjs +1 -1
- package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
- package/esm2020/lib/toast/index.mjs +1 -1
- package/esm2020/lib/toast/toast.component.mjs +2 -2
- package/esm2020/lib/toast/toast.module.mjs +1 -1
- package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
- package/esm2020/lib/utils/commonVectorStyle.mjs +1 -1
- package/esm2020/lib/utils/googleLinks.mjs +1 -1
- package/esm2020/lib/utils/id-generator.mjs +1 -1
- package/esm2020/lib/utils/index.mjs +1 -1
- package/esm2020/lib/utils/osmLinks.mjs +1 -1
- package/esm2020/lib/wkt/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
- package/esm2020/lib/wkt/wkt.module.mjs +1 -1
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2020/lib/workspace/index.mjs +1 -1
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +8 -6
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +10 -6
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +1 -1
- package/esm2020/lib/workspace/shared/index.mjs +1 -1
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +2 -3
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
- package/esm2020/lib/workspace/widgets/index.mjs +1 -1
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
- package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
- package/esm2020/lib/workspace/workspace.module.mjs +1 -1
- package/esm2020/public_api.mjs +1 -1
- package/fesm2015/igo2-geo.mjs +6471 -5929
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +6042 -5523
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +3 -3
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +0 -2
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +0 -1
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +2 -1
- package/lib/draw/draw/draw-popup.component.d.ts +0 -3
- package/lib/draw/draw/draw.component.d.ts +75 -54
- package/lib/draw/draw/draw.module.d.ts +13 -10
- package/lib/draw/shared/draw-style.service.d.ts +7 -1
- package/lib/draw/shared/draw.interface.d.ts +4 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +5 -1
- package/lib/feature/shared/feature.interfaces.d.ts +2 -2
- package/lib/feature/shared/store.d.ts +1 -0
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +3 -3
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +5 -5
- package/lib/filter/shared/ogc-filter.interface.d.ts +0 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +6 -6
- 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/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +3 -3
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +6 -6
- package/lib/geometry/shared/controls/draw.d.ts +3 -3
- package/lib/geometry/shared/geometry.interfaces.d.ts +2 -2
- package/lib/import-export/import-export/import-export.component.d.ts +6 -4
- package/lib/import-export/import-export.module.d.ts +1 -1
- package/lib/layer/index.d.ts +1 -0
- package/lib/layer/layer-list/layer-list.component.d.ts +3 -5
- package/lib/layer/layer.module.d.ts +20 -18
- package/lib/layer/shared/layers/layer.d.ts +0 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
- package/lib/layer/shared/layers/vector-layer.d.ts +2 -1
- package/lib/layer/style-modal/index.d.ts +1 -0
- package/lib/layer/style-modal/style-modal.component.d.ts +42 -0
- package/lib/layer/utils/index.d.ts +0 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +3 -1
- package/lib/map/shared/index.d.ts +1 -0
- package/lib/map/shared/linkedLayers.utils.d.ts +17 -0
- package/lib/map/shared/map.d.ts +8 -0
- package/lib/map/shared/map.interface.d.ts +2 -1
- package/lib/map/utils/layer-watcher.d.ts +7 -0
- package/lib/print/print-form/print-form.component.d.ts +16 -16
- package/lib/workspace/shared/edition-workspace.d.ts +2 -2
- package/ngcc.config.js +3 -3
- package/package.json +19 -19
- package/style/geo.theming.scss +12 -12
- package/esm2020/lib/layer/utils/layerSync-watcher.mjs +0 -242
- package/lib/layer/utils/layerSync-watcher.d.ts +0 -19
|
@@ -57,7 +57,6 @@ export class EditionWorkspaceService {
|
|
|
57
57
|
layer.options.linkedLayers = { linkId: wmsLinkId, links: [] };
|
|
58
58
|
}
|
|
59
59
|
const linkProperties = {
|
|
60
|
-
bidirectionnal: true,
|
|
61
60
|
syncedDelete: true,
|
|
62
61
|
linkedIds: [wfsLinkId],
|
|
63
62
|
properties: [
|
|
@@ -131,7 +130,7 @@ export class EditionWorkspaceService {
|
|
|
131
130
|
relations: dataSource.options.relations,
|
|
132
131
|
queryTitle: dataSource.options.queryTitle,
|
|
133
132
|
params: dataSource.options.paramsWFS,
|
|
134
|
-
ogcFilters: Object.assign({}, dataSource.ogcFilters
|
|
133
|
+
ogcFilters: Object.assign({}, dataSource.ogcFilters, { enabled: hasOgcFilters }),
|
|
135
134
|
sourceFields: dataSource.options.sourceFields || undefined,
|
|
136
135
|
edition: dataSource.options.edition
|
|
137
136
|
}
|
|
@@ -327,9 +326,13 @@ export class EditionWorkspaceService {
|
|
|
327
326
|
return false;
|
|
328
327
|
}
|
|
329
328
|
this.sanitizeParameter(feature, workspace);
|
|
329
|
+
const baseUrl = workspace.layer.dataSource.options.edition.baseUrl;
|
|
330
330
|
let url = this.configService.getConfig('edition.url');
|
|
331
|
-
if (
|
|
332
|
-
url
|
|
331
|
+
if (!url) {
|
|
332
|
+
url = baseUrl;
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
url += baseUrl ? baseUrl : '';
|
|
333
336
|
}
|
|
334
337
|
if (feature.newFeature) {
|
|
335
338
|
url += workspace.layer.dataSource.options.edition.addUrl;
|
|
@@ -512,7 +515,8 @@ export class EditionWorkspaceService {
|
|
|
512
515
|
getDomainValues(relation) {
|
|
513
516
|
let url = relation.url;
|
|
514
517
|
if (!url) {
|
|
515
|
-
url = this.configService.getConfig('edition.url')
|
|
518
|
+
url = this.configService.getConfig('edition.url') ?
|
|
519
|
+
this.configService.getConfig('edition.url') + relation.table : relation.table;
|
|
516
520
|
}
|
|
517
521
|
return this.http.get(url).pipe(map(result => {
|
|
518
522
|
return result;
|
|
@@ -639,4 +643,4 @@ function getColumnKeyWithoutPropertiesTag(column) {
|
|
|
639
643
|
}
|
|
640
644
|
return column;
|
|
641
645
|
}
|
|
642
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEYsT0FBTyxFQUNMLFdBQVcsRUFFWCxtQ0FBbUMsRUFDbkMsa0NBQWtDLEVBRWxDLHlCQUF5QixFQUVQLE1BQU0sY0FBYyxDQUFDO0FBR3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUUzRixPQUFPLEVBRUwsYUFBYSxFQUNiLFlBQVksRUFDWiwrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWtELGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs1RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFLL0QsTUFBTSxPQUFPLHVCQUF1QjtJQVlsQyxZQUNVLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzNCLGVBQWlDO1FBUmhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1C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LGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDL0YsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9ELE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDaEY7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhGQS9zQlUsdUJBQXVCOzZFQUF2Qix1QkFBdUIsV0FBdkIsdUJBQXVCLG1CQUZ0QixNQUFNO3VGQUVQLHVCQUF1QjtjQUhuQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O0FBb3RCRCxTQUFTLGdDQUFnQyxDQUFDLE1BQWM7SUFDdEQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3QjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQWN0aW9uU3RvcmUsXHJcbiAgRW50aXR5UmVjb3JkLFxyXG4gIEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5LFxyXG4gIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zLFxyXG4gIEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIsXHJcbiAgRW50aXR5VGFibGVUZW1wbGF0ZSxcclxuICBFbnRpdHlUYWJsZUJ1dHRvbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSZWxhdGlvbk9wdGlvbnMsIFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMsIFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBXRlNEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dmcy1kYXRhc291cmNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5fSBmcm9tICcuLi8uLi9mZWF0dXJlJztcclxuXHJcbmltcG9ydCB7IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJbWFnZUxheWVyLCBMYXllclNlcnZpY2UsIExheWVyc0xpbmtQcm9wZXJ0aWVzLCBMaW5rZWRQcm9wZXJ0aWVzLCBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyJztcclxuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL3N0eWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW9Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xyXG5pbXBvcnQgeyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRWRpdGlvbldvcmtzcGFjZSB9IGZyb20gJy4vZWRpdGlvbi13b3Jrc3BhY2UnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0aW9uV29ya3NwYWNlU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyB3cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcclxuICBwdWJsaWMgYWRkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyByZWxhdGlvbkxheWVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEltYWdlTGF5ZXJbXSB8IFZlY3RvckxheWVyW10+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF1dGhJbnRlcmNlcHRvcj86IEF1dGhJbnRlcmNlcHRvcikgeyB9XHJcblxyXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogSW1hZ2VMYXllciwgbWFwOiBJZ29NYXApOiBFZGl0aW9uV29ya3NwYWNlIHtcclxuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCAhPT0gdHJ1ZSB8fCBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5lbmFibGVkICE9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB3a3NDb25maWc7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UpIHtcclxuICAgICAgd2tzQ29uZmlnID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3a3NDb25maWcgPSB7fTtcclxuICAgIH1cclxuICAgIHdrc0NvbmZpZy5zcmNJZCA9IGxheWVyLmlkO1xyXG4gICAgd2tzQ29uZmlnLndvcmtzcGFjZUlkID0gbGF5ZXIuaWQ7XHJcbiAgICB3a3NDb25maWcuZW5hYmxlZCA9IHRydWU7XHJcbiAgICB3a3NDb25maWcucGFnZVNpemUgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemU7XHJcbiAgICB3a3NDb25maWcucGFnZVNpemVPcHRpb25zID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplT3B0aW9ucztcclxuXHJcbiAgICBjb25zdCBkYXRhU291cmNlOiBXTVNEYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlIDtcclxuICAgIGNvbnN0IHdtc0xpbmtJZCA9IGxheWVyLmlkICsgJy5XbXNXb3Jrc3BhY2VUYWJsZVNyYyc7XHJcbiAgICBjb25zdCB3ZnNMaW5rSWQgPSBsYXllci5pZCArICcuV2ZzV29ya3NwYWNlVGFibGVEZXN0JztcclxuICAgIGlmICghbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcclxuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMgPSB7IGxpbmtJZDogd21zTGlua0lkLCBsaW5rczogW10gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxpbmtQcm9wZXJ0aWVzID0ge1xyXG4gICAgICBiaWRpcmVjdGlvbm5hbDogdHJ1ZSxcclxuICAgICAgc3luY2VkRGVsZXRlOiB0cnVlLFxyXG4gICAgICBsaW5rZWRJZHM6IFt3ZnNMaW5rSWRdLFxyXG4gICAgICBwcm9wZXJ0aWVzOiBbXHJcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVgsXHJcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5WSVNJQkxFXVxyXG4gICAgfSBhcyBMYXllcnNMaW5rUHJvcGVydGllcztcclxuXHJcbiAgICBpZiAoIWxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uKSB7XHJcbiAgICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKTtcclxuICAgIH1cclxuICAgIGxldCBoYXNPZ2NGaWx0ZXJzID0gZmFsc2U7XHJcbiAgICBpZiAoKGRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnM/LmVuYWJsZWQpIHtcclxuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuT0dDRklMVEVSUyk7XHJcbiAgICAgIGhhc09nY0ZpbHRlcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbikge1xyXG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NQVhSRVNPTFVUSU9OKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2xvbmVkTGlua3M6IExheWVyc0xpbmtQcm9wZXJ0aWVzW10gPSBbXTtcclxuICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcykge1xyXG4gICAgICBjbG9uZWRMaW5rcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MpKTtcclxuICAgIH1cclxuICAgIGNsb25lZExpbmtzLnB1c2gobGlua1Byb3BlcnRpZXMpO1xyXG5cclxuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCA/IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCA6IHdtc0xpbmtJZCxcclxuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MgPSBjbG9uZWRMaW5rcztcclxuICAgIGludGVyZmFjZSBXRlNvcHRpb25zIGV4dGVuZHMgV0ZTRGF0YVNvdXJjZU9wdGlvbnMsIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB7IH1cclxuICAgIGxldCB3a3M7XHJcbiAgICB0aGlzLmxheWVyU2VydmljZVxyXG4gICAgICAuY3JlYXRlQXN5bmNMYXllcih7XHJcbiAgICAgICAgaWQ6IHdmc0xpbmtJZCxcclxuICAgICAgICBsaW5rZWRMYXllcnM6IHtcclxuICAgICAgICAgIGxpbmtJZDogd2ZzTGlua0lkXHJcbiAgICAgICAgfSxcclxuICAgICAgICB3b3Jrc3BhY2U6IHtcclxuICAgICAgICAgIHNyY0lkOiBsYXllci5pZCxcclxuICAgICAgICAgIHdvcmtzcGFjZUlkOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgIHF1ZXJ5T3B0aW9uczoge1xyXG4gICAgICAgICAgICBtYXBRdWVyeU9uT3BlblRhYjogbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnF1ZXJ5T3B0aW9ucz8ubWFwUXVlcnlPbk9wZW5UYWIsXHJcbiAgICAgICAgICAgIHRhYlF1ZXJ5OiBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHBhZ2VTaXplOiBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemUsXHJcbiAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZU9wdGlvbnNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXHJcbiAgICAgICAgbWluUmVzb2x1dGlvbjogbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/Lm1pblJlc29sdXRpb24gfHwgbGF5ZXIubWluUmVzb2x1dGlvbiB8fCAwLFxyXG4gICAgICAgIG1heFJlc29sdXRpb246IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5tYXhSZXNvbHV0aW9uIHx8IGxheWVyLm1heFJlc29sdXRpb24gfHwgSW5maW5pdHksXHJcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBmaWxsOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSlcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHJva2U6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKVwiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNpcmNsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSlcIlxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDEpXCJcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHJhZGl1czogNVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHNvdXJjZU9wdGlvbnM6IHtcclxuICAgICAgICAgIGRvd25sb2FkOiBkYXRhU291cmNlLm9wdGlvbnMuZG93bmxvYWQsXHJcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcclxuICAgICAgICAgIHVybDogZGF0YVNvdXJjZS5vcHRpb25zLnVybFdmcyB8fCBkYXRhU291cmNlLm9wdGlvbnMudXJsLFxyXG4gICAgICAgICAgcXVlcnlhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgcmVsYXRpb25zOiBkYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zLFxyXG4gICAgICAgICAgcXVlcnlUaXRsZTogKGRhdGFTb3VyY2Uub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucykucXVlcnlUaXRsZSxcclxuICAgICAgICAgIHBhcmFtczogZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtc1dGUyxcclxuICAgICAgICAgIG9nY0ZpbHRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRhdGFTb3VyY2Uub2djRmlsdGVycyQudmFsdWUsIHtlbmFibGVkOiBoYXNPZ2NGaWx0ZXJzfSksXHJcbiAgICAgICAgICBzb3VyY2VGaWVsZHM6IGRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgZWRpdGlvbjogZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb25cclxuICAgICAgICB9IGFzIFdGU29wdGlvbnNcclxuICAgICAgfSlcclxuICAgICAgLnN1YnNjcmliZSgod29ya3NwYWNlTGF5ZXI6IFZlY3RvckxheWVyKSA9PiB7XHJcbiAgICAgICAgbWFwLmFkZExheWVyKHdvcmtzcGFjZUxheWVyKTtcclxuICAgICAgICBsYXllci5vbC5zZXRQcm9wZXJ0aWVzKHsgbGlua2VkTGF5ZXJzOiB7IGxpbmtJZDogbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkLCBsaW5rczogY2xvbmVkTGlua3MgfSB9LCBmYWxzZSk7XHJcbiAgICAgICAgd29ya3NwYWNlTGF5ZXIuZGF0YVNvdXJjZS5vbC5yZWZyZXNoKCk7XHJcblxyXG4gICAgICAgIHdrcyA9IG5ldyBFZGl0aW9uV29ya3NwYWNlKHtcclxuICAgICAgICAgIGlkOiBsYXllci5pZCxcclxuICAgICAgICAgIHRpdGxlOiBsYXllci50aXRsZSxcclxuICAgICAgICAgIGxheWVyOiB3b3Jrc3BhY2VMYXllcixcclxuICAgICAgICAgIG1hcCxcclxuICAgICAgICAgIGVudGl0eVN0b3JlOiB0aGlzLmNyZWF0ZUZlYXR1cmVTdG9yZSh3b3Jrc3BhY2VMYXllciwgbWFwKSxcclxuICAgICAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxyXG4gICAgICAgICAgbWV0YToge1xyXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlOiB1bmRlZmluZWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCB0aGlzLCB0aGlzLmRpYWxvZywgdGhpcy5jb25maWdTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVRhYmxlVGVtcGxhdGUod2tzLCB3b3Jrc3BhY2VMYXllcik7XHJcblxyXG4gICAgICAgIHdvcmtzcGFjZUxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkID0gd29ya3NwYWNlTGF5ZXIuaWQ7XHJcbiAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UgPSBPYmplY3QuYXNzaWduKHt9LCBsYXllci5vcHRpb25zLndvcmtzcGFjZSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgd2tzQ29uZmlnXHJcbiAgICAgICAgICB9IGFzIEdlb1dvcmtzcGFjZU9wdGlvbnMpO1xyXG5cclxuICAgICAgICBkZWxldGUgZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkO1xyXG4gICAgICAgIHJldHVybiB3a3M7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd2tzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IEZlYXR1cmVTdG9yZSB7XHJcbiAgICBjb25zdCBzdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmUoW10sIHsgbWFwIH0pO1xyXG4gICAgc3RvcmUuYmluZExheWVyKGxheWVyKTtcclxuXHJcbiAgICBjb25zdCBsb2FkaW5nU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgaW5NYXBFeHRlbnRTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGluTWFwUmVzb2x1dGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3kgPSBuZXcgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgIHpJbmRleDogMzAwLFxyXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgICAgc3R5bGU6IHVuZGVmaW5lZCxcclxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxyXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIGJyb3dzYWJsZTogZmFsc2VcclxuICAgICAgfSksXHJcbiAgICAgIG1hcCxcclxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcclxuICAgICAgbW90aW9uOiB0aGlzLnpvb21BdXRvID8gRmVhdHVyZU1vdGlvbi5EZWZhdWx0IDogRmVhdHVyZU1vdGlvbi5Ob25lLFxyXG4gICAgICBtYW55OiB0cnVlLFxyXG4gICAgICBkcmFnQm94OiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcEV4dGVudFN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGluTWFwUmVzb2x1dGlvblN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGlvblN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3ksIGZhbHNlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHRoaXMuY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcclxuICAgIHJldHVybiBzdG9yZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVGFibGVUZW1wbGF0ZSh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIGxheWVyOiBWZWN0b3JMYXllcik6IEVudGl0eVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29uc3QgZmllbGRzID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcyB8fCBbXTtcclxuXHJcbiAgICBjb25zdCByZWxhdGlvbnMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zIHx8IFtdO1xyXG5cclxuICAgIGxldCByZW5kZXJlclR5cGUgPSBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTDtcclxuICAgIGxldCBidXR0b25zID0gW107XHJcbiAgICBsZXQgY29sdW1ucyA9IFtdO1xyXG4gICAgbGV0IHJlbGF0aW9uc0NvbHVtbiA9IFtdO1xyXG5cclxuICAgIGJ1dHRvbnMgPSBbe1xyXG4gICAgICBuYW1lOiAnZWRpdGlvbicsXHJcbiAgICAgIHRpdGxlOiB1bmRlZmluZWQsXHJcbiAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwLFxyXG4gICAgICBwcmltYXJ5OiBmYWxzZSxcclxuICAgICAgdmFsdWVBY2Nlc3NvcjogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICAgZWRpdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgICAgaWNvbjogJ3BlbmNpbCcsXHJcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeUJ1dHRvbiA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHsgd29ya3NwYWNlLmVkaXRGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7IH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGVkaXRNb2RlOiBmYWxzZSxcclxuICAgICAgICAgIGljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgY29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgIGRpc2FibGVkOiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5kZWxldGVCdXR0b24gPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7IHdvcmtzcGFjZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7IH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxyXG4gICAgICAgICAgaWNvbjogJ2NoZWNrJyxcclxuICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxyXG4gICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7IHRoaXMuc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKTsgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZWRpdE1vZGU6IHRydWUsXHJcbiAgICAgICAgICBpY29uOiAnYWxwaGEteCcsXHJcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubG9hZGluZyxcclxuICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4geyB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlKTsgfVxyXG4gICAgICAgIH1dIGFzIEVudGl0eVRhYmxlQnV0dG9uW107XHJcbiAgICAgIH1cclxuICAgIH1dO1xyXG5cclxuXHJcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZW50aXRpZXMkLnBpcGUoXHJcbiAgICAgICAgc2tpcFdoaWxlKHZhbCA9PiB2YWwubGVuZ3RoID09PSAwKSxcclxuICAgICAgICB0YWtlKDEpXHJcbiAgICAgICkuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcclxuICAgICAgICBjb25zdCBvbCA9IChlbnRpdGllc1swXSBhcyBGZWF0dXJlKS5vbCBhcyBvbEZlYXR1cmU8T2xHZW9tZXRyeT47XHJcbiAgICAgICAgY29uc3QgY29sdW1uc0Zyb21GZWF0dXJlcyA9IG9sLmdldEtleXMoKVxyXG4gICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgY29sID0+ICFjb2wuc3RhcnRzV2l0aCgnXycpICYmXHJcbiAgICAgICAgICAgICAgY29sICE9PSAnZ2VvbWV0cnknICYmXHJcbiAgICAgICAgICAgICAgY29sICE9PSBvbC5nZXRHZW9tZXRyeU5hbWUoKSAmJlxyXG4gICAgICAgICAgICAgICFjb2wubWF0Y2goL2JvdW5kZWRieS9naSkpXHJcbiAgICAgICAgICAubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtrZXl9YCxcclxuICAgICAgICAgICAgICB0aXRsZToga2V5LFxyXG4gICAgICAgICAgICAgIHJlbmRlcmVyOiByZW5kZXJlclR5cGUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xyXG4gICAgICAgICAgc2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zRnJvbUZlYXR1cmVzXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5zID0gZmllbGRzLm1hcCgoZmllbGQ6IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMpID0+IHtcclxuXHJcbiAgICAgIGxldCBjb2x1bW4gPSB7XHJcbiAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtmaWVsZC5uYW1lfWAsXHJcbiAgICAgICAgdGl0bGU6IGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMgOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgIHJlbmRlcmVyOiByZW5kZXJlclR5cGUsXHJcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogdW5kZWZpbmVkLFxyXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNlbGxDbGFzcyA9IHt9O1xyXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgY2VsbENsYXNzW2BjbGFzc18ke2ZpZWxkLnR5cGV9YF0gPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gY2VsbENsYXNzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJpbWFyeTogZmllbGQucHJpbWFyeSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlLFxyXG4gICAgICAgIHZhbGlkYXRpb246IGZpZWxkLnZhbGlkYXRpb24sXHJcbiAgICAgICAgbGlua0NvbHVtbkZvcmNlOiBmaWVsZC5saW5rQ29sdW1uRm9yY2UsXHJcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcclxuICAgICAgICBkb21haW5WYWx1ZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICByZWxhdGlvbjogdW5kZWZpbmVkLFxyXG4gICAgICAgIG11bHRpcGxlOiBmaWVsZC5tdWx0aXBsZSxcclxuICAgICAgICBzdGVwOiBmaWVsZC5zdGVwLFxyXG4gICAgICAgIHRvb2x0aXA6IGZpZWxkLnRvb2x0aXBcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbGlzdCcgfHwgZmllbGQudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcclxuICAgICAgICB0aGlzLmdldERvbWFpblZhbHVlcyhmaWVsZC5yZWxhdGlvbikuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uZG9tYWluVmFsdWVzID0gcmVzdWx0O1xyXG4gICAgICAgICAgY29sdW1uLnJlbGF0aW9uID0gZmllbGQucmVsYXRpb247XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbHVtbjtcclxuICAgIH0pO1xyXG5cclxuICAgIHJlbGF0aW9uc0NvbHVtbiA9IHJlbGF0aW9ucy5tYXAoKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke3JlbGF0aW9uLm5hbWV9YCxcclxuICAgICAgICB0aXRsZTogcmVsYXRpb24uYWxpYXMgPyByZWxhdGlvbi5hbGlhcyA6IHJlbGF0aW9uLm5hbWUsXHJcbiAgICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuSWNvbixcclxuICAgICAgICBpY29uOiByZWxhdGlvbi5pY29uLFxyXG4gICAgICAgIHBhcmVudDogcmVsYXRpb24ucGFyZW50LFxyXG4gICAgICAgIHR5cGU6ICdyZWxhdGlvbicsXHJcbiAgICAgICAgdG9vbHRpcDogcmVsYXRpb24udG9vbHRpcCxcclxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hZGRpbmckLmdldFZhbHVlKCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMud3MkLm5leHQocmVsYXRpb24udGl0bGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2VsbENsYXNzRnVuYzogKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsgJ2NsYXNzX2ljb24nOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XHJcbiAgICBjb2x1bW5zLnB1c2goLi4uYnV0dG9ucyk7XHJcblxyXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgc2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgY29sdW1uc1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpOiBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSB7XHJcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2VGdW5jID0gKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pID0+IHtcclxuICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5pbk1hcEV4dGVudCA9PT0gdHJ1ZSAmJiByZWNvcmQuc3RhdGUuaW5NYXBSZXNvbHV0aW9uID09PSB0cnVlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBuZXcgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3koe2ZpbHRlckNsYXVzZUZ1bmN9IGFzIEVudGl0eVN0b3JlU3RyYXRlZ3lGdW5jT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSkpe1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2UpO1xyXG5cclxuICAgIGxldCB1cmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdlZGl0aW9uLnVybCcpO1xyXG5cclxuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYmFzZVVybCkge1xyXG4gICAgICB1cmwgKz0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmJhc2VVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZlYXR1cmUubmV3RmVhdHVyZSkge1xyXG4gICAgICB1cmwgKz0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmFkZFVybDtcclxuXHJcbiAgICAgIGNvbnN0IGFkZEhlYWRlcnMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYWRkSGVhZGVycztcclxuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyhhZGRIZWFkZXJzKTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UsIHVybCwgaGVhZGVycyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAod29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVByb3RvY29sICE9PSBcInBvc3RcIikge1xyXG4gICAgICAgIHVybCArPSAnPycgKyB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5VXJsICsgZmVhdHVyZS5pZGtleTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB1cmwgKz0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVVybDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcHJvdG9jb2xlID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVByb3RvY29sO1xyXG4gICAgICBjb25zdCBtb2RpZnlIZWFkZXJzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeUhlYWRlcnM7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMobW9kaWZ5SGVhZGVycyk7XHJcblxyXG4gICAgICB0aGlzLm1vZGlmeUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlLCB1cmwsIGhlYWRlcnMsIHByb3RvY29sZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nLCBoZWFkZXJzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xyXG4gICAgLy8gVE9ETzogYWRhcHQgdG8gYW55IGtpbmQgb2YgZ2VvbWV0cnlcclxuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcclxuICAgICAgLy9mZWF0dXJlLnByb3BlcnRpZXNbZ2VvbV0gPSBmZWF0dXJlLmdlb21ldHJ5O1xyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsb25naXR1ZGVcIl0gPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsYXRpdHVkZVwiXSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcclxuICAgICAgZm9yIChjb25zdCBzZiBvZiB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcykge1xyXG4gICAgICAgIGlmICgoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8IChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5zZW5kID09PSBmYWxzZSkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmh0dHAucG9zdChgJHt1cmx9YCwgZmVhdHVyZS5wcm9wZXJ0aWVzLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xyXG4gICAgICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xyXG4gICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5kZWxldGUoZmVhdHVyZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICdpZ28uZ2VvLndvcmtzcGFjZS5hZGRTdWNjZXNzJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xyXG5cclxuICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcclxuICAgICAgICB0aGlzLmFkZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICBsZXQgdGV4dDtcclxuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2gobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICghdGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVGZWF0dXJlKHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgdXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3VybH1gLCB7fSkuc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmRlbGV0ZVN1Y2Nlc3MnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xyXG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2Ygd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5yZWxhdGlvbnMpIHtcclxuICAgICAgICAgIHdvcmtzcGFjZS5tYXAubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGUpIHtcclxuICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbnN0IGdlbmVyaWNFcnJvck1lc3NhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1lc3NhZ2VzO1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0O1xyXG4gICAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKG1lc3NhZ2UgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xyXG4gICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5tZXNzYWdlLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghdGV4dCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoZ2VuZXJpY0Vycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoZ2VuZXJpY0Vycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW9kaWZ5RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nLCBoZWFkZXJzOiB7W2tleTogc3RyaW5nXTogYW55fSwgcHJvdG9jb2xlID0gJ3BhdGNoJyApIHtcclxuICAgIC8vVE9ETzogYWRhcHQgdG8gYW55IGtpbmQgb2YgZ2VvbWV0cnlcclxuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcclxuICAgICAgLy9mZWF0dXJlLnByb3BlcnRpZXNbZ2VvbV0gPSBmZWF0dXJlLmdlb21ldHJ5O1xyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsb25naXR1ZGVcIl0gPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsYXRpdHVkZVwiXSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcclxuICAgICAgZm9yIChjb25zdCBzZiBvZiB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcykge1xyXG4gICAgICAgIGlmICgoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8IChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5zZW5kID09PSBmYWxzZSlcclxuICAgICAgICAgIHx8IHByb3BlcnR5ID09PSAnYm91bmRlZEJ5Jykge1xyXG4gICAgICAgICAgZGVsZXRlIGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaHR0cFtwcm90b2NvbGVdKGAke3VybH1gLCBmZWF0dXJlLnByb3BlcnRpZXMsIHsgaGVhZGVyczogaGVhZGVycyB9KS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlLCB0cnVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLm1vZGlmeVN1Y2Nlc3MnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xyXG5cclxuICAgICAgICBsZXQgcmVsYXRpb25MYXllcnMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMucmVsYXRpb25zKSB7XHJcbiAgICAgICAgICB3b3Jrc3BhY2UubWFwLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAobGF5ZXIudGl0bGUgPT09IHJlbGF0aW9uLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgcmVsYXRpb25MYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vbC5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGF0aW9uTGF5ZXJzJC5uZXh0KHJlbGF0aW9uTGF5ZXJzKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICBsZXQgdGV4dDtcclxuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2gobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICghdGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEVkaXQod29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLCBmZWF0dXJlLCBmcm9tU2F2ZSA9IGZhbHNlKSB7XHJcbiAgICBmZWF0dXJlLmVkaXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xyXG4gICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xyXG5cclxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcclxuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmRlbGV0ZShmZWF0dXJlKTtcclxuICAgICAgd29ya3NwYWNlLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG5cclxuICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghZnJvbVNhdmUpIHtcclxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMgPSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XHJcbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeSA9IGZlYXR1cmUub3JpZ2luYWxfZ2VvbWV0cnk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIGZlYXR1cmUub3JpZ2luYWxfcHJvcGVydGllcztcclxuICAgICAgZGVsZXRlIGZlYXR1cmUub3JpZ2luYWxfZ2VvbWV0cnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREb21haW5WYWx1ZXMocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gcmVsYXRpb24udXJsO1xyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgdXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKSArIHJlbGF0aW9uLnRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKS5waXBlKFxyXG4gICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGVyci5lcnJvci5jYXVnaHQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBSZWZyZXNoIGJvdGggd21zIGFuZCB3ZnMgbGF5ZXJcclxuICAgKiBBIG5ldyB3ZnMgbG9hZGVyIGlzIHVzZWQgdG8gZW5zdXJlIGNhY2hlIGlzIG5vdCByZXRyaWV2aW5nIG9sZCBkYXRhXHJcbiAgICogV01TIHBhcmFtcyBhcmUgdXBkYXRlZCB0byBlbnN1cmUgbGF5ZXIgaXMgY29ycmVjdGx5IHJlZnJlc2hlZFxyXG4gICAqL1xyXG4gIHJlZnJlc2hNYXAobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCkge1xyXG4gICAgY29uc3Qgd2ZzT2xMYXllciA9IGxheWVyLmRhdGFTb3VyY2Uub2w7XHJcbiAgICBjb25zdCBsb2FkZXIgPSAoZXh0ZW50LCByZXNvbHV0aW9uLCBwcm9qLCBzdWNjZXNzLCBmYWlsdXJlKSA9PiB7XHJcbiAgICAgIGxheWVyLmN1c3RvbVdGU0xvYWRlcihcclxuICAgICAgICBsYXllci5vbC5nZXRTb3VyY2UoKSxcclxuICAgICAgICBsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMsXHJcbiAgICAgICAgdGhpcy5hdXRoSW50ZXJjZXB0b3IsXHJcbiAgICAgICAgZXh0ZW50LFxyXG4gICAgICAgIHJlc29sdXRpb24sXHJcbiAgICAgICAgcHJvaixcclxuICAgICAgICBzdWNjZXNzLFxyXG4gICAgICAgIGZhaWx1cmUsXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIHdmc09sTGF5ZXIuc2V0TG9hZGVyKGxvYWRlcik7XHJcbiAgICB3ZnNPbExheWVyLnJlZnJlc2goKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGxheSBvZiBtYXAubGF5ZXJzKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBsYXkuaWQgIT09IGxheWVyLmlkICYmXHJcbiAgICAgICAgbGF5Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQuaW5jbHVkZXMobGF5ZXIuaWQuc3Vic3RyKDAsIGxheWVyLmlkLmluZGV4T2YoJy4nKSAtIDEpKSAmJlxyXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKCdXbXNXb3Jrc3BhY2VUYWJsZVNyYycpXHJcbiAgICAgIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb25zdCB3bXNPbExheWVyID0gbGF5LmRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VJbWFnZVdNUztcclxuICAgICAgICAgIGxldCBwYXJhbXMgPSB3bXNPbExheWVyLmdldFBhcmFtcygpO1xyXG4gICAgICAgICAgcGFyYW1zLl90ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICB3bXNPbExheWVyLnVwZGF0ZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcclxuICAgIGxldCBtZXNzYWdlIDtcclxuICAgIGxldCBrZXk7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZS5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgndmFsaWRhdGlvbicpICYmIGNvbHVtbi52YWxpZGF0aW9uKSB7XHJcbiAgICAgICAga2V5ID0gZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKCBjb2x1bW4udmFsaWRhdGlvbikuZm9yRWFjaCgodHlwZSkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21hbmRhdG9yeSc6IHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnZhbGlkYXRpb25bdHlwZV0gJiYgKCFmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fCAhZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWFuZGF0b3J5JyxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdtaW5WYWx1ZSc6IHtcclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiYgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXSkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5taW5WYWx1ZScsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ21heFZhbHVlJzoge1xyXG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSA+IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1heFZhbHVlJyxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzoge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGZlYXR1cmUucHJvcGVydGllc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXSlcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0ubGVuZ3RoID4gY29sdW1uLnZhbGlkYXRpb25bdHlwZV0pXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG5cclxuICBzYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpc3QnICYmIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldKSB7XHJcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2dldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKV0gPVxyXG4gICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2dldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKV0udG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgaWYgKGNvbHVtbi5pbmNsdWRlcygncHJvcGVydGllcy4nKSkge1xyXG4gICAgcmV0dXJuIGNvbHVtbi5zcGxpdCgnLicpWzFdO1xyXG4gIH1cclxuICByZXR1cm4gY29sdW1uO1xyXG59XHJcbiJdfQ==
|
|
646
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEYsT0FBTyxFQUNMLFdBQVcsRUFFWCxtQ0FBbUMsRUFDbkMsa0NBQWtDLEVBRWxDLHlCQUF5QixFQUVQLE1BQU0sY0FBYyxDQUFDO0FBR3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUUzRixPQUFPLEVBRUwsYUFBYSxFQUNiLFlBQVksRUFDWiwrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQWtELGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs1RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFLL0QsTUFBTSxPQUFPLHVCQUF1QjtJQVlsQyxZQUNVLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzNCLGVBQWlDO1FBUmhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1C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QUM7YUFDTjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQTJCO1FBQ3BELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMvRixPQUFPLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNoRjtRQUVILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEZBbHRCVSx1QkFBdUI7NkVBQXZCLHVCQUF1QixXQUF2Qix1QkFBdUIsbUJBRnRCLE1BQU07dUZBRVAsdUJBQXVCO2NBSG5DLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7QUF1dEJELFNBQVMsZ0NBQWdDLENBQUMsTUFBYztJQUN0RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDbEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdCO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7XG4gIEFjdGlvblN0b3JlLFxuICBFbnRpdHlSZWNvcmQsXG4gIEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5LFxuICBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LFxuICBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnMsXG4gIEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIsXG4gIEVudGl0eVRhYmxlVGVtcGxhdGUsXG4gIEVudGl0eVRhYmxlQnV0dG9ufSBmcm9tICdAaWdvMi9jb21tb24nO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWxhdGlvbk9wdGlvbnMsIFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMsIFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IFdGU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneX0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XG5cbmltcG9ydCB7IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2VMYXllciwgTGF5ZXJTZXJ2aWNlLCBMYXllcnNMaW5rUHJvcGVydGllcywgTGlua2VkUHJvcGVydGllcywgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgeyBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvc3R5bGUuc2VydmljZSc7XG5pbXBvcnQgeyBHZW9Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwJztcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRWRpdGlvbldvcmtzcGFjZSB9IGZyb20gJy4vZWRpdGlvbi13b3Jrc3BhY2UnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWRpdGlvbldvcmtzcGFjZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyB3cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHVibGljIGFkZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlbGF0aW9uTGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW1hZ2VMYXllcltdIHwgVmVjdG9yTGF5ZXJbXT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoSW50ZXJjZXB0b3I/OiBBdXRoSW50ZXJjZXB0b3IpIHsgfVxuXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogSW1hZ2VMYXllciwgbWFwOiBJZ29NYXApOiBFZGl0aW9uV29ya3NwYWNlIHtcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgIT09IHRydWUgfHwgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uZW5hYmxlZCAhPT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgd2tzQ29uZmlnO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZSkge1xuICAgICAgd2tzQ29uZmlnID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdrc0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB3a3NDb25maWcuc3JjSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcud29ya3NwYWNlSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcuZW5hYmxlZCA9IHRydWU7XG4gICAgd2tzQ29uZmlnLnBhZ2VTaXplID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplO1xuICAgIHdrc0NvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemVPcHRpb25zO1xuXG4gICAgY29uc3QgZGF0YVNvdXJjZTogV01TRGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSA7XG4gICAgY29uc3Qgd21zTGlua0lkID0gbGF5ZXIuaWQgKyAnLldtc1dvcmtzcGFjZVRhYmxlU3JjJztcbiAgICBjb25zdCB3ZnNMaW5rSWQgPSBsYXllci5pZCArICcuV2ZzV29ya3NwYWNlVGFibGVEZXN0JztcbiAgICBpZiAoIWxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzKSB7XG4gICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycyA9IHsgbGlua0lkOiB3bXNMaW5rSWQsIGxpbmtzOiBbXSB9O1xuICAgIH1cbiAgICBjb25zdCBsaW5rUHJvcGVydGllcyA9IHtcbiAgICAgIHN5bmNlZERlbGV0ZTogdHJ1ZSxcbiAgICAgIGxpbmtlZElkczogW3dmc0xpbmtJZF0sXG4gICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuWklOREVYLFxuICAgICAgICBMaW5rZWRQcm9wZXJ0aWVzLlZJU0lCTEVdXG4gICAgfSBhcyBMYXllcnNMaW5rUHJvcGVydGllcztcblxuICAgIGlmICghbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/Lm1pblJlc29sdXRpb24pIHtcbiAgICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKTtcbiAgICB9XG4gICAgbGV0IGhhc09nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICBpZiAoKGRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnM/LmVuYWJsZWQpIHtcbiAgICAgIGxpbmtQcm9wZXJ0aWVzLnByb3BlcnRpZXMucHVzaChMaW5rZWRQcm9wZXJ0aWVzLk9HQ0ZJTFRFUlMpO1xuICAgICAgaGFzT2djRmlsdGVycyA9IHRydWU7XG4gICAgfVxuICAgIGlmICghbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/Lm1heFJlc29sdXRpb24pIHtcbiAgICAgIGxpbmtQcm9wZXJ0aWVzLnByb3BlcnRpZXMucHVzaChMaW5rZWRQcm9wZXJ0aWVzLk1BWFJFU09MVVRJT04pO1xuICAgIH1cblxuICAgIGxldCBjbG9uZWRMaW5rczogTGF5ZXJzTGlua1Byb3BlcnRpZXNbXSA9IFtdO1xuICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgY2xvbmVkTGlua3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKSk7XG4gICAgfVxuICAgIGNsb25lZExpbmtzLnB1c2gobGlua1Byb3BlcnRpZXMpO1xuXG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkID8gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkIDogd21zTGlua0lkLFxuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MgPSBjbG9uZWRMaW5rcztcbiAgICBpbnRlcmZhY2UgV0ZTb3B0aW9ucyBleHRlbmRzIFdGU0RhdGFTb3VyY2VPcHRpb25zLCBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgeyB9XG4gICAgbGV0IHdrcztcbiAgICB0aGlzLmxheWVyU2VydmljZVxuICAgICAgLmNyZWF0ZUFzeW5jTGF5ZXIoe1xuICAgICAgICBpZDogd2ZzTGlua0lkLFxuICAgICAgICBsaW5rZWRMYXllcnM6IHtcbiAgICAgICAgICBsaW5rSWQ6IHdmc0xpbmtJZFxuICAgICAgICB9LFxuICAgICAgICB3b3Jrc3BhY2U6IHtcbiAgICAgICAgICBzcmNJZDogbGF5ZXIuaWQsXG4gICAgICAgICAgd29ya3NwYWNlSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1hcFF1ZXJ5T25PcGVuVGFiOiBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucXVlcnlPcHRpb25zPy5tYXBRdWVyeU9uT3BlblRhYixcbiAgICAgICAgICAgIHRhYlF1ZXJ5OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFnZVNpemU6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZSxcbiAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZU9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICBtaW5SZXNvbHV0aW9uOiBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWluUmVzb2x1dGlvbiB8fCBsYXllci5taW5SZXNvbHV0aW9uIHx8IDAsXG4gICAgICAgIG1heFJlc29sdXRpb246IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5tYXhSZXNvbHV0aW9uIHx8IGxheWVyLm1heFJlc29sdXRpb24gfHwgSW5maW5pdHksXG4gICAgICAgIHN0eWxlOiB0aGlzLnN0eWxlU2VydmljZS5jcmVhdGVTdHlsZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDEpXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJva2U6IHtcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSlcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNpcmNsZToge1xuICAgICAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN0cm9rZToge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSlcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByYWRpdXM6IDVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzb3VyY2VPcHRpb25zOiB7XG4gICAgICAgICAgZG93bmxvYWQ6IGRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCxcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcbiAgICAgICAgICB1cmw6IGRhdGFTb3VyY2Uub3B0aW9ucy51cmxXZnMgfHwgZGF0YVNvdXJjZS5vcHRpb25zLnVybCxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWUsXG4gICAgICAgICAgcmVsYXRpb25zOiBkYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zLFxuICAgICAgICAgIHF1ZXJ5VGl0bGU6IChkYXRhU291cmNlLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLnF1ZXJ5VGl0bGUsXG4gICAgICAgICAgcGFyYW1zOiBkYXRhU291cmNlLm9wdGlvbnMucGFyYW1zV0ZTLFxuICAgICAgICAgIG9nY0ZpbHRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRhdGFTb3VyY2Uub2djRmlsdGVycywge2VuYWJsZWQ6IGhhc09nY0ZpbHRlcnN9KSxcbiAgICAgICAgICBzb3VyY2VGaWVsZHM6IGRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGVkaXRpb246IGRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uXG4gICAgICAgIH0gYXMgV0ZTb3B0aW9uc1xuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHdvcmtzcGFjZUxheWVyOiBWZWN0b3JMYXllcikgPT4ge1xuICAgICAgICBtYXAuYWRkTGF5ZXIod29ya3NwYWNlTGF5ZXIpO1xuICAgICAgICBsYXllci5vbC5zZXRQcm9wZXJ0aWVzKHsgbGlua2VkTGF5ZXJzOiB7IGxpbmtJZDogbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkLCBsaW5rczogY2xvbmVkTGlua3MgfSB9LCBmYWxzZSk7XG4gICAgICAgIHdvcmtzcGFjZUxheWVyLmRhdGFTb3VyY2Uub2wucmVmcmVzaCgpO1xuXG4gICAgICAgIHdrcyA9IG5ldyBFZGl0aW9uV29ya3NwYWNlKHtcbiAgICAgICAgICBpZDogbGF5ZXIuaWQsXG4gICAgICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICAgIGxheWVyOiB3b3Jrc3BhY2VMYXllcixcbiAgICAgICAgICBtYXAsXG4gICAgICAgICAgZW50aXR5U3RvcmU6IHRoaXMuY3JlYXRlRmVhdHVyZVN0b3JlKHdvcmtzcGFjZUxheWVyLCBtYXApLFxuICAgICAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxuICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGU6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgdGhpcywgdGhpcy5kaWFsb2csIHRoaXMuY29uZmlnU2VydmljZSk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGFibGVUZW1wbGF0ZSh3a3MsIHdvcmtzcGFjZUxheWVyKTtcblxuICAgICAgICB3b3Jrc3BhY2VMYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZCA9IHdvcmtzcGFjZUxheWVyLmlkO1xuICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdrc0NvbmZpZ1xuICAgICAgICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XG5cbiAgICAgICAgZGVsZXRlIGRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZDtcbiAgICAgICAgcmV0dXJuIHdrcztcblxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gd2tzO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IEZlYXR1cmVTdG9yZSB7XG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7IG1hcCB9KTtcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xuXG4gICAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBpbk1hcEV4dGVudFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IGluTWFwUmVzb2x1dGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBzZWxlY3RlZFJlY29yZFN0cmF0ZWd5ID0gbmV3IEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICB6SW5kZXg6IDMwMCxcbiAgICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcbiAgICAgICAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGJyb3dzYWJsZTogZmFsc2VcbiAgICAgIH0pLFxuICAgICAgbWFwLFxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcbiAgICAgIG1vdGlvbjogdGhpcy56b29tQXV0byA/IEZlYXR1cmVNb3Rpb24uRGVmYXVsdCA6IEZlYXR1cmVNb3Rpb24uTm9uZSxcbiAgICAgIG1hbnk6IHRydWUsXG4gICAgICBkcmFnQm94OiB0cnVlXG4gICAgfSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kobG9hZGluZ1N0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcEV4dGVudFN0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcFJlc29sdXRpb25TdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3ksIGZhbHNlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneSh0aGlzLmNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3koKSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZVRlbXBsYXRlKHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgbGF5ZXI6IFZlY3RvckxheWVyKTogRW50aXR5VGFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3QgZmllbGRzID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcyB8fCBbXTtcblxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5yZWxhdGlvbnMgfHwgW107XG5cbiAgICBsZXQgcmVuZGVyZXJUeXBlID0gRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUw7XG4gICAgbGV0IGJ1dHRvbnMgPSBbXTtcbiAgICBsZXQgY29sdW1ucyA9IFtdO1xuICAgIGxldCByZWxhdGlvbnNDb2x1bW4gPSBbXTtcblxuICAgIGJ1dHRvbnMgPSBbe1xuICAgICAgbmFtZTogJ2VkaXRpb24nLFxuICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwLFxuICAgICAgcHJpbWFyeTogZmFsc2UsXG4gICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBbe1xuICAgICAgICAgIGVkaXRNb2RlOiBmYWxzZSxcbiAgICAgICAgICBpY29uOiAncGVuY2lsJyxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIGRpc2FibGVkOiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlCdXR0b24gPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4geyB3b3Jrc3BhY2UuZWRpdEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKTsgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZWRpdE1vZGU6IGZhbHNlLFxuICAgICAgICAgIGljb246ICdkZWxldGUnLFxuICAgICAgICAgIGNvbG9yOiAnd2FybicsXG4gICAgICAgICAgZGlzYWJsZWQ6IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmRlbGV0ZUJ1dHRvbiA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7IHdvcmtzcGFjZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7IH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgIGljb246ICdjaGVjaycsXG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4geyB0aGlzLnNhdmVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7IH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgIGljb246ICdhbHBoYS14JyxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmxvYWRpbmcsXG4gICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7IHRoaXMuY2FuY2VsRWRpdCh3b3Jrc3BhY2UsIGZlYXR1cmUpOyB9XG4gICAgICAgIH1dIGFzIEVudGl0eVRhYmxlQnV0dG9uW107XG4gICAgICB9XG4gICAgfV07XG5cblxuICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZW50aXRpZXMkLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZSh2YWwgPT4gdmFsLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgICkuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcbiAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xuICAgICAgICBjb25zdCBjb2x1bW5zRnJvbUZlYXR1cmVzID0gb2wuZ2V0S2V5cygpXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIGNvbCA9PiAhY29sLnN0YXJ0c1dpdGgoJ18nKSAmJlxuICAgICAgICAgICAgICBjb2wgIT09ICdnZW9tZXRyeScgJiZcbiAgICAgICAgICAgICAgY29sICE9PSBvbC5nZXRHZW9tZXRyeU5hbWUoKSAmJlxuICAgICAgICAgICAgICAhY29sLm1hdGNoKC9ib3VuZGVkYnkvZ2kpKVxuICAgICAgICAgIC5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7a2V5fWAsXG4gICAgICAgICAgICAgIHRpdGxlOiBrZXksXG4gICAgICAgICAgICAgIHJlbmRlcmVyOiByZW5kZXJlclR5cGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgICAgIHNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgc29ydDogdHJ1ZSxcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zRnJvbUZlYXR1cmVzXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb2x1bW5zID0gZmllbGRzLm1hcCgoZmllbGQ6IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMpID0+IHtcblxuICAgICAgbGV0IGNvbHVtbiA9IHtcbiAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtmaWVsZC5uYW1lfWAsXG4gICAgICAgIHRpdGxlOiBmaWVsZC5hbGlhcyA/IGZpZWxkLmFsaWFzIDogZmllbGQubmFtZSxcbiAgICAgICAgcmVuZGVyZXI6IHJlbmRlcmVyVHlwZSxcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogdW5kZWZpbmVkLFxuICAgICAgICBjZWxsQ2xhc3NGdW5jOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2VsbENsYXNzID0ge307XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIGNlbGxDbGFzc1tgY2xhc3NfJHtmaWVsZC50eXBlfWBdID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBjZWxsQ2xhc3M7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcmltYXJ5OiBmaWVsZC5wcmltYXJ5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlLFxuICAgICAgICB2YWxpZGF0aW9uOiBmaWVsZC52YWxpZGF0aW9uLFxuICAgICAgICBsaW5rQ29sdW1uRm9yY2U6IGZpZWxkLmxpbmtDb2x1bW5Gb3JjZSxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgZG9tYWluVmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICAgIHJlbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG11bHRpcGxlOiBmaWVsZC5tdWx0aXBsZSxcbiAgICAgICAgc3RlcDogZmllbGQuc3RlcCxcbiAgICAgICAgdG9vbHRpcDogZmllbGQudG9vbHRpcFxuICAgICAgfTtcblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdsaXN0JyB8fCBmaWVsZC50eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICB0aGlzLmdldERvbWFpblZhbHVlcyhmaWVsZC5yZWxhdGlvbikuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgY29sdW1uLmRvbWFpblZhbHVlcyA9IHJlc3VsdDtcbiAgICAgICAgICBjb2x1bW4ucmVsYXRpb24gPSBmaWVsZC5yZWxhdGlvbjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uO1xuICAgIH0pO1xuXG4gICAgcmVsYXRpb25zQ29sdW1uID0gcmVsYXRpb25zLm1hcCgocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtyZWxhdGlvbi5uYW1lfWAsXG4gICAgICAgIHRpdGxlOiByZWxhdGlvbi5hbGlhcyA/IHJlbGF0aW9uLmFsaWFzIDogcmVsYXRpb24ubmFtZSxcbiAgICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuSWNvbixcbiAgICAgICAgaWNvbjogcmVsYXRpb24uaWNvbixcbiAgICAgICAgcGFyZW50OiByZWxhdGlvbi5wYXJlbnQsXG4gICAgICAgIHR5cGU6ICdyZWxhdGlvbicsXG4gICAgICAgIHRvb2x0aXA6IHJlbGF0aW9uLnRvb2x0aXAsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5hZGRpbmckLmdldFZhbHVlKCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLndzJC5uZXh0KHJlbGF0aW9uLnRpdGxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAnY2xhc3NfaWNvbic6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbHVtbnMucHVzaCguLi5yZWxhdGlvbnNDb2x1bW4pO1xuICAgIGNvbHVtbnMucHVzaCguLi5idXR0b25zKTtcblxuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUgPSB7XG4gICAgICBzZWxlY3Rpb246IGZhbHNlLFxuICAgICAgc29ydDogdHJ1ZSxcbiAgICAgIGNvbHVtbnNcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCk6IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5IHtcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2VGdW5jID0gKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pID0+IHtcbiAgICAgIHJldHVybiByZWNvcmQuc3RhdGUuaW5NYXBFeHRlbnQgPT09IHRydWUgJiYgcmVjb3JkLnN0YXRlLmluTWFwUmVzb2x1dGlvbiA9PT0gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3koe2ZpbHRlckNsYXVzZUZ1bmN9IGFzIEVudGl0eVN0b3JlU3RyYXRlZ3lGdW5jT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpKXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnNhbml0aXplUGFyYW1ldGVyKGZlYXR1cmUsIHdvcmtzcGFjZSk7XG5cbiAgICBjb25zdCBiYXNlVXJsID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmJhc2VVcmw7XG4gICAgbGV0IHVybCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJyk7XG5cbiAgICBpZiAoIXVybCkge1xuICAgICAgdXJsID0gYmFzZVVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsICs9IGJhc2VVcmwgPyBiYXNlVXJsIDogJyc7XG4gICAgfVxuXG4gICAgaWYgKGZlYXR1cmUubmV3RmVhdHVyZSkge1xuICAgICAgdXJsICs9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5hZGRVcmw7XG5cbiAgICAgIGNvbnN0IGFkZEhlYWRlcnMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYWRkSGVhZGVycztcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoYWRkSGVhZGVycyk7XG5cbiAgICAgIHRoaXMuYWRkRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UsIHVybCwgaGVhZGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5UHJvdG9jb2wgIT09IFwicG9zdFwiKSB7XG4gICAgICAgIHVybCArPSAnPycgKyB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5VXJsICsgZmVhdHVyZS5pZGtleTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB1cmwgKz0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVVybDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvdG9jb2xlID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVByb3RvY29sO1xuICAgICAgY29uc3QgbW9kaWZ5SGVhZGVycyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlIZWFkZXJzO1xuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyhtb2RpZnlIZWFkZXJzKTtcblxuICAgICAgdGhpcy5tb2RpZnlGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSwgdXJsLCBoZWFkZXJzLCBwcm90b2NvbGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgdXJsOiBzdHJpbmcsIGhlYWRlcnM6IHtba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gICAgLy8gVE9ETzogYWRhcHQgdG8gYW55IGtpbmQgb2YgZ2VvbWV0cnlcbiAgICBpZiAod29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmhhc0dlb21ldHJ5KSB7XG4gICAgICAvL2ZlYXR1cmUucHJvcGVydGllc1tnZW9tXSA9IGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsb25naXR1ZGVcIl0gPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW1wibGF0aXR1ZGVcIl0gPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmVhdHVyZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XG4gICAgICAgIGlmICgoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8IChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5zZW5kID09PSBmYWxzZSkpIHtcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5odHRwLnBvc3QoYCR7dXJsfWAsIGZlYXR1cmUucHJvcGVydGllcywgeyBoZWFkZXJzOiBoZWFkZXJzIH0pLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcbiAgICAgICAgd29ya3NwYWNlLmRlbGV0ZURyYXdpbmdzKCk7XG4gICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5kZWxldGUoZmVhdHVyZSk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLndvcmtzcGFjZS5hZGRTdWNjZXNzJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFwKHdvcmtzcGFjZS5sYXllciBhcyBWZWN0b3JMYXllciwgd29ya3NwYWNlLmxheWVyLm1hcCk7XG4gICAgICAgIHRoaXMuYWRkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICBjb25zdCBnZW5lcmljRXJyb3JNZXNzYWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgbGV0IHRleHQ7XG4gICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaChtZXNzYWdlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICB0ZXh0ID0gbWVzc2FnZVtrZXldO1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihnZW5lcmljRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihnZW5lcmljRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRmVhdHVyZSh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3VybH1gLCB7fSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLndvcmtzcGFjZS5kZWxldGVTdWNjZXNzJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFwKHdvcmtzcGFjZS5sYXllciBhcyBWZWN0b3JMYXllciwgd29ya3NwYWNlLmxheWVyLm1hcCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2Ygd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5yZWxhdGlvbnMpIHtcbiAgICAgICAgICB3b3Jrc3BhY2UubWFwLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICAgICAgaWYgKGxheWVyLnRpdGxlID09PSByZWxhdGlvbi50aXRsZSkge1xuICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XG4gICAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgICBsZXQgdGV4dDtcbiAgICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2gobWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xuICAgICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGdlbmVyaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1vZGlmeUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLCB1cmw6IHN0cmluZywgaGVhZGVyczoge1trZXk6IHN0cmluZ106IGFueX0sIHByb3RvY29sZSA9ICdwYXRjaCcgKSB7XG4gICAgLy9UT0RPOiBhZGFwdCB0byBhbnkga2luZCBvZiBnZW9tZXRyeVxuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcbiAgICAgIC8vZmVhdHVyZS5wcm9wZXJ0aWVzW2dlb21dID0gZmVhdHVyZS5nZW9tZXRyeTtcbiAgICAgIGZlYXR1cmUucHJvcGVydGllc1tcImxvbmdpdHVkZVwiXSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXCJsYXRpdHVkZVwiXSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2Ygd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5yZWFkb25seSkgfHwgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnNlbmQgPT09IGZhbHNlKVxuICAgICAgICAgIHx8IHByb3BlcnR5ID09PSAnYm91bmRlZEJ5Jykge1xuICAgICAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHBbcHJvdG9jb2xlXShgJHt1cmx9YCwgZmVhdHVyZS5wcm9wZXJ0aWVzLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0KHdvcmtzcGFjZSwgZmVhdHVyZSwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLndvcmtzcGFjZS5tb2RpZnlTdWNjZXNzJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFwKHdvcmtzcGFjZS5sYXllciBhcyBWZWN0b3JMYXllciwgd29ya3NwYWNlLmxheWVyLm1hcCk7XG5cbiAgICAgICAgbGV0IHJlbGF0aW9uTGF5ZXJzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2Ygd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5yZWxhdGlvbnMpIHtcbiAgICAgICAgICB3b3Jrc3BhY2UubWFwLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICAgICAgaWYgKGxheWVyLnRpdGxlID09PSByZWxhdGlvbi50aXRsZSkge1xuICAgICAgICAgICAgICByZWxhdGlvbkxheWVycy5wdXNoKGxheWVyKTtcbiAgICAgICAgICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vbC5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWxhdGlvbkxheWVycyQubmV4dChyZWxhdGlvbkxheWVycyk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XG4gICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgIGxldCB0ZXh0O1xuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2gobWVzc2FnZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhtZXNzYWdlKVswXTtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5tZXNzYWdlLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcih0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoZ2VuZXJpY0Vycm9yTWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoZ2VuZXJpY0Vycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY2FuY2VsRWRpdCh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIGZlYXR1cmUsIGZyb21TYXZlID0gZmFsc2UpIHtcbiAgICBmZWF0dXJlLmVkaXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmFkZGluZyQubmV4dChmYWxzZSk7XG4gICAgd29ya3NwYWNlLmRlbGV0ZURyYXdpbmdzKCk7XG4gICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xuXG4gICAgaWYgKGZlYXR1cmUubmV3RmVhdHVyZSkge1xuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmRlbGV0ZShmZWF0dXJlKTtcbiAgICAgIHdvcmtzcGFjZS5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcblxuICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmcm9tU2F2ZSkge1xuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMgPSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XG4gICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBmZWF0dXJlLm9yaWdpbmFsX2dlb21ldHJ5O1xuICAgICAgfVxuICAgICAgZGVsZXRlIGZlYXR1cmUub3JpZ2luYWxfcHJvcGVydGllcztcbiAgICAgIGRlbGV0ZSBmZWF0dXJlLm9yaWdpbmFsX2dlb21ldHJ5O1xuICAgIH1cbiAgfVxuXG4gIGdldERvbWFpblZhbHVlcyhyZWxhdGlvbjogUmVsYXRpb25PcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgdXJsID0gcmVsYXRpb24udXJsO1xuICAgIGlmICghdXJsKSB7XG4gICAgICB1cmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdlZGl0aW9uLnVybCcpID9cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKSArIHJlbGF0aW9uLnRhYmxlIDogcmVsYXRpb24udGFibGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlZnJlc2ggYm90aCB3bXMgYW5kIHdmcyBsYXllclxuICAgKiBBIG5ldyB3ZnMgbG9hZGVyIGlzIHVzZWQgdG8gZW5zdXJlIGNhY2hlIGlzIG5vdCByZXRyaWV2aW5nIG9sZCBkYXRhXG4gICAqIFdNUyBwYXJhbXMgYXJlIHVwZGF0ZWQgdG8gZW5zdXJlIGxheWVyIGlzIGNvcnJlY3RseSByZWZyZXNoZWRcbiAgICovXG4gIHJlZnJlc2hNYXAobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCkge1xuICAgIGNvbnN0IHdmc09sTGF5ZXIgPSBsYXllci5kYXRhU291cmNlLm9sO1xuICAgIGNvbnN0IGxvYWRlciA9IChleHRlbnQsIHJlc29sdXRpb24sIHByb2osIHN1Y2Nlc3MsIGZhaWx1cmUpID0+IHtcbiAgICAgIGxheWVyLmN1c3RvbVdGU0xvYWRlcihcbiAgICAgICAgbGF5ZXIub2wuZ2V0U291cmNlKCksXG4gICAgICAgIGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucyxcbiAgICAgICAgdGhpcy5hdXRoSW50ZXJjZXB0b3IsXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgcHJvaixcbiAgICAgICAgc3VjY2VzcyxcbiAgICAgICAgZmFpbHVyZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9O1xuICAgIHdmc09sTGF5ZXIuc2V0TG9hZGVyKGxvYWRlcik7XG4gICAgd2ZzT2xMYXllci5yZWZyZXNoKCk7XG5cbiAgICBmb3IgKGNvbnN0IGxheSBvZiBtYXAubGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxheS5pZCAhPT0gbGF5ZXIuaWQgJiZcbiAgICAgICAgbGF5Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQuaW5jbHVkZXMobGF5ZXIuaWQuc3Vic3RyKDAsIGxheWVyLmlkLmluZGV4T2YoJy4nKSAtIDEpKSAmJlxuICAgICAgICBsYXkub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZC5pbmNsdWRlcygnV21zV29ya3NwYWNlVGFibGVTcmMnKVxuICAgICAgKVxuICAgICAgICB7XG4gICAgICAgICAgY29uc3Qgd21zT2xMYXllciA9IGxheS5kYXRhU291cmNlLm9sIGFzIG9sU291cmNlSW1hZ2VXTVM7XG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHdtc09sTGF5ZXIuZ2V0UGFyYW1zKCk7XG4gICAgICAgICAgcGFyYW1zLl90ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgd21zT2xMYXllci51cGRhdGVQYXJhbXMocGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcbiAgICBjb25zdCB0cmFuc2xhdGUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGU7XG4gICAgbGV0IG1lc3NhZ2UgO1xuICAgIGxldCBrZXk7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgndmFsaWRhdGlvbicpICYmIGNvbHVtbi52YWxpZGF0aW9uKSB7XG4gICAgICAgIGtleSA9IGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKTtcbiAgICAgICAgT2JqZWN0LmtleXMoIGNvbHVtbi52YWxpZGF0aW9uKS5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdtYW5kYXRvcnknOiB7XG4gICAgICAgICAgICAgIGlmIChjb2x1bW4udmFsaWRhdGlvblt0eXBlXSAmJiAoIWZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8ICFmZWF0dXJlLnByb3BlcnRpZXNba2V5XSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1hbmRhdG9yeScsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWluVmFsdWUnOiB7XG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSA8IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWluVmFsdWUnLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWF4VmFsdWUnOiB7XG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSA+IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4VmFsdWUnLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzoge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXSlcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1pbkxlbmd0aCcsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtYXhMZW5ndGgnOiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldLmxlbmd0aCA+IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4TGVuZ3RoJyxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBzYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcbiAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGlzdCcgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzW2dldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKV0pIHtcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2dldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKV0gPVxuICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxuXG59XG5cbmZ1bmN0aW9uIGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbjogc3RyaW5nKSB7XG4gIGlmIChjb2x1bW4uaW5jbHVkZXMoJ3Byb3BlcnRpZXMuJykpIHtcbiAgICByZXR1cm4gY29sdW1uLnNwbGl0KCcuJylbMV07XG4gIH1cbiAgcmV0dXJuIGNvbHVtbjtcbn1cbiJdfQ==
|
|
@@ -32,4 +32,4 @@ export class FeatureWorkspace extends Workspace {
|
|
|
32
32
|
return this.inResolutionRange$.value;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi93b3Jrc3BhY2Uvc2hhcmVkL2ZlYXR1cmUtd29ya3NwYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVYsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVV2QyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQVE3QyxZQUFzQixPQUFnQztRQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQU43Qyx1QkFBa0IsR0FBNkIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFRaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzlELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDeEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBYkQsSUFBSSxLQUFLLEtBQWtCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXZELElBQUksR0FBRyxLQUFhLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBYXZDLHlCQUF5QjtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNyRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0seUJBQXlCO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsS0FBSyxTQUFTLEVBQUU7WUFDOUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1NBQ3BFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBXb3Jrc3BhY2UsXG4gIFdvcmtzcGFjZU9wdGlvbnNcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdvcmtzcGFjZU9wdGlvbnMgZXh0ZW5kcyBXb3Jrc3BhY2VPcHRpb25zIHtcbiAgbGF5ZXI6IFZlY3RvckxheWVyO1xuICBtYXA6IElnb01hcDtcbn1cblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVXb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2Uge1xuXG4gIHJlYWRvbmx5IGluUmVzb2x1dGlvblJhbmdlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBnZXQgbGF5ZXIoKTogVmVjdG9yTGF5ZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLmxheWVyOyB9XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAgeyByZXR1cm4gdGhpcy5vcHRpb25zLm1hcDsgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBGZWF0dXJlV29ya3NwYWNlT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnN1YnNjcmliZSgobWFwUmVzb2x1dGlvbikgPT4ge1xuICAgICAgaWYgKG1hcFJlc29sdXRpb24gPiB0aGlzLmxheWVyLm1pblJlc29sdXRpb24gJiYgbWFwUmVzb2x1dGlvbiA8IHRoaXMubGF5ZXIubWF4UmVzb2x1dGlvbikge1xuICAgICAgICB0aGlzLmluUmVzb2x1dGlvblJhbmdlJC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGF5ZXJXa3NPcHRpb25UYWJRdWVyeSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5sYXllci5vcHRpb25zLndvcmtzcGFjZS5xdWVyeU9wdGlvbnM/LnRhYlF1ZXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyLm9wdGlvbnMud29ya3NwYWNlLnF1ZXJ5T3B0aW9ucy50YWJRdWVyeTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGF5ZXJXa3NPcHRpb25NYXBRdWVyeSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5sYXllci5vcHRpb25zLndvcmtzcGFjZS5xdWVyeU9wdGlvbnM/Lm1hcFF1ZXJ5T25PcGVuVGFiICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyLm9wdGlvbnMud29ya3NwYWNlLnF1ZXJ5T3B0aW9ucy5tYXBRdWVyeU9uT3BlblRhYjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldEluUmVzb2x1dGlvblJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluUmVzb2x1dGlvblJhbmdlJC52YWx1ZTtcbiAgfVxufVxuIl19
|
|
@@ -147,4 +147,4 @@ FeatureWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
|
|
|
147
147
|
providedIn: 'root'
|
|
148
148
|
}]
|
|
149
149
|
}], function () { return [{ type: i1.StorageService }, { type: i1.ConfigService }]; }, null); })();
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUNMLFdBQVcsRUFFWCxtQ0FBbUMsRUFHbkMsa0NBQWtDLEVBQ2xDLHlCQUF5QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsWUFBWSxFQUNaLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsK0JBQStCLEVBRS9CLGFBQWEsRUFDYixtQ0FBbUMsRUFDcEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEVBQTZCLGlCQUFpQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFTakQsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxZQUFvQixjQUE4QixFQUFVLGFBQTRCO1FBQXBFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRmpGLFFBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUV1QyxDQUFDO0lBTjVGLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENB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UUFBUSxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRU8sMkNBQTJDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxFQUFDLGdCQUFnQixFQUFtQyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs7OEZBbkpVLHVCQUF1Qjs2RUFBdkIsdUJBQXVCLFdBQXZCLHVCQUF1QixtQkFGdEIsTUFBTTt1RkFFUCx1QkFBdUI7Y0FIbkMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBBY3Rpb25TdG9yZSxcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxyXG4gIEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5LFxyXG4gIEVudGl0eVJlY29yZCxcclxuICBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnMsXHJcbiAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSxcclxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyXHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3ksXHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xyXG5pbXBvcnQgeyBHZW9Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xyXG5pbXBvcnQgeyBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLCBGZWF0dXJlRGF0YVNvdXJjZSwgUmVsYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGV9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVXb3Jrc3BhY2UgfSBmcm9tICcuL2ZlYXR1cmUtd29ya3NwYWNlJztcclxuaW1wb3J0IHsgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVXb3Jrc3BhY2VTZXJ2aWNlIHtcclxuXHJcbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHt9XHJcblxyXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogVmVjdG9yTGF5ZXIsIG1hcDogSWdvTWFwKTogRmVhdHVyZVdvcmtzcGFjZSB7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgPT09IGZhbHNlIHx8IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICAgIHdvcmtzcGFjZUlkOiBsYXllci5pZCxcclxuICAgICAgICBlbmFibGVkOiB0cnVlXHJcbiAgICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XHJcblxyXG5cclxuICAgIGNvbnN0IHdrcyA9IG5ldyBGZWF0dXJlV29ya3NwYWNlKHtcclxuICAgICAgaWQ6IGxheWVyLmlkLFxyXG4gICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXHJcbiAgICAgIGxheWVyLFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGVudGl0eVN0b3JlOiB0aGlzLmNyZWF0ZUZlYXR1cmVTdG9yZShsYXllciwgbWFwKSxcclxuICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICB0YWJsZVRlbXBsYXRlOiB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNyZWF0ZVRhYmxlVGVtcGxhdGUod2tzLCBsYXllcik7XHJcbiAgICByZXR1cm4gd2tzO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7bWFwfSk7XHJcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBpbk1hcEV4dGVudFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGNvbmZRdWVyeU92ZXJsYXlTdHlsZT0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgIHpJbmRleDogMzAwLFxyXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgICAgc3R5bGU6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShPYmplY3QuYXNzaWduKHt9LCB7ZmVhdHVyZX0sIGNvbmZRdWVyeU92ZXJsYXlTdHlsZS5zZWxlY3Rpb24gfHwge30pKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDE1LFxyXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXHJcbiAgICAgIG1hbnk6IHRydWUsXHJcbiAgICAgIGRyYWdCb3g6IHRydWVcclxuICAgIH0pO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kobG9hZGluZ1N0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGluTWFwRXh0ZW50U3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kodGhpcy5jcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZVRlbXBsYXRlKHdvcmtzcGFjZTogRmVhdHVyZVdvcmtzcGFjZSwgbGF5ZXI6IFZlY3RvckxheWVyKTogRW50aXR5VGFibGVUZW1wbGF0ZSB7XHJcbiAgICBjb25zdCBmaWVsZHMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IFtdO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5yZWxhdGlvbnMgfHwgW107XHJcblxyXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmVudGl0aWVzJC5waXBlKFxyXG4gICAgICAgIHNraXBXaGlsZSh2YWwgPT4gdmFsLmxlbmd0aCA9PT0gMCksXHJcbiAgICAgICAgdGFrZSgxKVxyXG4gICAgICApLnN1YnNjcmliZShlbnRpdGllcyA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbnNGcm9tRmVhdHVyZXMgPSBvbC5nZXRLZXlzKClcclxuICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgY29sID0+ICFjb2wuc3RhcnRzV2l0aCgnXycpICYmXHJcbiAgICAgICAgICBjb2wgIT09ICdnZW9tZXRyeScgJiZcclxuICAgICAgICAgIGNvbCAhPT0gb2wuZ2V0R2VvbWV0cnlOYW1lKCkgJiZcclxuICAgICAgICAgICFjb2wubWF0Y2goL2JvdW5kZWRieS9naSkpXHJcbiAgICAgICAgLm1hcChrZXkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtrZXl9YCxcclxuICAgICAgICAgICAgdGl0bGU6IGtleSxcclxuICAgICAgICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUgPSB7XHJcbiAgICAgICAgICBzZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICAgICAgY29sdW1uczogY29sdW1uc0Zyb21GZWF0dXJlc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLm1hcCgoZmllbGQ6IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2ZpZWxkLm5hbWV9YCxcclxuICAgICAgICB0aXRsZTogZmllbGQuYWxpYXMgPyBmaWVsZC5hbGlhcyA6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MLFxyXG4gICAgICAgIHRvb2x0aXA6IGZpZWxkLnRvb2x0aXBcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0aW9uc0NvbHVtbiA9IHJlbGF0aW9ucy5tYXAoKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke3JlbGF0aW9uLm5hbWV9YCxcclxuICAgICAgICB0aXRsZTogcmVsYXRpb24uYWxpYXMgPyByZWxhdGlvbi5hbGlhcyA6IHJlbGF0aW9uLm5hbWUsXHJcbiAgICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuSWNvbixcclxuICAgICAgICBpY29uOiByZWxhdGlvbi5pY29uLFxyXG4gICAgICAgIHBhcmVudDogcmVsYXRpb24ucGFyZW50LFxyXG4gICAgICAgIHR5cGU6ICdyZWxhdGlvbicsXHJcbiAgICAgICAgdG9vbHRpcDogcmVsYXRpb24udG9vbHRpcCxcclxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud3MkLm5leHQocmVsYXRpb24udGl0bGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2VsbENsYXNzRnVuYzogKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsgJ2NsYXNzX2ljb24nOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XHJcbiAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xyXG4gICAgICBzZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgIGNvbHVtbnNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3koKTogRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3kge1xyXG4gICAgY29uc3QgZmlsdGVyQ2xhdXNlRnVuYyA9IChyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB7XHJcbiAgICAgIHJldHVybiByZWNvcmQuc3RhdGUuaW5NYXBFeHRlbnQgPT09IHRydWUgJiYgcmVjb3JkLnN0YXRlLmluTWFwUmVzb2x1dGlvbiA9PT0gdHJ1ZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gbmV3IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5KHtmaWx0ZXJDbGF1c2VGdW5jfSBhcyBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUNMLFdBQVcsRUFFWCxtQ0FBbUMsRUFHbkMsa0NBQWtDLEVBQ2xDLHlCQUF5QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsWUFBWSxFQUNaLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsK0JBQStCLEVBRS9CLGFBQWEsRUFDYixtQ0FBbUMsRUFDcEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEVBQTZCLGlCQUFpQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFTakQsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxZQUFvQixjQUE4QixFQUFVLGFBQTRCO1FBQXBFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRmpGLFFBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUV1QyxDQUFDO0lBTjVGLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENB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UUFBUSxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRU8sMkNBQTJDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxFQUFDLGdCQUFnQixFQUFtQyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs7OEZBbkpVLHVCQUF1Qjs2RUFBdkIsdUJBQXVCLFdBQXZCLHVCQUF1QixtQkFGdEIsTUFBTTt1RkFFUCx1QkFBdUI7Y0FIbkMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBY3Rpb25TdG9yZSxcbiAgRW50aXR5VGFibGVUZW1wbGF0ZSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXG4gIEVudGl0eVJlY29yZCxcbiAgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zLFxuICBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LFxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5LFxuICBGZWF0dXJlLFxuICBGZWF0dXJlTW90aW9uLFxuICBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneVxufSBmcm9tICcuLi8uLi9mZWF0dXJlJztcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHsgR2VvV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvbGF5ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XG5pbXBvcnQgeyBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLCBGZWF0dXJlRGF0YVNvdXJjZSwgUmVsYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7IEZlYXR1cmVXb3Jrc3BhY2UgfSBmcm9tICcuL2ZlYXR1cmUtd29ya3NwYWNlJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5cbmltcG9ydCBvbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlV29ya3NwYWNlU2VydmljZSB7XG5cbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuO1xuICB9XG5cbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgY3JlYXRlV29ya3NwYWNlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlV29ya3NwYWNlIHtcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgPT09IGZhbHNlIHx8IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UgPSBPYmplY3QuYXNzaWduKHt9LCBsYXllci5vcHRpb25zLndvcmtzcGFjZSxcbiAgICAgIHtcbiAgICAgICAgc3JjSWQ6IGxheWVyLmlkLFxuICAgICAgICB3b3Jrc3BhY2VJZDogbGF5ZXIuaWQsXG4gICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XG5cblxuICAgIGNvbnN0IHdrcyA9IG5ldyBGZWF0dXJlV29ya3NwYWNlKHtcbiAgICAgIGlkOiBsYXllci5pZCxcbiAgICAgIHRpdGxlOiBsYXllci50aXRsZSxcbiAgICAgIGxheWVyLFxuICAgICAgbWFwLFxuICAgICAgZW50aXR5U3RvcmU6IHRoaXMuY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyLCBtYXApLFxuICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHRhYmxlVGVtcGxhdGU6IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3JlYXRlVGFibGVUZW1wbGF0ZSh3a3MsIGxheWVyKTtcbiAgICByZXR1cm4gd2tzO1xuXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVTdG9yZShsYXllcjogVmVjdG9yTGF5ZXIsIG1hcDogSWdvTWFwKTogRmVhdHVyZVN0b3JlIHtcbiAgICBjb25zdCBzdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmUoW10sIHttYXB9KTtcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xuXG4gICAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBpbk1hcEV4dGVudFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IGluTWFwUmVzb2x1dGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBzZWxlY3RlZFJlY29yZFN0cmF0ZWd5ID0gbmV3IEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IGNvbmZRdWVyeU92ZXJsYXlTdHlsZT0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKTtcblxuICAgIGNvbnN0IHNlbGVjdGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICB6SW5kZXg6IDMwMCxcbiAgICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcbiAgICAgICAgc3R5bGU6IChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoT2JqZWN0LmFzc2lnbih7fSwge2ZlYXR1cmV9LCBjb25mUXVlcnlPdmVybGF5U3R5bGUuc2VsZWN0aW9uIHx8IHt9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgICAgICBicm93c2FibGU6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIG1hcCxcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXG4gICAgICBtYW55OiB0cnVlLFxuICAgICAgZHJhZ0JveDogdHJ1ZVxuICAgIH0pO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGlvblN0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kodGhpcy5jcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xuICAgIHJldHVybiBzdG9yZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGFibGVUZW1wbGF0ZSh3b3Jrc3BhY2U6IEZlYXR1cmVXb3Jrc3BhY2UsIGxheWVyOiBWZWN0b3JMYXllcik6IEVudGl0eVRhYmxlVGVtcGxhdGUge1xuICAgIGNvbnN0IGZpZWxkcyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgW107XG5cbiAgICBjb25zdCByZWxhdGlvbnMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zIHx8IFtdO1xuXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5lbnRpdGllcyQucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHZhbCA9PiB2YWwubGVuZ3RoID09PSAwKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKS5zdWJzY3JpYmUoZW50aXRpZXMgPT4ge1xuICAgICAgICBjb25zdCBvbCA9IChlbnRpdGllc1swXSBhcyBGZWF0dXJlKS5vbCBhcyBvbEZlYXR1cmU8T2xHZW9tZXRyeT47XG4gICAgICAgIGNvbnN0IGNvbHVtbnNGcm9tRmVhdHVyZXMgPSBvbC5nZXRLZXlzKClcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICBjb2wgPT4gIWNvbC5zdGFydHNXaXRoKCdfJykgJiZcbiAgICAgICAgICBjb2wgIT09ICdnZW9tZXRyeScgJiZcbiAgICAgICAgICBjb2wgIT09IG9sLmdldEdlb21ldHJ5TmFtZSgpICYmXG4gICAgICAgICAgIWNvbC5tYXRjaCgvYm91bmRlZGJ5L2dpKSlcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2tleX1gLFxuICAgICAgICAgICAgdGl0bGU6IGtleSxcbiAgICAgICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnNGcm9tRmVhdHVyZXNcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLm1hcCgoZmllbGQ6IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7ZmllbGQubmFtZX1gLFxuICAgICAgICB0aXRsZTogZmllbGQuYWxpYXMgPyBmaWVsZC5hbGlhcyA6IGZpZWxkLm5hbWUsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTCxcbiAgICAgICAgdG9vbHRpcDogZmllbGQudG9vbHRpcFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlbGF0aW9uc0NvbHVtbiA9IHJlbGF0aW9ucy5tYXAoKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7cmVsYXRpb24ubmFtZX1gLFxuICAgICAgICB0aXRsZTogcmVsYXRpb24uYWxpYXMgPyByZWxhdGlvbi5hbGlhcyA6IHJlbGF0aW9uLm5hbWUsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkljb24sXG4gICAgICAgIGljb246IHJlbGF0aW9uLmljb24sXG4gICAgICAgIHBhcmVudDogcmVsYXRpb24ucGFyZW50LFxuICAgICAgICB0eXBlOiAncmVsYXRpb24nLFxuICAgICAgICB0b29sdGlwOiByZWxhdGlvbi50b29sdGlwLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndzJC5uZXh0KHJlbGF0aW9uLnRpdGxlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2VsbENsYXNzRnVuYzogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7ICdjbGFzc19pY29uJzogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHNvcnQ6IHRydWUsXG4gICAgICBjb2x1bW5zXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpOiBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSB7XG4gICAgY29uc3QgZmlsdGVyQ2xhdXNlRnVuYyA9IChyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLmluTWFwRXh0ZW50ID09PSB0cnVlICYmIHJlY29yZC5zdGF0ZS5pbk1hcFJlc29sdXRpb24gPT09IHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5KHtmaWx0ZXJDbGF1c2VGdW5jfSBhcyBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -5,4 +5,4 @@ export * from './feature-workspace.service';
|
|
|
5
5
|
export * from './edition-workspace';
|
|
6
6
|
export * from './edition-workspace.service';
|
|
7
7
|
export * from './workspace.utils';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi93b3Jrc3BhY2Uvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dmcy13b3Jrc3BhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93ZnMtd29ya3NwYWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLXdvcmtzcGFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtd29ya3NwYWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0aW9uLXdvcmtzcGFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRpb24td29ya3NwYWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi93b3Jrc3BhY2UudXRpbHMnO1xuIl19
|
|
@@ -32,4 +32,4 @@ export class WfsWorkspace extends Workspace {
|
|
|
32
32
|
return this.inResolutionRange$.value;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLXdvcmtzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvd2ZzLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVWLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFVdkMsTUFBTSxPQUFPLFlBQWEsU0FBUSxTQUFTO0lBUXpDLFlBQXNCLE9BQTRCO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURLLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBTnpDLHVCQUFrQixHQUE2QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVFoRixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDOUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUN4RixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFiRCxJQUFJLEtBQUssS0FBa0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFdkQsSUFBSSxHQUFHLEtBQWEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFhdkMseUJBQXlCO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUM5RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7U0FDcEU7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFdvcmtzcGFjZSxcbiAgV29ya3NwYWNlT3B0aW9uc1xufSBmcm9tICdAaWdvMi9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBXZnNXb3Jrc3BhY2VPcHRpb25zIGV4dGVuZHMgV29ya3NwYWNlT3B0aW9ucyB7XG4gIGxheWVyOiBWZWN0b3JMYXllcjtcbiAgbWFwOiBJZ29NYXA7XG59XG5cbmV4cG9ydCBjbGFzcyBXZnNXb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2Uge1xuXG4gIHJlYWRvbmx5IGluUmVzb2x1dGlvblJhbmdlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBnZXQgbGF5ZXIoKTogVmVjdG9yTGF5ZXIgeyByZXR1cm4gdGhpcy5vcHRpb25zLmxheWVyOyB9XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAgeyByZXR1cm4gdGhpcy5vcHRpb25zLm1hcDsgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBXZnNXb3Jrc3BhY2VPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQuc3Vic2NyaWJlKChtYXBSZXNvbHV0aW9uKSA9PiB7XG4gICAgICBpZiAobWFwUmVzb2x1dGlvbiA+IHRoaXMubGF5ZXIubWluUmVzb2x1dGlvbiAmJiBtYXBSZXNvbHV0aW9uIDwgdGhpcy5sYXllci5tYXhSZXNvbHV0aW9uKSB7XG4gICAgICAgIHRoaXMuaW5SZXNvbHV0aW9uUmFuZ2UkLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluUmVzb2x1dGlvblJhbmdlJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXllcldrc09wdGlvblRhYlF1ZXJ5KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmxheWVyLm9wdGlvbnMud29ya3NwYWNlLnF1ZXJ5T3B0aW9ucz8udGFiUXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UucXVlcnlPcHRpb25zLnRhYlF1ZXJ5O1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXllcldrc09wdGlvbk1hcFF1ZXJ5KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmxheWVyLm9wdGlvbnMud29ya3NwYWNlLnF1ZXJ5T3B0aW9ucz8ubWFwUXVlcnlPbk9wZW5UYWIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UucXVlcnlPcHRpb25zLm1hcFF1ZXJ5T25PcGVuVGFiO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5SZXNvbHV0aW9uUmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5SZXNvbHV0aW9uUmFuZ2UkLnZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -147,4 +147,4 @@ WfsWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WfsW
|
|
|
147
147
|
providedIn: 'root'
|
|
148
148
|
}]
|
|
149
149
|
}], function () { return [{ type: i1.StorageService }, { type: i1.ConfigService }]; }, null); })();
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLXdvcmtzcGFjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvd29ya3NwYWNlL3NoYXJlZC93ZnMtd29ya3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxXQUFXLEVBRVgsbUNBQW1DLEVBR25DLGtDQUFrQyxFQUNsQyx5QkFBeUIsRUFDMUIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLFlBQVksRUFDWixnQ0FBZ0MsRUFDaEMsNkJBQTZCLEVBQzdCLCtCQUErQixFQUUvQixhQUFhLEVBQ2IsbUNBQW1DLEVBQ3BDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHMUMsT0FBTyxFQUE2QixpQkFBaUIsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sbUJBQW1CO0lBUTlCLFlBQW9CLGNBQThCLEVBQVUsYUFBNEI7UUFBcEUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFGakYsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXVDLENBQUM7SUFONUYsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQVksQ0FBQztJQUN4RCxDQUFDO0lBTUQsZUFBZSxDQUFDLEtBQWtCLEVBQUUsR0FBVztRQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2xGLE9BQU87U0FDUjtRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUNqRTtZQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLEVBQUUsSUFBSTtTQUNTLENBQUMsQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLFlBQVksQ0FBQztZQUMzQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDWixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsS0FBSztZQUNMLEdBQUc7WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDaEQsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEVBQUU7Z0JBQ0osYUFBYSxFQUFFLFNBQVM7YUFDekI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWtCLEVBQUUsR0FBVztRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBQzFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLG1CQUFtQixHQUFHLElBQUksK0JBQStCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLHFCQUFxQixHQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0UsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLDZCQUE2QixDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsTUFBTSxFQUFFLElBQUksaUJBQWlCLEVBQUU7Z0JBQy9CLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNqQixPQUFPLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUMsT0FBTyxFQUFDLEVBQUUscUJBQXFCLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNHLENBQUM7Z0JBQ0QsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1lBQ0YsR0FBRztZQUNILFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUNsRSxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxLQUFLLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFNBQXVCLEVBQUUsS0FBa0I7UUFDckUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUUzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBRTNELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNsQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxHQUFJLFFBQVEsQ0FBQyxDQUFDLENBQWEsQ0FBQyxFQUEyQixDQUFDO2dCQUNoRSxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7cUJBQ3ZDLE1BQU0sQ0FDTCxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7b0JBQzNCLEdBQUcsS0FBSyxVQUFVO29CQUNsQixHQUFHLEtBQUssRUFBRSxDQUFDLGVBQWUsRUFBRTtvQkFDNUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUMzQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ1QsT0FBTzt3QkFDTCxJQUFJLEVBQUUsY0FBYyxHQUFHLEVBQUU7d0JBQ3pCLEtBQUssRUFBRSxHQUFHO3dCQUNWLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxlQUFlO3FCQUNwRCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHO29CQUM3QixTQUFTLEVBQUUsSUFBSTtvQkFDZixJQUFJLEVBQUUsSUFBSTtvQkFDVixPQUFPLEVBQUUsbUJBQW1CO2lCQUM3QixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1lBQzlELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLGNBQWMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDaEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUM3QyxRQUFRLEVBQUUseUJBQXlCLENBQUMsZUFBZTtnQkFDbkQsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUF5QixFQUFFLEVBQUU7WUFDbEUsT0FBTztnQkFDTCxJQUFJLEVBQUUsY0FBYyxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNuQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ3RELFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxJQUFJO2dCQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBQ08sMkNBQTJDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxFQUFDLGdCQUFnQixFQUFtQyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs7c0ZBaEpVLG1CQUFtQjt5RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTt1RkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBBY3Rpb25TdG9yZSxcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxyXG4gIEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5LFxyXG4gIEVudGl0eVJlY29yZCxcclxuICBFbnRpdHlTdG9yZVN0cmF0ZWd5RnVuY09wdGlvbnMsXHJcbiAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSxcclxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyXHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3ksXHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xyXG5pbXBvcnQgeyBHZW9Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xyXG5pbXBvcnQgeyBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLCBGZWF0dXJlRGF0YVNvdXJjZSwgUmVsYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGV9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IFdmc1dvcmtzcGFjZSB9IGZyb20gJy4vd2ZzLXdvcmtzcGFjZSc7XHJcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UsIENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2ZzV29ya3NwYWNlU2VydmljZSB7XHJcblxyXG4gIGdldCB6b29tQXV0bygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7fVxyXG5cclxuICBjcmVhdGVXb3Jrc3BhY2UobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IFdmc1dvcmtzcGFjZSB7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgPT09IGZhbHNlIHx8IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICAgIHdvcmtzcGFjZUlkOiBsYXllci5pZCxcclxuICAgICAgICBlbmFibGVkOiB0cnVlXHJcbiAgICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3Qgd2tzID0gbmV3IFdmc1dvcmtzcGFjZSh7XHJcbiAgICAgIGlkOiBsYXllci5pZCxcclxuICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxyXG4gICAgICBsYXllcixcclxuICAgICAgbWFwLFxyXG4gICAgICBlbnRpdHlTdG9yZTogdGhpcy5jcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXIsIG1hcCksXHJcbiAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgdGFibGVUZW1wbGF0ZTogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jcmVhdGVUYWJsZVRlbXBsYXRlKHdrcywgbGF5ZXIpO1xyXG4gICAgcmV0dXJuIHdrcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7bWFwfSk7XHJcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBpbk1hcEV4dGVudFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGNvbmZRdWVyeU92ZXJsYXlTdHlsZT0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgIHpJbmRleDogMzAwLFxyXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgICAgc3R5bGU6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShPYmplY3QuYXNzaWduKHt9LCB7ZmVhdHVyZX0sIGNvbmZRdWVyeU92ZXJsYXlTdHlsZS5zZWxlY3Rpb24gfHwge30pKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDE1LFxyXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXHJcbiAgICAgIG1hbnk6IHRydWUsXHJcbiAgICAgIGRyYWdCb3g6IHRydWVcclxuICAgIH0pO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kobG9hZGluZ1N0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGluTWFwRXh0ZW50U3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kodGhpcy5jcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZVRlbXBsYXRlKHdvcmtzcGFjZTogV2ZzV29ya3NwYWNlLCBsYXllcjogVmVjdG9yTGF5ZXIpOiBFbnRpdHlUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbnN0IGZpZWxkcyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgW107XHJcblxyXG4gICAgY29uc3QgcmVsYXRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnJlbGF0aW9ucyB8fCBbXTtcclxuXHJcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZW50aXRpZXMkLnBpcGUoXHJcbiAgICAgICAgc2tpcFdoaWxlKHZhbCA9PiB2YWwubGVuZ3RoID09PSAwKSxcclxuICAgICAgICB0YWtlKDEpXHJcbiAgICAgICkuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcclxuICAgICAgICBjb25zdCBvbCA9IChlbnRpdGllc1swXSBhcyBGZWF0dXJlKS5vbCBhcyBvbEZlYXR1cmU8T2xHZW9tZXRyeT47XHJcbiAgICAgICAgY29uc3QgY29sdW1uc0Zyb21GZWF0dXJlcyA9IG9sLmdldEtleXMoKVxyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICBjb2wgPT4gIWNvbC5zdGFydHNXaXRoKCdfJykgJiZcclxuICAgICAgICAgIGNvbCAhPT0gJ2dlb21ldHJ5JyAmJlxyXG4gICAgICAgICAgY29sICE9PSBvbC5nZXRHZW9tZXRyeU5hbWUoKSAmJlxyXG4gICAgICAgICAgIWNvbC5tYXRjaCgvYm91bmRlZGJ5L2dpKSlcclxuICAgICAgICAubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2tleX1gLFxyXG4gICAgICAgICAgICB0aXRsZToga2V5LFxyXG4gICAgICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zRnJvbUZlYXR1cmVzXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbnMgPSBmaWVsZHMubWFwKChmaWVsZDogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcykgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7ZmllbGQubmFtZX1gLFxyXG4gICAgICAgIHRpdGxlOiBmaWVsZC5hbGlhcyA/IGZpZWxkLmFsaWFzIDogZmllbGQubmFtZSxcclxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUwsXHJcbiAgICAgICAgdG9vbHRpcDogZmllbGQudG9vbHRpcFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVsYXRpb25zQ29sdW1uID0gcmVsYXRpb25zLm1hcCgocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucykgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7cmVsYXRpb24ubmFtZX1gLFxyXG4gICAgICAgIHRpdGxlOiByZWxhdGlvbi5hbGlhcyA/IHJlbGF0aW9uLmFsaWFzIDogcmVsYXRpb24ubmFtZSxcclxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5JY29uLFxyXG4gICAgICAgIGljb246IHJlbGF0aW9uLmljb24sXHJcbiAgICAgICAgcGFyZW50OiByZWxhdGlvbi5wYXJlbnQsXHJcbiAgICAgICAgdHlwZTogJ3JlbGF0aW9uJyxcclxuICAgICAgICB0b29sdGlwOiByZWxhdGlvbi50b29sdGlwLFxyXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53cyQubmV4dChyZWxhdGlvbi50aXRsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjZWxsQ2xhc3NGdW5jOiAoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyAnY2xhc3NfaWNvbic6IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb2x1bW5zLnB1c2goLi4ucmVsYXRpb25zQ29sdW1uKTtcclxuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUgPSB7XHJcbiAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgY29sdW1uc1xyXG4gICAgfTtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCk6IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5IHtcclxuICAgIGNvbnN0IGZpbHRlckNsYXVzZUZ1bmMgPSAocmVjb3JkOiBFbnRpdHlSZWNvcmQ8b2JqZWN0PikgPT4ge1xyXG4gICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLmluTWFwRXh0ZW50ID09PSB0cnVlICYmIHJlY29yZC5zdGF0ZS5pbk1hcFJlc29sdXRpb24gPT09IHRydWU7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG5ldyBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSh7ZmlsdGVyQ2xhdXNlRnVuY30gYXMgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLXdvcmtzcGFjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvd29ya3NwYWNlL3NoYXJlZC93ZnMtd29ya3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxXQUFXLEVBRVgsbUNBQW1DLEVBR25DLGtDQUFrQyxFQUNsQyx5QkFBeUIsRUFDMUIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLFlBQVksRUFDWixnQ0FBZ0MsRUFDaEMsNkJBQTZCLEVBQzdCLCtCQUErQixFQUUvQixhQUFhLEVBQ2IsbUNBQW1DLEVBQ3BDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHMUMsT0FBTyxFQUE2QixpQkFBaUIsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sbUJBQW1CO0lBUTlCLFlBQW9CLGNBQThCLEVBQVUsYUFBNEI7UUFBcEUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFGakYsUUFBRyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXVDLENBQUM7SUFONUYsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENB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QUk7Z0JBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBQ08sMkNBQTJDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxFQUFDLGdCQUFnQixFQUFtQyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs7c0ZBaEpVLG1CQUFtQjt5RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTt1RkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBY3Rpb25TdG9yZSxcbiAgRW50aXR5VGFibGVUZW1wbGF0ZSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3ksXG4gIEVudGl0eVJlY29yZCxcbiAgRW50aXR5U3RvcmVTdHJhdGVneUZ1bmNPcHRpb25zLFxuICBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LFxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5LFxuICBGZWF0dXJlLFxuICBGZWF0dXJlTW90aW9uLFxuICBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneVxufSBmcm9tICcuLi8uLi9mZWF0dXJlJztcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHsgR2VvV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvbGF5ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XG5pbXBvcnQgeyBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLCBGZWF0dXJlRGF0YVNvdXJjZSwgUmVsYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7IFdmc1dvcmtzcGFjZSB9IGZyb20gJy4vd2ZzLXdvcmtzcGFjZSc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSwgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXZnNXb3Jrc3BhY2VTZXJ2aWNlIHtcblxuICBnZXQgem9vbUF1dG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XG4gIH1cblxuICBwdWJsaWMgd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkge31cblxuICBjcmVhdGVXb3Jrc3BhY2UobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IFdmc1dvcmtzcGFjZSB7XG4gICAgaWYgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkID09PSBmYWxzZSB8fCBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsXG4gICAgICB7XG4gICAgICAgIHNyY0lkOiBsYXllci5pZCxcbiAgICAgICAgd29ya3NwYWNlSWQ6IGxheWVyLmlkLFxuICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICB9IGFzIEdlb1dvcmtzcGFjZU9wdGlvbnMpO1xuXG4gICAgY29uc3Qgd2tzID0gbmV3IFdmc1dvcmtzcGFjZSh7XG4gICAgICBpZDogbGF5ZXIuaWQsXG4gICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXG4gICAgICBsYXllcixcbiAgICAgIG1hcCxcbiAgICAgIGVudGl0eVN0b3JlOiB0aGlzLmNyZWF0ZUZlYXR1cmVTdG9yZShsYXllciwgbWFwKSxcbiAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxuICAgICAgbWV0YToge1xuICAgICAgICB0YWJsZVRlbXBsYXRlOiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNyZWF0ZVRhYmxlVGVtcGxhdGUod2tzLCBsYXllcik7XG4gICAgcmV0dXJuIHdrcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZShbXSwge21hcH0pO1xuICAgIHN0b3JlLmJpbmRMYXllcihsYXllcik7XG5cbiAgICBjb25zdCBsb2FkaW5nU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IGluTWFwRXh0ZW50U3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSh7fSk7XG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xuICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3kgPSBuZXcgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSh7fSk7XG4gICAgY29uc3QgY29uZlF1ZXJ5T3ZlcmxheVN0eWxlPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdxdWVyeU92ZXJsYXlTdHlsZScpO1xuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xuICAgICAgbGF5ZXI6IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIHpJbmRleDogMzAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgICBzdHlsZTogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShPYmplY3QuYXNzaWduKHt9LCB7ZmVhdHVyZX0sIGNvbmZRdWVyeU92ZXJsYXlTdHlsZS5zZWxlY3Rpb24gfHwge30pKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGJyb3dzYWJsZTogZmFsc2VcbiAgICAgIH0pLFxuICAgICAgbWFwLFxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcbiAgICAgIG1vdGlvbjogdGhpcy56b29tQXV0byA/IEZlYXR1cmVNb3Rpb24uRGVmYXVsdCA6IEZlYXR1cmVNb3Rpb24uTm9uZSxcbiAgICAgIG1hbnk6IHRydWUsXG4gICAgICBkcmFnQm94OiB0cnVlXG4gICAgfSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kobG9hZGluZ1N0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcEV4dGVudFN0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcFJlc29sdXRpb25TdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3ksIGZhbHNlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneSh0aGlzLmNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3koKSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZVRlbXBsYXRlKHdvcmtzcGFjZTogV2ZzV29ya3NwYWNlLCBsYXllcjogVmVjdG9yTGF5ZXIpOiBFbnRpdHlUYWJsZVRlbXBsYXRlIHtcbiAgICBjb25zdCBmaWVsZHMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IFtdO1xuXG4gICAgY29uc3QgcmVsYXRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnJlbGF0aW9ucyB8fCBbXTtcblxuICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZW50aXRpZXMkLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZSh2YWwgPT4gdmFsLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgICkuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcbiAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xuICAgICAgICBjb25zdCBjb2x1bW5zRnJvbUZlYXR1cmVzID0gb2wuZ2V0S2V5cygpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgY29sID0+ICFjb2wuc3RhcnRzV2l0aCgnXycpICYmXG4gICAgICAgICAgY29sICE9PSAnZ2VvbWV0cnknICYmXG4gICAgICAgICAgY29sICE9PSBvbC5nZXRHZW9tZXRyeU5hbWUoKSAmJlxuICAgICAgICAgICFjb2wubWF0Y2goL2JvdW5kZWRieS9naSkpXG4gICAgICAgIC5tYXAoa2V5ID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtrZXl9YCxcbiAgICAgICAgICAgIHRpdGxlOiBrZXksXG4gICAgICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3Rpb246IHRydWUsXG4gICAgICAgICAgc29ydDogdHJ1ZSxcbiAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zRnJvbUZlYXR1cmVzXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29sdW1ucyA9IGZpZWxkcy5tYXAoKGZpZWxkOiBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgdGl0bGU6IGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMgOiBmaWVsZC5uYW1lLFxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUwsXG4gICAgICAgIHRvb2x0aXA6IGZpZWxkLnRvb2x0aXBcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCByZWxhdGlvbnNDb2x1bW4gPSByZWxhdGlvbnMubWFwKChyZWxhdGlvbjogUmVsYXRpb25PcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke3JlbGF0aW9uLm5hbWV9YCxcbiAgICAgICAgdGl0bGU6IHJlbGF0aW9uLmFsaWFzID8gcmVsYXRpb24uYWxpYXMgOiByZWxhdGlvbi5uYW1lLFxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5JY29uLFxuICAgICAgICBpY29uOiByZWxhdGlvbi5pY29uLFxuICAgICAgICBwYXJlbnQ6IHJlbGF0aW9uLnBhcmVudCxcbiAgICAgICAgdHlwZTogJ3JlbGF0aW9uJyxcbiAgICAgICAgdG9vbHRpcDogcmVsYXRpb24udG9vbHRpcCxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy53cyQubmV4dChyZWxhdGlvbi50aXRsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAnY2xhc3NfaWNvbic6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbHVtbnMucHVzaCguLi5yZWxhdGlvbnNDb2x1bW4pO1xuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUgPSB7XG4gICAgICBzZWxlY3Rpb246IHRydWUsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uc1xuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCk6IEVudGl0eVN0b3JlRmlsdGVyQ3VzdG9tRnVuY1N0cmF0ZWd5IHtcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2VGdW5jID0gKHJlY29yZDogRW50aXR5UmVjb3JkPG9iamVjdD4pID0+IHtcbiAgICAgIHJldHVybiByZWNvcmQuc3RhdGUuaW5NYXBFeHRlbnQgPT09IHRydWUgJiYgcmVjb3JkLnN0YXRlLmluTWFwUmVzb2x1dGlvbiA9PT0gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgRW50aXR5U3RvcmVGaWx0ZXJDdXN0b21GdW5jU3RyYXRlZ3koe2ZpbHRlckNsYXVzZUZ1bmN9IGFzIEVudGl0eVN0b3JlU3RyYXRlZ3lGdW5jT3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|