@igo2/integration 17.0.1-next.1 → 18.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/esm2022/lib/about/about-tool/about-tool.component.mjs +4 -4
  2. package/esm2022/lib/about/about.module.mjs +4 -4
  3. package/esm2022/lib/analytics/analytics-listener.service.mjs +10 -7
  4. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +5 -5
  5. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +4 -4
  6. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +4 -4
  7. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.state.mjs +3 -3
  10. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +3 -3
  11. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +4 -4
  12. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +3 -3
  13. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +3 -3
  14. package/esm2022/lib/context/context.module.mjs +4 -4
  15. package/esm2022/lib/context/context.state.mjs +4 -4
  16. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +3 -3
  17. package/esm2022/lib/directions/directions.module.mjs +4 -4
  18. package/esm2022/lib/directions/directions.state.mjs +4 -4
  19. package/esm2022/lib/draw/draw.module.mjs +4 -4
  20. package/esm2022/lib/draw/draw.state.mjs +7 -6
  21. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +3 -3
  22. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +4 -4
  23. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +3 -3
  24. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +3 -3
  25. package/esm2022/lib/filter/filter.module.mjs +4 -4
  26. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +7 -9
  27. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +5 -7
  28. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +7 -9
  29. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +5 -5
  30. package/esm2022/lib/geometry-form/geometry-form.module.mjs +4 -4
  31. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +4 -4
  32. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  33. package/esm2022/lib/import-export/import-export.state.mjs +4 -4
  34. package/esm2022/lib/integration.module.mjs +4 -4
  35. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +5 -6
  36. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +4 -4
  37. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +4 -4
  38. package/esm2022/lib/map/layer-list-tool.state.mjs +4 -4
  39. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +4 -4
  40. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +5 -7
  41. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +4 -4
  42. package/esm2022/lib/map/map-proximity.state.mjs +6 -6
  43. package/esm2022/lib/map/map-tool/map-tool.component.mjs +4 -4
  44. package/esm2022/lib/map/map-tools/map-tools.component.mjs +5 -7
  45. package/esm2022/lib/map/map.module.mjs +4 -4
  46. package/esm2022/lib/map/map.state.mjs +3 -3
  47. package/esm2022/lib/measure/measure.module.mjs +4 -4
  48. package/esm2022/lib/measure/measure.state.mjs +3 -3
  49. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +3 -3
  50. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +4 -4
  51. package/esm2022/lib/print/print-tool/print-tool.component.mjs +3 -3
  52. package/esm2022/lib/print/print.module.mjs +4 -4
  53. package/esm2022/lib/search/query.state.mjs +3 -3
  54. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +3 -3
  55. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  56. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +5 -5
  57. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +4 -4
  58. package/esm2022/lib/search/search.module.mjs +4 -4
  59. package/esm2022/lib/search/search.state.mjs +5 -5
  60. package/esm2022/lib/storage/storage.state.mjs +3 -3
  61. package/esm2022/lib/tool/tool.state.mjs +4 -4
  62. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +4 -4
  63. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +4 -4
  64. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +4 -4
  65. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +4 -4
  66. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  67. package/esm2022/lib/workspace/workspace.state.mjs +4 -4
  68. package/fesm2022/igo2-integration.mjs +244 -251
  69. package/fesm2022/igo2-integration.mjs.map +1 -1
  70. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +0 -1
  71. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +1 -1
  72. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +0 -1
  73. package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +1 -3
  74. package/lib/search/query.state.d.ts +1 -3
  75. package/lib/search/search.state.d.ts +2 -4
  76. package/lib/tool/tool.state.d.ts +1 -3
  77. package/package.json +9 -8
@@ -273,9 +273,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
273
273
  onZoneChange(feature, buffer) {
274
274
  this.zone = feature;
275
275
  if (feature) {
276
- buffer
277
- ? this.tryAddFeaturesToMap([feature], true)
278
- : this.tryAddFeaturesToMap([feature]);
276
+ this.tryAddFeaturesToMap([feature], buffer);
279
277
  this.zoomToFeatureExtent(feature);
280
278
  }
281
279
  }
@@ -545,8 +543,8 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
545
543
  }
546
544
  this.activeLayers.push(layer);
547
545
  }
548
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: SpatialFilterToolComponent, deps: [{ token: i1.MatIconRegistry }, { token: i2.SpatialFilterService }, { token: i2.DataSourceService }, { token: i2.LayerService }, { token: i3.MapState }, { token: i4.MessageService }, { token: i5.LanguageService }, { token: i6.ImportExportState }, { token: i7.ToolState }, { token: i8.WorkspaceState }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
549
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: SpatialFilterToolComponent, isStandalone: true, selector: "igo-spatial-filter-tool", inputs: { type: "type", itemType: "itemType", freehandDrawIsActive: "freehandDrawIsActive" }, ngImport: i0, template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [zone]=\"zone\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zoneChange)=\"onZoneChange($event)\"\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n>\n</igo-spatial-filter-type>\n\n<igo-spatial-filter-item\n [type]=\"type\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zone]=\"zone\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive = $event\"\n (drawZoneEvent)=\"zone = $event\"\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\n (itemTypeChange)=\"itemType = $event\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n>\n</igo-spatial-filter-item>\n<ng-container *ngIf=\"selectedFeature$ | async as feature\">\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\n</ng-container>\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"], dependencies: [{ kind: "component", type: SpatialFilterTypeComponent, selector: "igo-spatial-filter-type", inputs: ["store", "selectedQueryType", "zone", "layers"], outputs: ["eventType", "eventQueryType", "zoneChange", "zoneWithBufferChange", "bufferChange", "measureUnitChange"] }, { kind: "component", type: SpatialFilterItemComponent, selector: "igo-spatial-filter-item", inputs: ["map", "type", "queryType", "zone", "loading", "store", "layers", "allLayers", "thematicLength"], outputs: ["toggleSearch", "itemTypeChange", "thematicChange", "drawZoneEvent", "bufferEvent", "zoneWithBufferChange", "measureUnitChange", "radiusEvent", "freehandControl", "predefinedRadius", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace", "entityChange"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
546
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SpatialFilterToolComponent, deps: [{ token: i1.MatIconRegistry }, { token: i2.SpatialFilterService }, { token: i2.DataSourceService }, { token: i2.LayerService }, { token: i3.MapState }, { token: i4.MessageService }, { token: i5.LanguageService }, { token: i6.ImportExportState }, { token: i7.ToolState }, { token: i8.WorkspaceState }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
547
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: SpatialFilterToolComponent, isStandalone: true, selector: "igo-spatial-filter-tool", inputs: { type: "type", itemType: "itemType", freehandDrawIsActive: "freehandDrawIsActive" }, ngImport: i0, template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [zone]=\"zone\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zoneChange)=\"onZoneChange($event)\"\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n>\n</igo-spatial-filter-type>\n\n<igo-spatial-filter-item\n [type]=\"type\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zone]=\"zone\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive = $event\"\n (drawZoneEvent)=\"zone = $event\"\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\n (itemTypeChange)=\"itemType = $event\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n>\n</igo-spatial-filter-item>\n<ng-container *ngIf=\"selectedFeature$ | async as feature\">\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\n</ng-container>\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"], dependencies: [{ kind: "component", type: SpatialFilterTypeComponent, selector: "igo-spatial-filter-type", inputs: ["store", "selectedQueryType", "zone", "layers"], outputs: ["eventType", "eventQueryType", "zoneChange", "zoneWithBufferChange", "bufferChange", "measureUnitChange"] }, { kind: "component", type: SpatialFilterItemComponent, selector: "igo-spatial-filter-item", inputs: ["map", "type", "queryType", "zone", "loading", "store", "layers", "allLayers", "thematicLength"], outputs: ["toggleSearch", "itemTypeChange", "thematicChange", "drawZoneEvent", "bufferEvent", "zoneWithBufferChange", "measureUnitChange", "radiusEvent", "freehandControl", "predefinedRadius", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace", "entityChange"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
550
548
  };
551
549
  SpatialFilterToolComponent = __decorate([
552
550
  ToolComponent({
@@ -571,7 +569,7 @@ SpatialFilterToolComponent = __decorate([
571
569
  ChangeDetectorRef])
572
570
  ], SpatialFilterToolComponent);
573
571
  export { SpatialFilterToolComponent };
574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: SpatialFilterToolComponent, decorators: [{
572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SpatialFilterToolComponent, decorators: [{
575
573
  type: Component,
576
574
  args: [{ selector: 'igo-spatial-filter-tool', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
577
575
  SpatialFilterTypeComponent,
@@ -588,4 +586,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
588
586
  }], freehandDrawIsActive: [{
589
587
  type: Input
590
588
  }] } });
591
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci10b29sL3NwYXRpYWwtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXItdG9vbC9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUdMLGlCQUFpQixFQUdqQix1QkFBdUIsRUFDdkIsYUFBYSxFQUdiLFlBQVksRUFDWixpQkFBaUIsRUFFakIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUVyQixvQkFBb0IsRUFFcEIsaUJBQWlCLEVBQ2pCLDBCQUEwQixFQUUxQix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGdCQUFnQixFQUNqQixNQUFNLFdBQVcsQ0FBQztBQUduQixPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRCxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7QUFFbkQ7O0dBRUc7QUF3QkksSUFBTSwwQkFBMEIsR0FBaEMsTUFBTSwwQkFBMEI7SUEwQzNCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuRFYsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRVEsSUFBSSxDQUFvQjtJQUN4QixRQUFRLEdBQTBCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztJQUNoRSxvQkFBb0IsQ0FBVTtJQUVoQyxNQUFNLEdBQVksRUFBRSxDQUFDO0lBQ3JCLFlBQVksR0FBWSxFQUFFLENBQUM7SUFFM0IsU0FBUyxDQUF5QjtJQUNsQyxTQUFTLENBQTBCO0lBQ25DLElBQUksQ0FBVTtJQUNkLGNBQWMsQ0FBVTtJQUN4QixNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVgsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUViLGdCQUFnQixHQUE2QixJQUFJLGVBQWUsQ0FDckUsU0FBUyxDQUNWLENBQUM7SUFFTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUVoQyxLQUFLLEdBQXlCLElBQUksV0FBVyxDQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0lBRWhHLGdCQUFnQixHQUF5QixJQUFJLFdBQVcsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQUV0RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFbkIsV0FBVyxHQUFzQixpQkFBaUIsQ0FBQyxNQUFNLENBQUM7SUFDekQsWUFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFbkMsVUFBVSxDQUFZO0lBRXZCLFlBQVksQ0FBMkQ7SUFFOUUsWUFDVSxlQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsaUJBQW9DLEVBQ3BDLFlBQTBCLEVBQzFCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxTQUFvQixFQUNwQixjQUE4QixFQUM5QixLQUF3QjtRQVZ4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBQy9CLENBQUM7SUFFSixRQUFRO1FBQ04sS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLElBQ0UsS0FBSyxDQUFDLEtBQUs7Z0JBQ1gsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDcEMscUNBQXFDLENBQ3RDLENBQ0YsRUFDRCxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBNkI7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBbUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBTztRQUN2QixJQUFJLGNBQWMsQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTO2FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUNFLENBQUMsTUFBTTtnQkFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzFDLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN0RCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDMUIsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2xCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQy9DLENBQ0YsQ0FBQzs0QkFDRixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxLQUFLLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2xDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDaEMsY0FBYyxHQUFHLEtBQUssQ0FBQzt3QkFDekIsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUVELElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO29CQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFDTCxNQUFNO2dCQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDMUMsQ0FBQztnQkFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7b0JBQy9DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBTTtRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwRCxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtvQkFDbkQsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxRQUFtQixFQUFFLEVBQUU7WUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN4QyxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEtBQUssR0FBMEI7Z0JBQ25DLElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQ0UsSUFBSSxDQUFDLFdBQVcsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVO1lBQ2pELElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsS0FBSyxFQUNyQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsaURBQWlEO1FBQ3BFLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBNEIsRUFBRSxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QixZQUFZLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxvQkFBb0I7aUJBQ3RCLGNBQWMsQ0FDYixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxRQUFRLEVBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FDWjtpQkFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBbUIsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxhQUFhLEdBQWMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLGdCQUFnQixHQUFjLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxPQUFPLENBQUM7Z0JBQ1osSUFBSSxVQUFVLENBQUM7Z0JBQ2YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUMzQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVM7NEJBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDOUQsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUM1QixDQUFDO3lCQUFNLENBQUM7d0JBQ04sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMvQixVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQy9CLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEIsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7b0JBQ3pCLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsb0NBQW9DLEVBQ3BDLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO2FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsbUNBQW1DLEVBQ25DLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZ0IsRUFBRSxNQUFnQjtRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTTtnQkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQixDQUFDLFFBQW1CLEVBQUUsTUFBZ0I7UUFDOUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxJQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUzt3QkFDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSTt3QkFDeEQsQ0FBQyxNQUFNLEVBQ1AsQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzs0QkFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsQ0FBQzt3QkFDRCxPQUFPO29CQUNULENBQUM7b0JBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUN0QyxJQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7NEJBQzlCLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUMvQixDQUFDOzRCQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM5QixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsQ0FBQyxFQUFFLENBQUM7Z0JBQ04sQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLFdBQVcsR0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFTLENBQUMsV0FBVyxDQUFDO2dCQUNyRCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDdkIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDeEIsTUFBTSxFQUFFLFdBQVc7NEJBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtnQ0FDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQzFDLFVBQVU7NEJBQ1osQ0FBQyxDQUFDLFNBQVM7d0JBQ2IsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQzs0QkFDckIsS0FBSyxFQUFFLHlCQUF5Qjt5QkFDakMsQ0FBQzt3QkFDRixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDOzRCQUN6QixLQUFLLEVBQUUsQ0FBQzs0QkFDUixLQUFLLEVBQUUsUUFBUTt5QkFDaEIsQ0FBQztxQkFDSCxDQUFDO29CQUNGLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ3pCLEtBQUssRUFBRSxDQUFDO3dCQUNSLEtBQUssRUFBRSxRQUFRO3FCQUNoQixDQUFDO29CQUNGLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEtBQUssRUFBRSx5QkFBeUI7cUJBQ2pDLENBQUM7aUJBQ0gsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQjtpQkFDbkIscUJBQXFCLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxRQUFRO2dCQUNkLFNBQVMsRUFBRSxJQUFJO2FBQ2MsQ0FBQztpQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxVQUFzQixFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUM1QyxrQkFBa0IsRUFBRSxJQUFJO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxPQUFPO3dCQUNiLENBQUM7d0JBQ0QsS0FBSzt3QkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLHFDQUFxQyxDQUN0QyxDQUFXO29CQUNkLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7b0JBQzVCLFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQ0YsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxVQUFVOzRCQUN4QyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJOzRCQUN6QixDQUFDLENBQUMsU0FBUztxQkFDaEI7b0JBQ0QsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQWdCLENBQUM7Z0JBQ2xCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDcEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxJQUFJLEdBQ1IsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUNoRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3ZDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBc0MsQ0FBQztnQkFDN0QsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxRQUFtQixFQUFFLEVBQUU7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsQ0FBQyxFQUFFLENBQUM7Z0JBQ04sQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCO2lCQUNuQixxQkFBcUIsQ0FBQztnQkFDckIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsRUFBRTtnQkFDRixTQUFTLEVBQUUsSUFBSTtnQkFDZixRQUFRLEVBQUUsR0FBRztnQkFDYixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLFNBQVM7aUJBQ2pCO2FBQzRCLENBQUM7aUJBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsVUFBNkIsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkMsSUFBSSxLQUFvQixDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1YsS0FBSyxHQUFHLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3JDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO2dCQUNqRSxDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUM1QyxrQkFBa0IsRUFBRSxJQUFJO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQzVCLEdBQUc7d0JBQ0gsQ0FBQzt3QkFDRCxLQUFLO3dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDcEMscUNBQXFDLENBQ3RDLENBQVc7b0JBQ2QsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE9BQU8sRUFBRSxJQUFJO29CQUNiLEtBQUs7aUJBQ04sQ0FBQyxDQUFDO2dCQUVILE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDMUMsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFxQixDQUFDO2dCQUM1QyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUNyRCxDQUFDO29CQUNGLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQ3JDLEdBQUc7d0JBQ0gsQ0FBQzt3QkFDRCxLQUFLO3dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDcEMscUNBQXFDLENBQ3RDLENBQVcsQ0FBQztvQkFDZixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLElBQUksS0FBb0IsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5RCxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ3RCLEdBQUcsRUFBRSwwQkFBMEIsR0FBRyxHQUFHO2lCQUN0QyxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLFFBQW1CLEVBQUUsRUFBRTtRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNwRCxDQUFDLEVBQUUsQ0FBQztnQkFDTixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxpQkFBaUI7aUJBQ25CLHFCQUFxQixDQUFDO2dCQUNyQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxFQUFFO2dCQUNGLFNBQVMsRUFBRSxJQUFJO2FBQ2MsQ0FBQztpQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxVQUFzQixFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUM1QyxrQkFBa0IsRUFBRSxJQUFJO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQzVCLEdBQUc7d0JBQ0gsQ0FBQzt3QkFDRCxLQUFLO3dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDcEMscUNBQXFDLENBQ3RDLENBQVc7b0JBQ2QsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQUMsQ0FBQztnQkFDSCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQzFDLE9BQU8sV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBb0IsQ0FBQztnQkFDM0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDckQsQ0FBQztvQkFDRixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDVixPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLO3dCQUNyQyxHQUFHO3dCQUNILENBQUM7d0JBQ0QsS0FBSzt3QkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLHFDQUFxQyxDQUN0QyxDQUFXLENBQUM7b0JBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQU87UUFDekIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDakQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUNsQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVU7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsZ0JBQWdCLENBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQ3ZCLENBQUMsU0FBUyxDQUFDLEVBQ1gsYUFBYSxDQUFDLElBQUksQ0FDbkIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO3VHQXBsQlUsMEJBQTBCOzJGQUExQiwwQkFBMEIsaUxDdkZ2QywyOUNBMkNBLGdNRG9DSSwwQkFBMEIsbVBBQzFCLDBCQUEwQixvY0FFMUIsdUJBQXVCLCtLQUN2QixJQUFJLHdGQUNKLFNBQVM7O0FBR0EsMEJBQTBCO0lBdkJ0QyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUscUNBQXFDO1FBQzVDLElBQUksRUFBRSxxQkFBcUI7S0FDNUIsQ0FBQztJQUNGOztPQUVHOztxQ0EwRDBCLGVBQWU7UUFDVixvQkFBb0I7UUFDdkIsaUJBQWlCO1FBQ3RCLFlBQVk7UUFDaEIsUUFBUTtRQUNGLGNBQWM7UUFDYixlQUFlO1FBQ2IsaUJBQWlCO1FBQ3pCLFNBQVM7UUFDSixjQUFjO1FBQ3ZCLGlCQUFpQjtHQXBEdkIsMEJBQTBCLENBcWxCdEM7OzJGQXJsQlksMEJBQTBCO2tCQWZ0QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixJQUFJO3dCQUNKLFNBQVM7cUJBQ1Y7eVhBT1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IFNFTEVDVElPTl9NQVJLRVJfSUNPTiB9IGZyb20gJ0BpZ28yL2NvbW1vbi9pY29uJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3BhbmVsJztcbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7XG4gIENsdXN0ZXJEYXRhU291cmNlLFxuICBEYXRhU291cmNlLFxuICBEYXRhU291cmNlU2VydmljZSxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZURldGFpbHNDb21wb25lbnQsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIExheWVyU2VydmljZSxcbiAgTWVhc3VyZUxlbmd0aFVuaXQsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBTcGF0aWFsRmlsdGVySXRlbUNvbXBvbmVudCxcbiAgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxuICBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLFxuICBTcGF0aWFsRmlsdGVyU2VydmljZSxcbiAgU3BhdGlhbEZpbHRlclRoZW1hdGljLFxuICBTcGF0aWFsRmlsdGVyVHlwZSxcbiAgU3BhdGlhbEZpbHRlclR5cGVDb21wb25lbnQsXG4gIFZlY3RvckxheWVyLFxuICBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUsXG4gIGZlYXR1cmVUb09sLFxuICBtb3ZlVG9PbEZlYXR1cmVzXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IEV2ZW50c0tleSB9IGZyb20gJ29sL2V2ZW50cyc7XG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBvbFNvdXJjZUNsdXN0ZXIgZnJvbSAnb2wvc291cmNlL0NsdXN0ZXInO1xuaW1wb3J0IG9sU291cmNlVmVjdG9yIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0ICogYXMgb2xzdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IFdvcmtzcGFjZVN0YXRlIH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS5zdGF0ZSc7XG5pbXBvcnQge1xuICBJbXBvcnRFeHBvcnRNb2RlLFxuICBJbXBvcnRFeHBvcnRTdGF0ZVxufSBmcm9tICcuLy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XG5cbi8qKlxuICogVG9vbCB0byBhcHBseSBzcGF0aWFsIGZpbHRlclxuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdzcGF0aWFsRmlsdGVyJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuc3BhdGlhbEZpbHRlcicsXG4gIGljb246IFNFTEVDVElPTl9NQVJLRVJfSUNPTlxufSlcbi8qKlxuICogU3BhdGlhbCBGaWx0ZXIgVHlwZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tc3BhdGlhbC1maWx0ZXItdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFNwYXRpYWxGaWx0ZXJUeXBlQ29tcG9uZW50LFxuICAgIFNwYXRpYWxGaWx0ZXJJdGVtQ29tcG9uZW50LFxuICAgIFBhbmVsQ29tcG9uZW50LFxuICAgIEZlYXR1cmVEZXRhaWxzQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgQXN5bmNQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlclRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBASW5wdXQoKSB0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcbiAgQElucHV0KCkgaXRlbVR5cGU6IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSA9IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzO1xuICBASW5wdXQoKSBmcmVlaGFuZERyYXdJc0FjdGl2ZTogYm9vbGVhbjtcblxuICBwdWJsaWMgbGF5ZXJzOiBMYXllcltdID0gW107XG4gIHB1YmxpYyBhY3RpdmVMYXllcnM6IExheWVyW10gPSBbXTtcblxuICBwdWJsaWMgcXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlO1xuICBwdWJsaWMgdGhlbWF0aWNzOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXTtcbiAgcHVibGljIHpvbmU6IEZlYXR1cmU7XG4gIHB1YmxpYyB6b25lV2l0aEJ1ZmZlcjogRmVhdHVyZTtcbiAgcHVibGljIGJ1ZmZlciA9IDA7XG5cbiAgcHVibGljIGl0ZXJhdG9yID0gMTtcblxuICBwdWJsaWMgc2VsZWN0ZWRGZWF0dXJlJDogQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICBwcml2YXRlIGZvcm1hdCA9IG5ldyBvbEZvcm1hdEdlb0pTT04oKTtcblxuICBwdWJsaWMgc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTsgLy8gU3RvcmUgdG8gcHJpbnQgcmVzdWx0cyBhdCB0aGUgZW5kXG5cbiAgcHVibGljIHNwYXRpYWxMaXN0U3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTtcblxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0aGVtYXRpY0xlbmd0aCA9IDA7XG5cbiAgcHVibGljIG1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgbW92ZWVuZEtleTogRXZlbnRzS2V5O1xuXG4gIHB1YmxpYyBkZWZhdWx0U3R5bGU6IG9sc3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sc3R5bGUuU3R5bGUpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTogRGF0YVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1wb3J0RXhwb3J0U3RhdGU6IEltcG9ydEV4cG9ydFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5tYXAubGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyLnRpdGxlICYmXG4gICAgICAgIGxheWVyLnRpdGxlLmluY2x1ZGVzKFxuICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0T3V0cHV0VHlwZShldmVudDogU3BhdGlhbEZpbHRlclR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSBldmVudDtcbiAgICB0aGlzLnF1ZXJ5VHlwZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldE91dHB1dFF1ZXJ5VHlwZShldmVudDogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSkge1xuICAgIHRoaXMucXVlcnlUeXBlID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMucXVlcnlUeXBlKSB7XG4gICAgICB0aGlzLmxvYWRGaWx0ZXJMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVFeHBvcnRUb29sKCkge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXlpvbmUgXFxcXGQrJyk7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgaWYgKCFsYXllci50aXRsZS5tYXRjaChyZSkpIHtcbiAgICAgICAgaWRzLnB1c2gobGF5ZXIuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IGlkcyB9IGFzIEV4cG9ydE9wdGlvbnMpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxuXG4gIGFjdGl2YXRlV29ya3NwYWNlKHJlY29yZD8pIHtcbiAgICBsZXQgbGF5ZXJUb09wZW5Xa3M7XG4gICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZS5lbnRpdGllcyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFyZWNvcmQgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggJiZcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXRlbVR5cGUgPT09IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5UaGVtYXRpY3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy50aGVtYXRpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGVtYXRpYy56ZXJvUmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGxheWVyVG9PcGVuV2tzID0gdGhpcy5hY3RpdmVMYXllcnMuZmluZCgobGF5ZXIpID0+XG4gICAgICAgICAgICAgICAgICBsYXllci50aXRsZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgdGhlbWF0aWMubmFtZSArICcgJyArIHRoaXMuaXRlcmF0b3IudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSAnQWRyZXNzZXMgJyArIHRoaXMuaXRlcmF0b3IudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChsYXllci50aXRsZS5pbmNsdWRlcyh0aXRsZSkpIHtcbiAgICAgICAgICAgICAgICBsYXllclRvT3BlbldrcyA9IGxheWVyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobGF5ZXJUb09wZW5Xa3MpIHtcbiAgICAgICAgICAgIHRoaXMud29ya3NwYWNlU3RhdGUud29ya3NwYWNlUGFuZWxFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnNldEFjdGl2ZVdvcmtzcGFjZUJ5SWQobGF5ZXJUb09wZW5Xa3MuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWNvcmQgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggJiZcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RXb3Jrc3BhY2VFbnRpdHkocmVjb3JkKTtcbiAgICAgICAgICB0aGlzLm1vdmVlbmRLZXkgPSB0aGlzLm1hcC5vbC5vbignbW92ZWVuZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0V29ya3NwYWNlRW50aXR5KHJlY29yZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RXb3Jrc3BhY2VFbnRpdHkocmVjb3JkKSB7XG4gICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZS5hbGwoKS5mb3JFYWNoKCh3b3Jrc3BhY2UpID0+IHtcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZS51cGRhdGVBbGwoeyBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICBpZiAod29ya3NwYWNlLnRpdGxlLmluY2x1ZGVzKHJlY29yZC5hZGRlZFswXS5tZXRhLnRpdGxlKSkge1xuICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnNldEFjdGl2ZVdvcmtzcGFjZUJ5SWQod29ya3NwYWNlLmlkKTtcbiAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlLnVwZGF0ZU1hbnkocmVjb3JkLmFkZGVkLCB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGaWx0ZXJMaXN0KCkge1xuICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2VcbiAgICAgIC5sb2FkRmlsdGVyTGlzdCh0aGlzLnF1ZXJ5VHlwZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgICAgIGZlYXR1cmVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoYS5wcm9wZXJ0aWVzLm5vbSA8IGIucHJvcGVydGllcy5ub20pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEucHJvcGVydGllcy5ub20gPiBiLnByb3BlcnRpZXMubm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5zcGF0aWFsTGlzdFN0b3JlLmxvYWQoZmVhdHVyZXMpO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRPdXRwdXRUb2dnbGVTZWFyY2goKSB7XG4gICAgdGhpcy5sb2FkVGhlbWF0aWNzKCk7XG4gIH1cblxuICBnZXRPdXRwdXRDbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5xdWVyeVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjbGVhck1hcCgpIHtcbiAgICB0aGlzLm1hcC5yZW1vdmVMYXllcnModGhpcy5sYXllcnMpO1xuICAgIHRoaXMubGF5ZXJzID0gW107XG4gICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcbiAgICB0aGlzLnRoZW1hdGljTGVuZ3RoID0gMDtcbiAgICB0aGlzLml0ZXJhdG9yID0gMTtcbiAgICBpZiAodGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnF1ZXJ5VHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRUaGVtYXRpY3MoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBsZXQgemVyb1Jlc3VsdHMgPSB0cnVlO1xuICAgIGxldCB0aGVtYXRpY3M7XG4gICAgaWYgKHRoaXMuYnVmZmVyID09PSAwIHx8IHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcbiAgICAgIHRoaXMudHJ5QWRkRmVhdHVyZXNUb01hcChbdGhpcy56b25lXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLml0ZW1UeXBlICE9PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XG4gICAgICBjb25zdCB0aGVtZTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICBuYW1lOiAnJ1xuICAgICAgfTtcbiAgICAgIHRoZW1hdGljcyA9IFt0aGVtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZW1hdGljcyA9IHRoaXMudGhlbWF0aWNzO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmXG4gICAgICB0aGlzLnR5cGUgIT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvaW50XG4gICAgKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyICogMTAwMDtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbikge1xuICAgICAgdGhpcy5idWZmZXIgPSAwOyAvLyB0byBhdm9pZCBidWZmZXIgZW50ZXIgYSBzZWNvbmQgdGltZSBpbiB0ZXJyQVBJXG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT5bXSA9IFtdO1xuICAgIHRoZW1hdGljcy5mb3JFYWNoKCh0aGVtYXRpYykgPT4ge1xuICAgICAgb2JzZXJ2YWJsZXMkLnB1c2goXG4gICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2VcbiAgICAgICAgICAubG9hZEZpbHRlckl0ZW0oXG4gICAgICAgICAgICB0aGlzLnpvbmUsXG4gICAgICAgICAgICB0aGlzLml0ZW1UeXBlLFxuICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUsXG4gICAgICAgICAgICB0aGVtYXRpYyxcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0TWFueShmZWF0dXJlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzUG9pbnQ6IEZlYXR1cmVbXSA9IFtdO1xuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlc0xpbmVQb2x5OiBGZWF0dXJlW10gPSBbXTtcbiAgICAgICAgICAgICAgbGV0IGlkUG9pbnQ7XG4gICAgICAgICAgICAgIGxldCBpZExpbmVQb2x5O1xuICAgICAgICAgICAgICBmZWF0dXJlcy5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmxvbmdpdHVkZSA9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XG4gICAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMubGF0aXR1ZGUgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdO1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZXNQb2ludC5wdXNoKGZlYXR1cmUpO1xuICAgICAgICAgICAgICAgICAgaWRQb2ludCA9IGZlYXR1cmUubWV0YS5pZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZXNMaW5lUG9seS5wdXNoKGZlYXR1cmUpO1xuICAgICAgICAgICAgICAgICAgaWRMaW5lUG9seSA9IGZlYXR1cmUubWV0YS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMudHJ5QWRkUG9pbnRUb01hcChmZWF0dXJlc1BvaW50LCBpZFBvaW50KTtcbiAgICAgICAgICAgICAgdGhpcy50cnlBZGRMYXllclRvTWFwKGZlYXR1cmVzTGluZVBvbHksIGlkTGluZVBvbHkpO1xuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgemVyb1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZW1hdGljTGVuZ3RoICs9IDE7XG4gICAgICAgICAgICAgICAgdGhlbWF0aWMuemVyb1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGVtYXRpYy56ZXJvUmVzdWx0cyA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID49IDEwMDAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydChcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIubWF4U2l6ZUFsZXJ0JyxcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZycsXG4gICAgICAgICAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmb3JrSm9pbihvYnNlcnZhYmxlcyQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoemVyb1Jlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci56ZXJvUmVzdWx0cycsXG4gICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLndhcm5pbmcnLFxuICAgICAgICAgICAgeyB0aW1lT3V0OiAxMDAwMCB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblpvbmVDaGFuZ2UoZmVhdHVyZTogRmVhdHVyZSwgYnVmZmVyPzogYm9vbGVhbikge1xuICAgIHRoaXMuem9uZSA9IGZlYXR1cmU7XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIGJ1ZmZlclxuICAgICAgICA/IHRoaXMudHJ5QWRkRmVhdHVyZXNUb01hcChbZmVhdHVyZV0sIHRydWUpXG4gICAgICAgIDogdGhpcy50cnlBZGRGZWF0dXJlc1RvTWFwKFtmZWF0dXJlXSk7XG4gICAgICB0aGlzLnpvb21Ub0ZlYXR1cmVFeHRlbnQoZmVhdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgem9uZSBmZWF0dXJlIHRvIHRoZSBtYXAgb3ZlcmxheVxuICAgKi9cbiAgcHVibGljIHRyeUFkZEZlYXR1cmVzVG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgYnVmZmVyPzogYm9vbGVhbikge1xuICAgIGxldCBpID0gMTtcbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsICYmXG4gICAgICAgICAgICBsYXllci5vcHRpb25zLl9pbnRlcm5hbC5jb2RlID09PSBmZWF0dXJlLnByb3BlcnRpZXMuY29kZSAmJlxuICAgICAgICAgICAgIWJ1ZmZlclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKCFsYXllci50aXRsZT8uc3RhcnRzV2l0aCgnWm9uZScpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aCgnWm9uZScpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihsYXllcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnVmZmVyKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmFjdGl2ZUxheWVycykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgbGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoJ1pvbmUnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcbiAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZGVmYXVsdFN0eWxlID0gKF9mZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGZlYXR1cmVzWzBdIGFzIGFueSkuY29vcmRpbmF0ZXM7XG4gICAgICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkNpcmNsZSh7XG4gICAgICAgICAgICByYWRpdXM6IGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgID8gdGhpcy5idWZmZXIgL1xuICAgICAgICAgICAgICAgIE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIGNvb3JkaW5hdGVzWzFdKSAvXG4gICAgICAgICAgICAgICAgcmVzb2x1dGlvblxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwLCAwLjIpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAsIDAuMiknXG4gICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcbiAgICAgICAgICB0eXBlOiAndmVjdG9yJyxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XG4gICAgICAgICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogKCdab25lICcgK1xuICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgJyAtICcgK1xuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXG4gICAgICAgICAgICAgICkpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHdvcmtzcGFjZTogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICBfaW50ZXJuYWw6IHtcbiAgICAgICAgICAgICAgY29kZTpcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWRcbiAgICAgICAgICAgICAgICAgID8gZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGVcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH0pIGFzIFZlY3RvckxheWVyO1xuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodGhpcy50eXBlICE9PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCA/ICdDZXJjbGUnIDogJ1BvbHlnb25lJztcbiAgICAgICAgICAgIGZlYXR1cmVzT2xbMF0uc2V0KCdub20nLCAnWm9uZScsIHRydWUpO1xuICAgICAgICAgICAgZmVhdHVyZXNPbFswXS5zZXQoJ3R5cGUnLCB0eXBlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlVmVjdG9yIHwgb2xTb3VyY2VDbHVzdGVyO1xuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIG9sTGF5ZXIub2wuc2V0U3R5bGUodGhpcy5kZWZhdWx0U3R5bGUpO1xuICAgICAgICAgIHRoaXMubWFwLmFkZExheWVyKG9sTGF5ZXIpO1xuICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2gob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgcG9pbnQgZmVhdHVyZXMgdG8gdGhlIG1hcFxuICAgKiBOZWNlc3NhcnkgdG8gY3JlYXRlIGNsdXN0ZXJzXG4gICAqL1xuICBwcml2YXRlIHRyeUFkZFBvaW50VG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgaWQpIHtcbiAgICBsZXQgaSA9IDE7XG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgICBpZiAobGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSkpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZUFzeW5jRGF0YVNvdXJjZSh7XG4gICAgICAgICAgdHlwZTogJ2NsdXN0ZXInLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICAgICAgICBkaXN0YW5jZTogMTIwLFxuICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ2x1c3RlcidcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTb3VyY2U6IENsdXN0ZXJEYXRhU291cmNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWNvbiA9IGZlYXR1cmVzWzBdLm1ldGEuaWNvbjtcbiAgICAgICAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XG4gICAgICAgICAgaWYgKCFpY29uKSB7XG4gICAgICAgICAgICBzdHlsZSA9IGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3ZnSWNvbihpY29uKSB8fCBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvbExheWVyID0gdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlTGF5ZXIoe1xuICAgICAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgICAgICAgdGl0bGU6IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICtcbiAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgaSArXG4gICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xuICAgICAgICAgICAgICApKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgc3R5bGVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmZWF0dXJlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBvbCA9IGRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VDbHVzdGVyO1xuICAgICAgICAgIG9sLmdldFNvdXJjZSgpLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIGlmICh0aGlzLmxheWVycy5maW5kKChsYXllcikgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmluZCgobGF5ZXIpID0+IGxheWVyLmlkID09PSBvbExheWVyLmlkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcbiAgICAgICAgICAgIG9sTGF5ZXIudGl0bGUgPSAoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIGkgK1xuICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc3BhdGlhbEZpbHRlcidcbiAgICAgICAgICAgICAgKSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgb2xMYXllci5vcHRpb25zLnRpdGxlID0gb2xMYXllci50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pdGVyYXRvciA9IGk7XG4gICAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdmdJY29uKGljb24pOiBvbHN0eWxlLlN0eWxlIHtcbiAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuZ2V0TmFtZWRTdmdJY29uKGljb24pLnN1YnNjcmliZSgoc3ZnT2JqKSA9PiB7XG4gICAgICBjb25zdCB4bWxTZXJpYWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzMwJyk7XG4gICAgICBzdmdPYmouc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnMzAnKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAncmdiYSgwLCAxMjgsIDI1NSknKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICd3aGl0ZScpO1xuICAgICAgY29uc3Qgc3ZnID0geG1sU2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhzdmdPYmopO1xuICAgICAgc3R5bGUgPSBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5JY29uKHtcbiAgICAgICAgICBzcmM6ICdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwnICsgc3ZnXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH1cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgbGluZSBvciBwb2x5Z29uIGZlYXR1cmVzIHRvIHRoZSBtYXBcbiAgICovXG4gIHByaXZhdGUgdHJ5QWRkTGF5ZXJUb01hcChmZWF0dXJlczogRmVhdHVyZVtdLCBpZCkge1xuICAgIGxldCBpID0gMTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG4gICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aChmZWF0dXJlc1swXS5tZXRhLnRpdGxlKSkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcbiAgICAgICAgICB0eXBlOiAndmVjdG9yJyxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XG4gICAgICAgICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogKGZlYXR1cmVzWzBdLm1ldGEudGl0bGUgK1xuICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgJyAtICcgK1xuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXG4gICAgICAgICAgICAgICkpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09sID0gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZVRvT2woZmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlVmVjdG9yO1xuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIGlmICh0aGlzLmxheWVycy5maW5kKChsYXllcikgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmluZCgobGF5ZXIpID0+IGxheWVyLmlkID09PSBvbExheWVyLmlkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcbiAgICAgICAgICAgIG9sTGF5ZXIudGl0bGUgPSAoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIGkgK1xuICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc3BhdGlhbEZpbHRlcidcbiAgICAgICAgICAgICAgKSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgb2xMYXllci5vcHRpb25zLnRpdGxlID0gb2xMYXllci50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgem9vbVRvRmVhdHVyZUV4dGVudChmZWF0dXJlKSB7XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIGNvbnN0IG9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKGZlYXR1cmUsIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb246IGZlYXR1cmUucHJvamVjdGlvbixcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb25cbiAgICAgIH0pO1xuICAgICAgbW92ZVRvT2xGZWF0dXJlcyhcbiAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIsXG4gICAgICAgIFtvbEZlYXR1cmVdLFxuICAgICAgICBGZWF0dXJlTW90aW9uLlpvb21cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVzaExheWVyKGxheWVyKSB7XG4gICAgZm9yIChjb25zdCBsYXkgb2YgdGhpcy5hY3RpdmVMYXllcnMpIHtcbiAgICAgIGlmIChsYXkuaWQgPT09IGxheWVyLmlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFjdGl2ZUxheWVycy5wdXNoKGxheWVyKTtcbiAgfVxufVxuIiwiPGlnby1zcGF0aWFsLWZpbHRlci10eXBlXG4gIFtzdG9yZV09XCJzcGF0aWFsTGlzdFN0b3JlXCJcbiAgW3NlbGVjdGVkUXVlcnlUeXBlXT1cInF1ZXJ5VHlwZVwiXG4gIFt6b25lXT1cInpvbmVcIlxuICBbbGF5ZXJzXT1cImFjdGl2ZUxheWVyc1wiXG4gIChldmVudFR5cGUpPVwiZ2V0T3V0cHV0VHlwZSgkZXZlbnQpXCJcbiAgKGV2ZW50UXVlcnlUeXBlKT1cImdldE91dHB1dFF1ZXJ5VHlwZSgkZXZlbnQpXCJcbiAgKHpvbmVDaGFuZ2UpPVwib25ab25lQ2hhbmdlKCRldmVudClcIlxuICAoem9uZVdpdGhCdWZmZXJDaGFuZ2UpPVwib25ab25lQ2hhbmdlKCRldmVudCwgdHJ1ZSlcIlxuICAoYnVmZmVyQ2hhbmdlKT1cImJ1ZmZlciA9ICRldmVudFwiXG4gIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXG4+XG48L2lnby1zcGF0aWFsLWZpbHRlci10eXBlPlxuXG48aWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW1cbiAgW3R5cGVdPVwidHlwZVwiXG4gIFtxdWVyeVR5cGVdPVwicXVlcnlUeXBlXCJcbiAgW21hcF09XCJtYXBcIlxuICBbem9uZV09XCJ6b25lXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gIFtzdG9yZV09XCJzdG9yZVwiXG4gIFtsYXllcnNdPVwiYWN0aXZlTGF5ZXJzXCJcbiAgW2FsbExheWVyc109XCJsYXllcnNcIlxuICBbdGhlbWF0aWNMZW5ndGhdPVwidGhlbWF0aWNMZW5ndGhcIlxuICAocmFkaXVzRXZlbnQpPVwiYnVmZmVyID0gJGV2ZW50XCJcbiAgKGJ1ZmZlckV2ZW50KT1cImJ1ZmZlciA9ICRldmVudFwiXG4gIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXG4gIChmcmVlaGFuZENvbnRyb2wpPVwiZnJlZWhhbmREcmF3SXNBY3RpdmUgPSAkZXZlbnRcIlxuICAoZHJhd1pvbmVFdmVudCk9XCJ6b25lID0gJGV2ZW50XCJcbiAgKHpvbmVXaXRoQnVmZmVyQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQsIHRydWUpXCJcbiAgKGl0ZW1UeXBlQ2hhbmdlKT1cIml0ZW1UeXBlID0gJGV2ZW50XCJcbiAgKHRoZW1hdGljQ2hhbmdlKT1cInRoZW1hdGljcyA9ICRldmVudFwiXG4gICh0b2dnbGVTZWFyY2gpPVwiZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKClcIlxuICAoY2xlYXJCdXR0b25FdmVudCk9XCJjbGVhck1hcCgpXCJcbiAgKGNsZWFyU2VhcmNoRXZlbnQpPVwiZ2V0T3V0cHV0Q2xlYXJTZWFyY2goKVwiXG4gIChleHBvcnQpPVwiYWN0aXZhdGVFeHBvcnRUb29sKClcIlxuICAob3BlbldvcmtzcGFjZSk9XCJhY3RpdmF0ZVdvcmtzcGFjZSgpXCJcbiAgKGVudGl0eUNoYW5nZSk9XCJhY3RpdmF0ZVdvcmtzcGFjZSgkZXZlbnQpXCJcbj5cbjwvaWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW0+XG48bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGZWF0dXJlJCB8IGFzeW5jIGFzIGZlYXR1cmVcIj5cbiAgPGlnby1mZWF0dXJlLWRldGFpbHMgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvaWdvLWZlYXR1cmUtZGV0YWlscz5cbjwvbmctY29udGFpbmVyPlxuIl19
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci10b29sL3NwYXRpYWwtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXItdG9vbC9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUdMLGlCQUFpQixFQUdqQix1QkFBdUIsRUFDdkIsYUFBYSxFQUdiLFlBQVksRUFDWixpQkFBaUIsRUFFakIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUVyQixvQkFBb0IsRUFFcEIsaUJBQWlCLEVBQ2pCLDBCQUEwQixFQUUxQix3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UUFDSixjQUFjO1FBQ3ZCLGlCQUFpQjtHQWxEdkIsMEJBQTBCLENBaWxCdEM7OzJGQWpsQlksMEJBQTBCO2tCQWZ0QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixJQUFJO3dCQUNKLFNBQVM7cUJBQ1Y7eVhBT1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IFNFTEVDVElPTl9NQVJLRVJfSUNPTiB9IGZyb20gJ0BpZ28yL2NvbW1vbi9pY29uJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3BhbmVsJztcbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7XG4gIENsdXN0ZXJEYXRhU291cmNlLFxuICBEYXRhU291cmNlLFxuICBEYXRhU291cmNlU2VydmljZSxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZURldGFpbHNDb21wb25lbnQsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIExheWVyU2VydmljZSxcbiAgTWVhc3VyZUxlbmd0aFVuaXQsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBTcGF0aWFsRmlsdGVySXRlbUNvbXBvbmVudCxcbiAgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxuICBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLFxuICBTcGF0aWFsRmlsdGVyU2VydmljZSxcbiAgU3BhdGlhbEZpbHRlclRoZW1hdGljLFxuICBTcGF0aWFsRmlsdGVyVHlwZSxcbiAgU3BhdGlhbEZpbHRlclR5cGVDb21wb25lbnQsXG4gIFZlY3RvckxheWVyLFxuICBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUsXG4gIGZlYXR1cmVUb09sLFxuICBtb3ZlVG9PbEZlYXR1cmVzXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IEV2ZW50c0tleSB9IGZyb20gJ29sL2V2ZW50cyc7XG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBvbFNvdXJjZUNsdXN0ZXIgZnJvbSAnb2wvc291cmNlL0NsdXN0ZXInO1xuaW1wb3J0IG9sU291cmNlVmVjdG9yIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0ICogYXMgb2xzdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IFdvcmtzcGFjZVN0YXRlIH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS5zdGF0ZSc7XG5pbXBvcnQge1xuICBJbXBvcnRFeHBvcnRNb2RlLFxuICBJbXBvcnRFeHBvcnRTdGF0ZVxufSBmcm9tICcuLy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XG5cbi8qKlxuICogVG9vbCB0byBhcHBseSBzcGF0aWFsIGZpbHRlclxuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdzcGF0aWFsRmlsdGVyJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuc3BhdGlhbEZpbHRlcicsXG4gIGljb246IFNFTEVDVElPTl9NQVJLRVJfSUNPTlxufSlcbi8qKlxuICogU3BhdGlhbCBGaWx0ZXIgVHlwZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tc3BhdGlhbC1maWx0ZXItdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFNwYXRpYWxGaWx0ZXJUeXBlQ29tcG9uZW50LFxuICAgIFNwYXRpYWxGaWx0ZXJJdGVtQ29tcG9uZW50LFxuICAgIFBhbmVsQ29tcG9uZW50LFxuICAgIEZlYXR1cmVEZXRhaWxzQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgQXN5bmNQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlclRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBASW5wdXQoKSB0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcbiAgQElucHV0KCkgaXRlbVR5cGU6IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSA9IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzO1xuICBASW5wdXQoKSBmcmVlaGFuZERyYXdJc0FjdGl2ZTogYm9vbGVhbjtcblxuICBwdWJsaWMgbGF5ZXJzOiBMYXllcltdID0gW107XG4gIHB1YmxpYyBhY3RpdmVMYXllcnM6IExheWVyW10gPSBbXTtcblxuICBwdWJsaWMgcXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlO1xuICBwdWJsaWMgdGhlbWF0aWNzOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXTtcbiAgcHVibGljIHpvbmU6IEZlYXR1cmU7XG4gIHB1YmxpYyB6b25lV2l0aEJ1ZmZlcjogRmVhdHVyZTtcbiAgcHVibGljIGJ1ZmZlciA9IDA7XG5cbiAgcHVibGljIGl0ZXJhdG9yID0gMTtcblxuICBwdWJsaWMgc2VsZWN0ZWRGZWF0dXJlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZT4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIGZvcm1hdCA9IG5ldyBvbEZvcm1hdEdlb0pTT04oKTtcblxuICBwdWJsaWMgc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTsgLy8gU3RvcmUgdG8gcHJpbnQgcmVzdWx0cyBhdCB0aGUgZW5kXG5cbiAgcHVibGljIHNwYXRpYWxMaXN0U3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTtcblxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0aGVtYXRpY0xlbmd0aCA9IDA7XG5cbiAgcHVibGljIG1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgbW92ZWVuZEtleTogRXZlbnRzS2V5O1xuXG4gIHB1YmxpYyBkZWZhdWx0U3R5bGU6IG9sc3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sc3R5bGUuU3R5bGUpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTogRGF0YVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1wb3J0RXhwb3J0U3RhdGU6IEltcG9ydEV4cG9ydFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5tYXAubGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyLnRpdGxlICYmXG4gICAgICAgIGxheWVyLnRpdGxlLmluY2x1ZGVzKFxuICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0T3V0cHV0VHlwZShldmVudDogU3BhdGlhbEZpbHRlclR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSBldmVudDtcbiAgICB0aGlzLnF1ZXJ5VHlwZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldE91dHB1dFF1ZXJ5VHlwZShldmVudDogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSkge1xuICAgIHRoaXMucXVlcnlUeXBlID0gZXZlbnQ7XG4gICAgaWYgKHRoaXMucXVlcnlUeXBlKSB7XG4gICAgICB0aGlzLmxvYWRGaWx0ZXJMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVFeHBvcnRUb29sKCkge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXlpvbmUgXFxcXGQrJyk7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgaWYgKCFsYXllci50aXRsZS5tYXRjaChyZSkpIHtcbiAgICAgICAgaWRzLnB1c2gobGF5ZXIuaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IGlkcyB9IGFzIEV4cG9ydE9wdGlvbnMpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxuXG4gIGFjdGl2YXRlV29ya3NwYWNlKHJlY29yZD8pIHtcbiAgICBsZXQgbGF5ZXJUb09wZW5Xa3M7XG4gICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZS5lbnRpdGllcyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFyZWNvcmQgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggJiZcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXRlbVR5cGUgPT09IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5UaGVtYXRpY3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy50aGVtYXRpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGVtYXRpYy56ZXJvUmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGxheWVyVG9PcGVuV2tzID0gdGhpcy5hY3RpdmVMYXllcnMuZmluZCgobGF5ZXIpID0+XG4gICAgICAgICAgICAgICAgICBsYXllci50aXRsZS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgdGhlbWF0aWMubmFtZSArICcgJyArIHRoaXMuaXRlcmF0b3IudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSAnQWRyZXNzZXMgJyArIHRoaXMuaXRlcmF0b3IudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChsYXllci50aXRsZS5pbmNsdWRlcyh0aXRsZSkpIHtcbiAgICAgICAgICAgICAgICBsYXllclRvT3BlbldrcyA9IGxheWVyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobGF5ZXJUb09wZW5Xa3MpIHtcbiAgICAgICAgICAgIHRoaXMud29ya3NwYWNlU3RhdGUud29ya3NwYWNlUGFuZWxFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnNldEFjdGl2ZVdvcmtzcGFjZUJ5SWQobGF5ZXJUb09wZW5Xa3MuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWNvcmQgJiZcbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggJiZcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RXb3Jrc3BhY2VFbnRpdHkocmVjb3JkKTtcbiAgICAgICAgICB0aGlzLm1vdmVlbmRLZXkgPSB0aGlzLm1hcC5vbC5vbignbW92ZWVuZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0V29ya3NwYWNlRW50aXR5KHJlY29yZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RXb3Jrc3BhY2VFbnRpdHkocmVjb3JkKSB7XG4gICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZS5hbGwoKS5mb3JFYWNoKCh3b3Jrc3BhY2UpID0+IHtcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZS51cGRhdGVBbGwoeyBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICBpZiAod29ya3NwYWNlLnRpdGxlLmluY2x1ZGVzKHJlY29yZC5hZGRlZFswXS5tZXRhLnRpdGxlKSkge1xuICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnNldEFjdGl2ZVdvcmtzcGFjZUJ5SWQod29ya3NwYWNlLmlkKTtcbiAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlLnVwZGF0ZU1hbnkocmVjb3JkLmFkZGVkLCB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGaWx0ZXJMaXN0KCkge1xuICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2VcbiAgICAgIC5sb2FkRmlsdGVyTGlzdCh0aGlzLnF1ZXJ5VHlwZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgICAgIGZlYXR1cmVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoYS5wcm9wZXJ0aWVzLm5vbSA8IGIucHJvcGVydGllcy5ub20pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEucHJvcGVydGllcy5ub20gPiBiLnByb3BlcnRpZXMubm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5zcGF0aWFsTGlzdFN0b3JlLmxvYWQoZmVhdHVyZXMpO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRPdXRwdXRUb2dnbGVTZWFyY2goKSB7XG4gICAgdGhpcy5sb2FkVGhlbWF0aWNzKCk7XG4gIH1cblxuICBnZXRPdXRwdXRDbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5xdWVyeVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjbGVhck1hcCgpIHtcbiAgICB0aGlzLm1hcC5yZW1vdmVMYXllcnModGhpcy5sYXllcnMpO1xuICAgIHRoaXMubGF5ZXJzID0gW107XG4gICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcbiAgICB0aGlzLnRoZW1hdGljTGVuZ3RoID0gMDtcbiAgICB0aGlzLml0ZXJhdG9yID0gMTtcbiAgICBpZiAodGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnF1ZXJ5VHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRUaGVtYXRpY3MoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBsZXQgemVyb1Jlc3VsdHMgPSB0cnVlO1xuICAgIGxldCB0aGVtYXRpY3M7XG4gICAgaWYgKHRoaXMuYnVmZmVyID09PSAwIHx8IHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcbiAgICAgIHRoaXMudHJ5QWRkRmVhdHVyZXNUb01hcChbdGhpcy56b25lXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLml0ZW1UeXBlICE9PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XG4gICAgICBjb25zdCB0aGVtZTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICBuYW1lOiAnJ1xuICAgICAgfTtcbiAgICAgIHRoZW1hdGljcyA9IFt0aGVtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZW1hdGljcyA9IHRoaXMudGhlbWF0aWNzO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmXG4gICAgICB0aGlzLnR5cGUgIT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvaW50XG4gICAgKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyICogMTAwMDtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbikge1xuICAgICAgdGhpcy5idWZmZXIgPSAwOyAvLyB0byBhdm9pZCBidWZmZXIgZW50ZXIgYSBzZWNvbmQgdGltZSBpbiB0ZXJyQVBJXG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT5bXSA9IFtdO1xuICAgIHRoZW1hdGljcy5mb3JFYWNoKCh0aGVtYXRpYykgPT4ge1xuICAgICAgb2JzZXJ2YWJsZXMkLnB1c2goXG4gICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2VcbiAgICAgICAgICAubG9hZEZpbHRlckl0ZW0oXG4gICAgICAgICAgICB0aGlzLnpvbmUsXG4gICAgICAgICAgICB0aGlzLml0ZW1UeXBlLFxuICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUsXG4gICAgICAgICAgICB0aGVtYXRpYyxcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0TWFueShmZWF0dXJlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzUG9pbnQ6IEZlYXR1cmVbXSA9IFtdO1xuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlc0xpbmVQb2x5OiBGZWF0dXJlW10gPSBbXTtcbiAgICAgICAgICAgICAgbGV0IGlkUG9pbnQ7XG4gICAgICAgICAgICAgIGxldCBpZExpbmVQb2x5O1xuICAgICAgICAgICAgICBmZWF0dXJlcy5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmxvbmdpdHVkZSA9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XG4gICAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMubGF0aXR1ZGUgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdO1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZXNQb2ludC5wdXNoKGZlYXR1cmUpO1xuICAgICAgICAgICAgICAgICAgaWRQb2ludCA9IGZlYXR1cmUubWV0YS5pZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZmVhdHVyZXNMaW5lUG9seS5wdXNoKGZlYXR1cmUpO1xuICAgICAgICAgICAgICAgICAgaWRMaW5lUG9seSA9IGZlYXR1cmUubWV0YS5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMudHJ5QWRkUG9pbnRUb01hcChmZWF0dXJlc1BvaW50LCBpZFBvaW50KTtcbiAgICAgICAgICAgICAgdGhpcy50cnlBZGRMYXllclRvTWFwKGZlYXR1cmVzTGluZVBvbHksIGlkTGluZVBvbHkpO1xuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgemVyb1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZW1hdGljTGVuZ3RoICs9IDE7XG4gICAgICAgICAgICAgICAgdGhlbWF0aWMuemVyb1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGVtYXRpYy56ZXJvUmVzdWx0cyA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID49IDEwMDAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydChcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIubWF4U2l6ZUFsZXJ0JyxcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZycsXG4gICAgICAgICAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmb3JrSm9pbihvYnNlcnZhYmxlcyQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoemVyb1Jlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci56ZXJvUmVzdWx0cycsXG4gICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLndhcm5pbmcnLFxuICAgICAgICAgICAgeyB0aW1lT3V0OiAxMDAwMCB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblpvbmVDaGFuZ2UoZmVhdHVyZTogRmVhdHVyZSwgYnVmZmVyPzogYm9vbGVhbikge1xuICAgIHRoaXMuem9uZSA9IGZlYXR1cmU7XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIHRoaXMudHJ5QWRkRmVhdHVyZXNUb01hcChbZmVhdHVyZV0sIGJ1ZmZlcik7XG4gICAgICB0aGlzLnpvb21Ub0ZlYXR1cmVFeHRlbnQoZmVhdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgem9uZSBmZWF0dXJlIHRvIHRoZSBtYXAgb3ZlcmxheVxuICAgKi9cbiAgcHVibGljIHRyeUFkZEZlYXR1cmVzVG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgYnVmZmVyPzogYm9vbGVhbikge1xuICAgIGxldCBpID0gMTtcbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsICYmXG4gICAgICAgICAgICBsYXllci5vcHRpb25zLl9pbnRlcm5hbC5jb2RlID09PSBmZWF0dXJlLnByb3BlcnRpZXMuY29kZSAmJlxuICAgICAgICAgICAgIWJ1ZmZlclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKCFsYXllci50aXRsZT8uc3RhcnRzV2l0aCgnWm9uZScpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aCgnWm9uZScpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihsYXllcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnVmZmVyKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmFjdGl2ZUxheWVycykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgbGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoJ1pvbmUnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcbiAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZGVmYXVsdFN0eWxlID0gKF9mZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGZlYXR1cmVzWzBdIGFzIGFueSkuY29vcmRpbmF0ZXM7XG4gICAgICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkNpcmNsZSh7XG4gICAgICAgICAgICByYWRpdXM6IGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgID8gdGhpcy5idWZmZXIgL1xuICAgICAgICAgICAgICAgIE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIGNvb3JkaW5hdGVzWzFdKSAvXG4gICAgICAgICAgICAgICAgcmVzb2x1dGlvblxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwLCAwLjIpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAsIDAuMiknXG4gICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcbiAgICAgICAgICB0eXBlOiAndmVjdG9yJyxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XG4gICAgICAgICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogKCdab25lICcgK1xuICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgJyAtICcgK1xuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXG4gICAgICAgICAgICAgICkpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHdvcmtzcGFjZTogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICBfaW50ZXJuYWw6IHtcbiAgICAgICAgICAgICAgY29kZTpcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWRcbiAgICAgICAgICAgICAgICAgID8gZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGVcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH0pIGFzIFZlY3RvckxheWVyO1xuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodGhpcy50eXBlICE9PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgICAgICAgdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCA/ICdDZXJjbGUnIDogJ1BvbHlnb25lJztcbiAgICAgICAgICAgIGZlYXR1cmVzT2xbMF0uc2V0KCdub20nLCAnWm9uZScsIHRydWUpO1xuICAgICAgICAgICAgZmVhdHVyZXNPbFswXS5zZXQoJ3R5cGUnLCB0eXBlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlVmVjdG9yIHwgb2xTb3VyY2VDbHVzdGVyO1xuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIG9sTGF5ZXIub2wuc2V0U3R5bGUodGhpcy5kZWZhdWx0U3R5bGUpO1xuICAgICAgICAgIHRoaXMubWFwLmFkZExheWVyKG9sTGF5ZXIpO1xuICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2gob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgcG9pbnQgZmVhdHVyZXMgdG8gdGhlIG1hcFxuICAgKiBOZWNlc3NhcnkgdG8gY3JlYXRlIGNsdXN0ZXJzXG4gICAqL1xuICBwcml2YXRlIHRyeUFkZFBvaW50VG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgaWQpIHtcbiAgICBsZXQgaSA9IDE7XG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgICBpZiAobGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSkpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZUFzeW5jRGF0YVNvdXJjZSh7XG4gICAgICAgICAgdHlwZTogJ2NsdXN0ZXInLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICAgICAgICBkaXN0YW5jZTogMTIwLFxuICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ2x1c3RlcidcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTb3VyY2U6IENsdXN0ZXJEYXRhU291cmNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWNvbiA9IGZlYXR1cmVzWzBdLm1ldGEuaWNvbjtcbiAgICAgICAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XG4gICAgICAgICAgaWYgKCFpY29uKSB7XG4gICAgICAgICAgICBzdHlsZSA9IGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3ZnSWNvbihpY29uKSB8fCBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvbExheWVyID0gdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlTGF5ZXIoe1xuICAgICAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgICAgICAgdGl0bGU6IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICtcbiAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgaSArXG4gICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xuICAgICAgICAgICAgICApKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgc3R5bGVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmZWF0dXJlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBvbCA9IGRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VDbHVzdGVyO1xuICAgICAgICAgIG9sLmdldFNvdXJjZSgpLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIGlmICh0aGlzLmxheWVycy5maW5kKChsYXllcikgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmluZCgobGF5ZXIpID0+IGxheWVyLmlkID09PSBvbExheWVyLmlkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcbiAgICAgICAgICAgIG9sTGF5ZXIudGl0bGUgPSAoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIGkgK1xuICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc3BhdGlhbEZpbHRlcidcbiAgICAgICAgICAgICAgKSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgb2xMYXllci5vcHRpb25zLnRpdGxlID0gb2xMYXllci50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pdGVyYXRvciA9IGk7XG4gICAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdmdJY29uKGljb24pOiBvbHN0eWxlLlN0eWxlIHtcbiAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuZ2V0TmFtZWRTdmdJY29uKGljb24pLnN1YnNjcmliZSgoc3ZnT2JqKSA9PiB7XG4gICAgICBjb25zdCB4bWxTZXJpYWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzMwJyk7XG4gICAgICBzdmdPYmouc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnMzAnKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAncmdiYSgwLCAxMjgsIDI1NSknKTtcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICd3aGl0ZScpO1xuICAgICAgY29uc3Qgc3ZnID0geG1sU2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhzdmdPYmopO1xuICAgICAgc3R5bGUgPSBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5JY29uKHtcbiAgICAgICAgICBzcmM6ICdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwnICsgc3ZnXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH1cbiAgLyoqXG4gICAqIFRyeSB0byBhZGQgbGluZSBvciBwb2x5Z29uIGZlYXR1cmVzIHRvIHRoZSBtYXBcbiAgICovXG4gIHByaXZhdGUgdHJ5QWRkTGF5ZXJUb01hcChmZWF0dXJlczogRmVhdHVyZVtdLCBpZCkge1xuICAgIGxldCBpID0gMTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG4gICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aChmZWF0dXJlc1swXS5tZXRhLnRpdGxlKSkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxuICAgICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcbiAgICAgICAgICB0eXBlOiAndmVjdG9yJyxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XG4gICAgICAgICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogKGZlYXR1cmVzWzBdLm1ldGEudGl0bGUgK1xuICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgJyAtICcgK1xuICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXG4gICAgICAgICAgICAgICkpIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09sID0gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZVRvT2woZmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlVmVjdG9yO1xuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xuICAgICAgICAgIGlmICh0aGlzLmxheWVycy5maW5kKChsYXllcikgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmluZCgobGF5ZXIpID0+IGxheWVyLmlkID09PSBvbExheWVyLmlkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcbiAgICAgICAgICAgIG9sTGF5ZXIudGl0bGUgPSAoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSArXG4gICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgIGkgK1xuICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc3BhdGlhbEZpbHRlcidcbiAgICAgICAgICAgICAgKSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgb2xMYXllci5vcHRpb25zLnRpdGxlID0gb2xMYXllci50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIob2xMYXllcik7XG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgem9vbVRvRmVhdHVyZUV4dGVudChmZWF0dXJlKSB7XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIGNvbnN0IG9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKGZlYXR1cmUsIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb246IGZlYXR1cmUucHJvamVjdGlvbixcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb25cbiAgICAgIH0pO1xuICAgICAgbW92ZVRvT2xGZWF0dXJlcyhcbiAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIsXG4gICAgICAgIFtvbEZlYXR1cmVdLFxuICAgICAgICBGZWF0dXJlTW90aW9uLlpvb21cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVzaExheWVyKGxheWVyKSB7XG4gICAgZm9yIChjb25zdCBsYXkgb2YgdGhpcy5hY3RpdmVMYXllcnMpIHtcbiAgICAgIGlmIChsYXkuaWQgPT09IGxheWVyLmlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFjdGl2ZUxheWVycy5wdXNoKGxheWVyKTtcbiAgfVxufVxuIiwiPGlnby1zcGF0aWFsLWZpbHRlci10eXBlXG4gIFtzdG9yZV09XCJzcGF0aWFsTGlzdFN0b3JlXCJcbiAgW3NlbGVjdGVkUXVlcnlUeXBlXT1cInF1ZXJ5VHlwZVwiXG4gIFt6b25lXT1cInpvbmVcIlxuICBbbGF5ZXJzXT1cImFjdGl2ZUxheWVyc1wiXG4gIChldmVudFR5cGUpPVwiZ2V0T3V0cHV0VHlwZSgkZXZlbnQpXCJcbiAgKGV2ZW50UXVlcnlUeXBlKT1cImdldE91dHB1dFF1ZXJ5VHlwZSgkZXZlbnQpXCJcbiAgKHpvbmVDaGFuZ2UpPVwib25ab25lQ2hhbmdlKCRldmVudClcIlxuICAoem9uZVdpdGhCdWZmZXJDaGFuZ2UpPVwib25ab25lQ2hhbmdlKCRldmVudCwgdHJ1ZSlcIlxuICAoYnVmZmVyQ2hhbmdlKT1cImJ1ZmZlciA9ICRldmVudFwiXG4gIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXG4+XG48L2lnby1zcGF0aWFsLWZpbHRlci10eXBlPlxuXG48aWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW1cbiAgW3R5cGVdPVwidHlwZVwiXG4gIFtxdWVyeVR5cGVdPVwicXVlcnlUeXBlXCJcbiAgW21hcF09XCJtYXBcIlxuICBbem9uZV09XCJ6b25lXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gIFtzdG9yZV09XCJzdG9yZVwiXG4gIFtsYXllcnNdPVwiYWN0aXZlTGF5ZXJzXCJcbiAgW2FsbExheWVyc109XCJsYXllcnNcIlxuICBbdGhlbWF0aWNMZW5ndGhdPVwidGhlbWF0aWNMZW5ndGhcIlxuICAocmFkaXVzRXZlbnQpPVwiYnVmZmVyID0gJGV2ZW50XCJcbiAgKGJ1ZmZlckV2ZW50KT1cImJ1ZmZlciA9ICRldmVudFwiXG4gIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXG4gIChmcmVlaGFuZENvbnRyb2wpPVwiZnJlZWhhbmREcmF3SXNBY3RpdmUgPSAkZXZlbnRcIlxuICAoZHJhd1pvbmVFdmVudCk9XCJ6b25lID0gJGV2ZW50XCJcbiAgKHpvbmVXaXRoQnVmZmVyQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQsIHRydWUpXCJcbiAgKGl0ZW1UeXBlQ2hhbmdlKT1cIml0ZW1UeXBlID0gJGV2ZW50XCJcbiAgKHRoZW1hdGljQ2hhbmdlKT1cInRoZW1hdGljcyA9ICRldmVudFwiXG4gICh0b2dnbGVTZWFyY2gpPVwiZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKClcIlxuICAoY2xlYXJCdXR0b25FdmVudCk9XCJjbGVhck1hcCgpXCJcbiAgKGNsZWFyU2VhcmNoRXZlbnQpPVwiZ2V0T3V0cHV0Q2xlYXJTZWFyY2goKVwiXG4gIChleHBvcnQpPVwiYWN0aXZhdGVFeHBvcnRUb29sKClcIlxuICAob3BlbldvcmtzcGFjZSk9XCJhY3RpdmF0ZVdvcmtzcGFjZSgpXCJcbiAgKGVudGl0eUNoYW5nZSk9XCJhY3RpdmF0ZVdvcmtzcGFjZSgkZXZlbnQpXCJcbj5cbjwvaWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW0+XG48bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGZWF0dXJlJCB8IGFzeW5jIGFzIGZlYXR1cmVcIj5cbiAgPGlnby1mZWF0dXJlLWRldGFpbHMgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvaWdvLWZlYXR1cmUtZGV0YWlscz5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,24 +1,22 @@
1
- import { __decorate, __metadata } from "tslib";
1
+ import { __decorate } from "tslib";
2
2
  import { Component } from '@angular/core';
3
3
  import { ToolComponent } from '@igo2/common/tool';
4
4
  import { TimeFilterListBindingDirective, TimeFilterListComponent } from '@igo2/geo';
5
5
  import * as i0 from "@angular/core";
6
6
  let TimeFilterToolComponent = class TimeFilterToolComponent {
7
- constructor() { }
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: TimeFilterToolComponent, isStandalone: true, selector: "igo-time-filter-tool", ngImport: i0, template: "<igo-time-filter-list igoTimeFilterListBinding></igo-time-filter-list>\n", dependencies: [{ kind: "component", type: TimeFilterListComponent, selector: "igo-time-filter-list", inputs: ["layers"] }, { kind: "directive", type: TimeFilterListBindingDirective, selector: "[igoTimeFilterListBinding]" }] });
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: TimeFilterToolComponent, isStandalone: true, selector: "igo-time-filter-tool", ngImport: i0, template: "<igo-time-filter-list igoTimeFilterListBinding></igo-time-filter-list>\n", dependencies: [{ kind: "component", type: TimeFilterListComponent, selector: "igo-time-filter-list", inputs: ["layers"] }, { kind: "directive", type: TimeFilterListBindingDirective, selector: "[igoTimeFilterListBinding]" }] });
10
9
  };
11
10
  TimeFilterToolComponent = __decorate([
12
11
  ToolComponent({
13
12
  name: 'timeFilter',
14
13
  title: 'igo.integration.tools.timeFilter',
15
14
  icon: 'history'
16
- }),
17
- __metadata("design:paramtypes", [])
15
+ })
18
16
  ], TimeFilterToolComponent);
19
17
  export { TimeFilterToolComponent };
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TimeFilterToolComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TimeFilterToolComponent, decorators: [{
21
19
  type: Component,
22
20
  args: [{ selector: 'igo-time-filter-tool', standalone: true, imports: [TimeFilterListComponent, TimeFilterListBindingDirective], template: "<igo-time-filter-list igoTimeFilterListBinding></igo-time-filter-list>\n" }]
23
- }], ctorParameters: () => [] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci90aW1lLWZpbHRlci10b29sL3RpbWUtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvdGltZS1maWx0ZXItdG9vbC90aW1lLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN4QixNQUFNLFdBQVcsQ0FBQzs7QUFhWixJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF1QjtJQUNsQyxnQkFBZSxDQUFDO3VHQURMLHVCQUF1QjsyRkFBdkIsdUJBQXVCLGdGQ25CcEMsMEVBQ0EsNENEZ0JZLHVCQUF1QixxRkFBRSw4QkFBOEI7O0FBRXRELHVCQUF1QjtJQVhuQyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUUsa0NBQWtDO1FBQ3pDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7O0dBT1csdUJBQXVCLENBRW5DOzsyRkFGWSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBRXBCLElBQUksV0FDUCxDQUFDLHVCQUF1QixFQUFFLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQge1xuICBUaW1lRmlsdGVyTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gIFRpbWVGaWx0ZXJMaXN0Q29tcG9uZW50XG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbkBUb29sQ29tcG9uZW50KHtcbiAgbmFtZTogJ3RpbWVGaWx0ZXInLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy50aW1lRmlsdGVyJyxcbiAgaWNvbjogJ2hpc3RvcnknXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLXRpbWUtZmlsdGVyLXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1maWx0ZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUaW1lRmlsdGVyTGlzdENvbXBvbmVudCwgVGltZUZpbHRlckxpc3RCaW5kaW5nRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lRmlsdGVyVG9vbENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiIsIjxpZ28tdGltZS1maWx0ZXItbGlzdCBpZ29UaW1lRmlsdGVyTGlzdEJpbmRpbmc+PC9pZ28tdGltZS1maWx0ZXItbGlzdD5cbiJdfQ==
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci90aW1lLWZpbHRlci10b29sL3RpbWUtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvdGltZS1maWx0ZXItdG9vbC90aW1lLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN4QixNQUFNLFdBQVcsQ0FBQzs7QUFhWixJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF1Qjt1R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUIsZ0ZDbkJwQywwRUFDQSw0Q0RnQlksdUJBQXVCLHFGQUFFLDhCQUE4Qjs7QUFFdEQsdUJBQXVCO0lBWG5DLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxrQ0FBa0M7UUFDekMsSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztHQU9XLHVCQUF1QixDQUFHOzsyRkFBMUIsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixjQUVwQixJQUFJLFdBQ1AsQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHtcbiAgVGltZUZpbHRlckxpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICBUaW1lRmlsdGVyTGlzdENvbXBvbmVudFxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICd0aW1lRmlsdGVyJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMudGltZUZpbHRlcicsXG4gIGljb246ICdoaXN0b3J5J1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby10aW1lLWZpbHRlci10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtZmlsdGVyLXRvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVGltZUZpbHRlckxpc3RDb21wb25lbnQsIFRpbWVGaWx0ZXJMaXN0QmluZGluZ0RpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUZpbHRlclRvb2xDb21wb25lbnQge31cbiIsIjxpZ28tdGltZS1maWx0ZXItbGlzdCBpZ29UaW1lRmlsdGVyTGlzdEJpbmRpbmc+PC9pZ28tdGltZS1maWx0ZXItbGlzdD5cbiJdfQ==
@@ -47,7 +47,7 @@ let DataIssueReporterToolComponent = class DataIssueReporterToolComponent {
47
47
  this.httpClient = httpClient;
48
48
  }
49
49
  ngOnInit() {
50
- combineLatest([this.languageService.language$, this.map.layers$]).subscribe(([language, layers]) => {
50
+ combineLatest([this.languageService.language$, this.map.layers$]).subscribe(([_language, layers]) => {
51
51
  const baseLayerOrShownInLayerList = layers
52
52
  .filter((l) => l.baseLayer || l.showInLayerList)
53
53
  .map((l) => {
@@ -159,8 +159,8 @@ let DataIssueReporterToolComponent = class DataIssueReporterToolComponent {
159
159
  this.clearForm();
160
160
  }
161
161
  }
162
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DataIssueReporterToolComponent, deps: [{ token: i1.MapState }, { token: i2.FormService }, { token: i3.LanguageService }, { token: i4.MessageService }, { token: i5.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
163
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: DataIssueReporterToolComponent, selector: "igo-issue-reporter-tool", inputs: { url: "url" }, ngImport: i0, template: "<igo-form\n *ngIf=\"form$ | async as form\"\n [form]=\"form\"\n [formData]=\"data$ | async\"\n (submitForm)=\"onSubmit($any($event))\"\n>\n <div *ngIf=\"form.fields.length\" class=\"form-container\">\n <igo-form-field\n *ngFor=\"let field of form.fields\"\n [field]=\"field\"\n ></igo-form-field>\n </div>\n\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n</igo-form>\n", styles: [":host .actions-container button:not(:last-child){margin-right:8px}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.FormFieldComponent, selector: "igo-form-field", inputs: ["field"] }, { kind: "component", type: i2.FormComponent, selector: "igo-form", inputs: ["form", "formData", "autocomplete"], outputs: ["submitForm"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
162
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DataIssueReporterToolComponent, deps: [{ token: i1.MapState }, { token: i2.FormService }, { token: i3.LanguageService }, { token: i4.MessageService }, { token: i5.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
163
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: DataIssueReporterToolComponent, selector: "igo-issue-reporter-tool", inputs: { url: "url" }, ngImport: i0, template: "<igo-form\n *ngIf=\"form$ | async as form\"\n [form]=\"form\"\n [formData]=\"data$ | async\"\n (submitForm)=\"onSubmit($any($event))\"\n>\n <div *ngIf=\"form.fields.length\" class=\"form-container\">\n <igo-form-field\n *ngFor=\"let field of form.fields\"\n [field]=\"field\"\n ></igo-form-field>\n </div>\n\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n</igo-form>\n", styles: [":host .actions-container button:not(:last-child){margin-right:8px}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.FormFieldComponent, selector: "igo-form-field", inputs: ["field"] }, { kind: "component", type: i2.FormComponent, selector: "igo-form", inputs: ["form", "formData", "autocomplete"], outputs: ["submitForm"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
164
164
  };
165
165
  DataIssueReporterToolComponent = __decorate([
166
166
  ToolComponent({
@@ -175,10 +175,10 @@ DataIssueReporterToolComponent = __decorate([
175
175
  HttpClient])
176
176
  ], DataIssueReporterToolComponent);
177
177
  export { DataIssueReporterToolComponent };
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: DataIssueReporterToolComponent, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DataIssueReporterToolComponent, decorators: [{
179
179
  type: Component,
180
180
  args: [{ selector: 'igo-issue-reporter-tool', template: "<igo-form\n *ngIf=\"form$ | async as form\"\n [form]=\"form\"\n [formData]=\"data$ | async\"\n (submitForm)=\"onSubmit($any($event))\"\n>\n <div *ngIf=\"form.fields.length\" class=\"form-container\">\n <igo-form-field\n *ngFor=\"let field of form.fields\"\n [field]=\"field\"\n ></igo-form-field>\n </div>\n\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n</igo-form>\n", styles: [":host .actions-container button:not(:last-child){margin-right:8px}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"] }]
181
181
  }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.FormService }, { type: i3.LanguageService }, { type: i4.MessageService }, { type: i5.HttpClient }], propDecorators: { url: [{
182
182
  type: Input
183
183
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZ2VvbWV0cnktZm9ybS9kYXRhLWlzc3VlLXJlcG9ydGVyLXRvb2wvZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZ2VvbWV0cnktZm9ybS9kYXRhLWlzc3VlLXJlcG9ydGVyLXRvb2wvZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQVEsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHcEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBbUJ4QyxJQUFNLDhCQUE4QixHQUFwQyxNQUFNLDhCQUE4QjtJQXVCL0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTFCVjs7T0FFRztJQUNNLEdBQUcs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V0FBVyxHQUFHLG9EQUFvRCxDQUFDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsMkRBQTJELEVBQzNELFdBQVcsQ0FDWixDQUFDO1lBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVO2lCQUNaLElBQUksQ0FBd0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7aUJBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3pCLHNEQUFzRCxFQUN0RCxXQUFXLENBQ1osQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO3VHQXZLVSw4QkFBOEI7MkZBQTlCLDhCQUE4Qix1RkNsQzNDLDYwQkFnQ0E7O0FERWEsOEJBQThCO0lBVjFDLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLHlDQUF5QztRQUNoRCxJQUFJLEVBQUUsVUFBVTtLQUNqQixDQUFDO3FDQTZCb0IsUUFBUTtRQUNMLFdBQVc7UUFDUCxlQUFlO1FBQ2hCLGNBQWM7UUFDbEIsVUFBVTtHQTNCckIsOEJBQThCLENBd0sxQzs7MkZBeEtZLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSx5QkFBeUI7MkxBUTFCLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9ybSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb21tb24vZm9ybSc7XG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuXG5pbnRlcmZhY2UgRGF0YUlzc3VlUmVwb3J0ZXJEYXRhIHtcbiAgZ2VvbWV0cnk6IG9iamVjdDtcbiAgbGF5ZXI6IHN0cmluZztcbiAgZGVzYzogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdkYXRhSXNzdWVSZXBvcnRlcicsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmRhdGFJc3N1ZVJlcG9ydGVyJyxcbiAgaWNvbjogJ2ZlZWRiYWNrJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1pc3N1ZS1yZXBvcnRlci10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtaXNzdWUtcmVwb3J0ZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtaXNzdWUtcmVwb3J0ZXItdG9vbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGFJc3N1ZVJlcG9ydGVyVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFVybCB0byByZXBvcnQgdGhlIGRhdGEgaXNzdWUuIFVzZSB0aGUgUG9zdCBwcm90b2NvbCB0byBzZW5kIHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcCB0byBsaW5rIHRvIHRoZSBmb3JtXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGZvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtPih1bmRlZmluZWQpO1xuXG4gIGRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtrZXk6IHN0cmluZ106IGFueSB9Pih1bmRlZmluZWQpO1xuXG4gIHN1Ym1pdERpc2FibGVkID0gdHJ1ZTtcblxuICBwcml2YXRlIHZhbHVlQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmxhbmd1YWdlJCwgdGhpcy5tYXAubGF5ZXJzJF0pLnN1YnNjcmliZShcbiAgICAgIChbbGFuZ3VhZ2UsIGxheWVyc10pID0+IHtcbiAgICAgICAgY29uc3QgYmFzZUxheWVyT3JTaG93bkluTGF5ZXJMaXN0ID0gbGF5ZXJzXG4gICAgICAgICAgLmZpbHRlcigobCkgPT4gbC5iYXNlTGF5ZXIgfHwgbC5zaG93SW5MYXllckxpc3QpXG4gICAgICAgICAgLm1hcCgobCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGAke2wudGl0bGV9LSR7bC5pZH1gLCB0aXRsZTogbC50aXRsZSB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmaWVsZENvbmZpZ3MgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2dlb21ldHJ5JyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wuZ2VvbWV0cnknXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAgICAgICBnZW9tZXRyeVR5cGVGaWVsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnlUeXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgIGRyYXdHdWlkZUZpZWxkOiBmYWxzZSxcbiAgICAgICAgICAgICAgZHJhd0d1aWRlOiAwLFxuICAgICAgICAgICAgICBkcmF3R3VpZGVQbGFjZWhvbGRlcjogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wuZHJhd0d1aWRlUGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRyYXdTdHlsZTogbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBbMjU1LCAwLCAwLCAxXSxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAyXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMCwgMC4yXVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xuICAgICAgICAgICAgICAgICAgcmFkaXVzOiA4LFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMCwgMV1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBbMjU1LCAwLCAwLCAwLjJdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU6IG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogWzAsIDI1NSwgMCwgMV0sXG4gICAgICAgICAgICAgICAgICB3aWR0aDogMlxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAyNTUsIDAsIDAuMl1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgICAgICAgICAgIHJhZGl1czogOCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAyNTUsIDAsIDFdXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogWzAsIDI1NSwgMCwgMC4yXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2xheWVyJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wubGF5ZXInXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGNvbHM6IDJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgY2hvaWNlczogYmFzZUxheWVyT3JTaG93bkluTGF5ZXJMaXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZGVzYycsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wuZW1haWwnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMuZW1haWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gZmllbGRDb25maWdzLm1hcCgoY29uZmlnKSA9PlxuICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZmllbGQoY29uZmlnKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtU2VydmljZS5mb3JtKGZpZWxkcywgW10pO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzJCQgPSBmb3JtLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXREaXNhYmxlZCA9ICFmb3JtLmNvbnRyb2wudmFsaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybSQubmV4dChmb3JtKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2xlYXJGb3JtKCkge1xuICAgIHRoaXMuZm9ybSQudmFsdWUuY29udHJvbC5yZXNldCgpO1xuICB9XG5cbiAgb25TdWJtaXQoZGF0YTogRGF0YUlzc3VlUmVwb3J0ZXJEYXRhKSB7XG4gICAgY29uc3Qgc3VibWl0VGl0bGUgPSAnaWdvLmludGVncmF0aW9uLmRhdGFJc3N1ZVJlcG9ydGVyVG9vbC5zdWJtaXQudGl0bGUnO1xuICAgIGlmICghdGhpcy51cmwpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQoXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLnN1Ym1pdC5zZXR1cE1lc3NhZ2UnLFxuICAgICAgICBzdWJtaXRUaXRsZVxuICAgICAgKTtcbiAgICAgIGFsZXJ0KEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgIC5wb3N0PERhdGFJc3N1ZVJlcG9ydGVyRGF0YT4odGhpcy51cmwsIGRhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLnN1Ym1pdC5tZXNzYWdlJyxcbiAgICAgICAgICAgIHN1Ym1pdFRpdGxlXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGlnby1mb3JtXG4gICpuZ0lmPVwiZm9ybSQgfCBhc3luYyBhcyBmb3JtXCJcbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmb3JtRGF0YV09XCJkYXRhJCB8IGFzeW5jXCJcbiAgKHN1Ym1pdEZvcm0pPVwib25TdWJtaXQoJGFueSgkZXZlbnQpKVwiXG4+XG4gIDxkaXYgKm5nSWY9XCJmb3JtLmZpZWxkcy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG4gICAgPGlnby1mb3JtLWZpZWxkXG4gICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9ybS5maWVsZHNcIlxuICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICA+PC9pZ28tZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBmb3JtQnV0dG9ucyBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJGb3JtKClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLnJlc2V0LmJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXREaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wuc3VibWl0LmJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2lnby1mb3JtPlxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZ2VvbWV0cnktZm9ybS9kYXRhLWlzc3VlLXJlcG9ydGVyLXRvb2wvZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZ2VvbWV0cnktZm9ybS9kYXRhLWlzc3VlLXJlcG9ydGVyLXRvb2wvZGF0YS1pc3N1ZS1yZXBvcnRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQVEsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHcEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBbUJ4QyxJQUFNLDhCQUE4QixHQUFwQyxNQUFNLDhCQUE4QjtJQXVCL0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTFCVjs7T0FFRztJQUNNLEdBQUcs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V0FBVyxHQUFHLG9EQUFvRCxDQUFDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsMkRBQTJELEVBQzNELFdBQVcsQ0FDWixDQUFDO1lBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVO2lCQUNaLElBQUksQ0FBd0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7aUJBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3pCLHNEQUFzRCxFQUN0RCxXQUFXLENBQ1osQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO3VHQXZLVSw4QkFBOEI7MkZBQTlCLDhCQUE4Qix1RkNsQzNDLDYwQkFnQ0E7O0FERWEsOEJBQThCO0lBVjFDLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLHlDQUF5QztRQUNoRCxJQUFJLEVBQUUsVUFBVTtLQUNqQixDQUFDO3FDQTZCb0IsUUFBUTtRQUNMLFdBQVc7UUFDUCxlQUFlO1FBQ2hCLGNBQWM7UUFDbEIsVUFBVTtHQTNCckIsOEJBQThCLENBd0sxQzs7MkZBeEtZLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSx5QkFBeUI7MkxBUTFCLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9ybSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb21tb24vZm9ybSc7XG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuXG5pbnRlcmZhY2UgRGF0YUlzc3VlUmVwb3J0ZXJEYXRhIHtcbiAgZ2VvbWV0cnk6IG9iamVjdDtcbiAgbGF5ZXI6IHN0cmluZztcbiAgZGVzYzogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdkYXRhSXNzdWVSZXBvcnRlcicsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmRhdGFJc3N1ZVJlcG9ydGVyJyxcbiAgaWNvbjogJ2ZlZWRiYWNrJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1pc3N1ZS1yZXBvcnRlci10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtaXNzdWUtcmVwb3J0ZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtaXNzdWUtcmVwb3J0ZXItdG9vbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGFJc3N1ZVJlcG9ydGVyVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFVybCB0byByZXBvcnQgdGhlIGRhdGEgaXNzdWUuIFVzZSB0aGUgUG9zdCBwcm90b2NvbCB0byBzZW5kIHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcCB0byBsaW5rIHRvIHRoZSBmb3JtXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGZvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtPih1bmRlZmluZWQpO1xuXG4gIGRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih1bmRlZmluZWQpO1xuXG4gIHN1Ym1pdERpc2FibGVkID0gdHJ1ZTtcblxuICBwcml2YXRlIHZhbHVlQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmxhbmd1YWdlJCwgdGhpcy5tYXAubGF5ZXJzJF0pLnN1YnNjcmliZShcbiAgICAgIChbX2xhbmd1YWdlLCBsYXllcnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VMYXllck9yU2hvd25JbkxheWVyTGlzdCA9IGxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoKGwpID0+IGwuYmFzZUxheWVyIHx8IGwuc2hvd0luTGF5ZXJMaXN0KVxuICAgICAgICAgIC5tYXAoKGwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBgJHtsLnRpdGxlfS0ke2wuaWR9YCwgdGl0bGU6IGwudGl0bGUgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZmllbGRDb25maWdzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdnZW9tZXRyeScsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLmdlb21ldHJ5J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICAgICAgICAgICAgZ2VvbWV0cnlUeXBlRmllbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGdlb21ldHJ5VHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgICBkcmF3R3VpZGVGaWVsZDogZmFsc2UsXG4gICAgICAgICAgICAgIGRyYXdHdWlkZTogMCxcbiAgICAgICAgICAgICAgZHJhd0d1aWRlUGxhY2Vob2xkZXI6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLmRyYXdHdWlkZVBsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkcmF3U3R5bGU6IG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMCwgMV0sXG4gICAgICAgICAgICAgICAgICB3aWR0aDogMlxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgICAgY29sb3I6IFsyNTUsIDAsIDAsIDAuMl1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgICAgICAgICAgIHJhZGl1czogOCxcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IFsyNTUsIDAsIDAsIDFdXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMCwgMC4yXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlOiBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAyNTUsIDAsIDFdLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDJcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBbMCwgMjU1LCAwLCAwLjJdXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkNpcmNsZSh7XG4gICAgICAgICAgICAgICAgICByYWRpdXM6IDgsXG4gICAgICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBbMCwgMjU1LCAwLCAxXVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAyNTUsIDAsIDAuMl1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsYXllcicsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLmxheWVyJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBjb2xzOiAyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgIGNob2ljZXM6IGJhc2VMYXllck9yU2hvd25JbkxheWVyTGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2Rlc2MnLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLmRhdGFJc3N1ZVJlcG9ydGVyVG9vbC5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLmVtYWlsJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLmVtYWlsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGZpZWxkQ29uZmlncy5tYXAoKGNvbmZpZykgPT5cbiAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmZpZWxkKGNvbmZpZylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVNlcnZpY2UuZm9ybShmaWVsZHMsIFtdKTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlcyQkID0gZm9ybS5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0RGlzYWJsZWQgPSAhZm9ybS5jb250cm9sLnZhbGlkO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0kLm5leHQoZm9ybSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsZWFyRm9ybSgpIHtcbiAgICB0aGlzLmZvcm0kLnZhbHVlLmNvbnRyb2wucmVzZXQoKTtcbiAgfVxuXG4gIG9uU3VibWl0KGRhdGE6IERhdGFJc3N1ZVJlcG9ydGVyRGF0YSkge1xuICAgIGNvbnN0IHN1Ym1pdFRpdGxlID0gJ2lnby5pbnRlZ3JhdGlvbi5kYXRhSXNzdWVSZXBvcnRlclRvb2wuc3VibWl0LnRpdGxlJztcbiAgICBpZiAoIXRoaXMudXJsKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLmRhdGFJc3N1ZVJlcG9ydGVyVG9vbC5zdWJtaXQuc2V0dXBNZXNzYWdlJyxcbiAgICAgICAgc3VibWl0VGl0bGVcbiAgICAgICk7XG4gICAgICBhbGVydChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAucG9zdDxEYXRhSXNzdWVSZXBvcnRlckRhdGE+KHRoaXMudXJsLCBkYXRhKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLmRhdGFJc3N1ZVJlcG9ydGVyVG9vbC5zdWJtaXQubWVzc2FnZScsXG4gICAgICAgICAgICBzdWJtaXRUaXRsZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckZvcm0oKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpZ28tZm9ybVxuICAqbmdJZj1cImZvcm0kIHwgYXN5bmMgYXMgZm9ybVwiXG4gIFtmb3JtXT1cImZvcm1cIlxuICBbZm9ybURhdGFdPVwiZGF0YSQgfCBhc3luY1wiXG4gIChzdWJtaXRGb3JtKT1cIm9uU3VibWl0KCRhbnkoJGV2ZW50KSlcIlxuPlxuICA8ZGl2ICpuZ0lmPVwiZm9ybS5maWVsZHMubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxuICAgIDxpZ28tZm9ybS1maWVsZFxuICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZvcm0uZmllbGRzXCJcbiAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgPjwvaWdvLWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZm9ybUJ1dHRvbnMgY2xhc3M9XCJhY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyRm9ybSgpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLmRhdGFJc3N1ZVJlcG9ydGVyVG9vbC5yZXNldC5idXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwic3VibWl0RGlzYWJsZWRcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24uZGF0YUlzc3VlUmVwb3J0ZXJUb29sLnN1Ym1pdC5idXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9pZ28tZm9ybT5cbiJdfQ==
@@ -7,19 +7,19 @@ import { IgoMessageModule } from '@igo2/core/message';
7
7
  import { DataIssueReporterToolComponent } from './data-issue-reporter-tool/data-issue-reporter-tool.component';
8
8
  import * as i0 from "@angular/core";
9
9
  export class IgoAppGeometryFormModule {
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoAppGeometryFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoAppGeometryFormModule, declarations: [DataIssueReporterToolComponent], imports: [CommonModule,
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoAppGeometryFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: IgoAppGeometryFormModule, declarations: [DataIssueReporterToolComponent], imports: [CommonModule,
12
12
  MatButtonModule,
13
13
  IgoLanguageModule,
14
14
  IgoFormModule,
15
15
  IgoMessageModule], exports: [DataIssueReporterToolComponent] });
16
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule,
16
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule,
17
17
  MatButtonModule,
18
18
  IgoLanguageModule,
19
19
  IgoFormModule,
20
20
  IgoMessageModule] });
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
23
23
  type: NgModule,
24
24
  args: [{
25
25
  imports: [
@@ -76,8 +76,8 @@ let ImportExportToolComponent = class ImportExportToolComponent {
76
76
  importExportTypeChange(event) {
77
77
  this.importExportType = event.value;
78
78
  }
79
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ImportExportToolComponent, deps: [{ token: i1.MapState }, { token: i2.ImportExportState }, { token: i3.WorkspaceState }, { token: i4.ContextState }], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ImportExportToolComponent, isStandalone: true, selector: "igo-import-export-tool", inputs: { projectionsLimitations: "projectionsLimitations", selectFirstProj: "selectFirstProj", importExportType: "importExportType", importExportShowBothType: "importExportShowBothType" }, ngImport: i0, template: "<mat-tab-group *ngIf=\"importExportShowBothType\">\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj\"\n [projectionsLimitations]=\"projectionsLimitations\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n >\n </igo-import-export>\n </mat-tab>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportContext' | translate\"\n >\n <igo-context-import-export [map]=\"map\"></igo-context-import-export>\n </mat-tab>\n</mat-tab-group>\n\n<igo-import-export\n *ngIf=\"!importExportShowBothType && importExportType === 'layer'\"\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n>\n</igo-import-export>\n\n<igo-context-import-export\n *ngIf=\"!importExportShowBothType && importExportType === 'context'\"\n [map]=\"map\"\n>\n</igo-context-import-export>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: ImportExportComponent, selector: "igo-import-export", inputs: ["selectFirstProj", "map", "contextUri", "projectionsLimitations", "store", "selectedMode", "exportOptions$"], outputs: ["selectMode", "exportOptionsChange"] }, { kind: "component", type: ContextImportExportComponent, selector: "igo-context-import-export", inputs: ["map"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ImportExportToolComponent, deps: [{ token: i1.MapState }, { token: i2.ImportExportState }, { token: i3.WorkspaceState }, { token: i4.ContextState }], target: i0.ɵɵFactoryTarget.Component });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ImportExportToolComponent, isStandalone: true, selector: "igo-import-export-tool", inputs: { projectionsLimitations: "projectionsLimitations", selectFirstProj: "selectFirstProj", importExportType: "importExportType", importExportShowBothType: "importExportShowBothType" }, ngImport: i0, template: "<mat-tab-group *ngIf=\"importExportShowBothType\">\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj\"\n [projectionsLimitations]=\"projectionsLimitations\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n >\n </igo-import-export>\n </mat-tab>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportContext' | translate\"\n >\n <igo-context-import-export [map]=\"map\"></igo-context-import-export>\n </mat-tab>\n</mat-tab-group>\n\n<igo-import-export\n *ngIf=\"!importExportShowBothType && importExportType === 'layer'\"\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n>\n</igo-import-export>\n\n<igo-context-import-export\n *ngIf=\"!importExportShowBothType && importExportType === 'context'\"\n [map]=\"map\"\n>\n</igo-context-import-export>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: ImportExportComponent, selector: "igo-import-export", inputs: ["selectFirstProj", "map", "contextUri", "projectionsLimitations", "store", "selectedMode", "exportOptions$"], outputs: ["selectMode", "exportOptionsChange"] }, { kind: "component", type: ContextImportExportComponent, selector: "igo-context-import-export", inputs: ["map"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
81
  };
82
82
  ImportExportToolComponent = __decorate([
83
83
  ToolComponent({
@@ -91,7 +91,7 @@ ImportExportToolComponent = __decorate([
91
91
  ContextState])
92
92
  ], ImportExportToolComponent);
93
93
  export { ImportExportToolComponent };
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ImportExportToolComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ImportExportToolComponent, decorators: [{
95
95
  type: Component,
96
96
  args: [{ selector: 'igo-import-export-tool', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
97
97
  NgIf,
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
110
110
  }], importExportShowBothType: [{
111
111
  type: Input
112
112
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LXRvb2wvaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LXRvb2wvaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0wscUJBQXFCLEVBRXRCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNqQixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQXNCekIsSUFBTSx5QkFBeUIsR0FB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ZnJDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQiw0QkFBNEI7d0JBQzVCLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjtxS0FHUSxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFjRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3dvcmtzcGFjZSc7XG5pbXBvcnQgeyBDb250ZXh0SW1wb3J0RXhwb3J0Q29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29udGV4dCc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHtcbiAgRXhwb3J0T3B0aW9ucyxcbiAgSWdvTWFwLFxuICBJbXBvcnRFeHBvcnRDb21wb25lbnQsXG4gIFByb2plY3Rpb25zTGltaXRhdGlvbnNPcHRpb25zXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IENvbnRleHRTdGF0ZSB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29udGV4dC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlU3RhdGUgfSBmcm9tICcuLi8uLi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlJztcbmltcG9ydCB7XG4gIEltcG9ydEV4cG9ydE1vZGUsXG4gIEltcG9ydEV4cG9ydFN0YXRlLFxuICBJbXBvcnRFeHBvcnRUeXBlXG59IGZyb20gJy4uL2ltcG9ydC1leHBvcnQuc3RhdGUnO1xuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdpbXBvcnRFeHBvcnQnLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5pbXBvcnRFeHBvcnQnLFxuICBpY29uOiAnZmlsZV9zYXZlJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1pbXBvcnQtZXhwb3J0LXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIEltcG9ydEV4cG9ydENvbXBvbmVudCxcbiAgICBDb250ZXh0SW1wb3J0RXhwb3J0Q29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydEV4cG9ydFRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9qZWN0aW9uc0xpbWl0YXRpb25zOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9ucztcblxuICBASW5wdXQoKSBzZWxlY3RGaXJzdFByb2o6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTWFwIHRvIG1lYXN1cmUgb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IHdvcmtzcGFjZVN0b3JlKCk6IFdvcmtzcGFjZVN0b3JlIHtcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGltcG9ydEV4cG9ydFR5cGU6IEltcG9ydEV4cG9ydFR5cGUgPSBJbXBvcnRFeHBvcnRUeXBlLmxheWVyO1xuICBASW5wdXQoKSBpbXBvcnRFeHBvcnRTaG93Qm90aFR5cGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHB1YmxpYyBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGUsXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXG4gICAgcHVibGljIGNvbnRleHRTdGF0ZTogQ29udGV4dFN0YXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdFR5cGUoKTtcbiAgICB0aGlzLnNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0VHlwZSgpIHtcbiAgICBpZiAodGhpcy5pbXBvcnRFeHBvcnRUeXBlKSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLmltcG9ydEV4cG9ydFR5cGUkLm5leHQodGhpcy5pbXBvcnRFeHBvcnRUeXBlKTtcbiAgICB9XG4gICAgY29uc3QgdXNlclNlbGVjdGVkVHlwZSA9IHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuaW1wb3J0RXhwb3J0VHlwZSQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRJbXBvcnRFeHBvcnRUeXBlKHVzZXJTZWxlY3RlZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldEltcG9ydEV4cG9ydFR5cGUoSW1wb3J0RXhwb3J0VHlwZS5sYXllcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RNb2RlKCkge1xuICAgIGNvbnN0IHVzZXJTZWxlY3RlZE1vZGUgPSB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNlbGVjdGVkTW9kZSQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZE1vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKHVzZXJTZWxlY3RlZE1vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5pbXBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RlQ2hhbmdlZChtb2RlOiBJbXBvcnRFeHBvcnRNb2RlKSB7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKG1vZGUpO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydE9wdGlvbnNDaGFuZ2UoZXhwb3J0T3B0aW9uczogRXhwb3J0T3B0aW9ucykge1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoZXhwb3J0T3B0aW9ucyk7XG4gIH1cblxuICBpbXBvcnRFeHBvcnRUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRUeXBlID0gZXZlbnQudmFsdWU7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiaW1wb3J0RXhwb3J0U2hvd0JvdGhUeXBlXCI+XG4gIDxtYXQtdGFiXG4gICAgW2xhYmVsXT1cIidpZ28uaW50ZWdyYXRpb24uaW1wb3J0RXhwb3J0VG9vbC5pbXBvcnRFeHBvcnREYXRhJyB8IHRyYW5zbGF0ZVwiXG4gID5cbiAgICA8aWdvLWltcG9ydC1leHBvcnRcbiAgICAgIFtjb250ZXh0VXJpXT1cIihjb250ZXh0U3RhdGUuY29udGV4dCQgfCBhc3luYykudXJpXCJcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIFtzZWxlY3RGaXJzdFByb2pdPVwic2VsZWN0Rmlyc3RQcm9qXCJcbiAgICAgIFtwcm9qZWN0aW9uc0xpbWl0YXRpb25zXT1cInByb2plY3Rpb25zTGltaXRhdGlvbnNcIlxuICAgICAgW3N0b3JlXT1cIndvcmtzcGFjZVN0b3JlXCJcbiAgICAgIFtzZWxlY3RlZE1vZGVdPVwiaW1wb3J0RXhwb3J0U3RhdGUuc2VsZWN0ZWRNb2RlJCB8IGFzeW5jXCJcbiAgICAgIChzZWxlY3RNb2RlKT1cIm1vZGVDaGFuZ2VkKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgW2V4cG9ydE9wdGlvbnMkXT1cImltcG9ydEV4cG9ydFN0YXRlLmV4cG9ydE9wdGlvbnMkXCJcbiAgICAgIChleHBvcnRPcHRpb25zQ2hhbmdlKT1cImV4cG9ydE9wdGlvbnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvaWdvLWltcG9ydC1leHBvcnQ+XG4gIDwvbWF0LXRhYj5cbiAgPG1hdC10YWJcbiAgICBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi5pbXBvcnRFeHBvcnRUb29sLmltcG9ydEV4cG9ydENvbnRleHQnIHwgdHJhbnNsYXRlXCJcbiAgPlxuICAgIDxpZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0IFttYXBdPVwibWFwXCI+PC9pZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0PlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG5cbjxpZ28taW1wb3J0LWV4cG9ydFxuICAqbmdJZj1cIiFpbXBvcnRFeHBvcnRTaG93Qm90aFR5cGUgJiYgaW1wb3J0RXhwb3J0VHlwZSA9PT0gJ2xheWVyJ1wiXG4gIFtjb250ZXh0VXJpXT1cIihjb250ZXh0U3RhdGUuY29udGV4dCQgfCBhc3luYykudXJpXCJcbiAgW21hcF09XCJtYXBcIlxuICBbc3RvcmVdPVwid29ya3NwYWNlU3RvcmVcIlxuICBbc2VsZWN0ZWRNb2RlXT1cImltcG9ydEV4cG9ydFN0YXRlLnNlbGVjdGVkTW9kZSQgfCBhc3luY1wiXG4gIChzZWxlY3RNb2RlKT1cIm1vZGVDaGFuZ2VkKCRhbnkoJGV2ZW50KSlcIlxuICBbZXhwb3J0T3B0aW9ucyRdPVwiaW1wb3J0RXhwb3J0U3RhdGUuZXhwb3J0T3B0aW9ucyRcIlxuICAoZXhwb3J0T3B0aW9uc0NoYW5nZSk9XCJleHBvcnRPcHRpb25zQ2hhbmdlKCRldmVudClcIlxuPlxuPC9pZ28taW1wb3J0LWV4cG9ydD5cblxuPGlnby1jb250ZXh0LWltcG9ydC1leHBvcnRcbiAgKm5nSWY9XCIhaW1wb3J0RXhwb3J0U2hvd0JvdGhUeXBlICYmIGltcG9ydEV4cG9ydFR5cGUgPT09ICdjb250ZXh0J1wiXG4gIFttYXBdPVwibWFwXCJcbj5cbjwvaWdvLWNvbnRleHQtaW1wb3J0LWV4cG9ydD5cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LXRvb2wvaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LXRvb2wvaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0wscUJBQXFCLEVBRXRCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNqQixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQXNCekIsSUFBTSx5QkFBeUIsR0FB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ZnJDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQiw0QkFBNEI7d0JBQzVCLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjtxS0FHUSxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFjRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uL3dvcmtzcGFjZSc7XG5pbXBvcnQgeyBDb250ZXh0SW1wb3J0RXhwb3J0Q29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29udGV4dCc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHtcbiAgRXhwb3J0T3B0aW9ucyxcbiAgSWdvTWFwLFxuICBJbXBvcnRFeHBvcnRDb21wb25lbnQsXG4gIFByb2plY3Rpb25zTGltaXRhdGlvbnNPcHRpb25zXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IENvbnRleHRTdGF0ZSB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29udGV4dC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlU3RhdGUgfSBmcm9tICcuLi8uLi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlJztcbmltcG9ydCB7XG4gIEltcG9ydEV4cG9ydE1vZGUsXG4gIEltcG9ydEV4cG9ydFN0YXRlLFxuICBJbXBvcnRFeHBvcnRUeXBlXG59IGZyb20gJy4uL2ltcG9ydC1leHBvcnQuc3RhdGUnO1xuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdpbXBvcnRFeHBvcnQnLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5pbXBvcnRFeHBvcnQnLFxuICBpY29uOiAnZmlsZV9zYXZlJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1pbXBvcnQtZXhwb3J0LXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWV4cG9ydC10b29sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIEltcG9ydEV4cG9ydENvbXBvbmVudCxcbiAgICBDb250ZXh0SW1wb3J0RXhwb3J0Q29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydEV4cG9ydFRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9qZWN0aW9uc0xpbWl0YXRpb25zOiBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9ucztcblxuICBASW5wdXQoKSBzZWxlY3RGaXJzdFByb2ogPSBmYWxzZTtcblxuICAvKipcbiAgICogTWFwIHRvIG1lYXN1cmUgb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IHdvcmtzcGFjZVN0b3JlKCk6IFdvcmtzcGFjZVN0b3JlIHtcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VTdGF0ZS5zdG9yZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGltcG9ydEV4cG9ydFR5cGU6IEltcG9ydEV4cG9ydFR5cGUgPSBJbXBvcnRFeHBvcnRUeXBlLmxheWVyO1xuICBASW5wdXQoKSBpbXBvcnRFeHBvcnRTaG93Qm90aFR5cGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHB1YmxpYyBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGUsXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXG4gICAgcHVibGljIGNvbnRleHRTdGF0ZTogQ29udGV4dFN0YXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdFR5cGUoKTtcbiAgICB0aGlzLnNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0VHlwZSgpIHtcbiAgICBpZiAodGhpcy5pbXBvcnRFeHBvcnRUeXBlKSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLmltcG9ydEV4cG9ydFR5cGUkLm5leHQodGhpcy5pbXBvcnRFeHBvcnRUeXBlKTtcbiAgICB9XG4gICAgY29uc3QgdXNlclNlbGVjdGVkVHlwZSA9IHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuaW1wb3J0RXhwb3J0VHlwZSQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRJbXBvcnRFeHBvcnRUeXBlKHVzZXJTZWxlY3RlZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldEltcG9ydEV4cG9ydFR5cGUoSW1wb3J0RXhwb3J0VHlwZS5sYXllcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RNb2RlKCkge1xuICAgIGNvbnN0IHVzZXJTZWxlY3RlZE1vZGUgPSB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNlbGVjdGVkTW9kZSQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZE1vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKHVzZXJTZWxlY3RlZE1vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5pbXBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RlQ2hhbmdlZChtb2RlOiBJbXBvcnRFeHBvcnRNb2RlKSB7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKG1vZGUpO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydE9wdGlvbnNDaGFuZ2UoZXhwb3J0T3B0aW9uczogRXhwb3J0T3B0aW9ucykge1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoZXhwb3J0T3B0aW9ucyk7XG4gIH1cblxuICBpbXBvcnRFeHBvcnRUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRUeXBlID0gZXZlbnQudmFsdWU7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiaW1wb3J0RXhwb3J0U2hvd0JvdGhUeXBlXCI+XG4gIDxtYXQtdGFiXG4gICAgW2xhYmVsXT1cIidpZ28uaW50ZWdyYXRpb24uaW1wb3J0RXhwb3J0VG9vbC5pbXBvcnRFeHBvcnREYXRhJyB8IHRyYW5zbGF0ZVwiXG4gID5cbiAgICA8aWdvLWltcG9ydC1leHBvcnRcbiAgICAgIFtjb250ZXh0VXJpXT1cIihjb250ZXh0U3RhdGUuY29udGV4dCQgfCBhc3luYykudXJpXCJcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIFtzZWxlY3RGaXJzdFByb2pdPVwic2VsZWN0Rmlyc3RQcm9qXCJcbiAgICAgIFtwcm9qZWN0aW9uc0xpbWl0YXRpb25zXT1cInByb2plY3Rpb25zTGltaXRhdGlvbnNcIlxuICAgICAgW3N0b3JlXT1cIndvcmtzcGFjZVN0b3JlXCJcbiAgICAgIFtzZWxlY3RlZE1vZGVdPVwiaW1wb3J0RXhwb3J0U3RhdGUuc2VsZWN0ZWRNb2RlJCB8IGFzeW5jXCJcbiAgICAgIChzZWxlY3RNb2RlKT1cIm1vZGVDaGFuZ2VkKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgW2V4cG9ydE9wdGlvbnMkXT1cImltcG9ydEV4cG9ydFN0YXRlLmV4cG9ydE9wdGlvbnMkXCJcbiAgICAgIChleHBvcnRPcHRpb25zQ2hhbmdlKT1cImV4cG9ydE9wdGlvbnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvaWdvLWltcG9ydC1leHBvcnQ+XG4gIDwvbWF0LXRhYj5cbiAgPG1hdC10YWJcbiAgICBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi5pbXBvcnRFeHBvcnRUb29sLmltcG9ydEV4cG9ydENvbnRleHQnIHwgdHJhbnNsYXRlXCJcbiAgPlxuICAgIDxpZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0IFttYXBdPVwibWFwXCI+PC9pZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0PlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG5cbjxpZ28taW1wb3J0LWV4cG9ydFxuICAqbmdJZj1cIiFpbXBvcnRFeHBvcnRTaG93Qm90aFR5cGUgJiYgaW1wb3J0RXhwb3J0VHlwZSA9PT0gJ2xheWVyJ1wiXG4gIFtjb250ZXh0VXJpXT1cIihjb250ZXh0U3RhdGUuY29udGV4dCQgfCBhc3luYykudXJpXCJcbiAgW21hcF09XCJtYXBcIlxuICBbc3RvcmVdPVwid29ya3NwYWNlU3RvcmVcIlxuICBbc2VsZWN0ZWRNb2RlXT1cImltcG9ydEV4cG9ydFN0YXRlLnNlbGVjdGVkTW9kZSQgfCBhc3luY1wiXG4gIChzZWxlY3RNb2RlKT1cIm1vZGVDaGFuZ2VkKCRhbnkoJGV2ZW50KSlcIlxuICBbZXhwb3J0T3B0aW9ucyRdPVwiaW1wb3J0RXhwb3J0U3RhdGUuZXhwb3J0T3B0aW9ucyRcIlxuICAoZXhwb3J0T3B0aW9uc0NoYW5nZSk9XCJleHBvcnRPcHRpb25zQ2hhbmdlKCRldmVudClcIlxuPlxuPC9pZ28taW1wb3J0LWV4cG9ydD5cblxuPGlnby1jb250ZXh0LWltcG9ydC1leHBvcnRcbiAgKm5nSWY9XCIhaW1wb3J0RXhwb3J0U2hvd0JvdGhUeXBlICYmIGltcG9ydEV4cG9ydFR5cGUgPT09ICdjb250ZXh0J1wiXG4gIFttYXBdPVwibWFwXCJcbj5cbjwvaWdvLWNvbnRleHQtaW1wb3J0LWV4cG9ydD5cbiJdfQ==