geonetwork-ui 2.4.2-dev.ff0aab388 → 2.5.0-dev.d91908296

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 (103) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -1
  3. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  4. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +4 -14
  5. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +3 -3
  6. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +3 -3
  7. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +3 -4
  8. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +3 -3
  9. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +31 -40
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +3 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +3 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +8 -9
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +5 -25
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -4
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +3 -3
  17. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +10 -2
  18. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +6 -3
  19. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  20. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -3
  21. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +3 -1
  22. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
  23. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -1
  24. package/esm2022/libs/util/data-fetcher/src/lib/headers.mjs +3 -2
  25. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +2 -1
  26. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +79 -0
  27. package/esm2022/translations/de.json +13 -5
  28. package/esm2022/translations/en.json +22 -14
  29. package/esm2022/translations/es.json +13 -5
  30. package/esm2022/translations/fr.json +23 -15
  31. package/esm2022/translations/it.json +32 -26
  32. package/esm2022/translations/nl.json +13 -5
  33. package/esm2022/translations/pt.json +13 -5
  34. package/fesm2022/geonetwork-ui.mjs +293 -182
  35. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  36. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  37. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  38. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  39. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +0 -1
  40. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +7 -14
  42. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  43. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +2 -2
  44. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  45. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +1 -6
  46. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  47. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  48. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  49. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +2 -1
  50. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  51. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -1
  52. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  53. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts.map +1 -1
  54. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +3 -2
  55. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  56. package/libs/util/data-fetcher/src/lib/headers.d.ts.map +1 -1
  57. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  58. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  59. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +21 -0
  60. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -0
  61. package/package.json +1 -1
  62. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -0
  63. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -2
  64. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -0
  65. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -1
  66. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -14
  67. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +1 -1
  68. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +1 -1
  69. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +4 -1
  70. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +0 -4
  71. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -2
  72. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +8 -8
  73. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +32 -45
  74. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +1 -1
  75. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +3 -1
  76. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
  77. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +0 -1
  78. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +6 -6
  79. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +24 -17
  80. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -27
  81. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +1 -1
  82. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -1
  83. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +1 -1
  84. package/src/libs/feature/editor/src/lib/fields.config.ts +9 -1
  85. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -0
  86. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +1 -0
  87. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  88. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
  89. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +1 -0
  90. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +3 -0
  91. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -1
  92. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +9 -1
  93. package/src/libs/util/data-fetcher/src/lib/headers.ts +4 -3
  94. package/src/libs/util/data-fetcher/src/lib/model.ts +1 -0
  95. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +112 -0
  96. package/translations/de.json +13 -5
  97. package/translations/en.json +22 -14
  98. package/translations/es.json +13 -5
  99. package/translations/fr.json +23 -15
  100. package/translations/it.json +32 -26
  101. package/translations/nl.json +13 -5
  102. package/translations/pt.json +13 -5
  103. package/translations/sk.json +14 -6
@@ -137,7 +137,7 @@ export class ResultsTableComponent {
137
137
  this.recordsSelectedChange.emit([[record], selected]);
138
138
  }
139
139
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i5.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i5.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
141
141
  }
142
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
143
143
  type: Component,
@@ -151,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
151
151
  ActionMenuComponent,
152
152
  NgIconComponent,
153
153
  CdkOverlayOrigin,
154
- ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
154
+ ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
155
155
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { records: [{
156
156
  type: Input
157
157
  }], selectedRecordsIdentifiers: [{
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
182
  type: ViewChildren,
183
183
  args: ['actionMenuButton', { read: ElementRef }]
184
184
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckYsT0FBTyxFQUNMLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsaUJBQWlCLEdBQ2xCLE1BQU0sd0NBQXdDLENBQUE7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8s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R0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgRmllbGRTb3J0LFxuICBTb3J0QnlGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQsIFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHtcbiAgRmlsZUZvcm1hdCxcbiAgZm9ybWF0VXNlckluZm8sXG4gIGdldEJhZGdlQ29sb3IsXG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZvcm1hdFByaW9yaXR5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pclVzZXIsIGljb25vaXJMb2NrIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IG1hdE1vcmVWZXJ0IH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1yZXN1bHRzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXN1bHRzLXRhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBJbnRlcmFjdGl2ZVRhYmxlQ29tcG9uZW50LFxuICAgIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gIF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVJY29ucyh7IGljb25vaXJVc2VyLCBpY29ub2lyTG9jaywgbWF0TW9yZVZlcnQgfSldLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10gPSBbXVxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZHNJZGVudGlmaWVyczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBzb3J0T3JkZXI6IFNvcnRCeUZpZWxkID0gbnVsbFxuICBASW5wdXQoKSBoYXNEcmFmdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlXG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbiAgQElucHV0KCkgY2FuRGVsZXRlOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZVxuICBASW5wdXQoKSBpc0RyYWZ0UGFnZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmcgPSBmYWxzZVxuXG4gIC8vIGVtaXRzIHRoZSBjb2x1bW4gKGZpZWxkKSBhcyB3ZWxsIGFzIHRoZSBvcmRlclxuICBAT3V0cHV0KCkgc29ydEJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbc3RyaW5nLCAnYXNjJyB8ICdkZXNjJ10+KClcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGRlbGV0ZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgcmVjb3Jkc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBbQ2F0YWxvZ1JlY29yZFtdLCBib29sZWFuXVxuICA+KClcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25NZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGFjdGlvbk1lbnVCdXR0b25zITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWZcblxuICBpc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgb3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpIHtcbiAgICB0aGlzLmlzQWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY29yZHMuaW5kZXhPZihpdGVtKVxuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmFjdGlvbk1lbnVCdXR0b25zLnRvQXJyYXkoKVtpbmRleF1cblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhidXR0b25FbGVtZW50KVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICBdKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICB9KVxuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbClcblxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgICB9KVxuICB9XG5cbiAgY2xvc2VBY3Rpb25NZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIGRhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnb25saW5lUmVzb3VyY2VzJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgob25saW5lUmVzb3VyY2UpID0+XG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdChvbmxpbmVSZXNvdXJjZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRVc2VySW5mbyh1c2VySW5mbylcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgaWYgKGl0ZW0/LmV4dHJhcz8uZWRpdCB8fCB0aGlzLmlzRHJhZnRQYWdlKVxuICAgICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZUR1cGxpY2F0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBoYW5kbGVEZWxldGUoaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgfVxuXG4gIHNldFNvcnRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSB7XG4gICAgdGhpcy5zb3J0QnlDaGFuZ2UuZW1pdChbY29sLCBvcmRlcl0pXG4gIH1cblxuICBpc1NvcnRlZEJ5KGNvbDogc3RyaW5nKTogJ2Rlc2MnIHwgJ2FzYycgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc29ydE9yZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBzb3J0QXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydE9yZGVyWzBdKVxuICAgICAgPyAodGhpcy5zb3J0T3JkZXIgYXMgRmllbGRTb3J0W10pXG4gICAgICA6IChbdGhpcy5zb3J0T3JkZXJdIGFzIEZpZWxkU29ydFtdKVxuICAgIGZvciAoY29uc3Qgc29ydCBvZiBzb3J0QXJyYXkpIHtcbiAgICAgIGlmIChzb3J0WzFdID09PSBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFtbcmVjb3JkXSwgc2VsZWN0ZWRdKVxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICBbaXNEcmFmdFBhZ2VdPVwiaXNEcmFmdFBhZ2VcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzNyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxuZy1pY29uXG4gICAgICAgIG5hbWU9XCJpY29ub2lyTG9ja1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wdXJwbGVcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIml0ZW0uZXh0cmFzPy5lZGl0IHx8IGlzRHJhZnRQYWdlXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgID48L2duLXVpLWNoZWNrYm94PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFtncm93XT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgPHNwYW4gZGF0YS1jeT1cInJlc3VsdEl0ZW1UaXRsZVwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57e1xuICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiaGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuMmVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic5cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1tZWRpdW1cIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdGV4dC14c1wiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzlyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVjb3JkT3duZXInKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZWNvcmRPd25lcicsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMudXNlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyVXNlclwiIHNpemU9XCIxNnB4XCI+PC9uZy1pY29uPlxuICAgICAgPHNwYW4gZGF0YS1jeT1cIm93bmVySW5mb1wiIGNsYXNzPVwidGV4dC14c1wiPnt7XG4gICAgICAgIGZvcm1hdFVzZXJJbmZvKGl0ZW0uZXh0cmFzPy5vd25lckluZm8pXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFNUQVRVUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic2cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5zdGF0dXM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAoaXRlbS5leHRyYXM/LlsnaXNQdWJsaXNoZWRUb0FsbCddXG4gICAgICAgICAgICA/ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLnB1Ymxpc2hlZCdcbiAgICAgICAgICAgIDogJ3JlY29yZC5tZXRhZGF0YS5zdGF0dXMubm90UHVibGlzaGVkJ1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFVQREFURSBEQVRFIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtblxuICAgIFt3aWR0aF09XCInOHJlbSdcIlxuICAgIFtzb3J0YWJsZV09XCJ0cnVlXCJcbiAgICBbYWN0aXZlU29ydF09XCJpc1NvcnRlZEJ5KCdjaGFuZ2VEYXRlJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgnY2hhbmdlRGF0ZScsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMuY2hhbmdlRGF0ZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHRleHQtbGVmdCB3LWZ1bGwgdGV4dC14c1wiPlxuICAgICAgICB7e1xuICAgICAgICAgIGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyBkYXRlVG9TdHJpbmcoaXRlbS5yZWNvcmRVcGRhdGVkKVxuICAgICAgICAgICAgOiAnLSdcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gQUNUSU9OIE1FTlUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPiA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAjYWN0aW9uTWVudUJ1dHRvblxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwib3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpXCJcbiAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd0ZXh0LXB1cnBsZS1saWdodCc6ICFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgbmFtZT1cIm1hdE1vcmVWZXJ0XCJcbiAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICAgICAgPGduLXVpLWFjdGlvbi1tZW51XG4gICAgICAgICAgW2NhbkR1cGxpY2F0ZV09XCJjYW5EdXBsaWNhdGUoaXRlbSkgJiYgIWlzRHVwbGljYXRpbmdcIlxuICAgICAgICAgIFtjYW5EZWxldGVdPVwiY2FuRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAoZHVwbGljYXRlKT1cImhhbmRsZUR1cGxpY2F0ZShpdGVtKVwiXG4gICAgICAgICAgKGRlbGV0ZSk9XCJoYW5kbGVEZWxldGUoaXRlbSlcIlxuICAgICAgICAgIChjbG9zZUFjdGlvbk1lbnUpPVwiY2xvc2VBY3Rpb25NZW51KClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZ24tdWktYWN0aW9uLW1lbnU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZT5cbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckYsT0FBTyxFQUNMLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsaUJBQWlCLEdBQ2xCLE1BQU0sd0NBQXdDLENBQUE7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8s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R0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgRmllbGRTb3J0LFxuICBTb3J0QnlGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQsIFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHtcbiAgRmlsZUZvcm1hdCxcbiAgZm9ybWF0VXNlckluZm8sXG4gIGdldEJhZGdlQ29sb3IsXG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZvcm1hdFByaW9yaXR5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pclVzZXIsIGljb25vaXJMb2NrIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IG1hdE1vcmVWZXJ0IH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1yZXN1bHRzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXN1bHRzLXRhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBJbnRlcmFjdGl2ZVRhYmxlQ29tcG9uZW50LFxuICAgIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gIF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVJY29ucyh7IGljb25vaXJVc2VyLCBpY29ub2lyTG9jaywgbWF0TW9yZVZlcnQgfSldLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10gPSBbXVxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZHNJZGVudGlmaWVyczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBzb3J0T3JkZXI6IFNvcnRCeUZpZWxkID0gbnVsbFxuICBASW5wdXQoKSBoYXNEcmFmdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlXG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbiAgQElucHV0KCkgY2FuRGVsZXRlOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZVxuICBASW5wdXQoKSBpc0RyYWZ0UGFnZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmcgPSBmYWxzZVxuXG4gIC8vIGVtaXRzIHRoZSBjb2x1bW4gKGZpZWxkKSBhcyB3ZWxsIGFzIHRoZSBvcmRlclxuICBAT3V0cHV0KCkgc29ydEJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbc3RyaW5nLCAnYXNjJyB8ICdkZXNjJ10+KClcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGRlbGV0ZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgcmVjb3Jkc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBbQ2F0YWxvZ1JlY29yZFtdLCBib29sZWFuXVxuICA+KClcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25NZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGFjdGlvbk1lbnVCdXR0b25zITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWZcblxuICBpc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgb3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpIHtcbiAgICB0aGlzLmlzQWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY29yZHMuaW5kZXhPZihpdGVtKVxuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmFjdGlvbk1lbnVCdXR0b25zLnRvQXJyYXkoKVtpbmRleF1cblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhidXR0b25FbGVtZW50KVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICBdKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICB9KVxuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbClcblxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgICB9KVxuICB9XG5cbiAgY2xvc2VBY3Rpb25NZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIGRhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnb25saW5lUmVzb3VyY2VzJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgob25saW5lUmVzb3VyY2UpID0+XG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdChvbmxpbmVSZXNvdXJjZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRVc2VySW5mbyh1c2VySW5mbylcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgaWYgKGl0ZW0/LmV4dHJhcz8uZWRpdCB8fCB0aGlzLmlzRHJhZnRQYWdlKVxuICAgICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZUR1cGxpY2F0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBoYW5kbGVEZWxldGUoaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgfVxuXG4gIHNldFNvcnRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSB7XG4gICAgdGhpcy5zb3J0QnlDaGFuZ2UuZW1pdChbY29sLCBvcmRlcl0pXG4gIH1cblxuICBpc1NvcnRlZEJ5KGNvbDogc3RyaW5nKTogJ2Rlc2MnIHwgJ2FzYycgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc29ydE9yZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBzb3J0QXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydE9yZGVyWzBdKVxuICAgICAgPyAodGhpcy5zb3J0T3JkZXIgYXMgRmllbGRTb3J0W10pXG4gICAgICA6IChbdGhpcy5zb3J0T3JkZXJdIGFzIEZpZWxkU29ydFtdKVxuICAgIGZvciAoY29uc3Qgc29ydCBvZiBzb3J0QXJyYXkpIHtcbiAgICAgIGlmIChzb3J0WzFdID09PSBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFtbcmVjb3JkXSwgc2VsZWN0ZWRdKVxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICBbaXNEcmFmdFBhZ2VdPVwiaXNEcmFmdFBhZ2VcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzNyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxuZy1pY29uXG4gICAgICAgIG5hbWU9XCJpY29ub2lyTG9ja1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wdXJwbGVcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIml0ZW0uZXh0cmFzPy5lZGl0IHx8IGlzRHJhZnRQYWdlXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgID48L2duLXVpLWNoZWNrYm94PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFtncm93XT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgPHNwYW4gZGF0YS1jeT1cInJlc3VsdEl0ZW1UaXRsZVwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57e1xuICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiaGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuMmVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic5cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1tZWRpdW1cIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdGV4dC14c1wiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzEycmVtJ1wiXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3JlY29yZE93bmVyJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVjb3JkT3duZXInLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLnVzZXI8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pclVzZXJcIiBzaXplPVwiMTZweFwiPjwvbmctaWNvbj5cbiAgICAgIDxzcGFuIGRhdGEtY3k9XCJvd25lckluZm9cIiBjbGFzcz1cInRleHQteHNcIj57e1xuICAgICAgICBmb3JtYXRVc2VySW5mbyhpdGVtLmV4dHJhcz8ub3duZXJJbmZvKVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBTVEFUVVMgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uIFt3aWR0aF09XCInNnJlbSdcIj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuc3RhdHVzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgKGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyAncmVjb3JkLm1ldGFkYXRhLnN0YXR1cy5wdWJsaXNoZWQnXG4gICAgICAgICAgICA6ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLm5vdFB1Ymxpc2hlZCdcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBVUERBVEUgREFURSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzhyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgnY2hhbmdlRGF0ZScpXCJcbiAgICAoc29ydENoYW5nZSk9XCJzZXRTb3J0QnkoJ2NoYW5nZURhdGUnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLmNoYW5nZURhdGU8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCB0ZXh0LWxlZnQgdy1mdWxsIHRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICBpdGVtLmV4dHJhcz8uWydpc1B1Ymxpc2hlZFRvQWxsJ11cbiAgICAgICAgICAgID8gZGF0ZVRvU3RyaW5nKGl0ZW0ucmVjb3JkVXBkYXRlZClcbiAgICAgICAgICAgIDogJy0nXG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIEFDVElPTiBNRU5VIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj4gPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgI2FjdGlvbk1lbnVCdXR0b25cbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9wZW5BY3Rpb25NZW51KGl0ZW0sIHRlbXBsYXRlKVwiXG4gICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5leHRyYXM/LmVkaXQgJiYgIWlzRHJhZnRQYWdlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWljb25cbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAndGV4dC1wdXJwbGUtbGlnaHQnOiAhaXRlbS5leHRyYXM/LmVkaXQgJiYgIWlzRHJhZnRQYWdlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIG5hbWU9XCJtYXRNb3JlVmVydFwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAgICAgIDxnbi11aS1hY3Rpb24tbWVudVxuICAgICAgICAgIFtjYW5EdXBsaWNhdGVdPVwiY2FuRHVwbGljYXRlKGl0ZW0pICYmICFpc0R1cGxpY2F0aW5nXCJcbiAgICAgICAgICBbY2FuRGVsZXRlXT1cImNhbkRlbGV0ZShpdGVtKVwiXG4gICAgICAgICAgKGR1cGxpY2F0ZSk9XCJoYW5kbGVEdXBsaWNhdGUoaXRlbSlcIlxuICAgICAgICAgIChkZWxldGUpPVwiaGFuZGxlRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAoY2xvc2VBY3Rpb25NZW51KT1cImNsb3NlQWN0aW9uTWVudSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2duLXVpLWFjdGlvbi1tZW51PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbjwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGU+XG4iXX0=
@@ -6,6 +6,7 @@ import { ExcelReader } from './readers/excel';
6
6
  import { FetchError } from './model';
7
7
  import { inferDatasetType } from './utils';
8
8
  import { GmlReader } from './readers/gml';
9
+ import { WfsReader } from './readers/wfs';
9
10
  export async function openDataset(url, typeHint, options) {
10
11
  const fileType = await inferDatasetType(url, typeHint);
11
12
  let reader;
@@ -26,6 +27,9 @@ export async function openDataset(url, typeHint, options) {
26
27
  case 'gml':
27
28
  reader = new GmlReader(url, options.namespace, options.wfsVersion);
28
29
  break;
30
+ case 'wfs':
31
+ reader = await WfsReader.createReader(url, options.wfsFeatureType);
32
+ break;
29
33
  }
30
34
  reader.load();
31
35
  return reader;
@@ -58,4 +62,4 @@ export async function readDataset(url, typeHint, options) {
58
62
  export function readDatasetHeaders(url) {
59
63
  return fetch(url).then((response) => parseHeaders(response.headers));
60
64
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL2RhdGEtZmV0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUE0QixVQUFVLEVBQWlCLE1BQU0sU0FBUyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR3pDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixHQUFXLEVBQ1gsUUFBd0IsRUFDeEIsT0FBdUQ7SUFFdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsSUFBSSxNQUFrQixDQUFBO0lBQ3RCLElBQUksQ0FBQztRQUNILFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDM0IsTUFBSztZQUNQLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVCLE1BQUs7WUFDUCxLQUFLLFNBQVM7Z0JBQ1osTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixNQUFLO1lBQ1AsS0FBSyxPQUFPO2dCQUNWLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUNsRSxNQUFLO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNiLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxRQUF3QixFQUN4QixPQUFhO0lBRWIsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN4RCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0MsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZUhlYWRlcnMgfSBmcm9tICcuL2hlYWRlcnMnXG5pbXBvcnQgeyBDc3ZSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvY3N2J1xuaW1wb3J0IHsgSnNvblJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9qc29uJ1xuaW1wb3J0IHsgR2VvanNvblJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9nZW9qc29uJ1xuaW1wb3J0IHsgRXhjZWxSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZXhjZWwnXG5pbXBvcnQgeyBEYXRhSXRlbSwgRGF0YXNldEhlYWRlcnMsIEZldGNoRXJyb3IsIFN1cHBvcnRlZFR5cGUgfSBmcm9tICcuL21vZGVsJ1xuaW1wb3J0IHsgaW5mZXJEYXRhc2V0VHlwZSB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBCYXNlUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2Jhc2UnXG5pbXBvcnQgeyBHbWxSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZ21sJ1xuaW1wb3J0IHsgV2ZzVmVyc2lvbiB9IGZyb20gJ0BjYW1wdG9jYW1wL29nYy1jbGllbnQnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuRGF0YXNldChcbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGVIaW50PzogU3VwcG9ydGVkVHlwZSxcbiAgb3B0aW9ucz86IHsgbmFtZXNwYWNlOiBzdHJpbmc7IHdmc1ZlcnNpb246IFdmc1ZlcnNpb24gfVxuKTogUHJvbWlzZTxCYXNlUmVhZGVyPiB7XG4gIGNvbnN0IGZpbGVUeXBlID0gYXdhaXQgaW5mZXJEYXRhc2V0VHlwZSh1cmwsIHR5cGVIaW50KVxuICBsZXQgcmVhZGVyOiBCYXNlUmVhZGVyXG4gIHRyeSB7XG4gICAgc3dpdGNoIChmaWxlVHlwZSkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcih1cmwpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIodXJsKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHZW9qc29uUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2dtbCc6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHbWxSZWFkZXIodXJsLCBvcHRpb25zLm5hbWVzcGFjZSwgb3B0aW9ucy53ZnNWZXJzaW9uKVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICByZWFkZXIubG9hZCgpXG4gICAgcmV0dXJuIHJlYWRlclxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBGZXRjaEVycm9yLnBhcnNpbmdGYWlsZWQoZS5tZXNzYWdlKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmZXRjaGVzIHRoZSBmdWxsIGRhdGFzZXQgYXQgdGhlIGdpdmVuIFVSTCBhbmQgcGFyc2VzIGl0IGFjY29yZGluZyB0byBpdHMgbWltZSB0eXBlLlxuICogQWxsIGl0ZW1zIGluIHRoZSBkYXRhc2V0IGFyZSBjb252ZXJ0ZWQgdG8gR2VvSlNPTiBmZWF0dXJlcywgZXZlbiBpZiB0aGV5IGRvIG5vdCBiZWFyIGFueSBzcGF0aWFsIGdlb21ldHJ5LlxuICogRmlsZSB0eXBlIGNhbiBiZSBlaXRoZXIgaW5mZXJyZWQgKGZyb20gdGhlIEhUVFAgaGVhZGVycyBvciB0aGUgVVJMKSwgb3IgaGludGVkIHVzaW5nIHRoZSAybmQgYXJndW1lbnRcbiAqIEZpbGUgdHlwZSBpcyBkZXRlcm1pbmVkIGxpa2VkIHNvOlxuICogIDEuIGlmIGEgdHlwZSBoaW50IGlzIGdpdmVuLCB1c2UgaXRcbiAqICAyLiBvdGhlcndpc2UsIGxvb2sgZm9yIGEgQ29udGVudC1UeXBlIGhlYWRlciBpbiB0aGUgcmVzcG9uc2Ugd2l0aCBhIHN1cHBvcnRlZCBtaW1lIHR5cGVcbiAqICAzLiBpZiBubyB2YWxpZCBtaW1lIHR5cGUgd2FzIGZvdW5kLCBsb29rIGZvciBhbiBleHBsaWNpdCBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgdXJsICguY3N2LCAuZ2VvanNvbiBldGMuKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERhdGFzZXQoXG4gIHVybDogc3RyaW5nLFxuICB0eXBlSGludD86IFN1cHBvcnRlZFR5cGUsXG4gIG9wdGlvbnM/OiBhbnlcbik6IFByb21pc2U8RGF0YUl0ZW1bXT4ge1xuICBjb25zdCByZWFkZXIgPSBhd2FpdCBvcGVuRGF0YXNldCh1cmwsIHR5cGVIaW50LCBvcHRpb25zKVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkZXIucmVhZCgpXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IEZldGNoRXJyb3IucGFyc2luZ0ZhaWxlZChlLm1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZldGNoZXMgb25seSB0aGUgaGVhZGVyIG9mIHRoZSBkYXRhc2V0IGF0IHRoZSBnaXZlbiBVUkwsIGdpdmluZyBpbmZvIG9uIHNpemUsIG1pbWUtdHlwZSBhbmQgbGFzdCB1cGRhdGUgaWYgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZERhdGFzZXRIZWFkZXJzKHVybDogc3RyaW5nKTogUHJvbWlzZTxEYXRhc2V0SGVhZGVycz4ge1xuICByZXR1cm4gZmV0Y2godXJsKS50aGVuKChyZXNwb25zZSkgPT4gcGFyc2VIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpKVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL2RhdGEtZmV0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUE0QixVQUFVLEVBQWlCLE1BQU0sU0FBUyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFekMsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxRQUF3QixFQUN4QixPQUlDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsSUFBSSxNQUFrQixDQUFBO0lBQ3RCLElBQUksQ0FBQztRQUNILFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDM0IsTUFBSztZQUNQLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVCLE1BQUs7WUFDUCxLQUFLLFNBQVM7Z0JBQ1osTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixNQUFLO1lBQ1AsS0FBSyxPQUFPO2dCQUNWLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUNsRSxNQUFLO1lBQ1AsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtnQkFDbEUsTUFBSztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDYixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0MsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixHQUFXLEVBQ1gsUUFBd0IsRUFDeEIsT0FBYTtJQUViLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VIZWFkZXJzIH0gZnJvbSAnLi9oZWFkZXJzJ1xuaW1wb3J0IHsgQ3N2UmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2NzdidcbmltcG9ydCB7IEpzb25SZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvanNvbidcbmltcG9ydCB7IEdlb2pzb25SZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZ2VvanNvbidcbmltcG9ydCB7IEV4Y2VsUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2V4Y2VsJ1xuaW1wb3J0IHsgRGF0YUl0ZW0sIERhdGFzZXRIZWFkZXJzLCBGZXRjaEVycm9yLCBTdXBwb3J0ZWRUeXBlIH0gZnJvbSAnLi9tb2RlbCdcbmltcG9ydCB7IGluZmVyRGF0YXNldFR5cGUgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgQmFzZVJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9iYXNlJ1xuaW1wb3J0IHsgR21sUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2dtbCdcbmltcG9ydCB7IFdmc1ZlcnNpb24gfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgV2ZzUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL3dmcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EYXRhc2V0KFxuICB1cmw6IHN0cmluZyxcbiAgdHlwZUhpbnQ/OiBTdXBwb3J0ZWRUeXBlLFxuICBvcHRpb25zPzoge1xuICAgIG5hbWVzcGFjZT86IHN0cmluZ1xuICAgIHdmc1ZlcnNpb24/OiBXZnNWZXJzaW9uXG4gICAgd2ZzRmVhdHVyZVR5cGU/OiBzdHJpbmdcbiAgfVxuKTogUHJvbWlzZTxCYXNlUmVhZGVyPiB7XG4gIGNvbnN0IGZpbGVUeXBlID0gYXdhaXQgaW5mZXJEYXRhc2V0VHlwZSh1cmwsIHR5cGVIaW50KVxuICBsZXQgcmVhZGVyOiBCYXNlUmVhZGVyXG4gIHRyeSB7XG4gICAgc3dpdGNoIChmaWxlVHlwZSkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcih1cmwpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIodXJsKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHZW9qc29uUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2dtbCc6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHbWxSZWFkZXIodXJsLCBvcHRpb25zLm5hbWVzcGFjZSwgb3B0aW9ucy53ZnNWZXJzaW9uKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgcmVhZGVyID0gYXdhaXQgV2ZzUmVhZGVyLmNyZWF0ZVJlYWRlcih1cmwsIG9wdGlvbnMud2ZzRmVhdHVyZVR5cGUpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlYWRlci5sb2FkKClcbiAgICByZXR1cm4gcmVhZGVyXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IEZldGNoRXJyb3IucGFyc2luZ0ZhaWxlZChlLm1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZldGNoZXMgdGhlIGZ1bGwgZGF0YXNldCBhdCB0aGUgZ2l2ZW4gVVJMIGFuZCBwYXJzZXMgaXQgYWNjb3JkaW5nIHRvIGl0cyBtaW1lIHR5cGUuXG4gKiBBbGwgaXRlbXMgaW4gdGhlIGRhdGFzZXQgYXJlIGNvbnZlcnRlZCB0byBHZW9KU09OIGZlYXR1cmVzLCBldmVuIGlmIHRoZXkgZG8gbm90IGJlYXIgYW55IHNwYXRpYWwgZ2VvbWV0cnkuXG4gKiBGaWxlIHR5cGUgY2FuIGJlIGVpdGhlciBpbmZlcnJlZCAoZnJvbSB0aGUgSFRUUCBoZWFkZXJzIG9yIHRoZSBVUkwpLCBvciBoaW50ZWQgdXNpbmcgdGhlIDJuZCBhcmd1bWVudFxuICogRmlsZSB0eXBlIGlzIGRldGVybWluZWQgbGlrZWQgc286XG4gKiAgMS4gaWYgYSB0eXBlIGhpbnQgaXMgZ2l2ZW4sIHVzZSBpdFxuICogIDIuIG90aGVyd2lzZSwgbG9vayBmb3IgYSBDb250ZW50LVR5cGUgaGVhZGVyIGluIHRoZSByZXNwb25zZSB3aXRoIGEgc3VwcG9ydGVkIG1pbWUgdHlwZVxuICogIDMuIGlmIG5vIHZhbGlkIG1pbWUgdHlwZSB3YXMgZm91bmQsIGxvb2sgZm9yIGFuIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9uIGluIHRoZSB1cmwgKC5jc3YsIC5nZW9qc29uIGV0Yy4pXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRGF0YXNldChcbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGVIaW50PzogU3VwcG9ydGVkVHlwZSxcbiAgb3B0aW9ucz86IGFueVxuKTogUHJvbWlzZTxEYXRhSXRlbVtdPiB7XG4gIGNvbnN0IHJlYWRlciA9IGF3YWl0IG9wZW5EYXRhc2V0KHVybCwgdHlwZUhpbnQsIG9wdGlvbnMpXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKClcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgRmV0Y2hFcnJvci5wYXJzaW5nRmFpbGVkKGUubWVzc2FnZSlcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgZmV0Y2hlcyBvbmx5IHRoZSBoZWFkZXIgb2YgdGhlIGRhdGFzZXQgYXQgdGhlIGdpdmVuIFVSTCwgZ2l2aW5nIGluZm8gb24gc2l6ZSwgbWltZS10eXBlIGFuZCBsYXN0IHVwZGF0ZSBpZiBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGF0YXNldEhlYWRlcnModXJsOiBzdHJpbmcpOiBQcm9taXNlPERhdGFzZXRIZWFkZXJzPiB7XG4gIHJldHVybiBmZXRjaCh1cmwpLnRoZW4oKHJlc3BvbnNlKSA9PiBwYXJzZUhlYWRlcnMocmVzcG9uc2UuaGVhZGVycykpXG59XG4iXX0=
@@ -3,7 +3,8 @@ export function parseHeaders(httpHeaders) {
3
3
  const result = {};
4
4
  if (httpHeaders.has('Content-Type')) {
5
5
  result.mimeType = httpHeaders.get('Content-Type').split(';')[0];
6
- const supported = SupportedTypes.filter((type) => AllMimeTypes[type].indexOf(result.mimeType) > -1)[0] || null;
6
+ const supported = SupportedTypes.filter((type) => type !== 'wfs') // Ignore wfs type as it is not a file type
7
+ .filter((type) => AllMimeTypes[type].indexOf(result.mimeType) > -1)[0] || null;
7
8
  if (supported !== null)
8
9
  result.supportedType = supported;
9
10
  }
@@ -19,4 +20,4 @@ export function parseHeaders(httpHeaders) {
19
20
  }
20
21
  return result;
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjL2xpYi9oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtCLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV0RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQW9CO0lBQy9DLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUE7SUFDakMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxNQUFNLFNBQVMsR0FDYixjQUFjLENBQUMsTUFBTSxDQUNuQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtRQUNkLElBQUksU0FBUyxLQUFLLElBQUk7WUFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQTtJQUMxRCxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1FBQ3ZELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBRSxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBOztZQUM1RCxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtJQUMvQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsTWltZVR5cGVzLCBEYXRhc2V0SGVhZGVycywgU3VwcG9ydGVkVHlwZXMgfSBmcm9tICcuL21vZGVsJ1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGh0dHBIZWFkZXJzOiBIZWFkZXJzKTogRGF0YXNldEhlYWRlcnMge1xuICBjb25zdCByZXN1bHQ6IERhdGFzZXRIZWFkZXJzID0ge31cbiAgaWYgKGh0dHBIZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykpIHtcbiAgICByZXN1bHQubWltZVR5cGUgPSBodHRwSGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLnNwbGl0KCc7JylbMF1cbiAgICBjb25zdCBzdXBwb3J0ZWQgPVxuICAgICAgU3VwcG9ydGVkVHlwZXMuZmlsdGVyKFxuICAgICAgICAodHlwZSkgPT4gQWxsTWltZVR5cGVzW3R5cGVdLmluZGV4T2YocmVzdWx0Lm1pbWVUeXBlIGFzIG5ldmVyKSA+IC0xXG4gICAgICApWzBdIHx8IG51bGxcbiAgICBpZiAoc3VwcG9ydGVkICE9PSBudWxsKSByZXN1bHQuc3VwcG9ydGVkVHlwZSA9IHN1cHBvcnRlZFxuICB9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0NvbnRlbnQtTGVuZ3RoJykpIHtcbiAgICByZXN1bHQuZmlsZVNpemVCeXRlcyA9IHBhcnNlSW50KGh0dHBIZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKSlcbiAgfVxuICBpZiAoaHR0cEhlYWRlcnMuaGFzKCdMYXN0LU1vZGlmaWVkJykpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaHR0cEhlYWRlcnMuZ2V0KCdMYXN0LU1vZGlmaWVkJykpXG4gICAgaWYgKE51bWJlci5pc05hTihkYXRlLnZhbHVlT2YoKSkpIHJlc3VsdC5sYXN0VXBkYXRlSW52YWxpZCA9IHRydWVcbiAgICBlbHNlIHJlc3VsdC5sYXN0VXBkYXRlID0gZGF0ZVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjL2xpYi9oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtCLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV0RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQW9CO0lBQy9DLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUE7SUFDakMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxNQUFNLFNBQVMsR0FDYixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsMkNBQTJDO2FBQ3hGLE1BQU0sQ0FDTCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtRQUNoQixJQUFJLFNBQVMsS0FBSyxJQUFJO1lBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7SUFDMUQsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtRQUN2RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUUsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTs7WUFDNUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsbE1pbWVUeXBlcywgRGF0YXNldEhlYWRlcnMsIFN1cHBvcnRlZFR5cGVzIH0gZnJvbSAnLi9tb2RlbCdcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhodHRwSGVhZGVyczogSGVhZGVycyk6IERhdGFzZXRIZWFkZXJzIHtcbiAgY29uc3QgcmVzdWx0OiBEYXRhc2V0SGVhZGVycyA9IHt9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgcmVzdWx0Lm1pbWVUeXBlID0gaHR0cEhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKS5zcGxpdCgnOycpWzBdXG4gICAgY29uc3Qgc3VwcG9ydGVkID1cbiAgICAgIFN1cHBvcnRlZFR5cGVzLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gJ3dmcycpIC8vIElnbm9yZSB3ZnMgdHlwZSBhcyBpdCBpcyBub3QgYSBmaWxlIHR5cGVcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAodHlwZSkgPT4gQWxsTWltZVR5cGVzW3R5cGVdLmluZGV4T2YocmVzdWx0Lm1pbWVUeXBlIGFzIG5ldmVyKSA+IC0xXG4gICAgICAgIClbMF0gfHwgbnVsbFxuICAgIGlmIChzdXBwb3J0ZWQgIT09IG51bGwpIHJlc3VsdC5zdXBwb3J0ZWRUeXBlID0gc3VwcG9ydGVkXG4gIH1cbiAgaWYgKGh0dHBIZWFkZXJzLmhhcygnQ29udGVudC1MZW5ndGgnKSkge1xuICAgIHJlc3VsdC5maWxlU2l6ZUJ5dGVzID0gcGFyc2VJbnQoaHR0cEhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpKVxuICB9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0xhc3QtTW9kaWZpZWQnKSkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShodHRwSGVhZGVycy5nZXQoJ0xhc3QtTW9kaWZpZWQnKSlcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUudmFsdWVPZigpKSkgcmVzdWx0Lmxhc3RVcGRhdGVJbnZhbGlkID0gdHJ1ZVxuICAgIGVsc2UgcmVzdWx0Lmxhc3RVcGRhdGUgPSBkYXRlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl19
@@ -43,6 +43,7 @@ export const SupportedTypes = [
43
43
  'geojson',
44
44
  'excel',
45
45
  'gml',
46
+ 'wfs',
46
47
  ];
47
48
  export const AllMimeTypes = {
48
49
  csv: CsvMimeTypes,
@@ -51,4 +52,4 @@ export const AllMimeTypes = {
51
52
  excel: ExcelMimeTypes,
52
53
  gml: GmlMimeTypes,
53
54
  };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9saWIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDUyxJQUFrRSxFQUNsRSxJQUFZLEVBQ1osYUFBYSxDQUFDO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBOEQ7UUFDbEUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQUk7UUFMdkIsVUFBSyxHQUFHLElBQUksQ0FBQTtRQU9WLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0RBQWdELElBQUksV0FBVyxJQUFJLEVBQUUsQ0FBQTtJQUN0RixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDRjtBQUVELDZHQUE2RztBQUU3RyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDckMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGtCQUFrQixDQUFVLENBQUE7QUFDMUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsc0JBQXNCO0lBQ3RCLDBCQUEwQjtDQUNsQixDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLDBCQUEwQixFQUFFLE9BQU87SUFDbkMsbUVBQW1FLEVBQUUsUUFBUTtDQUNyRSxDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLENBQVUsQ0FBQTtBQVM1RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLEtBQUs7Q0FDRyxDQUFBO0FBR1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLEdBQUcsRUFBRSxZQUFZO0lBQ2pCLElBQUksRUFBRSxhQUFhO0lBQ25CLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsS0FBSyxFQUFFLGNBQWM7SUFDckIsR0FBRyxFQUFFLFlBQVk7Q0FDbEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gJ2dlb2pzb24nXG5cbmV4cG9ydCB0eXBlIERhdGFJdGVtID0gRmVhdHVyZVxuXG5leHBvcnQgY2xhc3MgRmV0Y2hFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBzdGFjayA9IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHlwZTogJ2h0dHAnIHwgJ25ldHdvcmsnIHwgJ3BhcnNlJyB8ICd1bnN1cHBvcnRlZFR5cGUnIHwgJ3Vua25vd24nLFxuICAgIHB1YmxpYyBpbmZvOiBzdHJpbmcsXG4gICAgcHVibGljIGh0dHBTdGF0dXMgPSAwXG4gICkge1xuICAgIHRoaXMubWVzc2FnZSA9IGBBbiBlcnJvciBoYXBwZW5lZCBpbiB0aGUgZGF0YSBmZXRjaGVyLCB0eXBlOiAke3R5cGV9LCBpbmZvOiAke2luZm99YFxuICB9XG4gIHN0YXRpYyBodHRwKGNvZGU6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcignaHR0cCcsICcnLCBjb2RlKVxuICB9XG4gIHN0YXRpYyBjb3JzT3JOZXR3b3JrKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcignbmV0d29yaycsIG1lc3NhZ2UsIDApXG4gIH1cbiAgc3RhdGljIHBhcnNpbmdGYWlsZWQoaW5mbzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCdwYXJzZScsIGluZm8sIDApXG4gIH1cbiAgc3RhdGljIHVuc3VwcG9ydGVkVHlwZShtaW1lVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCd1bnN1cHBvcnRlZFR5cGUnLCBtaW1lVHlwZSwgMClcbiAgfVxuICBzdGF0aWMgdW5rbm93blR5cGUoKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCd1bmtub3duJywgJycsIDApXG4gIH1cbn1cblxuLy8gVXNlZnVsIHJlZmVyZW5jZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1xuXG5leHBvcnQgY29uc3QgQ3N2TWltZVR5cGVzID0gW1xuICAndGV4dC9jc3YnLCAvLyBhcyBwZXIgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzQxODBcbiAgJ2FwcGxpY2F0aW9uL2NzdicsIC8vIHNlZW1zIHRvIGJlIGFsc28gY29tbW9uXG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgSnNvbk1pbWVUeXBlcyA9IFsnYXBwbGljYXRpb24vanNvbiddIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgR2VvSnNvbk1pbWVUeXBlcyA9IFtcbiAgJ2FwcGxpY2F0aW9uL2dlbytqc29uJyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbicsXG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgRXhjZWxNaW1lVHlwZXMgPSBbXG4gICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLCAvLyAueGxzXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsIC8vIC54c2x4XG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgR21sTWltZVR5cGVzID0gWydhcHBsaWNhdGlvbi9nbWwreG1sJ10gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkTWltZVR5cGUgPVxuICB8ICh0eXBlb2YgQ3N2TWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBKc29uTWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBHZW9Kc29uTWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBFeGNlbE1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgR21sTWltZVR5cGVzKVtudW1iZXJdXG5cbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRUeXBlcyA9IFtcbiAgJ2NzdicsXG4gICdqc29uJyxcbiAgJ2dlb2pzb24nLFxuICAnZXhjZWwnLFxuICAnZ21sJyxcbl0gYXMgY29uc3RcbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFR5cGUgPSAodHlwZW9mIFN1cHBvcnRlZFR5cGVzKVtudW1iZXJdXG5cbmV4cG9ydCBjb25zdCBBbGxNaW1lVHlwZXMgPSB7XG4gIGNzdjogQ3N2TWltZVR5cGVzLFxuICBqc29uOiBKc29uTWltZVR5cGVzLFxuICBnZW9qc29uOiBHZW9Kc29uTWltZVR5cGVzLFxuICBleGNlbDogRXhjZWxNaW1lVHlwZXMsXG4gIGdtbDogR21sTWltZVR5cGVzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRIZWFkZXJzIHtcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgc3VwcG9ydGVkVHlwZT86IFN1cHBvcnRlZFR5cGVcbiAgZmlsZVNpemVCeXRlcz86IG51bWJlclxuICBsYXN0VXBkYXRlPzogRGF0ZVxuICBsYXN0VXBkYXRlSW52YWxpZD86IHRydWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUluZm8ge1xuICBuYW1lOiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICB0eXBlOiAnbnVtYmVyJyB8ICdkYXRlJyB8ICd1cmwnIHwgJ3N0cmluZydcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0SW5mbyB7XG4gIGl0ZW1zQ291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBGaWVsZE5hbWUgPSBzdHJpbmdcblxudHlwZSBTdW1PcGVyYXRpb24gPSBbJ3N1bScsIEZpZWxkTmFtZV1cbnR5cGUgQXZlcmFnZU9wZXJhdGlvbiA9IFsnYXZlcmFnZScsIEZpZWxkTmFtZV1cbnR5cGUgTWluT3BlcmF0aW9uID0gWydtaW4nLCBGaWVsZE5hbWVdXG50eXBlIE1heE9wZXJhdGlvbiA9IFsnbWF4JywgRmllbGROYW1lXVxudHlwZSBDb3VudE9wZXJhdGlvbiA9IFsnY291bnQnXVxuZXhwb3J0IHR5cGUgRmllbGRBZ2dyZWdhdGlvbiA9XG4gIHwgU3VtT3BlcmF0aW9uXG4gIHwgQXZlcmFnZU9wZXJhdGlvblxuICB8IE1pbk9wZXJhdGlvblxuICB8IE1heE9wZXJhdGlvblxuICB8IENvdW50T3BlcmF0aW9uXG5cbnR5cGUgQWxsT3BlcmF0aW9uID0gWydhbGwnXVxudHlwZSBEaXN0aW5jdE9wZXJhdGlvbiA9IFsnZGlzdGluY3QnLCBGaWVsZE5hbWVdXG50eXBlIFJhbmdlQnVja2V0c09wZXJhdGlvbiA9IFsncmFuZ2VCdWNrZXRzJywgRmllbGROYW1lLCBudW1iZXJdIC8vIDNyZCB2YWx1ZSBpcyB0aGUgYnVja2V0IGNvdW50OyBOT1QgSU1QTEVNRU5URURcbmV4cG9ydCB0eXBlIEZpZWxkR3JvdXBCeSA9XG4gIHwgQWxsT3BlcmF0aW9uXG4gIHwgRGlzdGluY3RPcGVyYXRpb25cbiAgfCBSYW5nZUJ1Y2tldHNPcGVyYXRpb25cblxuZXhwb3J0IHR5cGUgRmllbGRTb3J0ID0gWydkZXNjJyB8ICdhc2MnLCBGaWVsZE5hbWVdXG5cbnR5cGUgQ29tcGFyaXNvbk9wZXJhdG9yID0gJzwnIHwgJz4nIHwgJzw9JyB8ICc+PScgfCAnPScgfCAnIT0nXG50eXBlIENvbXBhcmlzb24gPSBbQ29tcGFyaXNvbk9wZXJhdG9yLCBGaWVsZE5hbWUsIHN0cmluZyB8IG51bWJlcl1cbnR5cGUgQW5kT3BlcmF0aW9uID0gWydhbmQnLCAuLi5GaWVsZEZpbHRlcltdXVxudHlwZSBPck9wZXJhdGlvbiA9IFsnb3InLCAuLi5GaWVsZEZpbHRlcltdXVxudHlwZSBOb3RPcGVyYXRpb24gPSBbJ25vdCcsIEZpZWxkRmlsdGVyXVxudHlwZSBJbk9wZXJhdGlvbiA9IFsnaW4nLCBGaWVsZE5hbWUsIC4uLihzdHJpbmdbXSB8IG51bWJlcltdKV1cbnR5cGUgTGlrZU9wZXJhdGlvbiA9IFsnbGlrZScsIEZpZWxkTmFtZSwgc3RyaW5nXVxuZXhwb3J0IHR5cGUgRmllbGRGaWx0ZXIgPVxuICB8IENvbXBhcmlzb25cbiAgfCBBbmRPcGVyYXRpb25cbiAgfCBPck9wZXJhdGlvblxuICB8IE5vdE9wZXJhdGlvblxuICB8IEluT3BlcmF0aW9uXG4gIHwgTGlrZU9wZXJhdGlvblxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9saWIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDUyxJQUFrRSxFQUNsRSxJQUFZLEVBQ1osYUFBYSxDQUFDO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBOEQ7UUFDbEUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQUk7UUFMdkIsVUFBSyxHQUFHLElBQUksQ0FBQTtRQU9WLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0RBQWdELElBQUksV0FBVyxJQUFJLEVBQUUsQ0FBQTtJQUN0RixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDRjtBQUVELDZHQUE2RztBQUU3RyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDckMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGtCQUFrQixDQUFVLENBQUE7QUFDMUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsc0JBQXNCO0lBQ3RCLDBCQUEwQjtDQUNsQixDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLDBCQUEwQixFQUFFLE9BQU87SUFDbkMsbUVBQW1FLEVBQUUsUUFBUTtDQUNyRSxDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLENBQVUsQ0FBQTtBQVM1RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLEtBQUs7SUFDTCxLQUFLO0NBQ0csQ0FBQTtBQUdWLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQUUsWUFBWTtJQUNqQixJQUFJLEVBQUUsYUFBYTtJQUNuQixPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tICdnZW9qc29uJ1xuXG5leHBvcnQgdHlwZSBEYXRhSXRlbSA9IEZlYXR1cmVcblxuZXhwb3J0IGNsYXNzIEZldGNoRXJyb3Ige1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgc3RhY2sgPSBudWxsXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHR5cGU6ICdodHRwJyB8ICduZXR3b3JrJyB8ICdwYXJzZScgfCAndW5zdXBwb3J0ZWRUeXBlJyB8ICd1bmtub3duJyxcbiAgICBwdWJsaWMgaW5mbzogc3RyaW5nLFxuICAgIHB1YmxpYyBodHRwU3RhdHVzID0gMFxuICApIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQW4gZXJyb3IgaGFwcGVuZWQgaW4gdGhlIGRhdGEgZmV0Y2hlciwgdHlwZTogJHt0eXBlfSwgaW5mbzogJHtpbmZvfWBcbiAgfVxuICBzdGF0aWMgaHR0cChjb2RlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IEZldGNoRXJyb3IoJ2h0dHAnLCAnJywgY29kZSlcbiAgfVxuICBzdGF0aWMgY29yc09yTmV0d29yayhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEZldGNoRXJyb3IoJ25ldHdvcmsnLCBtZXNzYWdlLCAwKVxuICB9XG4gIHN0YXRpYyBwYXJzaW5nRmFpbGVkKGluZm86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigncGFyc2UnLCBpbmZvLCAwKVxuICB9XG4gIHN0YXRpYyB1bnN1cHBvcnRlZFR5cGUobWltZVR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigndW5zdXBwb3J0ZWRUeXBlJywgbWltZVR5cGUsIDApXG4gIH1cbiAgc3RhdGljIHVua25vd25UeXBlKCkge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigndW5rbm93bicsICcnLCAwKVxuICB9XG59XG5cbi8vIFVzZWZ1bCByZWZlcmVuY2U6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvTUlNRV90eXBlcy9Db21tb25fdHlwZXNcblxuZXhwb3J0IGNvbnN0IENzdk1pbWVUeXBlcyA9IFtcbiAgJ3RleHQvY3N2JywgLy8gYXMgcGVyIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0MTgwXG4gICdhcHBsaWNhdGlvbi9jc3YnLCAvLyBzZWVtcyB0byBiZSBhbHNvIGNvbW1vblxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEpzb25NaW1lVHlwZXMgPSBbJ2FwcGxpY2F0aW9uL2pzb24nXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEdlb0pzb25NaW1lVHlwZXMgPSBbXG4gICdhcHBsaWNhdGlvbi9nZW8ranNvbicsXG4gICdhcHBsaWNhdGlvbi92bmQuZ2VvK2pzb24nLFxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEV4Y2VsTWltZVR5cGVzID0gW1xuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywgLy8gLnhsc1xuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLCAvLyAueHNseFxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEdtbE1pbWVUeXBlcyA9IFsnYXBwbGljYXRpb24vZ21sK3htbCddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZE1pbWVUeXBlID1cbiAgfCAodHlwZW9mIENzdk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgSnNvbk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgR2VvSnNvbk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgRXhjZWxNaW1lVHlwZXMpW251bWJlcl1cbiAgfCAodHlwZW9mIEdtbE1pbWVUeXBlcylbbnVtYmVyXVxuXG5leHBvcnQgY29uc3QgU3VwcG9ydGVkVHlwZXMgPSBbXG4gICdjc3YnLFxuICAnanNvbicsXG4gICdnZW9qc29uJyxcbiAgJ2V4Y2VsJyxcbiAgJ2dtbCcsXG4gICd3ZnMnLFxuXSBhcyBjb25zdFxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkVHlwZSA9ICh0eXBlb2YgU3VwcG9ydGVkVHlwZXMpW251bWJlcl1cblxuZXhwb3J0IGNvbnN0IEFsbE1pbWVUeXBlcyA9IHtcbiAgY3N2OiBDc3ZNaW1lVHlwZXMsXG4gIGpzb246IEpzb25NaW1lVHlwZXMsXG4gIGdlb2pzb246IEdlb0pzb25NaW1lVHlwZXMsXG4gIGV4Y2VsOiBFeGNlbE1pbWVUeXBlcyxcbiAgZ21sOiBHbWxNaW1lVHlwZXMsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEhlYWRlcnMge1xuICBtaW1lVHlwZT86IHN0cmluZ1xuICBzdXBwb3J0ZWRUeXBlPzogU3VwcG9ydGVkVHlwZVxuICBmaWxlU2l6ZUJ5dGVzPzogbnVtYmVyXG4gIGxhc3RVcGRhdGU/OiBEYXRlXG4gIGxhc3RVcGRhdGVJbnZhbGlkPzogdHJ1ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG4gIG5hbWU6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIHR5cGU6ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3VybCcgfCAnc3RyaW5nJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRJbmZvIHtcbiAgaXRlbXNDb3VudDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkTmFtZSA9IHN0cmluZ1xuXG50eXBlIFN1bU9wZXJhdGlvbiA9IFsnc3VtJywgRmllbGROYW1lXVxudHlwZSBBdmVyYWdlT3BlcmF0aW9uID0gWydhdmVyYWdlJywgRmllbGROYW1lXVxudHlwZSBNaW5PcGVyYXRpb24gPSBbJ21pbicsIEZpZWxkTmFtZV1cbnR5cGUgTWF4T3BlcmF0aW9uID0gWydtYXgnLCBGaWVsZE5hbWVdXG50eXBlIENvdW50T3BlcmF0aW9uID0gWydjb3VudCddXG5leHBvcnQgdHlwZSBGaWVsZEFnZ3JlZ2F0aW9uID1cbiAgfCBTdW1PcGVyYXRpb25cbiAgfCBBdmVyYWdlT3BlcmF0aW9uXG4gIHwgTWluT3BlcmF0aW9uXG4gIHwgTWF4T3BlcmF0aW9uXG4gIHwgQ291bnRPcGVyYXRpb25cblxudHlwZSBBbGxPcGVyYXRpb24gPSBbJ2FsbCddXG50eXBlIERpc3RpbmN0T3BlcmF0aW9uID0gWydkaXN0aW5jdCcsIEZpZWxkTmFtZV1cbnR5cGUgUmFuZ2VCdWNrZXRzT3BlcmF0aW9uID0gWydyYW5nZUJ1Y2tldHMnLCBGaWVsZE5hbWUsIG51bWJlcl0gLy8gM3JkIHZhbHVlIGlzIHRoZSBidWNrZXQgY291bnQ7IE5PVCBJTVBMRU1FTlRFRFxuZXhwb3J0IHR5cGUgRmllbGRHcm91cEJ5ID1cbiAgfCBBbGxPcGVyYXRpb25cbiAgfCBEaXN0aW5jdE9wZXJhdGlvblxuICB8IFJhbmdlQnVja2V0c09wZXJhdGlvblxuXG5leHBvcnQgdHlwZSBGaWVsZFNvcnQgPSBbJ2Rlc2MnIHwgJ2FzYycsIEZpZWxkTmFtZV1cblxudHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSAnPCcgfCAnPicgfCAnPD0nIHwgJz49JyB8ICc9JyB8ICchPSdcbnR5cGUgQ29tcGFyaXNvbiA9IFtDb21wYXJpc29uT3BlcmF0b3IsIEZpZWxkTmFtZSwgc3RyaW5nIHwgbnVtYmVyXVxudHlwZSBBbmRPcGVyYXRpb24gPSBbJ2FuZCcsIC4uLkZpZWxkRmlsdGVyW11dXG50eXBlIE9yT3BlcmF0aW9uID0gWydvcicsIC4uLkZpZWxkRmlsdGVyW11dXG50eXBlIE5vdE9wZXJhdGlvbiA9IFsnbm90JywgRmllbGRGaWx0ZXJdXG50eXBlIEluT3BlcmF0aW9uID0gWydpbicsIEZpZWxkTmFtZSwgLi4uKHN0cmluZ1tdIHwgbnVtYmVyW10pXVxudHlwZSBMaWtlT3BlcmF0aW9uID0gWydsaWtlJywgRmllbGROYW1lLCBzdHJpbmddXG5leHBvcnQgdHlwZSBGaWVsZEZpbHRlciA9XG4gIHwgQ29tcGFyaXNvblxuICB8IEFuZE9wZXJhdGlvblxuICB8IE9yT3BlcmF0aW9uXG4gIHwgTm90T3BlcmF0aW9uXG4gIHwgSW5PcGVyYXRpb25cbiAgfCBMaWtlT3BlcmF0aW9uXG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { WfsEndpoint } from '@camptocamp/ogc-client';
2
+ import { fetchDataAsText } from '../utils';
3
+ import { BaseReader } from './base';
4
+ import { GmlReader, parseGml } from './gml';
5
+ import { GeojsonReader, parseGeojson } from './geojson';
6
+ export class WfsReader extends BaseReader {
7
+ constructor(url, wfsEndpoint, featureTypeName) {
8
+ super(url);
9
+ this.endpoint = wfsEndpoint;
10
+ this.featureTypeName = featureTypeName;
11
+ this.version = this.endpoint.getVersion();
12
+ }
13
+ get properties() {
14
+ return this.getData().then((result) => result.properties);
15
+ }
16
+ get info() {
17
+ return this.endpoint.getFeatureTypeFull(this.featureTypeName).then((result) => ({
18
+ itemsCount: result.objectCount,
19
+ }));
20
+ }
21
+ static async createReader(wfsUrlEndpoint, featureTypeName) {
22
+ const wfsEndpoint = await new WfsEndpoint(wfsUrlEndpoint).isReady();
23
+ const featureTypes = wfsEndpoint.getFeatureTypes();
24
+ const featureType = wfsEndpoint.getFeatureTypeSummary(featureTypes.length === 1 && !featureTypeName
25
+ ? featureTypes[0].name
26
+ : featureTypeName);
27
+ if (!featureType) {
28
+ throw new Error('wfs.featuretype.notfound');
29
+ }
30
+ if (wfsEndpoint.supportsStartIndex()) {
31
+ return new WfsReader(wfsUrlEndpoint, wfsEndpoint, featureType.name);
32
+ }
33
+ else if (wfsEndpoint.supportsJson(featureType.name)) {
34
+ return new GeojsonReader(wfsEndpoint.getFeatureUrl(featureType.name, {
35
+ asJson: true,
36
+ outputCrs: 'EPSG:4326',
37
+ }));
38
+ }
39
+ else {
40
+ if (featureType.outputFormats.find((f) => f.toLowerCase().includes('gml')) &&
41
+ (featureType.defaultCrs === 'EPSG:4326' ||
42
+ featureType.otherCrs?.includes('EPSG:4326'))) {
43
+ return new GmlReader(wfsEndpoint.getFeatureUrl(featureType.name, {
44
+ outputFormat: featureType.outputFormats.find((f) => f.toLowerCase().includes('gml')),
45
+ outputCrs: 'EPSG:4326',
46
+ }), featureType.name, wfsEndpoint.getVersion());
47
+ }
48
+ throw new Error('wfs.geojsongml.notsupported');
49
+ }
50
+ }
51
+ getData() {
52
+ const asJson = this.endpoint.supportsJson(this.featureTypeName);
53
+ let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
54
+ ...(this.startIndex !== null && { startIndex: this.startIndex }),
55
+ ...(this.count !== null && { maxFeatures: this.count }),
56
+ asJson,
57
+ outputCrs: 'EPSG:4326',
58
+ // sortBy: this.sort // TODO: no sort in ogc-client?
59
+ });
60
+ if (Array.isArray(this.sort) && this.sort.length > 0) {
61
+ const finalUrl = new URL(url);
62
+ const sorts = this.sort
63
+ .map((fieldSort) => `${fieldSort[1]}+${fieldSort[0] === 'asc' ? 'A' : 'D'}`)
64
+ .join(',');
65
+ // Direct update on string url to prevent encoding of +A and +D
66
+ url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`;
67
+ }
68
+ return fetchDataAsText(url).then((text) => asJson
69
+ ? parseGeojson(text)
70
+ : parseGml(text, this.featureTypeName, this.version));
71
+ }
72
+ load() {
73
+ // Nothing to load for Wfs
74
+ }
75
+ async read() {
76
+ return (await this.getData()).items;
77
+ }
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL3JlYWRlcnMvd2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSx3QkFBd0IsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFdkQsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBS3ZDLFlBQVksR0FBVyxFQUFFLFdBQXdCLEVBQUUsZUFBdUI7UUFDeEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUE7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUE7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ2hFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDO1lBQ0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQy9C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LElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUk7aUJBQ3BCLEdBQUcsQ0FDRixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FDdkU7aUJBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ1osK0RBQStEO1lBQy9ELEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxLQUFLLEVBQUUsQ0FBQTtRQUM1RCxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDeEMsTUFBTTtZQUNKLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUN2RCxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRiwwQkFBMEI7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ3JDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdmc0VuZHBvaW50LCBXZnNWZXJzaW9uIH0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcbmltcG9ydCB7IERhdGFJdGVtLCBEYXRhc2V0SW5mbywgUHJvcGVydHlJbmZvIH0gZnJvbSAnLi4vbW9kZWwnXG5pbXBvcnQgeyBmZXRjaERhdGFBc1RleHQgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IEJhc2VSZWFkZXIgfSBmcm9tICcuL2Jhc2UnXG5pbXBvcnQgeyBHbWxSZWFkZXIsIHBhcnNlR21sIH0gZnJvbSAnLi9nbWwnXG5pbXBvcnQgeyBHZW9qc29uUmVhZGVyLCBwYXJzZUdlb2pzb24gfSBmcm9tICcuL2dlb2pzb24nXG5cbmV4cG9ydCBjbGFzcyBXZnNSZWFkZXIgZXh0ZW5kcyBCYXNlUmVhZGVyIHtcbiAgZW5kcG9pbnQ6IFdmc0VuZHBvaW50XG4gIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nXG4gIHZlcnNpb246IFdmc1ZlcnNpb25cblxuICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZywgd2ZzRW5kcG9pbnQ6IFdmc0VuZHBvaW50LCBmZWF0dXJlVHlwZU5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKHVybClcbiAgICB0aGlzLmVuZHBvaW50ID0gd2ZzRW5kcG9pbnRcbiAgICB0aGlzLmZlYXR1cmVUeXBlTmFtZSA9IGZlYXR1cmVUeXBlTmFtZVxuICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuZW5kcG9pbnQuZ2V0VmVyc2lvbigpXG4gIH1cblxuICBnZXQgcHJvcGVydGllcygpOiBQcm9taXNlPFByb3BlcnR5SW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgpLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LnByb3BlcnRpZXMpXG4gIH1cblxuICBnZXQgaW5mbygpOiBQcm9taXNlPERhdGFzZXRJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVGdWxsKHRoaXMuZmVhdHVyZVR5cGVOYW1lKS50aGVuKFxuICAgICAgKHJlc3VsdCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBpdGVtc0NvdW50OiByZXN1bHQub2JqZWN0Q291bnQsXG4gICAgICAgIH0pIGFzIERhdGFzZXRJbmZvXG4gICAgKVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVJlYWRlcih3ZnNVcmxFbmRwb2ludDogc3RyaW5nLCBmZWF0dXJlVHlwZU5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCB3ZnNFbmRwb2ludCA9IGF3YWl0IG5ldyBXZnNFbmRwb2ludCh3ZnNVcmxFbmRwb2ludCkuaXNSZWFkeSgpXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gd2ZzRW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVzKClcbiAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHdmc0VuZHBvaW50LmdldEZlYXR1cmVUeXBlU3VtbWFyeShcbiAgICAgIGZlYXR1cmVUeXBlcy5sZW5ndGggPT09IDEgJiYgIWZlYXR1cmVUeXBlTmFtZVxuICAgICAgICA/IGZlYXR1cmVUeXBlc1swXS5uYW1lXG4gICAgICAgIDogZmVhdHVyZVR5cGVOYW1lXG4gICAgKVxuICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICB9XG5cbiAgICBpZiAod2ZzRW5kcG9pbnQuc3VwcG9ydHNTdGFydEluZGV4KCkpIHtcbiAgICAgIHJldHVybiBuZXcgV2ZzUmVhZGVyKHdmc1VybEVuZHBvaW50LCB3ZnNFbmRwb2ludCwgZmVhdHVyZVR5cGUubmFtZSlcbiAgICB9IGVsc2UgaWYgKHdmc0VuZHBvaW50LnN1cHBvcnRzSnNvbihmZWF0dXJlVHlwZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBHZW9qc29uUmVhZGVyKFxuICAgICAgICB3ZnNFbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICApICYmXG4gICAgICAgIChmZWF0dXJlVHlwZS5kZWZhdWx0Q3JzID09PSAnRVBTRzo0MzI2JyB8fFxuICAgICAgICAgIGZlYXR1cmVUeXBlLm90aGVyQ3JzPy5pbmNsdWRlcygnRVBTRzo0MzI2JykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHbWxSZWFkZXIoXG4gICAgICAgICAgd2ZzRW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICBvdXRwdXRGb3JtYXQ6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMuZmluZCgoZikgPT5cbiAgICAgICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmVhdHVyZVR5cGUubmFtZSxcbiAgICAgICAgICB3ZnNFbmRwb2ludC5nZXRWZXJzaW9uKClcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZ2VvanNvbmdtbC5ub3RzdXBwb3J0ZWQnKVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRhKCkge1xuICAgIGNvbnN0IGFzSnNvbiA9IHRoaXMuZW5kcG9pbnQuc3VwcG9ydHNKc29uKHRoaXMuZmVhdHVyZVR5cGVOYW1lKVxuICAgIGxldCB1cmwgPSB0aGlzLmVuZHBvaW50LmdldEZlYXR1cmVVcmwodGhpcy5mZWF0dXJlVHlwZU5hbWUsIHtcbiAgICAgIC4uLih0aGlzLnN0YXJ0SW5kZXggIT09IG51bGwgJiYgeyBzdGFydEluZGV4OiB0aGlzLnN0YXJ0SW5kZXggfSksXG4gICAgICAuLi4odGhpcy5jb3VudCAhPT0gbnVsbCAmJiB7IG1heEZlYXR1cmVzOiB0aGlzLmNvdW50IH0pLFxuICAgICAgYXNKc29uLFxuICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgIC8vIHNvcnRCeTogdGhpcy5zb3J0IC8vIFRPRE86IG5vIHNvcnQgaW4gb2djLWNsaWVudD9cbiAgICB9KVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zb3J0KSAmJiB0aGlzLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmluYWxVcmwgPSBuZXcgVVJMKHVybClcbiAgICAgIGNvbnN0IHNvcnRzID0gdGhpcy5zb3J0XG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKGZpZWxkU29ydCkgPT4gYCR7ZmllbGRTb3J0WzFdfSske2ZpZWxkU29ydFswXSA9PT0gJ2FzYycgPyAnQScgOiAnRCd9YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKCcsJylcbiAgICAgIC8vIERpcmVjdCB1cGRhdGUgb24gc3RyaW5nIHVybCB0byBwcmV2ZW50IGVuY29kaW5nIG9mICtBIGFuZCArRFxuICAgICAgdXJsID0gYCR7dXJsfSR7ZmluYWxVcmwuc2VhcmNoID8gJyYnIDogJyd9U09SVEJZPSR7c29ydHN9YFxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaERhdGFBc1RleHQodXJsKS50aGVuKCh0ZXh0KSA9PlxuICAgICAgYXNKc29uXG4gICAgICAgID8gcGFyc2VHZW9qc29uKHRleHQpXG4gICAgICAgIDogcGFyc2VHbWwodGV4dCwgdGhpcy5mZWF0dXJlVHlwZU5hbWUsIHRoaXMudmVyc2lvbilcbiAgICApXG4gIH1cblxuICBsb2FkKCkge1xuICAgIC8vIE5vdGhpbmcgdG8gbG9hZCBmb3IgV2ZzXG4gIH1cblxuICBhc3luYyByZWFkKCk6IFByb21pc2U8RGF0YUl0ZW1bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXREYXRhKCkpLml0ZW1zXG4gIH1cbn1cbiJdfQ==
@@ -25,7 +25,8 @@
25
25
  "dashboard.createRecord": "Neuer Eintrag",
26
26
  "dashboard.importRecord": "",
27
27
  "dashboard.importRecord.importExternal": "",
28
- "dashboard.importRecord.importExternalLabel": "",
28
+ "dashboard.importRecord.importExternal.subtitle": "",
29
+ "dashboard.importRecord.importExternal.title": "",
29
30
  "dashboard.labels.catalog": "Katalog",
30
31
  "dashboard.labels.mySpace": "Mein Bereich",
31
32
  "dashboard.records.all": "Metadatenkatalog",
@@ -194,8 +195,7 @@
194
195
  "downloads.format.unknown": "unbekannt",
195
196
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
196
197
  "dropFile": "Datei ablegen",
197
- "editor.form.keywords.placeholder": "",
198
- "editor.form.placeKeywordWithoutExtent": "",
198
+ "editor.new.record.title": "",
199
199
  "editor.record.delete.confirmation.cancelText": "Stornieren",
200
200
  "editor.record.delete.confirmation.confirmText": "Löschen",
201
201
  "editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
@@ -228,7 +228,9 @@
228
228
  "editor.record.form.field.abstract": "Kurzbeschreibung",
229
229
  "editor.record.form.field.constraintsShortcuts": "",
230
230
  "editor.record.form.field.contacts.noContact": "",
231
+ "editor.record.form.field.contacts.placeholder": "",
231
232
  "editor.record.form.field.contactsForResource.noContact": "",
233
+ "editor.record.form.field.contactsForResource.placeholder": "",
232
234
  "editor.record.form.field.keywords": "Schlagwörter",
233
235
  "editor.record.form.field.legalConstraints": "Rechtliche Einschränkung",
234
236
  "editor.record.form.field.license": "Lizenz",
@@ -237,12 +239,12 @@
237
239
  "editor.record.form.field.onlineResource.confirm": "",
238
240
  "editor.record.form.field.onlineResource.dialogTitle": "",
239
241
  "editor.record.form.field.onlineResource.edit.description": "",
240
- "editor.record.form.field.onlineResource.edit.protocol": "",
241
242
  "editor.record.form.field.onlineResource.edit.identifier.error": "Schichten konnten nicht vom Protokoll abgerufen werden",
242
243
  "editor.record.form.field.onlineResource.edit.identifier.placeholder": "Ebenenname",
243
244
  "editor.record.form.field.onlineResource.edit.identifier.placeholder.wps": "Prozessname",
244
245
  "editor.record.form.field.onlineResource.edit.identifier.select.label": "Wählen Sie eine Ebene",
245
246
  "editor.record.form.field.onlineResource.edit.identifier.submit": "Link zum Dienst",
247
+ "editor.record.form.field.onlineResource.edit.protocol": "",
246
248
  "editor.record.form.field.onlineResource.edit.title": "",
247
249
  "editor.record.form.field.onlineResource.fileSize": "",
248
250
  "editor.record.form.field.onlineResource.modify": "",
@@ -262,6 +264,9 @@
262
264
  "editor.record.form.field.title.placeholder": "Geben Sie einen Titel ein",
263
265
  "editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
264
266
  "editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
267
+ "editor.record.form.keywords.place.placeholder": "",
268
+ "editor.record.form.keywords.place.withoutExtent": "",
269
+ "editor.record.form.keywords.placeholder": "",
265
270
  "editor.record.form.license.cc-by": "",
266
271
  "editor.record.form.license.cc-by-sa": "",
267
272
  "editor.record.form.license.cc-zero": "",
@@ -273,7 +278,7 @@
273
278
  "editor.record.form.license.unknown": "",
274
279
  "editor.record.form.page.accessAndContact": "",
275
280
  "editor.record.form.page.description": "",
276
- "editor.record.form.page.ressources": "",
281
+ "editor.record.form.page.resources": "",
277
282
  "editor.record.form.section.about.description": "",
278
283
  "editor.record.form.section.about.label": "",
279
284
  "editor.record.form.section.annexes.description": "",
@@ -450,6 +455,8 @@
450
455
  "record.metadata.api.form.productTooltip": "",
451
456
  "record.metadata.api.form.reset": "Zurücksetzen",
452
457
  "record.metadata.api.form.resetTooltip": "",
458
+ "record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
459
+ "record.metadata.api.form.title.gpf": "",
453
460
  "record.metadata.api.form.type": "Ausgabeformat",
454
461
  "record.metadata.api.form.zoneTitle": "",
455
462
  "record.metadata.api.form.zoneTooltip": "",
@@ -518,6 +525,7 @@
518
525
  "record.tab.chart": "Diagramm",
519
526
  "record.tab.data": "Tabelle",
520
527
  "record.tab.map": "Karte",
528
+ "record.was.created.time": "erstellte diesen Datensatz {time}",
521
529
  "records": "Datensätze",
522
530
  "results.layout.selectOne": "Layout auswählen",
523
531
  "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",