geonetwork-ui 2.6.0-dev.b1563a5e0 → 2.6.0-dev.bb0bdaec6

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 (662) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +25 -11
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +6 -6
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  12. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  13. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  14. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -2
  15. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +18 -16
  16. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +53 -14
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  18. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  19. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +64 -43
  20. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  21. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  22. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  23. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  24. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  25. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  26. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  27. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  28. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  29. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +12 -3
  30. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  31. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  32. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  33. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  34. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  35. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  36. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  37. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  38. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  39. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +268 -11
  40. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  41. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -14
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +4 -4
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  52. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  53. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  54. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  55. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  56. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  57. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  59. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  60. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  61. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  62. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  63. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  64. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  65. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +24 -19
  66. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  67. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  68. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  69. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  70. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  71. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  72. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  73. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +77 -28
  74. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +1 -1
  75. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +1 -1
  76. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -1
  77. package/esm2022/libs/feature/search/src/lib/constants.mjs +3 -2
  78. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
  79. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  80. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  81. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  82. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +8 -5
  83. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -6
  84. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  85. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  86. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  87. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  88. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  89. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  90. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  91. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  92. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -4
  93. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  94. package/esm2022/libs/ui/elements/src/index.mjs +2 -4
  95. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  96. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  97. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  98. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  99. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  100. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  101. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  102. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +59 -0
  103. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +5 -6
  104. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  105. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +22 -70
  106. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +23 -21
  107. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  108. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  109. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -5
  110. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -7
  111. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +40 -17
  112. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  113. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  114. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +52 -32
  115. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +5 -4
  116. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  117. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  118. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  119. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +10 -13
  120. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  121. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  122. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  123. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  124. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  125. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  126. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +12 -7
  127. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +7 -3
  128. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  129. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  130. package/esm2022/libs/ui/layout/src/index.mjs +2 -2
  131. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  132. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +18 -8
  133. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  134. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  135. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +21 -12
  136. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  137. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  138. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  139. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +17 -53
  140. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  141. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  142. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  143. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +16 -5
  144. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  145. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +24 -17
  146. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +45 -21
  147. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +32 -27
  148. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  149. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  150. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -3
  151. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  152. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  153. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  154. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  155. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -28
  156. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  157. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  158. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +63 -3
  159. package/esm2022/libs/util/shared/src/index.mjs +2 -2
  160. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  161. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  162. package/esm2022/translations/de.json +47 -22
  163. package/esm2022/translations/en.json +47 -22
  164. package/esm2022/translations/es.json +46 -21
  165. package/esm2022/translations/fr.json +47 -22
  166. package/esm2022/translations/it.json +46 -21
  167. package/esm2022/translations/nl.json +46 -21
  168. package/esm2022/translations/pt.json +46 -21
  169. package/esm2022/translations/sk.json +607 -0
  170. package/fesm2022/geonetwork-ui.mjs +11186 -10525
  171. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  172. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  173. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  174. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  175. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  176. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  177. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  178. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  179. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  180. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  181. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  182. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  183. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  184. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  185. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  186. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +8 -6
  187. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  188. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +11 -3
  189. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  190. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  191. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  192. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  193. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  194. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +8 -4
  195. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  196. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  197. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  198. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +7 -1
  199. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  200. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +20 -17
  201. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  202. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  203. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  204. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +5 -1
  205. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  206. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  207. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  208. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  209. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  210. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  211. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  212. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -0
  213. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  214. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  215. package/libs/feature/editor/src/index.d.ts +0 -3
  216. package/libs/feature/editor/src/index.d.ts.map +1 -1
  217. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  218. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  219. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  220. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  221. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  222. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  223. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  224. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  225. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  226. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  227. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  228. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  229. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
  230. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  231. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  232. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  233. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  234. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  235. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  236. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  237. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  238. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  239. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  240. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  241. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  242. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  243. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  244. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  245. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  246. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  247. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  248. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  249. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  250. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  251. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  252. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  253. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  254. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  255. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  256. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  257. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +11 -7
  258. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  259. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  260. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  261. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  262. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  263. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  264. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  265. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  266. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +3 -3
  267. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  268. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +3 -3
  269. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  270. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -2
  271. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  272. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +1 -1
  273. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  274. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  275. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
  276. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  277. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  278. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  279. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  280. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  281. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +2 -1
  282. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -1
  283. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  284. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  285. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  286. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  287. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  288. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  289. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  290. package/libs/ui/dataviz/src/index.d.ts +0 -1
  291. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  292. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  293. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  294. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  295. package/libs/ui/elements/src/index.d.ts +1 -3
  296. package/libs/ui/elements/src/index.d.ts.map +1 -1
  297. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  298. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  299. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  300. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  301. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  302. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  303. package/libs/ui/elements/src/lib/{link-card/link-card.component.d.ts → external-link-card/external-link-card.component.d.ts} +4 -4
  304. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -0
  305. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -12
  306. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  307. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +2 -1
  308. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  309. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  310. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  311. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  312. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  313. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  314. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  315. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +20 -9
  316. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  317. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  318. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  319. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  320. package/libs/ui/inputs/src/index.d.ts +0 -1
  321. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  322. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +1 -2
  323. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  324. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  325. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  326. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  327. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  328. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  329. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  330. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  331. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  332. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  333. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  334. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts +2 -1
  335. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  336. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  337. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  338. package/libs/ui/layout/src/index.d.ts +1 -1
  339. package/libs/ui/layout/src/index.d.ts.map +1 -1
  340. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  341. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  342. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +2 -1
  343. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  344. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  345. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  346. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  347. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  348. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  349. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  350. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +6 -11
  351. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  352. package/libs/ui/search/src/index.d.ts +1 -0
  353. package/libs/ui/search/src/index.d.ts.map +1 -1
  354. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts +2 -0
  355. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts.map +1 -1
  356. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  357. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  358. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  359. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  360. package/libs/ui/search/src/lib/ui-search.module.d.ts +12 -11
  361. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  362. package/libs/ui/widgets/src/index.d.ts +0 -1
  363. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  364. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  365. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  366. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  367. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  368. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  369. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  370. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  371. package/libs/util/i18n/src/index.d.ts +1 -2
  372. package/libs/util/i18n/src/index.d.ts.map +1 -1
  373. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  374. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  375. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -15
  376. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  377. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  378. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  379. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  380. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  381. package/libs/util/i18n/src/lib/language-codes.d.ts +15 -19
  382. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  383. package/libs/util/shared/src/index.d.ts +1 -1
  384. package/libs/util/shared/src/index.d.ts.map +1 -1
  385. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  386. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  387. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  388. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  389. package/package.json +3 -3
  390. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  391. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  392. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  393. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4240 -0
  394. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +29 -6
  395. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  396. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  397. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +11 -5
  398. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  399. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  400. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +8 -5
  401. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +5 -4
  402. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  403. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  404. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -1
  405. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +14 -6
  406. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +71 -13
  407. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  408. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  409. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +77 -65
  410. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  411. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +9 -1
  412. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +20 -14
  413. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -1
  414. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +9 -1
  415. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +113 -0
  416. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  417. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  418. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -2
  419. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  420. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +13 -2
  421. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -2
  422. package/src/libs/feature/editor/src/index.ts +0 -3
  423. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  424. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  425. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  426. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  427. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  428. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  429. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  430. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
  431. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +322 -6
  432. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  433. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  434. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  435. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  436. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  437. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +6 -9
  438. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  439. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +2 -2
  440. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  441. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  442. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  443. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  444. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  445. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  446. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  447. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  448. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  449. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  450. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  451. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  452. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  453. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  454. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  455. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  456. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  457. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  458. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  459. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +29 -22
  460. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  461. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  462. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  463. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  464. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  465. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  466. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  467. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +27 -9
  468. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +113 -30
  469. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +2 -2
  470. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +2 -2
  471. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +2 -2
  472. package/src/libs/feature/search/src/lib/constants.ts +2 -1
  473. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +1 -0
  474. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +4 -3
  475. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  476. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  477. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  478. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +1 -0
  479. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +2 -1
  480. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  481. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  482. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  483. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  484. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  485. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  486. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  487. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  488. package/src/libs/ui/dataviz/src/index.ts +0 -1
  489. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +2 -2
  490. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  491. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  492. package/src/libs/ui/elements/src/index.ts +1 -3
  493. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  494. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  495. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  496. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  497. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  498. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  499. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  500. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  501. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  502. package/src/libs/ui/elements/src/lib/{link-card/link-card.component.ts → external-link-card/external-link-card.component.ts} +6 -6
  503. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +3 -3
  504. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  505. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +66 -130
  506. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.scss +115 -0
  507. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +28 -92
  508. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +6 -2
  509. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +17 -15
  510. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  511. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  512. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  513. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  514. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +20 -22
  515. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +51 -13
  516. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  517. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  518. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
  519. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +62 -31
  520. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +7 -2
  521. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  522. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  523. package/src/libs/ui/inputs/src/index.ts +0 -1
  524. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +2 -2
  525. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +6 -9
  526. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  527. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  528. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  529. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  530. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  531. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  532. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  533. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +9 -3
  534. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +0 -1
  535. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +5 -1
  536. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +3 -1
  537. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  538. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  539. package/src/libs/ui/layout/src/index.ts +1 -1
  540. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  541. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +1 -2
  542. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +15 -5
  543. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  544. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  545. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  546. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  547. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +15 -8
  548. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  549. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  550. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  551. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -42
  552. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +12 -58
  553. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  554. package/src/libs/ui/search/src/index.ts +1 -0
  555. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  556. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +1 -1
  557. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.ts +14 -1
  558. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  559. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +18 -15
  560. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  561. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +29 -27
  562. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +49 -18
  563. package/src/libs/ui/search/src/lib/ui-search.module.ts +15 -11
  564. package/src/libs/ui/widgets/src/index.ts +0 -1
  565. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  566. package/src/libs/util/app-config/src/lib/app-config.ts +3 -2
  567. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  568. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  569. package/src/libs/util/i18n/src/index.ts +1 -2
  570. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  571. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -29
  572. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  573. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  574. package/src/libs/util/i18n/src/lib/language-codes.ts +67 -2
  575. package/src/libs/util/shared/src/index.ts +1 -1
  576. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  577. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  578. package/tailwind.base.css +2 -2
  579. package/translations/de.json +47 -22
  580. package/translations/en.json +47 -22
  581. package/translations/es.json +46 -21
  582. package/translations/fr.json +47 -22
  583. package/translations/it.json +46 -21
  584. package/translations/nl.json +46 -21
  585. package/translations/pt.json +46 -21
  586. package/translations/sk.json +46 -21
  587. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  588. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  589. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  590. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  591. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  592. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  593. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  594. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  595. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +0 -60
  596. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -56
  597. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -130
  598. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  599. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  600. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  601. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  602. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  603. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  604. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  605. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +0 -1
  606. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  607. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  608. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  609. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  610. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  611. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  612. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  613. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  614. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  615. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  616. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  617. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  618. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  619. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  620. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +0 -1
  621. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -19
  622. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  623. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -31
  624. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  625. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  626. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  627. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  628. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  629. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  630. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  631. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  632. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  633. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  634. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  635. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  636. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  637. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  638. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  639. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  640. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  641. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  642. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  643. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  644. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  645. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  646. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  647. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  648. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  649. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  650. package/src/libs/ui/elements/src/lib/link-card/link-card.component.css +0 -0
  651. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.css +0 -0
  652. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -9
  653. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -61
  654. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -72
  655. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  656. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  657. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  658. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  659. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  660. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
  661. /package/src/libs/ui/elements/src/lib/{internal-link-card/internal-link-card.component.css → external-link-card/external-link-card.component.css} +0 -0
  662. /package/src/libs/ui/elements/src/lib/{link-card/link-card.component.html → external-link-card/external-link-card.component.html} +0 -0
@@ -3,7 +3,7 @@ import { GroupsApiService, SearchApiService, } from '../../../../../../../libs/d
3
3
  import { forkJoin, of } from 'rxjs';
4
4
  import { map, shareReplay } from 'rxjs/operators';
5
5
  import { TranslateService } from '@ngx-translate/core';
6
- import { LANG_2_TO_3_MAPPER } from '../../../../../../../libs/util/i18n/src';
6
+ import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src';
7
7
  import { ElasticsearchService } from '../elasticsearch';
8
8
  import { getAsUrl } from '../../../../../../../libs/api/metadata-converter/src';
9
9
  import * as i0 from "@angular/core";
@@ -12,6 +12,9 @@ import * as i2 from "../../../../../../../libs/data-access/gn4/src";
12
12
  import * as i3 from "@ngx-translate/core";
13
13
  const IMAGE_URL = '/geonetwork/images/harvesting/';
14
14
  export class OrganizationsFromGroupsService {
15
+ get lang3() {
16
+ return getLang3FromLang2(this.translateService.currentLang);
17
+ }
15
18
  constructor(esService, searchApiService, groupsApiService, translateService) {
16
19
  this.esService = esService;
17
20
  this.searchApiService = searchApiService;
@@ -46,9 +49,8 @@ export class OrganizationsFromGroupsService {
46
49
  });
47
50
  }
48
51
  mapOrgFromGroup(group) {
49
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang];
50
52
  return {
51
- name: group.label[lang3],
53
+ name: group.label[this.lang3],
52
54
  ...(group.description && { description: group.description }),
53
55
  ...(group.email && { email: group.email }),
54
56
  ...(group.logo && {
@@ -61,8 +63,7 @@ export class OrganizationsFromGroupsService {
61
63
  }
62
64
  getFiltersForOrgs(orgs) {
63
65
  return this.groups$.pipe(map((allGroups) => {
64
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang];
65
- const groups = orgs.map((org) => allGroups.find((group) => group.label[lang3] === org.name));
66
+ const groups = orgs.map((org) => allGroups.find((group) => group.label[this.lang3] === org.name));
66
67
  return {
67
68
  groupOwner: groups.reduce((prev, curr) => ({ ...prev, [curr.id.toString()]: true }), {}),
68
69
  };
@@ -73,10 +74,9 @@ export class OrganizationsFromGroupsService {
73
74
  return of([]);
74
75
  return forkJoin([this.groups$, this.organisations$]).pipe(map(([groups, orgs]) => {
75
76
  const groupIds = Object.keys(filters['groupOwner']);
76
- const lang3 = LANG_2_TO_3_MAPPER[this.translateService.currentLang];
77
77
  return groupIds.map((id) => {
78
78
  const group = groups.find((group) => group.id.toString() === id);
79
- return orgs.find((org) => org.name === group.label[lang3]);
79
+ return orgs.find((org) => org.name === group.label[this.lang3]);
80
80
  });
81
81
  }));
82
82
  }
@@ -101,4 +101,4 @@ export class OrganizationsFromGroupsService {
101
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationsFromGroupsService, decorators: [{
102
102
  type: Injectable
103
103
  }], ctorParameters: () => [{ type: i1.ElasticsearchService }, { type: i2.SearchApiService }, { type: i2.GroupsApiService }, { type: i3.TranslateService }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9ucy1mcm9tLWdyb3Vwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9vcmdhbml6YXRpb25zL29yZ2FuaXphdGlvbnMtZnJvbS1ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sK0NBQStDLENBQUE7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQU81RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLHNEQUFzRCxDQUFBOzs7OztBQUUvRixNQUFNLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQTtBQUdsRCxNQUFNLE9BQU8sOEJBQThCO0lBK0J6QyxZQUNVLFNBQStCLEVBQy9CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBSGxDLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBaENwQyxZQUFPLEdBQWdDLElBQUksQ0FBQyxnQkFBZ0I7YUFDakUsU0FBUyxFQUFFO2FBQ1gs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QTlCLDhCQUE4Qjs7NEZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgR3JvdXBBcGlNb2RlbCxcbiAgR3JvdXBzQXBpU2VydmljZSxcbiAgU2VhcmNoQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgTEFOR18yX1RPXzNfTUFQUEVSIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgRmllbGRGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgT3JnYW5pemF0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4uL2VsYXN0aWNzZWFyY2gnXG5pbXBvcnQgeyBnZXRBc1VybCwgTWV0YWRhdGFPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuXG5jb25zdCBJTUFHRV9VUkwgPSAnL2dlb25ldHdvcmsvaW1hZ2VzL2hhcnZlc3RpbmcvJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uc0Zyb21Hcm91cHNTZXJ2aWNlXG4gIGltcGxlbWVudHMgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbntcbiAgcHJpdmF0ZSBncm91cHMkOiBPYnNlcnZhYmxlPEdyb3VwQXBpTW9kZWxbXT4gPSB0aGlzLmdyb3Vwc0FwaVNlcnZpY2VcbiAgICAuZ2V0R3JvdXBzKClcbiAgICAucGlwZShzaGFyZVJlcGxheSgpKVxuICBwcml2YXRlIGdyb3Vwc0FnZ3JlZ2F0aW9uJCA9IHRoaXMuc2VhcmNoQXBpU2VydmljZVxuICAgIC5zZWFyY2goXG4gICAgICAnYnVja2V0JyxcbiAgICAgIG51bGwsXG4gICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdGhpcy5lc1NlcnZpY2UuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoe1xuICAgICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdncm91cE93bmVyJyxcbiAgICAgICAgICAgICAgc2l6ZTogNTAwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5hZ2dyZWdhdGlvbnMuZ3JvdXBzLmJ1Y2tldHMpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgb3JnYW5pc2F0aW9ucyQgPSBmb3JrSm9pbihbdGhpcy5ncm91cHNBZ2dyZWdhdGlvbiQsIHRoaXMuZ3JvdXBzJF0pLnBpcGUoXG4gICAgbWFwKChbZ3JvdXBzQWdnLCBncm91cHNdKSA9PiB0aGlzLm1hcEdyb3Vwcyhncm91cHNBZ2csIGdyb3VwcykpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuICBvcmdhbmlzYXRpb25zQ291bnQkID0gdGhpcy5vcmdhbmlzYXRpb25zJC5waXBlKG1hcCgob3JncykgPT4gb3Jncy5sZW5ndGgpKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXNTZXJ2aWNlOiBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaEFwaVNlcnZpY2U6IFNlYXJjaEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm91cHNBcGlTZXJ2aWNlOiBHcm91cHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBtYXBHcm91cHMoZ3JvdXBCdWNrZXRzOiBhbnlbXSwgZ3JvdXBzOiBHcm91cEFwaU1vZGVsW10pIHtcbiAgICByZXR1cm4gZ3JvdXBCdWNrZXRzXG4gICAgICAuZmlsdGVyKCh7IGtleSB9KSA9PiAhIWdyb3Vwcy5maW5kKChnKSA9PiBnLmlkLnRvU3RyaW5nKCkgPT09IGtleSkpXG4gICAgICAubWFwKCh7IGtleSwgZG9jX2NvdW50IH0pID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBncm91cHMuZmluZCgoZykgPT4gZy5pZC50b1N0cmluZygpID09PSBrZXkpXG4gICAgICAgIGNvbnN0IG9yZyA9IHRoaXMubWFwT3JnRnJvbUdyb3VwKGdyb3VwKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm9yZyxcbiAgICAgICAgICByZWNvcmRDb3VudDogZG9jX2NvdW50LFxuICAgICAgICB9IGFzIE9yZ2FuaXphdGlvblxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgbWFwT3JnRnJvbUdyb3VwKGdyb3VwOiBHcm91cEFwaU1vZGVsKSB7XG4gICAgY29uc3QgbGFuZzMgPSBMQU5HXzJfVE9fM19NQVBQRVJbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBncm91cC5sYWJlbFtsYW5nM10sXG4gICAgICAuLi4oZ3JvdXAuZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogZ3JvdXAuZGVzY3JpcHRpb24gfSksXG4gICAgICAuLi4oZ3JvdXAuZW1haWwgJiYgeyBlbWFpbDogZ3JvdXAuZW1haWwgfSksXG4gICAgICAuLi4oZ3JvdXAubG9nbyAmJiB7XG4gICAgICAgIGxvZ29Vcmw6IGdldEFzVXJsKGAke0lNQUdFX1VSTH0ke2dyb3VwLmxvZ299YCksXG4gICAgICB9KSxcbiAgICAgIC4uLihncm91cC53ZWJzaXRlICYmIHtcbiAgICAgICAgd2Vic2l0ZTogZ2V0QXNVcmwoZ3JvdXAud2Vic2l0ZSksXG4gICAgICB9KSxcbiAgICB9IGFzIE9yZ2FuaXphdGlvblxuICB9XG5cbiAgZ2V0RmlsdGVyc0Zvck9yZ3Mob3JnczogT3JnYW5pemF0aW9uW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwcyQucGlwZShcbiAgICAgIG1hcCgoYWxsR3JvdXBzKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhbmczID0gTEFOR18yX1RPXzNfTUFQUEVSW3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ11cbiAgICAgICAgY29uc3QgZ3JvdXBzID0gb3Jncy5tYXAoKG9yZykgPT5cbiAgICAgICAgICBhbGxHcm91cHMuZmluZCgoZ3JvdXApID0+IGdyb3VwLmxhYmVsW2xhbmczXSA9PT0gb3JnLm5hbWUpXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBncm91cE93bmVyOiBncm91cHMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyLmlkLnRvU3RyaW5nKCldOiB0cnVlIH0pLFxuICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj5cbiAgICAgICAgICApLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldE9yZ3NGcm9tRmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvbltdPiB7XG4gICAgaWYgKCEoJ2dyb3VwT3duZXInIGluIGZpbHRlcnMpKSByZXR1cm4gb2YoW10pXG4gICAgcmV0dXJuIGZvcmtKb2luKFt0aGlzLmdyb3VwcyQsIHRoaXMub3JnYW5pc2F0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZ3JvdXBzLCBvcmdzXSkgPT4ge1xuICAgICAgICBjb25zdCBncm91cElkcyA9IE9iamVjdC5rZXlzKGZpbHRlcnNbJ2dyb3VwT3duZXInXSlcbiAgICAgICAgY29uc3QgbGFuZzMgPSBMQU5HXzJfVE9fM19NQVBQRVJbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXVxuICAgICAgICByZXR1cm4gZ3JvdXBJZHMubWFwKChpZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pZC50b1N0cmluZygpID09PSBpZClcbiAgICAgICAgICByZXR1cm4gb3Jncy5maW5kKChvcmcpID0+IG9yZy5uYW1lID09PSBncm91cC5sYWJlbFtsYW5nM10pXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGFkZE9yZ2FuaXphdGlvblRvUmVjb3JkRnJvbVNvdXJjZShcbiAgICBzb3VyY2U6IE1ldGFkYXRhT2JqZWN0LFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZFxuICApOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBpZiAoISgnZ3JvdXBPd25lcicgaW4gc291cmNlKSkgcmV0dXJuIG9mKHJlY29yZClcblxuICAgIGNvbnN0IGdyb3VwSWQgPSBwYXJzZUludChzb3VyY2UuZ3JvdXBPd25lciBhcyBzdHJpbmcpXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzJC5waXBlKFxuICAgICAgbWFwKChncm91cHMpID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBncm91cHMuZmluZCgoZykgPT4gZy5pZCA9PT0gZ3JvdXBJZClcbiAgICAgICAgaWYgKCFncm91cCkgcmV0dXJuIHJlY29yZFxuICAgICAgICBjb25zdCBvd25lck9yZ2FuaXphdGlvbiA9IHRoaXMubWFwT3JnRnJvbUdyb3VwKGdyb3VwKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlY29yZCxcbiAgICAgICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9ucy1mcm9tLWdyb3Vwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9vcmdhbml6YXRpb25zL29yZ2FuaXphdGlvbnMtZnJvbS1ncm91cHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sK0NBQStDLENBQUE7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQU8zRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLHNEQUFzRCxDQUFBOzs7OztBQUUvRixNQUFNLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQTtBQUdsRCxNQUFNLE9BQU8sOEJBQThCO0lBK0J6QyxJQUFZLEtBQUs7UUFDZixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsWUFDVSxTQUErQixFQUMvQixnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQUhsQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFD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Y29yZSdcbmltcG9ydCB7XG4gIEdyb3VwQXBpTW9kZWwsXG4gIEdyb3Vwc0FwaVNlcnZpY2UsXG4gIFNlYXJjaEFwaVNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3MvZ240L3NyYydcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IGdldExhbmczRnJvbUxhbmcyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgRmllbGRGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgT3JnYW5pemF0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4uL2VsYXN0aWNzZWFyY2gnXG5pbXBvcnQgeyBnZXRBc1VybCwgTWV0YWRhdGFPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuXG5jb25zdCBJTUFHRV9VUkwgPSAnL2dlb25ldHdvcmsvaW1hZ2VzL2hhcnZlc3RpbmcvJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uc0Zyb21Hcm91cHNTZXJ2aWNlXG4gIGltcGxlbWVudHMgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbntcbiAgcHJpdmF0ZSBncm91cHMkOiBPYnNlcnZhYmxlPEdyb3VwQXBpTW9kZWxbXT4gPSB0aGlzLmdyb3Vwc0FwaVNlcnZpY2VcbiAgICAuZ2V0R3JvdXBzKClcbiAgICAucGlwZShzaGFyZVJlcGxheSgpKVxuICBwcml2YXRlIGdyb3Vwc0FnZ3JlZ2F0aW9uJCA9IHRoaXMuc2VhcmNoQXBpU2VydmljZVxuICAgIC5zZWFyY2goXG4gICAgICAnYnVja2V0JyxcbiAgICAgIG51bGwsXG4gICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgdGhpcy5lc1NlcnZpY2UuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoe1xuICAgICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdncm91cE93bmVyJyxcbiAgICAgICAgICAgICAgc2l6ZTogNTAwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5hZ2dyZWdhdGlvbnMuZ3JvdXBzLmJ1Y2tldHMpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgb3JnYW5pc2F0aW9ucyQgPSBmb3JrSm9pbihbdGhpcy5ncm91cHNBZ2dyZWdhdGlvbiQsIHRoaXMuZ3JvdXBzJF0pLnBpcGUoXG4gICAgbWFwKChbZ3JvdXBzQWdnLCBncm91cHNdKSA9PiB0aGlzLm1hcEdyb3Vwcyhncm91cHNBZ2csIGdyb3VwcykpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuICBvcmdhbmlzYXRpb25zQ291bnQkID0gdGhpcy5vcmdhbmlzYXRpb25zJC5waXBlKG1hcCgob3JncykgPT4gb3Jncy5sZW5ndGgpKVxuXG4gIHByaXZhdGUgZ2V0IGxhbmczKCkge1xuICAgIHJldHVybiBnZXRMYW5nM0Zyb21MYW5nMih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVzU2VydmljZTogRWxhc3RpY3NlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hBcGlTZXJ2aWNlOiBTZWFyY2hBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JvdXBzQXBpU2VydmljZTogR3JvdXBzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbWFwR3JvdXBzKGdyb3VwQnVja2V0czogYW55W10sIGdyb3VwczogR3JvdXBBcGlNb2RlbFtdKSB7XG4gICAgcmV0dXJuIGdyb3VwQnVja2V0c1xuICAgICAgLmZpbHRlcigoeyBrZXkgfSkgPT4gISFncm91cHMuZmluZCgoZykgPT4gZy5pZC50b1N0cmluZygpID09PSBrZXkpKVxuICAgICAgLm1hcCgoeyBrZXksIGRvY19jb3VudCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzLmZpbmQoKGcpID0+IGcuaWQudG9TdHJpbmcoKSA9PT0ga2V5KVxuICAgICAgICBjb25zdCBvcmcgPSB0aGlzLm1hcE9yZ0Zyb21Hcm91cChncm91cClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vcmcsXG4gICAgICAgICAgcmVjb3JkQ291bnQ6IGRvY19jb3VudCxcbiAgICAgICAgfSBhcyBPcmdhbml6YXRpb25cbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIG1hcE9yZ0Zyb21Hcm91cChncm91cDogR3JvdXBBcGlNb2RlbCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBncm91cC5sYWJlbFt0aGlzLmxhbmczXSxcbiAgICAgIC4uLihncm91cC5kZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiBncm91cC5kZXNjcmlwdGlvbiB9KSxcbiAgICAgIC4uLihncm91cC5lbWFpbCAmJiB7IGVtYWlsOiBncm91cC5lbWFpbCB9KSxcbiAgICAgIC4uLihncm91cC5sb2dvICYmIHtcbiAgICAgICAgbG9nb1VybDogZ2V0QXNVcmwoYCR7SU1BR0VfVVJMfSR7Z3JvdXAubG9nb31gKSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGdyb3VwLndlYnNpdGUgJiYge1xuICAgICAgICB3ZWJzaXRlOiBnZXRBc1VybChncm91cC53ZWJzaXRlKSxcbiAgICAgIH0pLFxuICAgIH0gYXMgT3JnYW5pemF0aW9uXG4gIH1cblxuICBnZXRGaWx0ZXJzRm9yT3JncyhvcmdzOiBPcmdhbml6YXRpb25bXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzJC5waXBlKFxuICAgICAgbWFwKChhbGxHcm91cHMpID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gb3Jncy5tYXAoKG9yZykgPT5cbiAgICAgICAgICBhbGxHcm91cHMuZmluZCgoZ3JvdXApID0+IGdyb3VwLmxhYmVsW3RoaXMubGFuZzNdID09PSBvcmcubmFtZSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGdyb3VwT3duZXI6IGdyb3Vwcy5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgW2N1cnIuaWQudG9TdHJpbmcoKV06IHRydWUgfSksXG4gICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPlxuICAgICAgICAgICksXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0T3Jnc0Zyb21GaWx0ZXJzKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8T3JnYW5pemF0aW9uW10+IHtcbiAgICBpZiAoISgnZ3JvdXBPd25lcicgaW4gZmlsdGVycykpIHJldHVybiBvZihbXSlcbiAgICByZXR1cm4gZm9ya0pvaW4oW3RoaXMuZ3JvdXBzJCwgdGhpcy5vcmdhbmlzYXRpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtncm91cHMsIG9yZ3NdKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwSWRzID0gT2JqZWN0LmtleXMoZmlsdGVyc1snZ3JvdXBPd25lciddKVxuICAgICAgICByZXR1cm4gZ3JvdXBJZHMubWFwKChpZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pZC50b1N0cmluZygpID09PSBpZClcbiAgICAgICAgICByZXR1cm4gb3Jncy5maW5kKChvcmcpID0+IG9yZy5uYW1lID09PSBncm91cC5sYWJlbFt0aGlzLmxhbmczXSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgYWRkT3JnYW5pemF0aW9uVG9SZWNvcmRGcm9tU291cmNlKFxuICAgIHNvdXJjZTogTWV0YWRhdGFPYmplY3QsXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkXG4gICk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZD4ge1xuICAgIGlmICghKCdncm91cE93bmVyJyBpbiBzb3VyY2UpKSByZXR1cm4gb2YocmVjb3JkKVxuXG4gICAgY29uc3QgZ3JvdXBJZCA9IHBhcnNlSW50KHNvdXJjZS5ncm91cE93bmVyIGFzIHN0cmluZylcbiAgICByZXR1cm4gdGhpcy5ncm91cHMkLnBpcGUoXG4gICAgICBtYXAoKGdyb3VwcykgPT4ge1xuICAgICAgICBjb25zdCBncm91cCA9IGdyb3Vwcy5maW5kKChnKSA9PiBnLmlkID09PSBncm91cElkKVxuICAgICAgICBpZiAoIWdyb3VwKSByZXR1cm4gcmVjb3JkXG4gICAgICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5tYXBPcmdGcm9tR3JvdXAoZ3JvdXApXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmVjb3JkLFxuICAgICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxufVxuIl19
@@ -4,22 +4,23 @@ import { ElasticsearchService } from '../elasticsearch';
4
4
  import { getAsArray, getAsUrl, mapOrganization, selectFallback, selectField, selectTranslatedField, } from '../../../../../../../libs/api/metadata-converter/src';
5
5
  import { combineLatest, of, switchMap, takeLast } from 'rxjs';
6
6
  import { filter, map, shareReplay, startWith, tap, withLatestFrom, } from 'rxjs/operators';
7
- import { LangService } from '../../../../../../../libs/util/i18n/src';
7
+ import { getLocalizedIndexKey } from '../../../../../../../libs/util/i18n/src';
8
8
  import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface';
9
9
  import { coerce, satisfies, valid } from 'semver';
10
+ import { TranslateService } from '@ngx-translate/core';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "../elasticsearch";
12
13
  import * as i2 from "../../../../../../../libs/data-access/gn4/src";
13
14
  import * as i3 from "../../../../../../../libs/common/domain/src/lib/platform.service.interface";
14
- import * as i4 from "../../../../../../../libs/util/i18n/src";
15
+ import * as i4 from "@ngx-translate/core";
15
16
  const IMAGE_URL = '/geonetwork/images/harvesting/';
16
17
  export class OrganizationsFromMetadataService {
17
- constructor(esService, searchApiService, groupsApiService, platformService, langService) {
18
+ constructor(esService, searchApiService, groupsApiService, platformService, translateService) {
18
19
  this.esService = esService;
19
20
  this.searchApiService = searchApiService;
20
21
  this.groupsApiService = groupsApiService;
21
22
  this.platformService = platformService;
22
- this.langService = langService;
23
+ this.translateService = translateService;
23
24
  this.groups$ = of(true).pipe(switchMap(() => this.groupsApiService.getGroups()), shareReplay());
24
25
  this.organisationsAggs$ = this.platformService.getApiVersion().pipe(switchMap((version) => this.searchApiService.search('bucket', null, JSON.stringify(this.getAggregationSearchRequest(version)))), filter((response) => !!response.aggregations.contact.org), tap((response) => response.aggregations.contact.org.buckets.forEach((r) => (r.doc_count =
25
26
  response.aggregations.orgForResource.buckets.find((org) => org.key === r.key)?.doc_count || r.doc_count))), map((response) => response.aggregations.contact.org.buckets), shareReplay());
@@ -41,7 +42,9 @@ export class OrganizationsFromMetadataService {
41
42
  ]).pipe(map(([organisations, groups]) => {
42
43
  return !groups ? organisations : this.mapWithGroups(organisations, groups);
43
44
  }), shareReplay());
44
- this.lang3 = this.langService.gnLang;
45
+ }
46
+ get langIndex() {
47
+ return getLocalizedIndexKey(this.translateService.currentLang);
45
48
  }
46
49
  equalsNormalizedStrings(str1, str2, replaceSpecialChars = true) {
47
50
  if (!str1 || !str2)
@@ -160,11 +163,11 @@ export class OrganizationsFromMetadataService {
160
163
  }));
161
164
  }
162
165
  addOrganizationToRecordFromSource(source, record) {
163
- const contacts = getAsArray(selectFallback(selectTranslatedField(source, 'contactObject', this.lang3), selectField(source, 'contact')));
164
- const resourceContacts = getAsArray(selectFallback(selectTranslatedField(source, 'contactForResourceObject', this.lang3), selectField(source, 'contactForResource')));
166
+ const contacts = getAsArray(selectFallback(selectTranslatedField(source, 'contactObject', this.langIndex), selectField(source, 'contact')));
167
+ const resourceContacts = getAsArray(selectFallback(selectTranslatedField(source, 'contactForResourceObject', this.langIndex), selectField(source, 'contactForResource')));
165
168
  const allContactOrgs = resourceContacts
166
169
  .concat(contacts)
167
- .map((contact) => mapOrganization(contact, this.lang3));
170
+ .map((contact) => mapOrganization(contact, this.langIndex));
168
171
  if (!allContactOrgs.length)
169
172
  return of(record);
170
173
  const ownerOrganization = allContactOrgs[0];
@@ -186,10 +189,10 @@ export class OrganizationsFromMetadataService {
186
189
  };
187
190
  }));
188
191
  }
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationsFromMetadataService, deps: [{ token: i1.ElasticsearchService }, { token: i2.SearchApiService }, { token: i2.GroupsApiService }, { token: i3.PlatformServiceInterface }, { token: i4.LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationsFromMetadataService, deps: [{ token: i1.ElasticsearchService }, { token: i2.SearchApiService }, { token: i2.GroupsApiService }, { token: i3.PlatformServiceInterface }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
190
193
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationsFromMetadataService }); }
191
194
  }
192
195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationsFromMetadataService, decorators: [{
193
196
  type: Injectable
194
- }], ctorParameters: () => [{ type: i1.ElasticsearchService }, { type: i2.SearchApiService }, { type: i2.GroupsApiService }, { type: i3.PlatformServiceInterface }, { type: i4.LangService }] });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9ucy1mcm9tLW1ldGFkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L29yZ2FuaXphdGlvbnMvb3JnYW5pemF0aW9ucy1mcm9tLW1ldGFkYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLCtDQUErQyxDQUFBO0FBVXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGVBQWUsRUFFZixjQUFjLEVBQ2QsV0FBVyxFQUNYLHFCQUFxQixHQUV0QixNQUFNLHNEQUFzRCxDQUFBO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekUsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBQ3JILE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQTs7Ozs7O0FBRWpELE1BQU0sU0FBUyxHQUFHLGdDQUFnQyxDQUFBO0FBcUJsRCxNQUFNLE9BQU8sZ0NBQWdDO0lBMEQzQyxZQUNVLFNBQStCLEVBQy9CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsZUFBeUMsRUFD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QUMsQ0FBQTtZQUNwRSxPQUFPO2dCQUNMLEdBQUcsTUFBTTtnQkFDVCxpQkFBaUIsRUFBRTtvQkFDakIsT0FBTztvQkFDUCxHQUFHLGlCQUFpQjtvQkFDcEIsR0FBRyxrQkFBa0I7aUJBQ3RCO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDOytHQW5SVSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQzs7NEZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgR3JvdXBBcGlNb2RlbCxcbiAgR3JvdXBzQXBpU2VydmljZSxcbiAgU2VhcmNoQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHtcbiAgRmllbGRGaWx0ZXJCeVZhbHVlcyxcbiAgRmllbGRGaWx0ZXJzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvb3JnYW5pemF0aW9ucy5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IEVsYXN0aWNzZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vZWxhc3RpY3NlYXJjaCdcbmltcG9ydCB7XG4gIGdldEFzQXJyYXksXG4gIGdldEFzVXJsLFxuICBtYXBPcmdhbml6YXRpb24sXG4gIE1ldGFkYXRhT2JqZWN0LFxuICBzZWxlY3RGYWxsYmFjayxcbiAgc2VsZWN0RmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZCxcbiAgU291cmNlV2l0aFVua25vd25Qcm9wcyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRha2VMYXN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBjb2VyY2UsIHNhdGlzZmllcywgdmFsaWQgfSBmcm9tICdzZW12ZXInXG5cbmNvbnN0IElNQUdFX1VSTCA9ICcvZ2VvbmV0d29yay9pbWFnZXMvaGFydmVzdGluZy8nXG5cbnR5cGUgRVNCdWNrZXQgPSB7XG4gIGtleTogc3RyaW5nXG4gIGRvY19jb3VudDogbnVtYmVyXG59XG5pbnRlcmZhY2UgT3JnYW5pemF0aW9uQWdnc0J1Y2tldCBleHRlbmRzIEVTQnVja2V0IHtcbiAgbWFpbDoge1xuICAgIGJ1Y2tldHM6IEVTQnVja2V0W11cbiAgfVxuICBsb2dvVXJsOiB7XG4gICAgYnVja2V0czogRVNCdWNrZXRbXVxuICB9XG59XG5pbnRlcmZhY2UgSW5jb21wbGV0ZU9yZ2FuaXphdGlvbiB7XG4gIG5hbWU6IHN0cmluZ1xuICBlbWFpbHM6IHN0cmluZ1tdXG4gIHJlY29yZENvdW50OiBudW1iZXJcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvbnNGcm9tTWV0YWRhdGFTZXJ2aWNlXG4gIGltcGxlbWVudHMgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbntcbiAgcHJpdmF0ZSBncm91cHMkOiBPYnNlcnZhYmxlPEdyb3VwQXBpTW9kZWxbXT4gPSBvZih0cnVlKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdyb3Vwc0FwaVNlcnZpY2UuZ2V0R3JvdXBzKCkpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuICBwcml2YXRlIG9yZ2FuaXNhdGlvbnNBZ2dzJDogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb25BZ2dzQnVja2V0W10+ID1cbiAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5nZXRBcGlWZXJzaW9uKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodmVyc2lvbikgPT5cbiAgICAgICAgdGhpcy5zZWFyY2hBcGlTZXJ2aWNlLnNlYXJjaChcbiAgICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QWdncmVnYXRpb25TZWFyY2hSZXF1ZXN0KHZlcnNpb24pKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVyKChyZXNwb25zZSkgPT4gISFyZXNwb25zZS5hZ2dyZWdhdGlvbnMuY29udGFjdC5vcmcpLFxuICAgICAgdGFwKChyZXNwb25zZSkgPT5cbiAgICAgICAgcmVzcG9uc2UuYWdncmVnYXRpb25zLmNvbnRhY3Qub3JnLmJ1Y2tldHMuZm9yRWFjaChcbiAgICAgICAgICAocikgPT5cbiAgICAgICAgICAgIChyLmRvY19jb3VudCA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmFnZ3JlZ2F0aW9ucy5vcmdGb3JSZXNvdXJjZS5idWNrZXRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9yZykgPT4gb3JnLmtleSA9PT0gci5rZXlcbiAgICAgICAgICAgICAgKT8uZG9jX2NvdW50IHx8IHIuZG9jX2NvdW50KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuYWdncmVnYXRpb25zLmNvbnRhY3Qub3JnLmJ1Y2tldHMpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgcHJpdmF0ZSBvcmdhbmlzYXRpb25zV2l0aG91dEdyb3VwcyQ6IE9ic2VydmFibGU8SW5jb21wbGV0ZU9yZ2FuaXphdGlvbltdPiA9XG4gICAgdGhpcy5vcmdhbmlzYXRpb25zQWdncyQucGlwZShcbiAgICAgIG1hcCgoYnVja2V0cykgPT5cbiAgICAgICAgYnVja2V0cy5tYXAoKGJ1Y2tldCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZ29VcmwgPSBidWNrZXQubG9nb1VybC5idWNrZXRzPy5bMF0/LmtleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBidWNrZXQua2V5LFxuICAgICAgICAgICAgZW1haWxzOiBidWNrZXQubWFpbC5idWNrZXRzXG4gICAgICAgICAgICAgIC5tYXAoKGJ1Y2tldCkgPT4gYnVja2V0LmtleSlcbiAgICAgICAgICAgICAgLmZpbHRlcigobWFpbCkgPT4gISFtYWlsKSxcbiAgICAgICAgICAgIHJlY29yZENvdW50OiBidWNrZXQuZG9jX2NvdW50LFxuICAgICAgICAgICAgLi4uKGxvZ29VcmwgJiYgeyBsb2dvVXJsOiBnZXRBc1VybChsb2dvVXJsKSB9KSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICBvcmdhbmlzYXRpb25zQ291bnQkID0gdGhpcy5vcmdhbmlzYXRpb25zQWdncyQucGlwZShcbiAgICBtYXAoKG9yZ2FuaXNhdGlvbnMpID0+IG9yZ2FuaXNhdGlvbnMubGVuZ3RoKVxuICApXG4gIG9yZ2FuaXNhdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5vcmdhbmlzYXRpb25zV2l0aG91dEdyb3VwcyQsXG4gICAgdGhpcy5ncm91cHMkLnBpcGUoc3RhcnRXaXRoKG51bGwpKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtvcmdhbmlzYXRpb25zLCBncm91cHNdKSA9PiB7XG4gICAgICByZXR1cm4gIWdyb3VwcyA/IG9yZ2FuaXNhdGlvbnMgOiB0aGlzLm1hcFdpdGhHcm91cHMob3JnYW5pc2F0aW9ucywgZ3JvdXBzKVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXNTZXJ2aWNlOiBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaEFwaVNlcnZpY2U6IFNlYXJjaEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm91cHNBcGlTZXJ2aWNlOiBHcm91cHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBsYW5nU2VydmljZTogTGFuZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbGFuZzMgPSB0aGlzLmxhbmdTZXJ2aWNlLmduTGFuZ1xuXG4gIGVxdWFsc05vcm1hbGl6ZWRTdHJpbmdzKFxuICAgIHN0cjE6IHN0cmluZyxcbiAgICBzdHIyOiBzdHJpbmcsXG4gICAgcmVwbGFjZVNwZWNpYWxDaGFycyA9IHRydWVcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdHIxIHx8ICFzdHIyKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5ub3JtYWxpemVTdHJpbmcoc3RyMSwgcmVwbGFjZVNwZWNpYWxDaGFycykgPT09XG4gICAgICB0aGlzLm5vcm1hbGl6ZVN0cmluZyhzdHIyLCByZXBsYWNlU3BlY2lhbENoYXJzKVxuICAgIClcbiAgfVxuXG4gIG5vcm1hbGl6ZVN0cmluZyhzdHI6IHN0cmluZywgcmVwbGFjZVNwZWNpYWxDaGFycyA9IHRydWUpOiBzdHJpbmcge1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0clxuICAgICAgICAubm9ybWFsaXplKCdORkQnKSAvLyBkZWNvbXBvc2UgZ3JhcGhlbWVzIHRvIHJlbW92ZSBhY2NlbnRzIGZyb20gbGV0dGVyc1xuICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHJlbW92ZSBhY2NlbnQgY2hhcmFjdGVyc1xuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgIH1cbiAgICBpZiAocmVwbGFjZVNwZWNpYWxDaGFycykge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzdHIpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJykgLy8gcmVwbGFjZSBhbGwgZXhjZXB0IGxldHRlcnMgJiBudW1iZXJzXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub3JtYWxpemUoc3RyKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWdncmVnYXRpb25TZWFyY2hSZXF1ZXN0KGduVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VtVmVyc2lvbiA9IHZhbGlkKGNvZXJjZShnblZlcnNpb24pKVxuICAgIHJldHVybiB0aGlzLmVzU2VydmljZS5nZXRTZWFyY2hSZXF1ZXN0Qm9keSh7XG4gICAgICBjb250YWN0OiB7XG4gICAgICAgIG5lc3RlZDoge1xuICAgICAgICAgIHBhdGg6ICdjb250YWN0Rm9yUmVzb3VyY2UnLFxuICAgICAgICB9LFxuICAgICAgICBhZ2dzOiB7XG4gICAgICAgICAgb3JnOiB7XG4gICAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgICBmaWVsZDpcbiAgICAgICAgICAgICAgICBzZW1WZXJzaW9uID09PSAnNC4yLjInXG4gICAgICAgICAgICAgICAgICA/ICdjb250YWN0Rm9yUmVzb3VyY2Uub3JnYW5pc2F0aW9uJ1xuICAgICAgICAgICAgICAgICAgOiAnY29udGFjdEZvclJlc291cmNlLm9yZ2FuaXNhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnLFxuICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgc2l6ZTogNTAwMCxcbiAgICAgICAgICAgICAgb3JkZXI6IHsgX2tleTogJ2FzYycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZ2dzOiB7XG4gICAgICAgICAgICAgIG1haWw6IHtcbiAgICAgICAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgICAgICAgc2l6ZTogNTAsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiBzYXRpc2ZpZXMoc2VtVmVyc2lvbiwgJzQuMi4yIC0gNC4yLjQnKVxuICAgICAgICAgICAgICAgICAgICA/ICdjb250YWN0Rm9yUmVzb3VyY2UuZW1haWwua2V5d29yZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnY29udGFjdEZvclJlc291cmNlLmVtYWlsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsb2dvVXJsOiB7XG4gICAgICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgICAgIHNpemU6IDEsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY29udGFjdEZvclJlc291cmNlLmxvZ28ua2V5d29yZCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcmdGb3JSZXNvdXJjZToge1xuICAgICAgICB0ZXJtczoge1xuICAgICAgICAgIHNpemU6IDUwMDAsXG4gICAgICAgICAgZXhjbHVkZTogJycsXG4gICAgICAgICAgZmllbGQ6XG4gICAgICAgICAgICBzZW1WZXJzaW9uID09PSAnNC4yLjInXG4gICAgICAgICAgICAgID8gJ09yZ0ZvclJlc291cmNlJ1xuICAgICAgICAgICAgICA6ICdPcmdGb3JSZXNvdXJjZU9iamVjdC5kZWZhdWx0JyxcbiAgICAgICAgICBvcmRlcjoge1xuICAgICAgICAgICAgX2tleTogJ2FzYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgbWFwV2l0aEdyb3VwcyhcbiAgICBvcmdhbmlzYXRpb25zOiBJbmNvbXBsZXRlT3JnYW5pemF0aW9uW10sXG4gICAgZ3JvdXBzOiBHcm91cEFwaU1vZGVsW11cbiAgKTogT3JnYW5pemF0aW9uW10ge1xuICAgIHJldHVybiBvcmdhbmlzYXRpb25zLm1hcCgob3JnYW5pc2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBncm91cCA9XG4gICAgICAgIGdyb3Vwcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICB0aGlzLmVxdWFsc05vcm1hbGl6ZWRTdHJpbmdzKFxuICAgICAgICAgICAgZ3JvdXAubGFiZWxbJ2VuZyddID8gZ3JvdXAubGFiZWxbJ2VuZyddIDogZ3JvdXAubmFtZSxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbi5uYW1lXG4gICAgICAgICAgKVxuICAgICAgICApID8/XG4gICAgICAgIGdyb3Vwc1xuICAgICAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiAhIWdyb3VwLmVtYWlsKVxuICAgICAgICAgIC5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbi5lbWFpbHNcbiAgICAgICAgICAgICAgLm1hcCgobWFpbCkgPT4gdGhpcy5ub3JtYWxpemVTdHJpbmcobWFpbCwgZmFsc2UpKVxuICAgICAgICAgICAgICAuaW5jbHVkZXModGhpcy5ub3JtYWxpemVTdHJpbmcoZ3JvdXAuZW1haWwsIGZhbHNlKSlcbiAgICAgICAgICApXG4gICAgICBjb25zdCB7IGVtYWlscywgLi4uZnVsbE9yZyB9ID0gb3JnYW5pc2F0aW9uXG4gICAgICBpZiAoIWdyb3VwKSByZXR1cm4gZnVsbE9yZ1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZnVsbE9yZyxcbiAgICAgICAgZW1haWw6IGVtYWlsc1swXSxcbiAgICAgICAgLi4uKGdyb3VwLmRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGdyb3VwLmRlc2NyaXB0aW9uIH0pLFxuICAgICAgICAuLi4oZ3JvdXAubG9nbyAmJiB7IGxvZ29Vcmw6IGdldEFzVXJsKGAke0lNQUdFX1VSTH0ke2dyb3VwLmxvZ299YCkgfSksXG4gICAgICAgIC4uLihncm91cC53ZWJzaXRlICYmIHsgd2Vic2l0ZTogZ2V0QXNVcmwoZ3JvdXAud2Vic2l0ZSkgfSksXG4gICAgICAgIC4uLihncm91cC5lbWFpbCAmJiB7IGVtYWlsOiBncm91cC5lbWFpbCB9KSxcbiAgICAgIH0gYXMgT3JnYW5pemF0aW9uXG4gICAgfSlcbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JPcmdzKG9yZ2FuaXNhdGlvbnM6IE9yZ2FuaXphdGlvbltdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZ2V0QXBpVmVyc2lvbigpLnBpcGUoXG4gICAgICBtYXAoKGduVmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnblZlcnNpb24uc3RhcnRzV2l0aCgnNC4yLjInKVxuICAgICAgICAgID8gJ09yZ0ZvclJlc291cmNlJ1xuICAgICAgICAgIDogJ09yZ0ZvclJlc291cmNlT2JqZWN0LmRlZmF1bHQnXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2ZpZWxkTmFtZV06IG9yZ2FuaXNhdGlvbnMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyLm5hbWVdOiB0cnVlIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldE9yZ3NGcm9tRmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm1TZXJ2aWNlLmdldEFwaVZlcnNpb24oKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChnblZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ25WZXJzaW9uLnN0YXJ0c1dpdGgoJzQuMi4yJylcbiAgICAgICAgICA/ICdPcmdGb3JSZXNvdXJjZSdcbiAgICAgICAgICA6ICdPcmdGb3JSZXNvdXJjZU9iamVjdC5kZWZhdWx0J1xuXG4gICAgICAgIGlmICghKGZpZWxkTmFtZSBpbiBmaWx0ZXJzKSkgcmV0dXJuIG9mKFtdKVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICAgICAgbWFwKChvcmdzOiBJbmNvbXBsZXRlT3JnYW5pemF0aW9uW10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yZ05hbWVzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgIGZpbHRlcnNbZmllbGROYW1lXSBhcyBGaWVsZEZpbHRlckJ5VmFsdWVzXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gb3JnTmFtZXMubWFwKChuYW1lKSA9PlxuICAgICAgICAgICAgICBvcmdzLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9yZzogT3JnYW5pemF0aW9uIHwgSW5jb21wbGV0ZU9yZ2FuaXphdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIG9yZy5uYW1lID09PSBuYW1lXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGFkZE9yZ2FuaXphdGlvblRvUmVjb3JkRnJvbVNvdXJjZShcbiAgICBzb3VyY2U6IE1ldGFkYXRhT2JqZWN0LFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZFxuICApOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBjb250YWN0czogU291cmNlV2l0aFVua25vd25Qcm9wc1tdID0gZ2V0QXNBcnJheShcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAnY29udGFjdE9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0JylcbiAgICAgIClcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2VDb250YWN0czogU291cmNlV2l0aFVua25vd25Qcm9wc1tdID0gZ2V0QXNBcnJheShcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAnY29udGFjdEZvclJlc291cmNlT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3RGb3JSZXNvdXJjZScpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IGFsbENvbnRhY3RPcmdzID0gcmVzb3VyY2VDb250YWN0c1xuICAgICAgLmNvbmNhdChjb250YWN0cylcbiAgICAgIC5tYXAoKGNvbnRhY3QpID0+IG1hcE9yZ2FuaXphdGlvbihjb250YWN0LCB0aGlzLmxhbmczKSlcblxuICAgIGlmICghYWxsQ29udGFjdE9yZ3MubGVuZ3RoKSByZXR1cm4gb2YocmVjb3JkKVxuXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSBhbGxDb250YWN0T3Jnc1swXVxuXG4gICAgLy8gcmVhZCB0aGUgb3duZXIgZ3JvdXAgYXMgd2VsbCB0byBoYXZlIGEgZmFsbGJhY2sgbG9nb1xuICAgIGNvbnN0IGdyb3VwSWQgPSBzZWxlY3RGaWVsZChzb3VyY2UsICdncm91cE93bmVyJylcbiAgICBjb25zdCBncm91cCQgPSB0aGlzLmdyb3VwcyQucGlwZShcbiAgICAgIG1hcCgoZ3JvdXBzKSA9PlxuICAgICAgICBncm91cHMuZmluZCgoZ3JvdXApID0+IHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXAuaWQgPT09IE51bWJlcihncm91cElkKVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcblxuICAgIHJldHVybiB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICB0YWtlTGFzdCgxKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGdyb3VwJCksXG4gICAgICBtYXAoKFtvcmdhbmlzYXRpb25zLCBncm91cF06IFtPcmdhbml6YXRpb25bXSwgR3JvdXBBcGlNb2RlbF0pID0+IHtcbiAgICAgICAgY29uc3QgcmVjb3JkT3JnYW5pc2F0aW9uID0gb3JnYW5pc2F0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG9yZykgPT4gb3JnLm5hbWUgPT09IG93bmVyT3JnYW5pemF0aW9uLm5hbWVcbiAgICAgICAgKVswXVxuICAgICAgICBjb25zdCBsb2dvVXJsID0gZ3JvdXA/LmxvZ28gJiYgZ2V0QXNVcmwoYCR7SU1BR0VfVVJMfSR7Z3JvdXAubG9nb31gKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlY29yZCxcbiAgICAgICAgICBvd25lck9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgbG9nb1VybCxcbiAgICAgICAgICAgIC4uLm93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgLi4ucmVjb3JkT3JnYW5pc2F0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG59XG4iXX0=
197
+ }], ctorParameters: () => [{ type: i1.ElasticsearchService }, { type: i2.SearchApiService }, { type: i2.GroupsApiService }, { type: i3.PlatformServiceInterface }, { type: i4.TranslateService }] });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9ucy1mcm9tLW1ldGFkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L29yZ2FuaXphdGlvbnMvb3JnYW5pemF0aW9ucy1mcm9tLW1ldGFkYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLCtDQUErQyxDQUFBO0FBVXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGVBQWUsRUFFZixjQUFjLEVBQ2QsV0FBVyxFQUNYLHFCQUFxQixHQUV0QixNQUFNLHNEQUFzRCxDQUFBO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekUsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEVBQTRFLENBQUE7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7Ozs7QUFFdEQsTUFBTSxTQUFTLEdBQUcsZ0NBQWdDLENBQUE7QUFxQmxELE1BQU0sT0FBTyxnQ0FBZ0M7SUEwRDNDLFlBQ1Us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QyxDQUFBO1lBQ0osTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7WUFDcEUsT0FBTztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsaUJBQWlCLEVBQUU7b0JBQ2pCLE9BQU87b0JBQ1AsR0FBRyxpQkFBaUI7b0JBQ3BCLEdBQUcsa0JBQWtCO2lCQUN0QjthQUNGLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQzsrR0F6UlUsZ0NBQWdDO21IQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEdyb3VwQXBpTW9kZWwsXG4gIEdyb3Vwc0FwaVNlcnZpY2UsXG4gIFNlYXJjaEFwaVNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3MvZ240L3NyYydcbmltcG9ydCB7XG4gIEZpZWxkRmlsdGVyQnlWYWx1ZXMsXG4gIEZpZWxkRmlsdGVycyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgT3JnYW5pemF0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4uL2VsYXN0aWNzZWFyY2gnXG5pbXBvcnQge1xuICBnZXRBc0FycmF5LFxuICBnZXRBc1VybCxcbiAgbWFwT3JnYW5pemF0aW9uLFxuICBNZXRhZGF0YU9iamVjdCxcbiAgc2VsZWN0RmFsbGJhY2ssXG4gIHNlbGVjdEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkRmllbGQsXG4gIFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YWtlTGFzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgdGFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBnZXRMb2NhbGl6ZWRJbmRleEtleSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgY29lcmNlLCBzYXRpc2ZpZXMsIHZhbGlkIH0gZnJvbSAnc2VtdmVyJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbmNvbnN0IElNQUdFX1VSTCA9ICcvZ2VvbmV0d29yay9pbWFnZXMvaGFydmVzdGluZy8nXG5cbnR5cGUgRVNCdWNrZXQgPSB7XG4gIGtleTogc3RyaW5nXG4gIGRvY19jb3VudDogbnVtYmVyXG59XG5pbnRlcmZhY2UgT3JnYW5pemF0aW9uQWdnc0J1Y2tldCBleHRlbmRzIEVTQnVja2V0IHtcbiAgbWFpbDoge1xuICAgIGJ1Y2tldHM6IEVTQnVja2V0W11cbiAgfVxuICBsb2dvVXJsOiB7XG4gICAgYnVja2V0czogRVNCdWNrZXRbXVxuICB9XG59XG5pbnRlcmZhY2UgSW5jb21wbGV0ZU9yZ2FuaXphdGlvbiB7XG4gIG5hbWU6IHN0cmluZ1xuICBlbWFpbHM6IHN0cmluZ1tdXG4gIHJlY29yZENvdW50OiBudW1iZXJcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvbnNGcm9tTWV0YWRhdGFTZXJ2aWNlXG4gIGltcGxlbWVudHMgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbntcbiAgcHJpdmF0ZSBncm91cHMkOiBPYnNlcnZhYmxlPEdyb3VwQXBpTW9kZWxbXT4gPSBvZih0cnVlKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdyb3Vwc0FwaVNlcnZpY2UuZ2V0R3JvdXBzKCkpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuICBwcml2YXRlIG9yZ2FuaXNhdGlvbnNBZ2dzJDogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb25BZ2dzQnVja2V0W10+ID1cbiAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5nZXRBcGlWZXJzaW9uKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodmVyc2lvbikgPT5cbiAgICAgICAgdGhpcy5zZWFyY2hBcGlTZXJ2aWNlLnNlYXJjaChcbiAgICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QWdncmVnYXRpb25TZWFyY2hSZXF1ZXN0KHZlcnNpb24pKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVyKChyZXNwb25zZSkgPT4gISFyZXNwb25zZS5hZ2dyZWdhdGlvbnMuY29udGFjdC5vcmcpLFxuICAgICAgdGFwKChyZXNwb25zZSkgPT5cbiAgICAgICAgcmVzcG9uc2UuYWdncmVnYXRpb25zLmNvbnRhY3Qub3JnLmJ1Y2tldHMuZm9yRWFjaChcbiAgICAgICAgICAocikgPT5cbiAgICAgICAgICAgIChyLmRvY19jb3VudCA9XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmFnZ3JlZ2F0aW9ucy5vcmdGb3JSZXNvdXJjZS5idWNrZXRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9yZykgPT4gb3JnLmtleSA9PT0gci5rZXlcbiAgICAgICAgICAgICAgKT8uZG9jX2NvdW50IHx8IHIuZG9jX2NvdW50KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuYWdncmVnYXRpb25zLmNvbnRhY3Qub3JnLmJ1Y2tldHMpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgcHJpdmF0ZSBvcmdhbmlzYXRpb25zV2l0aG91dEdyb3VwcyQ6IE9ic2VydmFibGU8SW5jb21wbGV0ZU9yZ2FuaXphdGlvbltdPiA9XG4gICAgdGhpcy5vcmdhbmlzYXRpb25zQWdncyQucGlwZShcbiAgICAgIG1hcCgoYnVja2V0cykgPT5cbiAgICAgICAgYnVja2V0cy5tYXAoKGJ1Y2tldCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZ29VcmwgPSBidWNrZXQubG9nb1VybC5idWNrZXRzPy5bMF0/LmtleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBidWNrZXQua2V5LFxuICAgICAgICAgICAgZW1haWxzOiBidWNrZXQubWFpbC5idWNrZXRzXG4gICAgICAgICAgICAgIC5tYXAoKGJ1Y2tldCkgPT4gYnVja2V0LmtleSlcbiAgICAgICAgICAgICAgLmZpbHRlcigobWFpbCkgPT4gISFtYWlsKSxcbiAgICAgICAgICAgIHJlY29yZENvdW50OiBidWNrZXQuZG9jX2NvdW50LFxuICAgICAgICAgICAgLi4uKGxvZ29VcmwgJiYgeyBsb2dvVXJsOiBnZXRBc1VybChsb2dvVXJsKSB9KSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICBvcmdhbmlzYXRpb25zQ291bnQkID0gdGhpcy5vcmdhbmlzYXRpb25zQWdncyQucGlwZShcbiAgICBtYXAoKG9yZ2FuaXNhdGlvbnMpID0+IG9yZ2FuaXNhdGlvbnMubGVuZ3RoKVxuICApXG4gIG9yZ2FuaXNhdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5vcmdhbmlzYXRpb25zV2l0aG91dEdyb3VwcyQsXG4gICAgdGhpcy5ncm91cHMkLnBpcGUoc3RhcnRXaXRoKG51bGwpKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtvcmdhbmlzYXRpb25zLCBncm91cHNdKSA9PiB7XG4gICAgICByZXR1cm4gIWdyb3VwcyA/IG9yZ2FuaXNhdGlvbnMgOiB0aGlzLm1hcFdpdGhHcm91cHMob3JnYW5pc2F0aW9ucywgZ3JvdXBzKVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXNTZXJ2aWNlOiBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaEFwaVNlcnZpY2U6IFNlYXJjaEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm91cHNBcGlTZXJ2aWNlOiBHcm91cHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGdldCBsYW5nSW5kZXgoKSB7XG4gICAgcmV0dXJuIGdldExvY2FsaXplZEluZGV4S2V5KHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZylcbiAgfVxuXG4gIGVxdWFsc05vcm1hbGl6ZWRTdHJpbmdzKFxuICAgIHN0cjE6IHN0cmluZyxcbiAgICBzdHIyOiBzdHJpbmcsXG4gICAgcmVwbGFjZVNwZWNpYWxDaGFycyA9IHRydWVcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdHIxIHx8ICFzdHIyKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5ub3JtYWxpemVTdHJpbmcoc3RyMSwgcmVwbGFjZVNwZWNpYWxDaGFycykgPT09XG4gICAgICB0aGlzLm5vcm1hbGl6ZVN0cmluZyhzdHIyLCByZXBsYWNlU3BlY2lhbENoYXJzKVxuICAgIClcbiAgfVxuXG4gIG5vcm1hbGl6ZVN0cmluZyhzdHI6IHN0cmluZywgcmVwbGFjZVNwZWNpYWxDaGFycyA9IHRydWUpOiBzdHJpbmcge1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0clxuICAgICAgICAubm9ybWFsaXplKCdORkQnKSAvLyBkZWNvbXBvc2UgZ3JhcGhlbWVzIHRvIHJlbW92ZSBhY2NlbnRzIGZyb20gbGV0dGVyc1xuICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHJlbW92ZSBhY2NlbnQgY2hhcmFjdGVyc1xuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgIH1cbiAgICBpZiAocmVwbGFjZVNwZWNpYWxDaGFycykge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzdHIpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJykgLy8gcmVwbGFjZSBhbGwgZXhjZXB0IGxldHRlcnMgJiBudW1iZXJzXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub3JtYWxpemUoc3RyKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWdncmVnYXRpb25TZWFyY2hSZXF1ZXN0KGduVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VtVmVyc2lvbiA9IHZhbGlkKGNvZXJjZShnblZlcnNpb24pKVxuICAgIHJldHVybiB0aGlzLmVzU2VydmljZS5nZXRTZWFyY2hSZXF1ZXN0Qm9keSh7XG4gICAgICBjb250YWN0OiB7XG4gICAgICAgIG5lc3RlZDoge1xuICAgICAgICAgIHBhdGg6ICdjb250YWN0Rm9yUmVzb3VyY2UnLFxuICAgICAgICB9LFxuICAgICAgICBhZ2dzOiB7XG4gICAgICAgICAgb3JnOiB7XG4gICAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgICBmaWVsZDpcbiAgICAgICAgICAgICAgICBzZW1WZXJzaW9uID09PSAnNC4yLjInXG4gICAgICAgICAgICAgICAgICA/ICdjb250YWN0Rm9yUmVzb3VyY2Uub3JnYW5pc2F0aW9uJ1xuICAgICAgICAgICAgICAgICAgOiAnY29udGFjdEZvclJlc291cmNlLm9yZ2FuaXNhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnLFxuICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgc2l6ZTogNTAwMCxcbiAgICAgICAgICAgICAgb3JkZXI6IHsgX2tleTogJ2FzYycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZ2dzOiB7XG4gICAgICAgICAgICAgIG1haWw6IHtcbiAgICAgICAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgICAgICAgc2l6ZTogNTAsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiBzYXRpc2ZpZXMoc2VtVmVyc2lvbiwgJzQuMi4yIC0gNC4yLjQnKVxuICAgICAgICAgICAgICAgICAgICA/ICdjb250YWN0Rm9yUmVzb3VyY2UuZW1haWwua2V5d29yZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnY29udGFjdEZvclJlc291cmNlLmVtYWlsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsb2dvVXJsOiB7XG4gICAgICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgICAgIHNpemU6IDEsXG4gICAgICAgICAgICAgICAgICBleGNsdWRlOiAnJyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY29udGFjdEZvclJlc291cmNlLmxvZ28ua2V5d29yZCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcmdGb3JSZXNvdXJjZToge1xuICAgICAgICB0ZXJtczoge1xuICAgICAgICAgIHNpemU6IDUwMDAsXG4gICAgICAgICAgZXhjbHVkZTogJycsXG4gICAgICAgICAgZmllbGQ6XG4gICAgICAgICAgICBzZW1WZXJzaW9uID09PSAnNC4yLjInXG4gICAgICAgICAgICAgID8gJ09yZ0ZvclJlc291cmNlJ1xuICAgICAgICAgICAgICA6ICdPcmdGb3JSZXNvdXJjZU9iamVjdC5kZWZhdWx0JyxcbiAgICAgICAgICBvcmRlcjoge1xuICAgICAgICAgICAgX2tleTogJ2FzYycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgbWFwV2l0aEdyb3VwcyhcbiAgICBvcmdhbmlzYXRpb25zOiBJbmNvbXBsZXRlT3JnYW5pemF0aW9uW10sXG4gICAgZ3JvdXBzOiBHcm91cEFwaU1vZGVsW11cbiAgKTogT3JnYW5pemF0aW9uW10ge1xuICAgIHJldHVybiBvcmdhbmlzYXRpb25zLm1hcCgob3JnYW5pc2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBncm91cCA9XG4gICAgICAgIGdyb3Vwcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICB0aGlzLmVxdWFsc05vcm1hbGl6ZWRTdHJpbmdzKFxuICAgICAgICAgICAgZ3JvdXAubGFiZWxbJ2VuZyddID8gZ3JvdXAubGFiZWxbJ2VuZyddIDogZ3JvdXAubmFtZSxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbi5uYW1lXG4gICAgICAgICAgKVxuICAgICAgICApID8/XG4gICAgICAgIGdyb3Vwc1xuICAgICAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiAhIWdyb3VwLmVtYWlsKVxuICAgICAgICAgIC5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbi5lbWFpbHNcbiAgICAgICAgICAgICAgLm1hcCgobWFpbCkgPT4gdGhpcy5ub3JtYWxpemVTdHJpbmcobWFpbCwgZmFsc2UpKVxuICAgICAgICAgICAgICAuaW5jbHVkZXModGhpcy5ub3JtYWxpemVTdHJpbmcoZ3JvdXAuZW1haWwsIGZhbHNlKSlcbiAgICAgICAgICApXG4gICAgICBjb25zdCB7IGVtYWlscywgLi4uZnVsbE9yZyB9ID0gb3JnYW5pc2F0aW9uXG4gICAgICBpZiAoIWdyb3VwKSByZXR1cm4gZnVsbE9yZ1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZnVsbE9yZyxcbiAgICAgICAgZW1haWw6IGVtYWlsc1swXSxcbiAgICAgICAgLi4uKGdyb3VwLmRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGdyb3VwLmRlc2NyaXB0aW9uIH0pLFxuICAgICAgICAuLi4oZ3JvdXAubG9nbyAmJiB7IGxvZ29Vcmw6IGdldEFzVXJsKGAke0lNQUdFX1VSTH0ke2dyb3VwLmxvZ299YCkgfSksXG4gICAgICAgIC4uLihncm91cC53ZWJzaXRlICYmIHsgd2Vic2l0ZTogZ2V0QXNVcmwoZ3JvdXAud2Vic2l0ZSkgfSksXG4gICAgICAgIC4uLihncm91cC5lbWFpbCAmJiB7IGVtYWlsOiBncm91cC5lbWFpbCB9KSxcbiAgICAgIH0gYXMgT3JnYW5pemF0aW9uXG4gICAgfSlcbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JPcmdzKG9yZ2FuaXNhdGlvbnM6IE9yZ2FuaXphdGlvbltdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZ2V0QXBpVmVyc2lvbigpLnBpcGUoXG4gICAgICBtYXAoKGduVmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnblZlcnNpb24uc3RhcnRzV2l0aCgnNC4yLjInKVxuICAgICAgICAgID8gJ09yZ0ZvclJlc291cmNlJ1xuICAgICAgICAgIDogJ09yZ0ZvclJlc291cmNlT2JqZWN0LmRlZmF1bHQnXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2ZpZWxkTmFtZV06IG9yZ2FuaXNhdGlvbnMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyLm5hbWVdOiB0cnVlIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldE9yZ3NGcm9tRmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm1TZXJ2aWNlLmdldEFwaVZlcnNpb24oKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChnblZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ25WZXJzaW9uLnN0YXJ0c1dpdGgoJzQuMi4yJylcbiAgICAgICAgICA/ICdPcmdGb3JSZXNvdXJjZSdcbiAgICAgICAgICA6ICdPcmdGb3JSZXNvdXJjZU9iamVjdC5kZWZhdWx0J1xuXG4gICAgICAgIGlmICghKGZpZWxkTmFtZSBpbiBmaWx0ZXJzKSkgcmV0dXJuIG9mKFtdKVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICAgICAgbWFwKChvcmdzOiBJbmNvbXBsZXRlT3JnYW5pemF0aW9uW10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yZ05hbWVzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgIGZpbHRlcnNbZmllbGROYW1lXSBhcyBGaWVsZEZpbHRlckJ5VmFsdWVzXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gb3JnTmFtZXMubWFwKChuYW1lKSA9PlxuICAgICAgICAgICAgICBvcmdzLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9yZzogT3JnYW5pemF0aW9uIHwgSW5jb21wbGV0ZU9yZ2FuaXphdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIG9yZy5uYW1lID09PSBuYW1lXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGFkZE9yZ2FuaXphdGlvblRvUmVjb3JkRnJvbVNvdXJjZShcbiAgICBzb3VyY2U6IE1ldGFkYXRhT2JqZWN0LFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZFxuICApOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBjb250YWN0czogU291cmNlV2l0aFVua25vd25Qcm9wc1tdID0gZ2V0QXNBcnJheShcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAnY29udGFjdE9iamVjdCcsIHRoaXMubGFuZ0luZGV4KSxcbiAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlQ29udGFjdHM6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXSA9IGdldEFzQXJyYXkoXG4gICAgICBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAnY29udGFjdEZvclJlc291cmNlT2JqZWN0JyxcbiAgICAgICAgICB0aGlzLmxhbmdJbmRleFxuICAgICAgICApLFxuICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0Rm9yUmVzb3VyY2UnKVxuICAgICAgKVxuICAgIClcbiAgICBjb25zdCBhbGxDb250YWN0T3JncyA9IHJlc291cmNlQ29udGFjdHNcbiAgICAgIC5jb25jYXQoY29udGFjdHMpXG4gICAgICAubWFwKChjb250YWN0KSA9PiBtYXBPcmdhbml6YXRpb24oY29udGFjdCwgdGhpcy5sYW5nSW5kZXgpKVxuXG4gICAgaWYgKCFhbGxDb250YWN0T3Jncy5sZW5ndGgpIHJldHVybiBvZihyZWNvcmQpXG5cbiAgICBjb25zdCBvd25lck9yZ2FuaXphdGlvbiA9IGFsbENvbnRhY3RPcmdzWzBdXG5cbiAgICAvLyByZWFkIHRoZSBvd25lciBncm91cCBhcyB3ZWxsIHRvIGhhdmUgYSBmYWxsYmFjayBsb2dvXG4gICAgY29uc3QgZ3JvdXBJZCA9IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dyb3VwT3duZXInKVxuICAgIGNvbnN0IGdyb3VwJCA9IHRoaXMuZ3JvdXBzJC5waXBlKFxuICAgICAgbWFwKChncm91cHMpID0+XG4gICAgICAgIGdyb3Vwcy5maW5kKChncm91cCkgPT4ge1xuICAgICAgICAgIHJldHVybiBncm91cC5pZCA9PT0gTnVtYmVyKGdyb3VwSWQpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIHRha2VMYXN0KDEpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZ3JvdXAkKSxcbiAgICAgIG1hcCgoW29yZ2FuaXNhdGlvbnMsIGdyb3VwXTogW09yZ2FuaXphdGlvbltdLCBHcm91cEFwaU1vZGVsXSkgPT4ge1xuICAgICAgICBjb25zdCByZWNvcmRPcmdhbmlzYXRpb24gPSBvcmdhbmlzYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAob3JnKSA9PiBvcmcubmFtZSA9PT0gb3duZXJPcmdhbml6YXRpb24ubmFtZVxuICAgICAgICApWzBdXG4gICAgICAgIGNvbnN0IGxvZ29VcmwgPSBncm91cD8ubG9nbyAmJiBnZXRBc1VybChgJHtJTUFHRV9VUkx9JHtncm91cC5sb2dvfWApXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmVjb3JkLFxuICAgICAgICAgIG93bmVyT3JnYW5pemF0aW9uOiB7XG4gICAgICAgICAgICBsb2dvVXJsLFxuICAgICAgICAgICAgLi4ub3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgICAgICAuLi5yZWNvcmRPcmdhbmlzYXRpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==