@igo2/geo 1.13.3 → 1.13.4
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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 -1
- 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-layer-popup.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw.component.mjs +2 -2
- package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
- 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 +1 -1
- 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 +2 -2
- 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 +1 -1
- package/esm2020/lib/feature/shared/index.mjs +1 -1
- package/esm2020/lib/feature/shared/store.mjs +1 -1
- 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 +1 -1
- package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2020/lib/filter/filter.module.mjs +1 -1
- 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 +2 -2
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/esm2020/lib/import-export/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export.module.mjs +1 -1
- 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 +1 -1
- 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 +1 -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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- 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 -1
- 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 +1 -1
- 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 +1 -1
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +2 -2
- 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 -1
- 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 +2 -2
- 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 +1 -1
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
- 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 +1 -1
- 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 +1 -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/configFileToGeoDB.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 +2 -2
- 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 +1 -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 +2 -2
- 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 +1 -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 +1 -1
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +1 -1
- 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 +1 -1
- 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 +88 -88
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +88 -88
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/ngcc.config.js +3 -3
- package/package.json +4 -4
- package/style/geo.theming.scss +12 -12
|
@@ -1037,7 +1037,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
|
|
|
1037
1037
|
transition('open => closed', [animate('600ms ease')]),
|
|
1038
1038
|
transition('closed => open', [animate('800ms ease')])
|
|
1039
1039
|
])
|
|
1040
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\
|
|
1040
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"geometry-type-toggle mat-typography\">\n <mat-button-toggle-group\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\n <mat-button-toggle [value]=\"geometryType.Point\">\n {{'igo.geo.draw.' + geometryType.Point | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.LineString\">\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Polygon\">\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Circle\">\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"draw-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n [checked]=\"labelsAreShown\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleLabels()\"\n >\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\n </mat-slide-toggle>\n </div>\n\n <mat-divider></mat-divider>\n\n <div>\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\n {{ layer.title }}\n </mat-option>\n <mat-option id=\"createNewLayer\" >\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <button\n *ngIf=\"activeDrawingLayer\"\n mat-icon-button\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"activeDrawingLayer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\n <mat-icon\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n </div>\n <mat-divider></mat-divider>\n <div>\n <button\n *ngIf=\"activeStore.count$.getValue() > 0\"\n class=\"deleteBtn\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n (click)=\"deleteDrawings()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <div>\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"activeStore\"\n [template]=\"tableTemplate\"\n (dblclick)=\"editLabelDrawing()\">\n </igo-entity-table>\n </div>\n </div>\n\n <div class=\"icon-options\">\n <mat-form-field *ngIf=\"icons.length >= 1\">\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\n <mat-select>\n <mat-select-trigger>\n <div *ngIf=\"icon\" class=\"box\">\n <img src=\"{{ icon }}\">\n </div>\n </mat-select-trigger>\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\n <mat-option\n *ngFor=\"let icon_html of icons\"\n [value]=\"icon_html\"\n (click)=\"onIconChange(icon_html)\">\n <div class=\"box\">\n <img src=\"{{ icon_html }}\">\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <button\n mat-icon-button\n color=\"accent\"\n disableRipple=\"true\"\n (click)=\"openShorcutsDialog()\"\n >\n <mat-icon\n class=\"shortcuts-icon\"\n svgIcon=\"keyboard-outline\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\n >\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"selectedFeatures$.value.length\"\n mat-raised-button\n color=\"primary\"\n (click)=\"openStyleModalDialog()\"\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\n {{'igo.geo.layer.style.styleModal' | translate}}\n <mat-icon\n class=\"style-icon\"\n svgIcon=\"palette\"\n [matBadge]=\"selectedFeatures$.value.length\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\">\n </mat-icon>\n </button>\n</div>\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}\n"] }]
|
|
1041
1041
|
}], function () { return [{ type: i1.LanguageService }, { type: i2.UntypedFormBuilder }, { type: i3.DrawStyleService }, { type: i4.MatDialog }, { type: i5.DrawIconService }]; }, { map: [{
|
|
1042
1042
|
type: Input
|
|
1043
1043
|
}], stores: [{
|
|
@@ -1066,4 +1066,4 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
|
|
|
1066
1066
|
type: ViewChild,
|
|
1067
1067
|
args: ['selectedLayer']
|
|
1068
1068
|
}] }); })();
|
|
1069
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU1sRSxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFcEMsT0FBTyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFJMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxP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QUM7eUJBQ1gsQ0FBQyxDQUNIO3dCQUNELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztxQkFDdEQsQ0FBQztpQkFDSCxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTt3TEEyQnRDLEdBQUc7a0JBQVgsS0FBSztZQUdGLE1BQU07a0JBRFQsS0FBSztZQVVGLFlBQVk7a0JBRGYsS0FBSztZQVVGLGtCQUFrQjtrQkFEckIsS0FBSztZQVNJLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLGFBQWE7a0JBQXRCLE1BQU07WUFFRyxTQUFTO2tCQUFsQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLFdBQVc7a0JBQXBCLE1BQU07WUFFRyxRQUFRO2tCQUFqQixNQUFNO1lBQ0csU0FBUztrQkFBbEIsTUFBTTtZQTJCcUIsTUFBTTtrQkFBakMsU0FBUzttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBGRUFUVVJFLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSxcclxuICB0cnlCaW5kU3RvcmVMYXllcixcclxuICB0cnlBZGRMb2FkaW5nU3RyYXRlZ3ksXHJcbiAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZU1vdGlvbixcclxuICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3ksXHJcbiAgZmVhdHVyZVRvT2xcclxufSBmcm9tICcuLi8uLi9mZWF0dXJlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb250VHlwZSwgR2VvbWV0cnlUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL2RyYXcuZW51bSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRHJhdywgRmVhdHVyZVdpdGhEcmF3IH0gZnJvbSAnLi4vc2hhcmVkL2RyYXcuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWZWN0b3JTb3VyY2VFdmVudCBhcyBPbFZlY3RvclNvdXJjZUV2ZW50IH0gZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy92ZWN0b3ItbGF5ZXInO1xyXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2ZlYXR1cmUtZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IERyYXdDb250cm9sIH0gZnJvbSAnLi4vLi4vZ2VvbWV0cnkvc2hhcmVkL2NvbnRyb2xzL2RyYXcnO1xyXG5pbXBvcnQge1xyXG4gIEVudGl0eVJlY29yZCxcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuXHJcbmltcG9ydCAqIGFzIE9sU3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xyXG5pbXBvcnQgT2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCBPbENpcmNsZSBmcm9tICdvbC9nZW9tL0NpcmNsZSc7XHJcbmltcG9ydCBPbFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xyXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgT2xHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcclxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcbmltcG9ydCB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBnZXREaXN0YW5jZSB9IGZyb20gJ29sL3NwaGVyZSc7XHJcbmltcG9ydCB7IERyYXdTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZHJhdy1zdHlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmlyc3QsIHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERyYXdQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vZHJhdy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcmF3U2hvcmN1dHNDb21wb25lbnQgfSBmcm9tICcuL2RyYXctc2hvcmN1dHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkgfSBmcm9tICcuLi8uLi9tZWFzdXJlL3NoYXJlZC9tZWFzdXJlLnV0aWxzJztcclxuaW1wb3J0IHsgY3JlYXRlSW50ZXJhY3Rpb25TdHlsZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LnV0aWxzJztcclxuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCB7IERyYXdJY29uU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LWljb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN0eWxlTW9kYWxDb21wb25lbnQsIFN0eWxlTW9kYWxEYXRhIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc3R5bGUtbW9kYWwvc3R5bGUtbW9kYWwuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICBhbmltYXRlLFxyXG4gIHRyYW5zaXRpb25cclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xyXG5cclxuaW1wb3J0IHsgRHJhd0xheWVyUG9wdXBDb21wb25lbnQgfSBmcm9tICcuL2RyYXctbGF5ZXItcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRyYXcnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ29wZW4nLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIG9wYWNpdHk6IDFcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnY2xvc2VkJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwXHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbYW5pbWF0ZSgnNjAwbXMgZWFzZScpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzgwMG1zIGVhc2UnKV0pXHJcbiAgICBdKVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyYXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiBUYWJsZSB0ZW1wbGF0ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0YWJsZVRlbXBsYXRlOiBFbnRpdHlUYWJsZVRlbXBsYXRlID0ge1xyXG4gICAgc2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgc2VsZWN0TWFueTogdHJ1ZSxcclxuICAgIHNlbGVjdGlvbkNoZWNrYm94OiB0cnVlLFxyXG4gICAgc29ydDogdHJ1ZSxcclxuICAgIGZpeGVkSGVhZGVyOiB0cnVlLFxyXG4gICAgdGFibGVIZWlnaHQ6ICdhdXRvJyxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdEcmF3aW5nJyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5sYWJlbHMnKSxcclxuICAgICAgICB0b29sdGlwOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kcmF3LmNoYW5nZUxhYmVsJyksXHJcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGZlYXR1cmU6IEZlYXR1cmVXaXRoRHJhdykgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5kcmF3O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBnZW9tZXRyeVR5cGUgPSBHZW9tZXRyeVR5cGU7IC8vIFJlZmVyZW5jZSB0byB0aGUgR2VvbWV0cnlUeXBlIGVudW1cclxuICBASW5wdXQoKSBtYXA6IElnb01hcDsgLy8gTWFwIHRvIGRyYXcgb25cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc3RvcmVzKCk6IEZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aERyYXc+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlcztcclxuICB9XHJcbiAgc2V0IHN0b3Jlcyh2YWx1ZTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoRHJhdz5bXSkge1xyXG4gICAgdGhpcy5fc3RvcmVzID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3N0b3JlczpGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhEcmF3PltdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRyYXdDb250cm9scygpOiBbc3RyaW5nLCBEcmF3Q29udHJvbF1bXXtcclxuICAgIHJldHVybiB0aGlzLl9kcmF3Q29udHJvbHM7XHJcbiAgfVxyXG4gIHNldCBkcmF3Q29udHJvbHModmFsdWU6IFtzdHJpbmcsIERyYXdDb250cm9sXVtdKXtcclxuICAgIHRoaXMuX2RyYXdDb250cm9scyA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3Q29udHJvbHMgPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgYWN0aXZlRHJhd2luZ0xheWVyKCk6IFZlY3RvckxheWVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVEcmF3aW5nTGF5ZXI7XHJcbiAgfVxyXG4gIHNldCBhY3RpdmVEcmF3aW5nTGF5ZXIodmFsdWU6IFZlY3RvckxheWVyKSB7XHJcbiAgICB0aGlzLl9hY3RpdmVEcmF3aW5nTGF5ZXIgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWN0aXZlRHJhd2luZ0xheWVyOiBWZWN0b3JMYXllcjtcclxuXHJcbiAgQE91dHB1dCgpIGFjdGl2ZUxheWVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWZWN0b3JMYXllcj4oKTtcclxuICBAT3V0cHV0KCkgZHJhd0NvbnRyb2xzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFtzdHJpbmcsIERyYXdDb250cm9sXVtdPigpO1xyXG4gIEBPdXRwdXQoKSBsYXllcnNJREV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxsQ29sb3I6IHN0cmluZztcclxuICBAT3V0cHV0KCkgc3Ryb2tlQ29sb3I6IHN0cmluZztcclxuICBAT3V0cHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpIGZvbnRTaXplOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGZvbnRTdHlsZTogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgYWN0aXZlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aERyYXc+O1xyXG4gIHByaXZhdGUgbGF5ZXJDb3VudGVySUQ6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGRyYXckOiBCZWhhdmlvclN1YmplY3Q8RHJhdz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTsgLy8gT2JzZXJ2YWJsZSBvZiBkcmF3XHJcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UgPSBuZXcgT2xWZWN0b3JTb3VyY2UoKTtcclxuICBwcml2YXRlIGFjdGl2ZURyYXdDb250cm9sOiBEcmF3Q29udHJvbDtcclxuICBwcml2YXRlIGRyYXdFbmQkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZHJhd1NlbGVjdCQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVdpdGhEcmF3W10+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xyXG4gIHB1YmxpYyBmaWxsRm9ybTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzdHJva2VGb3JtOiBzdHJpbmc7XHJcbiAgcHVibGljIGRyYXdDb250cm9sSXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGRyYXdDb250cm9sSXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbGFiZWxzQXJlU2hvd246IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ2JvdHRvbSc7XHJcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIGljb25zOiBBcnJheTxzdHJpbmc+O1xyXG4gIHB1YmxpYyBpY29uOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgbnVtYmVyT2ZEcmF3aW5nczogbnVtYmVyO1xyXG4gIHB1YmxpYyBpc0NyZWF0aW5nTmV3TGF5ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGN1cnJHZW9tZXRyeVR5cGUgPSB0aGlzLmdlb21ldHJ5VHlwZS5Qb2ludCBhcyBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkTGF5ZXInKSBzZWxlY3Q7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZHJhd1N0eWxlU2VydmljZTogRHJhd1N0eWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGRyYXdJY29uU2VydmljZTogRHJhd0ljb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5maWxsQ29sb3IgPSB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuZ2V0RmlsbENvbG9yKCk7XHJcbiAgICB0aGlzLnN0cm9rZUNvbG9yID0gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmdldFN0cm9rZUNvbG9yKCk7XHJcbiAgICB0aGlzLnN0cm9rZVdpZHRoID0gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmdldFN0cm9rZVdpZHRoKCk7XHJcbiAgICB0aGlzLmxhYmVsc0FyZVNob3duID0gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmdldExhYmVsc0FyZVNob3duKCk7XHJcbiAgICB0aGlzLmljb25zID0gdGhpcy5kcmF3SWNvblNlcnZpY2UuZ2V0SWNvbnMoKTtcclxuICAgIHRoaXMuaWNvbiA9IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRJY29uKCk7XHJcblxyXG4gICAgdGhpcy5mb250U2l6ZSA9IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRGb250U2l6ZSgpO1xyXG4gICAgdGhpcy5mb250U3R5bGUgPSB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuZ2V0Rm9udFN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBJbml0aWFsaXplIHRoZSBzdG9yZSB0aGF0IHdpbGwgY29udGFpbiB0aGUgZW50aXRpZXMgYW5kIGNyZWF0ZSB0aGUgRHJhdyBjb250cm9sXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuc3RvcmVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aERyYXc+KFtdLCB7XHJcbiAgICAgICAgbWFwOiB0aGlzLm1hcFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IHRoaXMuY3JlYXRlRHJhd0NvbnRyb2woXHJcbiAgICAgICAgdGhpcy5maWxsQ29sb3IsXHJcbiAgICAgICAgdGhpcy5zdHJva2VDb2xvcixcclxuICAgICAgICB0aGlzLnN0cm9rZVdpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2V0R2VvbWV0cnlUeXBlKHRoaXMuZ2VvbWV0cnlUeXBlLlBvaW50IGFzIGFueSk7XHJcbiAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcclxuICAgICAgdGhpcy5zdG9yZXMucHVzaCh0aGlzLmFjdGl2ZVN0b3JlKTtcclxuICAgICAgdGhpcy5kcmF3Q29udHJvbHMucHVzaChbdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQsIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2xdKTtcclxuICAgICAgdGhpcy5kcmF3Q29udHJvbHNFdmVudC5lbWl0KHRoaXMuZHJhd0NvbnRyb2xzKTtcclxuICAgICAgdGhpcy5sYXllcnNJREV2ZW50LmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQpO1xyXG4gICAgICB0aGlzLm9uTGF5ZXJDaGFuZ2UodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQoc3RvcmUgPT4gc3RvcmUubGF5ZXIuaWQgPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkKTtcclxuICAgICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IHRoaXMuZHJhd0NvbnRyb2xzLmZpbmQoZGMgPT4gZGNbMF0gPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkKVsxXTtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuICAgICAgdGhpcy5hbGxMYXllcnMuZm9yRWFjaChsYXllciA9PiB7XHJcbiAgICAgICAgaWYgKGxheWVyLmlkICE9PSB0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5pZCkge1xyXG4gICAgICAgICAgbGF5ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQocyA9PiBzLmxheWVyLmlkID09PSBsYXllci5pZCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLnB1c2goXHJcbiAgICAgICAgICBzdG9yZS5zdGF0ZVZpZXdcclxuICAgICAgICAgICAgLm1hbnlCeSQoKHJlY29yZDogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoRHJhdz4pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBmaXJzdCgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVjb3JkczogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoRHJhdz5bXSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJlY29yZHMuZm9yRWFjaCgocmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RhdGUuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxyXG4gICAgICAgICAgc3RvcmUuc3RhdGVWaWV3XHJcbiAgICAgICAgICAgIC5tYW55QnkkKChyZWNvcmQ6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aERyYXc+KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgc2tpcCgxKSAvLyBTa2lwIGluaXRpYWwgZW1pc3Npb25cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhEcmF3PltdKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC5uZXh0KHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5lbnRpdHkpKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxyXG4gICAgICAgICAgc3RvcmUuY291bnQkLnN1YnNjcmliZSgoY250KSA9PiB7XHJcbiAgICAgICAgICAgIGNudCA+PSAxXHJcbiAgICAgICAgICAgICAgPyAodGhpcy5hY3RpdmVTdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IHRydWUpXHJcbiAgICAgICAgICAgICAgOiAodGhpcy5hY3RpdmVTdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IGZhbHNlKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMub25MYXllckNoYW5nZSh0aGlzLmFjdGl2ZURyYXdpbmdMYXllcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIGRyYXdpbmcgbGF5ZXIgYW5kIHRoZSBpbnRlcmFjdGlvbnNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuYWxsTGF5ZXJzLmZvckVhY2gobGF5ZXIgPT4gbGF5ZXIub3BhY2l0eSA9IDEpO1xyXG4gICAgdGhpcy5hY3RpdmVTdG9yZS5zdGF0ZS51cGRhdGVBbGwoe3NlbGVjdGVkOiBmYWxzZX0pO1xyXG4gICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIERyYXcgQ29udHJvbFxyXG4gICAqIEBwYXJhbSBmaWxsQ29sb3IgdGhlIGZpbGwgY29sb3JcclxuICAgKiBAcGFyYW0gc3Ryb2tlQ29sb3IgdGhlIHN0cm9rZSBjb2xvclxyXG4gICAqIEBwYXJhbSBzdHJva2VXaWR0aCB0aGUgc3Ryb2tlIHdpZHRoXHJcbiAgICogQHJldHVybnMgYSBEcmF3IENvbnRyb2xcclxuICAgKi9cclxuICBjcmVhdGVEcmF3Q29udHJvbChcclxuICAgIGZpbGxDb2xvcj86IHN0cmluZyxcclxuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nLFxyXG4gICAgc3Ryb2tlV2lkdGg/OiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IGFjdGl2ZURyYXdDb250cm9sID0gbmV3IERyYXdDb250cm9sKHtcclxuICAgICAgZ2VvbWV0cnlUeXBlOiB1bmRlZmluZWQsXHJcbiAgICAgIGRyYXdpbmdMYXllclNvdXJjZTogdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UsXHJcbiAgICAgIGRyYXdpbmdMYXllclN0eWxlOiBuZXcgT2xTdHlsZS5TdHlsZSh7fSksXHJcbiAgICAgIGludGVyYWN0aW9uU3R5bGU6IGNyZWF0ZUludGVyYWN0aW9uU3R5bGUoXHJcbiAgICAgICAgZmlsbENvbG9yLFxyXG4gICAgICAgIHN0cm9rZUNvbG9yLFxyXG4gICAgICAgIHN0cm9rZVdpZHRoXHJcbiAgICAgIClcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFjdGl2ZURyYXdDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcmUgaW5pdGlhbGl6YXRpb24sIGluY2x1ZGluZyBkcmF3aW5nIGxheWVyIGNyZWF0aW9uXHJcbiAgICovXHJcblxyXG4gIHByaXZhdGUgaW5pdFN0b3JlKG5ld1RpdGxlPzogc3RyaW5nLCBpc05ld0xheWVyPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jcmVhdGVMYXllcihuZXdUaXRsZSwgaXNOZXdMYXllcik7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxyXG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlLnN0YXRlVmlld1xyXG4gICAgICAgIC5tYW55QnkkKChyZWNvcmQ6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aERyYXc+KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBza2lwKDEpIC8vIFNraXAgaW5pdGlhbCBlbWlzc2lvblxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhEcmF3PltdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLm5leHQocmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkLmVudGl0eSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLnB1c2goXHJcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUuY291bnQkLnN1YnNjcmliZSgoY250KSA9PiB7XHJcbiAgICAgICAgY250ID49IDFcclxuICAgICAgICAgID8gKHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub3B0aW9ucy5zaG93SW5MYXllckxpc3QgPSB0cnVlKVxyXG4gICAgICAgICAgOiAodGhpcy5hY3RpdmVTdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuLyoqXHJcbiAqIE9wZW4gdGhlIHN0eWxlIG1vZGFsIGRpYWxvZyBib3hcclxuICovXHJcbiAgb3BlblN0eWxlTW9kYWxEaWFsb2coKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gb3BlbiB0aGUgZGlhbG9nIGJveCB1c2VkIHRvIHN0eWxlIGZlYXR1cmVzXHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU3R5bGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgZmVhdHVyZXM6IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgIGljb25zOiB0aGlzLmljb25zLFxyXG4gICAgICAgICAgaWNvbjogdGhpcy5pY29uXHJcbiAgICAgICAgfSxcclxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gd2hlbiBkaWFsb2cgYm94IGlzIGNsb3NlZCwgZ2V0IGxhYmVsIGFuZCBzZXQgaXQgdG8gZ2VvbWV0cnlcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChkYXRhOiBTdHlsZU1vZGFsRGF0YSkgPT4ge1xyXG4gICAgICAgIC8vIGNoZWNrcyBpZiB0aGUgdXNlciBjbGlja2VkIG9rXHJcbiAgICAgICAgaWYgKGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5jb25maXJtRmxhZykge1xyXG4gICAgICAgICAgdGhpcy5vbkZvbnRDaGFuZ2UodGhpcy5sYWJlbHNBcmVTaG93biwgZGF0YS5mb250U2l6ZSwgZGF0YS5mb250U3R5bGUpO1xyXG4gICAgICAgICAgdGhpcy5vbkNvbG9yQ2hhbmdlKHRoaXMubGFiZWxzQXJlU2hvd24sIHRoaXMuaWNvbiA/IHRydWUgOiBmYWxzZSwgZGF0YS5maWxsQ29sb3IsIGRhdGEuc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgdGhpcy5vbk9mZnNldExhYmVsQ2hhbmdlKHRoaXMubGFiZWxzQXJlU2hvd24sIGRhdGEub2Zmc2V0WCwgZGF0YS5vZmZzZXRZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYSBkaWFsb2cgYm94IHRvIGVudGVyIGxhYmVsIGFuZCBkbyBzb21ldGhpbmdcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBnZW9tZXRyeSBhdCBkcmF3IGVuZCBvciBzZWxlY3RlZCBnZW9tZXRyeVxyXG4gICAqIEBwYXJhbSBkcmF3RW5kIGV2ZW50IGZpcmVkIGF0IGRyYXdFbmQ/XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuRHJhd0RpYWxvZyhvbEdlb21ldHJ5LCBpc0RyYXdFbmQ6IGJvb2xlYW4pIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBvcGVuIHRoZSBkaWFsb2cgYm94IHVzZWQgdG8gZW50ZXIgbGFiZWxcclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEcmF3UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICAgIGRhdGE6IHsgY3VycmVudExhYmVsOiBvbEdlb21ldHJ5LmdldCgnZHJhdycpIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyB3aGVuIGRpYWxvZyBib3ggaXMgY2xvc2VkLCBnZXQgbGFiZWwgYW5kIHNldCBpdCB0byBnZW9tZXRyeVxyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGxhYmVsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAvLyBjaGVja3MgaWYgdGhlIHVzZXIgY2xpY2tlZCBva1xyXG4gICAgICAgIGlmIChkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuY29uZmlybUZsYWcpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWxPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgbGFiZWwpO1xyXG4gICAgICAgICAgaWYgKCFvbEdlb21ldHJ5LnZhbHVlc18uZm9udFN0eWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9udFNpemVBbmRTdHlsZShvbEdlb21ldHJ5LCAnMjAnLCBGb250VHlwZS5BcmlhbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIW9sR2VvbWV0cnkudmFsdWVzXy5kcmF3aW5nU3R5bGUpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWxsQW5kU3Ryb2tlQ29sb3IoXHJcbiAgICAgICAgICAgICAgb2xHZW9tZXRyeSxcclxuICAgICAgICAgICAgICAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyxcclxuICAgICAgICAgICAgICAncmdiYSgxNDMsNyw3LDEpJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCEob2xHZW9tZXRyeS52YWx1ZXNfLm9mZnNldFggfHwgb2xHZW9tZXRyeS52YWx1ZXNfLm9mZnNldFkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlT2Zmc2V0KFxyXG4gICAgICAgICAgICAgIG9sR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICBvbEdlb21ldHJ5IGluc3RhbmNlb2YgUG9pbnQgPyAtMTUgOiAwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gaWYgZXZlbnQgd2FzIGZpcmVkIGF0IGRyYXcgZW5kXHJcbiAgICAgICAgICBpZiAoaXNEcmF3RW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25EcmF3RW5kKG9sR2VvbWV0cnkpO1xyXG4gICAgICAgICAgICAvLyBpZiBldmVudCB3YXMgZmlyZWQgYXQgc2VsZWN0XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0RHJhdyhvbEdlb21ldHJ5LCBsYWJlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUhlaWdodFRhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGRlbGV0ZXMgdGhlIGZlYXR1cmVcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyU291cmNlXHJcbiAgICAgICAgICAgIC5nZXRGZWF0dXJlcygpXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKChkcmF3aW5nTGF5ZXJGZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBkcmF3aW5nTGF5ZXJGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xyXG4gICAgICAgICAgICAgIGlmIChvbEdlb21ldHJ5ID09PSBnZW9tZXRyeSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UucmVtb3ZlRmVhdHVyZShcclxuICAgICAgICAgICAgICAgICAgZHJhd2luZ0xheWVyRmVhdHVyZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd1xyXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25EcmF3RW5kKG9sR2VvbWV0cnk6IE9sR2VvbWV0cnksIHJhZGl1cz86IG51bWJlcikge1xyXG4gICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShvbEdlb21ldHJ5LCByYWRpdXMpO1xyXG4gICAgdGhpcy5jbGVhckxhYmVsc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcclxuICAgIHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk1vZGlmeURyYXcob2xHZW9tZXRyeSkge1xyXG4gICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLmFjdGl2ZVN0b3JlLmFsbCgpO1xyXG5cclxuICAgIGVudGl0aWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBlbnRpdHlJZCA9IGVudGl0eS5wcm9wZXJ0aWVzLmlkO1xyXG5cclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeUlkID0gb2xHZW9tZXRyeS5vbF91aWQ7XHJcblxyXG4gICAgICBpZiAoZW50aXR5SWQgPT09IG9sR2VvbWV0cnlJZCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWxPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgZW50aXR5LnByb3BlcnRpZXMuZHJhdyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb250U2l6ZUFuZFN0eWxlKFxyXG4gICAgICAgICAgb2xHZW9tZXRyeSxcclxuICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5zcGxpdCgnICcpWzBdLnJlcGxhY2UoJ3B4JywgJycpLFxyXG4gICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuZm9udFN0eWxlLnN1YnN0cmluZyhcclxuICAgICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuZm9udFN0eWxlLmluZGV4T2YoJyAnKSArIDFcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmlsbEFuZFN0cm9rZUNvbG9yKFxyXG4gICAgICAgICAgb2xHZW9tZXRyeSxcclxuICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmRyYXdpbmdTdHlsZS5maWxsLFxyXG4gICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuZHJhd2luZ1N0eWxlLnN0cm9rZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVPZmZzZXQoXHJcbiAgICAgICAgICBvbEdlb21ldHJ5LFxyXG4gICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMub2Zmc2V0WCxcclxuICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucmVwbGFjZUZlYXR1cmVJblN0b3JlKGVudGl0eSwgb2xHZW9tZXRyeSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblNlbGVjdERyYXcob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGxhYmVsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5hY3RpdmVTdG9yZS5hbGwoKTtcclxuXHJcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xyXG4gICAgb2xHZW9tZXRyeS5vbF91aWQgPSBvbEZlYXR1cmUuZ2V0KCdpZCcpO1xyXG5cclxuICAgIGNvbnN0IG9sR2VvbWV0cnlDb29yZGluYXRlcyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBvbEdlb21ldHJ5LmdldENvb3JkaW5hdGVzKClbMF1cclxuICAgICk7XHJcblxyXG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUNvb3JkaW5hdGVzID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKTtcclxuICAgICAgaWYgKG9sR2VvbWV0cnlDb29yZGluYXRlcyA9PT0gZW50aXR5Q29vcmRpbmF0ZXMpIHtcclxuICAgICAgICBjb25zdCBmb250U2l6ZSA9IG9sRmVhdHVyZVxyXG4gICAgICAgICAgLmdldCgnZm9udFN0eWxlJylcclxuICAgICAgICAgIC5zcGxpdCgnICcpWzBdXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgICAgY29uc3QgZm9udFN0eWxlID0gb2xGZWF0dXJlXHJcbiAgICAgICAgICAuZ2V0KCdmb250U3R5bGUnKVxyXG4gICAgICAgICAgLnN1YnN0cmluZyhvbEZlYXR1cmUuZ2V0KCdmb250U3R5bGUnKS5pbmRleE9mKCcgJykgKyAxKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsbENvbG9yID0gb2xGZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuZmlsbDtcclxuICAgICAgICBjb25zdCBzdHJva2VDb2xvciA9IG9sRmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLnN0cm9rZTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IG9sRmVhdHVyZS5nZXQoJ29mZnNldFgnKTtcclxuICAgICAgICBjb25zdCBvZmZzZXRZID0gb2xGZWF0dXJlLmdldCgnb2Zmc2V0WScpO1xyXG5cclxuICAgICAgICBjb25zdCByYWQ6IG51bWJlciA9IGVudGl0eS5wcm9wZXJ0aWVzLnJhZFxyXG4gICAgICAgICAgPyBlbnRpdHkucHJvcGVydGllcy5yYWRcclxuICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWxPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgbGFiZWwpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRm9udFNpemVBbmRTdHlsZShvbEdlb21ldHJ5LCBmb250U2l6ZSwgZm9udFN0eWxlKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxBbmRTdHJva2VDb2xvcihvbEdlb21ldHJ5LCBmaWxsQ29sb3IsIHN0cm9rZUNvbG9yKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZU9mZnNldChvbEdlb21ldHJ5LCBvZmZzZXRYLCBvZmZzZXRZKTtcclxuICAgICAgICB0aGlzLnJlcGxhY2VGZWF0dXJlSW5TdG9yZShlbnRpdHksIG9sR2VvbWV0cnksIHJhZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIGRyYXcgbGFiZWwgdG8gdGhlIHN0b3JlLiBUaGUgbG9hZGluZyBzdHJhZ2VneSBvZiB0aGUgc3RvcmVcclxuICAgKiB3aWxsIHRyaWdnZXIgYW5kIGFkZCB0aGUgZmVhdHVyZSB0byB0aGUgbWFwLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkRmVhdHVyZVRvU3RvcmUoXHJcbiAgICBvbEdlb21ldHJ5LFxyXG4gICAgcmFkaXVzPzogbnVtYmVyLFxyXG4gICAgZmVhdHVyZT86IEZlYXR1cmVXaXRoRHJhd1xyXG4gICkge1xyXG4gICAgbGV0IHJhZDogbnVtYmVyO1xyXG4gICAgbGV0IGNlbnRlcjQzMjY6IEFycmF5PG51bWJlcj47XHJcbiAgICBsZXQgcG9pbnQ0MzI2OiBBcnJheTxudW1iZXI+O1xyXG4gICAgbGV0IGxvbjQzMjY6IG51bWJlcjtcclxuICAgIGxldCBsYXQ0MzI2OiBudW1iZXI7XHJcbiAgICBjb25zdCBmZWF0dXJlSWQgPSBmZWF0dXJlID8gZmVhdHVyZS5wcm9wZXJ0aWVzLmlkIDogb2xHZW9tZXRyeS5vbF91aWQ7XHJcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcclxuXHJcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBPbEdlb0pTT04oKS53cml0ZUdlb21ldHJ5T2JqZWN0KG9sR2VvbWV0cnksIHtcclxuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXHJcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXHJcbiAgICB9KSBhcyBhbnk7XHJcblxyXG4gICAgaWYgKG9sR2VvbWV0cnkgaW5zdGFuY2VvZiBPbENpcmNsZSB8fCByYWRpdXMpIHtcclxuICAgICAgaWYgKHJhZGl1cykge1xyXG4gICAgICAgIHJhZCA9IHJhZGl1cztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBnZW9tZXRyeS50eXBlID0gJ1BvaW50JztcclxuICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlcyA9IG9sR2VvbWV0cnkuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgY29uc3QgZXh0ZW50NDMyNiA9IHRyYW5zZm9ybShcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVsyXSxcclxuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVszXVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHByb2plY3Rpb24sXHJcbiAgICAgICAgICAnRVBTRzo0MzI2J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY2VudGVyNDMyNiA9IHRyYW5zZm9ybShcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVswXSxcclxuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVsxXVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHByb2plY3Rpb24sXHJcbiAgICAgICAgICAnRVBTRzo0MzI2J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgbG9uNDMyNiA9IGNlbnRlcjQzMjZbMF07XHJcbiAgICAgICAgbGF0NDMyNiA9IGNlbnRlcjQzMjZbMV07XHJcbiAgICAgICAgcmFkID0gZ2V0RGlzdGFuY2UoY2VudGVyNDMyNiwgZXh0ZW50NDMyNik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2xHZW9tZXRyeSBpbnN0YW5jZW9mIE9sUG9pbnQpIHtcclxuICAgICAgcG9pbnQ0MzI2ID0gdHJhbnNmb3JtKFxyXG4gICAgICAgIG9sR2VvbWV0cnkuZ2V0RmxhdENvb3JkaW5hdGVzKCksXHJcbiAgICAgICAgcHJvamVjdGlvbixcclxuICAgICAgICAnRVBTRzo0MzI2J1xyXG4gICAgICApO1xyXG4gICAgICBsb240MzI2ID0gcG9pbnQ0MzI2WzBdO1xyXG4gICAgICBsYXQ0MzI2ID0gcG9pbnQ0MzI2WzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZlU3RvcmUudXBkYXRlKHtcclxuICAgICAgdHlwZTogRkVBVFVSRSxcclxuICAgICAgZ2VvbWV0cnksXHJcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgaWQ6IGZlYXR1cmVJZCxcclxuICAgICAgICBkcmF3OiBvbEdlb21ldHJ5LmdldCgnX2xhYmVsJyksXHJcbiAgICAgICAgbG9uZ2l0dWRlOiBsb240MzI2ID8gbG9uNDMyNiA6IG51bGwsXHJcbiAgICAgICAgbGF0aXR1ZGU6IGxhdDQzMjYgPyBsYXQ0MzI2IDogbnVsbCxcclxuICAgICAgICByYWQ6IHJhZCA/IHJhZCA6IG51bGwsXHJcbiAgICAgICAgZm9udFN0eWxlOiBvbEdlb21ldHJ5LmdldCgnZm9udFN0eWxlXycpLFxyXG4gICAgICAgIGRyYXdpbmdTdHlsZToge1xyXG4gICAgICAgICAgZmlsbDogb2xHZW9tZXRyeS5nZXQoJ2ZpbGxDb2xvcl8nKSxcclxuICAgICAgICAgIHN0cm9rZTogb2xHZW9tZXRyeS5nZXQoJ3N0cm9rZUNvbG9yXycpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvZmZzZXRYOiBvbEdlb21ldHJ5LmdldCgnb2Zmc2V0WF8nKSxcclxuICAgICAgICBvZmZzZXRZOiBvbEdlb21ldHJ5LmdldCgnb2Zmc2V0WV8nKVxyXG4gICAgICB9LFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgaWQ6IGZlYXR1cmVJZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGZpbGw6IFsnJ10sXHJcbiAgICAgIHN0cm9rZTogWycnXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0dXBMYXllcihpc05ld0xheWVyPzogYm9vbGVhbikge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRHJhd0xheWVyUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChsYWJlbDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5jb25maXJtRmxhZykge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVTdG9yZS5zdGF0ZS51cGRhdGVBbGwoe3NlbGVjdGVkOiBmYWxzZX0pO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhEcmF3PihbXSwgeyBtYXA6IHRoaXMubWFwIH0pO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UgPSBuZXcgT2xWZWN0b3JTb3VyY2UoKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuICAgICAgICAgIHRoaXMuaW5pdFN0b3JlKGxhYmVsLCBpc05ld0xheWVyKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPSB0aGlzLmNyZWF0ZURyYXdDb250cm9sKFxyXG4gICAgICAgICAgICB0aGlzLmZpbGxDb2xvcixcclxuICAgICAgICAgICAgdGhpcy5zdHJva2VDb2xvcixcclxuICAgICAgICAgICAgdGhpcy5zdHJva2VXaWR0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2V0R2VvbWV0cnlUeXBlKHRoaXMuY3Vyckdlb21ldHJ5VHlwZSk7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XHJcbiAgICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKHRoaXMuYWN0aXZlU3RvcmUpO1xyXG4gICAgICAgICAgdGhpcy5kcmF3Q29udHJvbHMucHVzaChbdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQsIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2xdKTtcclxuICAgICAgICAgIHRoaXMuZHJhd0NvbnRyb2xzRXZlbnQuZW1pdCh0aGlzLmRyYXdDb250cm9scyk7XHJcbiAgICAgICAgICB0aGlzLmxheWVyc0lERXZlbnQuZW1pdCh0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5pZCk7XHJcbiAgICAgICAgICB0aGlzLmlzQ3JlYXRpbmdOZXdMYXllciA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmxhYmVsc0FyZVNob3duKXtcclxuICAgICAgICAgICAgdGhpcy5vblRvZ2dsZUxhYmVscygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVMYXllckNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3QudmFsdWUgPSB0aGlzLmFjdGl2ZURyYXdpbmdMYXllcjtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0LnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjUwKTtcclxuICB9XHJcblxyXG4gIC8vIEhUTUwgdXNlciBpbnRlcmFjdGlvbnNcclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgZG91YmxlLWNsaWNrcyB0aGUgc2VsZWN0ZWQgZHJhd2luZ1xyXG4gICAqL1xyXG4gIGVkaXRMYWJlbERyYXdpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmVUb09sKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF0sXHJcbiAgICAgICAgdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKS5nZXRDb2RlKClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5vcGVuRHJhd0RpYWxvZyhvbEdlb21ldHJ5LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuU2hvcmN1dHNEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKERyYXdTaG9yY3V0c0NvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVEcmF3aW5ncygpIHtcclxuICAgIHRoaXMuYWN0aXZlU3RvcmUuZGVsZXRlTWFueSh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUuZm9yRWFjaCgoc2VsZWN0ZWRGZWF0dXJlKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyU291cmNlXHJcbiAgICAgICAgLmdldEZlYXR1cmVzKClcclxuICAgICAgICAuZm9yRWFjaCgoZHJhd2luZ0xheWVyRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBkcmF3aW5nTGF5ZXJGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkRmVhdHVyZS5wcm9wZXJ0aWVzLmlkID09PSBnZW9tZXRyeS5vbF91aWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UucmVtb3ZlRmVhdHVyZShkcmF3aW5nTGF5ZXJGZWF0dXJlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVIZWlnaHRUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcyB0aGUgbGFiZWxzIHRvZ2dsZVxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlTGFiZWxzKCkge1xyXG4gICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnRvZ2dsZUxhYmVsc0FyZVNob3duKCk7XHJcbiAgICB0aGlzLmxhYmVsc0FyZVNob3duID0gIXRoaXMubGFiZWxzQXJlU2hvd247XHJcbiAgICB0aGlzLmljb25cclxuICAgICAgPyB0aGlzLmVsZW1lbnRTdHlsZShcclxuICAgICAgICAgIHRoaXMubGFiZWxzQXJlU2hvd24sXHJcbiAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKVxyXG4gICAgICA6IHRoaXMuZWxlbWVudFN0eWxlKFxyXG4gICAgICAgICAgdGhpcy5sYWJlbHNBcmVTaG93bixcclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlRHJhd0NvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIHRvZ2dsZXMgdGhlIERyYXcgY29udHJvbCBpcyB0b2dnbGVkXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25Ub2dnbGVEcmF3Q29udHJvbCh0b2dnbGVJc0NoZWNrZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRvZ2dsZUlzQ2hlY2tlZCA/IHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKSA6IHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVc2VyIGNoYW5nZXMgcHJvcGVydGllcyBvZiBhIGRyYXdpbmcgZWxlbWVudFxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IHRoZSBjdXJyZW50IGxheWVyIHdpdGggdGhlIGN1cnJlbnQgc3RvcmUgYW5kIHRoZSBjdXJyZW50IGxheWVyU291cmNlXHJcbiAgICovXHJcblxyXG4gIHB1YmxpYyBvbkxheWVyQ2hhbmdlKGN1cnJMYXllcj86IFZlY3RvckxheWVyKSB7XHJcbiAgICBpZiAoY3VyckxheWVyKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUuc3RhdGUudXBkYXRlQWxsKHtzZWxlY3RlZDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pc0NyZWF0aW5nTmV3TGF5ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyID0gY3VyckxheWVyO1xyXG4gICAgICB0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5vcGFjaXR5ID0gMTtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuICAgICAgaWYgKCF0aGlzLmxhYmVsc0FyZVNob3duKXtcclxuICAgICAgICB0aGlzLm9uVG9nZ2xlTGFiZWxzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQoc3RvcmUgPT4gc3RvcmUubGF5ZXIuaWQgPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkKTtcclxuICAgICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IHRoaXMuZHJhd0NvbnRyb2xzLmZpbmQoZGMgPT4gZGNbMF0gPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkKVsxXTtcclxuICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UgPSB0aGlzLmFjdGl2ZURyYXdDb250cm9sLm9sRHJhd2luZ0xheWVyU291cmNlO1xyXG4gICAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldEdlb21ldHJ5VHlwZSh0aGlzLmN1cnJHZW9tZXRyeVR5cGUpO1xyXG4gICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHVwTGF5ZXIodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZUxheWVyQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZUxheWVyKG5ld1RpdGxlPywgaXNOZXdMYXllcj8pIHtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5hbGxMYXllcnMpe1xyXG4gICAgICBsZXQgbnVtYmVySWQgPSBOdW1iZXIobGF5ZXIuaWQucmVwbGFjZSgnaWdvLWRyYXctbGF5ZXInLCcnKSk7XHJcbiAgICAgIHRoaXMubGF5ZXJDb3VudGVySUQgPSBNYXRoLm1heChudW1iZXJJZCx0aGlzLmxheWVyQ291bnRlcklEKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyID0gbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxyXG4gICAgICBpZDogJ2lnby1kcmF3LWxheWVyJyArICsrdGhpcy5sYXllckNvdW50ZXJJRCxcclxuICAgICAgdGl0bGU6IGlzTmV3TGF5ZXJcclxuICAgICAgICA/IG5ld1RpdGxlXHJcbiAgICAgICAgOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kcmF3LmRyYXdpbmcnKSxcclxuICAgICAgekluZGV4OiAyMDAsXHJcbiAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgIHN0eWxlOiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuY3JlYXRlSW5kaXZpZHVhbEVsZW1lbnRTdHlsZShcclxuICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICByZXNvbHV0aW9uLFxyXG4gICAgICAgICAgdGhpcy5sYWJlbHNBcmVTaG93bixcclxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdmb250U3R5bGUnKSxcclxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdkcmF3aW5nU3R5bGUnKS5maWxsLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLnN0cm9rZSxcclxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRYJyksXHJcbiAgICAgICAgICBmZWF0dXJlLmdldCgnb2Zmc2V0WScpLFxyXG4gICAgICAgICAgdGhpcy5pY29uXHJcbiAgICAgICAgKTtcclxuICAgICAgfSxcclxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxyXG4gICAgICBleHBvcnRhYmxlOiB0cnVlLFxyXG4gICAgICBicm93c2FibGU6IGZhbHNlLFxyXG4gICAgICB3b3Jrc3BhY2U6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0cnlCaW5kU3RvcmVMYXllcih0aGlzLmFjdGl2ZVN0b3JlLCB0aGlzLmFjdGl2ZURyYXdpbmdMYXllcik7XHJcblxyXG4gICAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5KFxyXG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlLFxyXG4gICAgICBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KHtcclxuICAgICAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneShcclxuICAgICAgdGhpcy5hY3RpdmVTdG9yZSxcclxuICAgICAgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcclxuICAgICAgICBtYXA6IHRoaXMubWFwLFxyXG4gICAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5Ob25lLFxyXG4gICAgICAgIG1hbnk6IHRydWVcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLmFjdGl2ZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xyXG4gICAgdGhpcy5hY3RpdmVTdG9yZS5zb3VyY2Uub2wub24oXHJcbiAgICAgICdyZW1vdmVmZWF0dXJlJyxcclxuICAgICAgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50PE9sR2VvbWV0cnk+KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcclxuICAgICAgICB0aGlzLmNsZWFyTGFiZWxzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyB0aGUgY29sb3IgaW4gYSBjb2xvciBwaWNrZXJcclxuICAgKiBAcGFyYW0gbGFiZWxzQXJlU2hvd24gd2hldGVyIHRoZSBsYWJlbHMgYXJlIHNob3duIG9yIG5vdFxyXG4gICAqIEBwYXJhbSBpc0FuSWNvbiB3aGV0ZXIgdGhlIGZlYXR1cmUgaXMgYW4gaWNvbiBvciBub3RcclxuICAgKiBAcGFyYW0gZmlsbENvbG9yIHdoaWNoIGlzIHRoZSBmaWxsaW5nIGNvbG9yXHJcbiAgICogQHBhcmFtIHN0cm9rZUNvbG9yIHdoaWNoIGlzIHRoZSBzdHJva2UgY29sb3JcclxuICAgKi9cclxuICBvbkNvbG9yQ2hhbmdlKFxyXG4gICAgbGFiZWxzQXJlU2hvd246IGJvb2xlYW4sXHJcbiAgICBpc0FuSWNvbjogYm9vbGVhbixcclxuICAgIGZpbGxDb2xvcjogc3RyaW5nLFxyXG4gICAgc3Ryb2tlQ29sb3I6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoID4gMCAmJiAhaXNBbkljb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKFxyXG4gICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgIHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxBbmRTdHJva2VDb2xvcihvbEZlYXR1cmUsIGZpbGxDb2xvciwgc3Ryb2tlQ29sb3IpO1xyXG5cclxuICAgICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmFjdGl2ZVN0b3JlXHJcbiAgICAgICAgICAuYWxsKClcclxuICAgICAgICAgIC5maW5kKChlKSA9PiBlLm1ldGEuaWQgPT09IG9sRmVhdHVyZS5nZXRJZCgpKTtcclxuICAgICAgICBlbnRpdHkucHJvcGVydGllcy5kcmF3aW5nU3R5bGUuZmlsbCA9IG9sRmVhdHVyZS5nZXQoJ2ZpbGxDb2xvcl8nKTtcclxuICAgICAgICBlbnRpdHkucHJvcGVydGllcy5kcmF3aW5nU3R5bGUuc3Ryb2tlID0gb2xGZWF0dXJlLmdldCgnc3Ryb2tlQ29sb3JfJyk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVTdG9yZS51cGRhdGUoZW50aXR5KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbGVtZW50U3R5bGUobGFiZWxzQXJlU2hvd24sIGlzQW5JY29uKTtcclxuICAgIHRoaXMuY3JlYXRlRHJhd0NvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGZvbnQgc2l6ZSBvci9hbmQgc3R5bGVcclxuICAgKiBAcGFyYW0gbGFiZWxzQXJlU2hvd24gd2hldGVyIHRoZSBsYWJlbHMgYXJlIHNob3duIG9yIG5vdFxyXG4gICAqIEBwYXJhbSBzaXplIHRoZSBzaXplIG9mIHRoZSBmb250XHJcbiAgICogQHBhcmFtIHN0eWxlIHRoZSBzdHlsZSBvZiB0aGUgZm9udFxyXG4gICAqL1xyXG5cclxuICBvbkZvbnRDaGFuZ2UobGFiZWxzQXJlU2hvd246IGJvb2xlYW4sIHNpemU6IHN0cmluZywgc3R5bGU6IEZvbnRUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUuZm9yRWFjaCgoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgIGxldCBvbEZlYXR1cmUgPSBmZWF0dXJlVG9PbChcclxuICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGb250U2l6ZUFuZFN0eWxlKG9sRmVhdHVyZSwgc2l6ZSwgc3R5bGUpO1xyXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuYWN0aXZlU3RvcmVcclxuICAgICAgICAgIC5hbGwoKVxyXG4gICAgICAgICAgLmZpbmQoKGUpID0+IGUubWV0YS5pZCA9PT0gb2xGZWF0dXJlLmdldElkKCkpO1xyXG4gICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmZvbnRTdHlsZSA9IG9sRmVhdHVyZS5nZXQoJ2ZvbnRTdHlsZV8nKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZVN0b3JlLnVwZGF0ZShlbnRpdHkpO1xyXG4gICAgICAgIG9sRmVhdHVyZSA9IHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkuZ2V0RmVhdHVyZXMoKS5maW5kKGYgPT4gZi5nZXRJZCgpID09PSBlbnRpdHkubWV0YS5pZCk7XHJcbiAgICAgICAgb2xGZWF0dXJlLnNldFByb3BlcnRpZXMoeyBmb250U3R5bGU6IGVudGl0eS5wcm9wZXJ0aWVzLmZvbnRTdHlsZSB9KTtcclxuICAgICAgICBvbEZlYXR1cmUuY2hhbmdlZCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZm9udFNpemUgPSBzaXplO1xyXG4gICAgICB0aGlzLmZvbnRTdHlsZSA9IHN0eWxlO1xyXG5cclxuICAgICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnNldEZvbnRTaXplKHNpemUpO1xyXG4gICAgICB0aGlzLmRyYXdTdHlsZVNlcnZpY2Uuc2V0Rm9udFN0eWxlKHN0eWxlKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBob3Jpem9udGFsL3ZlcnRpY2FsIG9mZnNldFxyXG4gICAqIEBwYXJhbSBsYWJlbHNBcmVTaG93biB3aGV0ZXIgdGhlIGxhYmVscyBhcmUgc2hvd24gb3Igbm90XHJcbiAgICogQHBhcmFtIG9mZnNldFggaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIGxhYmVsXHJcbiAgICogQHBhcmFtIG9mZnNldFkgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSBsYWJlbFxyXG4gICAqL1xyXG5cclxuICBvbk9mZnNldExhYmVsQ2hhbmdlKFxyXG4gICAgbGFiZWxzQXJlU2hvd246IGJvb2xlYW4sXHJcbiAgICBvZmZzZXRYOiBudW1iZXIsXHJcbiAgICBvZmZzZXRZOiBudW1iZXJcclxuICApIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKFxyXG4gICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgIHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZU9mZnNldChvbEZlYXR1cmUsIG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuYWN0aXZlU3RvcmVcclxuICAgICAgICAgIC5hbGwoKVxyXG4gICAgICAgICAgLmZpbmQoKGUpID0+IGUubWV0YS5pZCA9PT0gb2xGZWF0dXJlLmdldElkKCkpO1xyXG4gICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFggPSBvbEZlYXR1cmUuZ2V0KCdvZmZzZXRYXycpO1xyXG4gICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFkgPSBvbEZlYXR1cmUuZ2V0KCdvZmZzZXRZXycpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlU3RvcmUudXBkYXRlKGVudGl0eSk7XHJcbiAgICAgICAgb2xGZWF0dXJlID0gdGhpcy5hY3RpdmVTdG9yZS5sYXllci5vbC5nZXRTb3VyY2UoKS5nZXRGZWF0dXJlcygpLmZpbmQoZiA9PiBmLmdldElkKCkgPT09IGVudGl0eS5tZXRhLmlkKTtcclxuICAgICAgICBvbEZlYXR1cmUuc2V0UHJvcGVydGllcyh7IG9mZnNldFg6IGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFgsIG9mZnNldFk6IGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFkgfSk7XHJcbiAgICAgICAgb2xGZWF0dXJlLmNoYW5nZWQoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSWNvbkNoYW5nZShldmVudD8pIHtcclxuICAgIHRoaXMuaWNvbiA9IGV2ZW50O1xyXG4gICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnNldEljb24odGhpcy5pY29uKTtcclxuICAgIHRoaXMuZWxlbWVudFN0eWxlKHRydWUsIHRoaXMuaWNvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbmV3IGdlb21ldHJ5IHR5cGVcclxuICAgKiBAcGFyYW0gZ2VvbWV0cnlUeXBlIHRoZSBnZW9tZXRyeSB0eXBlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXHJcbiAgICovXHJcbiAgb25HZW9tZXRyeVR5cGVDaGFuZ2UoZ2VvbWV0cnlUeXBlOiBUeXBlKSB7XHJcbiAgICB0aGlzLmN1cnJHZW9tZXRyeVR5cGUgPSBnZW9tZXRyeVR5cGU7XHJcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldEdlb21ldHJ5VHlwZShnZW9tZXRyeVR5cGUpO1xyXG4gICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlcyB0aGUgcHJvcGVydGllcyBvZiBvbEZlYXR1cmUgaW5wdXR0ZWRcclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBsYWJlbCBvZiBhIGdlb21ldHJ5IHdoZW4gYSBsYWJlbCBpcyBlbnRlcmVkIGluIGEgZGlhbG9nIGJveFxyXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IHRoZSBnZW9tZXRyeVxyXG4gICAqIEBwYXJhbSBsYWJlbCB0aGUgbGFiZWxcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZUxhYmVsT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sR2VvbWV0cnksIGxhYmVsOiBzdHJpbmcpIHtcclxuICAgIG9sR2VvbWV0cnkuc2V0UHJvcGVydGllcyhcclxuICAgICAge1xyXG4gICAgICAgIF9sYWJlbDogbGFiZWxcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9udFNpemVBbmRTdHlsZShcclxuICAgIG9sRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+LFxyXG4gICAgZm9udFNpemU6IHN0cmluZyxcclxuICAgIGZvbnRTdHlsZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBvbEZlYXR1cmUuc2V0UHJvcGVydGllcyhcclxuICAgICAge1xyXG4gICAgICAgIGZvbnRTdHlsZV86IGAke2ZvbnRTaXplfXB4ICR7Zm9udFN0eWxlfWBcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsbEFuZFN0cm9rZUNvbG9yKFxyXG4gICAgb2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sXHJcbiAgICBmaWxsQ29sb3I6IHN0cmluZyxcclxuICAgIHN0cm9rZUNvbG9yOiBzdHJpbmdcclxuICApIHtcclxuICAgIG9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsbENvbG9yXzogZmlsbENvbG9yLFxyXG4gICAgICAgIHN0cm9rZUNvbG9yXzogc3Ryb2tlQ29sb3JcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlT2Zmc2V0KFxyXG4gICAgb2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sXHJcbiAgICBvZmZzZXRYOiBudW1iZXIsXHJcbiAgICBvZmZzZXRZOiBudW1iZXJcclxuICApIHtcclxuICAgIG9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKFxyXG4gICAgICB7XHJcbiAgICAgICAgb2Zmc2V0WF86IG9mZnNldFgsXHJcbiAgICAgICAgb2Zmc2V0WV86IG9mZnNldFlcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZXMgdmFsdWVzIG9mIHRoZSBzZWxlY3RlZCBlbGVtZW50IG9uIHRoZSBIVE1MIHZpZXdcclxuXHJcbiAgZ2V0RmVhdHVyZUZvbnRTaXplKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmZvbnRTdHlsZVxyXG4gICAgICAgICAgLnNwbGl0KCcgJylbMF1cclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICA6ICcyMCc7XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlRm9udFN0eWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoID4gMFxyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF0ucHJvcGVydGllcy5mb250U3R5bGUuc3Vic3RyaW5nKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5pbmRleE9mKCcgJykgKyAxXHJcbiAgICAgICAgKVxyXG4gICAgICA6IEZvbnRUeXBlLkFyaWFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZUZpbGxDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlWzBdLnByb3BlcnRpZXMuZHJhd2luZ1N0eWxlLmZpbGxcclxuICAgICAgOiAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJztcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVTdHJva2VDb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlWzBdLnByb3BlcnRpZXMuZHJhd2luZ1N0eWxlLnN0cm9rZVxyXG4gICAgICA6ICdyZ2JhKDE0Myw3LDcsMSknO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZU9mZnNldFgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLm9mZnNldFhcclxuICAgICAgOiB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuZ2V0T2Zmc2V0WCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZU9mZnNldFkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLm9mZnNldFlcclxuICAgICAgOiAnMCc7XHJcbiAgfVxyXG5cclxuICBnZXQgYWxsRm9udFN0eWxlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhGb250VHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWxsTGF5ZXJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwLmxheWVycy5maWx0ZXIoKGxheWVyKSA9PlxyXG4gICAgICBsYXllci5pZC5pbmNsdWRlcygnaWdvLWRyYXctbGF5ZXInKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUhlaWdodFRhYmxlKCkge1xyXG4gICAgLy8gQ2hlY2sgdGhlIGFtb3VudCBvZiByb3dzIGFzIGEgcG9zc2libGUgYWx0ZXJuYXRpdmVcclxuXHJcbiAgICB0aGlzLm51bWJlck9mRHJhd2luZ3MgPSB0aGlzLmFjdGl2ZVN0b3JlLmNvdW50JC5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5udW1iZXJPZkRyYXdpbmdzID4gMTBcclxuICAgICAgPyAodGhpcy50YWJsZVRlbXBsYXRlLnRhYmxlSGVpZ2h0ID0gJzM1dmgnKVxyXG4gICAgICA6ICh0aGlzLnRhYmxlVGVtcGxhdGUudGFibGVIZWlnaHQgPSAnYXV0bycpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQWN0aXZlTGF5ZXIoKSB7XHJcbiAgICBsZXQgY3VyckxheWVyID0gdGhpcy5hbGxMYXllcnMuZmluZChsYXllciA9PiBsYXllci50aXRsZSA9PT0gdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIudGl0bGUpO1xyXG4gICAgcmV0dXJuIGN1cnJMYXllciA/IGN1cnJMYXllciA6IHRoaXMuYWxsTGF5ZXJzWzBdO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVyIG1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgdGhlIGNvcnJlY3QgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd0NvbnRyb2woKSB7XHJcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG4gICAgdGhpcy5hY3RpdmF0ZURyYXdDb250cm9sKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgdG9vbHRpcHMgb2YgYW4gT0wgZ2VvbWV0cnlcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPTCBnZW9tZXRyeSB3aXRoIHRvb2x0aXBzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhckxhYmVsc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KSB7XHJcbiAgICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KS5mb3JFYWNoKFxyXG4gICAgICAob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICBpZiAob2xUb29sdGlwICYmIG9sVG9vbHRpcC5nZXRNYXAoKSkge1xyXG4gICAgICAgICAgdGhpcy5tYXAub2wucmVtb3ZlT3ZlcmxheShvbFRvb2x0aXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVwbGFjZSB0aGUgZmVhdHVyZSBpbiB0aGUgc3RvcmVcclxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gcmVwbGFjZVxyXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IHRoZSBuZXcgZ2VvbWV0cnkgdG8gaW5zZXJ0IGluIHRoZSBzdG9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVwbGFjZUZlYXR1cmVJblN0b3JlKFxyXG4gICAgZW50aXR5LFxyXG4gICAgb2xHZW9tZXRyeTogT2xHZW9tZXRyeSxcclxuICAgIHJhZGl1cz86IG51bWJlclxyXG4gICkge1xyXG4gICAgdGhpcy5hY3RpdmVTdG9yZS5kZWxldGUoZW50aXR5KTtcclxuICAgIHRoaXMub25EcmF3RW5kKG9sR2VvbWV0cnksIHJhZGl1cyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIHRoZSBhY3RpdmUgZHJhdyBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWFjdGl2YXRlRHJhd0NvbnRyb2woKSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlRHJhd0NvbnRyb2wpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRyYXdFbmQkJCkge1xyXG4gICAgICB0aGlzLmRyYXdFbmQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2V0T2xNYXAodW5kZWZpbmVkKTtcclxuICAgIHRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgYSBnaXZlbiBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZURyYXdDb250cm9sKCkge1xyXG4gICAgdGhpcy5kcmF3Q29udHJvbElzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmRyYXdFbmQkJCA9IHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuZW5kJC5zdWJzY3JpYmUoXHJcbiAgICAgIChvbEdlb21ldHJ5OiBPbEdlb21ldHJ5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcGVuRHJhd0RpYWxvZyhvbEdlb21ldHJ5LCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLm1vZGlmeSQuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbEdlb21ldHJ5KSA9PiB7XHJcbiAgICAgIHRoaXMub25Nb2RpZnlEcmF3KG9sR2VvbWV0cnkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRyYXdTZWxlY3QkJCkge1xyXG4gICAgICB0aGlzLmRyYXdTZWxlY3QkJCA9IHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2VsZWN0JC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKG9sRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5EcmF3RGlhbG9nKG9sRmVhdHVyZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldE9sTWFwKHRoaXMubWFwLm9sLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlY3JlYXRlcyB0aGUgc3R5bGUgb2YgdGhlIGZlYXR1cmUgc3RvcmVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbGVtZW50U3R5bGUobGFiZWxzQXJlU2hvd246IGJvb2xlYW4sIGlzQW5JY29uPykge1xyXG4gICAgaWYgKGlzQW5JY29uKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmNyZWF0ZUluZGl2aWR1YWxFbGVtZW50U3R5bGUoXHJcbiAgICAgICAgICBmZWF0dXJlLFxyXG4gICAgICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgICAgIGxhYmVsc0FyZVNob3duLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2ZvbnRTdHlsZScpLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLmZpbGwsXHJcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuc3Ryb2tlLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ29mZnNldFgnKSxcclxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRZJyksXHJcbiAgICAgICAgICB0aGlzLmljb25cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmNyZWF0ZUluZGl2aWR1YWxFbGVtZW50U3R5bGUoXHJcbiAgICAgICAgICBmZWF0dXJlLFxyXG4gICAgICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgICAgIGxhYmVsc0FyZVNob3duLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2ZvbnRTdHlsZScpLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLmZpbGwsXHJcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuc3Ryb2tlLFxyXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ29mZnNldFgnKSxcclxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRZJylcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cclxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICAoY2hhbmdlKT1cIm9uR2VvbWV0cnlUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIiBbdmFsdWVdPVwiZ2VvbWV0cnlUeXBlLlBvaW50XCI+XHJcbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiZ2VvbWV0cnlUeXBlLlBvaW50XCI+XHJcbiAgICAgICAge3snaWdvLmdlby5kcmF3LicgKyBnZW9tZXRyeVR5cGUuUG9pbnQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG5cclxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJnZW9tZXRyeVR5cGUuTGluZVN0cmluZ1wiPlxyXG4gICAgICAgIHt7J2lnby5nZW8uZHJhdy4nICsgZ2VvbWV0cnlUeXBlLkxpbmVTdHJpbmcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG5cclxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJnZW9tZXRyeVR5cGUuUG9seWdvblwiPlxyXG4gICAgICAgIHt7J2lnby5nZW8uZHJhdy4nICsgZ2VvbWV0cnlUeXBlLlBvbHlnb24gfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG5cclxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJnZW9tZXRyeVR5cGUuQ2lyY2xlXCI+XHJcbiAgICAgICAge3snaWdvLmdlby5kcmF3LicgKyBnZW9tZXRyeVR5cGUuQ2lyY2xlIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkcmF3LW9wdGlvbnMgbWF0LXR5cG9ncmFwaHlcIj5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkcmF3Q29udHJvbElzRGlzYWJsZWRcIlxyXG4gICAgICBbY2hlY2tlZF09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcclxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRHJhd0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCI+XHJcbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5kcmF3Q29udHJvbCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgIFtjaGVja2VkXT1cImxhYmVsc0FyZVNob3duXCJcclxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlTGFiZWxzKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyAnaWdvLmdlby5kcmF3LnRvZ2dsZU1hcFRvb2x0aXBzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHJcbiAgPGRpdj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGF5ZXItc2VsZWN0XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby5kcmF3LmxheWVyLnRpdGxlJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0ICNzZWxlY3RlZExheWVyIChzZWxlY3Rpb25DaGFuZ2UpPVwib25MYXllckNoYW5nZShzZWxlY3RlZExheWVyLnZhbHVlKVwiIFt2YWx1ZV09XCJ1cGRhdGVBY3RpdmVMYXllcigpXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxheWVyIG9mIGFsbExheWVyc1wiIFt2YWx1ZV09XCJsYXllclwiPlxyXG4gICAgICAgICAge3sgbGF5ZXIudGl0bGUgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gaWQ9XCJjcmVhdGVOZXdMYXllclwiID5cclxuICAgICAgICAgIHt7J2lnby5nZW8uZHJhdy5sYXllci5jcmVhdGVOZXdMYXllcicgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJhY3RpdmVEcmF3aW5nTGF5ZXJcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgW2NvbG9yXT1cImFjdGl2ZURyYXdpbmdMYXllci52aXNpYmxlID8gJ3ByaW1hcnknIDogJ2RlZmF1bHQnXCJcclxuICAgICAgY29sbGFwc2libGVCdXR0b25cclxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cImFjdGl2ZURyYXdpbmdMYXllci52aXNpYmxlID9cclxuICAgICAgICAgICAgICAgICAgICAoJ2lnby5nZW8ubGF5ZXIuaGlkZUxheWVyJyB8IHRyYW5zbGF0ZSkgOlxyXG4gICAgICAgICAgICAgICAgICAgICgnaWdvLmdlby5sYXllci5zaG93TGF5ZXInIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgIChjbGljayk9XCJhY3RpdmVEcmF3aW5nTGF5ZXIudmlzaWJsZSA9ICFhY3RpdmVEcmF3aW5nTGF5ZXIudmlzaWJsZVwiPlxyXG4gICAgICA8bWF0LWljb25cclxuICAgICAgICBbc3ZnSWNvbl09XCJhY3RpdmVEcmF3aW5nTGF5ZXIudmlzaWJsZSA/ICdleWUnIDogJ2V5ZS1vZmYnXCI+XHJcbiAgICAgIDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICA8ZGl2PlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cImFjdGl2ZVN0b3JlLmNvdW50JC5nZXRWYWx1ZSgpID4gMFwiXHJcbiAgICAgIGNsYXNzPVwiZGVsZXRlQnRuXCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5kcmF3LmRlbGV0ZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkRmVhdHVyZXMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgIChjbGljayk9XCJkZWxldGVEcmF3aW5ncygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCI+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxpZ28tZW50aXR5LXRhYmxlXHJcbiAgICAgICAgI3RhYmxlXHJcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb21wYWN0XCJcclxuICAgICAgICBbc3RvcmVdPVwiYWN0aXZlU3RvcmVcIlxyXG4gICAgICAgIFt0ZW1wbGF0ZV09XCJ0YWJsZVRlbXBsYXRlXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiZWRpdExhYmVsRHJhd2luZygpXCI+XHJcbiAgICAgIDwvaWdvLWVudGl0eS10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaWNvbi1vcHRpb25zXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpY29ucy5sZW5ndGggPj0gMVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLmRyYXcuaWNvbicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3Q+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJib3hcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJ7eyBpY29uIH19XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiIChjbGljayk9XCJvbkljb25DaGFuZ2UoKVwiPnt7ICdpZ28uZ2VvLmRyYXcubm9JY29uJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGljb25faHRtbCBvZiBpY29uc1wiXHJcbiAgICAgICAgICBbdmFsdWVdPVwiaWNvbl9odG1sXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkljb25DaGFuZ2UoaWNvbl9odG1sKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJveFwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cInt7IGljb25faHRtbCB9fVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uXHJcbiAgICBtYXQtaWNvbi1idXR0b25cclxuICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgIGRpc2FibGVSaXBwbGU9XCJ0cnVlXCJcclxuICAgIChjbGljayk9XCJvcGVuU2hvcmN1dHNEaWFsb2coKVwiXHJcbiAgPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIGNsYXNzPVwic2hvcnRjdXRzLWljb25cIlxyXG4gICAgICBzdmdJY29uPVwia2V5Ym9hcmQtb3V0bGluZVwiXHJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5kcmF3LnNob3J0Y3V0cycgfCB0cmFuc2xhdGVcIlxyXG4gICAgPlxyXG4gICAgPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGJ1dHRvblxyXG4gICAgKm5nSWY9XCJzZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGhcIlxyXG4gICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAoY2xpY2spPVwib3BlblN0eWxlTW9kYWxEaWFsb2coKVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5zdHlsZS5zdHlsZU1vZGFsVG9vbHRpcCcgfCB0cmFuc2xhdGVcIj5cclxuICAgIHt7J2lnby5nZW8ubGF5ZXIuc3R5bGUuc3R5bGVNb2RhbCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIGNsYXNzPVwic3R5bGUtaWNvblwiXHJcbiAgICAgIHN2Z0ljb249XCJwYWxldHRlXCJcclxuICAgICAgW21hdEJhZGdlXT1cInNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aFwiXHJcbiAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcclxuICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCI+XHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
|
|
1069
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU1sRSxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFcEMsT0FBTyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFJMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFrQixNQUFNLCtDQUErQyxDQUFDO0FBRXBHLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLE1BQU0sZUFBZSxDQUFDO0FBRWxDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDdEIvRCxxQ0FBNEQ7SUFDMUQsWUFDRjtJQUFBLGlCQUFhOzs7SUFGK0IsZ0NBQWU7SUFDekQsZUFDRjtJQURFLCtDQUNGOzs7O0lBTUosa0NBVXFFO0lBQW5FLDhKQUFTLHNGQUF3RCxJQUFDOzs7SUFDbEUsK0JBRVc7SUFDYixpQkFBUzs7O0lBWFAsaUZBQTRELHFKQUFBO0lBUzFELGVBQTBEO0lBQTFELCtFQUEwRDs7OztJQU05RCxrQ0FTNkI7SUFBM0IsZ0tBQVMsZUFBQSx3QkFBZ0IsQ0FBQSxJQUFDOzs7SUFDMUIsK0JBQXNDO0lBQ3hDLGlCQUFTOzs7SUFKUCx3RUFBZ0QseUVBQUE7OztJQXNCNUMsK0JBQThCO0lBQzVCLDBCQUFzQjtJQUN4QixpQkFBTTs7O0lBREMsZUFBZ0I7SUFBaEIsK0RBQWdCOzs7O0lBSXpCLHNDQUdvQztJQUFsQyw0UEFBUyxlQUFBLG1DQUF1QixDQUFBLElBQUM7SUFDakMsK0JBQWlCO0lBQ2YsMEJBQTJCO0lBQzdCLGlCQUFNLEVBQUE7OztJQUpOLHFDQUFtQjtJQUdaLGVBQXFCO0lBQXJCLGdFQUFxQjs7OztJQWRsQyxzQ0FBMEMsZ0JBQUE7SUFDN0IsWUFBcUM7O0lBQUEsaUJBQVk7SUFDNUQsa0NBQVkseUJBQUE7SUFFUixpRkFFTTtJQUNSLGlCQUFxQjtJQUNyQixzQ0FBOEM7SUFBekIsNEtBQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7SUFBQyxZQUF1Qzs7SUFBQSxpQkFBYTtJQUNsRyxpR0FPYTtJQUNmLGlCQUFhLEVBQUE7OztJQWhCRixlQUFxQztJQUFyQywrREFBcUM7SUFHdEMsZUFBVTtJQUFWLGtDQUFVO0lBSTRCLGVBQXVDO0lBQXZDLGlFQUF1QztJQUU3RCxlQUFRO0lBQVIsc0NBQVE7Ozs7SUEyQnRDLGtDQUtxRTtJQURuRSxnS0FBUyxlQUFBLDhCQUFzQixDQUFBLElBQUM7O0lBRWhDLFlBQ0E7O0lBQUEsK0JBTVc7SUFDYixpQkFBUzs7O0lBVFAsMEZBQWtFO0lBQ2xFLGVBQ0E7SUFEQSx1RkFDQTtJQUdFLGVBQTJDO0lBQTNDLGdFQUEyQzs7QURsRGpELE1BQU0sT0FBTyxhQUFhO0lBNEZ4QixZQUNVLGVBQWdDLEVBQ2hDLFdBQStCLEVBQy9CLGdCQUFrQyxFQUNsQyxNQUFpQixFQUNqQixlQUFnQztRQUpoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFoRzFDOzs7V0FHRztRQUNJLGtCQUFhLEdBQXdCO1lBQzFDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO29CQUNwRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDO29CQUMzRSxhQUFhLEVBQUUsQ0FBQyxPQUF3QixFQUFFLEVBQUU7d0JBQzFDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2pDLENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFSyxpQkFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLHFDQUFxQztRQVVqRSxZQUFPLEdBQW1DLEVBQUUsQ0FBQztRQVM3QyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQVdqQixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQ3BELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVU3QyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUM1QixVQUFLLEdBQTBCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1FBQzVFLDZCQUF3QixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFJakQsc0JBQWlCLEdBQ3RCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR25CLDBCQUFxQixHQUFZLElBQUksQ0FBQztRQUN0Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFcEMsb0JBQWUsR0FBbUIsRUFBRSxDQUFDO1FBRXRDLGFBQVEsR0FBVyxRQUFRLENBQUM7UUFNNUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBWSxDQUFDO1FBV3hELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBbEZELElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBc0M7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBOEI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUdELElBQ0ksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGtCQUFrQixDQUFDLEtBQWtCO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQTRERCxrRkFBa0Y7SUFDbEYsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxDQUFrQixFQUFFLEVBQUU7Z0JBQ3ZELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzthQUNkLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUM3QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBWSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFO29CQUMzQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztpQkFDbkI7Z0JBQ0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN2QixLQUFLLENBQUMsU0FBUztxQkFDWixPQUFPLENBQUMsQ0FBQyxNQUFxQyxFQUFFLEVBQUU7b0JBQ2pELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2dCQUN4QyxDQUFDLENBQUM7cUJBQ0QsSUFBSSxDQUNILEtBQUssRUFBRSxDQUNSO3FCQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQXdDLEVBQUUsRUFBRTtvQkFDdEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLEtBQUssQ0FBQyxTQUFTO3FCQUNaLE9BQU8sQ0FBQyxDQUFDLE1BQXFDLEVBQUUsRUFBRTtvQkFDakQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQztxQkFDRCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtpQkFDakM7cUJBQ0EsU0FBUyxDQUFDLENBQUMsT0FBd0MsRUFBRSxFQUFFO29CQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDLENBQUMsQ0FDTCxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN2QixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUM3QixHQUFHLElBQUksQ0FBQzt3QkFDTixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzt3QkFDekQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQ2YsU0FBa0IsRUFDbEIsV0FBb0IsRUFDcEIsV0FBb0I7UUFFcEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUN4QyxZQUFZLEVBQUUsU0FBUztZQUN2QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCO1lBQ2pELGlCQUFpQixFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQ3RDLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxDQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFFSyxTQUFTLENBQUMsUUFBaUIsRUFBRSxVQUFvQjtRQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE1BQXFDLEVBQUUsRUFBRTtZQUNqRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQztRQUN4QyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtTQUNqQzthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQXdDLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEMsR0FBRyxJQUFJLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ3pELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFSDs7T0FFRztJQUNELG9CQUFvQjtRQUNsQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsNkNBQTZDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUN0RCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsSUFBSSxFQUFFO29CQUNKLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO29CQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEI7Z0JBQ0QsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQyxDQUFDO1lBRUgsOERBQThEO1lBQzlELFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7Z0JBQ3pELGdDQUFnQztnQkFDaEMsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFO29CQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDcEcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzNFO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxVQUFVLEVBQUUsU0FBa0I7UUFDbkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLDBDQUEwQztZQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDckQsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2FBQy9DLENBQUMsQ0FBQztZQUVILDhEQUE4RDtZQUM5RCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQ2xELGdDQUFnQztnQkFDaEMsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFO29CQUMzQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDL0Q7b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsd0JBQXdCLENBQzNCLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsaUJBQWlCLENBQ2xCLENBQUM7cUJBQ0g7b0JBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDL0QsSUFBSSxDQUFDLFlBQVksQ0FDZixVQUFVLEVBQ1YsQ0FBQyxFQUNELFVBQVUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RDLENBQUM7cUJBQ0g7b0JBRUQsaUNBQWlDO29CQUNqQyxJQUFJLFNBQVMsRUFBRTt3QkFDYixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQiwrQkFBK0I7cUJBQ2hDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUN0QztvQkFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUI7Z0JBQ0Qsc0JBQXNCO3FCQUNqQjtvQkFDSCxJQUFJLENBQUMsd0JBQXdCO3lCQUMxQixXQUFXLEVBQUU7eUJBQ2IsT0FBTyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRTt3QkFDL0IsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxFQUFTLENBQUM7d0JBQzFELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTs0QkFDM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FDekMsbUJBQW1CLENBQ3BCLENBQUM7eUJBQ0g7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ047WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTLENBQUMsVUFBc0IsRUFBRSxNQUFlO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQVU7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV4QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFFdEMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUV2QyxJQUFJLFFBQVEsS0FBSyxZQUFZLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLHNCQUFzQixDQUN6QixVQUFVLEVBQ1YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FDN0MsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsVUFBVSxFQUNWLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFDbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUN0QyxDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQ2YsVUFBVSxFQUNWLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUN6QixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FDMUIsQ0FBQztnQkFDRixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWdDLEVBQUUsS0FBYTtRQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXhDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQVMsQ0FBQztRQUNsRCxVQUFVLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUMxQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQy9CLENBQUM7UUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxxQkFBcUIsS0FBSyxpQkFBaUIsRUFBRTtnQkFDL0MsTUFBTSxRQUFRLEdBQUcsU0FBUztxQkFDdkIsR0FBRyxDQUFDLFdBQVcsQ0FBQztxQkFDaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDYixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQixNQUFNLFNBQVMsR0FBRyxTQUFTO3FCQUN4QixHQUFHLENBQUMsV0FBVyxDQUFDO3FCQUNoQixTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTFELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFFekQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDekMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFekMsTUFBTSxHQUFHLEdBQVcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHO29CQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHO29CQUN2QixDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNkLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNyRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FDdkIsVUFBVSxFQUNWLE1BQWUsRUFDZixPQUF5QjtRQUV6QixJQUFJLEdBQVcsQ0FBQztRQUNoQixJQUFJLFVBQXlCLENBQUM7UUFDOUIsSUFBSSxTQUF3QixDQUFDO1FBQzdCLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksT0FBZSxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDdEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDL0QsaUJBQWlCLEVBQUUsVUFBVTtZQUM3QixjQUFjLEVBQUUsVUFBVTtTQUMzQixDQUFRLENBQUM7UUFFVixJQUFJLFVBQVUsWUFBWSxRQUFRLElBQUksTUFBTSxFQUFFO1lBQzVDLElBQUksTUFBTSxFQUFFO2dCQUNWLEdBQUcsR0FBRyxNQUFNLENBQUM7YUFDZDtpQkFBTTtnQkFDTCxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDeEIsUUFBUSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FDMUI7b0JBQ0UsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ25DLEVBQ0QsVUFBVSxFQUNWLFdBQVcsQ0FDWixDQUFDO2dCQUNGLFVBQVUsR0FBRyxTQUFTLENBQ3BCO29CQUNFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbEMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNuQyxFQUNELFVBQVUsRUFDVixXQUFXLENBQ1osQ0FBQztnQkFDRixPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBRUQsSUFBSSxVQUFVLFlBQVksT0FBTyxFQUFFO1lBQ2pDLFNBQVMsR0FBRyxTQUFTLENBQ25CLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxFQUMvQixVQUFVLEVBQ1YsV0FBVyxDQUNaLENBQUM7WUFDRixPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUN0QixJQUFJLEVBQUUsT0FBTztZQUNiLFFBQVE7WUFDUixVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNoQyxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUM5QixTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ25DLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNyQixTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZDLFlBQVksRUFBRTtvQkFDWixJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7b0JBQ2xDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztpQkFDdkM7Z0JBQ0QsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7YUFDcEM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLFNBQVM7YUFDZDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLFVBQW9CO1FBQ3BDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtnQkFDMUQsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUNsRCxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7b0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxDQUFrQixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQzVFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUM3QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7b0JBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFDO3dCQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3ZCO29CQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQ3REO3FCQUFNO29CQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2lCQUMzRDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELHlCQUF5QjtJQUV6Qjs7T0FFRztJQUNILGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDdkMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FDaEQsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLHdCQUF3QjtpQkFDMUIsV0FBVyxFQUFFO2lCQUNiLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFdBQVcsRUFBUyxDQUFDO2dCQUMxRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQ3JELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztpQkFDbEU7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJO1lBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQ2YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUNMO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQ2YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsS0FBSyxDQUNOLENBQUM7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsbUJBQW1CLENBQUMsZUFBd0I7UUFDMUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELCtDQUErQztJQUUvQzs7T0FFRztJQUVJLGFBQWEsQ0FBQyxTQUF1QjtRQUMxQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7WUFDNUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFTLEVBQUUsVUFBVztRQUN2QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUM7WUFDakMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDeEMsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixFQUFFLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYztZQUM1QyxLQUFLLEVBQUUsVUFBVTtnQkFDZixDQUFDLENBQUMsUUFBUTtnQkFDVixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQ2xFLE1BQU0sRUFBRSxHQUFHO1lBQ1gsTUFBTSxFQUFFLElBQUksaUJBQWlCLEVBQUU7WUFDL0IsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FDdkQsT0FBTyxFQUNQLFVBQVUsRUFDVixJQUFJLENBQUMsY0FBYyxFQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ3RCLElBQUksQ0FBQyxJQUFJLENBQ1YsQ0FBQztZQUNKLENBQUM7WUFDRCxlQUFlLEVBQUUsSUFBSTtZQUNyQixVQUFVLEVBQUUsSUFBSTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixTQUFTLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLEtBQUs7YUFDZjtTQUNGLENBQUMsQ0FBQztRQUVILGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFN0QscUJBQXFCLENBQ25CLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksMkJBQTJCLENBQUM7WUFDOUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1NBQzNCLENBQUMsQ0FDSCxDQUFDO1FBRUYsdUJBQXVCLENBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksNkJBQTZCLENBQUM7WUFDaEMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQzFCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQzNCLGVBQWUsRUFDZixDQUFDLEtBQXNDLEVBQUUsRUFBRTtZQUN6QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQ1gsY0FBdUIsRUFDdkIsUUFBaUIsRUFDakIsU0FBaUIsRUFDakIsV0FBbUI7UUFFbkIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUN6QixPQUFPLEVBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQ2hELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRWpFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXO3FCQUM1QixHQUFHLEVBQUU7cUJBQ0wsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsWUFBWSxDQUFDLGNBQXVCLEVBQUUsSUFBWSxFQUFFLEtBQWU7UUFDakUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUN6QixPQUFPLEVBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQ2hELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXO3FCQUM1QixHQUFHLEVBQUU7cUJBQ0wsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUV2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUVILG1CQUFtQixDQUNqQixjQUF1QixFQUN2QixPQUFlLEVBQ2YsT0FBZTtRQUVmLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FDekIsT0FBTyxFQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUNoRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVc7cUJBQzVCLEdBQUcsRUFBRTtxQkFDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFNO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUMsWUFBa0I7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCwrQ0FBK0M7SUFFL0M7Ozs7T0FJRztJQUNLLHVCQUF1QixDQUFDLFVBQXNCLEVBQUUsS0FBYTtRQUNuRSxVQUFVLENBQUMsYUFBYSxDQUN0QjtZQUNFLE1BQU0sRUFBRSxLQUFLO1NBQ2QsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsU0FBZ0MsRUFDaEMsUUFBZ0IsRUFDaEIsU0FBaUI7UUFFakIsU0FBUyxDQUFDLGFBQWEsQ0FDckI7WUFDRSxVQUFVLEVBQUUsR0FBRyxRQUFRLE1BQU0sU0FBUyxFQUFFO1NBQ3pDLEVBQ0QsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU8sd0JBQXdCLENBQzlCLFNBQWdDLEVBQ2hDLFNBQWlCLEVBQ2pCLFdBQW1CO1FBRW5CLFNBQVMsQ0FBQyxhQUFhLENBQ3JCO1lBQ0UsVUFBVSxFQUFFLFNBQVM7WUFDckIsWUFBWSxFQUFFLFdBQVc7U0FDMUIsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZLENBQ2xCLFNBQWdDLEVBQ2hDLE9BQWUsRUFDZixPQUFlO1FBRWYsU0FBUyxDQUFDLGFBQWEsQ0FDckI7WUFDRSxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsT0FBTztTQUNsQixFQUNELElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELDBEQUEwRDtJQUUxRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTO2lCQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNiLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM1QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQ3RFO1lBQ0gsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJO1lBQzlELENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztJQUM5QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM1QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDaEUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87WUFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPO1lBQ3BELENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3RDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YscURBQXFEO1FBRXJELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRTtZQUN4QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUYsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsaUJBQWlCO0lBRWpCOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUIsQ0FBQyxVQUFVO1FBQ3hDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FDekMsQ0FBQyxTQUFnQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRDs7OztPQUlHO0lBQ0sscUJBQXFCLENBQzNCLE1BQU0sRUFDTixVQUFzQixFQUN0QixNQUFlO1FBRWYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUNwRCxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUMxRCxDQUFDLFNBQWdDLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUFDLGNBQXVCLEVBQUUsUUFBUztRQUNyRCxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUU7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUN2RCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGNBQWMsRUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ3RCLElBQUksQ0FBQyxJQUFJLENBQ1YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUU7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUN2RCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGNBQWMsRUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQ3ZCLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7MEVBdGhDVSxhQUFhO2dFQUFiLGFBQWE7Ozs7Ozs7UUM5RjFCLDJCQUFLLGFBQUEsaUNBQUE7UUFHQyxtSEFBVSxzQ0FBa0MsSUFBQztRQUM3Qyw0Q0FBZ0Q7UUFDOUMsWUFDRjs7UUFBQSxpQkFBb0I7UUFFcEIsNENBQXFEO1FBQ25ELFlBQ0Y7O1FBQUEsaUJBQW9CO1FBRXBCLDRDQUFrRDtRQUNoRCxhQUNGOztRQUFBLGlCQUFvQjtRQUVwQiw2Q0FBaUQ7UUFDL0MsYUFDRjs7UUFBQSxpQkFBb0IsRUFBQSxFQUFBO1FBSXhCLCtCQUF5QywyQkFBQTtRQUtyQyw2R0FBVSx1Q0FBbUMsSUFBQztRQUM5QyxhQUNGOztRQUFBLGlCQUFtQjtRQUVuQiw0Q0FJQztRQURDLHVHQUFVLG9CQUFnQixJQUFDO1FBRTNCLGFBQ0Y7O1FBQUEsaUJBQW1CLEVBQUE7UUFHckIsK0JBQTJCO1FBRTNCLDRCQUFLLHlCQUFBLGlCQUFBO1FBRVUsYUFBMEM7O1FBQUEsaUJBQVk7UUFDakUseUNBQWdIO1FBQXJGLDJLQUFtQixlQUFBLDRCQUFrQyxDQUFBLElBQUM7UUFDL0UsOEVBRWE7UUFDYix1Q0FBaUM7UUFDL0IsYUFDRjs7UUFBQSxpQkFBYSxFQUFBLEVBQUE7UUFHakIsdUVBY1M7UUFDWCxpQkFBTTtRQUNOLCtCQUEyQjtRQUMzQiw0QkFBSztRQUNILHVFQVdTO1FBRVQsNEJBQUssZ0NBQUE7UUFNRCwyR0FBWSxzQkFBa0IsSUFBQztRQUNqQyxpQkFBbUIsRUFBQSxFQUFBO1FBSXZCLGdDQUEwQjtRQUN4Qix3RkFrQmlCO1FBQ25CLGlCQUFNO1FBRU4sbUNBS0M7UUFEQywyRkFBUyx3QkFBb0IsSUFBQztRQUU5QixnQ0FPVzs7UUFDYixpQkFBUztRQUVULHVFQWNTO1FBQ1gsaUJBQU07O1FBbEo4QyxlQUE0QjtRQUE1Qiw4Q0FBNEI7UUFDdkQsZUFBNEI7UUFBNUIsOENBQTRCO1FBQzdDLGVBQ0Y7UUFERSxnR0FDRjtRQUVtQixlQUFpQztRQUFqQyxtREFBaUM7UUFDbEQsZUFDRjtRQURFLHFHQUNGO1FBRW1CLGVBQThCO1FBQTlCLGdEQUE4QjtRQUMvQyxlQUNGO1FBREUsbUdBQ0Y7UUFFbUIsZUFBNkI7UUFBN0IsK0NBQTZCO1FBQzlDLGVBQ0Y7UUFERSxrR0FDRjtRQU1BLGVBQWtDO1FBQWxDLG9EQUFrQyxvQ0FBQSwyQkFBQTtRQUlsQyxlQUNGO1FBREUsNEZBQ0Y7UUFHRSxlQUEwQjtRQUExQiw0Q0FBMEIsMkJBQUE7UUFJMUIsZUFDRjtRQURFLHlGQUNGO1FBT2EsZUFBMEM7UUFBMUMsd0VBQTBDO1FBQzZCLGVBQTZCO1FBQTdCLCtDQUE2QjtRQUMvRSxlQUFZO1FBQVosdUNBQVk7UUFJeEMsZUFDRjtRQURFLDRGQUNGO1FBSUQsZUFBd0I7UUFBeEIsNkNBQXdCO1FBa0J4QixlQUF1QztRQUF2Qyw0REFBdUM7UUFnQnRDLGVBQXFCO1FBQXJCLHVDQUFxQiwrQkFBQTtRQVFSLGVBQXVCO1FBQXZCLDRDQUF1QjtRQWdDdEMsZUFBbUQ7UUFBbkQsNkVBQW1EO1FBTXBELGVBQW9DO1FBQXBDLHlEQUFvQzt5OENEL0QzQjtZQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDO29CQUNKLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FDSDtnQkFDRCxLQUFLLENBQ0gsUUFBUSxFQUNSLEtBQUssQ0FBQztvQkFDSixPQUFPLEVBQUUsQ0FBQztpQkFDWCxDQUFDLENBQ0g7Z0JBQ0QsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQ3RELENBQUM7U0FDSDt1RkFLVSxhQUFhO2NBeEJ6QixTQUFTOzJCQUNFLFVBQVUsY0FDUjtvQkFDVixPQUFPLENBQUMsV0FBVyxFQUFFO3dCQUNuQixLQUFLLENBQ0gsTUFBTSxFQUNOLEtBQUssQ0FBQzs0QkFDSixPQUFPLEVBQUUsQ0FBQzt5QkFDWCxDQUFDLENBQ0g7d0JBQ0QsS0FBSyxDQUNILFFBQVEsRUFDUixLQUFLLENBQUM7NEJBQ0osT0FBTyxFQUFFLENBQUM7eUJBQ1gsQ0FBQyxDQUNIO3dCQUNELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO3dCQUNyRCxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztxQkFDdEQsQ0FBQztpQkFDSCxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTt3TEEyQnRDLEdBQUc7a0JBQVgsS0FBSztZQUdGLE1BQU07a0JBRFQsS0FBSztZQVVGLFlBQVk7a0JBRGYsS0FBSztZQVVGLGtCQUFrQjtrQkFEckIsS0FBSztZQVNJLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLGFBQWE7a0JBQXRCLE1BQU07WUFFRyxTQUFTO2tCQUFsQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLFdBQVc7a0JBQXBCLE1BQU07WUFFRyxRQUFRO2tCQUFqQixNQUFNO1lBQ0csU0FBUztrQkFBbEIsTUFBTTtZQTJCcUIsTUFBTTtrQkFBakMsU0FBUzttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBGRUFUVVJFLFxuICBGZWF0dXJlU3RvcmUsXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxuICB0cnlCaW5kU3RvcmVMYXllcixcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5LFxuICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneSxcbiAgRmVhdHVyZU1vdGlvbixcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5LFxuICBmZWF0dXJlVG9PbFxufSBmcm9tICcuLi8uLi9mZWF0dXJlJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9udFR5cGUsIEdlb21ldHJ5VHlwZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LmVudW0nO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyYXcsIEZlYXR1cmVXaXRoRHJhdyB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LmludGVyZmFjZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBWZWN0b3JTb3VyY2VFdmVudCBhcyBPbFZlY3RvclNvdXJjZUV2ZW50IH0gZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvdmVjdG9yLWxheWVyJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IERyYXdDb250cm9sIH0gZnJvbSAnLi4vLi4vZ2VvbWV0cnkvc2hhcmVkL2NvbnRyb2xzL2RyYXcnO1xuaW1wb3J0IHtcbiAgRW50aXR5UmVjb3JkLFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5cbmltcG9ydCAqIGFzIE9sU3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuaW1wb3J0IE9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCBPbFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBPbEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcbmltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXREaXN0YW5jZSB9IGZyb20gJ29sL3NwaGVyZSc7XG5pbXBvcnQgeyBEcmF3U3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2RyYXctc3R5bGUuc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdCwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERyYXdQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vZHJhdy1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJhd1Nob3JjdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kcmF3LXNob3JjdXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRUb29sdGlwc09mT2xHZW9tZXRyeSB9IGZyb20gJy4uLy4uL21lYXN1cmUvc2hhcmVkL21lYXN1cmUudXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlSW50ZXJhY3Rpb25TdHlsZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LnV0aWxzJztcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgRHJhd0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2RyYXctaWNvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN0eWxlTW9kYWxDb21wb25lbnQsIFN0eWxlTW9kYWxEYXRhIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc3R5bGUtbW9kYWwvc3R5bGUtbW9kYWwuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgdHJpZ2dlcixcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICBhbmltYXRlLFxuICB0cmFuc2l0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xuXG5pbXBvcnQgeyBEcmF3TGF5ZXJQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vZHJhdy1sYXllci1wb3B1cC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZHJhdycsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ29wZW4nLFxuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnY2xvc2VkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFthbmltYXRlKCc2MDBtcyBlYXNlJyldKSxcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzgwMG1zIGVhc2UnKV0pXG4gICAgXSlcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcmF3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERyYXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUYWJsZSB0ZW1wbGF0ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0YWJsZVRlbXBsYXRlOiBFbnRpdHlUYWJsZVRlbXBsYXRlID0ge1xuICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICBzZWxlY3RNYW55OiB0cnVlLFxuICAgIHNlbGVjdGlvbkNoZWNrYm94OiB0cnVlLFxuICAgIHNvcnQ6IHRydWUsXG4gICAgZml4ZWRIZWFkZXI6IHRydWUsXG4gICAgdGFibGVIZWlnaHQ6ICdhdXRvJyxcbiAgICBjb2x1bW5zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdEcmF3aW5nJyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubGFiZWxzJyksXG4gICAgICAgIHRvb2x0aXA6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcuY2hhbmdlTGFiZWwnKSxcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGZlYXR1cmU6IEZlYXR1cmVXaXRoRHJhdykgPT4ge1xuICAgICAgICAgIHJldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuZHJhdztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICBwdWJsaWMgZ2VvbWV0cnlUeXBlID0gR2VvbWV0cnlUeXBlOyAvLyBSZWZlcmVuY2UgdG8gdGhlIEdlb21ldHJ5VHlwZSBlbnVtXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwOyAvLyBNYXAgdG8gZHJhdyBvblxuXG4gIEBJbnB1dCgpXG4gIGdldCBzdG9yZXMoKTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoRHJhdz5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlcztcbiAgfVxuICBzZXQgc3RvcmVzKHZhbHVlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhEcmF3PltdKSB7XG4gICAgdGhpcy5fc3RvcmVzID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfc3RvcmVzOkZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aERyYXc+W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBnZXQgZHJhd0NvbnRyb2xzKCk6IFtzdHJpbmcsIERyYXdDb250cm9sXVtde1xuICAgIHJldHVybiB0aGlzLl9kcmF3Q29udHJvbHM7XG4gIH1cbiAgc2V0IGRyYXdDb250cm9scyh2YWx1ZTogW3N0cmluZywgRHJhd0NvbnRyb2xdW10pe1xuICAgIHRoaXMuX2RyYXdDb250cm9scyA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2RyYXdDb250cm9scyA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBhY3RpdmVEcmF3aW5nTGF5ZXIoKTogVmVjdG9yTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVEcmF3aW5nTGF5ZXI7XG4gIH1cbiAgc2V0IGFjdGl2ZURyYXdpbmdMYXllcih2YWx1ZTogVmVjdG9yTGF5ZXIpIHtcbiAgICB0aGlzLl9hY3RpdmVEcmF3aW5nTGF5ZXIgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9hY3RpdmVEcmF3aW5nTGF5ZXI6IFZlY3RvckxheWVyO1xuXG4gIEBPdXRwdXQoKSBhY3RpdmVMYXllckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmVjdG9yTGF5ZXI+KCk7XG4gIEBPdXRwdXQoKSBkcmF3Q29udHJvbHNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8W3N0cmluZywgRHJhd0NvbnRyb2xdW10+KCk7XG4gIEBPdXRwdXQoKSBsYXllcnNJREV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpIGZpbGxDb2xvcjogc3RyaW5nO1xuICBAT3V0cHV0KCkgc3Ryb2tlQ29sb3I6IHN0cmluZztcbiAgQE91dHB1dCgpIHN0cm9rZVdpZHRoOiBudW1iZXI7XG5cbiAgQE91dHB1dCgpIGZvbnRTaXplOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBmb250U3R5bGU6IHN0cmluZztcblxuICBwdWJsaWMgYWN0aXZlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlV2l0aERyYXc+O1xuICBwcml2YXRlIGxheWVyQ291bnRlcklEOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgZHJhdyQ6IEJlaGF2aW9yU3ViamVjdDxEcmF3PiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pOyAvLyBPYnNlcnZhYmxlIG9mIGRyYXdcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UgPSBuZXcgT2xWZWN0b3JTb3VyY2UoKTtcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3Q29udHJvbDogRHJhd0NvbnRyb2w7XG4gIHByaXZhdGUgZHJhd0VuZCQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZHJhd1NlbGVjdCQkOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzZWxlY3RlZEZlYXR1cmVzJDogQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVXaXRoRHJhd1tdPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG4gIHB1YmxpYyBmaWxsRm9ybTogc3RyaW5nO1xuICBwdWJsaWMgc3Ryb2tlRm9ybTogc3RyaW5nO1xuICBwdWJsaWMgZHJhd0NvbnRyb2xJc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGRyYXdDb250cm9sSXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGxhYmVsc0FyZVNob3duOiBib29sZWFuO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdib3R0b20nO1xuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIGljb25zOiBBcnJheTxzdHJpbmc+O1xuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgbnVtYmVyT2ZEcmF3aW5nczogbnVtYmVyO1xuICBwdWJsaWMgaXNDcmVhdGluZ05ld0xheWVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgY3Vyckdlb21ldHJ5VHlwZSA9IHRoaXMuZ2VvbWV0cnlUeXBlLlBvaW50IGFzIGFueTtcblxuICBAVmlld0NoaWxkKCdzZWxlY3RlZExheWVyJykgc2VsZWN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZHJhd1N0eWxlU2VydmljZTogRHJhd1N0eWxlU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZHJhd0ljb25TZXJ2aWNlOiBEcmF3SWNvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgICB0aGlzLmZpbGxDb2xvciA9IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRGaWxsQ29sb3IoKTtcbiAgICB0aGlzLnN0cm9rZUNvbG9yID0gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmdldFN0cm9rZUNvbG9yKCk7XG4gICAgdGhpcy5zdHJva2VXaWR0aCA9IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRTdHJva2VXaWR0aCgpO1xuICAgIHRoaXMubGFiZWxzQXJlU2hvd24gPSB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuZ2V0TGFiZWxzQXJlU2hvd24oKTtcbiAgICB0aGlzLmljb25zID0gdGhpcy5kcmF3SWNvblNlcnZpY2UuZ2V0SWNvbnMoKTtcbiAgICB0aGlzLmljb24gPSB0aGlzLmRyYXdTdHlsZVNlcnZpY2UuZ2V0SWNvbigpO1xuXG4gICAgdGhpcy5mb250U2l6ZSA9IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRGb250U2l6ZSgpO1xuICAgIHRoaXMuZm9udFN0eWxlID0gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmdldEZvbnRTdHlsZSgpO1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RvcmUgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGVudGl0aWVzIGFuZCBjcmVhdGUgdGhlIERyYXcgY29udHJvbFxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc3RvcmVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhEcmF3PihbXSwge1xuICAgICAgICBtYXA6IHRoaXMubWFwXG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5pdFN0b3JlKCk7XG4gICAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sID0gdGhpcy5jcmVhdGVEcmF3Q29udHJvbChcbiAgICAgICAgdGhpcy5maWxsQ29sb3IsXG4gICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IsXG4gICAgICAgIHRoaXMuc3Ryb2tlV2lkdGhcbiAgICAgICk7XG4gICAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldEdlb21ldHJ5VHlwZSh0aGlzLmdlb21ldHJ5VHlwZS5Qb2ludCBhcyBhbnkpO1xuICAgICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xuICAgICAgdGhpcy5zdG9yZXMucHVzaCh0aGlzLmFjdGl2ZVN0b3JlKTtcbiAgICAgIHRoaXMuZHJhd0NvbnRyb2xzLnB1c2goW3RoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkLCB0aGlzLmFjdGl2ZURyYXdDb250cm9sXSk7XG4gICAgICB0aGlzLmRyYXdDb250cm9sc0V2ZW50LmVtaXQodGhpcy5kcmF3Q29udHJvbHMpO1xuICAgICAgdGhpcy5sYXllcnNJREV2ZW50LmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQpO1xuICAgICAgdGhpcy5vbkxheWVyQ2hhbmdlKHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQoc3RvcmUgPT4gc3RvcmUubGF5ZXIuaWQgPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkKTtcbiAgICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPSB0aGlzLmRyYXdDb250cm9scy5maW5kKGRjID0+IGRjWzBdID09PSB0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5pZClbMV07XG4gICAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xuICAgICAgdGhpcy5hbGxMYXllcnMuZm9yRWFjaChsYXllciA9PiB7XG4gICAgICAgIGlmIChsYXllci5pZCAhPT0gdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQpIHtcbiAgICAgICAgICBsYXllci5vcGFjaXR5ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3RvcmUgPSB0aGlzLnN0b3Jlcy5maW5kKHMgPT4gcy5sYXllci5pZCA9PT0gbGF5ZXIuaWQpO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLnB1c2goXG4gICAgICAgICAgc3RvcmUuc3RhdGVWaWV3XG4gICAgICAgICAgICAubWFueUJ5JCgocmVjb3JkOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhEcmF3PikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhEcmF3PltdKSA9PiB7XG4gICAgICAgICAgICAgIHJlY29yZHMuZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0YXRlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxuICAgICAgICAgIHN0b3JlLnN0YXRlVmlld1xuICAgICAgICAgICAgLm1hbnlCeSQoKHJlY29yZDogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoRHJhdz4pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgc2tpcCgxKSAvLyBTa2lwIGluaXRpYWwgZW1pc3Npb25cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlY29yZHM6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aERyYXc+W10pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC5uZXh0KHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5lbnRpdHkpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcbiAgICAgICAgICBzdG9yZS5jb3VudCQuc3Vic2NyaWJlKChjbnQpID0+IHtcbiAgICAgICAgICAgIGNudCA+PSAxXG4gICAgICAgICAgICAgID8gKHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub3B0aW9ucy5zaG93SW5MYXllckxpc3QgPSB0cnVlKVxuICAgICAgICAgICAgICA6ICh0aGlzLmFjdGl2ZVN0b3JlLmxheWVyLm9wdGlvbnMuc2hvd0luTGF5ZXJMaXN0ID0gZmFsc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub25MYXllckNoYW5nZSh0aGlzLmFjdGl2ZURyYXdpbmdMYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgZHJhd2luZyBsYXllciBhbmQgdGhlIGludGVyYWN0aW9uc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYWxsTGF5ZXJzLmZvckVhY2gobGF5ZXIgPT4gbGF5ZXIub3BhY2l0eSA9IDEpO1xuICAgIHRoaXMuYWN0aXZlU3RvcmUuc3RhdGUudXBkYXRlQWxsKHtzZWxlY3RlZDogZmFsc2V9KTtcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEcmF3IENvbnRyb2xcbiAgICogQHBhcmFtIGZpbGxDb2xvciB0aGUgZmlsbCBjb2xvclxuICAgKiBAcGFyYW0gc3Ryb2tlQ29sb3IgdGhlIHN0cm9rZSBjb2xvclxuICAgKiBAcGFyYW0gc3Ryb2tlV2lkdGggdGhlIHN0cm9rZSB3aWR0aFxuICAgKiBAcmV0dXJucyBhIERyYXcgQ29udHJvbFxuICAgKi9cbiAgY3JlYXRlRHJhd0NvbnRyb2woXG4gICAgZmlsbENvbG9yPzogc3RyaW5nLFxuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nLFxuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IGFjdGl2ZURyYXdDb250cm9sID0gbmV3IERyYXdDb250cm9sKHtcbiAgICAgIGdlb21ldHJ5VHlwZTogdW5kZWZpbmVkLFxuICAgICAgZHJhd2luZ0xheWVyU291cmNlOiB0aGlzLmFjdGl2ZURyYXdpbmdMYXllclNvdXJjZSxcbiAgICAgIGRyYXdpbmdMYXllclN0eWxlOiBuZXcgT2xTdHlsZS5TdHlsZSh7fSksXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVJbnRlcmFjdGlvblN0eWxlKFxuICAgICAgICBmaWxsQ29sb3IsXG4gICAgICAgIHN0cm9rZUNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aFxuICAgICAgKVxuICAgIH0pO1xuICAgIHJldHVybiBhY3RpdmVEcmF3Q29udHJvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGRyYXdpbmcgbGF5ZXIgY3JlYXRpb25cbiAgICovXG5cbiAgcHJpdmF0ZSBpbml0U3RvcmUobmV3VGl0bGU/OiBzdHJpbmcsIGlzTmV3TGF5ZXI/OiBib29sZWFuKSB7XG4gICAgdGhpcy5jcmVhdGVMYXllcihuZXdUaXRsZSwgaXNOZXdMYXllcik7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUuc3RhdGVWaWV3XG4gICAgICAgIC5tYW55QnkkKChyZWNvcmQ6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aERyYXc+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc2tpcCgxKSAvLyBTa2lwIGluaXRpYWwgZW1pc3Npb25cbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhEcmF3PltdKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC5uZXh0KHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5lbnRpdHkpKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUuY291bnQkLnN1YnNjcmliZSgoY250KSA9PiB7XG4gICAgICAgIGNudCA+PSAxXG4gICAgICAgICAgPyAodGhpcy5hY3RpdmVTdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IHRydWUpXG4gICAgICAgICAgOiAodGhpcy5hY3RpdmVTdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4vKipcbiAqIE9wZW4gdGhlIHN0eWxlIG1vZGFsIGRpYWxvZyBib3hcbiAqL1xuICBvcGVuU3R5bGVNb2RhbERpYWxvZygpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIG9wZW4gdGhlIGRpYWxvZyBib3ggdXNlZCB0byBzdHlsZSBmZWF0dXJlc1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTdHlsZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIGljb25zOiB0aGlzLmljb25zLFxuICAgICAgICAgIGljb246IHRoaXMuaWNvblxuICAgICAgICB9LFxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgLy8gd2hlbiBkaWFsb2cgYm94IGlzIGNsb3NlZCwgZ2V0IGxhYmVsIGFuZCBzZXQgaXQgdG8gZ2VvbWV0cnlcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoZGF0YTogU3R5bGVNb2RhbERhdGEpID0+IHtcbiAgICAgICAgLy8gY2hlY2tzIGlmIHRoZSB1c2VyIGNsaWNrZWQgb2tcbiAgICAgICAgaWYgKGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5jb25maXJtRmxhZykge1xuICAgICAgICAgIHRoaXMub25Gb250Q2hhbmdlKHRoaXMubGFiZWxzQXJlU2hvd24sIGRhdGEuZm9udFNpemUsIGRhdGEuZm9udFN0eWxlKTtcbiAgICAgICAgICB0aGlzLm9uQ29sb3JDaGFuZ2UodGhpcy5sYWJlbHNBcmVTaG93biwgdGhpcy5pY29uID8gdHJ1ZSA6IGZhbHNlLCBkYXRhLmZpbGxDb2xvciwgZGF0YS5zdHJva2VDb2xvcik7XG4gICAgICAgICAgdGhpcy5vbk9mZnNldExhYmVsQ2hhbmdlKHRoaXMubGFiZWxzQXJlU2hvd24sIGRhdGEub2Zmc2V0WCwgZGF0YS5vZmZzZXRZKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGEgZGlhbG9nIGJveCB0byBlbnRlciBsYWJlbCBhbmQgZG8gc29tZXRoaW5nXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IGdlb21ldHJ5IGF0IGRyYXcgZW5kIG9yIHNlbGVjdGVkIGdlb21ldHJ5XG4gICAqIEBwYXJhbSBkcmF3RW5kIGV2ZW50IGZpcmVkIGF0IGRyYXdFbmQ/XG4gICAqL1xuICBwcml2YXRlIG9wZW5EcmF3RGlhbG9nKG9sR2VvbWV0cnksIGlzRHJhd0VuZDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gb3BlbiB0aGUgZGlhbG9nIGJveCB1c2VkIHRvIGVudGVyIGxhYmVsXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERyYXdQb3B1cENvbXBvbmVudCwge1xuICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBkYXRhOiB7IGN1cnJlbnRMYWJlbDogb2xHZW9tZXRyeS5nZXQoJ2RyYXcnKSB9XG4gICAgICB9KTtcblxuICAgICAgLy8gd2hlbiBkaWFsb2cgYm94IGlzIGNsb3NlZCwgZ2V0IGxhYmVsIGFuZCBzZXQgaXQgdG8gZ2VvbWV0cnlcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgobGFiZWw6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBjaGVja3MgaWYgdGhlIHVzZXIgY2xpY2tlZCBva1xuICAgICAgICBpZiAoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbmZpcm1GbGFnKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMYWJlbE9mT2xHZW9tZXRyeShvbEdlb21ldHJ5LCBsYWJlbCk7XG4gICAgICAgICAgaWYgKCFvbEdlb21ldHJ5LnZhbHVlc18uZm9udFN0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvbnRTaXplQW5kU3R5bGUob2xHZW9tZXRyeSwgJzIwJywgRm9udFR5cGUuQXJpYWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW9sR2VvbWV0cnkudmFsdWVzXy5kcmF3aW5nU3R5bGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsbEFuZFN0cm9rZUNvbG9yKFxuICAgICAgICAgICAgICBvbEdlb21ldHJ5LFxuICAgICAgICAgICAgICAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyxcbiAgICAgICAgICAgICAgJ3JnYmEoMTQzLDcsNywxKSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKG9sR2VvbWV0cnkudmFsdWVzXy5vZmZzZXRYIHx8IG9sR2VvbWV0cnkudmFsdWVzXy5vZmZzZXRZKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVPZmZzZXQoXG4gICAgICAgICAgICAgIG9sR2VvbWV0cnksXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIG9sR2VvbWV0cnkgaW5zdGFuY2VvZiBQb2ludCA/IC0xNSA6IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWYgZXZlbnQgd2FzIGZpcmVkIGF0IGRyYXcgZW5kXG4gICAgICAgICAgaWYgKGlzRHJhd0VuZCkge1xuICAgICAgICAgICAgdGhpcy5vbkRyYXdFbmQob2xHZW9tZXRyeSk7XG4gICAgICAgICAgICAvLyBpZiBldmVudCB3YXMgZmlyZWQgYXQgc2VsZWN0XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3REcmF3KG9sR2VvbWV0cnksIGxhYmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVIZWlnaHRUYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRlbGV0ZXMgdGhlIGZlYXR1cmVcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2VcbiAgICAgICAgICAgIC5nZXRGZWF0dXJlcygpXG4gICAgICAgICAgICAuZm9yRWFjaCgoZHJhd2luZ0xheWVyRmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGRyYXdpbmdMYXllckZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICAgICAgICAgIGlmIChvbEdlb21ldHJ5ID09PSBnZW9tZXRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyU291cmNlLnJlbW92ZUZlYXR1cmUoXG4gICAgICAgICAgICAgICAgICBkcmF3aW5nTGF5ZXJGZWF0dXJlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25EcmF3RW5kKG9sR2VvbWV0cnk6IE9sR2VvbWV0cnksIHJhZGl1cz86IG51bWJlcikge1xuICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUob2xHZW9tZXRyeSwgcmFkaXVzKTtcbiAgICB0aGlzLmNsZWFyTGFiZWxzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xuICAgIHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vZGlmeURyYXcob2xHZW9tZXRyeSkge1xuICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5hY3RpdmVTdG9yZS5hbGwoKTtcblxuICAgIGVudGl0aWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5SWQgPSBlbnRpdHkucHJvcGVydGllcy5pZDtcblxuICAgICAgY29uc3Qgb2xHZW9tZXRyeUlkID0gb2xHZW9tZXRyeS5vbF91aWQ7XG5cbiAgICAgIGlmIChlbnRpdHlJZCA9PT0gb2xHZW9tZXRyeUlkKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWxPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgZW50aXR5LnByb3BlcnRpZXMuZHJhdyk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9udFNpemVBbmRTdHlsZShcbiAgICAgICAgICBvbEdlb21ldHJ5LFxuICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5zcGxpdCgnICcpWzBdLnJlcGxhY2UoJ3B4JywgJycpLFxuICAgICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5zdWJzdHJpbmcoXG4gICAgICAgICAgICBlbnRpdHkucHJvcGVydGllcy5mb250U3R5bGUuaW5kZXhPZignICcpICsgMVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsQW5kU3Ryb2tlQ29sb3IoXG4gICAgICAgICAgb2xHZW9tZXRyeSxcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllcy5kcmF3aW5nU3R5bGUuZmlsbCxcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllcy5kcmF3aW5nU3R5bGUuc3Ryb2tlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlT2Zmc2V0KFxuICAgICAgICAgIG9sR2VvbWV0cnksXG4gICAgICAgICAgZW50aXR5LnByb3BlcnRpZXMub2Zmc2V0WCxcbiAgICAgICAgICBlbnRpdHkucHJvcGVydGllcy5vZmZzZXRZXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVwbGFjZUZlYXR1cmVJblN0b3JlKGVudGl0eSwgb2xHZW9tZXRyeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uU2VsZWN0RHJhdyhvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGFiZWw6IHN0cmluZykge1xuICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5hY3RpdmVTdG9yZS5hbGwoKTtcblxuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgb2xHZW9tZXRyeS5vbF91aWQgPSBvbEZlYXR1cmUuZ2V0KCdpZCcpO1xuXG4gICAgY29uc3Qgb2xHZW9tZXRyeUNvb3JkaW5hdGVzID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBvbEdlb21ldHJ5LmdldENvb3JkaW5hdGVzKClbMF1cbiAgICApO1xuXG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHlDb29yZGluYXRlcyA9IEpTT04uc3RyaW5naWZ5KGVudGl0eS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSk7XG4gICAgICBpZiAob2xHZW9tZXRyeUNvb3JkaW5hdGVzID09PSBlbnRpdHlDb29yZGluYXRlcykge1xuICAgICAgICBjb25zdCBmb250U2l6ZSA9IG9sRmVhdHVyZVxuICAgICAgICAgIC5nZXQoJ2ZvbnRTdHlsZScpXG4gICAgICAgICAgLnNwbGl0KCcgJylbMF1cbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJyk7XG4gICAgICAgIGNvbnN0IGZvbnRTdHlsZSA9IG9sRmVhdHVyZVxuICAgICAgICAgIC5nZXQoJ2ZvbnRTdHlsZScpXG4gICAgICAgICAgLnN1YnN0cmluZyhvbEZlYXR1cmUuZ2V0KCdmb250U3R5bGUnKS5pbmRleE9mKCcgJykgKyAxKTtcblxuICAgICAgICBjb25zdCBmaWxsQ29sb3IgPSBvbEZlYXR1cmUuZ2V0KCdkcmF3aW5nU3R5bGUnKS5maWxsO1xuICAgICAgICBjb25zdCBzdHJva2VDb2xvciA9IG9sRmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLnN0cm9rZTtcblxuICAgICAgICBjb25zdCBvZmZzZXRYID0gb2xGZWF0dXJlLmdldCgnb2Zmc2V0WCcpO1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gb2xGZWF0dXJlLmdldCgnb2Zmc2V0WScpO1xuXG4gICAgICAgIGNvbnN0IHJhZDogbnVtYmVyID0gZW50aXR5LnByb3BlcnRpZXMucmFkXG4gICAgICAgICAgPyBlbnRpdHkucHJvcGVydGllcy5yYWRcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy51cGRhdGVMYWJlbE9mT2xHZW9tZXRyeShvbEdlb21ldHJ5LCBsYWJlbCk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9udFNpemVBbmRTdHlsZShvbEdlb21ldHJ5LCBmb250U2l6ZSwgZm9udFN0eWxlKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsQW5kU3Ryb2tlQ29sb3Iob2xHZW9tZXRyeSwgZmlsbENvbG9yLCBzdHJva2VDb2xvcik7XG4gICAgICAgIHRoaXMudXBkYXRlT2Zmc2V0KG9sR2VvbWV0cnksIG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgICB0aGlzLnJlcGxhY2VGZWF0dXJlSW5TdG9yZShlbnRpdHksIG9sR2VvbWV0cnksIHJhZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIGRyYXcgbGFiZWwgdG8gdGhlIHN0b3JlLiBUaGUgbG9hZGluZyBzdHJhZ2VneSBvZiB0aGUgc3RvcmVcbiAgICogd2lsbCB0cmlnZ2VyIGFuZCBhZGQgdGhlIGZlYXR1cmUgdG8gdGhlIG1hcC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKFxuICAgIG9sR2VvbWV0cnksXG4gICAgcmFkaXVzPzogbnVtYmVyLFxuICAgIGZlYXR1cmU/OiBGZWF0dXJlV2l0aERyYXdcbiAgKSB7XG4gICAgbGV0IHJhZDogbnVtYmVyO1xuICAgIGxldCBjZW50ZXI0MzI2OiBBcnJheTxudW1iZXI+O1xuICAgIGxldCBwb2ludDQzMjY6IEFycmF5PG51bWJlcj47XG4gICAgbGV0IGxvbjQzMjY6IG51bWJlcjtcbiAgICBsZXQgbGF0NDMyNjogbnVtYmVyO1xuICAgIGNvbnN0IGZlYXR1cmVJZCA9IGZlYXR1cmUgPyBmZWF0dXJlLnByb3BlcnRpZXMuaWQgOiBvbEdlb21ldHJ5Lm9sX3VpZDtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcblxuICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IE9sR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgIH0pIGFzIGFueTtcblxuICAgIGlmIChvbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xDaXJjbGUgfHwgcmFkaXVzKSB7XG4gICAgICBpZiAocmFkaXVzKSB7XG4gICAgICAgIHJhZCA9IHJhZGl1cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdlb21ldHJ5LnR5cGUgPSAnUG9pbnQnO1xuICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlcyA9IG9sR2VvbWV0cnkuZ2V0Q2VudGVyKCk7XG4gICAgICAgIGNvbnN0IGV4dGVudDQzMjYgPSB0cmFuc2Zvcm0oXG4gICAgICAgICAgW1xuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVsyXSxcbiAgICAgICAgICAgIG9sR2VvbWV0cnkuZ2V0RmxhdENvb3JkaW5hdGVzKClbM11cbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgJ0VQU0c6NDMyNidcbiAgICAgICAgKTtcbiAgICAgICAgY2VudGVyNDMyNiA9IHRyYW5zZm9ybShcbiAgICAgICAgICBbXG4gICAgICAgICAgICBvbEdlb21ldHJ5LmdldEZsYXRDb29yZGluYXRlcygpWzBdLFxuICAgICAgICAgICAgb2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKVsxXVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvamVjdGlvbixcbiAgICAgICAgICAnRVBTRzo0MzI2J1xuICAgICAgICApO1xuICAgICAgICBsb240MzI2ID0gY2VudGVyNDMyNlswXTtcbiAgICAgICAgbGF0NDMyNiA9IGNlbnRlcjQzMjZbMV07XG4gICAgICAgIHJhZCA9IGdldERpc3RhbmNlKGNlbnRlcjQzMjYsIGV4dGVudDQzMjYpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xQb2ludCkge1xuICAgICAgcG9pbnQ0MzI2ID0gdHJhbnNmb3JtKFxuICAgICAgICBvbEdlb21ldHJ5LmdldEZsYXRDb29yZGluYXRlcygpLFxuICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAnRVBTRzo0MzI2J1xuICAgICAgKTtcbiAgICAgIGxvbjQzMjYgPSBwb2ludDQzMjZbMF07XG4gICAgICBsYXQ0MzI2ID0gcG9pbnQ0MzI2WzFdO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlU3RvcmUudXBkYXRlKHtcbiAgICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgICBnZW9tZXRyeSxcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDogZmVhdHVyZUlkLFxuICAgICAgICBkcmF3OiBvbEdlb21ldHJ5LmdldCgnX2xhYmVsJyksXG4gICAgICAgIGxvbmdpdHVkZTogbG9uNDMyNiA/IGxvbjQzMjYgOiBudWxsLFxuICAgICAgICBsYXRpdHVkZTogbGF0NDMyNiA/IGxhdDQzMjYgOiBudWxsLFxuICAgICAgICByYWQ6IHJhZCA/IHJhZCA6IG51bGwsXG4gICAgICAgIGZvbnRTdHlsZTogb2xHZW9tZXRyeS5nZXQoJ2ZvbnRTdHlsZV8nKSxcbiAgICAgICAgZHJhd2luZ1N0eWxlOiB7XG4gICAgICAgICAgZmlsbDogb2xHZW9tZXRyeS5nZXQoJ2ZpbGxDb2xvcl8nKSxcbiAgICAgICAgICBzdHJva2U6IG9sR2VvbWV0cnkuZ2V0KCdzdHJva2VDb2xvcl8nKVxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXRYOiBvbEdlb21ldHJ5LmdldCgnb2Zmc2V0WF8nKSxcbiAgICAgICAgb2Zmc2V0WTogb2xHZW9tZXRyeS5nZXQoJ29mZnNldFlfJylcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlSWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZmlsbDogWycnXSxcbiAgICAgIHN0cm9rZTogWycnXVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldHVwTGF5ZXIoaXNOZXdMYXllcj86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRHJhd0xheWVyUG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChsYWJlbDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuY29uZmlybUZsYWcpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7c2VsZWN0ZWQ6IGZhbHNlfSk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVTdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZVdpdGhEcmF3PihbXSwgeyBtYXA6IHRoaXMubWFwIH0pO1xuICAgICAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyU291cmNlID0gbmV3IE9sVmVjdG9yU291cmNlKCk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIub3BhY2l0eSA9IDA7XG4gICAgICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICAgICAgICB0aGlzLmluaXRTdG9yZShsYWJlbCwgaXNOZXdMYXllcik7XG4gICAgICAgICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9IHRoaXMuY3JlYXRlRHJhd0NvbnRyb2woXG4gICAgICAgICAgICB0aGlzLmZpbGxDb2xvcixcbiAgICAgICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICB0aGlzLnN0cm9rZVdpZHRoXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldEdlb21ldHJ5VHlwZSh0aGlzLmN1cnJHZW9tZXRyeVR5cGUpO1xuICAgICAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKHRoaXMuYWN0aXZlU3RvcmUpO1xuICAgICAgICAgIHRoaXMuZHJhd0NvbnRyb2xzLnB1c2goW3RoaXMuYWN0aXZlRHJhd2luZ0xheWVyLmlkLCB0aGlzLmFjdGl2ZURyYXdDb250cm9sXSk7XG4gICAgICAgICAgdGhpcy5kcmF3Q29udHJvbHNFdmVudC5lbWl0KHRoaXMuZHJhd0NvbnRyb2xzKTtcbiAgICAgICAgICB0aGlzLmxheWVyc0lERXZlbnQuZW1pdCh0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5pZCk7XG4gICAgICAgICAgdGhpcy5pc0NyZWF0aW5nTmV3TGF5ZXIgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoIXRoaXMubGFiZWxzQXJlU2hvd24pe1xuICAgICAgICAgICAgdGhpcy5vblRvZ2dsZUxhYmVscygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVyQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXI7XG4gICAgICAgICAgdGhpcy5zZWxlY3Quc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgLy8gSFRNTCB1c2VyIGludGVyYWN0aW9uc1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBkb3VibGUtY2xpY2tzIHRoZSBzZWxlY3RlZCBkcmF3aW5nXG4gICAqL1xuICBlZGl0TGFiZWxEcmF3aW5nKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCkge1xuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmVUb09sKFxuICAgICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlWzBdLFxuICAgICAgICB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKVxuICAgICAgKTtcbiAgICAgIHRoaXMub3BlbkRyYXdEaWFsb2cob2xHZW9tZXRyeSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TaG9yY3V0c0RpYWxvZygpIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKERyYXdTaG9yY3V0c0NvbXBvbmVudCk7XG4gIH1cblxuICBkZWxldGVEcmF3aW5ncygpIHtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChzZWxlY3RlZEZlYXR1cmUpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyU291cmNlXG4gICAgICAgIC5nZXRGZWF0dXJlcygpXG4gICAgICAgIC5mb3JFYWNoKChkcmF3aW5nTGF5ZXJGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBkcmF3aW5nTGF5ZXJGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55O1xuICAgICAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUucHJvcGVydGllcy5pZCA9PT0gZ2VvbWV0cnkub2xfdWlkKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURyYXdpbmdMYXllclNvdXJjZS5yZW1vdmVGZWF0dXJlKGRyYXdpbmdMYXllckZlYXR1cmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVIZWlnaHRUYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIHRvZ2dsZXMgdGhlIGxhYmVscyB0b2dnbGVcbiAgICovXG4gIG9uVG9nZ2xlTGFiZWxzKCkge1xuICAgIHRoaXMuZHJhd1N0eWxlU2VydmljZS50b2dnbGVMYWJlbHNBcmVTaG93bigpO1xuICAgIHRoaXMubGFiZWxzQXJlU2hvd24gPSAhdGhpcy5sYWJlbHNBcmVTaG93bjtcbiAgICB0aGlzLmljb25cbiAgICAgID8gdGhpcy5lbGVtZW50U3R5bGUoXG4gICAgICAgICAgdGhpcy5sYWJlbHNBcmVTaG93bixcbiAgICAgICAgICB0cnVlXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5lbGVtZW50U3R5bGUoXG4gICAgICAgICAgdGhpcy5sYWJlbHNBcmVTaG93bixcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIHRoaXMuY3JlYXRlRHJhd0NvbnRyb2woKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIHRoZSBEcmF3IGNvbnRyb2wgaXMgdG9nZ2xlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRHJhd0NvbnRyb2wodG9nZ2xlSXNDaGVja2VkOiBib29sZWFuKSB7XG4gICAgdG9nZ2xlSXNDaGVja2VkID8gdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpIDogdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgfVxuXG4gIC8vIFVzZXIgY2hhbmdlcyBwcm9wZXJ0aWVzIG9mIGEgZHJhd2luZyBlbGVtZW50XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgdGhlIGN1cnJlbnQgbGF5ZXIgd2l0aCB0aGUgY3VycmVudCBzdG9yZSBhbmQgdGhlIGN1cnJlbnQgbGF5ZXJTb3VyY2VcbiAgICovXG5cbiAgcHVibGljIG9uTGF5ZXJDaGFuZ2UoY3VyckxheWVyPzogVmVjdG9yTGF5ZXIpIHtcbiAgICBpZiAoY3VyckxheWVyKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7c2VsZWN0ZWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLmlzQ3JlYXRpbmdOZXdMYXllciA9IGZhbHNlO1xuICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIub3BhY2l0eSA9IDA7XG4gICAgICB0aGlzLmFjdGl2ZURyYXdpbmdMYXllciA9IGN1cnJMYXllcjtcbiAgICAgIHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLm9wYWNpdHkgPSAxO1xuICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICAgIGlmICghdGhpcy5sYWJlbHNBcmVTaG93bil7XG4gICAgICAgIHRoaXMub25Ub2dnbGVMYWJlbHMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUgPSB0aGlzLnN0b3Jlcy5maW5kKHN0b3JlID0+IHN0b3JlLmxheWVyLmlkID09PSB0aGlzLmFjdGl2ZURyYXdpbmdMYXllci5pZCk7XG4gICAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sID0gdGhpcy5kcmF3Q29udHJvbHMuZmluZChkYyA9PiBkY1swXSA9PT0gdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIuaWQpWzFdO1xuICAgICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXJTb3VyY2UgPSB0aGlzLmFjdGl2ZURyYXdDb250cm9sLm9sRHJhd2luZ0xheWVyU291cmNlO1xuICAgICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbC5zZXRHZW9tZXRyeVR5cGUodGhpcy5jdXJyR2VvbWV0cnlUeXBlKTtcbiAgICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXR1cExheWVyKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUxheWVyQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUxheWVyKG5ld1RpdGxlPywgaXNOZXdMYXllcj8pIHtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuYWxsTGF5ZXJzKXtcbiAgICAgIGxldCBudW1iZXJJZCA9IE51bWJlcihsYXllci5pZC5yZXBsYWNlKCdpZ28tZHJhdy1sYXllcicsJycpKTtcbiAgICAgIHRoaXMubGF5ZXJDb3VudGVySUQgPSBNYXRoLm1heChudW1iZXJJZCx0aGlzLmxheWVyQ291bnRlcklEKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgaWQ6ICdpZ28tZHJhdy1sYXllcicgKyArK3RoaXMubGF5ZXJDb3VudGVySUQsXG4gICAgICB0aXRsZTogaXNOZXdMYXllclxuICAgICAgICA/IG5ld1RpdGxlXG4gICAgICAgIDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5kcmF3aW5nJyksXG4gICAgICB6SW5kZXg6IDIwMCxcbiAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXG4gICAgICBzdHlsZTogKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd1N0eWxlU2VydmljZS5jcmVhdGVJbmRpdmlkdWFsRWxlbWVudFN0eWxlKFxuICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgICB0aGlzLmxhYmVsc0FyZVNob3duLFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdmb250U3R5bGUnKSxcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuZmlsbCxcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuc3Ryb2tlLFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRYJyksXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ29mZnNldFknKSxcbiAgICAgICAgICB0aGlzLmljb25cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBzaG93SW5MYXllckxpc3Q6IHRydWUsXG4gICAgICBleHBvcnRhYmxlOiB0cnVlLFxuICAgICAgYnJvd3NhYmxlOiBmYWxzZSxcbiAgICAgIHdvcmtzcGFjZToge1xuICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5QmluZFN0b3JlTGF5ZXIodGhpcy5hY3RpdmVTdG9yZSwgdGhpcy5hY3RpdmVEcmF3aW5nTGF5ZXIpO1xuXG4gICAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5KFxuICAgICAgdGhpcy5hY3RpdmVTdG9yZSxcbiAgICAgIG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3koe1xuICAgICAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3koXG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlLFxuICAgICAgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICAgICAgbW90aW9uOiBGZWF0dXJlTW90aW9uLk5vbmUsXG4gICAgICAgIG1hbnk6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlU3RvcmUuc291cmNlLm9sLm9uKFxuICAgICAgJ3JlbW92ZWZlYXR1cmUnLFxuICAgICAgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50PE9sR2VvbWV0cnk+KSA9PiB7XG4gICAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBldmVudC5mZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICAgIHRoaXMuY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBjb2xvciBpbiBhIGNvbG9yIHBpY2tlclxuICAgKiBAcGFyYW0gbGFiZWxzQXJlU2hvd24gd2hldGVyIHRoZSBsYWJlbHMgYXJlIHNob3duIG9yIG5vdFxuICAgKiBAcGFyYW0gaXNBbkljb24gd2hldGVyIHRoZSBmZWF0dXJlIGlzIGFuIGljb24gb3Igbm90XG4gICAqIEBwYXJhbSBmaWxsQ29sb3Igd2hpY2ggaXMgdGhlIGZpbGxpbmcgY29sb3JcbiAgICogQHBhcmFtIHN0cm9rZUNvbG9yIHdoaWNoIGlzIHRoZSBzdHJva2UgY29sb3JcbiAgICovXG4gIG9uQ29sb3JDaGFuZ2UoXG4gICAgbGFiZWxzQXJlU2hvd246IGJvb2xlYW4sXG4gICAgaXNBbkljb246IGJvb2xlYW4sXG4gICAgZmlsbENvbG9yOiBzdHJpbmcsXG4gICAgc3Ryb2tlQ29sb3I6IHN0cmluZ1xuICApIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwICYmICFpc0FuSWNvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XG4gICAgICAgIGxldCBvbEZlYXR1cmUgPSBmZWF0dXJlVG9PbChcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbEFuZFN0cm9rZUNvbG9yKG9sRmVhdHVyZSwgZmlsbENvbG9yLCBzdHJva2VDb2xvcik7XG5cbiAgICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5hY3RpdmVTdG9yZVxuICAgICAgICAgIC5hbGwoKVxuICAgICAgICAgIC5maW5kKChlKSA9PiBlLm1ldGEuaWQgPT09IG9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuZHJhd2luZ1N0eWxlLmZpbGwgPSBvbEZlYXR1cmUuZ2V0KCdmaWxsQ29sb3JfJyk7XG4gICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLmRyYXdpbmdTdHlsZS5zdHJva2UgPSBvbEZlYXR1cmUuZ2V0KCdzdHJva2VDb2xvcl8nKTtcbiAgICAgICAgdGhpcy5hY3RpdmVTdG9yZS51cGRhdGUoZW50aXR5KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duLCBpc0FuSWNvbik7XG4gICAgdGhpcy5jcmVhdGVEcmF3Q29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGZvbnQgc2l6ZSBvci9hbmQgc3R5bGVcbiAgICogQHBhcmFtIGxhYmVsc0FyZVNob3duIHdoZXRlciB0aGUgbGFiZWxzIGFyZSBzaG93biBvciBub3RcbiAgICogQHBhcmFtIHNpemUgdGhlIHNpemUgb2YgdGhlIGZvbnRcbiAgICogQHBhcmFtIHN0eWxlIHRoZSBzdHlsZSBvZiB0aGUgZm9udFxuICAgKi9cblxuICBvbkZvbnRDaGFuZ2UobGFiZWxzQXJlU2hvd246IGJvb2xlYW4sIHNpemU6IHN0cmluZywgc3R5bGU6IEZvbnRUeXBlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XG4gICAgICAgIGxldCBvbEZlYXR1cmUgPSBmZWF0dXJlVG9PbChcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9udFNpemVBbmRTdHlsZShvbEZlYXR1cmUsIHNpemUsIHN0eWxlKTtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5hY3RpdmVTdG9yZVxuICAgICAgICAgIC5hbGwoKVxuICAgICAgICAgIC5maW5kKChlKSA9PiBlLm1ldGEuaWQgPT09IG9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgZW50aXR5LnByb3BlcnRpZXMuZm9udFN0eWxlID0gb2xGZWF0dXJlLmdldCgnZm9udFN0eWxlXycpO1xuICAgICAgICB0aGlzLmFjdGl2ZVN0b3JlLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICBvbEZlYXR1cmUgPSB0aGlzLmFjdGl2ZVN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLmdldEZlYXR1cmVzKCkuZmluZChmID0+IGYuZ2V0SWQoKSA9PT0gZW50aXR5Lm1ldGEuaWQpO1xuICAgICAgICBvbEZlYXR1cmUuc2V0UHJvcGVydGllcyh7IGZvbnRTdHlsZTogZW50aXR5LnByb3BlcnRpZXMuZm9udFN0eWxlIH0pO1xuICAgICAgICBvbEZlYXR1cmUuY2hhbmdlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZm9udFNpemUgPSBzaXplO1xuICAgICAgdGhpcy5mb250U3R5bGUgPSBzdHlsZTtcblxuICAgICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnNldEZvbnRTaXplKHNpemUpO1xuICAgICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnNldEZvbnRTdHlsZShzdHlsZSk7XG5cbiAgICAgIHRoaXMuZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIGhvcml6b250YWwvdmVydGljYWwgb2Zmc2V0XG4gICAqIEBwYXJhbSBsYWJlbHNBcmVTaG93biB3aGV0ZXIgdGhlIGxhYmVscyBhcmUgc2hvd24gb3Igbm90XG4gICAqIEBwYXJhbSBvZmZzZXRYIGhvcml6b250YWwgb2Zmc2V0IG9mIHRoZSBsYWJlbFxuICAgKiBAcGFyYW0gb2Zmc2V0WSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhlIGxhYmVsXG4gICAqL1xuXG4gIG9uT2Zmc2V0TGFiZWxDaGFuZ2UoXG4gICAgbGFiZWxzQXJlU2hvd246IGJvb2xlYW4sXG4gICAgb2Zmc2V0WDogbnVtYmVyLFxuICAgIG9mZnNldFk6IG51bWJlclxuICApIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmZvckVhY2goKGZlYXR1cmUpID0+IHtcbiAgICAgICAgbGV0IG9sRmVhdHVyZSA9IGZlYXR1cmVUb09sKFxuICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKS5nZXRDb2RlKClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGRhdGVPZmZzZXQob2xGZWF0dXJlLCBvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5hY3RpdmVTdG9yZVxuICAgICAgICAgIC5hbGwoKVxuICAgICAgICAgIC5maW5kKChlKSA9PiBlLm1ldGEuaWQgPT09IG9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgZW50aXR5LnByb3BlcnRpZXMub2Zmc2V0WCA9IG9sRmVhdHVyZS5nZXQoJ29mZnNldFhfJyk7XG4gICAgICAgIGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFkgPSBvbEZlYXR1cmUuZ2V0KCdvZmZzZXRZXycpO1xuICAgICAgICB0aGlzLmFjdGl2ZVN0b3JlLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICBvbEZlYXR1cmUgPSB0aGlzLmFjdGl2ZVN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLmdldEZlYXR1cmVzKCkuZmluZChmID0+IGYuZ2V0SWQoKSA9PT0gZW50aXR5Lm1ldGEuaWQpO1xuICAgICAgICBvbEZlYXR1cmUuc2V0UHJvcGVydGllcyh7IG9mZnNldFg6IGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFgsIG9mZnNldFk6IGVudGl0eS5wcm9wZXJ0aWVzLm9mZnNldFkgfSk7XG4gICAgICAgIG9sRmVhdHVyZS5jaGFuZ2VkKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duKTtcbiAgICB9XG4gIH1cblxuICBvbkljb25DaGFuZ2UoZXZlbnQ/KSB7XG4gICAgdGhpcy5pY29uID0gZXZlbnQ7XG4gICAgdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLnNldEljb24odGhpcy5pY29uKTtcbiAgICB0aGlzLmVsZW1lbnRTdHlsZSh0cnVlLCB0aGlzLmljb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBuZXcgZ2VvbWV0cnkgdHlwZVxuICAgKiBAcGFyYW0gZ2VvbWV0cnlUeXBlIHRoZSBnZW9tZXRyeSB0eXBlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICBvbkdlb21ldHJ5VHlwZUNoYW5nZShnZW9tZXRyeVR5cGU6IFR5cGUpIHtcbiAgICB0aGlzLmN1cnJHZW9tZXRyeVR5cGUgPSBnZW9tZXRyeVR5cGU7XG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbC5zZXRHZW9tZXRyeVR5cGUoZ2VvbWV0cnlUeXBlKTtcbiAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gIH1cblxuICAvLyBVcGRhdGVzIHRoZSBwcm9wZXJ0aWVzIG9mIG9sRmVhdHVyZSBpbnB1dHRlZFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGxhYmVsIG9mIGEgZ2VvbWV0cnkgd2hlbiBhIGxhYmVsIGlzIGVudGVyZWQgaW4gYSBkaWFsb2cgYm94XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IHRoZSBnZW9tZXRyeVxuICAgKiBAcGFyYW0gbGFiZWwgdGhlIGxhYmVsXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUxhYmVsT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sR2VvbWV0cnksIGxhYmVsOiBzdHJpbmcpIHtcbiAgICBvbEdlb21ldHJ5LnNldFByb3BlcnRpZXMoXG4gICAgICB7XG4gICAgICAgIF9sYWJlbDogbGFiZWxcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRm9udFNpemVBbmRTdHlsZShcbiAgICBvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PixcbiAgICBmb250U2l6ZTogc3RyaW5nLFxuICAgIGZvbnRTdHlsZTogc3RyaW5nXG4gICkge1xuICAgIG9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKFxuICAgICAge1xuICAgICAgICBmb250U3R5bGVfOiBgJHtmb250U2l6ZX1weCAke2ZvbnRTdHlsZX1gXG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbGxBbmRTdHJva2VDb2xvcihcbiAgICBvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PixcbiAgICBmaWxsQ29sb3I6IHN0cmluZyxcbiAgICBzdHJva2VDb2xvcjogc3RyaW5nXG4gICkge1xuICAgIG9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKFxuICAgICAge1xuICAgICAgICBmaWxsQ29sb3JfOiBmaWxsQ29sb3IsXG4gICAgICAgIHN0cm9rZUNvbG9yXzogc3Ryb2tlQ29sb3JcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT2Zmc2V0KFxuICAgIG9sRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+LFxuICAgIG9mZnNldFg6IG51bWJlcixcbiAgICBvZmZzZXRZOiBudW1iZXJcbiAgKSB7XG4gICAgb2xGZWF0dXJlLnNldFByb3BlcnRpZXMoXG4gICAgICB7XG4gICAgICAgIG9mZnNldFhfOiBvZmZzZXRYLFxuICAgICAgICBvZmZzZXRZXzogb2Zmc2V0WVxuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgLy8gVXBkYXRlcyB2YWx1ZXMgb2YgdGhlIHNlbGVjdGVkIGVsZW1lbnQgb24gdGhlIEhUTUwgdmlld1xuXG4gIGdldEZlYXR1cmVGb250U2l6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmZvbnRTdHlsZVxuICAgICAgICAgIC5zcGxpdCgnICcpWzBdXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXG4gICAgICA6ICcyMCc7XG4gIH1cblxuICBnZXRGZWF0dXJlRm9udFN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5zdWJzdHJpbmcoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmZvbnRTdHlsZS5pbmRleE9mKCcgJykgKyAxXG4gICAgICAgIClcbiAgICAgIDogRm9udFR5cGUuQXJpYWw7XG4gIH1cblxuICBnZXRGZWF0dXJlRmlsbENvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmRyYXdpbmdTdHlsZS5maWxsXG4gICAgICA6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknO1xuICB9XG5cbiAgZ2V0RmVhdHVyZVN0cm9rZUNvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgID8gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXS5wcm9wZXJ0aWVzLmRyYXdpbmdTdHlsZS5zdHJva2VcbiAgICAgIDogJ3JnYmEoMTQzLDcsNywxKSc7XG4gIH1cblxuICBnZXRGZWF0dXJlT2Zmc2V0WCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF0ucHJvcGVydGllcy5vZmZzZXRYXG4gICAgICA6IHRoaXMuZHJhd1N0eWxlU2VydmljZS5nZXRPZmZzZXRYKCk7XG4gIH1cblxuICBnZXRGZWF0dXJlT2Zmc2V0WSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPiAwXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF0ucHJvcGVydGllcy5vZmZzZXRZXG4gICAgICA6ICcwJztcbiAgfVxuXG4gIGdldCBhbGxGb250U3R5bGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhGb250VHlwZSk7XG4gIH1cblxuICBnZXQgYWxsTGF5ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLm1hcC5sYXllcnMuZmlsdGVyKChsYXllcikgPT5cbiAgICAgIGxheWVyLmlkLmluY2x1ZGVzKCdpZ28tZHJhdy1sYXllcicpXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUhlaWdodFRhYmxlKCkge1xuICAgIC8vIENoZWNrIHRoZSBhbW91bnQgb2Ygcm93cyBhcyBhIHBvc3NpYmxlIGFsdGVybmF0aXZlXG5cbiAgICB0aGlzLm51bWJlck9mRHJhd2luZ3MgPSB0aGlzLmFjdGl2ZVN0b3JlLmNvdW50JC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMubnVtYmVyT2ZEcmF3aW5ncyA+IDEwXG4gICAgICA/ICh0aGlzLnRhYmxlVGVtcGxhdGUudGFibGVIZWlnaHQgPSAnMzV2aCcpXG4gICAgICA6ICh0aGlzLnRhYmxlVGVtcGxhdGUudGFibGVIZWlnaHQgPSAnYXV0bycpO1xuICB9XG5cbiAgdXBkYXRlQWN0aXZlTGF5ZXIoKSB7XG4gICAgbGV0IGN1cnJMYXllciA9IHRoaXMuYWxsTGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIudGl0bGUgPT09IHRoaXMuYWN0aXZlRHJhd2luZ0xheWVyLnRpdGxlKTtcbiAgICByZXR1cm4gY3VyckxheWVyID8gY3VyckxheWVyIDogdGhpcy5hbGxMYXllcnNbMF07XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0aGUgY29ycmVjdCBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIHRvZ2dsZURyYXdDb250cm9sKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG4gICAgdGhpcy5hY3RpdmF0ZURyYXdDb250cm9sKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIHRvb2x0aXBzIG9mIGFuIE9MIGdlb21ldHJ5XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIGdlb21ldHJ5IHdpdGggdG9vbHRpcHNcbiAgICovXG4gIHByaXZhdGUgY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkge1xuICAgIGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpLmZvckVhY2goXG4gICAgICAob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKG9sVG9vbHRpcCAmJiBvbFRvb2x0aXAuZ2V0TWFwKCkpIHtcbiAgICAgICAgICB0aGlzLm1hcC5vbC5yZW1vdmVPdmVybGF5KG9sVG9vbHRpcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBmZWF0dXJlIGluIHRoZSBzdG9yZVxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSBlbnRpdHkgdG8gcmVwbGFjZVxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSB0aGUgbmV3IGdlb21ldHJ5IHRvIGluc2VydCBpbiB0aGUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgcmVwbGFjZUZlYXR1cmVJblN0b3JlKFxuICAgIGVudGl0eSxcbiAgICBvbEdlb21ldHJ5OiBPbEdlb21ldHJ5LFxuICAgIHJhZGl1cz86IG51bWJlclxuICApIHtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlLmRlbGV0ZShlbnRpdHkpO1xuICAgIHRoaXMub25EcmF3RW5kKG9sR2VvbWV0cnksIHJhZGl1cyk7XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSB0aGUgYWN0aXZlIGRyYXcgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBkZWFjdGl2YXRlRHJhd0NvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZURyYXdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZHJhd0VuZCQkKSB7XG4gICAgICB0aGlzLmRyYXdFbmQkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2V0T2xNYXAodW5kZWZpbmVkKTtcbiAgICB0aGlzLmRyYXdDb250cm9sSXNBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhIGdpdmVuIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgYWN0aXZhdGVEcmF3Q29udHJvbCgpIHtcbiAgICB0aGlzLmRyYXdDb250cm9sSXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5kcmF3RW5kJCQgPSB0aGlzLmFjdGl2ZURyYXdDb250cm9sLmVuZCQuc3Vic2NyaWJlKFxuICAgICAgKG9sR2VvbWV0cnk6IE9sR2VvbWV0cnkpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuRHJhd0RpYWxvZyhvbEdlb21ldHJ5LCB0cnVlKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbC5tb2RpZnkkLnN1YnNjcmliZSgob2xHZW9tZXRyeTogT2xHZW9tZXRyeSkgPT4ge1xuICAgICAgdGhpcy5vbk1vZGlmeURyYXcob2xHZW9tZXRyeSk7XG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuZHJhd1NlbGVjdCQkKSB7XG4gICAgICB0aGlzLmRyYXdTZWxlY3QkJCA9IHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2VsZWN0JC5zdWJzY3JpYmUoXG4gICAgICAgIChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgICAgIHRoaXMub3BlbkRyYXdEaWFsb2cob2xGZWF0dXJlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVEcmF3Q29udHJvbC5zZXRPbE1hcCh0aGlzLm1hcC5vbCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjcmVhdGVzIHRoZSBzdHlsZSBvZiB0aGUgZmVhdHVyZSBzdG9yZWRcbiAgICovXG4gIHByaXZhdGUgZWxlbWVudFN0eWxlKGxhYmVsc0FyZVNob3duOiBib29sZWFuLCBpc0FuSWNvbj8pIHtcbiAgICBpZiAoaXNBbkljb24pIHtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd1N0eWxlU2VydmljZS5jcmVhdGVJbmRpdmlkdWFsRWxlbWVudFN0eWxlKFxuICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgICBsYWJlbHNBcmVTaG93bixcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZm9udFN0eWxlJyksXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLmZpbGwsXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2RyYXdpbmdTdHlsZScpLnN0cm9rZSxcbiAgICAgICAgICBmZWF0dXJlLmdldCgnb2Zmc2V0WCcpLFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRZJyksXG4gICAgICAgICAgdGhpcy5pY29uXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVTdG9yZS5sYXllci5vbC5zZXRTdHlsZSgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kcmF3U3R5bGVTZXJ2aWNlLmNyZWF0ZUluZGl2aWR1YWxFbGVtZW50U3R5bGUoXG4gICAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICAgIGxhYmVsc0FyZVNob3duLFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdmb250U3R5bGUnKSxcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuZmlsbCxcbiAgICAgICAgICBmZWF0dXJlLmdldCgnZHJhd2luZ1N0eWxlJykuc3Ryb2tlLFxuICAgICAgICAgIGZlYXR1cmUuZ2V0KCdvZmZzZXRYJyksXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ29mZnNldFknKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgIChjaGFuZ2UpPVwib25HZW9tZXRyeVR5cGVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiIFt2YWx1ZV09XCJnZW9tZXRyeVR5cGUuUG9pbnRcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiZ2VvbWV0cnlUeXBlLlBvaW50XCI+XG4gICAgICAgIHt7J2lnby5nZW8uZHJhdy4nICsgZ2VvbWV0cnlUeXBlLlBvaW50IHwgdHJhbnNsYXRlfX1cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiZ2VvbWV0cnlUeXBlLkxpbmVTdHJpbmdcIj5cbiAgICAgICAge3snaWdvLmdlby5kcmF3LicgKyBnZW9tZXRyeVR5cGUuTGluZVN0cmluZyB8IHRyYW5zbGF0ZX19XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cImdlb21ldHJ5VHlwZS5Qb2x5Z29uXCI+XG4gICAgICAgIHt7J2lnby5nZW8uZHJhdy4nICsgZ2VvbWV0cnlUeXBlLlBvbHlnb24gfCB0cmFuc2xhdGV9fVxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJnZW9tZXRyeVR5cGUuQ2lyY2xlXCI+XG4gICAgICAgIHt7J2lnby5nZW8uZHJhdy4nICsgZ2VvbWV0cnlUeXBlLkNpcmNsZSB8IHRyYW5zbGF0ZX19XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkcmF3LW9wdGlvbnMgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgW2Rpc2FibGVkXT1cImRyYXdDb250cm9sSXNEaXNhYmxlZFwiXG4gICAgICBbY2hlY2tlZF09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEcmF3Q29udHJvbCgkZXZlbnQuY2hlY2tlZClcIj5cbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5kcmF3Q29udHJvbCcgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICBbY2hlY2tlZF09XCJsYWJlbHNBcmVTaG93blwiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlTGFiZWxzKClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLmRyYXcudG9nZ2xlTWFwVG9vbHRpcHMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8L2Rpdj5cblxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICA8ZGl2PlxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGF5ZXItc2VsZWN0XCI+XG4gICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8uZHJhdy5sYXllci50aXRsZScgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgI3NlbGVjdGVkTGF5ZXIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxheWVyQ2hhbmdlKHNlbGVjdGVkTGF5ZXIudmFsdWUpXCIgW3ZhbHVlXT1cInVwZGF0ZUFjdGl2ZUxheWVyKClcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxheWVyIG9mIGFsbExheWVyc1wiIFt2YWx1ZV09XCJsYXllclwiPlxuICAgICAgICAgIHt7IGxheWVyLnRpdGxlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gaWQ9XCJjcmVhdGVOZXdMYXllclwiID5cbiAgICAgICAgICB7eydpZ28uZ2VvLmRyYXcubGF5ZXIuY3JlYXRlTmV3TGF5ZXInIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJhY3RpdmVEcmF3aW5nTGF5ZXJcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbY29sb3JdPVwiYWN0aXZlRHJhd2luZ0xheWVyLnZpc2libGUgPyAncHJpbWFyeScgOiAnZGVmYXVsdCdcIlxuICAgICAgY29sbGFwc2libGVCdXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cImFjdGl2ZURyYXdpbmdMYXllci52aXNpYmxlID9cbiAgICAgICAgICAgICAgICAgICAgKCdpZ28uZ2VvLmxheWVyLmhpZGVMYXllcicgfCB0cmFuc2xhdGUpIDpcbiAgICAgICAgICAgICAgICAgICAgKCdpZ28uZ2VvLmxheWVyLnNob3dMYXllcicgfCB0cmFuc2xhdGUpXCJcbiAgICAgIChjbGljayk9XCJhY3RpdmVEcmF3aW5nTGF5ZXIudmlzaWJsZSA9ICFhY3RpdmVEcmF3aW5nTGF5ZXIudmlzaWJsZVwiPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgIFtzdmdJY29uXT1cImFjdGl2ZURyYXdpbmdMYXllci52aXNpYmxlID8gJ2V5ZScgOiAnZXllLW9mZidcIj5cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPGRpdj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImFjdGl2ZVN0b3JlLmNvdW50JC5nZXRWYWx1ZSgpID4gMFwiXG4gICAgICBjbGFzcz1cImRlbGV0ZUJ0blwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5kcmF3LmRlbGV0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZEZlYXR1cmVzJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxuICAgICAgKGNsaWNrKT1cImRlbGV0ZURyYXdpbmdzKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXY+XG4gICAgICA8aWdvLWVudGl0eS10YWJsZVxuICAgICAgICAjdGFibGVcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb21wYWN0XCJcbiAgICAgICAgW3N0b3JlXT1cImFjdGl2ZVN0b3JlXCJcbiAgICAgICAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuICAgICAgICAoZGJsY2xpY2spPVwiZWRpdExhYmVsRHJhd2luZygpXCI+XG4gICAgICA8L2lnby1lbnRpdHktdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpY29uLW9wdGlvbnNcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpY29ucy5sZW5ndGggPj0gMVwiPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5kcmF3Lmljb24nIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdD5cbiAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwiYm94XCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cInt7IGljb24gfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiXCIgKGNsaWNrKT1cIm9uSWNvbkNoYW5nZSgpXCI+e3sgJ2lnby5nZW8uZHJhdy5ub0ljb24nIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpY29uX2h0bWwgb2YgaWNvbnNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJpY29uX2h0bWxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkljb25DaGFuZ2UoaWNvbl9odG1sKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwie3sgaWNvbl9odG1sIH19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgY29sb3I9XCJhY2NlbnRcIlxuICAgIGRpc2FibGVSaXBwbGU9XCJ0cnVlXCJcbiAgICAoY2xpY2spPVwib3BlblNob3JjdXRzRGlhbG9nKClcIlxuICA+XG4gICAgPG1hdC1pY29uXG4gICAgICBjbGFzcz1cInNob3J0Y3V0cy1pY29uXCJcbiAgICAgIHN2Z0ljb249XCJrZXlib2FyZC1vdXRsaW5lXCJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmRyYXcuc2hvcnRjdXRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgIDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICAqbmdJZj1cInNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aFwiXG4gICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIChjbGljayk9XCJvcGVuU3R5bGVNb2RhbERpYWxvZygpXCJcbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5zdHlsZS5zdHlsZU1vZGFsVG9vbHRpcCcgfCB0cmFuc2xhdGVcIj5cbiAgICB7eydpZ28uZ2VvLmxheWVyLnN0eWxlLnN0eWxlTW9kYWwnIHwgdHJhbnNsYXRlfX1cbiAgICA8bWF0LWljb25cbiAgICAgIGNsYXNzPVwic3R5bGUtaWNvblwiXG4gICAgICBzdmdJY29uPVwicGFsZXR0ZVwiXG4gICAgICBbbWF0QmFkZ2VdPVwic2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoXCJcbiAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiPlxuICAgIDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -102,4 +102,4 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
|
|
|
102
102
|
ColorPickerModule,
|
|
103
103
|
BrowserModule,
|
|
104
104
|
BrowserAnimationsModule], exports: [DrawComponent] }); })();
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRS9FOztHQUVHO0FBNEJILE1BQU0sT0FBTyxhQUFhOzswRUFBYixhQUFhOytEQUFiLGFBQWE7bUVBekJ0QixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsYUFBYTtRQUNiLHVCQUF1Qjt1RkFLZCxhQUFhO2NBM0J6QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixnQkFBZ0I7b0JBQ2hCLGtCQUFrQjtvQkFDbEIsYUFBYTtvQkFDYixjQUFjO29CQUNkLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2YsaUJBQWlCO29CQUNqQixvQkFBb0I7b0JBQ3BCLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYix1QkFBdUI7aUJBQ3hCO2dCQUNELFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsQ0FBQztnQkFDakcsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ3pCOzt3RkFDWSxhQUFhLG1CQUhULGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsYUF0QjlGLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGFBQWE7UUFDYixlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixhQUFhO1FBQ2IsdUJBQXVCLGFBR2YsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yLXBpY2tlcic7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBJZ29FbnRpdHlUYWJsZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3Q29tcG9uZW50IH0gZnJvbSAnLi9kcmF3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERyYXdQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vZHJhdy1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJhd1Nob3JjdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kcmF3LXNob3JjdXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcmF3TGF5ZXJQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vZHJhdy1sYXllci1wb3B1cC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBJZ29FbnRpdHlUYWJsZU1vZHVsZSxcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcbiAgICBCcm93c2VyTW9kdWxlLFxuICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0RyYXdDb21wb25lbnQsIERyYXdQb3B1cENvbXBvbmVudCwgRHJhd0xheWVyUG9wdXBDb21wb25lbnQsIERyYXdTaG9yY3V0c0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtEcmF3Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJZ29EcmF3TW9kdWxlIHt9XG4iXX0=
|
|
@@ -17,4 +17,4 @@ IgoDrawingToolModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Igo
|
|
|
17
17
|
}]
|
|
18
18
|
}], null, null); })();
|
|
19
19
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoDrawingToolModule, { exports: [IgoDrawModule] }); })();
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZ1Rvb2wubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZHJhdy9kcmF3aW5nVG9vbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBYW5ELE1BQU0sT0FBTyxvQkFBb0I7O3dGQUFwQixvQkFBb0I7c0VBQXBCLG9CQUFvQjswRUFKekIsYUFBYTt1RkFJUixvQkFBb0I7Y0FYaEMsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxFQUVSO2dCQUNELFlBQVksRUFBRSxFQUNiO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxhQUFhO2lCQUNoQjthQUNKOzt3RkFFWSxvQkFBb0IsY0FKekIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ29EcmF3TW9kdWxlIH0gZnJvbSAnLi9kcmF3L2RyYXcubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG5cbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBJZ29EcmF3TW9kdWxlXG4gICAgXVxufSlcblxuZXhwb3J0IGNsYXNzIElnb0RyYXdpbmdUb29sTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './shared';
|
|
2
2
|
export * from './draw/draw.component';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NoYXJlZCc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXcvZHJhdy5jb21wb25lbnQnO1xuIl19
|
|
@@ -24,4 +24,4 @@ DrawIconService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DrawIcon
|
|
|
24
24
|
providedIn: 'root'
|
|
25
25
|
}]
|
|
26
26
|
}], function () { return [{ type: i1.ConfigService }]; }, null); })();
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1pY29uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L3NoYXJlZC9kcmF3LWljb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLGVBQWU7SUFJeEIsWUFDWSxNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBRTdCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDOzs4RUFwQlEsZUFBZTtxRUFBZixlQUFlLFdBQWYsZUFBZSxtQkFGWixNQUFNO3VGQUVULGVBQWU7Y0FIM0IsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbiAgfSlcbmV4cG9ydCBjbGFzcyBEcmF3SWNvblNlcnZpY2Uge1xuXG4gICAgcHJvdGVjdGVkIGljb25zOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgY29uZmlnOiBDb25maWdTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2V0SWNvbnNMaXN0KCk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25zO1xuICAgIH1cblxuICAgIGdldFBhdGgoKTogYW55IHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2RyYXdpbmdUb29sLmljb25zJykgfHwgW107XG4gICAgfVxuXG4gICAgZ2V0SWNvbnNMaXN0KCkge1xuICAgICAgdGhpcy5pY29ucyA9IHRoaXMuZ2V0UGF0aCgpO1xuICAgIH1cbn1cbiJdfQ==
|