@alfresco/adf-content-services 8.1.0-15730481703 → 8.1.0-15782677066

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 (409) hide show
  1. package/esm2022/adf-content-services.mjs +5 -0
  2. package/esm2022/lib/agent/index.mjs +18 -0
  3. package/esm2022/lib/agent/public-api.mjs +18 -0
  4. package/esm2022/lib/agent/services/agent.service.mjs +60 -0
  5. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +27 -0
  6. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +42 -0
  7. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +77 -0
  8. package/esm2022/lib/api-factories/index.mjs +18 -0
  9. package/esm2022/lib/api-factories/public-api.mjs +19 -0
  10. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +18 -0
  11. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +78 -0
  12. package/esm2022/lib/aspect-list/aspect-list.component.mjs +140 -0
  13. package/esm2022/lib/aspect-list/aspect-list.module.mjs +35 -0
  14. package/esm2022/lib/aspect-list/index.mjs +18 -0
  15. package/esm2022/lib/aspect-list/public-api.mjs +24 -0
  16. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +83 -0
  17. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +86 -0
  18. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +52 -0
  19. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +26 -0
  20. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +42 -0
  21. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +167 -0
  22. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +35 -0
  23. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +66 -0
  24. package/esm2022/lib/breadcrumb/index.mjs +18 -0
  25. package/esm2022/lib/breadcrumb/public-api.mjs +20 -0
  26. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +22 -0
  27. package/esm2022/lib/category/categories-management/categories-management.component.mjs +309 -0
  28. package/esm2022/lib/category/category.module.mjs +33 -0
  29. package/esm2022/lib/category/index.mjs +18 -0
  30. package/esm2022/lib/category/models/category-node.interface.mjs +18 -0
  31. package/esm2022/lib/category/public-api.mjs +23 -0
  32. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +80 -0
  33. package/esm2022/lib/category/services/category.service.mjs +159 -0
  34. package/esm2022/lib/common/events/file.event.mjs +46 -0
  35. package/esm2022/lib/common/index.mjs +18 -0
  36. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +18 -0
  37. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +18 -0
  38. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +37 -0
  39. package/esm2022/lib/common/models/allowable-operations.enum.mjs +30 -0
  40. package/esm2022/lib/common/models/ecm-company.model.mjs +19 -0
  41. package/esm2022/lib/common/models/ecm-user.model.mjs +45 -0
  42. package/esm2022/lib/common/models/file.model.mjs +53 -0
  43. package/esm2022/lib/common/models/node-metadata.model.mjs +23 -0
  44. package/esm2022/lib/common/models/permissions.enum.mjs +32 -0
  45. package/esm2022/lib/common/public-api.mjs +37 -0
  46. package/esm2022/lib/common/services/card-view-content-update.service.mjs +55 -0
  47. package/esm2022/lib/common/services/content.service.mjs +180 -0
  48. package/esm2022/lib/common/services/discovery-api.service.mjs +79 -0
  49. package/esm2022/lib/common/services/favorites-api.service.mjs +84 -0
  50. package/esm2022/lib/common/services/nodes-api.service.mjs +251 -0
  51. package/esm2022/lib/common/services/people-content.service.mjs +138 -0
  52. package/esm2022/lib/common/services/rendition.service.mjs +270 -0
  53. package/esm2022/lib/common/services/saved-searches.service.mjs +206 -0
  54. package/esm2022/lib/common/services/sites.service.mjs +243 -0
  55. package/esm2022/lib/common/services/upload.service.mjs +391 -0
  56. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +55 -0
  57. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +491 -0
  58. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +129 -0
  59. package/esm2022/lib/content-metadata/content-metadata.module.mjs +36 -0
  60. package/esm2022/lib/content-metadata/index.mjs +18 -0
  61. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +18 -0
  62. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +18 -0
  63. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +18 -0
  64. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +18 -0
  65. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +18 -0
  66. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +28 -0
  67. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +18 -0
  68. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +18 -0
  69. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +18 -0
  70. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +18 -0
  71. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +18 -0
  72. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +18 -0
  73. package/esm2022/lib/content-metadata/public-api.mjs +31 -0
  74. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +107 -0
  75. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +106 -0
  76. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +76 -0
  77. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +40 -0
  78. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +108 -0
  79. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +33 -0
  80. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +99 -0
  81. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +134 -0
  82. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +52 -0
  83. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +169 -0
  84. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +256 -0
  85. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +618 -0
  86. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +66 -0
  87. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +18 -0
  88. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +206 -0
  89. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +50 -0
  90. package/esm2022/lib/content-node-selector/index.mjs +18 -0
  91. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +48 -0
  92. package/esm2022/lib/content-node-selector/public-api.mjs +25 -0
  93. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +168 -0
  94. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +288 -0
  95. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +102 -0
  96. package/esm2022/lib/content-node-share/content-node-share.module.mjs +35 -0
  97. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +18 -0
  98. package/esm2022/lib/content-node-share/index.mjs +18 -0
  99. package/esm2022/lib/content-node-share/public-api.mjs +22 -0
  100. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +83 -0
  101. package/esm2022/lib/content-type/content-type-dialog.component.mjs +58 -0
  102. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +18 -0
  103. package/esm2022/lib/content-type/content-type.service.mjs +52 -0
  104. package/esm2022/lib/content-type/index.mjs +20 -0
  105. package/esm2022/lib/content.module.mjs +277 -0
  106. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +52 -0
  107. package/esm2022/lib/dialogs/dialog.module.mjs +52 -0
  108. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +111 -0
  109. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +38 -0
  110. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +66 -0
  111. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +44 -0
  112. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +147 -0
  113. package/esm2022/lib/dialogs/index.mjs +18 -0
  114. package/esm2022/lib/dialogs/library/library.dialog.mjs +225 -0
  115. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +116 -0
  116. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  117. package/esm2022/lib/directives/auto-focus.directive.mjs +38 -0
  118. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +126 -0
  119. package/esm2022/lib/directives/content-directive.module.mjs +75 -0
  120. package/esm2022/lib/directives/index.mjs +18 -0
  121. package/esm2022/lib/directives/library-favorite.directive.mjs +119 -0
  122. package/esm2022/lib/directives/library-membership.directive.mjs +202 -0
  123. package/esm2022/lib/directives/node-counter.directive.mjs +60 -0
  124. package/esm2022/lib/directives/node-delete.directive.mjs +177 -0
  125. package/esm2022/lib/directives/node-download.directive.mjs +138 -0
  126. package/esm2022/lib/directives/node-favorite.directive.mjs +193 -0
  127. package/esm2022/lib/directives/node-lock.directive.mjs +57 -0
  128. package/esm2022/lib/directives/node-restore.directive.mjs +218 -0
  129. package/esm2022/lib/directives/public-api.mjs +28 -0
  130. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +60 -0
  131. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +196 -0
  132. package/esm2022/lib/document-list/components/document-list.component.mjs +964 -0
  133. package/esm2022/lib/document-list/components/document-list.token.mjs +21 -0
  134. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +43 -0
  135. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +107 -0
  136. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +133 -0
  137. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +93 -0
  138. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +88 -0
  139. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +120 -0
  140. package/esm2022/lib/document-list/components/node.event.mjs +30 -0
  141. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +83 -0
  142. package/esm2022/lib/document-list/data/image-resolver.model.mjs +18 -0
  143. package/esm2022/lib/document-list/data/row-filter.model.mjs +18 -0
  144. package/esm2022/lib/document-list/data/share-data-row.model.mjs +102 -0
  145. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +258 -0
  146. package/esm2022/lib/document-list/document-list.module.mjs +79 -0
  147. package/esm2022/lib/document-list/index.mjs +18 -0
  148. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +18 -0
  149. package/esm2022/lib/document-list/models/content-action.model.mjs +59 -0
  150. package/esm2022/lib/document-list/models/document-folder.model.mjs +23 -0
  151. package/esm2022/lib/document-list/models/node-action.enum.mjs +27 -0
  152. package/esm2022/lib/document-list/models/permissions-style.model.mjs +27 -0
  153. package/esm2022/lib/document-list/models/permissions.model.mjs +26 -0
  154. package/esm2022/lib/document-list/models/preset.model.mjs +257 -0
  155. package/esm2022/lib/document-list/public-api.mjs +47 -0
  156. package/esm2022/lib/document-list/services/custom-resources.service.mjs +378 -0
  157. package/esm2022/lib/document-list/services/document-actions.service.mjs +142 -0
  158. package/esm2022/lib/document-list/services/document-list.service.mjs +175 -0
  159. package/esm2022/lib/document-list/services/folder-actions.service.mjs +137 -0
  160. package/esm2022/lib/document-list/services/lock.service.mjs +72 -0
  161. package/esm2022/lib/document-list/services/node-actions.service.mjs +122 -0
  162. package/esm2022/lib/group/index.mjs +18 -0
  163. package/esm2022/lib/group/public-api.mjs +18 -0
  164. package/esm2022/lib/group/services/group.service.mjs +84 -0
  165. package/esm2022/lib/infinite-scroll-datasource/index.mjs +18 -0
  166. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +69 -0
  167. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +18 -0
  168. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +18 -0
  169. package/esm2022/lib/interfaces/index.mjs +18 -0
  170. package/esm2022/lib/interfaces/library-entity.interface.mjs +18 -0
  171. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +18 -0
  172. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +18 -0
  173. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +18 -0
  174. package/esm2022/lib/interfaces/public-api.mjs +23 -0
  175. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +19 -0
  176. package/esm2022/lib/legal-hold/index.mjs +18 -0
  177. package/esm2022/lib/legal-hold/public-api.mjs +18 -0
  178. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +136 -0
  179. package/esm2022/lib/material.module.mjs +183 -0
  180. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +43 -0
  181. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +65 -0
  182. package/esm2022/lib/mock/document-library.model.mock.mjs +84 -0
  183. package/esm2022/lib/mock/document-list.component.mock.mjs +364 -0
  184. package/esm2022/lib/mock/index.mjs +18 -0
  185. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +161 -0
  186. package/esm2022/lib/mock/public-api.mjs +27 -0
  187. package/esm2022/lib/mock/search-filter-mock.mjs +637 -0
  188. package/esm2022/lib/mock/search-query.mock.mjs +40 -0
  189. package/esm2022/lib/mock/search.component.mock.mjs +165 -0
  190. package/esm2022/lib/mock/search.service.mock.mjs +61 -0
  191. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +281 -0
  192. package/esm2022/lib/new-version-uploader/index.mjs +18 -0
  193. package/esm2022/lib/new-version-uploader/models/index.mjs +18 -0
  194. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +24 -0
  195. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +75 -0
  196. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +33 -0
  197. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +103 -0
  198. package/esm2022/lib/new-version-uploader/public-api.mjs +21 -0
  199. package/esm2022/lib/node-comments/index.mjs +18 -0
  200. package/esm2022/lib/node-comments/node-comments.component.mjs +44 -0
  201. package/esm2022/lib/node-comments/node-comments.module.mjs +33 -0
  202. package/esm2022/lib/node-comments/public-api.mjs +20 -0
  203. package/esm2022/lib/node-comments/services/node-comments.service.mjs +85 -0
  204. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +18 -0
  205. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +124 -0
  206. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +103 -0
  207. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +70 -0
  208. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +45 -0
  209. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +67 -0
  210. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +56 -0
  211. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +103 -0
  212. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +88 -0
  213. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +219 -0
  214. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +134 -0
  215. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +88 -0
  216. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +82 -0
  217. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +112 -0
  218. package/esm2022/lib/permission-manager/index.mjs +18 -0
  219. package/esm2022/lib/permission-manager/models/member.model.mjs +59 -0
  220. package/esm2022/lib/permission-manager/models/permission.model.mjs +29 -0
  221. package/esm2022/lib/permission-manager/models/role.model.mjs +18 -0
  222. package/esm2022/lib/permission-manager/permission-manager.module.mjs +84 -0
  223. package/esm2022/lib/permission-manager/public-api.mjs +36 -0
  224. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +78 -0
  225. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +299 -0
  226. package/esm2022/lib/pipes/content-pipe.module.mjs +37 -0
  227. package/esm2022/lib/pipes/index.mjs +18 -0
  228. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +69 -0
  229. package/esm2022/lib/pipes/public-api.mjs +19 -0
  230. package/esm2022/lib/prediction/index.mjs +18 -0
  231. package/esm2022/lib/prediction/public-api.mjs +18 -0
  232. package/esm2022/lib/prediction/services/index.mjs +18 -0
  233. package/esm2022/lib/prediction/services/prediction.service.mjs +57 -0
  234. package/esm2022/lib/search/components/empty-search-result.component.mjs +27 -0
  235. package/esm2022/lib/search/components/index.mjs +43 -0
  236. package/esm2022/lib/search/components/reset-search.directive.mjs +41 -0
  237. package/esm2022/lib/search/components/search-check-list/index.mjs +18 -0
  238. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +159 -0
  239. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +18 -0
  240. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +170 -0
  241. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +47 -0
  242. package/esm2022/lib/search/components/search-control.component.mjs +181 -0
  243. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +22 -0
  244. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +23 -0
  245. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +23 -0
  246. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +197 -0
  247. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +18 -0
  248. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +201 -0
  249. package/esm2022/lib/search/components/search-datetime-range/index.mjs +18 -0
  250. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +224 -0
  251. package/esm2022/lib/search/components/search-facet-field/index.mjs +18 -0
  252. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +133 -0
  253. package/esm2022/lib/search/components/search-filter/index.mjs +19 -0
  254. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +46 -0
  255. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +81 -0
  256. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +18 -0
  257. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +155 -0
  258. package/esm2022/lib/search/components/search-filter-chips/index.mjs +23 -0
  259. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +105 -0
  260. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +110 -0
  261. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +129 -0
  262. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +64 -0
  263. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +44 -0
  264. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +110 -0
  265. package/esm2022/lib/search/components/search-filter-container/index.mjs +18 -0
  266. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +123 -0
  267. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +19 -0
  268. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +36 -0
  269. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +64 -0
  270. package/esm2022/lib/search/components/search-form/index.mjs +18 -0
  271. package/esm2022/lib/search/components/search-form/search-form.component.mjs +53 -0
  272. package/esm2022/lib/search/components/search-input/index.mjs +18 -0
  273. package/esm2022/lib/search/components/search-input/search-input.component.mjs +109 -0
  274. package/esm2022/lib/search/components/search-logical-filter/index.mjs +18 -0
  275. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +164 -0
  276. package/esm2022/lib/search/components/search-number-range/index.mjs +18 -0
  277. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +155 -0
  278. package/esm2022/lib/search/components/search-panel/index.mjs +18 -0
  279. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +44 -0
  280. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +18 -0
  281. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +23 -0
  282. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +26 -0
  283. package/esm2022/lib/search/components/search-properties/index.mjs +22 -0
  284. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +244 -0
  285. package/esm2022/lib/search/components/search-properties/search-properties.mjs +18 -0
  286. package/esm2022/lib/search/components/search-radio/index.mjs +18 -0
  287. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +146 -0
  288. package/esm2022/lib/search/components/search-slider/index.mjs +18 -0
  289. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +120 -0
  290. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +18 -0
  291. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +77 -0
  292. package/esm2022/lib/search/components/search-text/index.mjs +18 -0
  293. package/esm2022/lib/search/components/search-text/search-text.component.mjs +135 -0
  294. package/esm2022/lib/search/components/search-widget-container/index.mjs +18 -0
  295. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +113 -0
  296. package/esm2022/lib/search/components/search.component.mjs +153 -0
  297. package/esm2022/lib/search/forms/index.mjs +19 -0
  298. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +23 -0
  299. package/esm2022/lib/search/forms/search-term-validator.mjs +26 -0
  300. package/esm2022/lib/search/index.mjs +18 -0
  301. package/esm2022/lib/search/mocks/index.mjs +18 -0
  302. package/esm2022/lib/search/mocks/search.service.mock.mjs +56 -0
  303. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +22 -0
  304. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +18 -0
  305. package/esm2022/lib/search/models/facet-field.interface.mjs +29 -0
  306. package/esm2022/lib/search/models/facet-query.interface.mjs +18 -0
  307. package/esm2022/lib/search/models/facet-widget.interface.mjs +18 -0
  308. package/esm2022/lib/search/models/filter-query.interface.mjs +18 -0
  309. package/esm2022/lib/search/models/filter-search.interface.mjs +18 -0
  310. package/esm2022/lib/search/models/index.mjs +34 -0
  311. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +31 -0
  312. package/esm2022/lib/search/models/search-category.interface.mjs +18 -0
  313. package/esm2022/lib/search/models/search-configuration.interface.mjs +18 -0
  314. package/esm2022/lib/search/models/search-filter-list.model.mjs +148 -0
  315. package/esm2022/lib/search/models/search-form.interface.mjs +18 -0
  316. package/esm2022/lib/search/models/search-range.interface.mjs +18 -0
  317. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +18 -0
  318. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +18 -0
  319. package/esm2022/lib/search/models/search-widget.interface.mjs +18 -0
  320. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +18 -0
  321. package/esm2022/lib/search/public-api.mjs +24 -0
  322. package/esm2022/lib/search/search-configuration.token.mjs +19 -0
  323. package/esm2022/lib/search/search.module.mjs +192 -0
  324. package/esm2022/lib/search/services/base-query-builder.service.mjs +509 -0
  325. package/esm2022/lib/search/services/index.mjs +24 -0
  326. package/esm2022/lib/search/services/search-configuration.service.mjs +50 -0
  327. package/esm2022/lib/search/services/search-facet-filters.service.mjs +374 -0
  328. package/esm2022/lib/search/services/search-filter.service.mjs +56 -0
  329. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +136 -0
  330. package/esm2022/lib/search/services/search-query-builder.service.mjs +48 -0
  331. package/esm2022/lib/search/services/search.service.mjs +89 -0
  332. package/esm2022/lib/search-ai/index.mjs +18 -0
  333. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +18 -0
  334. package/esm2022/lib/search-ai/public-api.mjs +19 -0
  335. package/esm2022/lib/search-ai/services/search-ai.service.mjs +103 -0
  336. package/esm2022/lib/security/index.mjs +18 -0
  337. package/esm2022/lib/security/public-api.mjs +18 -0
  338. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +18 -0
  339. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +18 -0
  340. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +274 -0
  341. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +43 -0
  342. package/esm2022/lib/services/alfresco-api.interface.mjs +18 -0
  343. package/esm2022/lib/services/alfresco-api.service.mjs +120 -0
  344. package/esm2022/lib/services/index.mjs +18 -0
  345. package/esm2022/lib/services/public-api.mjs +18 -0
  346. package/esm2022/lib/tag/index.mjs +18 -0
  347. package/esm2022/lib/tag/public-api.mjs +24 -0
  348. package/esm2022/lib/tag/services/tag.service.mjs +171 -0
  349. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +115 -0
  350. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +98 -0
  351. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +80 -0
  352. package/esm2022/lib/tag/tag.module.mjs +37 -0
  353. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +27 -0
  354. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +371 -0
  355. package/esm2022/lib/testing/content.testing.module.mjs +56 -0
  356. package/esm2022/lib/tree/components/tree.component.mjs +313 -0
  357. package/esm2022/lib/tree/index.mjs +18 -0
  358. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +18 -0
  359. package/esm2022/lib/tree/models/tree-node.interface.mjs +22 -0
  360. package/esm2022/lib/tree/models/tree-response.interface.mjs +18 -0
  361. package/esm2022/lib/tree/public-api.mjs +23 -0
  362. package/esm2022/lib/tree/services/tree.service.mjs +134 -0
  363. package/esm2022/lib/tree/tree.module.mjs +33 -0
  364. package/esm2022/lib/tree-view/components/tree-view.component.mjs +76 -0
  365. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +99 -0
  366. package/esm2022/lib/tree-view/index.mjs +18 -0
  367. package/esm2022/lib/tree-view/models/tree-view.model.mjs +28 -0
  368. package/esm2022/lib/tree-view/public-api.mjs +22 -0
  369. package/esm2022/lib/tree-view/services/tree-view.service.mjs +38 -0
  370. package/esm2022/lib/tree-view/tree-view.module.mjs +33 -0
  371. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +176 -0
  372. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +191 -0
  373. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +93 -0
  374. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +124 -0
  375. package/esm2022/lib/upload/components/upload-button.component.mjs +134 -0
  376. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +112 -0
  377. package/esm2022/lib/upload/components/upload-files.event.mjs +41 -0
  378. package/esm2022/lib/upload/components/upload-version-button.component.mjs +55 -0
  379. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +154 -0
  380. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +75 -0
  381. package/esm2022/lib/upload/index.mjs +18 -0
  382. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +39 -0
  383. package/esm2022/lib/upload/public-api.mjs +29 -0
  384. package/esm2022/lib/upload/upload.module.mjs +72 -0
  385. package/esm2022/lib/version-compatibility/index.mjs +18 -0
  386. package/esm2022/lib/version-compatibility/public-api.mjs +20 -0
  387. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +26 -0
  388. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +53 -0
  389. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +33 -0
  390. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +76 -0
  391. package/esm2022/lib/version-manager/content-version.service.mjs +53 -0
  392. package/esm2022/lib/version-manager/index.mjs +18 -0
  393. package/esm2022/lib/version-manager/public-api.mjs +23 -0
  394. package/esm2022/lib/version-manager/version-comparison.component.mjs +43 -0
  395. package/esm2022/lib/version-manager/version-list.component.mjs +216 -0
  396. package/esm2022/lib/version-manager/version-manager.component.mjs +146 -0
  397. package/esm2022/lib/version-manager/version-manager.module.mjs +48 -0
  398. package/esm2022/lib/version-manager/version-upload.component.mjs +155 -0
  399. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +33 -0
  400. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +409 -0
  401. package/esm2022/lib/viewer/index.mjs +18 -0
  402. package/esm2022/lib/viewer/public-api.mjs +19 -0
  403. package/esm2022/public-api.mjs +56 -0
  404. package/fesm2022/adf-content-services.mjs +753 -739
  405. package/fesm2022/adf-content-services.mjs.map +1 -1
  406. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  407. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  408. package/lib/viewer/components/alfresco-viewer.component.d.ts +6 -2
  409. package/package.json +5 -3
@@ -0,0 +1,27 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Available modes for tags creator.
19
+ * Create mode allows only for creating completely new tags.
20
+ * Create and Assign mode allows for both - creation of new tags and selection of existing tags.
21
+ */
22
+ export var TagsCreatorMode;
23
+ (function (TagsCreatorMode) {
24
+ TagsCreatorMode[TagsCreatorMode["CREATE"] = 0] = "CREATE";
25
+ TagsCreatorMode[TagsCreatorMode["CREATE_AND_ASSIGN"] = 1] = "CREATE_AND_ASSIGN";
26
+ })(TagsCreatorMode || (TagsCreatorMode = {}));
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jcmVhdG9yLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3RhZy90YWdzLWNyZWF0b3IvdGFncy1jcmVhdG9yLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIseURBQU0sQ0FBQTtJQUNOLCtFQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBBdmFpbGFibGUgbW9kZXMgZm9yIHRhZ3MgY3JlYXRvci5cbiAqIENyZWF0ZSBtb2RlIGFsbG93cyBvbmx5IGZvciBjcmVhdGluZyBjb21wbGV0ZWx5IG5ldyB0YWdzLlxuICogQ3JlYXRlIGFuZCBBc3NpZ24gbW9kZSBhbGxvd3MgZm9yIGJvdGggLSBjcmVhdGlvbiBvZiBuZXcgdGFncyBhbmQgc2VsZWN0aW9uIG9mIGV4aXN0aW5nIHRhZ3MuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ3NDcmVhdG9yTW9kZSB7XG4gICAgQ1JFQVRFLFxuICAgIENSRUFURV9BTkRfQVNTSUdOXG59XG4iXX0=
@@ -0,0 +1,371 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DynamicChipListComponent, NotificationService } from '@alfresco/adf-core';
18
+ import { Component, DestroyRef, ElementRef, EventEmitter, HostBinding, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
19
+ import { CommonModule } from '@angular/common';
20
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
21
+ import { MatButtonModule } from '@angular/material/button';
22
+ import { MatChipsModule } from '@angular/material/chips';
23
+ import { MatIconModule } from '@angular/material/icon';
24
+ import { MatInputModule } from '@angular/material/input';
25
+ import { MatListModule } from '@angular/material/list';
26
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
27
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
28
+ import { TranslateModule } from '@ngx-translate/core';
29
+ import { EMPTY, forkJoin, Subject, timer } from 'rxjs';
30
+ import { debounce, distinctUntilChanged, finalize, first, map, takeUntil, tap } from 'rxjs/operators';
31
+ import { AutoFocusDirective } from '../../directives';
32
+ import { TagService } from '../services/tag.service';
33
+ import { TagsCreatorMode } from './tags-creator-mode';
34
+ import * as i0 from "@angular/core";
35
+ import * as i1 from "../services/tag.service";
36
+ import * as i2 from "@alfresco/adf-core";
37
+ import * as i3 from "@angular/common";
38
+ import * as i4 from "@angular/material/input";
39
+ import * as i5 from "@angular/material/form-field";
40
+ import * as i6 from "@angular/forms";
41
+ import * as i7 from "@ngx-translate/core";
42
+ import * as i8 from "@angular/material/list";
43
+ import * as i9 from "@angular/material/progress-spinner";
44
+ const DEFAULT_TAGS_SORTING = {
45
+ orderBy: 'tag',
46
+ direction: 'asc'
47
+ };
48
+ /**
49
+ * Allows to create multiple tags. That component contains input and two lists. Top list is all created tags, bottom list is searched tags based on input's value.
50
+ */
51
+ export class TagsCreatorComponent {
52
+ /**
53
+ * Default top list.
54
+ *
55
+ * @param tags tags which should be displayed as default tags for top list.
56
+ */
57
+ set tags(tags) {
58
+ this._tags = [...tags];
59
+ this.tagsToDisplay = this.tags.map((tag) => ({ id: tag, name: tag }));
60
+ this._initialExistingTags = null;
61
+ this._existingTags = null;
62
+ this.loadTags(this.tagNameControl.value);
63
+ this.tagNameControl.updateValueAndValidity();
64
+ }
65
+ get tags() {
66
+ return this._tags;
67
+ }
68
+ /**
69
+ * Decides if input for tags creation/searching should be visible. When input is hidden then panel of existing tags is hidden as well.
70
+ *
71
+ * @param tagNameControlVisible true if input should be visible, false otherwise.
72
+ */
73
+ set tagNameControlVisible(tagNameControlVisible) {
74
+ this._tagNameControlVisible = tagNameControlVisible;
75
+ if (tagNameControlVisible) {
76
+ this._existingTagsPanelVisible = true;
77
+ setTimeout(() => {
78
+ this.tagNameInputElement?.nativeElement?.scrollIntoView();
79
+ });
80
+ }
81
+ else {
82
+ this._existingTagsPanelVisible = false;
83
+ this.clearTagNameInput();
84
+ }
85
+ this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);
86
+ }
87
+ get tagNameControlVisible() {
88
+ return this._tagNameControlVisible;
89
+ }
90
+ constructor(tagService, notificationService) {
91
+ this.tagService = tagService;
92
+ this.notificationService = notificationService;
93
+ /**
94
+ * False if tags can be removed from top list, true otherwise.
95
+ */
96
+ this.disabledTagsRemoving = false;
97
+ /**
98
+ * Emitted when bottom list is showing or hiding.
99
+ */
100
+ this.existingTagsPanelVisibilityChange = new EventEmitter();
101
+ /**
102
+ * Emitted when tags in top list are changed.
103
+ */
104
+ this.tagsChange = new EventEmitter();
105
+ this.tagsToDisplay = [];
106
+ this.nameErrorMessagesByErrors = new Map([
107
+ ['duplicatedExistingTag', 'EXISTING_TAG'],
108
+ ['duplicatedAddedTag', 'ALREADY_ADDED_TAG'],
109
+ ['emptyTag', 'EMPTY_TAG'],
110
+ ['specialCharacters', 'SPECIAL_CHARACTERS']
111
+ ]);
112
+ this.existingTagsListLimit = 15;
113
+ this.exactTagSet$ = new Subject();
114
+ this._tags = [];
115
+ this._tagNameControl = new FormControl('', [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyTag, this.validateSpecialCharacters], this.validateIfNotExistingTag.bind(this));
116
+ this._tagNameControlVisible = false;
117
+ this._tagNameErrorMessageKey = '';
118
+ this._spinnerVisible = false;
119
+ this._typing = false;
120
+ this._tagsListScrollbarVisible = false;
121
+ this.cancelExistingTagsLoading$ = new Subject();
122
+ this.destroyRef = inject(DestroyRef);
123
+ }
124
+ ngOnInit() {
125
+ this.tagNameControl.valueChanges
126
+ .pipe(map((name) => name.trim()), distinctUntilChanged((previous, current) => {
127
+ const valueNotChanged = previous === current;
128
+ if (valueNotChanged) {
129
+ this.exactTagSet$.next();
130
+ }
131
+ return valueNotChanged;
132
+ }), tap((name) => {
133
+ this._typing = true;
134
+ if (name) {
135
+ this._spinnerVisible = true;
136
+ this._existingTagsPanelVisible = true;
137
+ }
138
+ this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);
139
+ this.cancelExistingTagsLoading$.next();
140
+ this._initialExistingTags = null;
141
+ this._existingTags = null;
142
+ }), debounce((name) => (name ? timer(300) : EMPTY)), takeUntilDestroyed(this.destroyRef))
143
+ .subscribe((name) => this.onTagNameControlValueChange(name));
144
+ this.tagNameControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setTagNameControlErrorMessageKey());
145
+ this.setTagNameControlErrorMessageKey();
146
+ }
147
+ ngOnDestroy() {
148
+ this.cancelExistingTagsLoading$.next();
149
+ this.cancelExistingTagsLoading$.complete();
150
+ }
151
+ get hostClass() {
152
+ return this.existingTagsPanelVisible;
153
+ }
154
+ get tagNameControl() {
155
+ return this._tagNameControl;
156
+ }
157
+ /*
158
+ * Returns `true` if tags empty and non editable state, otherwise `false`
159
+ */
160
+ get showEmptyTagMessage() {
161
+ return this.tags?.length === 0 && !this.tagNameControlVisible;
162
+ }
163
+ get existingTags() {
164
+ return this._existingTags;
165
+ }
166
+ get tagNameErrorMessageKey() {
167
+ return this._tagNameErrorMessageKey;
168
+ }
169
+ get spinnerVisible() {
170
+ return this._spinnerVisible;
171
+ }
172
+ get typing() {
173
+ return this._typing;
174
+ }
175
+ get tagsListScrollbarVisible() {
176
+ return this._tagsListScrollbarVisible;
177
+ }
178
+ get existingTagsPanelVisible() {
179
+ return this._existingTagsPanelVisible;
180
+ }
181
+ /**
182
+ * Add tags to top list using value which is set in input. Adding tag is not allowed when value in input is invalid
183
+ * or if user is still typing what means that validation for input is not called yet.
184
+ */
185
+ addTag() {
186
+ if (!this._typing && !this.tagNameControl.invalid) {
187
+ this.tags = [...this.tags, this.tagNameControl.value.trim()];
188
+ this.clearTagNameInput();
189
+ this.checkScrollbarVisibility();
190
+ this.tagsChange.emit(this.tags);
191
+ }
192
+ }
193
+ /**
194
+ * Remove tag from top list. In case that tag was part of search result then that tag is moved to bottom list
195
+ * (list of existing tags) after removing so user can reselect it again later.
196
+ *
197
+ * @param tag tag's name which should be removed from top list.
198
+ */
199
+ removeTag(tag) {
200
+ this.removeTagFromArray(this.tags, tag);
201
+ this.tags = [...this.tags];
202
+ this.tagNameControl.updateValueAndValidity();
203
+ this.updateExistingTagsListOnRemoveFromTagsToConfirm(tag);
204
+ this.exactTagSet$.next();
205
+ this.checkScrollbarVisibility();
206
+ this.tagsChange.emit(this.tags);
207
+ }
208
+ /**
209
+ * Called when user selects any tag from list of existing tags. It moves tag from existing tags list to top list.
210
+ *
211
+ * @param selectedTag changes
212
+ */
213
+ addExistingTagToTagsToAssign(selectedTag) {
214
+ if (!this.isOnlyCreateMode()) {
215
+ this.tags.push(selectedTag.entry.tag);
216
+ this.removeTagFromArray(this.existingTags, selectedTag);
217
+ this.tagNameControl.updateValueAndValidity();
218
+ this.tags = [...this.tags];
219
+ this.exactTagSet$.next();
220
+ this.tagsChange.emit(this.tags);
221
+ }
222
+ }
223
+ /**
224
+ * Checks if component is in Create mode.
225
+ *
226
+ * @returns `true` if `Create` mode, `false` otherwise.
227
+ */
228
+ isOnlyCreateMode() {
229
+ return this.mode === TagsCreatorMode.CREATE;
230
+ }
231
+ onTagNameControlValueChange(name) {
232
+ this.tagNameControl.markAsTouched();
233
+ this.loadTags(name);
234
+ }
235
+ loadTags(name) {
236
+ if (name && !this.tagNameControl.hasError('specialCharacters')) {
237
+ forkJoin({
238
+ exactResult: this.tagService.findTagByName(name),
239
+ searchedResult: this.tagService.searchTags(name, DEFAULT_TAGS_SORTING, false, 0, this.existingTagsListLimit)
240
+ })
241
+ .pipe(takeUntil(this.cancelExistingTagsLoading$), finalize(() => (this._typing = false)))
242
+ .subscribe({
243
+ next: ({ exactResult, searchedResult }) => {
244
+ if (exactResult) {
245
+ this.existingExactTag = exactResult;
246
+ this.removeExactTagFromSearchedResult(searchedResult);
247
+ searchedResult.list.entries.unshift(exactResult);
248
+ }
249
+ else {
250
+ this.existingExactTag = null;
251
+ }
252
+ this._initialExistingTags = searchedResult.list.entries;
253
+ this.excludeAlreadyAddedTags(this._initialExistingTags);
254
+ this.exactTagSet$.next();
255
+ this._spinnerVisible = false;
256
+ },
257
+ error: () => {
258
+ this.notificationService.showError('TAG.TAGS_CREATOR.ERRORS.FETCH_TAGS');
259
+ this._spinnerVisible = false;
260
+ }
261
+ });
262
+ }
263
+ else {
264
+ this.existingExactTag = null;
265
+ this._spinnerVisible = false;
266
+ }
267
+ }
268
+ removeExactTagFromSearchedResult(searchedResult) {
269
+ const exactTagIndex = searchedResult.list.entries.findIndex((row) => this.compareTags(row.entry.tag, this.existingExactTag.entry.tag));
270
+ if (exactTagIndex > -1) {
271
+ searchedResult.list.entries.splice(exactTagIndex, 1);
272
+ }
273
+ }
274
+ validateIfNotExistingTag(tagNameControl) {
275
+ return this.exactTagSet$.pipe(map(() => this.compareTags(tagNameControl.value, this.existingExactTag?.entry?.tag) ? { duplicatedExistingTag: true } : null), first());
276
+ }
277
+ validateIfNotAlreadyAdded(tagNameControl) {
278
+ return this.tags.some((tag) => this.compareTags(tag, tagNameControl.value)) ? { duplicatedAddedTag: true } : null;
279
+ }
280
+ compareTags(tagName1, tagName2) {
281
+ return tagName1?.trim().toUpperCase() === tagName2?.trim().toUpperCase();
282
+ }
283
+ validateEmptyTag(tagNameControl) {
284
+ return tagNameControl.value.length && !tagNameControl.value.trim() ? { emptyTag: true } : null;
285
+ }
286
+ validateSpecialCharacters(tagNameControl) {
287
+ const specialSymbolsRegex = /[{}()^':"\\|<>/?.*]/;
288
+ return tagNameControl.value.length && specialSymbolsRegex.test(tagNameControl.value) ? { specialCharacters: true } : null;
289
+ }
290
+ setTagNameControlErrorMessageKey() {
291
+ this._tagNameErrorMessageKey = this.tagNameControl.invalid
292
+ ? `TAG.TAGS_CREATOR.ERRORS.${this.nameErrorMessagesByErrors.get(Object.keys(this.tagNameControl.errors)[0])}`
293
+ : '';
294
+ }
295
+ checkScrollbarVisibility() {
296
+ setTimeout(() => {
297
+ this._tagsListScrollbarVisible = this.tagsListElement.nativeElement.scrollHeight > this.tagsListElement.nativeElement.clientHeight;
298
+ });
299
+ }
300
+ removeTagFromArray(tags, tag) {
301
+ tags.splice(tags.indexOf(tag), 1);
302
+ }
303
+ updateExistingTagsListOnRemoveFromTagsToConfirm(tag) {
304
+ const entryForTagAddedToExistingTags = this._initialExistingTags?.find((tagEntry) => tagEntry.entry.tag === tag);
305
+ if (entryForTagAddedToExistingTags) {
306
+ this.existingTags.unshift(entryForTagAddedToExistingTags);
307
+ if (this.existingExactTag) {
308
+ if (tag !== this.existingExactTag.entry.tag) {
309
+ this.removeTagFromArray(this.existingTags, this.existingExactTag);
310
+ this.sortExistingTags();
311
+ this.existingTags.unshift(this.existingExactTag);
312
+ }
313
+ }
314
+ else {
315
+ this.sortExistingTags();
316
+ }
317
+ this.exactTagSet$.next();
318
+ }
319
+ }
320
+ sortExistingTags() {
321
+ this.existingTags.sort((tagEntry1, tagEntry2) => tagEntry1.entry.tag.localeCompare(tagEntry2.entry.tag));
322
+ }
323
+ excludeAlreadyAddedTags(tags) {
324
+ this._existingTags = tags.filter((tag) => !this.tags.includes(tag.entry.tag));
325
+ }
326
+ clearTagNameInput() {
327
+ this.tagNameControl.setValue('');
328
+ this.tagNameControl.markAsUntouched();
329
+ }
330
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TagsCreatorComponent, deps: [{ token: i1.TagService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
331
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TagsCreatorComponent, isStandalone: true, selector: "adf-tags-creator", inputs: { mode: "mode", disabledTagsRemoving: "disabledTagsRemoving", tags: "tags", tagNameControlVisible: "tagNameControlVisible" }, outputs: { existingTagsPanelVisibilityChange: "existingTagsPanelVisibilityChange", tagsChange: "tagsChange" }, host: { properties: { "class.adf-creator-with-existing-tags-panel": "this.hostClass" } }, viewQueries: [{ propertyName: "tagsListElement", first: true, predicate: ["tagsList"], descendants: true }, { propertyName: "tagNameInputElement", first: true, predicate: ["tagNameInput"], descendants: true }], ngImport: i0, template: "<div class=\"adf-tags-creation\">\n <div *ngIf=\"tagNameControlVisible\" class=\"adf-tag-name-field\">\n <input\n #tagNameInput\n class=\"adf-tag-search-field\"\n matInput\n autocomplete=\"off\"\n [formControl]=\"tagNameControl\"\n (keyup.enter)=\"addTag()\"\n adf-auto-focus\n placeholder=\"{{ 'TAG.TAGS_CREATOR.TAG_SEARCH_PLACEHOLDER' | translate }}\"\n />\n <mat-error *ngIf=\"tagNameControl.invalid && tagNameControl.touched\">\n {{ tagNameErrorMessageKey | translate }}\n </mat-error>\n </div>\n <p class=\"adf-no-tags-message\" *ngIf=\"showEmptyTagMessage\">\n {{ 'TAG.TAGS_CREATOR.NO_TAGS_CREATED' | translate }}\n </p>\n <div class=\"adf-tags-list\" [class.adf-tags-list-fixed]=\"!tagNameControlVisible\" #tagsList>\n <ng-container *ngIf=\"tags?.length > 0\">\n <adf-dynamic-chip-list\n class=\"adf-tags-chips-container\"\n [chips]=\"tagsToDisplay\"\n [disableDelete]=\"disabledTagsRemoving\"\n (removedChip)=\"removeTag($event)\" />\n </ng-container>\n </div>\n</div>\n<div class=\"adf-existing-tags-panel\" *ngIf=\"existingTagsPanelVisible\">\n <span\n *ngIf=\"!spinnerVisible || existingTags\"\n class=\"adf-create-tag-label\"\n (click)=\"addTag()\"\n role=\"button\"\n tabindex=\"0\"\n (keyup.enter)=\"addTag()\"\n [hidden]=\"!tagNameControl.value || tagNameControl.invalid || typing\"\n >\n {{ 'TAG.TAGS_CREATOR.CREATE_TAG' | translate : { tag: tagNameControl.value } }}\n </span>\n <p *ngIf=\"!spinnerVisible && existingTags\" class=\"adf-existing-tags-label\">\n {{ (isOnlyCreateMode() ? 'TAG.TAGS_CREATOR.EXISTING_TAGS' : 'TAG.TAGS_CREATOR.EXISTING_TAGS_SELECTION') | translate }}\n </p>\n <div class=\"adf-tags-list\">\n <mat-list *ngIf=\"!spinnerVisible && existingTags\" [disabled]=\"isOnlyCreateMode()\">\n <mat-list-item *ngFor=\"let tagRow of existingTags\" class=\"adf-tag\"\n (click)=\"addExistingTagToTagsToAssign(tagRow)\">\n {{ tagRow.entry.tag }}\n </mat-list-item>\n <p *ngIf=\"!existingTags?.length\">{{ 'TAG.TAGS_CREATOR.NO_EXISTING_TAGS' | translate }}</p>\n </mat-list>\n <mat-spinner\n *ngIf=\"spinnerVisible\"\n class=\"adf-tags-creator-spinner\"\n [diameter]=\"50\"\n [attr.aria-label]=\"'TAG.TAGS_CREATOR.TAGS_LOADING' | translate\"\n />\n </div>\n</div>\n", styles: ["adf-tags-creator{display:block}adf-tags-creator .adf-no-tags-message{margin-top:28.5px;margin-bottom:0;height:30px}adf-tags-creator .adf-tag-name-field,adf-tags-creator .adf-tag-name-field[hidden]{display:flex;flex-direction:column;margin-right:12px}adf-tags-creator .adf-tag-search-field{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:5px 6px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}adf-tags-creator .adf-create-tag-label{color:var(--theme-primary-color);cursor:pointer;margin-top:-1px;padding-left:12px;overflow-wrap:anywhere;display:inline-block;padding-right:12px;overflow:auto}adf-tags-creator .adf-tags-list{margin-top:8px}adf-tags-creator .adf-tags-chip{height:auto}adf-tags-creator .adf-existing-tags-panel{border-top-left-radius:6px;border-top-right-radius:6px;width:100%}adf-tags-creator .adf-existing-tags-panel .adf-existing-tags-label{font-size:10px;color:var(--theme-secondary-text-color);padding-left:12px;margin-bottom:2px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list{padding-left:12px;margin-top:-2px;padding-right:0;display:flex;flex-direction:column}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag{margin:0;padding:4px;font-size:14px;height:auto;width:unset;background-color:inherit;color:inherit}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag span{padding:0}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tags-creator-spinner{margin:auto;overflow:unset;min-height:62px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden;word-break:break-all}adf-tags-creator [hidden]{visibility:hidden;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: DynamicChipListComponent, selector: "adf-dynamic-chip-list", inputs: ["pagination", "chips", "showDelete", "disableDelete", "limitChipsDisplayed", "roundUpChips"], outputs: ["displayNext", "removedChip"] }], encapsulation: i0.ViewEncapsulation.None }); }
332
+ }
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TagsCreatorComponent, decorators: [{
334
+ type: Component,
335
+ args: [{ selector: 'adf-tags-creator', standalone: true, imports: [
336
+ CommonModule,
337
+ MatInputModule,
338
+ ReactiveFormsModule,
339
+ AutoFocusDirective,
340
+ TranslateModule,
341
+ MatChipsModule,
342
+ MatButtonModule,
343
+ MatIconModule,
344
+ MatListModule,
345
+ MatProgressSpinnerModule,
346
+ DynamicChipListComponent
347
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-tags-creation\">\n <div *ngIf=\"tagNameControlVisible\" class=\"adf-tag-name-field\">\n <input\n #tagNameInput\n class=\"adf-tag-search-field\"\n matInput\n autocomplete=\"off\"\n [formControl]=\"tagNameControl\"\n (keyup.enter)=\"addTag()\"\n adf-auto-focus\n placeholder=\"{{ 'TAG.TAGS_CREATOR.TAG_SEARCH_PLACEHOLDER' | translate }}\"\n />\n <mat-error *ngIf=\"tagNameControl.invalid && tagNameControl.touched\">\n {{ tagNameErrorMessageKey | translate }}\n </mat-error>\n </div>\n <p class=\"adf-no-tags-message\" *ngIf=\"showEmptyTagMessage\">\n {{ 'TAG.TAGS_CREATOR.NO_TAGS_CREATED' | translate }}\n </p>\n <div class=\"adf-tags-list\" [class.adf-tags-list-fixed]=\"!tagNameControlVisible\" #tagsList>\n <ng-container *ngIf=\"tags?.length > 0\">\n <adf-dynamic-chip-list\n class=\"adf-tags-chips-container\"\n [chips]=\"tagsToDisplay\"\n [disableDelete]=\"disabledTagsRemoving\"\n (removedChip)=\"removeTag($event)\" />\n </ng-container>\n </div>\n</div>\n<div class=\"adf-existing-tags-panel\" *ngIf=\"existingTagsPanelVisible\">\n <span\n *ngIf=\"!spinnerVisible || existingTags\"\n class=\"adf-create-tag-label\"\n (click)=\"addTag()\"\n role=\"button\"\n tabindex=\"0\"\n (keyup.enter)=\"addTag()\"\n [hidden]=\"!tagNameControl.value || tagNameControl.invalid || typing\"\n >\n {{ 'TAG.TAGS_CREATOR.CREATE_TAG' | translate : { tag: tagNameControl.value } }}\n </span>\n <p *ngIf=\"!spinnerVisible && existingTags\" class=\"adf-existing-tags-label\">\n {{ (isOnlyCreateMode() ? 'TAG.TAGS_CREATOR.EXISTING_TAGS' : 'TAG.TAGS_CREATOR.EXISTING_TAGS_SELECTION') | translate }}\n </p>\n <div class=\"adf-tags-list\">\n <mat-list *ngIf=\"!spinnerVisible && existingTags\" [disabled]=\"isOnlyCreateMode()\">\n <mat-list-item *ngFor=\"let tagRow of existingTags\" class=\"adf-tag\"\n (click)=\"addExistingTagToTagsToAssign(tagRow)\">\n {{ tagRow.entry.tag }}\n </mat-list-item>\n <p *ngIf=\"!existingTags?.length\">{{ 'TAG.TAGS_CREATOR.NO_EXISTING_TAGS' | translate }}</p>\n </mat-list>\n <mat-spinner\n *ngIf=\"spinnerVisible\"\n class=\"adf-tags-creator-spinner\"\n [diameter]=\"50\"\n [attr.aria-label]=\"'TAG.TAGS_CREATOR.TAGS_LOADING' | translate\"\n />\n </div>\n</div>\n", styles: ["adf-tags-creator{display:block}adf-tags-creator .adf-no-tags-message{margin-top:28.5px;margin-bottom:0;height:30px}adf-tags-creator .adf-tag-name-field,adf-tags-creator .adf-tag-name-field[hidden]{display:flex;flex-direction:column;margin-right:12px}adf-tags-creator .adf-tag-search-field{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:5px 6px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}adf-tags-creator .adf-create-tag-label{color:var(--theme-primary-color);cursor:pointer;margin-top:-1px;padding-left:12px;overflow-wrap:anywhere;display:inline-block;padding-right:12px;overflow:auto}adf-tags-creator .adf-tags-list{margin-top:8px}adf-tags-creator .adf-tags-chip{height:auto}adf-tags-creator .adf-existing-tags-panel{border-top-left-radius:6px;border-top-right-radius:6px;width:100%}adf-tags-creator .adf-existing-tags-panel .adf-existing-tags-label{font-size:10px;color:var(--theme-secondary-text-color);padding-left:12px;margin-bottom:2px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list{padding-left:12px;margin-top:-2px;padding-right:0;display:flex;flex-direction:column}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag{margin:0;padding:4px;font-size:14px;height:auto;width:unset;background-color:inherit;color:inherit}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag span{padding:0}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tags-creator-spinner{margin:auto;overflow:unset;min-height:62px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden;word-break:break-all}adf-tags-creator [hidden]{visibility:hidden;display:none}\n"] }]
348
+ }], ctorParameters: () => [{ type: i1.TagService }, { type: i2.NotificationService }], propDecorators: { mode: [{
349
+ type: Input,
350
+ args: [{ required: true }]
351
+ }], disabledTagsRemoving: [{
352
+ type: Input
353
+ }], tags: [{
354
+ type: Input
355
+ }], tagNameControlVisible: [{
356
+ type: Input
357
+ }], existingTagsPanelVisibilityChange: [{
358
+ type: Output
359
+ }], tagsChange: [{
360
+ type: Output
361
+ }], tagsListElement: [{
362
+ type: ViewChild,
363
+ args: ['tagsList']
364
+ }], tagNameInputElement: [{
365
+ type: ViewChild,
366
+ args: ['tagNameInput']
367
+ }], hostClass: [{
368
+ type: HostBinding,
369
+ args: ['class.adf-creator-with-existing-tags-panel']
370
+ }] } });
371
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdGFnL3RhZ3MtY3JlYXRvci90YWdzLWNyZWF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi90YWcvdGFncy1jcmVhdG9yL3RhZ3MtY3JlYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQVEsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFB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a0JBQWtCLDREQUNsQixlQUFlLDJGQUNmLGNBQWMsOEJBQ2QsZUFBZSw4QkFDZixhQUFhLDhCQUNiLGFBQWEsdVJBQ2Isd0JBQXdCLG1PQUN4Qix3QkFBd0I7OzRGQU1uQixvQkFBb0I7a0JBcEJoQyxTQUFTOytCQUNJLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQzNCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7aUhBU3JDLElBQUk7c0JBREgsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7Z0JBb0JGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkF1Qk4saUNBQWlDO3NCQURoQyxNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFpQ0MsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxVQUFVO2dCQUdiLG1CQUFtQjtzQkFEMUIsU0FBUzt1QkFBQyxjQUFjO2dCQTZDckIsU0FBUztzQkFEWixXQUFXO3VCQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2hpcCwgRHluYW1pY0NoaXBMaXN0Q29tcG9uZW50LCBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFRhZ0VudHJ5LCBUYWdQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIGZpcnN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0b0ZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBUYWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc0NyZWF0b3JNb2RlIH0gZnJvbSAnLi90YWdzLWNyZWF0b3ItbW9kZSc7XG5cbmludGVyZmFjZSBUYWdOYW1lQ29udHJvbEVycm9ycyB7XG4gICAgZHVwbGljYXRlZEV4aXN0aW5nVGFnPzogYm9vbGVhbjtcbiAgICBkdXBsaWNhdGVkQWRkZWRUYWc/OiBib29sZWFuO1xuICAgIGVtcHR5VGFnPzogYm9vbGVhbjtcbiAgICBzcGVjaWFsQ2hhcmFjdGVycz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfVEFHU19TT1JUSU5HID0ge1xuICAgIG9yZGVyQnk6ICd0YWcnLFxuICAgIGRpcmVjdGlvbjogJ2FzYydcbn07XG5cbi8qKlxuICogQWxsb3dzIHRvIGNyZWF0ZSBtdWx0aXBsZSB0YWdzLiBUaGF0IGNvbXBvbmVudCBjb250YWlucyBpbnB1dCBhbmQgdHdvIGxpc3RzLiBUb3AgbGlzdCBpcyBhbGwgY3JlYXRlZCB0YWdzLCBib3R0b20gbGlzdCBpcyBzZWFyY2hlZCB0YWdzIGJhc2VkIG9uIGlucHV0J3MgdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXRhZ3MtY3JlYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Gb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRMaXN0TW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIER5bmFtaWNDaGlwTGlzdENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhZ3MtY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFncy1jcmVhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYWdzQ3JlYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBNb2RlIGZvciBjb21wb25lbnQuXG4gICAgICogSW4gQ3JlYXRlIG1vZGUgd2UgY2FuJ3Qgc2VsZWN0IGV4aXN0aW5nIHRhZ3MsIHdlIGNhbiBvbmx5IGNyZWF0ZSB0aGVtLlxuICAgICAqIEluIENyZWF0ZSBhbmQgQXNzaWduIG1vZGUgd2UgY2FuIGJvdGggLSBjcmVhdGUgdGFncyBhbmQgc2VsZWN0IGV4aXN0aW5nIHRhZ3MuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBtb2RlOiBUYWdzQ3JlYXRvck1vZGU7XG5cbiAgICAvKipcbiAgICAgKiBGYWxzZSBpZiB0YWdzIGNhbiBiZSByZW1vdmVkIGZyb20gdG9wIGxpc3QsIHRydWUgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRUYWdzUmVtb3ZpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdG9wIGxpc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFncyB0YWdzIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgZGVmYXVsdCB0YWdzIGZvciB0b3AgbGlzdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX3RhZ3MgPSBbLi4udGFnc107XG4gICAgICAgIHRoaXMudGFnc1RvRGlzcGxheSA9IHRoaXMudGFncy5tYXAoKHRhZykgPT4gKHsgaWQ6IHRhZywgbmFtZTogdGFnIH0pKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbEV4aXN0aW5nVGFncyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2V4aXN0aW5nVGFncyA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZFRhZ3ModGhpcy50YWdOYW1lQ29udHJvbC52YWx1ZSk7XG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIGdldCB0YWdzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjaWRlcyBpZiBpbnB1dCBmb3IgdGFncyBjcmVhdGlvbi9zZWFyY2hpbmcgc2hvdWxkIGJlIHZpc2libGUuIFdoZW4gaW5wdXQgaXMgaGlkZGVuIHRoZW4gcGFuZWwgb2YgZXhpc3RpbmcgdGFncyBpcyBoaWRkZW4gYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YWdOYW1lQ29udHJvbFZpc2libGUgdHJ1ZSBpZiBpbnB1dCBzaG91bGQgYmUgdmlzaWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRhZ05hbWVDb250cm9sVmlzaWJsZSh0YWdOYW1lQ29udHJvbFZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdGFnTmFtZUNvbnRyb2xWaXNpYmxlID0gdGFnTmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgICAgICBpZiAodGFnTmFtZUNvbnRyb2xWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3NQYW5lbFZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWdOYW1lSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3NQYW5lbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUYWdOYW1lSW5wdXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJpbGl0eUNoYW5nZS5lbWl0KHRoaXMuZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKTtcbiAgICB9XG5cbiAgICBnZXQgdGFnTmFtZUNvbnRyb2xWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFnTmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBib3R0b20gbGlzdCBpcyBzaG93aW5nIG9yIGhpZGluZy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGlzdGluZ1RhZ3NQYW5lbFZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRhZ3MgaW4gdG9wIGxpc3QgYXJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdGFnc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgICB0YWdzVG9EaXNwbGF5OiBDaGlwW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IG5hbWVFcnJvck1lc3NhZ2VzQnlFcnJvcnMgPSBuZXcgTWFwPGtleW9mIFRhZ05hbWVDb250cm9sRXJyb3JzLCBzdHJpbmc+KFtcbiAgICAgICAgWydkdXBsaWNhdGVkRXhpc3RpbmdUYWcnLCAnRVhJU1RJTkdfVEFHJ10sXG4gICAgICAgIFsnZHVwbGljYXRlZEFkZGVkVGFnJywgJ0FMUkVBRFlfQURERURfVEFHJ10sXG4gICAgICAgIFsnZW1wdHlUYWcnLCAnRU1QVFlfVEFHJ10sXG4gICAgICAgIFsnc3BlY2lhbENoYXJhY3RlcnMnLCAnU1BFQ0lBTF9DSEFSQUNURVJTJ11cbiAgICBdKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhpc3RpbmdUYWdzTGlzdExpbWl0ID0gMTU7XG5cbiAgICBwcml2YXRlIGV4YWN0VGFnU2V0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfdGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF90YWdOYW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KFxuICAgICAgICAnJyxcbiAgICAgICAgW3RoaXMudmFsaWRhdGVJZk5vdEFscmVhZHlBZGRlZC5iaW5kKHRoaXMpLCB0aGlzLnZhbGlkYXRlRW1wdHlUYWcsIHRoaXMudmFsaWRhdGVTcGVjaWFsQ2hhcmFjdGVyc10sXG4gICAgICAgIHRoaXMudmFsaWRhdGVJZk5vdEV4aXN0aW5nVGFnLmJpbmQodGhpcylcbiAgICApO1xuICAgIHByaXZhdGUgX3RhZ05hbWVDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2V4aXN0aW5nVGFnczogVGFnRW50cnlbXTtcbiAgICBwcml2YXRlIF9pbml0aWFsRXhpc3RpbmdUYWdzOiBUYWdFbnRyeVtdO1xuICAgIHByaXZhdGUgX3RhZ05hbWVFcnJvck1lc3NhZ2VLZXkgPSAnJztcbiAgICBwcml2YXRlIF9zcGlubmVyVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3R5cGluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3RhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgY2FuY2VsRXhpc3RpbmdUYWdzTG9hZGluZyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgZXhpc3RpbmdFeGFjdFRhZzogVGFnRW50cnk7XG4gICAgcHJpdmF0ZSBfZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgndGFnc0xpc3QnKVxuICAgIHByaXZhdGUgdGFnc0xpc3RFbGVtZW50OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3RhZ05hbWVJbnB1dCcpXG4gICAgcHJpdmF0ZSB0YWdOYW1lSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgobmFtZTogc3RyaW5nKSA9PiBuYW1lLnRyaW0oKSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlTm90Q2hhbmdlZCA9IHByZXZpb3VzID09PSBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVOb3RDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4YWN0VGFnU2V0JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlTm90Q2hhbmdlZDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YXAoKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90eXBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJpbGl0eUNoYW5nZS5lbWl0KHRoaXMuZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxFeGlzdGluZ1RhZ3NMb2FkaW5nJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxFeGlzdGluZ1RhZ3MgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlKChuYW1lOiBzdHJpbmcpID0+IChuYW1lID8gdGltZXIoMzAwKSA6IEVNUFRZKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG5hbWU6IHN0cmluZykgPT4gdGhpcy5vblRhZ05hbWVDb250cm9sVmFsdWVDaGFuZ2UobmFtZSkpO1xuXG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRUYWdOYW1lQ29udHJvbEVycm9yTWVzc2FnZUtleSgpKTtcblxuICAgICAgICB0aGlzLnNldFRhZ05hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsRXhpc3RpbmdUYWdzTG9hZGluZyQubmV4dCgpO1xuICAgICAgICB0aGlzLmNhbmNlbEV4aXN0aW5nVGFnc0xvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hZGYtY3JlYXRvci13aXRoLWV4aXN0aW5nLXRhZ3MtcGFuZWwnKVxuICAgIGdldCBob3N0Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgdGFnTmFtZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdOYW1lQ29udHJvbDtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFJldHVybnMgYHRydWVgIGlmIHRhZ3MgZW1wdHkgYW5kIG5vbiBlZGl0YWJsZSBzdGF0ZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBnZXQgc2hvd0VtcHR5VGFnTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFncz8ubGVuZ3RoID09PSAwICYmICF0aGlzLnRhZ05hbWVDb250cm9sVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgZXhpc3RpbmdUYWdzKCk6IFRhZ0VudHJ5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdUYWdzO1xuICAgIH1cblxuICAgIGdldCB0YWdOYW1lRXJyb3JNZXNzYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdOYW1lRXJyb3JNZXNzYWdlS2V5O1xuICAgIH1cblxuICAgIGdldCBzcGlubmVyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwaW5uZXJWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCB0eXBpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBpbmc7XG4gICAgfVxuXG4gICAgZ2V0IHRhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0YWdzIHRvIHRvcCBsaXN0IHVzaW5nIHZhbHVlIHdoaWNoIGlzIHNldCBpbiBpbnB1dC4gQWRkaW5nIHRhZyBpcyBub3QgYWxsb3dlZCB3aGVuIHZhbHVlIGluIGlucHV0IGlzIGludmFsaWRcbiAgICAgKiBvciBpZiB1c2VyIGlzIHN0aWxsIHR5cGluZyB3aGF0IG1lYW5zIHRoYXQgdmFsaWRhdGlvbiBmb3IgaW5wdXQgaXMgbm90IGNhbGxlZCB5ZXQuXG4gICAgICovXG4gICAgYWRkVGFnKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3R5cGluZyAmJiAhdGhpcy50YWdOYW1lQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ3MgPSBbLi4udGhpcy50YWdzLCB0aGlzLnRhZ05hbWVDb250cm9sLnZhbHVlLnRyaW0oKV07XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGFnTmFtZUlucHV0KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrU2Nyb2xsYmFyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy50YWdzQ2hhbmdlLmVtaXQodGhpcy50YWdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0YWcgZnJvbSB0b3AgbGlzdC4gSW4gY2FzZSB0aGF0IHRhZyB3YXMgcGFydCBvZiBzZWFyY2ggcmVzdWx0IHRoZW4gdGhhdCB0YWcgaXMgbW92ZWQgdG8gYm90dG9tIGxpc3RcbiAgICAgKiAobGlzdCBvZiBleGlzdGluZyB0YWdzKSBhZnRlciByZW1vdmluZyBzbyB1c2VyIGNhbiByZXNlbGVjdCBpdCBhZ2FpbiBsYXRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YWcgdGFnJ3MgbmFtZSB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRvcCBsaXN0LlxuICAgICAqL1xuICAgIHJlbW92ZVRhZyh0YWc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZVRhZ0Zyb21BcnJheSh0aGlzLnRhZ3MsIHRhZyk7XG4gICAgICAgIHRoaXMudGFncyA9IFsuLi50aGlzLnRhZ3NdO1xuICAgICAgICB0aGlzLnRhZ05hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVFeGlzdGluZ1RhZ3NMaXN0T25SZW1vdmVGcm9tVGFnc1RvQ29uZmlybSh0YWcpO1xuICAgICAgICB0aGlzLmV4YWN0VGFnU2V0JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuY2hlY2tTY3JvbGxiYXJWaXNpYmlsaXR5KCk7XG4gICAgICAgIHRoaXMudGFnc0NoYW5nZS5lbWl0KHRoaXMudGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdXNlciBzZWxlY3RzIGFueSB0YWcgZnJvbSBsaXN0IG9mIGV4aXN0aW5nIHRhZ3MuIEl0IG1vdmVzIHRhZyBmcm9tIGV4aXN0aW5nIHRhZ3MgbGlzdCB0byB0b3AgbGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZFRhZyBjaGFuZ2VzXG4gICAgICovXG4gICAgYWRkRXhpc3RpbmdUYWdUb1RhZ3NUb0Fzc2lnbihzZWxlY3RlZFRhZzogVGFnRW50cnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT25seUNyZWF0ZU1vZGUoKSkge1xuICAgICAgICAgICAgdGhpcy50YWdzLnB1c2goc2VsZWN0ZWRUYWcuZW50cnkudGFnKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFnRnJvbUFycmF5KHRoaXMuZXhpc3RpbmdUYWdzLCBzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgICB0aGlzLnRhZ05hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIHRoaXMudGFncyA9IFsuLi50aGlzLnRhZ3NdO1xuICAgICAgICAgICAgdGhpcy5leGFjdFRhZ1NldCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy50YWdzQ2hhbmdlLmVtaXQodGhpcy50YWdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBjb21wb25lbnQgaXMgaW4gQ3JlYXRlIG1vZGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYENyZWF0ZWAgbW9kZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaXNPbmx5Q3JlYXRlTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gVGFnc0NyZWF0b3JNb2RlLkNSRUFURTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFnTmFtZUNvbnRyb2xWYWx1ZUNoYW5nZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMubG9hZFRhZ3MobmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkVGFncyhuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgIXRoaXMudGFnTmFtZUNvbnRyb2wuaGFzRXJyb3IoJ3NwZWNpYWxDaGFyYWN0ZXJzJykpIHtcbiAgICAgICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgICAgICBleGFjdFJlc3VsdDogdGhpcy50YWdTZXJ2aWNlLmZpbmRUYWdCeU5hbWUobmFtZSksXG4gICAgICAgICAgICAgICAgc2VhcmNoZWRSZXN1bHQ6IHRoaXMudGFnU2VydmljZS5zZWFyY2hUYWdzKG5hbWUsIERFRkFVTFRfVEFHU19TT1JUSU5HLCBmYWxzZSwgMCwgdGhpcy5leGlzdGluZ1RhZ3NMaXN0TGltaXQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jYW5jZWxFeGlzdGluZ1RhZ3NMb2FkaW5nJCksXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLl90eXBpbmcgPSBmYWxzZSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiAoeyBleGFjdFJlc3VsdCwgc2VhcmNoZWRSZXN1bHQgfTogeyBleGFjdFJlc3VsdDogVGFnRW50cnk7IHNlYXJjaGVkUmVzdWx0OiBUYWdQYWdpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4YWN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGlzdGluZ0V4YWN0VGFnID0gZXhhY3RSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFeGFjdFRhZ0Zyb21TZWFyY2hlZFJlc3VsdChzZWFyY2hlZFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzLnVuc2hpZnQoZXhhY3RSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nRXhhY3RUYWcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzID0gc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGNsdWRlQWxyZWFkeUFkZGVkVGFncyh0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhhY3RUYWdTZXQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdUQUcuVEFHU19DUkVBVE9SLkVSUk9SUy5GRVRDSF9UQUdTJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zcGlubmVyVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nRXhhY3RUYWcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRXhhY3RUYWdGcm9tU2VhcmNoZWRSZXN1bHQoc2VhcmNoZWRSZXN1bHQ6IFRhZ1BhZ2luZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBleGFjdFRhZ0luZGV4ID0gc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzLmZpbmRJbmRleCgocm93KSA9PiB0aGlzLmNvbXBhcmVUYWdzKHJvdy5lbnRyeS50YWcsIHRoaXMuZXhpc3RpbmdFeGFjdFRhZy5lbnRyeS50YWcpKTtcblxuICAgICAgICBpZiAoZXhhY3RUYWdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBzZWFyY2hlZFJlc3VsdC5saXN0LmVudHJpZXMuc3BsaWNlKGV4YWN0VGFnSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlmTm90RXhpc3RpbmdUYWcodGFnTmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBPYnNlcnZhYmxlPFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5leGFjdFRhZ1NldCQucGlwZShcbiAgICAgICAgICAgIG1hcDx2b2lkLCBUYWdOYW1lQ29udHJvbEVycm9ycyB8IG51bGw+KCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wYXJlVGFncyh0YWdOYW1lQ29udHJvbC52YWx1ZSwgdGhpcy5leGlzdGluZ0V4YWN0VGFnPy5lbnRyeT8udGFnKSA/IHsgZHVwbGljYXRlZEV4aXN0aW5nVGFnOiB0cnVlIH0gOiBudWxsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmlyc3QoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVJZk5vdEFscmVhZHlBZGRlZCh0YWdOYW1lQ29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPik6IFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhZ3Muc29tZSgodGFnKSA9PiB0aGlzLmNvbXBhcmVUYWdzKHRhZywgdGFnTmFtZUNvbnRyb2wudmFsdWUpKSA/IHsgZHVwbGljYXRlZEFkZGVkVGFnOiB0cnVlIH0gOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZVRhZ3ModGFnTmFtZTE/OiBzdHJpbmcsIHRhZ05hbWUyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0YWdOYW1lMT8udHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09IHRhZ05hbWUyPy50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRW1wdHlUYWcodGFnTmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBUYWdOYW1lQ29udHJvbEVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGFnTmFtZUNvbnRyb2wudmFsdWUubGVuZ3RoICYmICF0YWdOYW1lQ29udHJvbC52YWx1ZS50cmltKCkgPyB7IGVtcHR5VGFnOiB0cnVlIH0gOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVTcGVjaWFsQ2hhcmFjdGVycyh0YWdOYW1lQ29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPik6IFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNwZWNpYWxTeW1ib2xzUmVnZXggPSAvW3t9KCleJzpcIlxcXFx8PD4vPy4qXS87XG4gICAgICAgIHJldHVybiB0YWdOYW1lQ29udHJvbC52YWx1ZS5sZW5ndGggJiYgc3BlY2lhbFN5bWJvbHNSZWdleC50ZXN0KHRhZ05hbWVDb250cm9sLnZhbHVlKSA/IHsgc3BlY2lhbENoYXJhY3RlcnM6IHRydWUgfSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUYWdOYW1lQ29udHJvbEVycm9yTWVzc2FnZUtleSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFnTmFtZUVycm9yTWVzc2FnZUtleSA9IHRoaXMudGFnTmFtZUNvbnRyb2wuaW52YWxpZFxuICAgICAgICAgICAgPyBgVEFHLlRBR1NfQ1JFQVRPUi5FUlJPUlMuJHt0aGlzLm5hbWVFcnJvck1lc3NhZ2VzQnlFcnJvcnMuZ2V0KFxuICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy50YWdOYW1lQ29udHJvbC5lcnJvcnMpWzBdIGFzIGtleW9mIFRhZ05hbWVDb250cm9sRXJyb3JzXG4gICAgICAgICAgICAgICl9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU2Nyb2xsYmFyVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YWdzTGlzdFNjcm9sbGJhclZpc2libGUgPSB0aGlzLnRhZ3NMaXN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMudGFnc0xpc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVRhZ0Zyb21BcnJheTxUPih0YWdzOiBUW10sIHRhZzogVCkge1xuICAgICAgICB0YWdzLnNwbGljZSh0YWdzLmluZGV4T2YodGFnKSwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVFeGlzdGluZ1RhZ3NMaXN0T25SZW1vdmVGcm9tVGFnc1RvQ29uZmlybSh0YWc6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbnRyeUZvclRhZ0FkZGVkVG9FeGlzdGluZ1RhZ3MgPSB0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzPy5maW5kKCh0YWdFbnRyeSkgPT4gdGFnRW50cnkuZW50cnkudGFnID09PSB0YWcpO1xuICAgICAgICBpZiAoZW50cnlGb3JUYWdBZGRlZFRvRXhpc3RpbmdUYWdzKSB7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nVGFncy51bnNoaWZ0KGVudHJ5Rm9yVGFnQWRkZWRUb0V4aXN0aW5nVGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5leGlzdGluZ0V4YWN0VGFnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZyAhPT0gdGhpcy5leGlzdGluZ0V4YWN0VGFnLmVudHJ5LnRhZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhZ0Zyb21BcnJheSh0aGlzLmV4aXN0aW5nVGFncywgdGhpcy5leGlzdGluZ0V4YWN0VGFnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0RXhpc3RpbmdUYWdzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdUYWdzLnVuc2hpZnQodGhpcy5leGlzdGluZ0V4YWN0VGFnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydEV4aXN0aW5nVGFncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leGFjdFRhZ1NldCQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0RXhpc3RpbmdUYWdzKCkge1xuICAgICAgICB0aGlzLmV4aXN0aW5nVGFncy5zb3J0KCh0YWdFbnRyeTEsIHRhZ0VudHJ5MikgPT4gdGFnRW50cnkxLmVudHJ5LnRhZy5sb2NhbGVDb21wYXJlKHRhZ0VudHJ5Mi5lbnRyeS50YWcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4Y2x1ZGVBbHJlYWR5QWRkZWRUYWdzKHRhZ3M6IFRhZ0VudHJ5W10pIHtcbiAgICAgICAgdGhpcy5fZXhpc3RpbmdUYWdzID0gdGFncy5maWx0ZXIoKHRhZykgPT4gIXRoaXMudGFncy5pbmNsdWRlcyh0YWcuZW50cnkudGFnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclRhZ05hbWVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi10YWdzLWNyZWF0aW9uXCI+XG4gICAgPGRpdiAqbmdJZj1cInRhZ05hbWVDb250cm9sVmlzaWJsZVwiIGNsYXNzPVwiYWRmLXRhZy1uYW1lLWZpZWxkXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3RhZ05hbWVJbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtdGFnLXNlYXJjaC1maWVsZFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0YWdOYW1lQ29udHJvbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkVGFnKClcIlxuICAgICAgICAgICAgYWRmLWF1dG8tZm9jdXNcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1RBRy5UQUdTX0NSRUFUT1IuVEFHX1NFQVJDSF9QTEFDRUhPTERFUicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwidGFnTmFtZUNvbnRyb2wuaW52YWxpZCAmJiB0YWdOYW1lQ29udHJvbC50b3VjaGVkXCI+XG4gICAgICAgICAgICB7eyB0YWdOYW1lRXJyb3JNZXNzYWdlS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiYWRmLW5vLXRhZ3MtbWVzc2FnZVwiICpuZ0lmPVwic2hvd0VtcHR5VGFnTWVzc2FnZVwiPlxuICAgICAgICB7eyAnVEFHLlRBR1NfQ1JFQVRPUi5OT19UQUdTX0NSRUFURUQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFncy1saXN0XCIgW2NsYXNzLmFkZi10YWdzLWxpc3QtZml4ZWRdPVwiIXRhZ05hbWVDb250cm9sVmlzaWJsZVwiICN0YWdzTGlzdD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jaGlwLWxpc3RcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi10YWdzLWNoaXBzLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2NoaXBzXT1cInRhZ3NUb0Rpc3BsYXlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlRGVsZXRlXT1cImRpc2FibGVkVGFnc1JlbW92aW5nXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZENoaXApPVwicmVtb3ZlVGFnKCRldmVudClcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFkZi1leGlzdGluZy10YWdzLXBhbmVsXCIgKm5nSWY9XCJleGlzdGluZ1RhZ3NQYW5lbFZpc2libGVcIj5cbiAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIiFzcGlubmVyVmlzaWJsZSB8fCBleGlzdGluZ1RhZ3NcIlxuICAgICAgICBjbGFzcz1cImFkZi1jcmVhdGUtdGFnLWxhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cImFkZFRhZygpXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJhZGRUYWcoKVwiXG4gICAgICAgIFtoaWRkZW5dPVwiIXRhZ05hbWVDb250cm9sLnZhbHVlIHx8IHRhZ05hbWVDb250cm9sLmludmFsaWQgfHwgdHlwaW5nXCJcbiAgICA+XG4gICAgICAgIHt7ICdUQUcuVEFHU19DUkVBVE9SLkNSRUFURV9UQUcnIHwgdHJhbnNsYXRlIDogeyB0YWc6IHRhZ05hbWVDb250cm9sLnZhbHVlIH0gfX1cbiAgICA8L3NwYW4+XG4gICAgPHAgKm5nSWY9XCIhc3Bpbm5lclZpc2libGUgJiYgZXhpc3RpbmdUYWdzXCIgY2xhc3M9XCJhZGYtZXhpc3RpbmctdGFncy1sYWJlbFwiPlxuICAgICAgICB7eyAoaXNPbmx5Q3JlYXRlTW9kZSgpID8gJ1RBRy5UQUdTX0NSRUFUT1IuRVhJU1RJTkdfVEFHUycgOiAnVEFHLlRBR1NfQ1JFQVRPUi5FWElTVElOR19UQUdTX1NFTEVDVElPTicpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFncy1saXN0XCI+XG4gICAgICAgIDxtYXQtbGlzdCAqbmdJZj1cIiFzcGlubmVyVmlzaWJsZSAmJiBleGlzdGluZ1RhZ3NcIiBbZGlzYWJsZWRdPVwiaXNPbmx5Q3JlYXRlTW9kZSgpXCI+XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgdGFnUm93IG9mIGV4aXN0aW5nVGFnc1wiIGNsYXNzPVwiYWRmLXRhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRXhpc3RpbmdUYWdUb1RhZ3NUb0Fzc2lnbih0YWdSb3cpXCI+XG4gICAgICAgICAgICAgICAge3sgdGFnUm93LmVudHJ5LnRhZyB9fVxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPHAgKm5nSWY9XCIhZXhpc3RpbmdUYWdzPy5sZW5ndGhcIj57eyAnVEFHLlRBR1NfQ1JFQVRPUi5OT19FWElTVElOR19UQUdTJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPG1hdC1zcGlubmVyXG4gICAgICAgICAgICAqbmdJZj1cInNwaW5uZXJWaXNpYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRhZ3MtY3JlYXRvci1zcGlubmVyXCJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCI1MFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUQUcuVEFHU19DUkVBVE9SLlRBR1NfTE9BRElORycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,56 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { NgModule, APP_INITIALIZER } from '@angular/core';
18
+ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
19
+ import { CoreModule, NoopTranslateModule, NoopAuthModule } from '@alfresco/adf-core';
20
+ import { ContentModule } from '../content.module';
21
+ import { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory';
22
+ import { AlfrescoApiService } from '../services/alfresco-api.service';
23
+ import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';
24
+ import { MatIconTestingModule } from '@angular/material/icon/testing';
25
+ import { AlfrescoApiServiceMock } from '../mock';
26
+ import * as i0 from "@angular/core";
27
+ export class ContentTestingModule {
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule], exports: [NoopAnimationsModule, CoreModule, ContentModule] }); }
30
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, providers: [
31
+ { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
32
+ {
33
+ provide: APP_INITIALIZER,
34
+ useFactory: versionCompatibilityFactory,
35
+ deps: [VersionCompatibilityService],
36
+ multi: true
37
+ }
38
+ ], imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule, NoopAnimationsModule, CoreModule, ContentModule] }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, decorators: [{
41
+ type: NgModule,
42
+ args: [{
43
+ imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule],
44
+ providers: [
45
+ { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
46
+ {
47
+ provide: APP_INITIALIZER,
48
+ useFactory: versionCompatibilityFactory,
49
+ deps: [VersionCompatibilityService],
50
+ multi: true
51
+ }
52
+ ],
53
+ exports: [NoopAnimationsModule, CoreModule, ContentModule]
54
+ }]
55
+ }] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdGVzdGluZy9jb250ZW50LnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFlakQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsWUFabkIsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLGFBVTFHLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxhQUFhO2dIQUVoRCxvQkFBb0IsYUFYbEI7WUFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7WUFDakU7Z0JBQ0ksT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSwyQkFBMkI7Z0JBQ3ZDLElBQUksRUFBRSxDQUFDLDJCQUEyQixDQUFDO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osWUFUUyxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFVMUcsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGFBQWE7OzRGQUVoRCxvQkFBb0I7a0JBYmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JILFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7d0JBQ2pFOzRCQUNJLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsMkJBQTJCOzRCQUN2QyxJQUFJLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzs0QkFDbkMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7b0JBQ0QsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQztpQkFDN0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vb3BBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIE5vb3BUcmFuc2xhdGVNb2R1bGUsIE5vb3BBdXRoTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbnRlbnRNb2R1bGUgfSBmcm9tICcuLi9jb250ZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyB2ZXJzaW9uQ29tcGF0aWJpbGl0eUZhY3RvcnkgfSBmcm9tICcuLi92ZXJzaW9uLWNvbXBhdGliaWxpdHkvdmVyc2lvbi1jb21wYXRpYmlsaXR5LWZhY3RvcnknO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdmVyc2lvbi1jb21wYXRpYmlsaXR5L3ZlcnNpb24tY29tcGF0aWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdEljb25UZXN0aW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi90ZXN0aW5nJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZU1vY2sgfSBmcm9tICcuLi9tb2NrJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTm9vcEFuaW1hdGlvbnNNb2R1bGUsIENvcmVNb2R1bGUsIE5vb3BBdXRoTW9kdWxlLCBOb29wVHJhbnNsYXRlTW9kdWxlLCBDb250ZW50TW9kdWxlLCBNYXRJY29uVGVzdGluZ01vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQWxmcmVzY29BcGlTZXJ2aWNlLCB1c2VDbGFzczogQWxmcmVzY29BcGlTZXJ2aWNlTW9jayB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiB2ZXJzaW9uQ29tcGF0aWJpbGl0eUZhY3RvcnksXG4gICAgICAgICAgICBkZXBzOiBbVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOb29wQW5pbWF0aW9uc01vZHVsZSwgQ29yZU1vZHVsZSwgQ29udGVudE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFRlc3RpbmdNb2R1bGUge31cbiJdfQ==