geonetwork-ui 2.6.0-dev.87d6e6c1b → 2.6.0-dev.913451557

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 (91) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  4. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  5. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  8. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  9. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  10. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  11. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +7 -6
  12. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -5
  13. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
  14. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  15. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +7 -3
  16. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +8 -4
  17. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +3 -3
  18. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  19. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  20. package/esm2022/translations/de.json +1 -0
  21. package/esm2022/translations/en.json +2 -1
  22. package/esm2022/translations/es.json +1 -0
  23. package/esm2022/translations/fr.json +6 -5
  24. package/esm2022/translations/it.json +1 -0
  25. package/esm2022/translations/nl.json +1 -0
  26. package/esm2022/translations/pt.json +1 -0
  27. package/esm2022/translations/sk.json +1 -0
  28. package/fesm2022/geonetwork-ui.mjs +162 -40
  29. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  30. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  31. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  32. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  33. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  34. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  35. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  36. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  37. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -2
  38. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  39. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  40. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  42. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  43. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  44. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  45. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  46. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  47. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
  48. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  49. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  50. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  51. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts +2 -1
  52. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  53. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  54. package/libs/util/shared/src/index.d.ts +1 -0
  55. package/libs/util/shared/src/index.d.ts.map +1 -1
  56. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  57. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  58. package/package.json +1 -1
  59. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  60. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4196 -0
  61. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  62. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +2 -1
  63. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  64. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -1
  65. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -2
  66. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -0
  67. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  68. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  69. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  70. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  71. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +9 -8
  72. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -0
  73. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -1
  74. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  75. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  76. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +0 -1
  77. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -1
  78. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +3 -1
  79. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +0 -2
  80. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -3
  81. package/src/libs/util/i18n/src/lib/language-codes.ts +2 -2
  82. package/src/libs/util/shared/src/index.ts +1 -0
  83. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  84. package/translations/de.json +1 -0
  85. package/translations/en.json +2 -1
  86. package/translations/es.json +1 -0
  87. package/translations/fr.json +6 -5
  88. package/translations/it.json +1 -0
  89. package/translations/nl.json +1 -0
  90. package/translations/pt.json +1 -0
  91. package/translations/sk.json +1 -0
@@ -152,14 +152,18 @@ export class ResultsTableComponent {
152
152
  return record.otherLanguages.length > 0;
153
153
  }
154
154
  getTxtHoverMultilingual(record) {
155
+ const languages = [
156
+ ...[record.defaultLanguage],
157
+ ...record.otherLanguages,
158
+ ].sort((a, b) => a.localeCompare(b));
155
159
  return this.translateService.instant('dashboard.records.isMultilingual', {
156
- languages: [...[record.defaultLanguage], ...record.otherLanguages].join(', '),
160
+ languages: languages.join(', '),
157
161
  });
158
162
  }
159
163
  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 }, { token: i2.DateService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
160
164
  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", canEdit: "canEdit", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [
161
165
  provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
162
- ], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <!-- IS MULTILINGUAL -->\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <!-- MORE ACTIONS MENU BUTTON -->\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "canEditItem", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "isDuplicating", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }, { 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"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }] }); }
166
+ ], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "canEditItem", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "isDuplicating", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }, { 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"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }] }); }
163
167
  }
164
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
165
169
  type: Component,
@@ -177,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
177
181
  ButtonComponent,
178
182
  ], providers: [
179
183
  provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
180
- ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <!-- IS MULTILINGUAL -->\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <!-- MORE ACTIONS MENU BUTTON -->\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"] }]
184
+ ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"] }]
181
185
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i2.DateService }, { type: i3.TranslateService }], propDecorators: { records: [{
182
186
  type: Input
183
187
  }], selectedRecordsIdentifiers: [{
@@ -212,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
212
216
  type: ViewChildren,
213
217
  args: ['actionMenuButton', { read: ElementRef }]
214
218
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHNDQUFzQyxDQUFBO0FBQzdDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUNMLFdBQVcsRUFFWCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSx3Q0FBd0MsQ0FBQTtBQUMvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUUs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Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgRmllbGRTb3J0LFxuICBTb3J0QnlGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHtcbiAgQmFkZ2VDb21wb25lbnQsXG4gIEJ1dHRvbkNvbXBvbmVudCxcbiAgQ2hlY2tib3hDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7XG4gIERhdGVTZXJ2aWNlLFxuICBGaWxlRm9ybWF0LFxuICBmb3JtYXRVc2VySW5mbyxcbiAgZ2V0QmFkZ2VDb2xvcixcbiAgZ2V0RmlsZUZvcm1hdCxcbiAgZ2V0Rm9ybWF0UHJpb3JpdHksXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlRGlyZWN0aXZlLFxuICBUcmFuc2xhdGVQaXBlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxufSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4vYWN0aW9uLW1lbnUvYWN0aW9uLW1lbnUuY29tcG9uZW50J1xuaW1wb3J0IHsgTmdJY29uQ29tcG9uZW50LCBwcm92aWRlSWNvbnMgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJMb2NrLCBpY29ub2lyVHJhbnNsYXRlLCBpY29ub2lyVXNlciB9IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgbWF0TW9yZVZlcnQgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGFrZSB9IGZyb20gJ3J4anMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlc3VsdHMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG4gICAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVEaXJlY3RpdmUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBBY3Rpb25NZW51Q29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgaWNvbm9pclVzZXIsIGljb25vaXJMb2NrLCBpY29ub2lyVHJhbnNsYXRlLCBtYXRNb3JlVmVydCB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzdWx0c1RhYmxlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcmVjb3JkczogQ2F0YWxvZ1JlY29yZFtdID0gW11cbiAgQElucHV0KCkgc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgc29ydE9yZGVyOiBTb3J0QnlGaWVsZCA9IG51bGxcbiAgQElucHV0KCkgaGFzRHJhZnQ6IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IGJvb2xlYW4gPSAoKSA9PiBmYWxzZVxuICBASW5wdXQoKSBjYW5EdXBsaWNhdGU6IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4gIEBJbnB1dCgpIGNhbkRlbGV0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPiA9ICgpID0+XG4gICAgb2YodHJ1ZSlcbiAgQElucHV0KCkgY2FuRWRpdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPiA9ICgpID0+XG4gICAgb2YodHJ1ZSlcbiAgQElucHV0KCkgaXNEcmFmdFBhZ2UgPSBmYWxzZVxuICBASW5wdXQoKSBpc0R1cGxpY2F0aW5nID0gZmFsc2VcblxuICAvLyBlbWl0cyB0aGUgY29sdW1uIChmaWVsZCkgYXMgd2VsbCBhcyB0aGUgb3JkZXJcbiAgQE91dHB1dCgpIHNvcnRCeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8W3N0cmluZywgJ2FzYycgfCAnZGVzYyddPigpXG4gIEBPdXRwdXQoKSByZWNvcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgZHVwbGljYXRlUmVjb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkZWxldGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIHJvbGxiYWNrRHJhZnQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIHJlY29yZHNTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgW0NhdGFsb2dSZWNvcmRbXSwgYm9vbGVhbl1cbiAgPigpXG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uTWVudUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBhY3Rpb25NZW51QnV0dG9ucyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPlxuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmXG5cbiAgaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBvcGVuQWN0aW9uTWVudShpdGVtLCB0ZW1wbGF0ZSkge1xuICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IHRydWVcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVjb3Jkcy5pbmRleE9mKGl0ZW0pXG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IHRoaXMuYWN0aW9uTWVudUJ1dHRvbnMudG9BcnJheSgpW2luZGV4XVxuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGJ1dHRvbkVsZW1lbnQpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0cnVlKVxuICAgICAgLndpdGhQdXNoKHRydWUpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgIH0pXG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZilcblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKVxuICAgIH0pXG4gIH1cblxuICBjbG9zZUFjdGlvbk1lbnUoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5pc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKClcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgZGF0ZVRvU3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdERhdGUoZGF0ZSwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnb25saW5lUmVzb3VyY2VzJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgob25saW5lUmVzb3VyY2UpID0+XG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdChvbmxpbmVSZXNvdXJjZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRVc2VySW5mbyh1c2VySW5mbylcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5jYW5FZGl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjYW5FZGl0KSA9PiB7XG4gICAgICAgIGlmIChjYW5FZGl0KSB7XG4gICAgICAgICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIGhhbmRsZUR1cGxpY2F0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBoYW5kbGVEZWxldGUoaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgfVxuXG4gIGhhbmRsZVJvbGxiYWNrKGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLnJvbGxiYWNrRHJhZnQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKVxuICB9XG5cbiAgc2V0U29ydEJ5KGNvbDogc3RyaW5nLCBvcmRlcjogJ2FzYycgfCAnZGVzYycpIHtcbiAgICB0aGlzLnNvcnRCeUNoYW5nZS5lbWl0KFtjb2wsIG9yZGVyXSlcbiAgfVxuXG4gIGlzU29ydGVkQnkoY29sOiBzdHJpbmcpOiAnZGVzYycgfCAnYXNjJyB8IG51bGwge1xuICAgIGlmICghdGhpcy5zb3J0T3JkZXIpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHNvcnRBcnJheSA9IEFycmF5LmlzQXJyYXkodGhpcy5zb3J0T3JkZXJbMF0pXG4gICAgICA/ICh0aGlzLnNvcnRPcmRlciBhcyBGaWVsZFNvcnRbXSlcbiAgICAgIDogKFt0aGlzLnNvcnRPcmRlcl0gYXMgRmllbGRTb3J0W10pXG4gICAgZm9yIChjb25zdCBzb3J0IG9mIHNvcnRBcnJheSkge1xuICAgICAgaWYgKHNvcnRbMV0gPT09IGNvbCkge1xuICAgICAgICByZXR1cm4gc29ydFswXVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaXNDaGVja2VkKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUmVjb3Jkc0lkZW50aWZpZXJzLmluY2x1ZGVzKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKVxuICB9XG5cbiAgaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2Uoc2VsZWN0ZWQ6IGJvb2xlYW4sIHJlY29yZDogQ2F0YWxvZ1JlY29yZCkge1xuICAgIHRoaXMucmVjb3Jkc1NlbGVjdGVkQ2hhbmdlLmVtaXQoW1tyZWNvcmRdLCBzZWxlY3RlZF0pXG4gIH1cblxuICBpc011bHRpbGluZ3VhbChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVjb3JkLm90aGVyTGFuZ3VhZ2VzLmxlbmd0aCA+IDBcbiAgfVxuXG4gIGdldFR4dEhvdmVyTXVsdGlsaW5ndWFsKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZGFzaGJvYXJkLnJlY29yZHMuaXNNdWx0aWxpbmd1YWwnLCB7XG4gICAgICBsYW5ndWFnZXM6IFsuLi5bcmVjb3JkLmRlZmF1bHRMYW5ndWFnZV0sIC4uLnJlY29yZC5vdGhlckxhbmd1YWdlc10uam9pbihcbiAgICAgICAgJywgJ1xuICAgICAgKSxcbiAgICB9KVxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICBbY2FuRWRpdEl0ZW1dPVwiY2FuRWRpdFwiXG4gIFtpc0RyYWZ0UGFnZV09XCJpc0RyYWZ0UGFnZVwiXG4gIChpdGVtQ2xpY2spPVwiaGFuZGxlUmVjb3JkQ2xpY2soJGV2ZW50KVwiXG4+XG4gIDwhLS0gU0VMRUNURUQgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uIFt3aWR0aF09XCInM3JlbSdcIj5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxuICAgICAgPG5nLWljb25cbiAgICAgICAgbmFtZT1cImljb25vaXJMb2NrXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXB1cnBsZVwiXG4gICAgICAgICpuZ0lmPVwiKGNhbkVkaXQoaXRlbSkgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIHNlbGVjdENoZWNrYm94XCJcbiAgICAgID48L25nLWljb24+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdENoZWNrYm94PlxuICAgICAgICA8Z24tdWktY2hlY2tib3hcbiAgICAgICAgICBbY2hlY2tlZF09XCJpc0NoZWNrZWQoaXRlbSlcIlxuICAgICAgICAgIChjaGFuZ2VkKT1cImhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgICAgdHlwZT1cImRlZmF1bHRcIlxuICAgICAgICA+PC9nbi11aS1jaGVja2JveD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBUSVRMRSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2dyb3ddPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZXNvdXJjZVRpdGxlT2JqZWN0LmRlZmF1bHQua2V5d29yZCcsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnRpdGxlPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIG1heC13LWZ1bGwgZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICA8c3BhbiBkYXRhLWN5PVwicmVzdWx0SXRlbVRpdGxlXCIgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpc1wiPnt7XG4gICAgICAgICAgaXRlbS50aXRsZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPGduLXVpLWJhZGdlXG4gICAgICAgICAgKm5nSWY9XCJoYXNEcmFmdChpdGVtKVwiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtcGFkZGluZ109XCInMC4yZW0gMC42ZW0nXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS10ZXh0LXNpemVdPVwiJzEycHgnXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS10ZXh0LWNvbG9yXT1cIicjM2QyMDA2J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtYmFja2dyb3VuZC1jb2xvcl09XCInI2ZmYmM3YidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXJvdW5kZWRdPVwiJzRweCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmRhc2hib2FyZC5yZWNvcmRzLmhhc0RyYWZ0PC9zcGFuPlxuICAgICAgICA8L2duLXVpLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBGT1JNQVRTIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzlyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmZvcm1hdHM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LXN0YXJ0IGl0ZW1zLWNlbnRlciBnYXAtMiBmb250LW1lZGl1bVwiXG4gICAgICAgICpuZ0lmPVwiZ2V0UmVjb3JkRm9ybWF0cyhpdGVtKSBhcyBmb3JtYXRzXCJcbiAgICAgICAgW3RpdGxlXT1cImZvcm1hdHMuam9pbignLCAnKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJiYWRnZS1idG4gbWluLXctWzQ1cHhdIHRleHQteHMgdGV4dC1ncmF5LTkwMCBweC0yIHNocmluay0wXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJnZXRCYWRnZUNvbG9yKGZvcm1hdHNbMF0pXCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1hdHNbMF1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0c1swXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJiYWRnZS1idG4gbWluLXctWzQ1cHhdIHRleHQteHMgdGV4dC1ncmF5LTkwMCBweC0yIHNocmluay0wXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJnZXRCYWRnZUNvbG9yKGZvcm1hdHNbMV0pXCJcbiAgICAgICAgICAqbmdJZj1cImZvcm1hdHNbMV1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0c1sxXSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB0ZXh0LXhzXCIgKm5nSWY9XCJmb3JtYXRzLnNsaWNlKDIpLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8c3Bhbj4re3sgZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWdldFJlY29yZEZvcm1hdHMoaXRlbSlcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIE9XTkVSIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtblxuICAgIFt3aWR0aF09XCInMTJyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVjb3JkT3duZXInKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZWNvcmRPd25lcicsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMudXNlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyVXNlclwiIHNpemU9XCIxNnB4XCI+PC9uZy1pY29uPlxuICAgICAgPHNwYW4gZGF0YS1jeT1cIm93bmVySW5mb1wiIGNsYXNzPVwidGV4dC14c1wiPnt7XG4gICAgICAgIGZvcm1hdFVzZXJJbmZvKGl0ZW0uZXh0cmFzPy5vd25lckluZm8pXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFNUQVRVUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic2cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5zdGF0dXM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAoaXRlbS5leHRyYXM/LlsnaXNQdWJsaXNoZWRUb0FsbCddXG4gICAgICAgICAgICA/ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLnB1Ymxpc2hlZCdcbiAgICAgICAgICAgIDogJ3JlY29yZC5tZXRhZGF0YS5zdGF0dXMubm90UHVibGlzaGVkJ1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFVQREFURSBEQVRFIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtblxuICAgIFt3aWR0aF09XCInOHJlbSdcIlxuICAgIFtzb3J0YWJsZV09XCJ0cnVlXCJcbiAgICBbYWN0aXZlU29ydF09XCJpc1NvcnRlZEJ5KCdjaGFuZ2VEYXRlJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgnY2hhbmdlRGF0ZScsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMuY2hhbmdlRGF0ZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHRleHQtbGVmdCB3LWZ1bGwgdGV4dC14c1wiPlxuICAgICAgICB7e1xuICAgICAgICAgIGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyBkYXRlVG9TdHJpbmcoaXRlbS5yZWNvcmRVcGRhdGVkKVxuICAgICAgICAgICAgOiAnLSdcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gQUNUSU9OIE1FTlUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPiA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPCEtLSBJUyBNVUxUSUxJTkdVQUwgLS0+XG4gICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpc011bHRpbGluZ3VhbChpdGVtKVwiXG4gICAgICAgICAgZGF0YS1jeT1cIm11bHRpbGluZ3VhbC1pbmRpY2F0b3JcIlxuICAgICAgICAgIG5hbWU9XCJpY29ub2lyVHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci50aXRsZV09XCJnZXRUeHRIb3Zlck11bHRpbGluZ3VhbChpdGVtKVwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICAgIDwhLS0gTU9SRSBBQ1RJT05TIE1FTlUgQlVUVE9OIC0tPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAgICNhY3Rpb25NZW51QnV0dG9uXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9wZW5BY3Rpb25NZW51KGl0ZW0sIHRlbXBsYXRlKVwiXG4gICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICBkYXRhLXRlc3Q9XCJyZWNvcmQtbWVudS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdE1vcmVWZXJ0XCI+PC9uZy1pY29uPlxuICAgICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICAgICAgPGduLXVpLWFjdGlvbi1tZW51XG4gICAgICAgICAgW2NhbkR1cGxpY2F0ZV09XCJjYW5EdXBsaWNhdGUoaXRlbSlcIlxuICAgICAgICAgIFtpc0R1cGxpY2F0aW5nXT1cImlzRHVwbGljYXRpbmdcIlxuICAgICAgICAgIFtjYW5EZWxldGVdPVwiY2FuRGVsZXRlKGl0ZW0pIHwgYXN5bmNcIlxuICAgICAgICAgIFtwYWdlXT1cImlzRHJhZnRQYWdlID8gJ2RyYWZ0JyA6ICdtYWluJ1wiXG4gICAgICAgICAgKGR1cGxpY2F0ZSk9XCJoYW5kbGVEdXBsaWNhdGUoaXRlbSlcIlxuICAgICAgICAgIChkZWxldGUpPVwiaGFuZGxlRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAoY2xvc2VBY3Rpb25NZW51KT1cImNsb3NlQWN0aW9uTWVudSgpXCJcbiAgICAgICAgICAocm9sbGJhY2spPVwiaGFuZGxlUm9sbGJhY2soaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgIDwvZ24tdWktYWN0aW9uLW1lbnU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZT5cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHNDQUFzQyxDQUFBO0FBQzdDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUNMLFdBQVcsRUFFWCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSx3Q0FBd0MsQ0FBQTtBQUMvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUUs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S0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBGaWVsZFNvcnQsXG4gIFNvcnRCeUZpZWxkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQge1xuICBCYWRnZUNvbXBvbmVudCxcbiAgQnV0dG9uQ29tcG9uZW50LFxuICBDaGVja2JveENvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHtcbiAgRGF0ZVNlcnZpY2UsXG4gIEZpbGVGb3JtYXQsXG4gIGZvcm1hdFVzZXJJbmZvLFxuICBnZXRCYWRnZUNvbG9yLFxuICBnZXRGaWxlRm9ybWF0LFxuICBnZXRGb3JtYXRQcmlvcml0eSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQge1xuICBUcmFuc2xhdGVEaXJlY3RpdmUsXG4gIFRyYW5zbGF0ZVBpcGUsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pckxvY2ssIGljb25vaXJUcmFuc2xhdGUsIGljb25vaXJVc2VyIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luLCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQgeyBtYXRNb3JlVmVydCB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9iYXNlbGluZSdcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0YWtlIH0gZnJvbSAncnhqcydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktcmVzdWx0cy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN1bHRzLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0cy10YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW50ZXJhY3RpdmVUYWJsZUNvbXBvbmVudCxcbiAgICBJbnRlcmFjdGl2ZVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZURpcmVjdGl2ZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoeyBpY29ub2lyVXNlciwgaWNvbm9pckxvY2ssIGljb25vaXJUcmFuc2xhdGUsIG1hdE1vcmVWZXJ0IH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10gPSBbXVxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZHNJZGVudGlmaWVyczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBzb3J0T3JkZXI6IFNvcnRCeUZpZWxkID0gbnVsbFxuICBASW5wdXQoKSBoYXNEcmFmdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlXG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbiAgQElucHV0KCkgY2FuRGVsZXRlOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gKCkgPT5cbiAgICBvZih0cnVlKVxuICBASW5wdXQoKSBjYW5FZGl0OiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gKCkgPT5cbiAgICBvZih0cnVlKVxuICBASW5wdXQoKSBpc0RyYWZ0UGFnZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmcgPSBmYWxzZVxuXG4gIC8vIGVtaXRzIHRoZSBjb2x1bW4gKGZpZWxkKSBhcyB3ZWxsIGFzIHRoZSBvcmRlclxuICBAT3V0cHV0KCkgc29ydEJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbc3RyaW5nLCAnYXNjJyB8ICdkZXNjJ10+KClcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGRlbGV0ZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgcm9sbGJhY2tEcmFmdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgcmVjb3Jkc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBbQ2F0YWxvZ1JlY29yZFtdLCBib29sZWFuXVxuICA+KClcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25NZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGFjdGlvbk1lbnVCdXR0b25zITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWZcblxuICBpc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGVTZXJ2aWNlOiBEYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG9wZW5BY3Rpb25NZW51KGl0ZW0sIHRlbXBsYXRlKSB7XG4gICAgdGhpcy5pc0FjdGlvbk1lbnVPcGVuID0gdHJ1ZVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZWNvcmRzLmluZGV4T2YoaXRlbSlcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy5hY3Rpb25NZW51QnV0dG9ucy50b0FycmF5KClbaW5kZXhdXG5cbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oYnV0dG9uRWxlbWVudClcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKHRydWUpXG4gICAgICAud2l0aFB1c2godHJ1ZSlcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgXSlcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgfSlcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpXG4gICAgfSlcbiAgfVxuXG4gIGNsb3NlQWN0aW9uTWVudSgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmlzQWN0aW9uTWVudU9wZW4gPSBmYWxzZVxuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgICB9XG4gIH1cblxuICBkYXRlVG9TdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVNlcnZpY2UuZm9ybWF0RGF0ZShkYXRlLCB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB0aW1lWm9uZTogJ1VUQycsXG4gICAgfSlcbiAgfVxuXG4gIGdldFJlY29yZEZvcm1hdHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogRmlsZUZvcm1hdFtdIHtcbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdzZXJ2aWNlJyB8fCAhKCdvbmxpbmVSZXNvdXJjZXMnIGluIHJlY29yZCkpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICBjb25zdCBmb3JtYXRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoXG4gICAgICAgIHJlY29yZC5vbmxpbmVSZXNvdXJjZXMubWFwKChvbmxpbmVSZXNvdXJjZSkgPT5cbiAgICAgICAgICBnZXRGaWxlRm9ybWF0KG9ubGluZVJlc291cmNlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKS5maWx0ZXIoKGZvcm1hdCkgPT4gISFmb3JtYXQpXG4gICAgZm9ybWF0cy5zb3J0KChhLCBiKSA9PiBnZXRGb3JtYXRQcmlvcml0eShiKSAtIGdldEZvcm1hdFByaW9yaXR5KGEpKVxuICAgIHJldHVybiBmb3JtYXRzXG4gIH1cblxuICBmb3JtYXRVc2VySW5mbyh1c2VySW5mbzogc3RyaW5nIHwgdW5rbm93bik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdFVzZXJJbmZvKHVzZXJJbmZvKVxuICB9XG5cbiAgZ2V0QmFkZ2VDb2xvcihmb3JtYXQ6IEZpbGVGb3JtYXQpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRCYWRnZUNvbG9yKGZvcm1hdClcbiAgfVxuXG4gIGhhbmRsZVJlY29yZENsaWNrKGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmNhbkVkaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNhbkVkaXQpID0+IHtcbiAgICAgICAgaWYgKGNhbkVkaXQpIHtcbiAgICAgICAgICB0aGlzLnJlY29yZENsaWNrLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlRHVwbGljYXRlKGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmR1cGxpY2F0ZVJlY29yZC5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kZWxldGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKVxuICB9XG5cbiAgaGFuZGxlUm9sbGJhY2soaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMucm9sbGJhY2tEcmFmdC5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpXG4gIH1cblxuICBzZXRTb3J0QnkoY29sOiBzdHJpbmcsIG9yZGVyOiAnYXNjJyB8ICdkZXNjJykge1xuICAgIHRoaXMuc29ydEJ5Q2hhbmdlLmVtaXQoW2NvbCwgb3JkZXJdKVxuICB9XG5cbiAgaXNTb3J0ZWRCeShjb2w6IHN0cmluZyk6ICdkZXNjJyB8ICdhc2MnIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnNvcnRPcmRlcikge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3Qgc29ydEFycmF5ID0gQXJyYXkuaXNBcnJheSh0aGlzLnNvcnRPcmRlclswXSlcbiAgICAgID8gKHRoaXMuc29ydE9yZGVyIGFzIEZpZWxkU29ydFtdKVxuICAgICAgOiAoW3RoaXMuc29ydE9yZGVyXSBhcyBGaWVsZFNvcnRbXSlcbiAgICBmb3IgKGNvbnN0IHNvcnQgb2Ygc29ydEFycmF5KSB7XG4gICAgICBpZiAoc29ydFsxXSA9PT0gY29sKSB7XG4gICAgICAgIHJldHVybiBzb3J0WzBdXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBpc0NoZWNrZWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSZWNvcmRzSWRlbnRpZmllcnMuaW5jbHVkZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRTZWxlY3RlZENoYW5nZShzZWxlY3RlZDogYm9vbGVhbiwgcmVjb3JkOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgdGhpcy5yZWNvcmRzU2VsZWN0ZWRDaGFuZ2UuZW1pdChbW3JlY29yZF0sIHNlbGVjdGVkXSlcbiAgfVxuXG4gIGlzTXVsdGlsaW5ndWFsKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWNvcmQub3RoZXJMYW5ndWFnZXMubGVuZ3RoID4gMFxuICB9XG5cbiAgZ2V0VHh0SG92ZXJNdWx0aWxpbmd1YWwocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2VzID0gW1xuICAgICAgLi4uW3JlY29yZC5kZWZhdWx0TGFuZ3VhZ2VdLFxuICAgICAgLi4ucmVjb3JkLm90aGVyTGFuZ3VhZ2VzLFxuICAgIF0uc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKVxuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkYXNoYm9hcmQucmVjb3Jkcy5pc011bHRpbGluZ3VhbCcsIHtcbiAgICAgIGxhbmd1YWdlczogbGFuZ3VhZ2VzLmpvaW4oJywgJyksXG4gICAgfSlcbiAgfVxufVxuIiwiPGduLXVpLWludGVyYWN0aXZlLXRhYmxlXG4gIFtpdGVtc109XCJyZWNvcmRzXCJcbiAgW2NhbkVkaXRJdGVtXT1cImNhbkVkaXRcIlxuICBbaXNEcmFmdFBhZ2VdPVwiaXNEcmFmdFBhZ2VcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzNyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxuZy1pY29uXG4gICAgICAgIG5hbWU9XCJpY29ub2lyTG9ja1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wdXJwbGVcIlxuICAgICAgICAqbmdJZj1cIihjYW5FZGl0KGl0ZW0pIHwgYXN5bmMpID09PSBmYWxzZTsgZWxzZSBzZWxlY3RDaGVja2JveFwiXG4gICAgICA+PC9uZy1pY29uPlxuICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3RDaGVja2JveD5cbiAgICAgICAgPGduLXVpLWNoZWNrYm94XG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgICAoY2hhbmdlZCk9XCJoYW5kbGVSZWNvcmRTZWxlY3RlZENoYW5nZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICBjbGFzcz1cIi1tLTJcIlxuICAgICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgICAgPjwvZ24tdWktY2hlY2tib3g+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFtncm93XT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgPHNwYW4gZGF0YS1jeT1cInJlc3VsdEl0ZW1UaXRsZVwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57e1xuICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiaGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuMmVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic5cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1tZWRpdW1cIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdGV4dC14c1wiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzEycmVtJ1wiXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3JlY29yZE93bmVyJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVjb3JkT3duZXInLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLnVzZXI8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pclVzZXJcIiBzaXplPVwiMTZweFwiPjwvbmctaWNvbj5cbiAgICAgIDxzcGFuIGRhdGEtY3k9XCJvd25lckluZm9cIiBjbGFzcz1cInRleHQteHNcIj57e1xuICAgICAgICBmb3JtYXRVc2VySW5mbyhpdGVtLmV4dHJhcz8ub3duZXJJbmZvKVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBTVEFUVVMgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uIFt3aWR0aF09XCInNnJlbSdcIj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuc3RhdHVzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgKGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyAncmVjb3JkLm1ldGFkYXRhLnN0YXR1cy5wdWJsaXNoZWQnXG4gICAgICAgICAgICA6ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLm5vdFB1Ymxpc2hlZCdcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBVUERBVEUgREFURSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzhyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgnY2hhbmdlRGF0ZScpXCJcbiAgICAoc29ydENoYW5nZSk9XCJzZXRTb3J0QnkoJ2NoYW5nZURhdGUnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLmNoYW5nZURhdGU8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCB0ZXh0LWxlZnQgdy1mdWxsIHRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICBpdGVtLmV4dHJhcz8uWydpc1B1Ymxpc2hlZFRvQWxsJ11cbiAgICAgICAgICAgID8gZGF0ZVRvU3RyaW5nKGl0ZW0ucmVjb3JkVXBkYXRlZClcbiAgICAgICAgICAgIDogJy0nXG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIEFDVElPTiBNRU5VIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj4gPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpc011bHRpbGluZ3VhbChpdGVtKVwiXG4gICAgICAgICAgZGF0YS1jeT1cIm11bHRpbGluZ3VhbC1pbmRpY2F0b3JcIlxuICAgICAgICAgIG5hbWU9XCJpY29ub2lyVHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXR0ci50aXRsZV09XCJnZXRUeHRIb3Zlck11bHRpbGluZ3VhbChpdGVtKVwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICAgI2FjdGlvbk1lbnVCdXR0b25cbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpXCJcbiAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctaWNvbiBuYW1lPVwibWF0TW9yZVZlcnRcIj48L25nLWljb24+XG4gICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgICAgICA8Z24tdWktYWN0aW9uLW1lbnVcbiAgICAgICAgICBbY2FuRHVwbGljYXRlXT1cImNhbkR1cGxpY2F0ZShpdGVtKVwiXG4gICAgICAgICAgW2lzRHVwbGljYXRpbmddPVwiaXNEdXBsaWNhdGluZ1wiXG4gICAgICAgICAgW2NhbkRlbGV0ZV09XCJjYW5EZWxldGUoaXRlbSkgfCBhc3luY1wiXG4gICAgICAgICAgW3BhZ2VdPVwiaXNEcmFmdFBhZ2UgPyAnZHJhZnQnIDogJ21haW4nXCJcbiAgICAgICAgICAoZHVwbGljYXRlKT1cImhhbmRsZUR1cGxpY2F0ZShpdGVtKVwiXG4gICAgICAgICAgKGRlbGV0ZSk9XCJoYW5kbGVEZWxldGUoaXRlbSlcIlxuICAgICAgICAgIChjbG9zZUFjdGlvbk1lbnUpPVwiY2xvc2VBY3Rpb25NZW51KClcIlxuICAgICAgICAgIChyb2xsYmFjayk9XCJoYW5kbGVSb2xsYmFjayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9nbi11aS1hY3Rpb24tbWVudT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG48L2duLXVpLWludGVyYWN0aXZlLXRhYmxlPlxuIl19
@@ -61,10 +61,10 @@ export const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((map
61
61
  return { ...mapperObject, [langEntry[1]]: langEntry[0] };
62
62
  }, {});
63
63
  export function getLang3FromLang2(lang2) {
64
- return LANG_2_TO_3_MAPPER[lang2] ?? null;
64
+ return LANG_2_TO_3_MAPPER[lang2] ?? lang2;
65
65
  }
66
66
  export function getLang2FromLang3(lang3) {
67
- return LANG_3_TO_2_MAPPER[lang3] ?? null;
67
+ return LANG_3_TO_2_MAPPER[lang3] ?? lang3;
68
68
  }
69
69
  export function getLocalizedIndexKey(lang2) {
70
70
  const lang3 = getLang3FromLang2(lang2);
@@ -97,4 +97,4 @@ marker('language.az');
97
97
  marker('language.ka');
98
98
  marker('language.uk');
99
99
  marker('language.cy');
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMvbGliL2xhbmd1YWdlLWNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRSxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNWLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsVUFBVTtJQUNkLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLEtBQUs7SUFDVCxFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLFFBQVE7SUFDWixFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxVQUFVO0lBQ2QsRUFBRSxFQUFFLFVBQVU7SUFDZCxFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLE9BQU87SUFDWCxFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxRQUFRO0lBQ1osRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUNaLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLGlCQUFpQjtJQUNyQixFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQ3pFLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQzFCLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQzFELENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQTtBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFBO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYTtJQUM3QyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5cbmNvbnN0IExBTkdfM19UT18yX01BUFBFUiA9IHtcbiAgZW5nOiAnZW4nLFxuICBkdXQ6ICdubCcsXG4gIGZyZTogJ2ZyJyxcbiAgZ2VyOiAnZGUnLFxuICBrb3I6ICdrbycsXG4gIHNwYTogJ2VzJyxcbiAgY3plOiAnY3MnLFxuICBjYXQ6ICdjYScsXG4gIGZpbjogJ2ZpJyxcbiAgaWNlOiAnaXMnLFxuICBpdGE6ICdpdCcsXG4gIHBvcjogJ3B0JyxcbiAgcnVzOiAncnUnLFxuICBjaGk6ICd6aCcsXG4gIHNsbzogJ3NrJyxcbiAgcm9oOiAncm0nLFxuICBhcmE6ICdhcicsXG4gIGRhbjogJ2RhJyxcbiAgbm9yOiAnbm8nLFxuICBwb2w6ICdwbCcsXG4gIHN3ZTogJ3N2JyxcbiAgdHVyOiAndHInLFxuICBhcm06ICdoeScsXG4gIGF6ZTogJ2F6JyxcbiAgZ2VvOiAna2EnLFxuICB1a3I6ICd1aycsXG4gIHdlbDogJ2N5Jyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX05BTUVTID0ge1xuICBlbjogJ0VuZ2xpc2gnLFxuICBubDogJ05lZGVybGFuZHMnLFxuICBmcjogJ0ZyYW7Dp2FpcycsXG4gIGRlOiAnRGV1dHNjaCcsXG4gIGtvOiAn7ZWc6rWt7Ja0JyxcbiAgZXM6ICdFc3Bhw7FvbCcsXG4gIGNzOiAnxIxlxaF0aW5hJyxcbiAgY2E6ICdDYXRhbMOgJyxcbiAgZmk6ICdTdW9taScsXG4gIGlzOiAnw41zbGVuc2thJyxcbiAgaXQ6ICdJdGFsaWFubycsXG4gIHB0OiAnUG9ydHVndcOqcycsXG4gIHJ1OiAn0KDRg9GB0YHQutC40LknLFxuICB6aDogJ+S4reaWhycsXG4gIHNrOiAnU2xvdmVuxI1pbmEnLFxuICBybTogJ1J1bWFudHNjaCcsXG4gIGFyOiAn2KfZhNi52LHYqNmK2KknLFxuICBkYTogJ0RhbnNrJyxcbiAgbm86ICdOb3JzaycsXG4gIHBsOiAnUG9sc2tpJyxcbiAgc3Y6ICdTd2VkaXNoJyxcbiAgdHI6ICdUw7xya8OnZScsXG4gIGh5OiAn1bDVodW11aXWgNWl1bYnLFxuICBhejogJ0F6yZlyYmF5Y2FuIGRpbGknLFxuICBrYTogJ+GDpeGDkOGDoOGDl+GDo+GDmuGDmCcsXG4gIHVrOiAn0YPQutGA0LDRl9C90YHRjNC60LAnLFxuICB3ZWw6ICdDeW1yYWVnJyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdfMl9UT18zX01BUFBFUiA9IE9iamVjdC5lbnRyaWVzKExBTkdfM19UT18yX01BUFBFUikucmVkdWNlKFxuICAobWFwcGVyT2JqZWN0LCBsYW5nRW50cnkpID0+IHtcbiAgICByZXR1cm4geyAuLi5tYXBwZXJPYmplY3QsIFtsYW5nRW50cnlbMV1dOiBsYW5nRW50cnlbMF0gfVxuICB9LFxuICB7fVxuKVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZzNGcm9tTGFuZzIobGFuZzI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBMQU5HXzJfVE9fM19NQVBQRVJbbGFuZzJdID8/IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmcyRnJvbUxhbmczKGxhbmczOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gTEFOR18zX1RPXzJfTUFQUEVSW2xhbmczXSA/PyBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGl6ZWRJbmRleEtleShsYW5nMjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGFuZzMgPSBnZXRMYW5nM0Zyb21MYW5nMihsYW5nMilcbiAgcmV0dXJuIGxhbmczID8gYGxhbmcke2xhbmczfWAgOiBudWxsXG59XG5cbm1hcmtlcignbGFuZ3VhZ2UuZW4nKVxubWFya2VyKCdsYW5ndWFnZS5ubCcpXG5tYXJrZXIoJ2xhbmd1YWdlLmZyJylcbm1hcmtlcignbGFuZ3VhZ2UuZGUnKVxubWFya2VyKCdsYW5ndWFnZS5rbycpXG5tYXJrZXIoJ2xhbmd1YWdlLmVzJylcbm1hcmtlcignbGFuZ3VhZ2UuY3MnKVxubWFya2VyKCdsYW5ndWFnZS5jYScpXG5tYXJrZXIoJ2xhbmd1YWdlLmZpJylcbm1hcmtlcignbGFuZ3VhZ2UuaXMnKVxubWFya2VyKCdsYW5ndWFnZS5pdCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnB0Jylcbm1hcmtlcignbGFuZ3VhZ2UucnUnKVxubWFya2VyKCdsYW5ndWFnZS56aCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnNrJylcbm1hcmtlcignbGFuZ3VhZ2Uucm0nKVxubWFya2VyKCdsYW5ndWFnZS5hcicpXG5tYXJrZXIoJ2xhbmd1YWdlLmRhJylcbm1hcmtlcignbGFuZ3VhZ2Uubm8nKVxubWFya2VyKCdsYW5ndWFnZS5wbCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnN2Jylcbm1hcmtlcignbGFuZ3VhZ2UudHInKVxubWFya2VyKCdsYW5ndWFnZS5oeScpXG5tYXJrZXIoJ2xhbmd1YWdlLmF6Jylcbm1hcmtlcignbGFuZ3VhZ2Uua2EnKVxubWFya2VyKCdsYW5ndWFnZS51aycpXG5tYXJrZXIoJ2xhbmd1YWdlLmN5JylcbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMvbGliL2xhbmd1YWdlLWNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRSxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNWLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsVUFBVTtJQUNkLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLEtBQUs7SUFDVCxFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLFFBQVE7SUFDWixFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxVQUFVO0lBQ2QsRUFBRSxFQUFFLFVBQVU7SUFDZCxFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLE9BQU87SUFDWCxFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxRQUFRO0lBQ1osRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUNaLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLGlCQUFpQjtJQUNyQixFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQ3pFLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQzFCLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQzFELENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQTtBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFBO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYTtJQUM3QyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQTtBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5cbmNvbnN0IExBTkdfM19UT18yX01BUFBFUiA9IHtcbiAgZW5nOiAnZW4nLFxuICBkdXQ6ICdubCcsXG4gIGZyZTogJ2ZyJyxcbiAgZ2VyOiAnZGUnLFxuICBrb3I6ICdrbycsXG4gIHNwYTogJ2VzJyxcbiAgY3plOiAnY3MnLFxuICBjYXQ6ICdjYScsXG4gIGZpbjogJ2ZpJyxcbiAgaWNlOiAnaXMnLFxuICBpdGE6ICdpdCcsXG4gIHBvcjogJ3B0JyxcbiAgcnVzOiAncnUnLFxuICBjaGk6ICd6aCcsXG4gIHNsbzogJ3NrJyxcbiAgcm9oOiAncm0nLFxuICBhcmE6ICdhcicsXG4gIGRhbjogJ2RhJyxcbiAgbm9yOiAnbm8nLFxuICBwb2w6ICdwbCcsXG4gIHN3ZTogJ3N2JyxcbiAgdHVyOiAndHInLFxuICBhcm06ICdoeScsXG4gIGF6ZTogJ2F6JyxcbiAgZ2VvOiAna2EnLFxuICB1a3I6ICd1aycsXG4gIHdlbDogJ2N5Jyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX05BTUVTID0ge1xuICBlbjogJ0VuZ2xpc2gnLFxuICBubDogJ05lZGVybGFuZHMnLFxuICBmcjogJ0ZyYW7Dp2FpcycsXG4gIGRlOiAnRGV1dHNjaCcsXG4gIGtvOiAn7ZWc6rWt7Ja0JyxcbiAgZXM6ICdFc3Bhw7FvbCcsXG4gIGNzOiAnxIxlxaF0aW5hJyxcbiAgY2E6ICdDYXRhbMOgJyxcbiAgZmk6ICdTdW9taScsXG4gIGlzOiAnw41zbGVuc2thJyxcbiAgaXQ6ICdJdGFsaWFubycsXG4gIHB0OiAnUG9ydHVndcOqcycsXG4gIHJ1OiAn0KDRg9GB0YHQutC40LknLFxuICB6aDogJ+S4reaWhycsXG4gIHNrOiAnU2xvdmVuxI1pbmEnLFxuICBybTogJ1J1bWFudHNjaCcsXG4gIGFyOiAn2KfZhNi52LHYqNmK2KknLFxuICBkYTogJ0RhbnNrJyxcbiAgbm86ICdOb3JzaycsXG4gIHBsOiAnUG9sc2tpJyxcbiAgc3Y6ICdTd2VkaXNoJyxcbiAgdHI6ICdUw7xya8OnZScsXG4gIGh5OiAn1bDVodW11aXWgNWl1bYnLFxuICBhejogJ0F6yZlyYmF5Y2FuIGRpbGknLFxuICBrYTogJ+GDpeGDkOGDoOGDl+GDo+GDmuGDmCcsXG4gIHVrOiAn0YPQutGA0LDRl9C90YHRjNC60LAnLFxuICB3ZWw6ICdDeW1yYWVnJyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdfMl9UT18zX01BUFBFUiA9IE9iamVjdC5lbnRyaWVzKExBTkdfM19UT18yX01BUFBFUikucmVkdWNlKFxuICAobWFwcGVyT2JqZWN0LCBsYW5nRW50cnkpID0+IHtcbiAgICByZXR1cm4geyAuLi5tYXBwZXJPYmplY3QsIFtsYW5nRW50cnlbMV1dOiBsYW5nRW50cnlbMF0gfVxuICB9LFxuICB7fVxuKVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZzNGcm9tTGFuZzIobGFuZzI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBMQU5HXzJfVE9fM19NQVBQRVJbbGFuZzJdID8/IGxhbmcyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYW5nMkZyb21MYW5nMyhsYW5nMzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExBTkdfM19UT18yX01BUFBFUltsYW5nM10gPz8gbGFuZzNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsaXplZEluZGV4S2V5KGxhbmcyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBsYW5nMyA9IGdldExhbmczRnJvbUxhbmcyKGxhbmcyKVxuICByZXR1cm4gbGFuZzMgPyBgbGFuZyR7bGFuZzN9YCA6IG51bGxcbn1cblxubWFya2VyKCdsYW5ndWFnZS5lbicpXG5tYXJrZXIoJ2xhbmd1YWdlLm5sJylcbm1hcmtlcignbGFuZ3VhZ2UuZnInKVxubWFya2VyKCdsYW5ndWFnZS5kZScpXG5tYXJrZXIoJ2xhbmd1YWdlLmtvJylcbm1hcmtlcignbGFuZ3VhZ2UuZXMnKVxubWFya2VyKCdsYW5ndWFnZS5jcycpXG5tYXJrZXIoJ2xhbmd1YWdlLmNhJylcbm1hcmtlcignbGFuZ3VhZ2UuZmknKVxubWFya2VyKCdsYW5ndWFnZS5pcycpXG5tYXJrZXIoJ2xhbmd1YWdlLml0Jylcbm1hcmtlcignbGFuZ3VhZ2UucHQnKVxubWFya2VyKCdsYW5ndWFnZS5ydScpXG5tYXJrZXIoJ2xhbmd1YWdlLnpoJylcbm1hcmtlcignbGFuZ3VhZ2Uuc2snKVxubWFya2VyKCdsYW5ndWFnZS5ybScpXG5tYXJrZXIoJ2xhbmd1YWdlLmFyJylcbm1hcmtlcignbGFuZ3VhZ2UuZGEnKVxubWFya2VyKCdsYW5ndWFnZS5ubycpXG5tYXJrZXIoJ2xhbmd1YWdlLnBsJylcbm1hcmtlcignbGFuZ3VhZ2Uuc3YnKVxubWFya2VyKCdsYW5ndWFnZS50cicpXG5tYXJrZXIoJ2xhbmd1YWdlLmh5Jylcbm1hcmtlcignbGFuZ3VhZ2UuYXonKVxubWFya2VyKCdsYW5ndWFnZS5rYScpXG5tYXJrZXIoJ2xhbmd1YWdlLnVrJylcbm1hcmtlcignbGFuZ3VhZ2UuY3knKVxuIl19
@@ -3,4 +3,5 @@ export * from './lib/utils';
3
3
  export * from './lib/links';
4
4
  export * from './lib/image-fallback.directive';
5
5
  export * from './lib/gn-ui-version';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9saW5rcydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltYWdlLWZhbGxiYWNrLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2duLXVpLXZlcnNpb24nXG4iXX0=
6
+ export * from './lib/record.util';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpbmtzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1hZ2UtZmFsbGJhY2suZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ24tdWktdmVyc2lvbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC51dGlsJ1xuIl19
@@ -0,0 +1,56 @@
1
+ export function updateLanguages(record, defaultLanguage, otherLanguages) {
2
+ function updateFieldTranslations(target, fieldName) {
3
+ const fieldTranslations = {};
4
+ for (const lang of otherLanguages) {
5
+ const prevValue = record.defaultLanguage === lang
6
+ ? target[fieldName]
7
+ : target.translations?.[fieldName]?.[lang];
8
+ fieldTranslations[lang] = prevValue ?? '';
9
+ }
10
+ const defaultPrevValue = record.defaultLanguage === defaultLanguage
11
+ ? target[fieldName]
12
+ : target.translations?.[fieldName]?.[defaultLanguage];
13
+ return {
14
+ ...target,
15
+ [fieldName]: defaultPrevValue ?? '',
16
+ translations: {
17
+ ...target.translations,
18
+ [fieldName]: fieldTranslations,
19
+ },
20
+ };
21
+ }
22
+ function updateTranslations(target, fieldNames) {
23
+ let result = target;
24
+ for (const field of fieldNames) {
25
+ result = updateFieldTranslations(result, field);
26
+ }
27
+ return result;
28
+ }
29
+ const updatedRecord = updateTranslations(record, [
30
+ 'title',
31
+ 'abstract',
32
+ 'lineage',
33
+ ]);
34
+ updatedRecord.keywords = updatedRecord.keywords.map((k) => updateTranslations(k, ['label', 'description']));
35
+ updatedRecord.onlineResources = updatedRecord.onlineResources.map((o) => updateTranslations(o, ['name', 'description']));
36
+ updatedRecord.licenses = updatedRecord.licenses.map((l) => updateTranslations(l, ['text']));
37
+ updatedRecord.legalConstraints = updatedRecord.legalConstraints.map((c) => updateTranslations(c, ['text']));
38
+ updatedRecord.securityConstraints = updatedRecord.securityConstraints.map((c) => updateTranslations(c, ['text']));
39
+ updatedRecord.otherConstraints = updatedRecord.otherConstraints.map((c) => updateTranslations(c, ['text']));
40
+ updatedRecord.contacts = updatedRecord.contacts.map((c) => ({
41
+ ...c,
42
+ organization: updateTranslations(c.organization, ['name']),
43
+ }));
44
+ updatedRecord.contactsForResource = updatedRecord.contactsForResource.map((c) => ({
45
+ ...c,
46
+ organization: updateTranslations(c.organization, ['name']),
47
+ }));
48
+ updatedRecord.ownerOrganization = updateTranslations(updatedRecord.ownerOrganization, ['name']);
49
+ if (updatedRecord.kind === 'dataset') {
50
+ updatedRecord.spatialExtents = updatedRecord.spatialExtents.map((e) => updateTranslations(e, ['description']));
51
+ }
52
+ updatedRecord.defaultLanguage = defaultLanguage;
53
+ updatedRecord.otherLanguages = otherLanguages;
54
+ return updatedRecord;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvcmVjb3JkLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQVMsRUFDVCxlQUE2QixFQUM3QixjQUE4QjtJQUU5QixTQUFTLHVCQUF1QixDQUM5QixNQUFTLEVBQ1QsU0FBaUI7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUE7UUFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FDYixNQUFNLENBQUMsZUFBZSxLQUFLLElBQUk7Z0JBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUNuQixDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQTtRQUMzQyxDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FDcEIsTUFBTSxDQUFDLGVBQWUsS0FBSyxlQUFlO1lBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN6RCxPQUFPO1lBQ0wsR0FBRyxNQUFNO1lBQ1QsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO1lBQ25DLFlBQVksRUFBRTtnQkFDWixHQUFHLE1BQU0sQ0FBQyxZQUFZO2dCQUN0QixDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQjthQUMvQjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsU0FBUyxrQkFBa0IsQ0FDekIsTUFB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Qy9DLGFBQWEsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO0lBQzdDLE9BQU8sYUFBYSxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlUmVjb3JkLFxuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24sXG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0U3BhdGlhbEV4dGVudCxcbiAgS2V5d29yZCxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBPbmxpbmVMaW5rUmVzb3VyY2UsXG4gIE9yZ2FuaXphdGlvbixcbiAgU2VydmljZUVuZHBvaW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbnR5cGUgVHJhbnNsYXRlZFJlY29yZE9iamVjdHMgPVxuICB8IEJhc2VSZWNvcmRcbiAgfCBDb25zdHJhaW50XG4gIHwgS2V5d29yZFxuICB8IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gIHwgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uXG4gIHwgT25saW5lTGlua1Jlc291cmNlXG4gIHwgU2VydmljZUVuZHBvaW50XG4gIHwgRGF0YXNldFNwYXRpYWxFeHRlbnRcbiAgfCBPcmdhbml6YXRpb25cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxhbmd1YWdlczxUIGV4dGVuZHMgQ2F0YWxvZ1JlY29yZD4oXG4gIHJlY29yZDogVCxcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGUsXG4gIG90aGVyTGFuZ3VhZ2VzOiBMYW5ndWFnZUNvZGVbXVxuKTogVCB7XG4gIGZ1bmN0aW9uIHVwZGF0ZUZpZWxkVHJhbnNsYXRpb25zPFQgZXh0ZW5kcyBUcmFuc2xhdGVkUmVjb3JkT2JqZWN0cz4oXG4gICAgdGFyZ2V0OiBULFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IFQge1xuICAgIGNvbnN0IGZpZWxkVHJhbnNsYXRpb25zID0ge31cbiAgICBmb3IgKGNvbnN0IGxhbmcgb2Ygb3RoZXJMYW5ndWFnZXMpIHtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9XG4gICAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UgPT09IGxhbmdcbiAgICAgICAgICA/IHRhcmdldFtmaWVsZE5hbWVdXG4gICAgICAgICAgOiB0YXJnZXQudHJhbnNsYXRpb25zPy5bZmllbGROYW1lXT8uW2xhbmddXG4gICAgICBmaWVsZFRyYW5zbGF0aW9uc1tsYW5nXSA9IHByZXZWYWx1ZSA/PyAnJ1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UHJldlZhbHVlID1cbiAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UgPT09IGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICA/IHRhcmdldFtmaWVsZE5hbWVdXG4gICAgICAgIDogdGFyZ2V0LnRyYW5zbGF0aW9ucz8uW2ZpZWxkTmFtZV0/LltkZWZhdWx0TGFuZ3VhZ2VdXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRhcmdldCxcbiAgICAgIFtmaWVsZE5hbWVdOiBkZWZhdWx0UHJldlZhbHVlID8/ICcnLFxuICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgIC4uLnRhcmdldC50cmFuc2xhdGlvbnMsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFRyYW5zbGF0aW9ucyxcbiAgICAgIH0sXG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVRyYW5zbGF0aW9uczxUIGV4dGVuZHMgVHJhbnNsYXRlZFJlY29yZE9iamVjdHM+KFxuICAgIHRhcmdldDogVCxcbiAgICBmaWVsZE5hbWVzOiBzdHJpbmdbXVxuICApOiBUIHtcbiAgICBsZXQgcmVzdWx0OiBUID0gdGFyZ2V0XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZE5hbWVzKSB7XG4gICAgICByZXN1bHQgPSB1cGRhdGVGaWVsZFRyYW5zbGF0aW9ucyhyZXN1bHQsIGZpZWxkKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUmVjb3JkID0gdXBkYXRlVHJhbnNsYXRpb25zKHJlY29yZCwgW1xuICAgICd0aXRsZScsXG4gICAgJ2Fic3RyYWN0JyxcbiAgICAnbGluZWFnZScsXG4gIF0pXG4gIHVwZGF0ZWRSZWNvcmQua2V5d29yZHMgPSB1cGRhdGVkUmVjb3JkLmtleXdvcmRzLm1hcCgoaykgPT5cbiAgICB1cGRhdGVUcmFuc2xhdGlvbnMoaywgWydsYWJlbCcsICdkZXNjcmlwdGlvbiddKVxuICApXG4gIHVwZGF0ZWRSZWNvcmQub25saW5lUmVzb3VyY2VzID0gdXBkYXRlZFJlY29yZC5vbmxpbmVSZXNvdXJjZXMubWFwKChvKSA9PlxuICAgIHVwZGF0ZVRyYW5zbGF0aW9ucyhvLCBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLmxpY2Vuc2VzID0gdXBkYXRlZFJlY29yZC5saWNlbnNlcy5tYXAoKGwpID0+XG4gICAgdXBkYXRlVHJhbnNsYXRpb25zKGwsIFsndGV4dCddKVxuICApXG4gIHVwZGF0ZWRSZWNvcmQubGVnYWxDb25zdHJhaW50cyA9IHVwZGF0ZWRSZWNvcmQubGVnYWxDb25zdHJhaW50cy5tYXAoKGMpID0+XG4gICAgdXBkYXRlVHJhbnNsYXRpb25zKGMsIFsndGV4dCddKVxuICApXG4gIHVwZGF0ZWRSZWNvcmQuc2VjdXJpdHlDb25zdHJhaW50cyA9IHVwZGF0ZWRSZWNvcmQuc2VjdXJpdHlDb25zdHJhaW50cy5tYXAoXG4gICAgKGMpID0+IHVwZGF0ZVRyYW5zbGF0aW9ucyhjLCBbJ3RleHQnXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLm90aGVyQ29uc3RyYWludHMgPSB1cGRhdGVkUmVjb3JkLm90aGVyQ29uc3RyYWludHMubWFwKChjKSA9PlxuICAgIHVwZGF0ZVRyYW5zbGF0aW9ucyhjLCBbJ3RleHQnXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLmNvbnRhY3RzID0gdXBkYXRlZFJlY29yZC5jb250YWN0cy5tYXAoKGMpID0+ICh7XG4gICAgLi4uYyxcbiAgICBvcmdhbml6YXRpb246IHVwZGF0ZVRyYW5zbGF0aW9ucyhjLm9yZ2FuaXphdGlvbiwgWyduYW1lJ10pLFxuICB9KSlcbiAgdXBkYXRlZFJlY29yZC5jb250YWN0c0ZvclJlc291cmNlID0gdXBkYXRlZFJlY29yZC5jb250YWN0c0ZvclJlc291cmNlLm1hcChcbiAgICAoYykgPT4gKHtcbiAgICAgIC4uLmMsXG4gICAgICBvcmdhbml6YXRpb246IHVwZGF0ZVRyYW5zbGF0aW9ucyhjLm9yZ2FuaXphdGlvbiwgWyduYW1lJ10pLFxuICAgIH0pXG4gIClcbiAgdXBkYXRlZFJlY29yZC5vd25lck9yZ2FuaXphdGlvbiA9IHVwZGF0ZVRyYW5zbGF0aW9ucyhcbiAgICB1cGRhdGVkUmVjb3JkLm93bmVyT3JnYW5pemF0aW9uLFxuICAgIFsnbmFtZSddXG4gIClcblxuICBpZiAodXBkYXRlZFJlY29yZC5raW5kID09PSAnZGF0YXNldCcpIHtcbiAgICB1cGRhdGVkUmVjb3JkLnNwYXRpYWxFeHRlbnRzID0gdXBkYXRlZFJlY29yZC5zcGF0aWFsRXh0ZW50cy5tYXAoKGUpID0+XG4gICAgICB1cGRhdGVUcmFuc2xhdGlvbnMoZSwgWydkZXNjcmlwdGlvbiddKVxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZWRSZWNvcmQuZGVmYXVsdExhbmd1YWdlID0gZGVmYXVsdExhbmd1YWdlXG4gIHVwZGF0ZWRSZWNvcmQub3RoZXJMYW5ndWFnZXMgPSBvdGhlckxhbmd1YWdlc1xuICByZXR1cm4gdXBkYXRlZFJlY29yZFxufVxuIl19
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "Stichwort",
281
281
  "facets.block.title.th_regions_tree.default": "Regionen",
282
282
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
283
+ "favorite.starToggle.label": "Zu Favoriten hinzufügen",
283
284
  "feature.catalog.attribute.code": "Code",
284
285
  "feature.catalog.attribute.definition": "Beschreibung",
285
286
  "feature.catalog.attribute.name": "Name",
@@ -232,7 +232,7 @@
232
232
  "editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
233
233
  "editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
234
234
  "editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
235
- "editor.record.multilingual.confirmation.message": "You are about to remove one or several languages, which will delete all of the related translations and is irreversible. Do you want to proceed?",
235
+ "editor.record.multilingual.confirmation.message": "You are about to remove one or several languages, which will delete all of the related translations. Do you want to proceed?",
236
236
  "editor.record.multilingual.confirmation.title": "Remove languages",
237
237
  "editor.record.onlineResource.protocol.other": "Other",
238
238
  "editor.record.onlineResourceError.body": "An error happened while adding the resource:",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "Tag",
281
281
  "facets.block.title.th_regions_tree.default": "Regions",
282
282
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
283
+ "favorite.starToggle.label": "Add to favorites",
283
284
  "feature.catalog.attribute.code": "Code",
284
285
  "feature.catalog.attribute.definition": "Description",
285
286
  "feature.catalog.attribute.name": "Name",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "",
281
281
  "facets.block.title.th_regions_tree.default": "",
282
282
  "favorite.not.authenticated.tooltip": "",
283
+ "favorite.starToggle.label": "Añadir a favoritos",
283
284
  "feature.catalog.attribute.code": "Código",
284
285
  "feature.catalog.attribute.definition": "Descripción",
285
286
  "feature.catalog.attribute.name": "Nombre",
@@ -194,7 +194,7 @@
194
194
  "editor.record.form.multilingual.activate": "Activez les langues",
195
195
  "editor.record.form.multilingual.default": "Par défaut",
196
196
  "editor.record.form.multilingual.enable": "Mode Multilingue",
197
- "editor.record.form.multilingual.forbidden": "Vous ne pouvez pas supprimer le language par défaut",
197
+ "editor.record.form.multilingual.forbidden": "Vous ne pouvez pas supprimer la langue par défaut",
198
198
  "editor.record.form.multilingual.open": "Ouvrir le menu multilingue",
199
199
  "editor.record.form.multilingual.title": "Traductions",
200
200
  "editor.record.form.multilingual.validate": "Valider",
@@ -230,10 +230,10 @@
230
230
  "editor.record.lock.harvested": "Les jeux de données moissonnés ne sont pas éditables",
231
231
  "editor.record.lock.owner": "Vous n'êtes pas éditeur d'un des groupes autorisés",
232
232
  "editor.record.lock.resourceType": "Les fiches d'un type autre que jeu de données ne sont pas éditables",
233
- "editor.record.multilingual.confirmation.cancelText": "Garder le(s) language(s)",
234
- "editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) language(s)",
235
- "editor.record.multilingual.confirmation.message": "Vous allez supprimer un ou plusieurs languages, ce qui supprimera toutes les traductions qui y sont liées et est irréversible. Voulez-vous procéder ?",
236
- "editor.record.multilingual.confirmation.title": "Suppression de language(s)",
233
+ "editor.record.multilingual.confirmation.cancelText": "Garder le(s) langue(s)",
234
+ "editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) langue(s)",
235
+ "editor.record.multilingual.confirmation.message": "Vous allez supprimer une ou plusieurs langues, ce qui supprimera toutes les traductions qui y sont liées. Voulez-vous procéder ?",
236
+ "editor.record.multilingual.confirmation.title": "Suppression de langue(s)",
237
237
  "editor.record.onlineResource.protocol.other": "Autre",
238
238
  "editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
239
239
  "editor.record.onlineResourceError.closeMessage": "Compris",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "Tag",
281
281
  "facets.block.title.th_regions_tree.default": "Régions",
282
282
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
283
+ "favorite.starToggle.label": "Ajouter aux favoris",
283
284
  "feature.catalog.attribute.code": "Code",
284
285
  "feature.catalog.attribute.definition": "Description",
285
286
  "feature.catalog.attribute.name": "Nom",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "Tag",
281
281
  "facets.block.title.th_regions_tree.default": "Regioni",
282
282
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
283
+ "favorite.starToggle.label": "",
283
284
  "feature.catalog.attribute.code": "Codice",
284
285
  "feature.catalog.attribute.definition": "Descrizione",
285
286
  "feature.catalog.attribute.name": "Nome",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "",
281
281
  "facets.block.title.th_regions_tree.default": "",
282
282
  "favorite.not.authenticated.tooltip": "",
283
+ "favorite.starToggle.label": "",
283
284
  "feature.catalog.attribute.code": "Code",
284
285
  "feature.catalog.attribute.definition": "Beschrijving",
285
286
  "feature.catalog.attribute.name": "Naam",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "",
281
281
  "facets.block.title.th_regions_tree.default": "",
282
282
  "favorite.not.authenticated.tooltip": "",
283
+ "favorite.starToggle.label": "",
283
284
  "feature.catalog.attribute.code": "Código",
284
285
  "feature.catalog.attribute.definition": "Descrição",
285
286
  "feature.catalog.attribute.name": "Nome",
@@ -280,6 +280,7 @@
280
280
  "facets.block.title.tag.default": "Štítok",
281
281
  "facets.block.title.th_regions_tree.default": "Regióny",
282
282
  "favorite.not.authenticated.tooltip": "<div><a href='{link}'>Prihlásiť sa</a> pre prístup k tejto funkcii</div>",
283
+ "favorite.starToggle.label": "",
283
284
  "feature.catalog.attribute.code": "Kód",
284
285
  "feature.catalog.attribute.definition": "Popis",
285
286
  "feature.catalog.attribute.name": "Názov",