@alfresco/adf-core 8.1.0-16295248176 → 8.1.0-16320806191

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 (603) hide show
  1. package/bundles/assets/adf-core/i18n/de.json +1 -1
  2. package/bundles/assets/adf-core/i18n/es.json +1 -1
  3. package/bundles/assets/adf-core/i18n/fr.json +1 -1
  4. package/bundles/assets/adf-core/i18n/it.json +1 -1
  5. package/bundles/assets/adf-core/i18n/pl.json +1 -1
  6. package/bundles/assets/adf-core/i18n/pt.json +1 -1
  7. package/esm2022/adf-core.mjs +5 -0
  8. package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
  9. package/esm2022/api/index.mjs +20 -0
  10. package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
  11. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
  12. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
  13. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
  14. package/esm2022/api/lib/interfaces.mjs +18 -0
  15. package/esm2022/api/lib/types.mjs +18 -0
  16. package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
  17. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
  18. package/esm2022/auth/authentication.mjs +19 -0
  19. package/esm2022/auth/index.mjs +19 -0
  20. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
  21. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +82 -0
  22. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
  23. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
  24. package/esm2022/breadcrumbs/index.mjs +19 -0
  25. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
  26. package/esm2022/feature-flags/index.mjs +29 -0
  27. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
  28. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
  29. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +129 -0
  30. package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
  31. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
  32. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
  33. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
  34. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
  35. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
  36. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
  37. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
  38. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
  39. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
  40. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
  41. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
  42. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
  43. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
  44. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +51 -0
  45. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +51 -0
  46. package/esm2022/lib/about/about-module-list/module-list.component.mjs +51 -0
  47. package/esm2022/lib/about/about-package/package-list.component.mjs +65 -0
  48. package/esm2022/lib/about/about-panel.directive.mjs +37 -0
  49. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +59 -0
  50. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
  51. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +42 -0
  52. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +51 -0
  53. package/esm2022/lib/about/about.component.mjs +35 -0
  54. package/esm2022/lib/about/about.module.mjs +75 -0
  55. package/esm2022/lib/about/index.mjs +18 -0
  56. package/esm2022/lib/about/interfaces.mjs +18 -0
  57. package/esm2022/lib/about/public-api.mjs +28 -0
  58. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
  59. package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
  60. package/esm2022/lib/app-config/app-config.module.mjs +33 -0
  61. package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
  62. package/esm2022/lib/app-config/app-config.service.mjs +243 -0
  63. package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
  64. package/esm2022/lib/app-config/index.mjs +18 -0
  65. package/esm2022/lib/app-config/public-api.mjs +22 -0
  66. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
  67. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
  68. package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
  69. package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
  70. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
  71. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
  72. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
  73. package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
  74. package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
  75. package/esm2022/lib/auth/index.mjs +18 -0
  76. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
  77. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
  78. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
  79. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
  80. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
  81. package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
  82. package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
  83. package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
  84. package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
  85. package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
  86. package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
  87. package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
  88. package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
  89. package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
  90. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
  91. package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
  92. package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
  93. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
  94. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
  95. package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
  96. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
  97. package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
  98. package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
  99. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
  100. package/esm2022/lib/auth/public-api.mjs +44 -0
  101. package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
  102. package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
  103. package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
  104. package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
  105. package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
  106. package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
  107. package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
  108. package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
  109. package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
  110. package/esm2022/lib/avatar/avatar.component.mjs +51 -0
  111. package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
  112. package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
  113. package/esm2022/lib/blank-page/index.mjs +18 -0
  114. package/esm2022/lib/blank-page/public-api.mjs +19 -0
  115. package/esm2022/lib/button/button.component.mjs +61 -0
  116. package/esm2022/lib/card-view/card-view.module.mjs +80 -0
  117. package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
  118. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
  119. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +55 -0
  120. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +39 -0
  121. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +182 -0
  122. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
  123. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +64 -0
  124. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +46 -0
  125. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +137 -0
  126. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +113 -0
  127. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +239 -0
  128. package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
  129. package/esm2022/lib/card-view/index.mjs +18 -0
  130. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
  131. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
  132. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
  133. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
  134. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
  135. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
  136. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
  137. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
  138. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
  139. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
  140. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
  141. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
  142. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
  143. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
  144. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
  145. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
  146. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
  147. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
  148. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
  149. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
  150. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
  151. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
  152. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
  153. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
  154. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
  155. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
  156. package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
  157. package/esm2022/lib/card-view/public-api.mjs +25 -0
  158. package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
  159. package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
  160. package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
  161. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
  162. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
  163. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
  164. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
  165. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
  166. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
  167. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
  168. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
  169. package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
  170. package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
  171. package/esm2022/lib/clipboard/clipboard.directive.mjs +98 -0
  172. package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
  173. package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
  174. package/esm2022/lib/clipboard/index.mjs +18 -0
  175. package/esm2022/lib/clipboard/public-api.mjs +21 -0
  176. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +52 -0
  177. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
  178. package/esm2022/lib/comments/comment-list/index.mjs +18 -0
  179. package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
  180. package/esm2022/lib/comments/comments.component.mjs +132 -0
  181. package/esm2022/lib/comments/comments.module.mjs +33 -0
  182. package/esm2022/lib/comments/index.mjs +18 -0
  183. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
  184. package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
  185. package/esm2022/lib/comments/public-api.mjs +22 -0
  186. package/esm2022/lib/common/index.mjs +35 -0
  187. package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
  188. package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
  189. package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
  190. package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
  191. package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
  192. package/esm2022/lib/common/services/cookie.service.mjs +82 -0
  193. package/esm2022/lib/common/services/download.service.mjs +102 -0
  194. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
  195. package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
  196. package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
  197. package/esm2022/lib/common/services/log.service.mjs +171 -0
  198. package/esm2022/lib/common/services/page-title.service.mjs +63 -0
  199. package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
  200. package/esm2022/lib/common/services/storage.service.mjs +143 -0
  201. package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
  202. package/esm2022/lib/common/services/url.service.mjs +45 -0
  203. package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
  204. package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
  205. package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
  206. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
  207. package/esm2022/lib/common/utils/file-utils.mjs +65 -0
  208. package/esm2022/lib/common/utils/index.mjs +18 -0
  209. package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
  210. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
  211. package/esm2022/lib/common/utils/object-utils.mjs +107 -0
  212. package/esm2022/lib/common/utils/public-api.mjs +25 -0
  213. package/esm2022/lib/common/utils/string-utils.mjs +45 -0
  214. package/esm2022/lib/context-menu/animations.mjs +33 -0
  215. package/esm2022/lib/context-menu/context-menu-list.component.mjs +91 -0
  216. package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
  217. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
  218. package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
  219. package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
  220. package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
  221. package/esm2022/lib/context-menu/index.mjs +18 -0
  222. package/esm2022/lib/context-menu/interfaces.mjs +18 -0
  223. package/esm2022/lib/context-menu/public-api.mjs +21 -0
  224. package/esm2022/lib/core.module.mjs +314 -0
  225. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
  226. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
  227. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
  228. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +113 -0
  229. package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
  230. package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
  231. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +914 -0
  232. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
  233. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
  234. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
  235. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
  236. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
  237. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
  238. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
  239. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
  240. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
  241. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
  242. package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
  243. package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
  244. package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
  245. package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
  246. package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
  247. package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
  248. package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
  249. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
  250. package/esm2022/lib/datatable/data/object-datarow.model.mjs +41 -0
  251. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
  252. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
  253. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
  254. package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
  255. package/esm2022/lib/datatable/data-column/index.mjs +18 -0
  256. package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
  257. package/esm2022/lib/datatable/datatable.module.mjs +161 -0
  258. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
  259. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
  260. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
  261. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
  262. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
  263. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
  264. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
  265. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
  266. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
  267. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
  268. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
  269. package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
  270. package/esm2022/lib/datatable/index.mjs +18 -0
  271. package/esm2022/lib/datatable/public-api.mjs +55 -0
  272. package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
  273. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
  274. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
  275. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
  276. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +70 -0
  277. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
  278. package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
  279. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +52 -0
  280. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +34 -0
  281. package/esm2022/lib/dialogs/index.mjs +18 -0
  282. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  283. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +73 -0
  284. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
  285. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
  286. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
  287. package/esm2022/lib/directives/directive.module.mjs +56 -0
  288. package/esm2022/lib/directives/highlight.directive.mjs +67 -0
  289. package/esm2022/lib/directives/index.mjs +18 -0
  290. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
  291. package/esm2022/lib/directives/logout.directive.mjs +72 -0
  292. package/esm2022/lib/directives/public-api.mjs +24 -0
  293. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
  294. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
  295. package/esm2022/lib/directives/upload.directive.mjs +241 -0
  296. package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
  297. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +204 -0
  298. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
  299. package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
  300. package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
  301. package/esm2022/lib/events/base-ui.event.mjs +21 -0
  302. package/esm2022/lib/events/base.event.mjs +29 -0
  303. package/esm2022/lib/events/index.mjs +18 -0
  304. package/esm2022/lib/events/public-api.mjs +19 -0
  305. package/esm2022/lib/form/components/form-base.component.mjs +212 -0
  306. package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
  307. package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
  308. package/esm2022/lib/form/components/form-renderer.component.mjs +161 -0
  309. package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
  310. package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
  311. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
  312. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
  313. package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
  314. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +77 -0
  315. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +59 -0
  316. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +52 -0
  317. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
  318. package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
  319. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
  320. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
  321. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
  322. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
  323. package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
  324. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
  325. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
  326. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
  327. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
  328. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
  329. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
  330. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
  331. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
  332. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
  333. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
  334. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
  335. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
  336. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
  337. package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
  338. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
  339. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
  340. package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
  341. package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
  342. package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
  343. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
  344. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
  345. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
  346. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
  347. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
  348. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
  349. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
  350. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +162 -0
  351. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +153 -0
  352. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +53 -0
  353. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
  354. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +46 -0
  355. package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
  356. package/esm2022/lib/form/components/widgets/error/error.component.mjs +92 -0
  357. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
  358. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +42 -0
  359. package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
  360. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +69 -0
  361. package/esm2022/lib/form/components/widgets/index.mjs +71 -0
  362. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +66 -0
  363. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +55 -0
  364. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +71 -0
  365. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
  366. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
  367. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +65 -0
  368. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
  369. package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
  370. package/esm2022/lib/form/events/form-error.event.mjs +24 -0
  371. package/esm2022/lib/form/events/form-field.event.mjs +24 -0
  372. package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
  373. package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
  374. package/esm2022/lib/form/events/form.event.mjs +29 -0
  375. package/esm2022/lib/form/events/index.mjs +24 -0
  376. package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
  377. package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
  378. package/esm2022/lib/form/form-base.module.mjs +90 -0
  379. package/esm2022/lib/form/index.mjs +18 -0
  380. package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
  381. package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
  382. package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
  383. package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
  384. package/esm2022/lib/form/pipes/index.mjs +18 -0
  385. package/esm2022/lib/form/public-api.mjs +35 -0
  386. package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
  387. package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
  388. package/esm2022/lib/form/services/form.service.mjs +86 -0
  389. package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
  390. package/esm2022/lib/header/header.component.mjs +73 -0
  391. package/esm2022/lib/header/index.mjs +18 -0
  392. package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
  393. package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
  394. package/esm2022/lib/header/public-api.mjs +20 -0
  395. package/esm2022/lib/icon/icon.component.mjs +51 -0
  396. package/esm2022/lib/icon/icon.module.mjs +36 -0
  397. package/esm2022/lib/icon/index.mjs +18 -0
  398. package/esm2022/lib/icon/public-api.mjs +19 -0
  399. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +86 -0
  400. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
  401. package/esm2022/lib/identity-user-info/index.mjs +18 -0
  402. package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
  403. package/esm2022/lib/info-drawer/index.mjs +18 -0
  404. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
  405. package/esm2022/lib/info-drawer/info-drawer.component.mjs +113 -0
  406. package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
  407. package/esm2022/lib/info-drawer/public-api.mjs +20 -0
  408. package/esm2022/lib/interface/index.mjs +18 -0
  409. package/esm2022/lib/interface/injection.tokens.mjs +19 -0
  410. package/esm2022/lib/interface/public-api.mjs +18 -0
  411. package/esm2022/lib/language-menu/index.mjs +18 -0
  412. package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
  413. package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
  414. package/esm2022/lib/language-menu/language-picker.component.mjs +77 -0
  415. package/esm2022/lib/language-menu/public-api.mjs +21 -0
  416. package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
  417. package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
  418. package/esm2022/lib/layout/components/header/header.component.mjs +99 -0
  419. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
  420. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
  421. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
  422. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
  423. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
  424. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
  425. package/esm2022/lib/layout/index.mjs +18 -0
  426. package/esm2022/lib/layout/layout.module.mjs +72 -0
  427. package/esm2022/lib/layout/public-api.mjs +25 -0
  428. package/esm2022/lib/login/components/login/login.component.mjs +367 -0
  429. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
  430. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +57 -0
  431. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
  432. package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
  433. package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
  434. package/esm2022/lib/login/index.mjs +18 -0
  435. package/esm2022/lib/login/login.module.mjs +54 -0
  436. package/esm2022/lib/login/models/login-error.event.mjs +22 -0
  437. package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
  438. package/esm2022/lib/login/models/login-success.event.mjs +24 -0
  439. package/esm2022/lib/login/public-api.mjs +27 -0
  440. package/esm2022/lib/material.module.mjs +254 -0
  441. package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
  442. package/esm2022/lib/mock/data-column.mock.mjs +73 -0
  443. package/esm2022/lib/mock/event.mock.mjs +39 -0
  444. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
  445. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
  446. package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
  447. package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
  448. package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
  449. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
  450. package/esm2022/lib/mock/index.mjs +18 -0
  451. package/esm2022/lib/mock/public-api.mjs +27 -0
  452. package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
  453. package/esm2022/lib/models/comment.model.mjs +51 -0
  454. package/esm2022/lib/models/component.model.mjs +24 -0
  455. package/esm2022/lib/models/decimal-number.model.mjs +26 -0
  456. package/esm2022/lib/models/general-user.model.mjs +24 -0
  457. package/esm2022/lib/models/index.mjs +18 -0
  458. package/esm2022/lib/models/pagination.model.mjs +29 -0
  459. package/esm2022/lib/models/path.model.mjs +24 -0
  460. package/esm2022/lib/models/product-version.model.mjs +28 -0
  461. package/esm2022/lib/models/public-api.mjs +24 -0
  462. package/esm2022/lib/models/request-pagination.model.mjs +25 -0
  463. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
  464. package/esm2022/lib/notifications/components/notification-history.component.mjs +138 -0
  465. package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
  466. package/esm2022/lib/notifications/index.mjs +18 -0
  467. package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
  468. package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
  469. package/esm2022/lib/notifications/public-api.mjs +23 -0
  470. package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
  471. package/esm2022/lib/pagination/index.mjs +18 -0
  472. package/esm2022/lib/pagination/infinite-pagination.component.mjs +111 -0
  473. package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
  474. package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
  475. package/esm2022/lib/pagination/pagination.component.mjs +263 -0
  476. package/esm2022/lib/pagination/pagination.module.mjs +35 -0
  477. package/esm2022/lib/pagination/public-api.mjs +22 -0
  478. package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
  479. package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
  480. package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
  481. package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
  482. package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
  483. package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
  484. package/esm2022/lib/pipes/index.mjs +18 -0
  485. package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
  486. package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
  487. package/esm2022/lib/pipes/pipe.module.mjs +83 -0
  488. package/esm2022/lib/pipes/public-api.mjs +30 -0
  489. package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
  490. package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
  491. package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
  492. package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
  493. package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
  494. package/esm2022/lib/progress/progress.component.mjs +90 -0
  495. package/esm2022/lib/search-text/animations.mjs +32 -0
  496. package/esm2022/lib/search-text/index.mjs +18 -0
  497. package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
  498. package/esm2022/lib/search-text/public-api.mjs +22 -0
  499. package/esm2022/lib/search-text/search-text-input.component.mjs +283 -0
  500. package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
  501. package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
  502. package/esm2022/lib/snackbar-content/index.mjs +18 -0
  503. package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
  504. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
  505. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +49 -0
  506. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +33 -0
  507. package/esm2022/lib/sorting-picker/index.mjs +18 -0
  508. package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
  509. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +67 -0
  510. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +43 -0
  511. package/esm2022/lib/templates/error-content/error-content.component.mjs +61 -0
  512. package/esm2022/lib/templates/index.mjs +18 -0
  513. package/esm2022/lib/templates/public-api.mjs +20 -0
  514. package/esm2022/lib/templates/template.module.mjs +38 -0
  515. package/esm2022/lib/testing/core.story.module.mjs +39 -0
  516. package/esm2022/lib/testing/core.testing.module.mjs +35 -0
  517. package/esm2022/lib/testing/index.mjs +22 -0
  518. package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
  519. package/esm2022/lib/testing/noop-translate.module.mjs +61 -0
  520. package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
  521. package/esm2022/lib/toolbar/index.mjs +18 -0
  522. package/esm2022/lib/toolbar/public-api.mjs +21 -0
  523. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
  524. package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
  525. package/esm2022/lib/toolbar/toolbar.component.mjs +39 -0
  526. package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
  527. package/esm2022/lib/translation/index.mjs +18 -0
  528. package/esm2022/lib/translation/public-api.mjs +19 -0
  529. package/esm2022/lib/translation/translate-loader.service.mjs +148 -0
  530. package/esm2022/lib/translation/translation.service.mjs +148 -0
  531. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +36 -0
  532. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +220 -0
  533. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
  534. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +550 -0
  535. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +60 -0
  536. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +48 -0
  537. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
  538. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +85 -0
  539. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +32 -0
  540. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
  541. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
  542. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +216 -0
  543. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
  544. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
  545. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
  546. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
  547. package/esm2022/lib/viewer/components/viewer.component.mjs +486 -0
  548. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
  549. package/esm2022/lib/viewer/index.mjs +18 -0
  550. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
  551. package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
  552. package/esm2022/lib/viewer/public-api.mjs +40 -0
  553. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
  554. package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
  555. package/esm2022/lib/viewer/viewer.module.mjs +110 -0
  556. package/esm2022/public-api.mjs +60 -0
  557. package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
  558. package/esm2022/shell/index.mjs +20 -0
  559. package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
  560. package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
  561. package/esm2022/shell/lib/shell.module.mjs +79 -0
  562. package/esm2022/shell/lib/shell.routes.mjs +25 -0
  563. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
  564. package/fesm2022/adf-core.mjs +1177 -1229
  565. package/fesm2022/adf-core.mjs.map +1 -1
  566. package/fesm2022/alfresco-adf-core-api.mjs +4 -4
  567. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  568. package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
  569. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  570. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
  571. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  572. package/fesm2022/alfresco-adf-core-feature-flags.mjs +59 -52
  573. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  574. package/fesm2022/alfresco-adf-core-shell.mjs +21 -96
  575. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  576. package/lib/app-config/app-config.module.d.ts +0 -1
  577. package/lib/app-config/public-api.d.ts +0 -1
  578. package/lib/auth/oidc/auth.module.d.ts +4 -4
  579. package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
  580. package/lib/card-view/components/base-card-view.d.ts +1 -1
  581. package/lib/card-view/components/card-view/card-view.component.scss +9 -12
  582. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +2 -1
  583. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +5 -2
  584. package/lib/core.module.d.ts +128 -124
  585. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  586. package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
  587. package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +6 -2
  588. package/lib/form/form-base.module.d.ts +0 -1
  589. package/lib/testing/core.testing.module.d.ts +0 -1
  590. package/lib/testing/noop-translate.module.d.ts +2 -1
  591. package/lib/translation/public-api.d.ts +0 -1
  592. package/package.json +15 -3
  593. package/public-api.d.ts +0 -1
  594. package/shell/README.md +6 -20
  595. package/shell/index.d.ts +0 -2
  596. package/shell/lib/shell.module.d.ts +7 -4
  597. package/shell/lib/shell.routes.d.ts +1 -13
  598. package/lib/app-config/provide-app-config.d.ts +0 -23
  599. package/lib/landing-page/index.d.ts +0 -17
  600. package/lib/landing-page/provider.d.ts +0 -24
  601. package/lib/landing-page/public-api.d.ts +0 -17
  602. package/lib/translation/provide-i18n.d.ts +0 -39
  603. package/shell/lib/providers.d.ts +0 -36
@@ -0,0 +1,490 @@
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
+ /* eslint-disable @angular-eslint/component-selector */
18
+ import { WidgetVisibilityModel } from '../../../models/widget-visibility.model';
19
+ import { ContainerColumnModel } from './container-column.model';
20
+ import { ErrorMessageModel } from './error-message.model';
21
+ import { FormFieldTypes } from './form-field-types';
22
+ import { FormWidgetModel } from './form-widget.model';
23
+ import { isNumberValue } from './form-field-utils';
24
+ import { DateFnsUtils } from '../../../../common';
25
+ import { isValid as isValidDate } from 'date-fns';
26
+ // Maps to FormFieldRepresentation
27
+ export class FormFieldModel extends FormWidgetModel {
28
+ get value() {
29
+ return this._value;
30
+ }
31
+ set value(v) {
32
+ if (v !== this._value) {
33
+ this._value = v;
34
+ this.updateForm();
35
+ }
36
+ }
37
+ get readOnly() {
38
+ if (this.form?.readOnly) {
39
+ return true;
40
+ }
41
+ return this._readOnly;
42
+ }
43
+ set readOnly(readOnly) {
44
+ this._readOnly = readOnly;
45
+ this.updateForm();
46
+ }
47
+ get required() {
48
+ return this._required;
49
+ }
50
+ set required(value) {
51
+ this._required = value;
52
+ this.updateForm();
53
+ }
54
+ get isValid() {
55
+ return this._isValid;
56
+ }
57
+ get hasMultipleValues() {
58
+ return this.selectionType === 'multiple' || this.params.multiple;
59
+ }
60
+ markAsInvalid() {
61
+ this._isValid = false;
62
+ }
63
+ markAsValid() {
64
+ this._isValid = true;
65
+ }
66
+ validate() {
67
+ this.validationSummary = new ErrorMessageModel();
68
+ if (this.isFieldValidatable()) {
69
+ const validators = this.form.fieldValidators || [];
70
+ for (const validator of validators) {
71
+ if (!validator.validate(this)) {
72
+ this._isValid = false;
73
+ return this._isValid;
74
+ }
75
+ }
76
+ }
77
+ this._isValid = true;
78
+ return this._isValid;
79
+ }
80
+ isFieldValidatable() {
81
+ return !this.readOnly || FormFieldTypes.isValidatableType(this.type);
82
+ }
83
+ constructor(form, json) {
84
+ super(form, json);
85
+ this._readOnly = false;
86
+ this._isValid = true;
87
+ this._required = false;
88
+ this.defaultDateFormat = 'D-M-YYYY';
89
+ this.defaultDateTimeFormat = 'D-M-YYYY hh:mm A';
90
+ this.defaultEmptyOptionId = 'empty';
91
+ this.defaultEmptyOptionName = 'Choose one...';
92
+ this.rowspan = 1;
93
+ this.colspan = 1;
94
+ this.placeholder = null;
95
+ this.tooltip = null;
96
+ this.minLength = 0;
97
+ this.maxLength = 0;
98
+ this.maxDateRangeValue = 0;
99
+ this.minDateRangeValue = 0;
100
+ this.options = [];
101
+ this.params = {};
102
+ this.isVisible = true;
103
+ this.visibilityCondition = null;
104
+ this.enableFractions = false;
105
+ this.currency = null;
106
+ this.dateDisplayFormat = this.defaultDateFormat;
107
+ this.leftLabels = false;
108
+ // container model members
109
+ this.numberOfColumns = 1;
110
+ this.fields = [];
111
+ this.columns = [];
112
+ if (json) {
113
+ this.fieldType = json.fieldType;
114
+ this.id = json.id;
115
+ this.name = json.name;
116
+ this.type = json.type;
117
+ this.roles = json.roles;
118
+ this._required = json.required;
119
+ this._readOnly = json.readOnly || json.type === 'readonly';
120
+ this.overrideId = json.overrideId;
121
+ this.tab = json.tab;
122
+ this.restUrl = json.restUrl;
123
+ this.restResponsePath = json.restResponsePath;
124
+ this.restIdProperty = json.restIdProperty;
125
+ this.restLabelProperty = json.restLabelProperty;
126
+ this.colspan = json.colspan;
127
+ this.rowspan = json.rowspan;
128
+ this.minLength = json.minLength || 0;
129
+ this.maxLength = json.maxLength || 0;
130
+ this.minValue = json.minValue;
131
+ this.maxValue = json.maxValue;
132
+ this.minDateRangeValue = json.minDateRangeValue;
133
+ this.maxDateRangeValue = json.maxDateRangeValue;
134
+ this.dynamicDateRangeSelection = json.dynamicDateRangeSelection;
135
+ this.regexPattern = json.regexPattern;
136
+ this.options = this.parseOptions(json.options, json.optionType);
137
+ this.emptyOption = this.getEmptyOption(this.options);
138
+ this.hasEmptyValue = json?.hasEmptyValue ?? !!this.emptyOption;
139
+ this.className = json.className;
140
+ this.optionType = json.optionType;
141
+ this.params = json.params || {};
142
+ this.hyperlinkUrl = json.hyperlinkUrl;
143
+ this.displayText = json.displayText;
144
+ this.visibilityCondition = json.visibilityCondition ? new WidgetVisibilityModel(json.visibilityCondition) : undefined;
145
+ this.enableFractions = json.enableFractions;
146
+ this.currency = json.currency;
147
+ this.dateDisplayFormat = json.dateDisplayFormat || this.getDefaultDateFormat(json);
148
+ this.validationSummary = new ErrorMessageModel();
149
+ this.tooltip = json.tooltip || '';
150
+ this.selectionType = json.selectionType;
151
+ this.alignmentType = json.alignmentType;
152
+ this.rule = json.rule;
153
+ this.selectLoggedUser = json.selectLoggedUser;
154
+ this.groupsRestriction = json.groupsRestriction?.groups;
155
+ this.variableConfig = json.variableConfig;
156
+ this.schemaDefinition = json.schemaDefinition;
157
+ this.precision = json.precision;
158
+ this.externalProperty = json.externalProperty;
159
+ this._value = this.parseValue(json);
160
+ this.style = json.style;
161
+ if (json.placeholder && json.placeholder !== '' && json.placeholder !== 'null') {
162
+ this.placeholder = json.placeholder;
163
+ }
164
+ if (FormFieldTypes.isReadOnlyType(this.type)) {
165
+ if (this.params?.field) {
166
+ this.setValueForReadonlyType(form);
167
+ }
168
+ }
169
+ if (FormFieldTypes.isContainerType(this.type) || FormFieldTypes.isSectionType(this.type)) {
170
+ this.containerFactory(json, form);
171
+ }
172
+ }
173
+ if (form?.json) {
174
+ this.leftLabels = form.json.leftLabels || false;
175
+ }
176
+ this.updateForm();
177
+ }
178
+ getEmptyOption(options) {
179
+ return options.find((option) => option?.id === this.defaultEmptyOptionId);
180
+ }
181
+ setValueForReadonlyType(form) {
182
+ const value = this.getProcessVariableValue(this.params.field, form);
183
+ if (value) {
184
+ this.value = value;
185
+ }
186
+ }
187
+ getDefaultDateFormat(jsonField) {
188
+ let originalType = jsonField.type;
189
+ if (FormFieldTypes.isReadOnlyType(jsonField.type) && jsonField.params?.field) {
190
+ originalType = jsonField.params.field.type;
191
+ }
192
+ return originalType === FormFieldTypes.DATETIME ? this.defaultDateTimeFormat : this.defaultDateFormat;
193
+ }
194
+ isTypeaheadFieldType(type) {
195
+ return type === 'typeahead';
196
+ }
197
+ getFieldNameWithLabel(name) {
198
+ return name + '_LABEL';
199
+ }
200
+ getProcessVariableValue(field, form) {
201
+ let fieldName = field.name;
202
+ if (this.isTypeaheadFieldType(field.type)) {
203
+ fieldName = this.getFieldNameWithLabel(field.id);
204
+ }
205
+ return form.getProcessVariableValue(fieldName);
206
+ }
207
+ containerFactory(json, form) {
208
+ const { numberOfColumns = 1, fields = {} } = json;
209
+ this.numberOfColumns = numberOfColumns;
210
+ this.fields = fields;
211
+ this.rowspan = 1;
212
+ this.colspan = 1;
213
+ Object.keys(fields).forEach((currentField) => {
214
+ if (!Object.prototype.hasOwnProperty.call(fields, currentField)) {
215
+ return;
216
+ }
217
+ const col = new ContainerColumnModel();
218
+ col.fields = (fields[currentField] || []).map((field) => new FormFieldModel(form, field));
219
+ col.rowspan = fields[currentField].length;
220
+ if (!FormFieldTypes.isSectionType(this.type)) {
221
+ this.updateContainerColspan(col.fields);
222
+ }
223
+ this.rowspan = Math.max(this.rowspan, col.rowspan);
224
+ this.columns.push(col);
225
+ });
226
+ }
227
+ updateContainerColspan(fields) {
228
+ fields.forEach((colField) => {
229
+ this.colspan = Math.max(this.colspan, colField.colspan);
230
+ });
231
+ }
232
+ parseValue(json) {
233
+ const value = Object.prototype.hasOwnProperty.call(json, 'value') && json.value !== undefined ? json.value : null;
234
+ /*
235
+ This is needed due to Activiti issue related to reading dropdown values as value string
236
+ but saving back as object: { id: <id>, name: <name> }
237
+ */
238
+ if (json.type === FormFieldTypes.DROPDOWN) {
239
+ if (this.hasEmptyValue) {
240
+ if (!this.emptyOption) {
241
+ this.emptyOption = {
242
+ id: this.defaultEmptyOptionId,
243
+ name: this.defaultEmptyOptionName
244
+ };
245
+ this.options.unshift(this.emptyOption);
246
+ }
247
+ const isEmptyValue = !value || [this.emptyOption.id, this.emptyOption.name].includes(value);
248
+ if (isEmptyValue) {
249
+ return this.emptyOption;
250
+ }
251
+ }
252
+ if (this.isValidOption(value)) {
253
+ this.addOption({ id: value.id, name: value.name });
254
+ return value;
255
+ }
256
+ if (this.hasMultipleValues) {
257
+ const validSelectedOptions = (Array.isArray(json.value) ? json.value : []).filter((option) => this.isValidOption(option));
258
+ this.addOptions(validSelectedOptions);
259
+ return validSelectedOptions;
260
+ }
261
+ return value;
262
+ }
263
+ /*
264
+ This is needed due to Activiti issue related to reading radio button values as value string
265
+ but saving back as object: { id: <id>, name: <name> }
266
+ */
267
+ if (json.type === FormFieldTypes.RADIO_BUTTONS) {
268
+ if (json.value?.options) {
269
+ this.options = this.parseValidOptions(json.value.options);
270
+ }
271
+ // Activiti has a bug with default radio button value where initial selection passed as `name` value
272
+ // so try resolving current one with a fallback to first entry via name or id
273
+ // TODO: needs to be reported and fixed at Activiti side
274
+ const matchingOption = this.options.find((opt) => opt.id === value || opt.name === value || (value && (opt.id === value.id || opt.name === value.name)));
275
+ if (matchingOption) {
276
+ return matchingOption.id;
277
+ }
278
+ if (this.isValidOption(value)) {
279
+ this.addOption({ id: value.id, name: value.name });
280
+ return value.id;
281
+ }
282
+ return value;
283
+ }
284
+ if (this.isDateField(json) || this.isDateTimeField(json)) {
285
+ if (value) {
286
+ let dateValue;
287
+ if (isNumberValue(value)) {
288
+ dateValue = new Date(value);
289
+ }
290
+ else {
291
+ dateValue = this.isDateTimeField(json)
292
+ ? DateFnsUtils.parseDate(value, 'YYYY-MM-DD hh:mm A')
293
+ : DateFnsUtils.parseDate(value.split('T')[0], 'YYYY-M-D');
294
+ }
295
+ if (isValidDate(dateValue)) {
296
+ return dateValue;
297
+ }
298
+ }
299
+ return value;
300
+ }
301
+ if (this.isCheckboxField(json)) {
302
+ return json.value === 'true' || json.value === true;
303
+ }
304
+ return value;
305
+ }
306
+ updateForm() {
307
+ if (!this.form) {
308
+ return;
309
+ }
310
+ switch (this.type) {
311
+ case FormFieldTypes.DROPDOWN: {
312
+ if (!this.value) {
313
+ this.form.values[this.id] = null;
314
+ break;
315
+ }
316
+ /*
317
+ This is needed due to Activiti reading dropdown values as string
318
+ but saving back as object: { id: <id>, name: <name> }
319
+ */
320
+ if (Array.isArray(this.value)) {
321
+ this.form.values[this.id] = this.value;
322
+ break;
323
+ }
324
+ if (typeof this.value === 'string') {
325
+ if (this.value === 'empty' || this.value === '') {
326
+ this.form.values[this.id] = null;
327
+ break;
328
+ }
329
+ const matchingOption = this.options.find((opt) => opt.id === this.value);
330
+ this.form.values[this.id] = matchingOption || null;
331
+ }
332
+ if (typeof this.value === 'object') {
333
+ if (this.value.id === 'empty' || this.value.id === '') {
334
+ this.form.values[this.id] = null;
335
+ break;
336
+ }
337
+ const matchingOption = this.options.find((opt) => opt.id === this.value.id);
338
+ this.form.values[this.id] = matchingOption;
339
+ }
340
+ break;
341
+ }
342
+ case FormFieldTypes.RADIO_BUTTONS: {
343
+ const radioButton = this.options.find((opt) => opt.id === this.value);
344
+ if (this.optionType === 'rest') {
345
+ this.form.values[this.id] = radioButton
346
+ ? { ...radioButton, options: this.options }
347
+ : { id: null, name: null, options: this.options };
348
+ }
349
+ else {
350
+ this.form.values[this.id] = radioButton ? { ...radioButton } : null;
351
+ }
352
+ break;
353
+ }
354
+ case FormFieldTypes.UPLOAD: {
355
+ this.form.hasUpload = true;
356
+ if (this.value && this.value.length > 0) {
357
+ this.form.values[this.id] = Array.isArray(this.value) ? this.value.map((elem) => elem.id).join(',') : [this.value];
358
+ }
359
+ else {
360
+ this.form.values[this.id] = null;
361
+ }
362
+ break;
363
+ }
364
+ case FormFieldTypes.TYPEAHEAD: {
365
+ const typeAheadEntry = this.options.filter((opt) => opt.id === this.value || opt.name === this.value);
366
+ if (typeAheadEntry.length > 0) {
367
+ this.form.values[this.id] = typeAheadEntry[0];
368
+ }
369
+ else if (this.options.length > 0) {
370
+ this.form.values[this.id] = null;
371
+ }
372
+ break;
373
+ }
374
+ case FormFieldTypes.DATE: {
375
+ if (typeof this.value === 'string' && this.value === 'today') {
376
+ this.value = new Date();
377
+ }
378
+ let dateValue;
379
+ try {
380
+ dateValue = DateFnsUtils.parseDate(this.value, this.dateDisplayFormat);
381
+ }
382
+ catch (e) {
383
+ dateValue = new Date('error');
384
+ }
385
+ if (isValidDate(dateValue)) {
386
+ const datePart = DateFnsUtils.formatDate(dateValue, 'yyyy-MM-dd');
387
+ this.form.values[this.id] = `${datePart}T00:00:00.000Z`;
388
+ }
389
+ else {
390
+ this.form.values[this.id] = null;
391
+ this._value = this.value;
392
+ }
393
+ break;
394
+ }
395
+ case FormFieldTypes.DATETIME: {
396
+ if (typeof this.value === 'string' && this.value === 'now') {
397
+ this.value = new Date();
398
+ }
399
+ const dateTimeValue = this.value !== null ? DateFnsUtils.getDate(this.value) : null;
400
+ if (isValidDate(dateTimeValue)) {
401
+ this.form.values[this.id] = dateTimeValue.toISOString();
402
+ }
403
+ else {
404
+ this.form.values[this.id] = null;
405
+ this._value = this.value;
406
+ }
407
+ break;
408
+ }
409
+ case FormFieldTypes.NUMBER: {
410
+ this.form.values[this.id] = this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
411
+ break;
412
+ }
413
+ case FormFieldTypes.AMOUNT: {
414
+ this.form.values[this.id] = this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
415
+ break;
416
+ }
417
+ case FormFieldTypes.DECIMAL: {
418
+ this.form.values[this.id] = parseFloat(this.value);
419
+ break;
420
+ }
421
+ case FormFieldTypes.BOOLEAN: {
422
+ this.form.values[this.id] = this.value !== null && this.value !== undefined ? this.value : false;
423
+ break;
424
+ }
425
+ case FormFieldTypes.PEOPLE: {
426
+ this.form.values[this.id] = this.value ? this.value : null;
427
+ break;
428
+ }
429
+ case FormFieldTypes.FUNCTIONAL_GROUP: {
430
+ this.form.values[this.id] = this.value ? this.value : null;
431
+ break;
432
+ }
433
+ default:
434
+ if (this.shouldUpdateFormValues(this.type)) {
435
+ this.form.values[this.id] = this.value;
436
+ }
437
+ }
438
+ this.form.onFormFieldChanged(this);
439
+ }
440
+ /**
441
+ * Check if the field type is invalid, requires a type to be a `container`
442
+ *
443
+ * @param type field type
444
+ * @returns `true` if type is a `container`, otherwise `false`
445
+ */
446
+ isInvalidFieldType(type) {
447
+ return type === 'container';
448
+ }
449
+ getOptionName() {
450
+ const option = this.options.find((opt) => opt.id === this.value);
451
+ return option ? option.name : null;
452
+ }
453
+ hasOptions() {
454
+ return this.options?.length > 0;
455
+ }
456
+ isEmptyValueOption(option) {
457
+ return this.hasEmptyValue && option?.id === this.defaultEmptyOptionId;
458
+ }
459
+ shouldUpdateFormValues(type) {
460
+ return !FormFieldTypes.isReadOnlyType(type) && !this.isInvalidFieldType(type) && !FormFieldTypes.isSectionType(type);
461
+ }
462
+ addOptions(options) {
463
+ options.forEach((option) => this.addOption(option));
464
+ }
465
+ addOption(option) {
466
+ const alreadyExists = this.options.find((opt) => opt?.id === option?.id);
467
+ if (!alreadyExists) {
468
+ this.options.push(option);
469
+ }
470
+ }
471
+ parseValidOptions(options) {
472
+ return Array.isArray(options) ? options.filter((option) => this.isValidOption(option)) : [];
473
+ }
474
+ parseOptions(options, optionType) {
475
+ return optionType === 'rest' ? [] : this.parseValidOptions(options);
476
+ }
477
+ isValidOption(option) {
478
+ return typeof option === 'object' && !Array.isArray(option) && option?.id && option?.name;
479
+ }
480
+ isDateField(json) {
481
+ return json.params?.field?.type === FormFieldTypes.DATE || json.type === FormFieldTypes.DATE;
482
+ }
483
+ isDateTimeField(json) {
484
+ return json.params?.field?.type === FormFieldTypes.DATETIME || json.type === FormFieldTypes.DATETIME;
485
+ }
486
+ isCheckboxField(json) {
487
+ return json.params?.field?.type === FormFieldTypes.BOOLEAN || json.type === FormFieldTypes.BOOLEAN;
488
+ }
489
+ }
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvY29yZS9mb3JtLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQW9FL0MsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FB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QUssY0FBYyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDdkcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQgeyBXaWRnZXRWaXNpYmlsaXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvd2lkZ2V0LXZpc2liaWxpdHkubW9kZWwnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29sdW1uTW9kZWwgfSBmcm9tICcuL2NvbnRhaW5lci1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlTW9kZWwgfSBmcm9tICcuL2Vycm9yLW1lc3NhZ2UubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTWV0YWRhdGEgfSBmcm9tICcuL2Zvcm0tZmllbGQtbWV0YWRhdGEnO1xuaW1wb3J0IHsgRm9ybUZpZWxkT3B0aW9uIH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9wdGlvbic7XG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlcyB9IGZyb20gJy4vZm9ybS1maWVsZC10eXBlcyc7XG5pbXBvcnQgeyBGb3JtV2lkZ2V0TW9kZWwgfSBmcm9tICcuL2Zvcm0td2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1GaWVsZFJ1bGUgfSBmcm9tICcuL2Zvcm0tZmllbGQtcnVsZSc7XG5pbXBvcnQgeyBQcm9jZXNzRm9ybU1vZGVsIH0gZnJvbSAnLi9wcm9jZXNzLWZvcm0tbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzTnVtYmVyVmFsdWUgfSBmcm9tICcuL2Zvcm0tZmllbGQtdXRpbHMnO1xuaW1wb3J0IHsgVmFyaWFibGVDb25maWcgfSBmcm9tICcuL2Zvcm0tZmllbGQtdmFyaWFibGUtb3B0aW9ucyc7XG5pbXBvcnQgeyBEYXRhQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGF0YXRhYmxlL2RhdGEvZGF0YS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZUZuc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGlzVmFsaWQgYXMgaXNWYWxpZERhdGUgfSBmcm9tICdkYXRlLWZucyc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkT3B0aW9uVHlwZSA9ICdyZXN0JyB8ICdtYW51YWwnIHwgJ3ZhcmlhYmxlJztcbmV4cG9ydCB0eXBlIEZpZWxkU2VsZWN0aW9uVHlwZSA9ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcbmV4cG9ydCB0eXBlIEZpZWxkQWxpZ25tZW50VHlwZSA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG5cbi8vIE1hcHMgdG8gRm9ybUZpZWxkUmVwcmVzZW50YXRpb25cbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRNb2RlbCBleHRlbmRzIEZvcm1XaWRnZXRNb2RlbCB7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9yZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBkZWZhdWx0RGF0ZUZvcm1hdDogc3RyaW5nID0gJ0QtTS1ZWVlZJztcbiAgICByZWFkb25seSBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6IHN0cmluZyA9ICdELU0tWVlZWSBoaDptbSBBJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRFbXB0eU9wdGlvbklkID0gJ2VtcHR5JztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRFbXB0eU9wdGlvbk5hbWUgPSAnQ2hvb3NlIG9uZS4uLic7XG5cbiAgICAvLyBtb2RlbCBtZW1iZXJzXG4gICAgZmllbGRUeXBlOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG92ZXJyaWRlSWQ6IGJvb2xlYW47XG4gICAgdGFiOiBzdHJpbmc7XG4gICAgcm93c3BhbjogbnVtYmVyID0gMTtcbiAgICBjb2xzcGFuOiBudW1iZXIgPSAxO1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuICAgIHRvb2x0aXA6IHN0cmluZyA9IG51bGw7XG4gICAgbWluTGVuZ3RoOiBudW1iZXIgPSAwO1xuICAgIG1heExlbmd0aDogbnVtYmVyID0gMDtcbiAgICBtaW5WYWx1ZTogc3RyaW5nO1xuICAgIG1heFZhbHVlOiBzdHJpbmc7XG4gICAgbWF4RGF0ZVJhbmdlVmFsdWU6IG51bWJlciA9IDA7XG4gICAgbWluRGF0ZVJhbmdlVmFsdWU6IG51bWJlciA9IDA7XG4gICAgcHJlY2lzaW9uOiBudW1iZXI7XG4gICAgZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbjogYm9vbGVhbjtcbiAgICByZWdleFBhdHRlcm46IHN0cmluZztcbiAgICBvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSA9IFtdO1xuICAgIHJlc3RVcmw6IHN0cmluZztcbiAgICByb2xlczogc3RyaW5nW107XG4gICAgcmVzdFJlc3BvbnNlUGF0aDogc3RyaW5nO1xuICAgIHJlc3RJZFByb3BlcnR5OiBzdHJpbmc7XG4gICAgcmVzdExhYmVsUHJvcGVydHk6IHN0cmluZztcbiAgICBoYXNFbXB0eVZhbHVlOiBib29sZWFuO1xuICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIG9wdGlvblR5cGU6IEZpZWxkT3B0aW9uVHlwZTtcbiAgICBwYXJhbXM6IEZvcm1GaWVsZE1ldGFkYXRhID0ge307XG4gICAgaHlwZXJsaW5rVXJsOiBzdHJpbmc7XG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICBpc1Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHZpc2liaWxpdHlDb25kaXRpb246IFdpZGdldFZpc2liaWxpdHlNb2RlbCA9IG51bGw7XG4gICAgZW5hYmxlRnJhY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgY3VycmVuY3k6IHN0cmluZyA9IG51bGw7XG4gICAgZGF0ZURpc3BsYXlGb3JtYXQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdERhdGVGb3JtYXQ7XG4gICAgc2VsZWN0aW9uVHlwZTogRmllbGRTZWxlY3Rpb25UeXBlO1xuICAgIGFsaWdubWVudFR5cGU6IEZpZWxkQWxpZ25tZW50VHlwZTtcbiAgICBydWxlPzogRm9ybUZpZWxkUnVsZTtcbiAgICBzZWxlY3RMb2dnZWRVc2VyOiBib29sZWFuO1xuICAgIGdyb3Vwc1Jlc3RyaWN0aW9uOiBzdHJpbmdbXTtcbiAgICBsZWZ0TGFiZWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFyaWFibGVDb25maWc6IFZhcmlhYmxlQ29uZmlnO1xuICAgIHNjaGVtYURlZmluaXRpb246IERhdGFDb2x1bW5bXTtcbiAgICBleHRlcm5hbFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHN0eWxlPzogc3RyaW5nO1xuXG4gICAgLy8gY29udGFpbmVyIG1vZGVsIG1lbWJlcnNcbiAgICBudW1iZXJPZkNvbHVtbnM6IG51bWJlciA9IDE7XG4gICAgZmllbGRzOiBGb3JtRmllbGRNb2RlbFtdID0gW107XG4gICAgY29sdW1uczogQ29udGFpbmVyQ29sdW1uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gdXRpbCBtZW1iZXJzXG4gICAgZW1wdHlPcHRpb246IEZvcm1GaWVsZE9wdGlvbjtcbiAgICB2YWxpZGF0aW9uU3VtbWFyeTogRXJyb3JNZXNzYWdlTW9kZWw7XG5cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCByZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybT8ucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seTtcbiAgICB9XG5cbiAgICBzZXQgcmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBnZXQgaGFzTXVsdGlwbGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdtdWx0aXBsZScgfHwgdGhpcy5wYXJhbXMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgbWFya0FzSW52YWxpZCgpIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG1hcmtBc1ZhbGlkKCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeSA9IG5ldyBFcnJvck1lc3NhZ2VNb2RlbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmllbGRWYWxpZGF0YWJsZSgpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5mb3JtLmZpZWxkVmFsaWRhdG9ycyB8fCBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRvci52YWxpZGF0ZSh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkVmFsaWRhdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yZWFkT25seSB8fCBGb3JtRmllbGRUeXBlcy5pc1ZhbGlkYXRhYmxlVHlwZSh0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGZvcm06IGFueSwganNvbj86IGFueSkge1xuICAgICAgICBzdXBlcihmb3JtLCBqc29uKTtcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRUeXBlID0ganNvbi5maWVsZFR5cGU7XG4gICAgICAgICAgICB0aGlzLmlkID0ganNvbi5pZDtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IGpzb24ubmFtZTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IGpzb24udHlwZTtcbiAgICAgICAgICAgIHRoaXMucm9sZXMgPSBqc29uLnJvbGVzO1xuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBqc29uLnJlcXVpcmVkO1xuICAgICAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSBqc29uLnJlYWRPbmx5IHx8IGpzb24udHlwZSA9PT0gJ3JlYWRvbmx5JztcbiAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVJZCA9IGpzb24ub3ZlcnJpZGVJZDtcbiAgICAgICAgICAgIHRoaXMudGFiID0ganNvbi50YWI7XG4gICAgICAgICAgICB0aGlzLnJlc3RVcmwgPSBqc29uLnJlc3RVcmw7XG4gICAgICAgICAgICB0aGlzLnJlc3RSZXNwb25zZVBhdGggPSBqc29uLnJlc3RSZXNwb25zZVBhdGg7XG4gICAgICAgICAgICB0aGlzLnJlc3RJZFByb3BlcnR5ID0ganNvbi5yZXN0SWRQcm9wZXJ0eTtcbiAgICAgICAgICAgIHRoaXMucmVzdExhYmVsUHJvcGVydHkgPSBqc29uLnJlc3RMYWJlbFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5jb2xzcGFuID0ganNvbi5jb2xzcGFuO1xuICAgICAgICAgICAgdGhpcy5yb3dzcGFuID0ganNvbi5yb3dzcGFuO1xuICAgICAgICAgICAgdGhpcy5taW5MZW5ndGggPSBqc29uLm1pbkxlbmd0aCB8fCAwO1xuICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGggPSBqc29uLm1heExlbmd0aCB8fCAwO1xuICAgICAgICAgICAgdGhpcy5taW5WYWx1ZSA9IGpzb24ubWluVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1heFZhbHVlID0ganNvbi5tYXhWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZVJhbmdlVmFsdWUgPSBqc29uLm1pbkRhdGVSYW5nZVZhbHVlO1xuICAgICAgICAgICAgdGhpcy5tYXhEYXRlUmFuZ2VWYWx1ZSA9IGpzb24ubWF4RGF0ZVJhbmdlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNEYXRlUmFuZ2VTZWxlY3Rpb24gPSBqc29uLmR5bmFtaWNEYXRlUmFuZ2VTZWxlY3Rpb247XG4gICAgICAgICAgICB0aGlzLnJlZ2V4UGF0dGVybiA9IGpzb24ucmVnZXhQYXR0ZXJuO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5wYXJzZU9wdGlvbnMoanNvbi5vcHRpb25zLCBqc29uLm9wdGlvblR5cGUpO1xuICAgICAgICAgICAgdGhpcy5lbXB0eU9wdGlvbiA9IHRoaXMuZ2V0RW1wdHlPcHRpb24odGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuaGFzRW1wdHlWYWx1ZSA9IGpzb24/Lmhhc0VtcHR5VmFsdWUgPz8gISF0aGlzLmVtcHR5T3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBqc29uLmNsYXNzTmFtZTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uVHlwZSA9IGpzb24ub3B0aW9uVHlwZTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0ganNvbi5wYXJhbXMgfHwge307XG4gICAgICAgICAgICB0aGlzLmh5cGVybGlua1VybCA9IGpzb24uaHlwZXJsaW5rVXJsO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9IGpzb24uZGlzcGxheVRleHQ7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlDb25kaXRpb24gPSBqc29uLnZpc2liaWxpdHlDb25kaXRpb24gPyBuZXcgV2lkZ2V0VmlzaWJpbGl0eU1vZGVsKGpzb24udmlzaWJpbGl0eUNvbmRpdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUZyYWN0aW9ucyA9IGpzb24uZW5hYmxlRnJhY3Rpb25zO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IGpzb24uY3VycmVuY3k7XG4gICAgICAgICAgICB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0ID0ganNvbi5kYXRlRGlzcGxheUZvcm1hdCB8fCB0aGlzLmdldERlZmF1bHREYXRlRm9ybWF0KGpzb24pO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeSA9IG5ldyBFcnJvck1lc3NhZ2VNb2RlbCgpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwID0ganNvbi50b29sdGlwIHx8ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25UeXBlID0ganNvbi5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgdGhpcy5hbGlnbm1lbnRUeXBlID0ganNvbi5hbGlnbm1lbnRUeXBlO1xuICAgICAgICAgICAgdGhpcy5ydWxlID0ganNvbi5ydWxlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RMb2dnZWRVc2VyID0ganNvbi5zZWxlY3RMb2dnZWRVc2VyO1xuICAgICAgICAgICAgdGhpcy5ncm91cHNSZXN0cmljdGlvbiA9IGpzb24uZ3JvdXBzUmVzdHJpY3Rpb24/Lmdyb3VwcztcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVDb25maWcgPSBqc29uLnZhcmlhYmxlQ29uZmlnO1xuICAgICAgICAgICAgdGhpcy5zY2hlbWFEZWZpbml0aW9uID0ganNvbi5zY2hlbWFEZWZpbml0aW9uO1xuICAgICAgICAgICAgdGhpcy5wcmVjaXNpb24gPSBqc29uLnByZWNpc2lvbjtcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxQcm9wZXJ0eSA9IGpzb24uZXh0ZXJuYWxQcm9wZXJ0eTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKGpzb24pO1xuICAgICAgICAgICAgdGhpcy5zdHlsZSA9IGpzb24uc3R5bGU7XG5cbiAgICAgICAgICAgIGlmIChqc29uLnBsYWNlaG9sZGVyICYmIGpzb24ucGxhY2Vob2xkZXIgIT09ICcnICYmIGpzb24ucGxhY2Vob2xkZXIgIT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBqc29uLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRm9ybUZpZWxkVHlwZXMuaXNSZWFkT25seVR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcz8uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZvclJlYWRvbmx5VHlwZShmb3JtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc0NvbnRhaW5lclR5cGUodGhpcy50eXBlKSB8fCBGb3JtRmllbGRUeXBlcy5pc1NlY3Rpb25UeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckZhY3RvcnkoanNvbiwgZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybT8uanNvbikge1xuICAgICAgICAgICAgdGhpcy5sZWZ0TGFiZWxzID0gZm9ybS5qc29uLmxlZnRMYWJlbHMgfHwgZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVtcHR5T3B0aW9uKG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdKTogRm9ybUZpZWxkT3B0aW9uIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlRm9yUmVhZG9ubHlUeXBlKGZvcm06IGFueSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0UHJvY2Vzc1ZhcmlhYmxlVmFsdWUodGhpcy5wYXJhbXMuZmllbGQsIGZvcm0pO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdERhdGVGb3JtYXQoanNvbkZpZWxkOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgb3JpZ2luYWxUeXBlID0ganNvbkZpZWxkLnR5cGU7XG4gICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZShqc29uRmllbGQudHlwZSkgJiYganNvbkZpZWxkLnBhcmFtcz8uZmllbGQpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVHlwZSA9IGpzb25GaWVsZC5wYXJhbXMuZmllbGQudHlwZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxUeXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRSA/IHRoaXMuZGVmYXVsdERhdGVUaW1lRm9ybWF0IDogdGhpcy5kZWZhdWx0RGF0ZUZvcm1hdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVHlwZWFoZWFkRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ3R5cGVhaGVhZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWVsZE5hbWVXaXRoTGFiZWwobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWUgKyAnX0xBQkVMJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2Nlc3NWYXJpYWJsZVZhbHVlKGZpZWxkOiBhbnksIGZvcm06IFByb2Nlc3NGb3JtTW9kZWwpOiBhbnkge1xuICAgICAgICBsZXQgZmllbGROYW1lID0gZmllbGQubmFtZTtcbiAgICAgICAgaWYgKHRoaXMuaXNUeXBlYWhlYWRGaWVsZFR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgIGZpZWxkTmFtZSA9IHRoaXMuZ2V0RmllbGROYW1lV2l0aExhYmVsKGZpZWxkLmlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybS5nZXRQcm9jZXNzVmFyaWFibGVWYWx1ZShmaWVsZE5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udGFpbmVyRmFjdG9yeShqc29uOiBhbnksIGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IG51bWJlck9mQ29sdW1ucyA9IDEsIGZpZWxkcyA9IHt9IH0gPSBqc29uO1xuICAgICAgICB0aGlzLm51bWJlck9mQ29sdW1ucyA9IG51bWJlck9mQ29sdW1ucztcbiAgICAgICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgICAgIHRoaXMucm93c3BhbiA9IDE7XG4gICAgICAgIHRoaXMuY29sc3BhbiA9IDE7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKChjdXJyZW50RmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZpZWxkcywgY3VycmVudEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29sID0gbmV3IENvbnRhaW5lckNvbHVtbk1vZGVsKCk7XG4gICAgICAgICAgICBjb2wuZmllbGRzID0gKGZpZWxkc1tjdXJyZW50RmllbGRdIHx8IFtdKS5tYXAoKGZpZWxkOiBhbnkpID0+IG5ldyBGb3JtRmllbGRNb2RlbChmb3JtLCBmaWVsZCkpO1xuICAgICAgICAgICAgY29sLnJvd3NwYW4gPSBmaWVsZHNbY3VycmVudEZpZWxkXS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmICghRm9ybUZpZWxkVHlwZXMuaXNTZWN0aW9uVHlwZSh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb250YWluZXJDb2xzcGFuKGNvbC5maWVsZHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJvd3NwYW4gPSBNYXRoLm1heCh0aGlzLnJvd3NwYW4sIGNvbC5yb3dzcGFuKTtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ29udGFpbmVyQ29sc3BhbihmaWVsZHM6IEZvcm1GaWVsZE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGNvbEZpZWxkOiBGb3JtRmllbGRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2xzcGFuID0gTWF0aC5tYXgodGhpcy5jb2xzcGFuLCBjb2xGaWVsZC5jb2xzcGFuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyc2VWYWx1ZShqc29uOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChqc29uLCAndmFsdWUnKSAmJiBqc29uLnZhbHVlICE9PSB1bmRlZmluZWQgPyBqc29uLnZhbHVlIDogbnVsbDtcblxuICAgICAgICAvKlxuICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIGlzc3VlIHJlbGF0ZWQgdG8gcmVhZGluZyBkcm9wZG93biB2YWx1ZXMgYXMgdmFsdWUgc3RyaW5nXG4gICAgICAgICBidXQgc2F2aW5nIGJhY2sgYXMgb2JqZWN0OiB7IGlkOiA8aWQ+LCBuYW1lOiA8bmFtZT4gfVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuRFJPUERPV04pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0VtcHR5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW1wdHlPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eU9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5kZWZhdWx0RW1wdHlPcHRpb25OYW1lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy51bnNoaWZ0KHRoaXMuZW1wdHlPcHRpb24pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW1wdHlWYWx1ZSA9ICF2YWx1ZSB8fCBbdGhpcy5lbXB0eU9wdGlvbi5pZCwgdGhpcy5lbXB0eU9wdGlvbi5uYW1lXS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU9wdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRPcHRpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRPcHRpb24oeyBpZDogdmFsdWUuaWQsIG5hbWU6IHZhbHVlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNNdWx0aXBsZVZhbHVlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkU2VsZWN0ZWRPcHRpb25zID0gKEFycmF5LmlzQXJyYXkoanNvbi52YWx1ZSkgPyBqc29uLnZhbHVlIDogW10pLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbnModmFsaWRTZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZFNlbGVjdGVkT3B0aW9ucztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGR1ZSB0byBBY3Rpdml0aSBpc3N1ZSByZWxhdGVkIHRvIHJlYWRpbmcgcmFkaW8gYnV0dG9uIHZhbHVlcyBhcyB2YWx1ZSBzdHJpbmdcbiAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoanNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5SQURJT19CVVRUT05TKSB7XG4gICAgICAgICAgICBpZiAoanNvbi52YWx1ZT8ub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucGFyc2VWYWxpZE9wdGlvbnMoanNvbi52YWx1ZS5vcHRpb25zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWN0aXZpdGkgaGFzIGEgYnVnIHdpdGggZGVmYXVsdCByYWRpbyBidXR0b24gdmFsdWUgd2hlcmUgaW5pdGlhbCBzZWxlY3Rpb24gcGFzc2VkIGFzIGBuYW1lYCB2YWx1ZVxuICAgICAgICAgICAgLy8gc28gdHJ5IHJlc29sdmluZyBjdXJyZW50IG9uZSB3aXRoIGEgZmFsbGJhY2sgdG8gZmlyc3QgZW50cnkgdmlhIG5hbWUgb3IgaWRcbiAgICAgICAgICAgIC8vIFRPRE86IG5lZWRzIHRvIGJlIHJlcG9ydGVkIGFuZCBmaXhlZCBhdCBBY3Rpdml0aSBzaWRlXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ09wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHQpID0+IG9wdC5pZCA9PT0gdmFsdWUgfHwgb3B0Lm5hbWUgPT09IHZhbHVlIHx8ICh2YWx1ZSAmJiAob3B0LmlkID09PSB2YWx1ZS5pZCB8fCBvcHQubmFtZSA9PT0gdmFsdWUubmFtZSkpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdPcHRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmdPcHRpb24uaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRPcHRpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRPcHRpb24oeyBpZDogdmFsdWUuaWQsIG5hbWU6IHZhbHVlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RhdGVGaWVsZChqc29uKSB8fCB0aGlzLmlzRGF0ZVRpbWVGaWVsZChqc29uKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGVWYWx1ZTogRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc051bWJlclZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gdGhpcy5pc0RhdGVUaW1lRmllbGQoanNvbilcbiAgICAgICAgICAgICAgICAgICAgICAgID8gRGF0ZUZuc1V0aWxzLnBhcnNlRGF0ZSh2YWx1ZSwgJ1lZWVktTU0tREQgaGg6bW0gQScpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IERhdGVGbnNVdGlscy5wYXJzZURhdGUodmFsdWUuc3BsaXQoJ1QnKVswXSwgJ1lZWVktTS1EJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tib3hGaWVsZChqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGpzb24udmFsdWUgPT09ICd0cnVlJyB8fCBqc29uLnZhbHVlID09PSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHVwZGF0ZUZvcm0oKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5EUk9QRE9XTjoge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIHJlYWRpbmcgZHJvcGRvd24gdmFsdWVzIGFzIHN0cmluZ1xuICAgICAgICAgICAgICAgICBidXQgc2F2aW5nIGJhY2sgYXMgb2JqZWN0OiB7IGlkOiA8aWQ+LCBuYW1lOiA8bmFtZT4gfVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnZW1wdHknIHx8IHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG1hdGNoaW5nT3B0aW9uIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5pZCA9PT0gJ2VtcHR5JyB8fCB0aGlzLnZhbHVlLmlkID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uOiBGb3JtRmllbGRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUuaWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBtYXRjaGluZ09wdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlJBRElPX0JVVFRPTlM6IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYWRpb0J1dHRvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvblR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgID8geyAuLi5yYWRpb0J1dHRvbiwgb3B0aW9uczogdGhpcy5vcHRpb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBpZDogbnVsbCwgbmFtZTogbnVsbCwgb3B0aW9uczogdGhpcy5vcHRpb25zIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHJhZGlvQnV0dG9uID8geyAuLi5yYWRpb0J1dHRvbiB9IDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuVVBMT0FEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmhhc1VwbG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZS5tYXAoKGVsZW0pID0+IGVsZW0uaWQpLmpvaW4oJywnKSA6IFt0aGlzLnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlRZUEVBSEVBRDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVBaGVhZEVudHJ5OiBGb3JtRmllbGRPcHRpb25bXSA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlIHx8IG9wdC5uYW1lID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZUFoZWFkRW50cnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdHlwZUFoZWFkRW50cnlbMF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRBVEU6IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUgPT09ICd0b2RheScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGRhdGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBEYXRlRm5zVXRpbHMucGFyc2VEYXRlKHRoaXMudmFsdWUsIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gbmV3IERhdGUoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZVBhcnQgPSBEYXRlRm5zVXRpbHMuZm9ybWF0RGF0ZShkYXRlVmFsdWUsICd5eXl5LU1NLWRkJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBgJHtkYXRlUGFydH1UMDA6MDA6MDAuMDAwWmA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FOiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJyAmJiB0aGlzLnZhbHVlID09PSAnbm93Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlVGltZVZhbHVlID0gdGhpcy52YWx1ZSAhPT0gbnVsbCA/IERhdGVGbnNVdGlscy5nZXREYXRlKHRoaXMudmFsdWUpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRlVGltZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gZGF0ZVRpbWVWYWx1ZS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5OVU1CRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy5lbmFibGVGcmFjdGlvbnMgPyBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIDogcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5BTU9VTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy5lbmFibGVGcmFjdGlvbnMgPyBwYXJzZUZsb2F0KHRoaXMudmFsdWUpIDogcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5ERUNJTUFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkJPT0xFQU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQgPyB0aGlzLnZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlBFT1BMRToge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkZVTkNUSU9OQUxfR1JPVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRVcGRhdGVGb3JtVmFsdWVzKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtLm9uRm9ybUZpZWxkQ2hhbmdlZCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZmllbGQgdHlwZSBpcyBpbnZhbGlkLCByZXF1aXJlcyBhIHR5cGUgdG8gYmUgYSBgY29udGFpbmVyYFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgZmllbGQgdHlwZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0eXBlIGlzIGEgYGNvbnRhaW5lcmAsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNJbnZhbGlkRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ2NvbnRhaW5lcic7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBvcHRpb246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubmFtZSA6IG51bGw7XG4gICAgfVxuXG4gICAgaGFzT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0VtcHR5VmFsdWVPcHRpb24ob3B0aW9uOiBGb3JtRmllbGRPcHRpb24pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRW1wdHlWYWx1ZSAmJiBvcHRpb24/LmlkID09PSB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdWxkVXBkYXRlRm9ybVZhbHVlcyh0eXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhRm9ybUZpZWxkVHlwZXMuaXNSZWFkT25seVR5cGUodHlwZSkgJiYgIXRoaXMuaXNJbnZhbGlkRmllbGRUeXBlKHR5cGUpICYmICFGb3JtRmllbGRUeXBlcy5pc1NlY3Rpb25UeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkT3B0aW9ucyhvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSkge1xuICAgICAgICBvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gdGhpcy5hZGRPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRPcHRpb24ob3B0aW9uOiBGb3JtRmllbGRPcHRpb24pIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdD8uaWQgPT09IG9wdGlvbj8uaWQpO1xuICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVmFsaWRPcHRpb25zKG9wdGlvbnM6IGFueSk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlT3B0aW9ucyhvcHRpb25zOiBhbnksIG9wdGlvblR5cGU6IEZpZWxkT3B0aW9uVHlwZSk6IEZvcm1GaWVsZE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvblR5cGUgPT09ICdyZXN0JyA/IFtdIDogdGhpcy5wYXJzZVZhbGlkT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRPcHRpb24ob3B0aW9uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9wdGlvbikgJiYgb3B0aW9uPy5pZCAmJiBvcHRpb24/Lm5hbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0RhdGVGaWVsZChqc29uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURSB8fCBqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0RhdGVUaW1lRmllbGQoanNvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBqc29uLnBhcmFtcz8uZmllbGQ/LnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FIHx8IGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NoZWNrYm94RmllbGQoanNvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBqc29uLnBhcmFtcz8uZmllbGQ/LnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkJPT0xFQU4gfHwganNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5CT09MRUFOO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,32 @@
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
+ export class FormOutcomeEvent {
18
+ get outcome() {
19
+ return this._outcome;
20
+ }
21
+ get defaultPrevented() {
22
+ return this._defaultPrevented;
23
+ }
24
+ constructor(outcome) {
25
+ this._defaultPrevented = false;
26
+ this._outcome = outcome;
27
+ }
28
+ preventDefault() {
29
+ this._defaultPrevented = true;
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1vdXRjb21lLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9mb3JtL2NvbXBvbmVudHMvd2lkZ2V0cy9jb3JlL2Zvcm0tb3V0Y29tZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSXpCLElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksT0FBeUI7UUFWN0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBV3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cblxuaW1wb3J0IHsgRm9ybU91dGNvbWVNb2RlbCB9IGZyb20gJy4vZm9ybS1vdXRjb21lLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEZvcm1PdXRjb21lRXZlbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX291dGNvbWU6IEZvcm1PdXRjb21lTW9kZWw7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFByZXZlbnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZ2V0IG91dGNvbWUoKTogRm9ybU91dGNvbWVNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vdXRjb21lO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0UHJldmVudGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFByZXZlbnRlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvdXRjb21lOiBGb3JtT3V0Y29tZU1vZGVsKSB7XG4gICAgICAgIHRoaXMuX291dGNvbWUgPSBvdXRjb21lO1xuICAgIH1cblxuICAgIHByZXZlbnREZWZhdWx0KCkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICB9XG59XG4iXX0=