geonetwork-ui 2.2.0-dev.9ae0a68b → 2.2.0-dev.9d7dfa2e

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 (398) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +28 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +96 -59
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +8 -4
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +25 -17
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +55 -23
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
  10. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  11. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  12. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  13. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  14. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  15. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  17. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  18. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  19. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  20. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  22. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  23. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  24. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  25. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  26. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  27. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  28. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  29. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  30. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  31. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  32. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +23 -3
  33. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  34. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  35. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +5 -3
  36. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +11 -1
  37. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  38. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  39. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -13
  40. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  41. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  42. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  43. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
  44. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  45. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  46. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  47. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  48. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  49. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +2 -2
  50. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  51. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  52. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  53. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  54. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  55. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  56. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  57. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  58. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  59. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  60. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  61. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +5 -3
  62. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  63. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +47 -17
  64. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
  65. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  66. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  67. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +8 -4
  68. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +12 -5
  69. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  70. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +3 -3
  72. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  73. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  74. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  75. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  76. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  77. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  78. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +12 -7
  79. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  80. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  81. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  82. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  83. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  84. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  85. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  86. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  87. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  88. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  89. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  90. package/esm2022/libs/util/i18n/src/index.mjs +1 -2
  91. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
  92. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  93. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  94. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
  95. package/esm2022/translations/de.json +129 -112
  96. package/esm2022/translations/en.json +58 -41
  97. package/esm2022/translations/es.json +36 -19
  98. package/esm2022/translations/fr.json +52 -35
  99. package/esm2022/translations/it.json +45 -28
  100. package/esm2022/translations/nl.json +37 -20
  101. package/esm2022/translations/pt.json +36 -19
  102. package/fesm2022/geonetwork-ui.mjs +1642 -972
  103. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  104. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +3 -0
  105. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  107. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  108. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  109. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
  110. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  111. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
  112. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
  113. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  114. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +7 -6
  115. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  116. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
  117. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  118. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  119. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  120. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  121. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  122. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  123. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  124. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  125. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  126. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  127. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  128. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +31 -17
  129. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  130. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  131. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  132. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  133. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  134. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  135. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  136. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  137. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  138. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  139. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  140. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  141. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  142. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  143. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  144. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  145. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  146. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  147. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  148. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  149. package/libs/feature/map/src/index.d.ts +1 -0
  150. package/libs/feature/map/src/index.d.ts.map +1 -1
  151. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  152. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  153. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  154. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  155. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  156. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  157. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  158. package/libs/feature/map/src/lib/feature-map.module.d.ts +15 -12
  159. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  160. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  161. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  162. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  163. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  164. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +2 -0
  165. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  166. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  167. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  168. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  169. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  170. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  171. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  172. package/libs/feature/search/src/index.d.ts +3 -0
  173. package/libs/feature/search/src/index.d.ts.map +1 -1
  174. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -3
  175. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  176. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  177. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  178. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  179. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  180. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  181. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  182. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  183. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  184. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  185. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  186. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  187. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  188. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  189. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  190. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  191. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  192. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  193. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  194. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  195. package/libs/ui/elements/src/index.d.ts +2 -0
  196. package/libs/ui/elements/src/index.d.ts.map +1 -1
  197. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  198. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  199. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  200. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
  201. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
  202. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
  203. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -5
  204. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  205. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  206. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  207. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  208. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  209. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  210. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -2
  211. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  212. package/libs/ui/inputs/src/index.d.ts +1 -0
  213. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  214. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  215. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  216. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  217. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  218. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  219. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  220. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -39
  221. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  222. package/libs/ui/layout/src/index.d.ts +2 -0
  223. package/libs/ui/layout/src/index.d.ts.map +1 -1
  224. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  225. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  226. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  227. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  228. package/libs/ui/search/src/index.d.ts +0 -1
  229. package/libs/ui/search/src/index.d.ts.map +1 -1
  230. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  231. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  232. package/libs/util/i18n/src/index.d.ts +0 -1
  233. package/libs/util/i18n/src/index.d.ts.map +1 -1
  234. package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
  235. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  236. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  237. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  238. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  239. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  240. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
  241. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
  242. package/package.json +4 -1
  243. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +63 -8
  244. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +57 -9
  245. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +229 -24
  246. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +32 -0
  247. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +140 -74
  248. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +7 -3
  249. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
  250. package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
  251. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +30 -21
  252. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +120 -63
  253. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +177 -97
  254. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
  255. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  256. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  257. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  258. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  259. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  260. package/src/libs/common/domain/src/lib/index.ts +2 -0
  261. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +37 -21
  262. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  263. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  264. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  265. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  266. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  267. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  268. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  269. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  270. package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
  271. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  272. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
  273. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  274. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  275. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  276. package/src/libs/feature/map/src/index.ts +1 -0
  277. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  278. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  279. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  280. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  281. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  282. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  283. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  284. package/src/libs/feature/map/src/lib/feature-map.module.ts +12 -0
  285. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  286. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  287. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  288. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  289. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +6 -2
  290. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +16 -0
  291. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  292. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  293. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +12 -12
  294. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  295. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  296. package/src/libs/feature/search/src/index.ts +3 -0
  297. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +3 -4
  298. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
  299. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  300. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  301. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  302. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  303. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  304. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  305. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  306. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  307. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  308. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  309. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  310. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  311. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  312. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  313. package/src/libs/ui/elements/src/index.ts +2 -0
  314. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  315. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  316. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  317. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  318. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  319. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  320. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  321. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +54 -54
  322. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
  323. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.html +5 -1
  324. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
  325. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +3 -3
  326. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  327. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +207 -63
  328. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -10
  329. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
  330. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  331. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  332. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  333. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
  334. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  335. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -1
  336. package/src/libs/ui/inputs/src/index.ts +1 -0
  337. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  338. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  339. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -0
  340. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  341. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +2 -2
  342. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
  343. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  344. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
  345. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
  346. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  347. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +5 -2
  348. package/src/libs/ui/layout/src/index.ts +2 -0
  349. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  350. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
  351. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  352. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  353. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  354. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  355. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  356. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  357. package/src/libs/ui/search/src/index.ts +0 -1
  358. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  359. package/src/libs/util/i18n/src/index.ts +0 -1
  360. package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
  361. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  362. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  363. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
  364. package/tailwind.base.css +2 -2
  365. package/translations/de.json +129 -112
  366. package/translations/en.json +58 -41
  367. package/translations/es.json +36 -19
  368. package/translations/fr.json +52 -35
  369. package/translations/it.json +45 -28
  370. package/translations/nl.json +37 -20
  371. package/translations/pt.json +36 -19
  372. package/translations/sk.json +37 -20
  373. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  374. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  375. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  376. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  377. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  378. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  379. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  380. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  381. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  382. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  383. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  384. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  385. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  386. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  387. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  388. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  389. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  390. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  391. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  392. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  393. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  394. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  395. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  396. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
  397. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  398. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -6,7 +6,7 @@ import { catchError, map, shareReplay, switchMap, take, withLatestFrom, } from '
6
6
  import { AddResults, ClearError, ClearResults, Paginate, PAGINATE, PatchResultsAggregations, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RequestNewResults, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SetError, SetResultsAggregations, SetResultsHits, UPDATE_FILTERS, } from './actions';
7
7
  import { getSearchStateSearch } from './selectors';
8
8
  import { switchMapWithSearchId } from '../utils/operators/search.operator';
9
- import { FILTER_GEOMETRY } from '../feature-search.module';
9
+ import { FILTER_GEOMETRY } from '../filter-geometry.token';
10
10
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
11
11
  import { FavoritesService } from '../../../../../../libs/api/repository/src';
12
12
  import { PlatformServiceInterface } from '../../../../../../libs/common/domain/src/lib/platform.service.interface';
@@ -45,9 +45,11 @@ export class SearchEffects {
45
45
  // I could not get this to work (maybe a bug in rxjs?)
46
46
  switchMap(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map((favorites) => [state, favorites]))), switchMap(([state, favorites]) => {
47
47
  if (!state.params.useSpatialFilter || !this.filterGeometry$) {
48
- return of([state, favorites, null]);
48
+ return of([state, favorites, undefined]);
49
49
  }
50
50
  return this.filterGeometry$.pipe(tap((geom) => {
51
+ if (!geom)
52
+ return;
51
53
  try {
52
54
  const trace = validGeoJson(geom, true);
53
55
  if (trace?.length > 0) {
@@ -59,7 +61,7 @@ export class SearchEffects {
59
61
  throw new Error();
60
62
  }
61
63
  }), map((geom) => [state, favorites, geom]), catchError((e) => {
62
- return of([state, favorites, null]);
64
+ return of([state, favorites, undefined]);
63
65
  }));
64
66
  }), switchMap(([state, favorites, geometry]) => {
65
67
  const { currentPage, pageSize, sort } = state.params;
@@ -119,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
119
121
  type: Inject,
120
122
  args: [FILTER_GEOMETRY]
121
123
  }] }]; } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zdGF0ZS9lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDN0UsT0FBTyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxJQUFJLEVBQ0osY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBRW5CLGlCQUFpQixFQUVqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCwwQkFBMEIsRUFDMUIsUUFBUSxFQUVSLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sV0FBVyxDQUFBO0FBRWxCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUUxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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LENBQUMsSUFBSSxDQUN2QixNQUFNLENBQ0osMEJBQTBCLEVBQzFCLDJCQUEyQixDQUM1QixFQUNELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUMvQixjQUFjLENBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMxRCxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7Z0JBQy9CLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN0QixLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3BELENBQUMsQ0FDSCxFQUNELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNuQixPQUFPLElBQUksd0JBQXdCLENBQ2pDLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQ1YsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQyw0QkFBNEI7YUFDL0IsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBdktDLENBQUM7OEdBZE8sYUFBYSxnTEFZZCxlQUFlO2tIQVpkLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQVlOLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJ1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgYnVmZmVyLCBjb21iaW5lTGF0ZXN0V2l0aCwgZGVib3VuY2VUaW1lLCBmcm9tLCBvZiwgdGFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgQWRkUmVzdWx0cyxcbiAgQ2xlYXJFcnJvcixcbiAgQ2xlYXJSZXN1bHRzLFxuICBQYWdpbmF0ZSxcbiAgUEFHSU5BVEUsXG4gIFBhdGNoUmVzdWx0c0FnZ3JlZ2F0aW9ucyxcbiAgUkVRVUVTVF9NT1JFX09OX0FHR1JFR0FUSU9OLFxuICBSRVFVRVNUX01PUkVfUkVTVUxUUyxcbiAgUkVRVUVTVF9ORVdfUkVTVUxUUyxcbiAgUmVxdWVzdE1vcmVPbkFnZ3JlZ2F0aW9uLFxuICBSZXF1ZXN0TmV3UmVzdWx0cyxcbiAgU2VhcmNoQWN0aW9ucyxcbiAgU0VUX0ZBVk9SSVRFU19PTkxZLFxuICBTRVRfRklMVEVSUyxcbiAgU0VUX0lOQ0xVREVfT05fQUdHUkVHQVRJT04sXG4gIFNFVF9QQUdFX1NJWkUsXG4gIFNFVF9TRUFSQ0gsXG4gIFNFVF9TT1JUX0JZLFxuICBTRVRfU1BBVElBTF9GSUxURVJfRU5BQkxFRCxcbiAgU2V0RXJyb3IsXG4gIFNldEluY2x1ZGVPbkFnZ3JlZ2F0aW9uLFxuICBTZXRSZXN1bHRzQWdncmVnYXRpb25zLFxuICBTZXRSZXN1bHRzSGl0cyxcbiAgVVBEQVRFX0ZJTFRFUlMsXG59IGZyb20gJy4vYWN0aW9ucydcbmltcG9ydCB7IFNlYXJjaFN0YXRlLCBTZWFyY2hTdGF0ZVNlYXJjaCB9IGZyb20gJy4vcmVkdWNlcidcbmltcG9ydCB7IGdldFNlYXJjaFN0YXRlU2VhcmNoIH0gZnJvbSAnLi9zZWxlY3RvcnMnXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgc3dpdGNoTWFwV2l0aFNlYXJjaElkIH0gZnJvbSAnLi4vdXRpbHMvb3BlcmF0b3JzL3NlYXJjaC5vcGVyYXRvcidcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IEZJTFRFUl9HRU9NRVRSWSB9IGZyb20gJy4uL2ZlYXR1cmUtc2VhcmNoLm1vZHVsZSdcbmltcG9ydCB7IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcmVwb3NpdG9yeS9yZWNvcmRzLXJlcG9zaXRvcnkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgRmF2b3JpdGVzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyB2YWxpZCBhcyB2YWxpZEdlb0pzb24gfSBmcm9tICdnZW9qc29uLXZhbGlkYXRpb24nXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWFyY2hFZmZlY3RzIHtcbiAgZmlsdGVyR2VvbWV0cnkkID0gdGhpcy5maWx0ZXJHZW9tZXRyeVxuICAgID8gZnJvbSh0aGlzLmZpbHRlckdlb21ldHJ5KS5waXBlKHNoYXJlUmVwbGF5KCkpXG4gICAgOiB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgc3RvcmUkOiBTdG9yZTxTZWFyY2hTdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWNvcmRzUmVwb3NpdG9yeTogUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBmYXZvcml0ZXNTZXJ2aWNlOiBGYXZvcml0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZJTFRFUl9HRU9NRVRSWSlcbiAgICBwcml2YXRlIGZpbHRlckdlb21ldHJ5OiBQcm9taXNlPEdlb21ldHJ5PlxuICApIHt9XG5cbiAgcmVzZXRQYWdpbmF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgU0VUX0ZJTFRFUlMsXG4gICAgICAgIFVQREFURV9GSUxURVJTLFxuICAgICAgICBTRVRfU0VBUkNILFxuICAgICAgICBTRVRfRkFWT1JJVEVTX09OTFksXG4gICAgICAgIFNFVF9TUEFUSUFMX0ZJTFRFUl9FTkFCTEVEXG4gICAgICApLFxuICAgICAgbWFwKChhY3Rpb246IFNlYXJjaEFjdGlvbnMpID0+IG5ldyBQYWdpbmF0ZSgxLCBhY3Rpb24uaWQpKVxuICAgIClcbiAgKVxuXG4gIHByaXZhdGUgYWN0aW9uc1dpdGhOZXdSZXN1bHRzJCA9IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoXG4gICAgICBTRVRfU09SVF9CWSxcbiAgICAgIFNFVF9GSUxURVJTLFxuICAgICAgVVBEQVRFX0ZJTFRFUlMsXG4gICAgICBTRVRfU0VBUkNILFxuICAgICAgU0VUX0ZBVk9SSVRFU19PTkxZLFxuICAgICAgU0VUX1NQQVRJQUxfRklMVEVSX0VOQUJMRUQsXG4gICAgICBQQUdJTkFURSxcbiAgICAgIFNFVF9QQUdFX1NJWkVcbiAgICApXG4gIClcblxuICByZXF1ZXN0TmV3UmVzdWx0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnNXaXRoTmV3UmVzdWx0cyQucGlwZShcbiAgICAgIC8vIHRoaXMgd2lsbCBhZ2dyZWdhdGUgYWN0aW9ucyB1bnRpbCB0aGUgZGVib3VuY2VUaW1lIHRpY2tzXG4gICAgICBidWZmZXIodGhpcy5hY3Rpb25zV2l0aE5ld1Jlc3VsdHMkLnBpcGUoZGVib3VuY2VUaW1lKDApKSksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbnM6IFNlYXJjaEFjdGlvbnNbXSkgPT4ge1xuICAgICAgICAvLyBvbmNlIHdlIGhhdmUgYSBsaXN0IG9mIGFjdGlvbnMgZW1pdHRlZCBzaW5jZSBsYXN0IHRpbWUsIHdlIGNhbiBzcGxpdCB0aGVtIGJ5IHNlYXJjaCBpZFxuICAgICAgICBjb25zdCByZXF1ZXN0TmV3UmVzdWx0cyA9IGFjdGlvbnNcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IGFjdGlvbi5pZClcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIGFycmF5KSA9PiBhcnJheS5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXgpXG4gICAgICAgICAgLm1hcCgoc2VhcmNoSWQpID0+IG5ldyBSZXF1ZXN0TmV3UmVzdWx0cyhzZWFyY2hJZCkpXG4gICAgICAgIHJldHVybiBvZiguLi5yZXF1ZXN0TmV3UmVzdWx0cylcbiAgICAgIH0pXG4gICAgKVxuICApXG5cbiAgbG9hZFJlc3VsdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFJFUVVFU1RfTU9SRV9SRVNVTFRTLCBSRVFVRVNUX05FV19SRVNVTFRTKSxcbiAgICAgIHN3aXRjaE1hcFdpdGhTZWFyY2hJZCgoYWN0aW9uOiBTZWFyY2hBY3Rpb25zKSA9PlxuICAgICAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5nZXRNZSgpLnBpcGUoXG4gICAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgICB0aGlzLnN0b3JlJC5waXBlKHNlbGVjdChnZXRTZWFyY2hTdGF0ZVNlYXJjaCwgYWN0aW9uLmlkKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIE5vdGU6IHRoaXMgY291bGQgaGF2ZSBiZWVuIGludGVncmF0ZWQgaW4gd2l0aExhdGVzdEZyb20gYWJvdmUgYnV0XG4gICAgICAgICAgLy8gSSBjb3VsZCBub3QgZ2V0IHRoaXMgdG8gd29yayAobWF5YmUgYSBidWcgaW4gcnhqcz8pXG4gICAgICAgICAgc3dpdGNoTWFwKChbLCBzdGF0ZV0pID0+XG4gICAgICAgICAgICB0aGlzLmZhdm9yaXRlc1NlcnZpY2UubXlGYXZvcml0ZXNVdWlkJC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKGZhdm9yaXRlcykgPT5cbiAgICAgICAgICAgICAgICAgIFtzdGF0ZSwgZmF2b3JpdGVzXSBhcyBbU2VhcmNoU3RhdGVTZWFyY2gsIHN0cmluZ1tdXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKFtzdGF0ZSwgZmF2b3JpdGVzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGF0ZS5wYXJhbXMudXNlU3BhdGlhbEZpbHRlciB8fCAhdGhpcy5maWx0ZXJHZW9tZXRyeSQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFtzdGF0ZSwgZmF2b3JpdGVzLCBudWxsXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlckdlb21ldHJ5JC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKGdlb20pID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdHJhY2UgPSB2YWxpZEdlb0pzb24oZ2VvbSwgdHJ1ZSkgYXMgc3RyaW5nW11cbiAgICAgICAgICAgICAgICAgIGlmICh0cmFjZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodHJhY2Uuam9pbignXFxuJykpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIHdoaWxlIHBhcnNpbmcgdGhlIGdlb21ldHJ5IGZpbHRlclxcbicsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIG1hcCgoZ2VvbSkgPT4gW3N0YXRlLCBmYXZvcml0ZXMsIGdlb21dKSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbc3RhdGUsIGZhdm9yaXRlcywgbnVsbF0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAgICAgKFtzdGF0ZSwgZmF2b3JpdGVzLCBnZW9tZXRyeV06IFtcbiAgICAgICAgICAgICAgU2VhcmNoU3RhdGVTZWFyY2gsXG4gICAgICAgICAgICAgIHN0cmluZ1tdLFxuICAgICAgICAgICAgICBHZW9tZXRyeSB8IG51bGxcbiAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSwgcGFnZVNpemUsIHNvcnQgfSA9IHN0YXRlLnBhcmFtc1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLmNvbmZpZy5maWx0ZXJzLFxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBhcmFtcy5maWx0ZXJzLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMkID0gdGhpcy5yZWNvcmRzUmVwb3NpdG9yeS5zZWFyY2goe1xuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIGxpbWl0OiBwYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGZpZWxkczogc3RhdGUuY29uZmlnLnNvdXJjZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJJZHM6XG4gICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJhbXMuZmF2b3JpdGVzT25seSAmJiBmYXZvcml0ZXNcbiAgICAgICAgICAgICAgICAgICAgPyBmYXZvcml0ZXNcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZmlsdGVyR2VvbWV0cnk6IGdlb21ldHJ5ID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgYWdncmVnYXRpb25zJCA9IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuYWdncmVnYXRlKFxuICAgICAgICAgICAgICAgIHN0YXRlLmNvbmZpZy5hZ2dyZWdhdGlvbnNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cyQucGlwZShjb21iaW5lTGF0ZXN0V2l0aChhZ2dyZWdhdGlvbnMkKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApLFxuICAgICAgICAgIHN3aXRjaE1hcCgoW3Jlc3VsdHMsIGFnZ3JlZ2F0aW9uc10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IFNlYXJjaEFjdGlvbnNbXSA9IFtcbiAgICAgICAgICAgICAgbmV3IENsZWFyRXJyb3IoYWN0aW9uLmlkKSxcbiAgICAgICAgICAgICAgbmV3IEFkZFJlc3VsdHMocmVzdWx0cy5yZWNvcmRzLCBhY3Rpb24uaWQpLFxuICAgICAgICAgICAgICBuZXcgU2V0UmVzdWx0c0FnZ3JlZ2F0aW9ucyhhZ2dyZWdhdGlvbnMsIGFjdGlvbi5pZCksXG4gICAgICAgICAgICAgIG5ldyBTZXRSZXN1bHRzSGl0cyhyZXN1bHRzLmNvdW50LCBhY3Rpb24uaWQpLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBSRVFVRVNUX05FV19SRVNVTFRTKSB7XG4gICAgICAgICAgICAgIGFjdGlvbnMudW5zaGlmdChuZXcgQ2xlYXJSZXN1bHRzKGFjdGlvbi5pZCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2YoLi4uYWN0aW9ucylcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UgfCBFcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKCdzdGF0dXMnIGluIGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihuZXcgU2V0RXJyb3IoZXJyb3Iuc3RhdHVzLCBlcnJvci5tZXNzYWdlLCBhY3Rpb24uaWQpKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG5ldyBTZXRFcnJvcigwLCBlcnJvci5tZXNzYWdlLCBhY3Rpb24uaWQpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcblxuICB1cGRhdGVSZXF1ZXN0QWdncmVnYXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlPFNldEluY2x1ZGVPbkFnZ3JlZ2F0aW9uIHwgUmVxdWVzdE1vcmVPbkFnZ3JlZ2F0aW9uPihcbiAgICAgICAgU0VUX0lOQ0xVREVfT05fQUdHUkVHQVRJT04sXG4gICAgICAgIFJFUVVFU1RfTU9SRV9PTl9BR0dSRUdBVElPTlxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5nZXRNZSgpLnBpcGUoXG4gICAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgICB0aGlzLnN0b3JlJC5waXBlKHNlbGVjdChnZXRTZWFyY2hTdGF0ZVNlYXJjaCwgYWN0aW9uLmlkKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHN3aXRjaE1hcCgoWywgc3RhdGVdKSA9PlxuICAgICAgICAgICAgdGhpcy5yZWNvcmRzUmVwb3NpdG9yeS5hZ2dyZWdhdGUoe1xuICAgICAgICAgICAgICBbYWN0aW9uLmFnZ3JlZ2F0aW9uTmFtZV06XG4gICAgICAgICAgICAgICAgc3RhdGUuY29uZmlnLmFnZ3JlZ2F0aW9uc1thY3Rpb24uYWdncmVnYXRpb25OYW1lXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoKGFnZ3JlZ2F0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXRjaFJlc3VsdHNBZ2dyZWdhdGlvbnMoXG4gICAgICAgICAgICAgIGFjdGlvbi5hZ2dyZWdhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uc1thY3Rpb24uYWdncmVnYXRpb25OYW1lXSxcbiAgICAgICAgICAgICAgYWN0aW9uLmlkXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSAvLyB3YWl0IGZvciBhdXRoIHRvIGJlIGtub3duXG4gICAgKVxuICB9KVxufVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zdGF0ZS9lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDN0UsT0FBTyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxJQUFJLEVBQ0osY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBRW5CLGlCQUFpQixFQUVqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCwwQkFBMEIsRUFDMUIsUUFBUSxFQUVSLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sV0FBVyxDQUFBO0FBRWxCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUUxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0s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QUcsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixNQUFNLENBQ0osMEJBQTBCLEVBQzFCLDJCQUEyQixDQUM1QixFQUNELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUMvQixjQUFjLENBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMxRCxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7Z0JBQy9CLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN0QixLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3BELENBQUMsQ0FDSCxFQUNELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNuQixPQUFPLElBQUksd0JBQXdCLENBQ2pDLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLFlBQVksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQ1YsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQyw0QkFBNEI7YUFDL0IsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBeEtDLENBQUM7OEdBZE8sYUFBYSxnTEFZZCxlQUFlO2tIQVpkLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQVlOLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJ1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgYnVmZmVyLCBjb21iaW5lTGF0ZXN0V2l0aCwgZGVib3VuY2VUaW1lLCBmcm9tLCBvZiwgdGFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgQWRkUmVzdWx0cyxcbiAgQ2xlYXJFcnJvcixcbiAgQ2xlYXJSZXN1bHRzLFxuICBQYWdpbmF0ZSxcbiAgUEFHSU5BVEUsXG4gIFBhdGNoUmVzdWx0c0FnZ3JlZ2F0aW9ucyxcbiAgUkVRVUVTVF9NT1JFX09OX0FHR1JFR0FUSU9OLFxuICBSRVFVRVNUX01PUkVfUkVTVUxUUyxcbiAgUkVRVUVTVF9ORVdfUkVTVUxUUyxcbiAgUmVxdWVzdE1vcmVPbkFnZ3JlZ2F0aW9uLFxuICBSZXF1ZXN0TmV3UmVzdWx0cyxcbiAgU2VhcmNoQWN0aW9ucyxcbiAgU0VUX0ZBVk9SSVRFU19PTkxZLFxuICBTRVRfRklMVEVSUyxcbiAgU0VUX0lOQ0xVREVfT05fQUdHUkVHQVRJT04sXG4gIFNFVF9QQUdFX1NJWkUsXG4gIFNFVF9TRUFSQ0gsXG4gIFNFVF9TT1JUX0JZLFxuICBTRVRfU1BBVElBTF9GSUxURVJfRU5BQkxFRCxcbiAgU2V0RXJyb3IsXG4gIFNldEluY2x1ZGVPbkFnZ3JlZ2F0aW9uLFxuICBTZXRSZXN1bHRzQWdncmVnYXRpb25zLFxuICBTZXRSZXN1bHRzSGl0cyxcbiAgVVBEQVRFX0ZJTFRFUlMsXG59IGZyb20gJy4vYWN0aW9ucydcbmltcG9ydCB7IFNlYXJjaFN0YXRlLCBTZWFyY2hTdGF0ZVNlYXJjaCB9IGZyb20gJy4vcmVkdWNlcidcbmltcG9ydCB7IGdldFNlYXJjaFN0YXRlU2VhcmNoIH0gZnJvbSAnLi9zZWxlY3RvcnMnXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgc3dpdGNoTWFwV2l0aFNlYXJjaElkIH0gZnJvbSAnLi4vdXRpbHMvb3BlcmF0b3JzL3NlYXJjaC5vcGVyYXRvcidcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IEZJTFRFUl9HRU9NRVRSWSB9IGZyb20gJy4uL2ZpbHRlci1nZW9tZXRyeS50b2tlbidcbmltcG9ydCB7IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcmVwb3NpdG9yeS9yZWNvcmRzLXJlcG9zaXRvcnkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgRmF2b3JpdGVzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyB2YWxpZCBhcyB2YWxpZEdlb0pzb24gfSBmcm9tICdnZW9qc29uLXZhbGlkYXRpb24nXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWFyY2hFZmZlY3RzIHtcbiAgZmlsdGVyR2VvbWV0cnkkID0gdGhpcy5maWx0ZXJHZW9tZXRyeVxuICAgID8gZnJvbSh0aGlzLmZpbHRlckdlb21ldHJ5KS5waXBlKHNoYXJlUmVwbGF5KCkpXG4gICAgOiB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgc3RvcmUkOiBTdG9yZTxTZWFyY2hTdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWNvcmRzUmVwb3NpdG9yeTogUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBmYXZvcml0ZXNTZXJ2aWNlOiBGYXZvcml0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZJTFRFUl9HRU9NRVRSWSlcbiAgICBwcml2YXRlIGZpbHRlckdlb21ldHJ5OiBQcm9taXNlPEdlb21ldHJ5PlxuICApIHt9XG5cbiAgcmVzZXRQYWdpbmF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgU0VUX0ZJTFRFUlMsXG4gICAgICAgIFVQREFURV9GSUxURVJTLFxuICAgICAgICBTRVRfU0VBUkNILFxuICAgICAgICBTRVRfRkFWT1JJVEVTX09OTFksXG4gICAgICAgIFNFVF9TUEFUSUFMX0ZJTFRFUl9FTkFCTEVEXG4gICAgICApLFxuICAgICAgbWFwKChhY3Rpb246IFNlYXJjaEFjdGlvbnMpID0+IG5ldyBQYWdpbmF0ZSgxLCBhY3Rpb24uaWQpKVxuICAgIClcbiAgKVxuXG4gIHByaXZhdGUgYWN0aW9uc1dpdGhOZXdSZXN1bHRzJCA9IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoXG4gICAgICBTRVRfU09SVF9CWSxcbiAgICAgIFNFVF9GSUxURVJTLFxuICAgICAgVVBEQVRFX0ZJTFRFUlMsXG4gICAgICBTRVRfU0VBUkNILFxuICAgICAgU0VUX0ZBVk9SSVRFU19PTkxZLFxuICAgICAgU0VUX1NQQVRJQUxfRklMVEVSX0VOQUJMRUQsXG4gICAgICBQQUdJTkFURSxcbiAgICAgIFNFVF9QQUdFX1NJWkVcbiAgICApXG4gIClcblxuICByZXF1ZXN0TmV3UmVzdWx0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnNXaXRoTmV3UmVzdWx0cyQucGlwZShcbiAgICAgIC8vIHRoaXMgd2lsbCBhZ2dyZWdhdGUgYWN0aW9ucyB1bnRpbCB0aGUgZGVib3VuY2VUaW1lIHRpY2tzXG4gICAgICBidWZmZXIodGhpcy5hY3Rpb25zV2l0aE5ld1Jlc3VsdHMkLnBpcGUoZGVib3VuY2VUaW1lKDApKSksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbnM6IFNlYXJjaEFjdGlvbnNbXSkgPT4ge1xuICAgICAgICAvLyBvbmNlIHdlIGhhdmUgYSBsaXN0IG9mIGFjdGlvbnMgZW1pdHRlZCBzaW5jZSBsYXN0IHRpbWUsIHdlIGNhbiBzcGxpdCB0aGVtIGJ5IHNlYXJjaCBpZFxuICAgICAgICBjb25zdCByZXF1ZXN0TmV3UmVzdWx0cyA9IGFjdGlvbnNcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IGFjdGlvbi5pZClcbiAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIGFycmF5KSA9PiBhcnJheS5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXgpXG4gICAgICAgICAgLm1hcCgoc2VhcmNoSWQpID0+IG5ldyBSZXF1ZXN0TmV3UmVzdWx0cyhzZWFyY2hJZCkpXG4gICAgICAgIHJldHVybiBvZiguLi5yZXF1ZXN0TmV3UmVzdWx0cylcbiAgICAgIH0pXG4gICAgKVxuICApXG5cbiAgbG9hZFJlc3VsdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFJFUVVFU1RfTU9SRV9SRVNVTFRTLCBSRVFVRVNUX05FV19SRVNVTFRTKSxcbiAgICAgIHN3aXRjaE1hcFdpdGhTZWFyY2hJZCgoYWN0aW9uOiBTZWFyY2hBY3Rpb25zKSA9PlxuICAgICAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5nZXRNZSgpLnBpcGUoXG4gICAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgICB0aGlzLnN0b3JlJC5waXBlKHNlbGVjdChnZXRTZWFyY2hTdGF0ZVNlYXJjaCwgYWN0aW9uLmlkKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIE5vdGU6IHRoaXMgY291bGQgaGF2ZSBiZWVuIGludGVncmF0ZWQgaW4gd2l0aExhdGVzdEZyb20gYWJvdmUgYnV0XG4gICAgICAgICAgLy8gSSBjb3VsZCBub3QgZ2V0IHRoaXMgdG8gd29yayAobWF5YmUgYSBidWcgaW4gcnhqcz8pXG4gICAgICAgICAgc3dpdGNoTWFwKChbLCBzdGF0ZV0pID0+XG4gICAgICAgICAgICB0aGlzLmZhdm9yaXRlc1NlcnZpY2UubXlGYXZvcml0ZXNVdWlkJC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKGZhdm9yaXRlcykgPT5cbiAgICAgICAgICAgICAgICAgIFtzdGF0ZSwgZmF2b3JpdGVzXSBhcyBbU2VhcmNoU3RhdGVTZWFyY2gsIHN0cmluZ1tdXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKFtzdGF0ZSwgZmF2b3JpdGVzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGF0ZS5wYXJhbXMudXNlU3BhdGlhbEZpbHRlciB8fCAhdGhpcy5maWx0ZXJHZW9tZXRyeSQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFtzdGF0ZSwgZmF2b3JpdGVzLCB1bmRlZmluZWRdKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyR2VvbWV0cnkkLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoZ2VvbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZ2VvbSkgcmV0dXJuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNlID0gdmFsaWRHZW9Kc29uKGdlb20sIHRydWUpIGFzIHN0cmluZ1tdXG4gICAgICAgICAgICAgICAgICBpZiAodHJhY2U/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRyYWNlLmpvaW4oJ1xcbicpKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICdFcnJvciB3aGlsZSBwYXJzaW5nIHRoZSBnZW9tZXRyeSBmaWx0ZXJcXG4nLFxuICAgICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtYXAoKGdlb20pID0+IFtzdGF0ZSwgZmF2b3JpdGVzLCBnZW9tXSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW3N0YXRlLCBmYXZvcml0ZXMsIHVuZGVmaW5lZF0pXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAgICAgKFtzdGF0ZSwgZmF2b3JpdGVzLCBnZW9tZXRyeV06IFtcbiAgICAgICAgICAgICAgU2VhcmNoU3RhdGVTZWFyY2gsXG4gICAgICAgICAgICAgIHN0cmluZ1tdLFxuICAgICAgICAgICAgICBHZW9tZXRyeSB8IHVuZGVmaW5lZFxuICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlLCBwYWdlU2l6ZSwgc29ydCB9ID0gc3RhdGUucGFyYW1zXG4gICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuY29uZmlnLmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucGFyYW1zLmZpbHRlcnMsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyQgPSB0aGlzLnJlY29yZHNSZXBvc2l0b3J5LnNlYXJjaCh7XG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IGN1cnJlbnRQYWdlICogcGFnZVNpemUsXG4gICAgICAgICAgICAgICAgbGltaXQ6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBzdGF0ZS5jb25maWcuc291cmNlLFxuICAgICAgICAgICAgICAgIGZpbHRlcklkczpcbiAgICAgICAgICAgICAgICAgIHN0YXRlLnBhcmFtcy5mYXZvcml0ZXNPbmx5ICYmIGZhdm9yaXRlc1xuICAgICAgICAgICAgICAgICAgICA/IGZhdm9yaXRlc1xuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJHZW9tZXRyeTogZ2VvbWV0cnkgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbnMkID0gdGhpcy5yZWNvcmRzUmVwb3NpdG9yeS5hZ2dyZWdhdGUoXG4gICAgICAgICAgICAgICAgc3RhdGUuY29uZmlnLmFnZ3JlZ2F0aW9uc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHRzJC5waXBlKGNvbWJpbmVMYXRlc3RXaXRoKGFnZ3JlZ2F0aW9ucyQpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgc3dpdGNoTWFwKChbcmVzdWx0cywgYWdncmVnYXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uczogU2VhcmNoQWN0aW9uc1tdID0gW1xuICAgICAgICAgICAgICBuZXcgQ2xlYXJFcnJvcihhY3Rpb24uaWQpLFxuICAgICAgICAgICAgICBuZXcgQWRkUmVzdWx0cyhyZXN1bHRzLnJlY29yZHMsIGFjdGlvbi5pZCksXG4gICAgICAgICAgICAgIG5ldyBTZXRSZXN1bHRzQWdncmVnYXRpb25zKGFnZ3JlZ2F0aW9ucywgYWN0aW9uLmlkKSxcbiAgICAgICAgICAgICAgbmV3IFNldFJlc3VsdHNIaXRzKHJlc3VsdHMuY291bnQsIGFjdGlvbi5pZCksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IFJFUVVFU1RfTkVXX1JFU1VMVFMpIHtcbiAgICAgICAgICAgICAgYWN0aW9ucy51bnNoaWZ0KG5ldyBDbGVhclJlc3VsdHMoYWN0aW9uLmlkKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZiguLi5hY3Rpb25zKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoJ3N0YXR1cycgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG5ldyBTZXRFcnJvcihlcnJvci5zdGF0dXMsIGVycm9yLm1lc3NhZ2UsIGFjdGlvbi5pZCkpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobmV3IFNldEVycm9yKDAsIGVycm9yLm1lc3NhZ2UsIGFjdGlvbi5pZCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIHVwZGF0ZVJlcXVlc3RBZ2dyZWdhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGU8U2V0SW5jbHVkZU9uQWdncmVnYXRpb24gfCBSZXF1ZXN0TW9yZU9uQWdncmVnYXRpb24+KFxuICAgICAgICBTRVRfSU5DTFVERV9PTl9BR0dSRUdBVElPTixcbiAgICAgICAgUkVRVUVTVF9NT1JFX09OX0FHR1JFR0FUSU9OXG4gICAgICApLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMucGxhdGZvcm1TZXJ2aWNlLmdldE1lKCkucGlwZShcbiAgICAgICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgICAgIHRoaXMuc3RvcmUkLnBpcGUoc2VsZWN0KGdldFNlYXJjaFN0YXRlU2VhcmNoLCBhY3Rpb24uaWQpKVxuICAgICAgICAgICksXG4gICAgICAgICAgc3dpdGNoTWFwKChbLCBzdGF0ZV0pID0+XG4gICAgICAgICAgICB0aGlzLnJlY29yZHNSZXBvc2l0b3J5LmFnZ3JlZ2F0ZSh7XG4gICAgICAgICAgICAgIFthY3Rpb24uYWdncmVnYXRpb25OYW1lXTpcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb25maWcuYWdncmVnYXRpb25zW2FjdGlvbi5hZ2dyZWdhdGlvbk5hbWVdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoYWdncmVnYXRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFBhdGNoUmVzdWx0c0FnZ3JlZ2F0aW9ucyhcbiAgICAgICAgICAgICAgYWN0aW9uLmFnZ3JlZ2F0aW9uTmFtZSxcbiAgICAgICAgICAgICAgYWdncmVnYXRpb25zW2FjdGlvbi5hZ2dyZWdhdGlvbk5hbWVdLFxuICAgICAgICAgICAgICBhY3Rpb24uaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApIC8vIHdhaXQgZm9yIGF1dGggdG8gYmUga25vd25cbiAgICApXG4gIH0pXG59XG4iXX0=
@@ -3,7 +3,7 @@ import { select, Store } from '@ngrx/store';
3
3
  import { from, of } from 'rxjs';
4
4
  import { AddSearch, ClearResults, DEFAULT_SEARCH_KEY, Paginate, RequestMoreOnAggregation, RequestMoreResults, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, UpdateConfigAggregations, UpdateFilters, } from './actions';
5
5
  import { currentPage, getError, getFavoritesOnly, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSpatialFilterEnabled, isEndOfResults, totalPages, } from './selectors';
6
- import { FILTER_GEOMETRY } from '../feature-search.module';
6
+ import { FILTER_GEOMETRY } from '../filter-geometry.token';
7
7
  import { catchError, map, shareReplay } from 'rxjs/operators';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@ngrx/store";
@@ -111,6 +111,7 @@ export class SearchFacade {
111
111
  this.store.dispatch(new SetFilters({}, this.searchId));
112
112
  this.store.dispatch(new SetSortBy([], this.searchId));
113
113
  this.store.dispatch(new SetFavoritesOnly(false, this.searchId));
114
+ return this;
114
115
  }
115
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade, deps: [{ token: i1.Store }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
117
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchFacade }); }
@@ -123,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
123
124
  type: Inject,
124
125
  args: [FILTER_GEOMETRY]
125
126
  }] }]; } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zdGF0ZS9zZWFyY2guZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsU0FBUyxFQUNULHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsYUFBYSxHQUNkLE1BQU0sV0FBVyxDQUFBO0FBRWxCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsMkJBQTJCLEVBQzNCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLGFBQWEsQ0FBQTtBQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQVc3RCxNQUFNLE9BQU8sWUFBWTtJQXdCdkIsWUFDVSxLQUF5QixFQUd6QixjQUFpQztRQUhqQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUd6QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFaM0Msc0JBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUMzQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQTtJQVNFLENBQUM7SUFFSixJQUFJLENBQUMsV0FBbUIsa0JBQWtCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLG1GQUFtRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQ25HLENBQUE7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBRTVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMzRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMvRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3hDLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsQ0FDOUMsQ0FBQTtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDekMsTUFBTSxDQUFDLDRCQUE0QixFQUFFLFFBQVEsQ0FBQyxDQUMvQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FDMUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDcEQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBVztRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNyRSxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFXO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksd0JBQXdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQW1CO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3RFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQXFCO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ2pFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQzFELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELHdCQUF3QixDQUFDLEdBQVcsRUFBRSxTQUFpQjtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsSUFBSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDNUQsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDaEUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQXFCO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMzRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBcUI7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQzlELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUF5QjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDekQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBc0I7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDdkUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsdUJBQXVCLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLElBQUksdUJBQXVCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pELENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDekQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsUUFBUSxDQUFDLFVBQWtCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMxRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBbUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3pELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELHVCQUF1QixDQUFDLE9BQWdCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNqRSxDQUFDOzhHQWxLVSxZQUFZLHVDQTJCYixlQUFlO2tIQTNCZCxZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkEyQk4sUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBBZGRTZWFyY2gsXG4gIENsZWFyUmVzdWx0cyxcbiAgREVGQVVMVF9TRUFSQ0hfS0VZLFxuICBQYWdpbmF0ZSxcbiAgUmVxdWVzdE1vcmVPbkFnZ3JlZ2F0aW9uLFxuICBSZXF1ZXN0TW9yZVJlc3VsdHMsXG4gIFNldENvbmZpZ0FnZ3JlZ2F0aW9ucyxcbiAgU2V0Q29uZmlnRmlsdGVycyxcbiAgU2V0Q29uZmlnUmVxdWVzdEZpZWxkcyxcbiAgU2V0RmF2b3JpdGVzT25seSxcbiAgU2V0RmlsdGVycyxcbiAgU2V0SW5jbHVkZU9uQWdncmVnYXRpb24sXG4gIFNldFBhZ2VTaXplLFxuICBTZXRSZXN1bHRzTGF5b3V0LFxuICBTZXRTZWFyY2gsXG4gIFNldFNvcnRCeSxcbiAgU2V0U3BhdGlhbEZpbHRlckVuYWJsZWQsXG4gIFVwZGF0ZUNvbmZpZ0FnZ3JlZ2F0aW9ucyxcbiAgVXBkYXRlRmlsdGVycyxcbn0gZnJvbSAnLi9hY3Rpb25zJ1xuaW1wb3J0IHsgU2VhcmNoRXJyb3IsIFNlYXJjaFN0YXRlLCBTZWFyY2hTdGF0ZVBhcmFtcyB9IGZyb20gJy4vcmVkdWNlcidcbmltcG9ydCB7XG4gIGN1cnJlbnRQYWdlLFxuICBnZXRFcnJvcixcbiAgZ2V0RmF2b3JpdGVzT25seSxcbiAgZ2V0UGFnZVNpemUsXG4gIGdldFNlYXJjaENvbmZpZ0FnZ3JlZ2F0aW9ucyxcbiAgZ2V0U2VhcmNoRmlsdGVycyxcbiAgZ2V0U2VhcmNoUmVzdWx0cyxcbiAgZ2V0U2VhcmNoUmVzdWx0c0FnZ3JlZ2F0aW9ucyxcbiAgZ2V0U2VhcmNoUmVzdWx0c0hpdHMsXG4gIGdldFNlYXJjaFJlc3VsdHNMYXlvdXQsXG4gIGdldFNlYXJjaFJlc3VsdHNMb2FkaW5nLFxuICBnZXRTZWFyY2hTb3J0QnksXG4gIGdldFNwYXRpYWxGaWx0ZXJFbmFibGVkLFxuICBpc0VuZE9mUmVzdWx0cyxcbiAgdG90YWxQYWdlcyxcbn0gZnJvbSAnLi9zZWxlY3RvcnMnXG5pbXBvcnQgeyBGSUxURVJfR0VPTUVUUlkgfSBmcm9tICcuLi9mZWF0dXJlLXNlYXJjaC5tb2R1bGUnXG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbnMsXG4gIEFnZ3JlZ2F0aW9uc1BhcmFtcyxcbiAgRmllbGRGaWx0ZXJzLFxuICBGaWVsZE5hbWUsXG4gIFNvcnRCeUZpZWxkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VhcmNoRmFjYWRlIHtcbiAgcmVzdWx0cyQ6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBsYXlvdXQkOiBPYnNlcnZhYmxlPHN0cmluZz5cbiAgc29ydEJ5JDogT2JzZXJ2YWJsZTxTb3J0QnlGaWVsZD5cbiAgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBpc0VuZE9mUmVzdWx0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgdG90YWxQYWdlcyQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBjdXJyZW50UGFnZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBwYWdlU2l6ZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBzZWFyY2hGaWx0ZXJzJDogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+XG4gIGNvbmZpZ0FnZ3JlZ2F0aW9ucyQ6IE9ic2VydmFibGU8QWdncmVnYXRpb25zUGFyYW1zPlxuICByZXN1bHRzQWdncmVnYXRpb25zJDogT2JzZXJ2YWJsZTxBZ2dyZWdhdGlvbnM+XG4gIHJlc3VsdHNIaXRzJDogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGZhdm9yaXRlc09ubHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIGVycm9yJDogT2JzZXJ2YWJsZTxTZWFyY2hFcnJvcj5cbiAgc3BhdGlhbEZpbHRlckVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIGhhc1NwYXRpYWxGaWx0ZXIkID0gZnJvbSh0aGlzLmZpbHRlckdlb21ldHJ5ID8/IG9mKG51bGwpKS5waXBlKFxuICAgIG1hcCgoZ2VvbSkgPT4gISFnZW9tKSxcbiAgICBjYXRjaEVycm9yKCgpID0+IG9mKGZhbHNlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIHNlYXJjaElkOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxTZWFyY2hTdGF0ZT4sXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZJTFRFUl9HRU9NRVRSWSlcbiAgICBwcml2YXRlIGZpbHRlckdlb21ldHJ5OiBQcm9taXNlPEdlb21ldHJ5PlxuICApIHt9XG5cbiAgaW5pdChzZWFyY2hJZDogc3RyaW5nID0gREVGQVVMVF9TRUFSQ0hfS0VZKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGlzIFNlYXJjaEZhY2FkZSBpbnN0YW5jZSB3YXMgYWxyZWFkeSBpbml0aWFsaXplZCB3aXRoIHRoZSBmb2xsb3dpbmcgc2VhcmNoSWQ6ICR7dGhpcy5zZWFyY2hJZH1gXG4gICAgICApXG5cbiAgICB0aGlzLnNlYXJjaElkID0gc2VhcmNoSWRcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBBZGRTZWFyY2goc2VhcmNoSWQpKVxuXG4gICAgdGhpcy5yZXN1bHRzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0U2VhcmNoUmVzdWx0cywgc2VhcmNoSWQpKVxuICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0U2VhcmNoUmVzdWx0c0xheW91dCwgc2VhcmNoSWQpKVxuICAgIHRoaXMuaXNMb2FkaW5nJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0U2VhcmNoUmVzdWx0c0xvYWRpbmcsIHNlYXJjaElkKSlcbiAgICB0aGlzLnNlYXJjaEZpbHRlcnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRTZWFyY2hGaWx0ZXJzLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5yZXN1bHRzSGl0cyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGdldFNlYXJjaFJlc3VsdHNIaXRzLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5pc0VuZE9mUmVzdWx0cyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGlzRW5kT2ZSZXN1bHRzLCBzZWFyY2hJZCkpXG4gICAgdGhpcy50b3RhbFBhZ2VzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodG90YWxQYWdlcywgc2VhcmNoSWQpKVxuICAgIHRoaXMuY3VycmVudFBhZ2UkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChjdXJyZW50UGFnZSwgc2VhcmNoSWQpKVxuICAgIHRoaXMucGFnZVNpemUkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRQYWdlU2l6ZSwgc2VhcmNoSWQpKVxuICAgIHRoaXMuY29uZmlnQWdncmVnYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChnZXRTZWFyY2hDb25maWdBZ2dyZWdhdGlvbnMsIHNlYXJjaElkKVxuICAgIClcbiAgICB0aGlzLnJlc3VsdHNBZ2dyZWdhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KGdldFNlYXJjaFJlc3VsdHNBZ2dyZWdhdGlvbnMsIHNlYXJjaElkKVxuICAgIClcbiAgICB0aGlzLnNvcnRCeSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGdldFNlYXJjaFNvcnRCeSwgc2VhcmNoSWQpKVxuICAgIHRoaXMuZmF2b3JpdGVzT25seSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGdldEZhdm9yaXRlc09ubHksIHNlYXJjaElkKSlcbiAgICB0aGlzLmVycm9yJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0RXJyb3IsIHNlYXJjaElkKSlcbiAgICB0aGlzLnNwYXRpYWxGaWx0ZXJFbmFibGVkJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChnZXRTcGF0aWFsRmlsdGVyRW5hYmxlZCwgc2VhcmNoSWQpXG4gICAgKVxuICB9XG5cbiAgY2xlYXJSZXN1bHRzKCk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJSZXN1bHRzKHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRDb25maWdBZ2dyZWdhdGlvbnMoY29uZmlnOiBhbnkpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldENvbmZpZ0FnZ3JlZ2F0aW9ucyhjb25maWcsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1cGRhdGVDb25maWdBZ2dyZWdhdGlvbnMoY29uZmlnOiBhbnkpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwZGF0ZUNvbmZpZ0FnZ3JlZ2F0aW9ucyhjb25maWcsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRDb25maWdSZXF1ZXN0RmllbGRzKGZpZWxkczogRmllbGROYW1lW10pOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldENvbmZpZ1JlcXVlc3RGaWVsZHMoZmllbGRzLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0Q29uZmlnRmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldENvbmZpZ0ZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHJlcXVlc3RNb3JlUmVzdWx0cygpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlcXVlc3RNb3JlUmVzdWx0cyh0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmVxdWVzdE1vcmVPbkFnZ3JlZ2F0aW9uKGtleTogc3RyaW5nLCBpbmNyZW1lbnQ6IG51bWJlcik6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIG5ldyBSZXF1ZXN0TW9yZU9uQWdncmVnYXRpb24oa2V5LCBpbmNyZW1lbnQsIHRoaXMuc2VhcmNoSWQpXG4gICAgKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRSZXN1bHRzTGF5b3V0KGxheW91dDogc3RyaW5nKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRSZXN1bHRzTGF5b3V0KGxheW91dCwgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldEZpbHRlcnMoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRGaWx0ZXJzKGZpbHRlcnMsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1cGRhdGVGaWx0ZXJzKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlRmlsdGVycyhmaWx0ZXJzLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0U2VhcmNoKHBhcmFtczogU2VhcmNoU3RhdGVQYXJhbXMpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNlYXJjaChwYXJhbXMsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRGYXZvcml0ZXNPbmx5KGZhdm9yaXRlc09ubHk6IGJvb2xlYW4pOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEZhdm9yaXRlc09ubHkoZmF2b3JpdGVzT25seSwgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldEluY2x1ZGVPbkFnZ3JlZ2F0aW9uKGtleTogc3RyaW5nLCBpbmNsdWRlOiBzdHJpbmcpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgU2V0SW5jbHVkZU9uQWdncmVnYXRpb24oa2V5LCBpbmNsdWRlLCB0aGlzLnNlYXJjaElkKVxuICAgIClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0UGFnZVNpemUoc2l6ZTogbnVtYmVyKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRQYWdlU2l6ZShzaXplLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcGFnaW5hdGUocGFnZU51bWJlcjogbnVtYmVyKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQYWdpbmF0ZShwYWdlTnVtYmVyLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2Nyb2xsKCk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVxdWVzdE1vcmVSZXN1bHRzKHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRTb3J0Qnkoc29ydEJ5OiBTb3J0QnlGaWVsZCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNvcnRCeShzb3J0QnksIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRTcGF0aWFsRmlsdGVyRW5hYmxlZChlbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U3BhdGlhbEZpbHRlckVuYWJsZWQoZW5hYmxlZCwgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFBhZ2luYXRlKDEsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEZpbHRlcnMoe30sIHRoaXMuc2VhcmNoSWQpKVxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNvcnRCeShbXSwgdGhpcy5zZWFyY2hJZCkpXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0RmF2b3JpdGVzT25seShmYWxzZSwgdGhpcy5zZWFyY2hJZCkpXG4gIH1cbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zdGF0ZS9zZWFyY2guZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsU0FBUyxFQUNULHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsYUFBYSxHQUNkLE1BQU0sV0FBVyxDQUFBO0FBRWxCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsMkJBQTJCLEVBQzNCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzVCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLGFBQWEsQ0FBQTtBQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztB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QUF1QixDQUFDLE9BQWdCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMvRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7OEdBbktVLFlBQVksdUNBMkJiLGVBQWU7a0hBM0JkLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVU7OzBCQTJCTixRQUFROzswQkFDUixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFkZFNlYXJjaCxcbiAgQ2xlYXJSZXN1bHRzLFxuICBERUZBVUxUX1NFQVJDSF9LRVksXG4gIFBhZ2luYXRlLFxuICBSZXF1ZXN0TW9yZU9uQWdncmVnYXRpb24sXG4gIFJlcXVlc3RNb3JlUmVzdWx0cyxcbiAgU2V0Q29uZmlnQWdncmVnYXRpb25zLFxuICBTZXRDb25maWdGaWx0ZXJzLFxuICBTZXRDb25maWdSZXF1ZXN0RmllbGRzLFxuICBTZXRGYXZvcml0ZXNPbmx5LFxuICBTZXRGaWx0ZXJzLFxuICBTZXRJbmNsdWRlT25BZ2dyZWdhdGlvbixcbiAgU2V0UGFnZVNpemUsXG4gIFNldFJlc3VsdHNMYXlvdXQsXG4gIFNldFNlYXJjaCxcbiAgU2V0U29ydEJ5LFxuICBTZXRTcGF0aWFsRmlsdGVyRW5hYmxlZCxcbiAgVXBkYXRlQ29uZmlnQWdncmVnYXRpb25zLFxuICBVcGRhdGVGaWx0ZXJzLFxufSBmcm9tICcuL2FjdGlvbnMnXG5pbXBvcnQgeyBTZWFyY2hFcnJvciwgU2VhcmNoU3RhdGUsIFNlYXJjaFN0YXRlUGFyYW1zIH0gZnJvbSAnLi9yZWR1Y2VyJ1xuaW1wb3J0IHtcbiAgY3VycmVudFBhZ2UsXG4gIGdldEVycm9yLFxuICBnZXRGYXZvcml0ZXNPbmx5LFxuICBnZXRQYWdlU2l6ZSxcbiAgZ2V0U2VhcmNoQ29uZmlnQWdncmVnYXRpb25zLFxuICBnZXRTZWFyY2hGaWx0ZXJzLFxuICBnZXRTZWFyY2hSZXN1bHRzLFxuICBnZXRTZWFyY2hSZXN1bHRzQWdncmVnYXRpb25zLFxuICBnZXRTZWFyY2hSZXN1bHRzSGl0cyxcbiAgZ2V0U2VhcmNoUmVzdWx0c0xheW91dCxcbiAgZ2V0U2VhcmNoUmVzdWx0c0xvYWRpbmcsXG4gIGdldFNlYXJjaFNvcnRCeSxcbiAgZ2V0U3BhdGlhbEZpbHRlckVuYWJsZWQsXG4gIGlzRW5kT2ZSZXN1bHRzLFxuICB0b3RhbFBhZ2VzLFxufSBmcm9tICcuL3NlbGVjdG9ycydcbmltcG9ydCB7IEZJTFRFUl9HRU9NRVRSWSB9IGZyb20gJy4uL2ZpbHRlci1nZW9tZXRyeS50b2tlbidcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIEZpZWxkTmFtZSxcbiAgU29ydEJ5RmllbGQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWFyY2hGYWNhZGUge1xuICByZXN1bHRzJDogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG4gIGxheW91dCQ6IE9ic2VydmFibGU8c3RyaW5nPlxuICBzb3J0QnkkOiBPYnNlcnZhYmxlPFNvcnRCeUZpZWxkPlxuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIGlzRW5kT2ZSZXN1bHRzJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICB0b3RhbFBhZ2VzJDogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGN1cnJlbnRQYWdlJDogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIHBhZ2VTaXplJDogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIHNlYXJjaEZpbHRlcnMkOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz5cbiAgY29uZmlnQWdncmVnYXRpb25zJDogT2JzZXJ2YWJsZTxBZ2dyZWdhdGlvbnNQYXJhbXM+XG4gIHJlc3VsdHNBZ2dyZWdhdGlvbnMkOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz5cbiAgcmVzdWx0c0hpdHMkOiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgZmF2b3JpdGVzT25seSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgZXJyb3IkOiBPYnNlcnZhYmxlPFNlYXJjaEVycm9yPlxuICBzcGF0aWFsRmlsdGVyRW5hYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgaGFzU3BhdGlhbEZpbHRlciQgPSBmcm9tKHRoaXMuZmlsdGVyR2VvbWV0cnkgPz8gb2YobnVsbCkpLnBpcGUoXG4gICAgbWFwKChnZW9tKSA9PiAhIWdlb20pLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgc2VhcmNoSWQ6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFNlYXJjaFN0YXRlPixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRklMVEVSX0dFT01FVFJZKVxuICAgIHByaXZhdGUgZmlsdGVyR2VvbWV0cnk6IFByb21pc2U8R2VvbWV0cnk+XG4gICkge31cblxuICBpbml0KHNlYXJjaElkOiBzdHJpbmcgPSBERUZBVUxUX1NFQVJDSF9LRVkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoaXMgU2VhcmNoRmFjYWRlIGluc3RhbmNlIHdhcyBhbHJlYWR5IGluaXRpYWxpemVkIHdpdGggdGhlIGZvbGxvd2luZyBzZWFyY2hJZDogJHt0aGlzLnNlYXJjaElkfWBcbiAgICAgIClcblxuICAgIHRoaXMuc2VhcmNoSWQgPSBzZWFyY2hJZFxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEFkZFNlYXJjaChzZWFyY2hJZCkpXG5cbiAgICB0aGlzLnJlc3VsdHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRTZWFyY2hSZXN1bHRzLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5sYXlvdXQkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRTZWFyY2hSZXN1bHRzTGF5b3V0LCBzZWFyY2hJZCkpXG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRTZWFyY2hSZXN1bHRzTG9hZGluZywgc2VhcmNoSWQpKVxuICAgIHRoaXMuc2VhcmNoRmlsdGVycyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGdldFNlYXJjaEZpbHRlcnMsIHNlYXJjaElkKSlcbiAgICB0aGlzLnJlc3VsdHNIaXRzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0U2VhcmNoUmVzdWx0c0hpdHMsIHNlYXJjaElkKSlcbiAgICB0aGlzLmlzRW5kT2ZSZXN1bHRzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoaXNFbmRPZlJlc3VsdHMsIHNlYXJjaElkKSlcbiAgICB0aGlzLnRvdGFsUGFnZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0b3RhbFBhZ2VzLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5jdXJyZW50UGFnZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGN1cnJlbnRQYWdlLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5wYWdlU2l6ZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGdldFBhZ2VTaXplLCBzZWFyY2hJZCkpXG4gICAgdGhpcy5jb25maWdBZ2dyZWdhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KGdldFNlYXJjaENvbmZpZ0FnZ3JlZ2F0aW9ucywgc2VhcmNoSWQpXG4gICAgKVxuICAgIHRoaXMucmVzdWx0c0FnZ3JlZ2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICBzZWxlY3QoZ2V0U2VhcmNoUmVzdWx0c0FnZ3JlZ2F0aW9ucywgc2VhcmNoSWQpXG4gICAgKVxuICAgIHRoaXMuc29ydEJ5JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0U2VhcmNoU29ydEJ5LCBzZWFyY2hJZCkpXG4gICAgdGhpcy5mYXZvcml0ZXNPbmx5JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZ2V0RmF2b3JpdGVzT25seSwgc2VhcmNoSWQpKVxuICAgIHRoaXMuZXJyb3IkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChnZXRFcnJvciwgc2VhcmNoSWQpKVxuICAgIHRoaXMuc3BhdGlhbEZpbHRlckVuYWJsZWQkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KGdldFNwYXRpYWxGaWx0ZXJFbmFibGVkLCBzZWFyY2hJZClcbiAgICApXG4gIH1cblxuICBjbGVhclJlc3VsdHMoKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDbGVhclJlc3VsdHModGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldENvbmZpZ0FnZ3JlZ2F0aW9ucyhjb25maWc6IGFueSk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q29uZmlnQWdncmVnYXRpb25zKGNvbmZpZywgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHVwZGF0ZUNvbmZpZ0FnZ3JlZ2F0aW9ucyhjb25maWc6IGFueSk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlQ29uZmlnQWdncmVnYXRpb25zKGNvbmZpZywgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldENvbmZpZ1JlcXVlc3RGaWVsZHMoZmllbGRzOiBGaWVsZE5hbWVbXSk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q29uZmlnUmVxdWVzdEZpZWxkcyhmaWVsZHMsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRDb25maWdGaWx0ZXJzKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q29uZmlnRmlsdGVycyhmaWx0ZXJzLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmVxdWVzdE1vcmVSZXN1bHRzKCk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUmVxdWVzdE1vcmVSZXN1bHRzKHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICByZXF1ZXN0TW9yZU9uQWdncmVnYXRpb24oa2V5OiBzdHJpbmcsIGluY3JlbWVudDogbnVtYmVyKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgbmV3IFJlcXVlc3RNb3JlT25BZ2dyZWdhdGlvbihrZXksIGluY3JlbWVudCwgdGhpcy5zZWFyY2hJZClcbiAgICApXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldFJlc3VsdHNMYXlvdXQobGF5b3V0OiBzdHJpbmcpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFJlc3VsdHNMYXlvdXQobGF5b3V0LCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0RmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcnMoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVGaWx0ZXJzKGZpbHRlcnMsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRTZWFyY2gocGFyYW1zOiBTZWFyY2hTdGF0ZVBhcmFtcyk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U2VhcmNoKHBhcmFtcywgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldEZhdm9yaXRlc09ubHkoZmF2b3JpdGVzT25seTogYm9vbGVhbik6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0RmF2b3JpdGVzT25seShmYXZvcml0ZXNPbmx5LCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0SW5jbHVkZU9uQWdncmVnYXRpb24oa2V5OiBzdHJpbmcsIGluY2x1ZGU6IHN0cmluZyk6IFNlYXJjaEZhY2FkZSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIG5ldyBTZXRJbmNsdWRlT25BZ2dyZWdhdGlvbihrZXksIGluY2x1ZGUsIHRoaXMuc2VhcmNoSWQpXG4gICAgKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZXRQYWdlU2l6ZShzaXplOiBudW1iZXIpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFBhZ2VTaXplKHNpemUsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBwYWdpbmF0ZShwYWdlTnVtYmVyOiBudW1iZXIpOiBTZWFyY2hGYWNhZGUge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFBhZ2luYXRlKHBhZ2VOdW1iZXIsIHRoaXMuc2VhcmNoSWQpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzY3JvbGwoKTogU2VhcmNoRmFjYWRlIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXF1ZXN0TW9yZVJlc3VsdHModGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldFNvcnRCeShzb3J0Qnk6IFNvcnRCeUZpZWxkKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U29ydEJ5KHNvcnRCeSwgdGhpcy5zZWFyY2hJZCkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldFNwYXRpYWxGaWx0ZXJFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTcGF0aWFsRmlsdGVyRW5hYmxlZChlbmFibGVkLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUGFnaW5hdGUoMSwgdGhpcy5zZWFyY2hJZCkpXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0RmlsdGVycyh7fSwgdGhpcy5zZWFyY2hJZCkpXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U29ydEJ5KFtdLCB0aGlzLnNlYXJjaElkKSlcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRGYXZvcml0ZXNPbmx5KGZhbHNlLCB0aGlzLnNlYXJjaElkKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG4iXX0=
@@ -1,19 +1,20 @@
1
1
  import { firstValueFrom, of, switchMap } from 'rxjs';
2
- import { catchError, map, shareReplay } from 'rxjs/operators';
2
+ import { map } from 'rxjs/operators';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
4
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
5
5
  import { OrganizationsServiceInterface } from '../../../../../../../libs/common/domain/src/lib/organizations.service.interface';
6
6
  import { RecordsRepositoryInterface } from '../../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
7
7
  import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface';
8
- import { ElasticsearchService } from '../../../../../../../libs/api/repository/src';
8
+ import { ElasticsearchService, METADATA_LANGUAGE, } from '../../../../../../../libs/api/repository/src';
9
9
  import { LangService } from '../../../../../../../libs/util/i18n/src';
10
10
  export class AbstractSearchField {
11
11
  }
12
12
  export class SimpleSearchField {
13
- constructor(esFieldName, order = 'asc', injector) {
13
+ constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
14
14
  this.esFieldName = esFieldName;
15
- this.order = order;
16
15
  this.injector = injector;
16
+ this.order = order;
17
+ this.orderType = orderType;
17
18
  this.repository = this.injector.get(RecordsRepositoryInterface);
18
19
  // FIXME: this is required to register runtime fields; abstract this as well
19
20
  this.esService = this.injector.get(ElasticsearchService);
@@ -24,12 +25,12 @@ export class SimpleSearchField {
24
25
  type: 'terms',
25
26
  field: this.esFieldName,
26
27
  limit: 1000,
27
- sort: [this.order, 'key'],
28
+ sort: [this.order, this.orderType],
28
29
  },
29
30
  };
30
31
  }
31
32
  async getBucketLabel(bucket) {
32
- return bucket.term;
33
+ return bucket.term.toString();
33
34
  }
34
35
  getAvailableValues() {
35
36
  return this.repository.aggregate(this.getAggregations()).pipe(map((response) => response[this.esFieldName].buckets || []), switchMap((buckets) => {
@@ -57,9 +58,13 @@ export class SimpleSearchField {
57
58
  return of(values);
58
59
  }
59
60
  }
60
- export class KeySearchField extends SimpleSearchField {
61
- constructor() {
62
- super(...arguments);
61
+ export class TranslatedSearchField extends SimpleSearchField {
62
+ constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
63
+ super(esFieldName, injector, order, orderType);
64
+ this.esFieldName = esFieldName;
65
+ this.injector = injector;
66
+ this.order = order;
67
+ this.orderType = orderType;
63
68
  this.platformService = this.injector.get(PlatformServiceInterface);
64
69
  }
65
70
  async getTranslation(key) {
@@ -69,26 +74,36 @@ export class KeySearchField extends SimpleSearchField {
69
74
  return (await this.getTranslation(bucket.term)) || bucket.term;
70
75
  }
71
76
  getAvailableValues() {
77
+ if (this.orderType === 'count')
78
+ return super.getAvailableValues();
72
79
  // sort values by alphabetical order
73
80
  return super
74
81
  .getAvailableValues()
75
82
  .pipe(map((values) => values.sort((a, b) => new Intl.Collator().compare(a.label, b.label))));
76
83
  }
77
84
  }
78
- export class ThesaurusField extends KeySearchField {
79
- constructor(esFieldName, thesaurusName, order = 'asc', injector) {
80
- super(esFieldName, order, injector);
81
- this.thesaurusName = thesaurusName;
85
+ /**
86
+ * This search field will either target the `.default` field, or a specific `.langxyz` field according
87
+ * to the defined METADATA_LANGUAGE token
88
+ * The provided ES field name should not include any prefix such as `.langeng`
89
+ */
90
+ export class MultilingualSearchField extends SimpleSearchField {
91
+ constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
92
+ super(esFieldName, injector, order, orderType);
93
+ this.esFieldName = esFieldName;
94
+ this.injector = injector;
95
+ this.order = order;
96
+ this.orderType = orderType;
82
97
  this.langService = this.injector.get(LangService);
83
- this.thesaurus$ = this.platformService
84
- .getThesaurusByLang(this.thesaurusName, this.langService.iso3)
85
- .pipe(catchError(() => {
86
- console.warn('Error while loading thesaurus language package');
87
- return of([]);
88
- }), shareReplay(1));
89
- }
90
- async getTranslation(key) {
91
- return firstValueFrom(this.thesaurus$.pipe(map((thesaurus) => thesaurus.find((keyword) => keyword.key === key)?.label)));
98
+ this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
99
+ // note: we're excluding the metadata language "current" value because that would produce
100
+ // permalinks that might not work for different users
101
+ if (this.searchLanguage && this.searchLanguage !== 'current') {
102
+ this.esFieldName += `.lang${this.searchLanguage}`;
103
+ }
104
+ else {
105
+ this.esFieldName += '.default';
106
+ }
92
107
  }
93
108
  }
94
109
  export class FullTextSearchField {
@@ -108,7 +123,7 @@ marker('search.filters.isSpatial.yes');
108
123
  marker('search.filters.isSpatial.no');
109
124
  export class IsSpatialSearchField extends SimpleSearchField {
110
125
  constructor(injector) {
111
- super('isSpatial', 'asc', injector);
126
+ super('isSpatial', injector, 'asc');
112
127
  this.translateService = this.injector.get(TranslateService);
113
128
  this.esService.registerRuntimeField('isSpatial', `String result = 'no';
114
129
  String formats = doc.format.join('|').toLowerCase();
@@ -158,7 +173,7 @@ marker('search.filters.license.unknown');
158
173
  // Note: values are inspired from https://doc.data.gouv.fr/moissonnage/licences/
159
174
  export class LicenseSearchField extends SimpleSearchField {
160
175
  constructor(injector) {
161
- super('license', 'asc', injector);
176
+ super('license', injector, 'asc');
162
177
  this.translateService = this.injector.get(TranslateService);
163
178
  this.esService.registerRuntimeField('license', `String raw = '';
164
179
  if (doc.containsKey('licenseObject.default.keyword') && doc['licenseObject.default.keyword'].length > 0)
@@ -242,10 +257,10 @@ export class OrganizationSearchField {
242
257
  }
243
258
  export class OwnerSearchField extends SimpleSearchField {
244
259
  constructor(injector) {
245
- super('owner', 'asc', injector);
260
+ super('owner', injector, 'asc');
246
261
  }
247
262
  getAvailableValues() {
248
263
  return of([]);
249
264
  }
250
265
  }
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBTyxNQUFNLE1BQU0sQ0FBQTtBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUZBQWlGLENBQUE7QUFDL0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUZBQXlGLENBQUE7QUFDcEksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEVBQTRFLENBQUE7QUFRckgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBUXJFLE1BQU0sT0FBZ0IsbUJBQW1CO0NBSXhDO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNZLFdBQW1CLEVBQ25CLFFBQXdCLEtBQUssRUFDN0IsUUFBa0I7UUFGbEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVJwQixlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUVwRSw0RUFBNEU7UUFDbEUsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9C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RUFDRCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDckUsQ0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBQ0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGlCQUFpQjtJQUNyRCxZQUFZLFFBQWtCO1FBQzVCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9vcmdhbml6YXRpb25zLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9yZXBvc2l0b3J5L3JlY29yZHMtcmVwb3NpdG9yeS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uQnVja2V0cyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbixcbiAgRmllbGRGaWx0ZXJzLFxuICBUZXJtQnVja2V0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbmV4cG9ydCB0eXBlIEZpZWxkVmFsdWUgPSBzdHJpbmcgfCBudW1iZXJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRBdmFpbGFibGVWYWx1ZSB7XG4gIHZhbHVlOiBGaWVsZFZhbHVlXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBhYnN0cmFjdCBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+XG4gIGFic3RyYWN0IGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz5cbiAgYWJzdHJhY3QgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPlxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSB0aGlzLmluamVjdG9yLmdldChSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSlcblxuICAvLyBGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBydW50aW1lIGZpZWxkczsgYWJzdHJhY3QgdGhpcyBhcyB3ZWxsXG4gIHByb3RlY3RlZCBlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChFbGFzdGljc2VhcmNoU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgZmllbGQ6IHRoaXMuZXNGaWVsZE5hbWUsXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBzb3J0OiBbdGhpcy5vcmRlciwgJ2tleSddLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYnVja2V0LnRlcm0gYXMgc3RyaW5nXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LmFnZ3JlZ2F0ZSh0aGlzLmdldEFnZ3JlZ2F0aW9ucygpKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAocmVzcG9uc2UpID0+XG4gICAgICAgICAgKHJlc3BvbnNlW3RoaXMuZXNGaWVsZE5hbWVdIGFzIEFnZ3JlZ2F0aW9uQnVja2V0cykuYnVja2V0cyB8fCBbXVxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoYnVja2V0czogVGVybUJ1Y2tldFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1Y2tldFByb21pc2VzID0gYnVja2V0cy5tYXAoYXN5bmMgKGJ1Y2tldCkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogYCR7YXdhaXQgdGhpcy5nZXRCdWNrZXRMYWJlbChidWNrZXQpfSAoJHtidWNrZXQuY291bnR9KWAsXG4gICAgICAgICAgdmFsdWU6IGJ1Y2tldC50ZXJtLnRvU3RyaW5nKCksXG4gICAgICAgIH0pKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoYnVja2V0UHJvbWlzZXMpXG4gICAgICB9KVxuICAgIClcbiAgfVxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgW3RoaXMuZXNGaWVsZE5hbWVdOiB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFt2YWwudG9TdHJpbmcoKV06IHRydWUgfVxuICAgICAgfSwge30pLFxuICAgIH0pXG4gIH1cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVyc1t0aGlzLmVzRmllbGROYW1lXVxuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb2YoW10pXG4gICAgY29uc3QgdmFsdWVzID1cbiAgICAgIHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnXG4gICAgICAgID8gW2ZpbHRlcl1cbiAgICAgICAgOiBPYmplY3Qua2V5cyhmaWx0ZXIpLmZpbHRlcigodikgPT4gZmlsdGVyW3ZdKVxuICAgIHJldHVybiBvZih2YWx1ZXMpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleVNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcm90ZWN0ZWQgcGxhdGZvcm1TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlKVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYXRmb3JtU2VydmljZS50cmFuc2xhdGVLZXkoa2V5KSlcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb24oYnVja2V0LnRlcm0pKSB8fCBidWNrZXQudGVybVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgLy8gc29ydCB2YWx1ZXMgYnkgYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgcmV0dXJuIHN1cGVyXG4gICAgICAuZ2V0QXZhaWxhYmxlVmFsdWVzKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlcykgPT5cbiAgICAgICAgICB2YWx1ZXMuc29ydCgoYSwgYikgPT4gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlKGEubGFiZWwsIGIubGFiZWwpKVxuICAgICAgICApXG4gICAgICApXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRoZXNhdXJ1c0ZpZWxkIGV4dGVuZHMgS2V5U2VhcmNoRmllbGQge1xuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTGFuZ1NlcnZpY2UpXG4gIHByaXZhdGUgdGhlc2F1cnVzJCA9IHRoaXMucGxhdGZvcm1TZXJ2aWNlXG4gICAgLmdldFRoZXNhdXJ1c0J5TGFuZyh0aGlzLnRoZXNhdXJ1c05hbWUsIHRoaXMubGFuZ1NlcnZpY2UuaXNvMylcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHdoaWxlIGxvYWRpbmcgdGhlc2F1cnVzIGxhbmd1YWdlIHBhY2thZ2UnKVxuICAgICAgICByZXR1cm4gb2YoW10pXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHRoZXNhdXJ1c05hbWU6IHN0cmluZyxcbiAgICBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIG9yZGVyLCBpbmplY3RvcilcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnRoZXNhdXJ1cyQucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICh0aGVzYXVydXMpID0+IHRoZXNhdXJ1cy5maW5kKChrZXl3b3JkKSA9PiBrZXl3b3JkLmtleSA9PT0ga2V5KT8ubGFiZWxcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnVsbFRleHRTZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoW10pXG4gIH1cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGFueTogdmFsdWVzWzBdIGFzIHN0cmluZyxcbiAgICB9KVxuICB9XG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIHJldHVybiBvZihmaWx0ZXJzLmFueSA/IFtmaWx0ZXJzLmFueSBhcyBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbl0gOiBbXSlcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC55ZXMnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwubm8nKVxuXG5leHBvcnQgY2xhc3MgSXNTcGF0aWFsU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpXG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2lzU3BhdGlhbCcsICdhc2MnLCBpbmplY3RvcilcbiAgICB0aGlzLmVzU2VydmljZS5yZWdpc3RlclJ1bnRpbWVGaWVsZChcbiAgICAgICdpc1NwYXRpYWwnLFxuICAgICAgYFN0cmluZyByZXN1bHQgPSAnbm8nO1xuU3RyaW5nIGZvcm1hdHMgPSBkb2MuZm9ybWF0LmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKGZvcm1hdHMuY29udGFpbnMoJ2dlb2pzb24nKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdhcmNnaXMnKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdvZ2MnKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdzaHAnKSkgcmVzdWx0ID0gJ3llcyc7XG5TdHJpbmcgcHJvdG9jb2xzID0gZG9jLmxpbmtQcm90b2NvbC5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChwcm90b2NvbHMuY29udGFpbnMoJ2VzcmknKSB8fCBwcm90b2NvbHMuY29udGFpbnMoJ29nYycpKSByZXN1bHQgPSAneWVzJztcbmVtaXQocmVzdWx0KTtgXG4gICAgKVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBpc1NwYXRpYWw6IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgbGltaXQ6IDIsXG4gICAgICAgIGZpZWxkOiAnaXNTcGF0aWFsJyxcbiAgICAgICAgc29ydDogWydhc2MnLCAna2V5J10sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGBzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwuJHtidWNrZXQudGVybX1gKVxuICAgIClcbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIGNvbnN0IGlzU3BhdGlhbCA9IHt9XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSBpc1NwYXRpYWxbdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXV0gPSB0cnVlXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGlzU3BhdGlhbCxcbiAgICB9KVxuICB9XG5cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVycy5pc1NwYXRpYWxcbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9mKFtdKVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmaWx0ZXIpXG4gICAgcmV0dXJuIG9mKGtleXMubGVuZ3RoID8gW2tleXNbMF1dIDogW10pXG4gIH1cbn1cblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLnBkZGwnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLm9kYmwnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLm9kYy1ieScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtYnktc2EnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLWJ5Jylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy16ZXJvJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5ldGFsYWItdjInKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmV0YWxhYicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UudW5rbm93bicpXG5cbi8vIE5vdGU6IHZhbHVlcyBhcmUgaW5zcGlyZWQgZnJvbSBodHRwczovL2RvYy5kYXRhLmdvdXYuZnIvbW9pc3Nvbm5hZ2UvbGljZW5jZXMvXG5leHBvcnQgY2xhc3MgTGljZW5zZVNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdsaWNlbnNlJywgJ2FzYycsIGluamVjdG9yKVxuICAgIHRoaXMuZXNTZXJ2aWNlLnJlZ2lzdGVyUnVudGltZUZpZWxkKFxuICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgYFN0cmluZyByYXcgPSAnJztcbmlmIChkb2MuY29udGFpbnNLZXkoJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJykgJiYgZG9jWydsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmxlbmd0aCA+IDApXG4gIHJhdyArPSBkb2NbJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10uam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAoZG9jLmNvbnRhaW5zS2V5KCdNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnKSAmJiBkb2NbJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmxlbmd0aCA+IDApXG4gIHJhdyArPSBkb2NbJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuXG5ib29sZWFuIHVua25vd24gPSB0cnVlO1xuaWYgKHJhdy5jb250YWlucygncGRkbCcpIHx8IHJhdy5jb250YWlucygncHVibGljIGRvbWFpbiBkZWRpY2F0aW9uIGFuZCBsaWNlbmNlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdwZGRsJyk7XG59XG5pZiAocmF3LmNvbnRhaW5zKCdvZGJsJykgfHwgcmF3LmNvbnRhaW5zKCdvcGVuIGRhdGFiYXNlIGxpY2Vuc2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ29kYmwnKTtcbn1cbmlmIChyYXcuY29udGFpbnMoJ29kYy1ieScpIHx8IHJhdy5jb250YWlucygnb3BlbmRhdGFjb21tb25zLm9yZy9saWNlbnNlcy9ieS9zdW1tYXJ5L1wiJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdvZGMtYnknKTtcbn1cblxuaWYgKHJhdy5jb250YWlucygnY2MtYnktc2EnKSB8fCByYXcuY29udGFpbnMoJ2NyZWF0aXZlIGNvbW1vbnMgYXR0cmlidXRpb24gc2hhcmUtYWxpa2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLWJ5LXNhJyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnY2MtYnknKSB8fCByYXcuY29udGFpbnMoJ2NjIGJ5JykgfHwgcmF3LmNvbnRhaW5zKCdjcmVhdGl2ZSBjb21tb25zIGF0dHJpYnV0aW9uJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy1ieScpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ2NjMCcpIHx8IHJhdy5jb250YWlucygnY2MtMCcpIHx8IHJhdy5jb250YWlucygnY2N6ZXJvJykgfHwgcmF3LmNvbnRhaW5zKCdjYy16ZXJvJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy16ZXJvJyk7XG59XG5cbmlmIChyYXcuY29udGFpbnMoJ2V0YWxhYicpICYmIChyYXcuY29udGFpbnMoJ3YyJykgfHwgcmF3LmNvbnRhaW5zKCcyLjAnKSkpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdldGFsYWItdjInKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdvcGVuIGxpY2VuY2UnKSB8fCByYXcuY29udGFpbnMoJ2xpY2VuY2Ugb3V2ZXJ0ZScpIHx8IHJhdy5jb250YWlucygnbGljZW5jZV9vdXZlcnRlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdldGFsYWInKTtcbn1cblxuaWYodW5rbm93bikgZW1pdCgndW5rbm93bicpO2BcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpY2Vuc2U6IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgbGltaXQ6IDEwLFxuICAgICAgICBmaWVsZDogJ2xpY2Vuc2UnLFxuICAgICAgICBzb3J0OiBbJ2Rlc2MnLCAnY291bnQnXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoYHNlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuJHtidWNrZXQudGVybX1gKVxuICAgIClcbiAgfVxufVxuXG4vLyBUaGlzIHdpbGwgdXNlIHRoZSBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZVxuLy8gRmllbGQgdmFsdWVzIGFyZSB0aGUgb3JnYW5pemF0aW9uIG5hbWVzXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSBvcmdzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9yZ3MpID0+XG4gICAgICAgIHZhbHVlc1xuICAgICAgICAgIC5tYXAoKG5hbWUpID0+IG9yZ3MuZmluZCgob3JnKSA9PiBvcmcubmFtZSA9PT0gbmFtZSkpXG4gICAgICAgICAgLmZpbHRlcigob3JnKSA9PiBvcmcgIT09IHVuZGVmaW5lZClcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKHNlbGVjdGVkT3JncykgPT5cbiAgICAgICAgdGhpcy5vcmdzU2VydmljZS5nZXRGaWx0ZXJzRm9yT3JncyhzZWxlY3RlZE9yZ3MpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2VcbiAgICAgIC5nZXRPcmdzRnJvbUZpbHRlcnMoZmlsdGVycylcbiAgICAgIC5waXBlKG1hcCgob3JncykgPT4gb3Jncy5tYXAoKG9yZykgPT4gb3JnLm5hbWUpKSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIC8vIHNvcnQgdmFsdWVzIGJ5IGFscGhhYmV0aWNhbCBvcmRlclxuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9yZ2FuaXNhdGlvbnMpID0+XG4gICAgICAgIG9yZ2FuaXNhdGlvbnMubWFwKChvcmcpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGAke29yZy5uYW1lfSAoJHtvcmcucmVjb3JkQ291bnR9KWAsXG4gICAgICAgICAgdmFsdWU6IG9yZy5uYW1lLFxuICAgICAgICB9KSlcbiAgICAgICksXG4gICAgICBtYXAoKHZhbHVlcykgPT5cbiAgICAgICAgdmFsdWVzLnNvcnQoKGEsIGIpID0+IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZShhLmxhYmVsLCBiLmxhYmVsKSlcbiAgICAgIClcbiAgICApXG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBPd25lclNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignb3duZXInLCAnYXNjJywgaW5qZWN0b3IpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoW10pXG4gIH1cbn1cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlGQUFpRixDQUFBO0FBQy9ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlGQUF5RixDQUFBO0FBQ3BJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBUXJILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsaUJBQWlCLEdBQ2xCLE1BQU0sOENBQThDLENBQUE7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBUXJFLE1BQU0sT0FBZ0IsbUJBQW1CO0NBSXhDO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNZLFdBQW1CLEVBQ25CLFFBQWtCLEVBQ2xCLFFBQXdCLEtBQUssRUFDN0IsWUFBNkIsS0FBSztRQUhsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBVHBDLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1FBRXBFLDRFQUE0RTtRQUNsRSxjQUFT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LE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUNwQixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLFdBQVcsR0FBRztZQUN6QyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDLENBQ0osRUFDRCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDckUsQ0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBQ0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGlCQUFpQjtJQUNyRCxZQUFZLFFBQWtCO1FBQzVCLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9vcmdhbml6YXRpb25zLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9yZXBvc2l0b3J5L3JlY29yZHMtcmVwb3NpdG9yeS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uQnVja2V0cyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbixcbiAgRmllbGRGaWx0ZXJzLFxuICBUZXJtQnVja2V0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQge1xuICBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgTUVUQURBVEFfTEFOR1VBR0UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbmV4cG9ydCB0eXBlIEZpZWxkVmFsdWUgPSBzdHJpbmcgfCBudW1iZXJcbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRBdmFpbGFibGVWYWx1ZSB7XG4gIHZhbHVlOiBGaWVsZFZhbHVlXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBhYnN0cmFjdCBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+XG4gIGFic3RyYWN0IGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz5cbiAgYWJzdHJhY3QgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPlxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSB0aGlzLmluamVjdG9yLmdldChSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSlcblxuICAvLyBGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBydW50aW1lIGZpZWxkczsgYWJzdHJhY3QgdGhpcyBhcyB3ZWxsXG4gIHByb3RlY3RlZCBlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChFbGFzdGljc2VhcmNoU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHt9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgZmllbGQ6IHRoaXMuZXNGaWVsZE5hbWUsXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBzb3J0OiBbdGhpcy5vcmRlciwgdGhpcy5vcmRlclR5cGVdLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYnVja2V0LnRlcm0udG9TdHJpbmcoKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5hZ2dyZWdhdGUodGhpcy5nZXRBZ2dyZWdhdGlvbnMoKSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKHJlc3BvbnNlKSA9PlxuICAgICAgICAgIChyZXNwb25zZVt0aGlzLmVzRmllbGROYW1lXSBhcyBBZ2dyZWdhdGlvbkJ1Y2tldHMpLmJ1Y2tldHMgfHwgW11cbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKGJ1Y2tldHM6IFRlcm1CdWNrZXRbXSkgPT4ge1xuICAgICAgICBjb25zdCBidWNrZXRQcm9taXNlcyA9IGJ1Y2tldHMubWFwKGFzeW5jIChidWNrZXQpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGAke2F3YWl0IHRoaXMuZ2V0QnVja2V0TGFiZWwoYnVja2V0KX0gKCR7YnVja2V0LmNvdW50fSlgLFxuICAgICAgICAgIHZhbHVlOiBidWNrZXQudGVybS50b1N0cmluZygpLFxuICAgICAgICB9KSlcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGJ1Y2tldFByb21pc2VzKVxuICAgICAgfSlcbiAgICApXG4gIH1cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXTogdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbdmFsLnRvU3RyaW5nKCldOiB0cnVlIH1cbiAgICAgIH0sIHt9KSxcbiAgICB9KVxuICB9XG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNbdGhpcy5lc0ZpZWxkTmFtZV1cbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9mKFtdKVxuICAgIGNvbnN0IHZhbHVlcyA9XG4gICAgICB0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJ1xuICAgICAgICA/IFtmaWx0ZXJdXG4gICAgICAgIDogT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoKHYpID0+IGZpbHRlclt2XSlcbiAgICByZXR1cm4gb2YodmFsdWVzKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVkU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhdGZvcm1TZXJ2aWNlLnRyYW5zbGF0ZUtleShrZXkpKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbihidWNrZXQudGVybSkpIHx8IGJ1Y2tldC50ZXJtXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICBpZiAodGhpcy5vcmRlclR5cGUgPT09ICdjb3VudCcpIHJldHVybiBzdXBlci5nZXRBdmFpbGFibGVWYWx1ZXMoKVxuICAgIC8vIHNvcnQgdmFsdWVzIGJ5IGFscGhhYmV0aWNhbCBvcmRlclxuICAgIHJldHVybiBzdXBlclxuICAgICAgLmdldEF2YWlsYWJsZVZhbHVlcygpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgICAgdmFsdWVzLnNvcnQoKGEsIGIpID0+IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZShhLmxhYmVsLCBiLmxhYmVsKSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZWFyY2ggZmllbGQgd2lsbCBlaXRoZXIgdGFyZ2V0IHRoZSBgLmRlZmF1bHRgIGZpZWxkLCBvciBhIHNwZWNpZmljIGAubGFuZ3h5emAgZmllbGQgYWNjb3JkaW5nXG4gKiB0byB0aGUgZGVmaW5lZCBNRVRBREFUQV9MQU5HVUFHRSB0b2tlblxuICogVGhlIHByb3ZpZGVkIEVTIGZpZWxkIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcmVmaXggc3VjaCBhcyBgLmxhbmdlbmdgXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aWxpbmd1YWxTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExhbmdTZXJ2aWNlKVxuICBwcml2YXRlIHNlYXJjaExhbmd1YWdlID0gdGhpcy5pbmplY3Rvci5nZXQoTUVUQURBVEFfTEFOR1VBR0UsIG51bGwpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICAgIC8vIG5vdGU6IHdlJ3JlIGV4Y2x1ZGluZyB0aGUgbWV0YWRhdGEgbGFuZ3VhZ2UgXCJjdXJyZW50XCIgdmFsdWUgYmVjYXVzZSB0aGF0IHdvdWxkIHByb2R1Y2VcbiAgICAvLyBwZXJtYWxpbmtzIHRoYXQgbWlnaHQgbm90IHdvcmsgZm9yIGRpZmZlcmVudCB1c2Vyc1xuICAgIGlmICh0aGlzLnNlYXJjaExhbmd1YWdlICYmIHRoaXMuc2VhcmNoTGFuZ3VhZ2UgIT09ICdjdXJyZW50Jykge1xuICAgICAgdGhpcy5lc0ZpZWxkTmFtZSArPSBgLmxhbmcke3RoaXMuc2VhcmNoTGFuZ3VhZ2V9YFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVzRmllbGROYW1lICs9ICcuZGVmYXVsdCdcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZ1bGxUZXh0U2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiBvZih7XG4gICAgICBhbnk6IHZhbHVlc1swXSBhcyBzdHJpbmcsXG4gICAgfSlcbiAgfVxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoZmlsdGVycy5hbnkgPyBbZmlsdGVycy5hbnkgYXMgRmllbGRGaWx0ZXJCeUV4cHJlc3Npb25dIDogW10pXG4gIH1cbn1cblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwueWVzJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLm5vJylcblxuZXhwb3J0IGNsYXNzIElzU3BhdGlhbFNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdpc1NwYXRpYWwnLCBpbmplY3RvciwgJ2FzYycpXG4gICAgdGhpcy5lc1NlcnZpY2UucmVnaXN0ZXJSdW50aW1lRmllbGQoXG4gICAgICAnaXNTcGF0aWFsJyxcbiAgICAgIGBTdHJpbmcgcmVzdWx0ID0gJ25vJztcblN0cmluZyBmb3JtYXRzID0gZG9jLmZvcm1hdC5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChmb3JtYXRzLmNvbnRhaW5zKCdnZW9qc29uJykgfHwgZm9ybWF0cy5jb250YWlucygnYXJjZ2lzJykgfHwgZm9ybWF0cy5jb250YWlucygnb2djJykgfHwgZm9ybWF0cy5jb250YWlucygnc2hwJykpIHJlc3VsdCA9ICd5ZXMnO1xuU3RyaW5nIHByb3RvY29scyA9IGRvYy5saW5rUHJvdG9jb2wuam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAocHJvdG9jb2xzLmNvbnRhaW5zKCdlc3JpJykgfHwgcHJvdG9jb2xzLmNvbnRhaW5zKCdvZ2MnKSkgcmVzdWx0ID0gJ3llcyc7XG5lbWl0KHJlc3VsdCk7YFxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZ2dyZWdhdGlvbnMoKTogQWdncmVnYXRpb25zUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTcGF0aWFsOiB7XG4gICAgICAgIHR5cGU6ICd0ZXJtcycsXG4gICAgICAgIGxpbWl0OiAyLFxuICAgICAgICBmaWVsZDogJ2lzU3BhdGlhbCcsXG4gICAgICAgIHNvcnQ6IFsnYXNjJywgJ2tleSddLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLiR7YnVja2V0LnRlcm19YClcbiAgICApXG4gIH1cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICBjb25zdCBpc1NwYXRpYWwgPSB7fVxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkgaXNTcGF0aWFsW3ZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV1dID0gdHJ1ZVxuICAgIHJldHVybiBvZih7XG4gICAgICBpc1NwYXRpYWwsXG4gICAgfSlcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnMuaXNTcGF0aWFsXG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmlsdGVyKVxuICAgIHJldHVybiBvZihrZXlzLmxlbmd0aCA/IFtrZXlzWzBdXSA6IFtdKVxuICB9XG59XG5cbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5wZGRsJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5vZGJsJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5vZGMtYnknKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLWJ5LXNhJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy1ieScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtemVybycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuZXRhbGFiLXYyJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5ldGFsYWInKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLnVua25vd24nKVxuXG4vLyBOb3RlOiB2YWx1ZXMgYXJlIGluc3BpcmVkIGZyb20gaHR0cHM6Ly9kb2MuZGF0YS5nb3V2LmZyL21vaXNzb25uYWdlL2xpY2VuY2VzL1xuZXhwb3J0IGNsYXNzIExpY2Vuc2VTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignbGljZW5zZScsIGluamVjdG9yLCAnYXNjJylcbiAgICB0aGlzLmVzU2VydmljZS5yZWdpc3RlclJ1bnRpbWVGaWVsZChcbiAgICAgICdsaWNlbnNlJyxcbiAgICAgIGBTdHJpbmcgcmF3ID0gJyc7XG5pZiAoZG9jLmNvbnRhaW5zS2V5KCdsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCcpICYmIGRvY1snbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5sZW5ndGggPiAwKVxuICByYXcgKz0gZG9jWydsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKGRvYy5jb250YWluc0tleSgnTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJykgJiYgZG9jWydNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5sZW5ndGggPiAwKVxuICByYXcgKz0gZG9jWydNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcblxuYm9vbGVhbiB1bmtub3duID0gdHJ1ZTtcbmlmIChyYXcuY29udGFpbnMoJ3BkZGwnKSB8fCByYXcuY29udGFpbnMoJ3B1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhbmQgbGljZW5jZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgncGRkbCcpO1xufVxuaWYgKHJhdy5jb250YWlucygnb2RibCcpIHx8IHJhdy5jb250YWlucygnb3BlbiBkYXRhYmFzZSBsaWNlbnNlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdvZGJsJyk7XG59XG5pZiAocmF3LmNvbnRhaW5zKCdvZGMtYnknKSB8fCByYXcuY29udGFpbnMoJ29wZW5kYXRhY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvc3VtbWFyeS9cIicpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnb2RjLWJ5Jyk7XG59XG5cbmlmIChyYXcuY29udGFpbnMoJ2NjLWJ5LXNhJykgfHwgcmF3LmNvbnRhaW5zKCdjcmVhdGl2ZSBjb21tb25zIGF0dHJpYnV0aW9uIHNoYXJlLWFsaWtlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy1ieS1zYScpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ2NjLWJ5JykgfHwgcmF3LmNvbnRhaW5zKCdjYyBieScpIHx8IHJhdy5jb250YWlucygnY3JlYXRpdmUgY29tbW9ucyBhdHRyaWJ1dGlvbicpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtYnknKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdjYzAnKSB8fCByYXcuY29udGFpbnMoJ2NjLTAnKSB8fCByYXcuY29udGFpbnMoJ2NjemVybycpIHx8IHJhdy5jb250YWlucygnY2MtemVybycpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtemVybycpO1xufVxuXG5pZiAocmF3LmNvbnRhaW5zKCdldGFsYWInKSAmJiAocmF3LmNvbnRhaW5zKCd2MicpIHx8IHJhdy5jb250YWlucygnMi4wJykpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnZXRhbGFiLXYyJyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnb3BlbiBsaWNlbmNlJykgfHwgcmF3LmNvbnRhaW5zKCdsaWNlbmNlIG91dmVydGUnKSB8fCByYXcuY29udGFpbnMoJ2xpY2VuY2Vfb3V2ZXJ0ZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnZXRhbGFiJyk7XG59XG5cbmlmKHVua25vd24pIGVtaXQoJ3Vua25vd24nKTtgXG4gICAgKVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBsaWNlbnNlOiB7XG4gICAgICAgIHR5cGU6ICd0ZXJtcycsXG4gICAgICAgIGxpbWl0OiAxMCxcbiAgICAgICAgZmllbGQ6ICdsaWNlbnNlJyxcbiAgICAgICAgc29ydDogWydkZXNjJywgJ2NvdW50J10sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGBzZWFyY2guZmlsdGVycy5saWNlbnNlLiR7YnVja2V0LnRlcm19YClcbiAgICApXG4gIH1cbn1cblxuLy8gVGhpcyB3aWxsIHVzZSB0aGUgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2Vcbi8vIEZpZWxkIHZhbHVlcyBhcmUgdGhlIG9yZ2FuaXphdGlvbiBuYW1lc1xuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaEZpZWxkIGltcGxlbWVudHMgQWJzdHJhY3RTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgb3Jnc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSlcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZS5vcmdhbmlzYXRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcmdzKSA9PlxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgICAubWFwKChuYW1lKSA9PiBvcmdzLmZpbmQoKG9yZykgPT4gb3JnLm5hbWUgPT09IG5hbWUpKVxuICAgICAgICAgIC5maWx0ZXIoKG9yZykgPT4gb3JnICE9PSB1bmRlZmluZWQpXG4gICAgICApLFxuICAgICAgc3dpdGNoTWFwKChzZWxlY3RlZE9yZ3MpID0+XG4gICAgICAgIHRoaXMub3Jnc1NlcnZpY2UuZ2V0RmlsdGVyc0Zvck9yZ3Moc2VsZWN0ZWRPcmdzKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlXG4gICAgICAuZ2V0T3Jnc0Zyb21GaWx0ZXJzKGZpbHRlcnMpXG4gICAgICAucGlwZShtYXAoKG9yZ3MpID0+IG9yZ3MubWFwKChvcmcpID0+IG9yZy5uYW1lKSkpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICAvLyBzb3J0IHZhbHVlcyBieSBhbHBoYWJldGljYWwgb3JkZXJcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZS5vcmdhbmlzYXRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcmdhbmlzYXRpb25zKSA9PlxuICAgICAgICBvcmdhbmlzYXRpb25zLm1hcCgob3JnKSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBgJHtvcmcubmFtZX0gKCR7b3JnLnJlY29yZENvdW50fSlgLFxuICAgICAgICAgIHZhbHVlOiBvcmcubmFtZSxcbiAgICAgICAgfSkpXG4gICAgICApLFxuICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgIHZhbHVlcy5zb3J0KChhLCBiKSA9PiBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUoYS5sYWJlbCwgYi5sYWJlbCkpXG4gICAgICApXG4gICAgKVxuICB9XG59XG5leHBvcnQgY2xhc3MgT3duZXJTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ293bmVyJywgaW5qZWN0b3IsICdhc2MnKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG59XG4iXX0=
@@ -1,11 +1,12 @@
1
1
  import { Injectable, Injector } from '@angular/core';
2
- import { FullTextSearchField, IsSpatialSearchField, KeySearchField, LicenseSearchField, OrganizationSearchField, OwnerSearchField, SimpleSearchField, ThesaurusField, } from './fields';
2
+ import { FullTextSearchField, IsSpatialSearchField, LicenseSearchField, MultilingualSearchField, OrganizationSearchField, OwnerSearchField, SimpleSearchField, TranslatedSearchField, } from './fields';
3
3
  import { forkJoin, of } from 'rxjs';
4
4
  import { map } from 'rxjs/operators';
5
5
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
6
6
  import * as i0 from "@angular/core";
7
7
  marker('search.filters.format');
8
8
  marker('search.filters.inspireKeyword');
9
+ marker('search.filters.keyword');
9
10
  marker('search.filters.isSpatial');
10
11
  marker('search.filters.license');
11
12
  marker('search.filters.publicationYear');
@@ -23,13 +24,14 @@ export class FieldsService {
23
24
  this.injector = injector;
24
25
  this.fields = {
25
26
  publisher: new OrganizationSearchField(this.injector),
26
- format: new SimpleSearchField('format', 'asc', this.injector),
27
- resourceType: new KeySearchField('resourceType', 'asc', this.injector),
28
- representationType: new KeySearchField('cl_spatialRepresentationType.key', 'asc', this.injector),
29
- publicationYear: new SimpleSearchField('publicationYearForResource', 'desc', this.injector),
30
- topic: new KeySearchField('cl_topic.key', 'asc', this.injector),
31
- inspireKeyword: new ThesaurusField('th_httpinspireeceuropaeutheme-theme.link', 'external.theme.httpinspireeceuropaeutheme-theme', 'asc', this.injector),
32
- documentStandard: new SimpleSearchField('documentStandard', 'asc', this.injector),
27
+ format: new SimpleSearchField('format', this.injector, 'asc'),
28
+ resourceType: new TranslatedSearchField('resourceType', this.injector, 'asc'),
29
+ representationType: new TranslatedSearchField('cl_spatialRepresentationType.key', this.injector, 'asc'),
30
+ publicationYear: new SimpleSearchField('publicationYearForResource', this.injector, 'desc'),
31
+ topic: new TranslatedSearchField('cl_topic.key', this.injector, 'asc'),
32
+ inspireKeyword: new TranslatedSearchField('th_httpinspireeceuropaeutheme-theme.link', this.injector, 'asc'),
33
+ keyword: new MultilingualSearchField('tag', this.injector, 'desc', 'count'),
34
+ documentStandard: new SimpleSearchField('documentStandard', this.injector, 'asc'),
33
35
  isSpatial: new IsSpatialSearchField(this.injector),
34
36
  q: new FullTextSearchField(),
35
37
  license: new LicenseSearchField(this.injector),
@@ -72,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
72
74
  providedIn: 'root',
73
75
  }]
74
76
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9saWIvdXRpbHMvc2VydmljZS9maWVsZHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNwRCxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLFVBQVUsQ0FBQTtBQUNqQixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBOztBQUtoRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtBQUMvQixNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQTtBQUN2QyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUNoQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtBQUN4QyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtBQUMzQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtBQUNyQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUtoQyxNQUFNLE9BQU8sYUFBYTtJQWlDeEIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFwQzlCLFdBQU0sR0FBRztZQUNmLFNBQVMsRUFBRSxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckQsTUFBTSxFQUFFLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdELFlBQVksRUFBRSxJQUFJLGNBQWMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEUsa0JBQWtCLEVBQUUsSUFBSSxjQUFjLENBQ3BDLGtDQUFrQyxFQUNsQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FDZDtZQUNELGVBQWUsRUFBRSxJQUFJLGlCQUFpQixDQUNwQyw0QkFBNEIsRUFDNUIsTUFBTSxFQUNOLElBQUksQ0FBQyxRQUFRLENBQ2Q7WUFDRCxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9ELGNBQWMsRUFBRSxJQUFJLGNBQWMsQ0FDaEMsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxLQUFLLEVBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FDZDtZQUNELGdCQUFnQixFQUFFLElBQUksaUJBQWlCLENBQ3JDLGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FDZDtZQUNELFNBQVMsRUFBRSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsQ0FBQyxFQUFFLElBQUksbUJBQW1CLEVBQUU7WUFDNUIsT0FBTyxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QyxLQUFLLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ0osQ0FBQTtJQU1DLENBQUM7SUFFMUMsa0JBQWtCLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNwRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxNQUFvQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUNPLG1CQUFtQixDQUFDLFNBQWlCLEVBQUUsT0FBcUI7UUFDbEUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCwyQkFBMkIsQ0FDekIsV0FBd0I7UUFFeEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDekMsQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQzVCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFzQixDQUFDLENBQUE7UUFDcEUsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzNELENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxPQUFxQjtRQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FDRixDQUFBO1FBQ0QsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNsQixXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDL0QsQ0FDRixDQUFBO0lBQ0gsQ0FBQzs4R0FuRlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBYnN0cmFjdFNlYXJjaEZpZWxkLFxuICBGaWVsZFZhbHVlLFxuICBGdWxsVGV4dFNlYXJjaEZpZWxkLFxuICBJc1NwYXRpYWxTZWFyY2hGaWVsZCxcbiAgS2V5U2VhcmNoRmllbGQsXG4gIExpY2Vuc2VTZWFyY2hGaWVsZCxcbiAgT3JnYW5pemF0aW9uU2VhcmNoRmllbGQsXG4gIE93bmVyU2VhcmNoRmllbGQsXG4gIFNpbXBsZVNlYXJjaEZpZWxkLFxuICBUaGVzYXVydXNGaWVsZCxcbn0gZnJvbSAnLi9maWVsZHMnXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBGaWVsZEZpbHRlcnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5cbi8vIGtleSBpcyB0aGUgZmllbGQgbmFtZVxuZXhwb3J0IHR5cGUgRmllbGRWYWx1ZXMgPSBSZWNvcmQ8c3RyaW5nLCBGaWVsZFZhbHVlW10gfCBGaWVsZFZhbHVlPlxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmZvcm1hdCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmluc3BpcmVLZXl3b3JkJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnB1YmxpY2F0aW9uWWVhcicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnB1Ymxpc2hlcicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnJlcHJlc2VudGF0aW9uVHlwZScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnJlc291cmNlVHlwZScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnN0YW5kYXJkJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMudG9waWMnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5jb250YWN0JylcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkc1NlcnZpY2Uge1xuICBwcml2YXRlIGZpZWxkcyA9IHtcbiAgICBwdWJsaXNoZXI6IG5ldyBPcmdhbml6YXRpb25TZWFyY2hGaWVsZCh0aGlzLmluamVjdG9yKSxcbiAgICBmb3JtYXQ6IG5ldyBTaW1wbGVTZWFyY2hGaWVsZCgnZm9ybWF0JywgJ2FzYycsIHRoaXMuaW5qZWN0b3IpLFxuICAgIHJlc291cmNlVHlwZTogbmV3IEtleVNlYXJjaEZpZWxkKCdyZXNvdXJjZVR5cGUnLCAnYXNjJywgdGhpcy5pbmplY3RvciksXG4gICAgcmVwcmVzZW50YXRpb25UeXBlOiBuZXcgS2V5U2VhcmNoRmllbGQoXG4gICAgICAnY2xfc3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZS5rZXknLFxuICAgICAgJ2FzYycsXG4gICAgICB0aGlzLmluamVjdG9yXG4gICAgKSxcbiAgICBwdWJsaWNhdGlvblllYXI6IG5ldyBTaW1wbGVTZWFyY2hGaWVsZChcbiAgICAgICdwdWJsaWNhdGlvblllYXJGb3JSZXNvdXJjZScsXG4gICAgICAnZGVzYycsXG4gICAgICB0aGlzLmluamVjdG9yXG4gICAgKSxcbiAgICB0b3BpYzogbmV3IEtleVNlYXJjaEZpZWxkKCdjbF90b3BpYy5rZXknLCAnYXNjJywgdGhpcy5pbmplY3RvciksXG4gICAgaW5zcGlyZUtleXdvcmQ6IG5ldyBUaGVzYXVydXNGaWVsZChcbiAgICAgICd0aF9odHRwaW5zcGlyZWVjZXVyb3BhZXV0aGVtZS10aGVtZS5saW5rJyxcbiAgICAgICdleHRlcm5hbC50aGVtZS5odHRwaW5zcGlyZWVjZXVyb3BhZXV0aGVtZS10aGVtZScsXG4gICAgICAnYXNjJyxcbiAgICAgIHRoaXMuaW5qZWN0b3JcbiAgICApLFxuICAgIGRvY3VtZW50U3RhbmRhcmQ6IG5ldyBTaW1wbGVTZWFyY2hGaWVsZChcbiAgICAgICdkb2N1bWVudFN0YW5kYXJkJyxcbiAgICAgICdhc2MnLFxuICAgICAgdGhpcy5pbmplY3RvclxuICAgICksXG4gICAgaXNTcGF0aWFsOiBuZXcgSXNTcGF0aWFsU2VhcmNoRmllbGQodGhpcy5pbmplY3RvciksXG4gICAgcTogbmV3IEZ1bGxUZXh0U2VhcmNoRmllbGQoKSxcbiAgICBsaWNlbnNlOiBuZXcgTGljZW5zZVNlYXJjaEZpZWxkKHRoaXMuaW5qZWN0b3IpLFxuICAgIG93bmVyOiBuZXcgT3duZXJTZWFyY2hGaWVsZCh0aGlzLmluamVjdG9yKSxcbiAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdFNlYXJjaEZpZWxkPlxuXG4gIGdldCBzdXBwb3J0ZWRGaWVsZHMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmllbGRzKVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc3VwcG9ydGVkRmllbGRzLmluZGV4T2YoZmllbGROYW1lKSA9PT0gLTEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlYXJjaCBmaWVsZDogJHtmaWVsZE5hbWV9YClcbiAgICByZXR1cm4gdGhpcy5maWVsZHNbZmllbGROYW1lXS5nZXRBdmFpbGFibGVWYWx1ZXMoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJzRm9yVmFsdWVzKGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZXM6IEZpZWxkVmFsdWVbXSkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdLmdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzKVxuICB9XG4gIHByaXZhdGUgZ2V0VmFsdWVzRm9yRmlsdGVycyhmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyczogRmllbGRGaWx0ZXJzKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0uZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnMpXG4gIH1cblxuICBidWlsZEZpbHRlcnNGcm9tRmllbGRWYWx1ZXMoXG4gICAgZmllbGRWYWx1ZXM6IEZpZWxkVmFsdWVzXG4gICk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgY29uc3QgZmllbGROYW1lcyA9IE9iamVjdC5rZXlzKGZpZWxkVmFsdWVzKS5maWx0ZXIoKGZpZWxkTmFtZSkgPT5cbiAgICAgIHRoaXMuc3VwcG9ydGVkRmllbGRzLmluY2x1ZGVzKGZpZWxkTmFtZSlcbiAgICApXG4gICAgaWYgKCFmaWVsZE5hbWVzLmxlbmd0aCkgcmV0dXJuIG9mKHt9KVxuICAgIGNvbnN0IGZpbHRlcnNCeUZpZWxkJCA9IGZpZWxkTmFtZXMubWFwKChmaWVsZE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZXNbZmllbGROYW1lXSlcbiAgICAgICAgPyBmaWVsZFZhbHVlc1tmaWVsZE5hbWVdXG4gICAgICAgIDogW2ZpZWxkVmFsdWVzW2ZpZWxkTmFtZV1dXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWx0ZXJzRm9yVmFsdWVzKGZpZWxkTmFtZSwgdmFsdWVzIGFzIEZpZWxkVmFsdWVbXSlcbiAgICB9KVxuICAgIHJldHVybiBmb3JrSm9pbihmaWx0ZXJzQnlGaWVsZCQpLnBpcGUoXG4gICAgICBtYXAoKGZpbHRlcnMpID0+XG4gICAgICAgIGZpbHRlcnMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoeyAuLi5wcmV2LCAuLi5jdXJyIH0pLCB7fSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuICByZWFkRmllbGRWYWx1ZXNGcm9tRmlsdGVycyhmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVzPiB7XG4gICAgY29uc3QgZmllbGRWYWx1ZXMkID0gdGhpcy5zdXBwb3J0ZWRGaWVsZHMubWFwKChmaWVsZE5hbWUpID0+XG4gICAgICB0aGlzLmdldFZhbHVlc0ZvckZpbHRlcnMoZmllbGROYW1lLCBmaWx0ZXJzKS5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlcykgPT4gKHsgW2ZpZWxkTmFtZV06IHZhbHVlcyB9KSlcbiAgICAgIClcbiAgICApXG4gICAgcmV0dXJuIGZvcmtKb2luKGZpZWxkVmFsdWVzJCkucGlwZShcbiAgICAgIG1hcCgoZmllbGRWYWx1ZXMpID0+XG4gICAgICAgIGZpZWxkVmFsdWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgLi4uY3VyciB9KSwge30pXG4gICAgICApXG4gICAgKVxuICB9XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9saWIvdXRpbHMvc2VydmljZS9maWVsZHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNwRCxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUN0QixNQUFNLFVBQVUsQ0FBQTtBQUNqQixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBOztBQUtoRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtBQUMvQixNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQTtBQUN2QyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUNoQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUNoQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtBQUN4QyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtBQUMzQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtBQUNyQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtB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L0QsQ0FDRixDQUFBO0lBQ0gsQ0FBQzs4R0F2RlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBYnN0cmFjdFNlYXJjaEZpZWxkLFxuICBGaWVsZFZhbHVlLFxuICBGdWxsVGV4dFNlYXJjaEZpZWxkLFxuICBJc1NwYXRpYWxTZWFyY2hGaWVsZCxcbiAgTGljZW5zZVNlYXJjaEZpZWxkLFxuICBNdWx0aWxpbmd1YWxTZWFyY2hGaWVsZCxcbiAgT3JnYW5pemF0aW9uU2VhcmNoRmllbGQsXG4gIE93bmVyU2VhcmNoRmllbGQsXG4gIFNpbXBsZVNlYXJjaEZpZWxkLFxuICBUcmFuc2xhdGVkU2VhcmNoRmllbGQsXG59IGZyb20gJy4vZmllbGRzJ1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRmllbGRGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuXG4vLyBrZXkgaXMgdGhlIGZpZWxkIG5hbWVcbmV4cG9ydCB0eXBlIEZpZWxkVmFsdWVzID0gUmVjb3JkPHN0cmluZywgRmllbGRWYWx1ZVtdIHwgRmllbGRWYWx1ZT5cblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5mb3JtYXQnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pbnNwaXJlS2V5d29yZCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmtleXdvcmQnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMucHVibGljYXRpb25ZZWFyJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMucHVibGlzaGVyJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMucmVwcmVzZW50YXRpb25UeXBlJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMucmVzb3VyY2VUeXBlJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuc3RhbmRhcmQnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy50b3BpYycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmNvbnRhY3QnKVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRzU2VydmljZSB7XG4gIHByaXZhdGUgZmllbGRzID0ge1xuICAgIHB1Ymxpc2hlcjogbmV3IE9yZ2FuaXphdGlvblNlYXJjaEZpZWxkKHRoaXMuaW5qZWN0b3IpLFxuICAgIGZvcm1hdDogbmV3IFNpbXBsZVNlYXJjaEZpZWxkKCdmb3JtYXQnLCB0aGlzLmluamVjdG9yLCAnYXNjJyksXG4gICAgcmVzb3VyY2VUeXBlOiBuZXcgVHJhbnNsYXRlZFNlYXJjaEZpZWxkKFxuICAgICAgJ3Jlc291cmNlVHlwZScsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgJ2FzYydcbiAgICApLFxuICAgIHJlcHJlc2VudGF0aW9uVHlwZTogbmV3IFRyYW5zbGF0ZWRTZWFyY2hGaWVsZChcbiAgICAgICdjbF9zcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlLmtleScsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgJ2FzYydcbiAgICApLFxuICAgIHB1YmxpY2F0aW9uWWVhcjogbmV3IFNpbXBsZVNlYXJjaEZpZWxkKFxuICAgICAgJ3B1YmxpY2F0aW9uWWVhckZvclJlc291cmNlJyxcbiAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAnZGVzYydcbiAgICApLFxuICAgIHRvcGljOiBuZXcgVHJhbnNsYXRlZFNlYXJjaEZpZWxkKCdjbF90b3BpYy5rZXknLCB0aGlzLmluamVjdG9yLCAnYXNjJyksXG4gICAgaW5zcGlyZUtleXdvcmQ6IG5ldyBUcmFuc2xhdGVkU2VhcmNoRmllbGQoXG4gICAgICAndGhfaHR0cGluc3BpcmVlY2V1cm9wYWV1dGhlbWUtdGhlbWUubGluaycsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgJ2FzYydcbiAgICApLFxuICAgIGtleXdvcmQ6IG5ldyBNdWx0aWxpbmd1YWxTZWFyY2hGaWVsZCgndGFnJywgdGhpcy5pbmplY3RvciwgJ2Rlc2MnLCAnY291bnQnKSxcbiAgICBkb2N1bWVudFN0YW5kYXJkOiBuZXcgU2ltcGxlU2VhcmNoRmllbGQoXG4gICAgICAnZG9jdW1lbnRTdGFuZGFyZCcsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgJ2FzYydcbiAgICApLFxuICAgIGlzU3BhdGlhbDogbmV3IElzU3BhdGlhbFNlYXJjaEZpZWxkKHRoaXMuaW5qZWN0b3IpLFxuICAgIHE6IG5ldyBGdWxsVGV4dFNlYXJjaEZpZWxkKCksXG4gICAgbGljZW5zZTogbmV3IExpY2Vuc2VTZWFyY2hGaWVsZCh0aGlzLmluamVjdG9yKSxcbiAgICBvd25lcjogbmV3IE93bmVyU2VhcmNoRmllbGQodGhpcy5pbmplY3RvciksXG4gIH0gYXMgUmVjb3JkPHN0cmluZywgQWJzdHJhY3RTZWFyY2hGaWVsZD5cblxuICBnZXQgc3VwcG9ydGVkRmllbGRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkcylcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcyhmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnN1cHBvcnRlZEZpZWxkcy5pbmRleE9mKGZpZWxkTmFtZSkgPT09IC0xKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZWFyY2ggZmllbGQ6ICR7ZmllbGROYW1lfWApXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0uZ2V0QXZhaWxhYmxlVmFsdWVzKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyc0ZvclZhbHVlcyhmaWVsZE5hbWU6IHN0cmluZywgdmFsdWVzOiBGaWVsZFZhbHVlW10pIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHNbZmllbGROYW1lXS5nZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlcylcbiAgfVxuICBwcml2YXRlIGdldFZhbHVlc0ZvckZpbHRlcnMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlcnM6IEZpZWxkRmlsdGVycykge1xuICAgIHJldHVybiB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdLmdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzKVxuICB9XG5cbiAgYnVpbGRGaWx0ZXJzRnJvbUZpZWxkVmFsdWVzKFxuICAgIGZpZWxkVmFsdWVzOiBGaWVsZFZhbHVlc1xuICApOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIGNvbnN0IGZpZWxkTmFtZXMgPSBPYmplY3Qua2V5cyhmaWVsZFZhbHVlcykuZmlsdGVyKChmaWVsZE5hbWUpID0+XG4gICAgICB0aGlzLnN1cHBvcnRlZEZpZWxkcy5pbmNsdWRlcyhmaWVsZE5hbWUpXG4gICAgKVxuICAgIGlmICghZmllbGROYW1lcy5sZW5ndGgpIHJldHVybiBvZih7fSlcbiAgICBjb25zdCBmaWx0ZXJzQnlGaWVsZCQgPSBmaWVsZE5hbWVzLm1hcCgoZmllbGROYW1lKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KGZpZWxkVmFsdWVzW2ZpZWxkTmFtZV0pXG4gICAgICAgID8gZmllbGRWYWx1ZXNbZmllbGROYW1lXVxuICAgICAgICA6IFtmaWVsZFZhbHVlc1tmaWVsZE5hbWVdXVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyc0ZvclZhbHVlcyhmaWVsZE5hbWUsIHZhbHVlcyBhcyBGaWVsZFZhbHVlW10pXG4gICAgfSlcbiAgICByZXR1cm4gZm9ya0pvaW4oZmlsdGVyc0J5RmllbGQkKS5waXBlKFxuICAgICAgbWFwKChmaWx0ZXJzKSA9PlxuICAgICAgICBmaWx0ZXJzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgLi4uY3VyciB9KSwge30pXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcmVhZEZpZWxkVmFsdWVzRnJvbUZpbHRlcnMoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlcz4ge1xuICAgIGNvbnN0IGZpZWxkVmFsdWVzJCA9IHRoaXMuc3VwcG9ydGVkRmllbGRzLm1hcCgoZmllbGROYW1lKSA9PlxuICAgICAgdGhpcy5nZXRWYWx1ZXNGb3JGaWx0ZXJzKGZpZWxkTmFtZSwgZmlsdGVycykucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZXMpID0+ICh7IFtmaWVsZE5hbWVdOiB2YWx1ZXMgfSkpXG4gICAgICApXG4gICAgKVxuICAgIHJldHVybiBmb3JrSm9pbihmaWVsZFZhbHVlcyQpLnBpcGUoXG4gICAgICBtYXAoKGZpZWxkVmFsdWVzKSA9PlxuICAgICAgICBmaWVsZFZhbHVlcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIC4uLmN1cnIgfSksIHt9KVxuICAgICAgKVxuICAgIClcbiAgfVxufVxuIl19