@alfresco/adf-core 7.1.0-15303058550 → 8.0.0

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 (702) hide show
  1. package/api/lib/alfresco-api/alfresco-api.utils.d.ts +1 -1
  2. package/breadcrumbs/styles/_breadcrumb.theme.scss +4 -4
  3. package/bundles/assets/adf-core/i18n/de.json +4 -2
  4. package/bundles/assets/adf-core/i18n/en.json +3 -1
  5. package/bundles/assets/adf-core/i18n/es.json +3 -1
  6. package/bundles/assets/adf-core/i18n/fr.json +3 -1
  7. package/bundles/assets/adf-core/i18n/it.json +3 -1
  8. package/bundles/assets/adf-core/i18n/pl.json +3 -1
  9. package/bundles/assets/adf-core/i18n/pt.json +3 -1
  10. package/custom-theme/README.md +3 -0
  11. package/custom-theme/material-theme.scss +4 -7
  12. package/custom-theme/theme/custom-theme-palettes.scss +8 -12
  13. package/custom-theme/theme/typography.scss +26 -26
  14. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +4 -35
  15. package/feature-flags/lib/services/debug-features.service.d.ts +7 -6
  16. package/feature-flags/lib/services/storage-features.service.d.ts +6 -6
  17. package/fesm2022/adf-core.mjs +1558 -1402
  18. package/fesm2022/adf-core.mjs.map +1 -1
  19. package/fesm2022/alfresco-adf-core-api.mjs +3 -3
  20. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  21. package/fesm2022/alfresco-adf-core-auth.mjs +6 -6
  22. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  23. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +12 -13
  24. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  25. package/fesm2022/alfresco-adf-core-feature-flags.mjs +88 -78
  26. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  27. package/fesm2022/alfresco-adf-core-shell.mjs +95 -20
  28. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  29. package/lib/about/about-package/package-list.component.scss +5 -5
  30. package/lib/about/about-server-settings/about-server-settings.component.scss +5 -5
  31. package/lib/about/about.component.scss +3 -3
  32. package/lib/app-config/app-config.module.d.ts +1 -0
  33. package/lib/app-config/provide-app-config.d.ts +23 -0
  34. package/lib/app-config/public-api.d.ts +1 -0
  35. package/lib/auth/oidc/auth.module.d.ts +4 -4
  36. package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
  37. package/lib/card-view/components/base-card-view.d.ts +1 -1
  38. package/lib/card-view/components/card-view/card-view.component.scss +25 -23
  39. package/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.scss +7 -7
  40. package/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.d.ts +2 -0
  41. package/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.scss +3 -5
  42. package/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.scss +5 -5
  43. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +22 -11
  44. package/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.scss +3 -3
  45. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +8 -11
  46. package/lib/comments/comments.component.d.ts +3 -1
  47. package/lib/comments/comments.component.scss +9 -9
  48. package/lib/common/services/storage.service.d.ts +8 -0
  49. package/lib/core.module.d.ts +124 -128
  50. package/lib/datatable/components/datatable/datatable.component.scss +18 -16
  51. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  52. package/lib/datatable/data/object-datarow.model.d.ts +1 -0
  53. package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
  54. package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +2 -6
  55. package/lib/dialogs/edit-json/edit-json.dialog.d.ts +1 -1
  56. package/lib/dialogs/edit-json/edit-json.dialog.module.d.ts +1 -6
  57. package/lib/dialogs/edit-json/edit-json.dialog.scss +1 -3
  58. package/lib/dynamic-chip-list/dynamic-chip-list.component.scss +3 -3
  59. package/lib/form/components/form-base.component.d.ts +0 -1
  60. package/lib/form/components/form-renderer.component.d.ts +1 -3
  61. package/lib/form/components/form-renderer.component.scss +73 -47
  62. package/lib/form/components/form-section/form-section.component.scss +3 -4
  63. package/lib/form/components/helpers/buttons-visibility.d.ts +24 -0
  64. package/lib/form/components/inplace-form-input/inplace-form-input.component.scss +5 -5
  65. package/lib/form/components/widgets/amount/amount.widget.scss +14 -5
  66. package/lib/form/components/widgets/checkbox/checkbox.widget.scss +11 -0
  67. package/lib/form/components/widgets/core/content-link.model.d.ts +1 -0
  68. package/lib/form/components/widgets/core/form.model.d.ts +1 -0
  69. package/lib/form/components/widgets/date/date.widget.scss +9 -0
  70. package/lib/form/components/widgets/date-time/date-time.widget.scss +12 -6
  71. package/lib/form/components/widgets/decimal/decimal.component.scss +6 -0
  72. package/lib/form/components/widgets/form.theme.scss +9 -8
  73. package/lib/form/components/widgets/hyperlink/hyperlink.widget.d.ts +16 -0
  74. package/lib/form/components/widgets/multiline-text/multiline-text.widget.scss +3 -0
  75. package/lib/form/components/widgets/number/number.widget.d.ts +1 -0
  76. package/lib/form/components/widgets/number/number.widget.scss +6 -0
  77. package/lib/form/components/widgets/text/text.widget.scss +8 -2
  78. package/lib/form/components/widgets/widget.component.d.ts +2 -2
  79. package/lib/form/form-base.module.d.ts +1 -0
  80. package/lib/form/public-api.d.ts +1 -0
  81. package/lib/identity-user-info/identity-user-info.component.scss +11 -10
  82. package/lib/info-drawer/info-drawer-layout.component.scss +8 -8
  83. package/lib/info-drawer/info-drawer.component.scss +21 -21
  84. package/lib/layout/components/header/header.component.scss +7 -7
  85. package/lib/layout/components/layout-container/layout-container.component.scss +3 -3
  86. package/lib/layout/components/sidenav-layout/sidenav-layout.component.scss +6 -6
  87. package/lib/login/components/login/login.component.scss +5 -5
  88. package/lib/notifications/components/notification-history.component.scss +4 -4
  89. package/lib/notifications/services/notification.service.d.ts +1 -1
  90. package/lib/search-text/search-text-input.component.scss +2 -2
  91. package/lib/snackbar-content/snackbar-content.component.d.ts +1 -1
  92. package/lib/snackbar-content/snackbar-content.component.scss +2 -2
  93. package/lib/snackbar-content/snackbar-content.module.d.ts +2 -6
  94. package/lib/styles/_index.scss +75 -67
  95. package/lib/styles/_mat-selectors.scss +13 -106
  96. package/lib/styles/_theming.scss +3 -5
  97. package/lib/styles/_typography.scss +14 -14
  98. package/lib/styles/material.theme.scss +27 -26
  99. package/lib/templates/empty-content/empty-content.component.scss +0 -2
  100. package/lib/templates/error-content/error-content.component.scss +2 -2
  101. package/lib/testing/core.testing.module.d.ts +1 -0
  102. package/lib/testing/noop-translate.module.d.ts +1 -2
  103. package/lib/translation/provide-i18n.d.ts +39 -0
  104. package/lib/translation/public-api.d.ts +1 -0
  105. package/lib/viewer/components/img-viewer/img-viewer.component.d.ts +2 -1
  106. package/lib/viewer/components/img-viewer/img-viewer.component.scss +2 -2
  107. package/lib/viewer/components/media-player/media-player.component.d.ts +2 -1
  108. package/lib/viewer/components/pdf-viewer/pdf-viewer.component.d.ts +21 -13
  109. package/lib/viewer/components/pdf-viewer/pdf-viewer.component.scss +3 -3
  110. package/lib/viewer/components/txt-viewer/txt-viewer.component.d.ts +3 -2
  111. package/lib/viewer/components/unknown-format/unknown-format.component.d.ts +3 -1
  112. package/lib/viewer/components/viewer-render/viewer-render.component.d.ts +5 -3
  113. package/lib/viewer/components/viewer-render/viewer-render.component.scss +16 -1
  114. package/lib/viewer/components/viewer.component.d.ts +17 -3
  115. package/lib/viewer/components/viewer.component.scss +4 -12
  116. package/package.json +5 -17
  117. package/schematics/migrations/schematics/migrations/7_0_0/index.d.ts +1 -1
  118. package/schematics/migrations/schematics/migrations/7_0_0/index.js +2 -2
  119. package/schematics/migrations/schematics/migrations/7_0_0/index.js.map +1 -1
  120. package/shell/README.md +20 -6
  121. package/shell/index.d.ts +2 -0
  122. package/shell/lib/providers.d.ts +36 -0
  123. package/shell/lib/shell.module.d.ts +4 -7
  124. package/shell/lib/shell.routes.d.ts +13 -1
  125. package/esm2022/adf-core.mjs +0 -5
  126. package/esm2022/api/alfresco-adf-core-api.mjs +0 -5
  127. package/esm2022/api/index.mjs +0 -20
  128. package/esm2022/api/lib/adf-http-client.service.mjs +0 -311
  129. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +0 -33
  130. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +0 -25
  131. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +0 -80
  132. package/esm2022/api/lib/interfaces.mjs +0 -18
  133. package/esm2022/api/lib/types.mjs +0 -18
  134. package/esm2022/auth/alfresco-adf-core-auth.mjs +0 -5
  135. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +0 -56
  136. package/esm2022/auth/authentication.mjs +0 -19
  137. package/esm2022/auth/index.mjs +0 -19
  138. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +0 -5
  139. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +0 -83
  140. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +0 -42
  141. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +0 -44
  142. package/esm2022/breadcrumbs/index.mjs +0 -19
  143. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +0 -5
  144. package/esm2022/feature-flags/index.mjs +0 -29
  145. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +0 -36
  146. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +0 -56
  147. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +0 -130
  148. package/esm2022/feature-flags/lib/directives/features.directive.mjs +0 -63
  149. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +0 -63
  150. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +0 -38
  151. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +0 -38
  152. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +0 -40
  153. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +0 -24
  154. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +0 -62
  155. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +0 -51
  156. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +0 -36
  157. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +0 -84
  158. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +0 -40
  159. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +0 -38
  160. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +0 -62
  161. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +0 -121
  162. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +0 -52
  163. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +0 -52
  164. package/esm2022/lib/about/about-module-list/module-list.component.mjs +0 -52
  165. package/esm2022/lib/about/about-package/package-list.component.mjs +0 -66
  166. package/esm2022/lib/about/about-panel.directive.mjs +0 -37
  167. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +0 -60
  168. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +0 -18
  169. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +0 -43
  170. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +0 -52
  171. package/esm2022/lib/about/about.component.mjs +0 -35
  172. package/esm2022/lib/about/about.module.mjs +0 -75
  173. package/esm2022/lib/about/index.mjs +0 -18
  174. package/esm2022/lib/about/interfaces.mjs +0 -18
  175. package/esm2022/lib/about/public-api.mjs +0 -28
  176. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +0 -51
  177. package/esm2022/lib/app-config/app-config.loader.mjs +0 -41
  178. package/esm2022/lib/app-config/app-config.module.mjs +0 -33
  179. package/esm2022/lib/app-config/app-config.pipe.mjs +0 -38
  180. package/esm2022/lib/app-config/app-config.service.mjs +0 -243
  181. package/esm2022/lib/app-config/debug-app-config.service.mjs +0 -44
  182. package/esm2022/lib/app-config/index.mjs +0 -18
  183. package/esm2022/lib/app-config/public-api.mjs +0 -22
  184. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +0 -67
  185. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +0 -356
  186. package/esm2022/lib/auth/basic-auth/content-auth.mjs +0 -189
  187. package/esm2022/lib/auth/basic-auth/process-auth.mjs +0 -193
  188. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +0 -31
  189. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +0 -31
  190. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +0 -57
  191. package/esm2022/lib/auth/guard/auth-guard.mjs +0 -53
  192. package/esm2022/lib/auth/guard/auth-guard.service.mjs +0 -113
  193. package/esm2022/lib/auth/index.mjs +0 -18
  194. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +0 -18
  195. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +0 -18
  196. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +0 -18
  197. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +0 -18
  198. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +0 -18
  199. package/esm2022/lib/auth/models/application-access.model.mjs +0 -18
  200. package/esm2022/lib/auth/models/identity-group.model.mjs +0 -18
  201. package/esm2022/lib/auth/models/identity-role.model.mjs +0 -30
  202. package/esm2022/lib/auth/models/identity-user.model.mjs +0 -18
  203. package/esm2022/lib/auth/models/oauth-config.model.mjs +0 -18
  204. package/esm2022/lib/auth/models/redirection.model.mjs +0 -28
  205. package/esm2022/lib/auth/models/user-access.model.mjs +0 -18
  206. package/esm2022/lib/auth/oidc/auth-config.mjs +0 -19
  207. package/esm2022/lib/auth/oidc/auth-config.service.mjs +0 -110
  208. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +0 -34
  209. package/esm2022/lib/auth/oidc/auth.module.mjs +0 -112
  210. package/esm2022/lib/auth/oidc/auth.service.mjs +0 -22
  211. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +0 -37
  212. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +0 -202
  213. package/esm2022/lib/auth/oidc/public-api.mjs +0 -24
  214. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +0 -267
  215. package/esm2022/lib/auth/oidc/retry-login.service.mjs +0 -66
  216. package/esm2022/lib/auth/oidc/token.interceptor.mjs +0 -62
  217. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +0 -31
  218. package/esm2022/lib/auth/public-api.mjs +0 -44
  219. package/esm2022/lib/auth/services/authentication.service.mjs +0 -190
  220. package/esm2022/lib/auth/services/base-authentication.service.mjs +0 -99
  221. package/esm2022/lib/auth/services/identity-group.service.mjs +0 -269
  222. package/esm2022/lib/auth/services/identity-role.service.mjs +0 -99
  223. package/esm2022/lib/auth/services/identity-user.service.mjs +0 -443
  224. package/esm2022/lib/auth/services/jwt-helper.service.mjs +0 -205
  225. package/esm2022/lib/auth/services/oauth2.service.mjs +0 -69
  226. package/esm2022/lib/auth/services/time-sync.service.mjs +0 -83
  227. package/esm2022/lib/auth/services/user-access.service.mjs +0 -110
  228. package/esm2022/lib/avatar/avatar.component.mjs +0 -51
  229. package/esm2022/lib/blank-page/blank-page.component.mjs +0 -31
  230. package/esm2022/lib/blank-page/blank-page.module.mjs +0 -33
  231. package/esm2022/lib/blank-page/index.mjs +0 -18
  232. package/esm2022/lib/blank-page/public-api.mjs +0 -19
  233. package/esm2022/lib/button/button.component.mjs +0 -61
  234. package/esm2022/lib/card-view/card-view.module.mjs +0 -80
  235. package/esm2022/lib/card-view/components/base-card-view.mjs +0 -51
  236. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +0 -66
  237. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +0 -56
  238. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +0 -40
  239. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +0 -177
  240. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +0 -108
  241. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +0 -65
  242. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +0 -47
  243. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +0 -138
  244. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +0 -114
  245. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +0 -240
  246. package/esm2022/lib/card-view/components/card-view.components.mjs +0 -28
  247. package/esm2022/lib/card-view/index.mjs +0 -18
  248. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +0 -18
  249. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +0 -18
  250. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +0 -18
  251. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +0 -18
  252. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +0 -18
  253. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +0 -18
  254. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +0 -18
  255. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +0 -18
  256. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +0 -18
  257. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +0 -18
  258. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +0 -18
  259. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +0 -29
  260. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +0 -18
  261. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +0 -18
  262. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +0 -28
  263. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +0 -64
  264. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +0 -36
  265. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +0 -58
  266. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +0 -28
  267. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +0 -33
  268. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +0 -36
  269. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +0 -27
  270. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +0 -36
  271. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +0 -32
  272. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +0 -41
  273. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +0 -40
  274. package/esm2022/lib/card-view/models/card-view.models.mjs +0 -29
  275. package/esm2022/lib/card-view/public-api.mjs +0 -25
  276. package/esm2022/lib/card-view/services/card-item-types.service.mjs +0 -54
  277. package/esm2022/lib/card-view/services/card-view-update.service.mjs +0 -59
  278. package/esm2022/lib/card-view/services/card-view.services.mjs +0 -19
  279. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +0 -31
  280. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +0 -35
  281. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +0 -34
  282. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +0 -35
  283. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +0 -35
  284. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +0 -35
  285. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +0 -32
  286. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +0 -31
  287. package/esm2022/lib/card-view/validators/card-view.validators.mjs +0 -26
  288. package/esm2022/lib/card-view/validators/validators.map.mjs +0 -26
  289. package/esm2022/lib/clipboard/clipboard.directive.mjs +0 -99
  290. package/esm2022/lib/clipboard/clipboard.module.mjs +0 -34
  291. package/esm2022/lib/clipboard/clipboard.service.mjs +0 -103
  292. package/esm2022/lib/clipboard/index.mjs +0 -18
  293. package/esm2022/lib/clipboard/public-api.mjs +0 -21
  294. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +0 -53
  295. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +0 -33
  296. package/esm2022/lib/comments/comment-list/index.mjs +0 -18
  297. package/esm2022/lib/comments/comment-list/public-api.mjs +0 -19
  298. package/esm2022/lib/comments/comments.component.mjs +0 -128
  299. package/esm2022/lib/comments/comments.module.mjs +0 -33
  300. package/esm2022/lib/comments/index.mjs +0 -18
  301. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +0 -18
  302. package/esm2022/lib/comments/interfaces/comments.token.mjs +0 -19
  303. package/esm2022/lib/comments/public-api.mjs +0 -22
  304. package/esm2022/lib/common/index.mjs +0 -35
  305. package/esm2022/lib/common/interface/search-component.interface.mjs +0 -18
  306. package/esm2022/lib/common/mock/app-config.service.mock.mjs +0 -47
  307. package/esm2022/lib/common/models/default-languages.model.mjs +0 -36
  308. package/esm2022/lib/common/models/log-levels.model.mjs +0 -33
  309. package/esm2022/lib/common/models/user-info-mode.enum.mjs +0 -25
  310. package/esm2022/lib/common/services/cookie.service.mjs +0 -82
  311. package/esm2022/lib/common/services/download.service.mjs +0 -102
  312. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +0 -89
  313. package/esm2022/lib/common/services/highlight-transform.service.mjs +0 -61
  314. package/esm2022/lib/common/services/language-item.interface.mjs +0 -18
  315. package/esm2022/lib/common/services/log.service.mjs +0 -171
  316. package/esm2022/lib/common/services/page-title.service.mjs +0 -63
  317. package/esm2022/lib/common/services/sort-by-category.service.mjs +0 -81
  318. package/esm2022/lib/common/services/storage.service.mjs +0 -117
  319. package/esm2022/lib/common/services/thumbnail.service.mjs +0 -194
  320. package/esm2022/lib/common/services/url.service.mjs +0 -45
  321. package/esm2022/lib/common/services/user-preferences.service.mjs +0 -238
  322. package/esm2022/lib/common/utils/date-fns-adapter.mjs +0 -115
  323. package/esm2022/lib/common/utils/date-fns-utils.mjs +0 -222
  324. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +0 -134
  325. package/esm2022/lib/common/utils/file-utils.mjs +0 -65
  326. package/esm2022/lib/common/utils/index.mjs +0 -18
  327. package/esm2022/lib/common/utils/moment-date-adapter.mjs +0 -202
  328. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +0 -32
  329. package/esm2022/lib/common/utils/object-utils.mjs +0 -107
  330. package/esm2022/lib/common/utils/public-api.mjs +0 -25
  331. package/esm2022/lib/common/utils/string-utils.mjs +0 -45
  332. package/esm2022/lib/context-menu/animations.mjs +0 -33
  333. package/esm2022/lib/context-menu/context-menu-list.component.mjs +0 -92
  334. package/esm2022/lib/context-menu/context-menu-overlay.mjs +0 -25
  335. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +0 -109
  336. package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -63
  337. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -35
  338. package/esm2022/lib/context-menu/context-menu.tokens.mjs +0 -19
  339. package/esm2022/lib/context-menu/index.mjs +0 -18
  340. package/esm2022/lib/context-menu/interfaces.mjs +0 -18
  341. package/esm2022/lib/context-menu/public-api.mjs +0 -21
  342. package/esm2022/lib/core.module.mjs +0 -314
  343. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +0 -45
  344. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +0 -65
  345. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +0 -55
  346. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +0 -114
  347. package/esm2022/lib/datatable/components/data-cell.event.mjs +0 -31
  348. package/esm2022/lib/datatable/components/data-row-action.event.mjs +0 -34
  349. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +0 -915
  350. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +0 -126
  351. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +0 -98
  352. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +0 -78
  353. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +0 -60
  354. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +0 -49
  355. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +0 -67
  356. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +0 -86
  357. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +0 -69
  358. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +0 -153
  359. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +0 -42
  360. package/esm2022/lib/datatable/data/data-column.model.mjs +0 -18
  361. package/esm2022/lib/datatable/data/data-row-event.model.mjs +0 -26
  362. package/esm2022/lib/datatable/data/data-row-update.model.mjs +0 -18
  363. package/esm2022/lib/datatable/data/data-row.model.mjs +0 -18
  364. package/esm2022/lib/datatable/data/data-sorting.model.mjs +0 -24
  365. package/esm2022/lib/datatable/data/data-table.schema.mjs +0 -132
  366. package/esm2022/lib/datatable/data/datatable-adapter.mjs +0 -18
  367. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +0 -46
  368. package/esm2022/lib/datatable/data/object-datarow.model.mjs +0 -38
  369. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +0 -134
  370. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +0 -45
  371. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +0 -36
  372. package/esm2022/lib/datatable/data-column/data-column.component.mjs +0 -114
  373. package/esm2022/lib/datatable/data-column/index.mjs +0 -18
  374. package/esm2022/lib/datatable/data-column/public-api.mjs +0 -20
  375. package/esm2022/lib/datatable/datatable.module.mjs +0 -161
  376. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +0 -35
  377. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +0 -30
  378. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +0 -35
  379. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +0 -89
  380. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +0 -43
  381. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +0 -46
  382. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +0 -43
  383. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +0 -46
  384. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +0 -46
  385. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +0 -173
  386. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +0 -72
  387. package/esm2022/lib/datatable/directives/resizable/types.mjs +0 -18
  388. package/esm2022/lib/datatable/index.mjs +0 -18
  389. package/esm2022/lib/datatable/public-api.mjs +0 -55
  390. package/esm2022/lib/datatable/services/datatable.service.mjs +0 -33
  391. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +0 -50
  392. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +0 -38
  393. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +0 -18
  394. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +0 -71
  395. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +0 -22
  396. package/esm2022/lib/dialogs/dialog/index.mjs +0 -20
  397. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +0 -51
  398. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +0 -38
  399. package/esm2022/lib/dialogs/index.mjs +0 -18
  400. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  401. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +0 -74
  402. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +0 -18
  403. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +0 -33
  404. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +0 -64
  405. package/esm2022/lib/directives/directive.module.mjs +0 -56
  406. package/esm2022/lib/directives/highlight.directive.mjs +0 -67
  407. package/esm2022/lib/directives/index.mjs +0 -18
  408. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +0 -67
  409. package/esm2022/lib/directives/logout.directive.mjs +0 -72
  410. package/esm2022/lib/directives/public-api.mjs +0 -24
  411. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +0 -60
  412. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +0 -104
  413. package/esm2022/lib/directives/upload.directive.mjs +0 -241
  414. package/esm2022/lib/dynamic-chip-list/chip.mjs +0 -18
  415. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +0 -205
  416. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +0 -33
  417. package/esm2022/lib/dynamic-chip-list/index.mjs +0 -18
  418. package/esm2022/lib/dynamic-chip-list/public-api.mjs +0 -20
  419. package/esm2022/lib/events/base-ui.event.mjs +0 -21
  420. package/esm2022/lib/events/base.event.mjs +0 -29
  421. package/esm2022/lib/events/index.mjs +0 -18
  422. package/esm2022/lib/events/public-api.mjs +0 -19
  423. package/esm2022/lib/form/components/form-base.component.mjs +0 -229
  424. package/esm2022/lib/form/components/form-custom-button.directive.mjs +0 -30
  425. package/esm2022/lib/form/components/form-field/form-field.component.mjs +0 -142
  426. package/esm2022/lib/form/components/form-renderer.component.mjs +0 -171
  427. package/esm2022/lib/form/components/form-section/form-section.component.mjs +0 -46
  428. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +0 -37
  429. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +0 -48
  430. package/esm2022/lib/form/components/middlewares/middleware.mjs +0 -19
  431. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +0 -78
  432. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +0 -60
  433. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +0 -53
  434. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +0 -28
  435. package/esm2022/lib/form/components/widgets/core/container.model.mjs +0 -50
  436. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +0 -52
  437. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +0 -18
  438. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +0 -38
  439. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +0 -18
  440. package/esm2022/lib/form/components/widgets/core/external-content.mjs +0 -18
  441. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +0 -18
  442. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +0 -18
  443. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +0 -18
  444. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +0 -18
  445. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +0 -18
  446. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +0 -18
  447. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +0 -74
  448. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +0 -23
  449. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +0 -268
  450. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +0 -18
  451. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +0 -490
  452. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +0 -32
  453. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +0 -38
  454. package/esm2022/lib/form/components/widgets/core/form-values.mjs +0 -18
  455. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +0 -18
  456. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +0 -33
  457. package/esm2022/lib/form/components/widgets/core/form.model.mjs +0 -384
  458. package/esm2022/lib/form/components/widgets/core/group.model.mjs +0 -18
  459. package/esm2022/lib/form/components/widgets/core/index.mjs +0 -49
  460. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +0 -115
  461. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +0 -18
  462. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +0 -18
  463. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +0 -34
  464. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +0 -18
  465. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +0 -27
  466. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +0 -18
  467. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +0 -163
  468. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +0 -153
  469. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +0 -54
  470. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +0 -86
  471. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +0 -47
  472. package/esm2022/lib/form/components/widgets/display-text/index.mjs +0 -19
  473. package/esm2022/lib/form/components/widgets/error/error.component.mjs +0 -93
  474. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +0 -86
  475. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +0 -43
  476. package/esm2022/lib/form/components/widgets/header/index.mjs +0 -19
  477. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +0 -71
  478. package/esm2022/lib/form/components/widgets/index.mjs +0 -71
  479. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +0 -67
  480. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +0 -56
  481. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +0 -66
  482. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +0 -18
  483. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +0 -215
  484. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +0 -66
  485. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +0 -63
  486. package/esm2022/lib/form/components/widgets/widget.component.mjs +0 -110
  487. package/esm2022/lib/form/events/form-error.event.mjs +0 -24
  488. package/esm2022/lib/form/events/form-field.event.mjs +0 -24
  489. package/esm2022/lib/form/events/form-rules.event.mjs +0 -25
  490. package/esm2022/lib/form/events/form-spinner.event.mjs +0 -23
  491. package/esm2022/lib/form/events/form.event.mjs +0 -29
  492. package/esm2022/lib/form/events/index.mjs +0 -24
  493. package/esm2022/lib/form/events/validate-form-field.event.mjs +0 -24
  494. package/esm2022/lib/form/events/validate-form.event.mjs +0 -25
  495. package/esm2022/lib/form/form-base.module.mjs +0 -90
  496. package/esm2022/lib/form/index.mjs +0 -18
  497. package/esm2022/lib/form/models/form-rules.model.mjs +0 -77
  498. package/esm2022/lib/form/models/task-process-variable.model.mjs +0 -19
  499. package/esm2022/lib/form/models/widget-visibility.model.mjs +0 -104
  500. package/esm2022/lib/form/pipes/field-style.pipe.mjs +0 -45
  501. package/esm2022/lib/form/pipes/index.mjs +0 -18
  502. package/esm2022/lib/form/public-api.mjs +0 -34
  503. package/esm2022/lib/form/services/form-rendering.service.mjs +0 -53
  504. package/esm2022/lib/form/services/form-validation-service.interface.mjs +0 -18
  505. package/esm2022/lib/form/services/form.service.mjs +0 -86
  506. package/esm2022/lib/form/services/widget-visibility.service.mjs +0 -294
  507. package/esm2022/lib/header/header.component.mjs +0 -73
  508. package/esm2022/lib/header/index.mjs +0 -18
  509. package/esm2022/lib/header/navbar/navbar-item.component.mjs +0 -37
  510. package/esm2022/lib/header/navbar/navbar.component.mjs +0 -36
  511. package/esm2022/lib/header/public-api.mjs +0 -20
  512. package/esm2022/lib/icon/icon.component.mjs +0 -51
  513. package/esm2022/lib/icon/icon.module.mjs +0 -36
  514. package/esm2022/lib/icon/index.mjs +0 -18
  515. package/esm2022/lib/icon/public-api.mjs +0 -19
  516. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +0 -87
  517. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +0 -33
  518. package/esm2022/lib/identity-user-info/index.mjs +0 -18
  519. package/esm2022/lib/identity-user-info/public-api.mjs +0 -19
  520. package/esm2022/lib/info-drawer/index.mjs +0 -18
  521. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +0 -71
  522. package/esm2022/lib/info-drawer/info-drawer.component.mjs +0 -114
  523. package/esm2022/lib/info-drawer/info-drawer.module.mjs +0 -53
  524. package/esm2022/lib/info-drawer/public-api.mjs +0 -20
  525. package/esm2022/lib/interface/index.mjs +0 -18
  526. package/esm2022/lib/interface/injection.tokens.mjs +0 -19
  527. package/esm2022/lib/interface/public-api.mjs +0 -18
  528. package/esm2022/lib/language-menu/index.mjs +0 -18
  529. package/esm2022/lib/language-menu/language-menu.component.mjs +0 -61
  530. package/esm2022/lib/language-menu/language-menu.module.mjs +0 -35
  531. package/esm2022/lib/language-menu/language-picker.component.mjs +0 -78
  532. package/esm2022/lib/language-menu/public-api.mjs +0 -21
  533. package/esm2022/lib/language-menu/service/language.service.interface.mjs +0 -18
  534. package/esm2022/lib/language-menu/service/language.service.mjs +0 -33
  535. package/esm2022/lib/layout/components/header/header.component.mjs +0 -100
  536. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +0 -180
  537. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +0 -82
  538. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +0 -145
  539. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +0 -33
  540. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +0 -33
  541. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +0 -33
  542. package/esm2022/lib/layout/index.mjs +0 -18
  543. package/esm2022/lib/layout/layout.module.mjs +0 -72
  544. package/esm2022/lib/layout/public-api.mjs +0 -25
  545. package/esm2022/lib/login/components/login/login.component.mjs +0 -368
  546. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +0 -18
  547. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +0 -58
  548. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +0 -48
  549. package/esm2022/lib/login/directives/login-footer.directive.mjs +0 -41
  550. package/esm2022/lib/login/directives/login-header.directive.mjs +0 -41
  551. package/esm2022/lib/login/index.mjs +0 -18
  552. package/esm2022/lib/login/login.module.mjs +0 -54
  553. package/esm2022/lib/login/models/login-error.event.mjs +0 -22
  554. package/esm2022/lib/login/models/login-submit.event.mjs +0 -32
  555. package/esm2022/lib/login/models/login-success.event.mjs +0 -24
  556. package/esm2022/lib/login/public-api.mjs +0 -27
  557. package/esm2022/lib/material.module.mjs +0 -254
  558. package/esm2022/lib/mock/cookie.service.mock.mjs +0 -43
  559. package/esm2022/lib/mock/data-column.mock.mjs +0 -73
  560. package/esm2022/lib/mock/event.mock.mjs +0 -39
  561. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +0 -225
  562. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +0 -347
  563. package/esm2022/lib/mock/form/form-definition.mock.mjs +0 -403
  564. package/esm2022/lib/mock/form/form.component.mock.mjs +0 -275
  565. package/esm2022/lib/mock/form/form.service.mock.mjs +0 -248
  566. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +0 -1835
  567. package/esm2022/lib/mock/index.mjs +0 -18
  568. package/esm2022/lib/mock/public-api.mjs +0 -27
  569. package/esm2022/lib/mock/translation.service.mock.mjs +0 -44
  570. package/esm2022/lib/models/comment.model.mjs +0 -51
  571. package/esm2022/lib/models/component.model.mjs +0 -24
  572. package/esm2022/lib/models/decimal-number.model.mjs +0 -26
  573. package/esm2022/lib/models/general-user.model.mjs +0 -24
  574. package/esm2022/lib/models/index.mjs +0 -18
  575. package/esm2022/lib/models/pagination.model.mjs +0 -29
  576. package/esm2022/lib/models/path.model.mjs +0 -24
  577. package/esm2022/lib/models/product-version.model.mjs +0 -28
  578. package/esm2022/lib/models/public-api.mjs +0 -24
  579. package/esm2022/lib/models/request-pagination.model.mjs +0 -25
  580. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +0 -44
  581. package/esm2022/lib/notifications/components/notification-history.component.mjs +0 -139
  582. package/esm2022/lib/notifications/helpers/notification.factory.mjs +0 -43
  583. package/esm2022/lib/notifications/index.mjs +0 -18
  584. package/esm2022/lib/notifications/models/notification.model.mjs +0 -25
  585. package/esm2022/lib/notifications/notification-history.module.mjs +0 -35
  586. package/esm2022/lib/notifications/public-api.mjs +0 -23
  587. package/esm2022/lib/notifications/services/notification.service.mjs +0 -166
  588. package/esm2022/lib/pagination/index.mjs +0 -18
  589. package/esm2022/lib/pagination/infinite-pagination.component.mjs +0 -112
  590. package/esm2022/lib/pagination/paginated-component.interface.mjs +0 -18
  591. package/esm2022/lib/pagination/pagination-component.interface.mjs +0 -18
  592. package/esm2022/lib/pagination/pagination.component.mjs +0 -263
  593. package/esm2022/lib/pagination/pagination.module.mjs +0 -35
  594. package/esm2022/lib/pagination/public-api.mjs +0 -22
  595. package/esm2022/lib/pipes/date-time.pipe.mjs +0 -46
  596. package/esm2022/lib/pipes/decimal-number.pipe.mjs +0 -78
  597. package/esm2022/lib/pipes/file-size.pipe.mjs +0 -54
  598. package/esm2022/lib/pipes/file-type.pipe.mjs +0 -40
  599. package/esm2022/lib/pipes/format-space.pipe.mjs +0 -39
  600. package/esm2022/lib/pipes/full-name.pipe.mjs +0 -43
  601. package/esm2022/lib/pipes/index.mjs +0 -18
  602. package/esm2022/lib/pipes/localized-date.pipe.mjs +0 -70
  603. package/esm2022/lib/pipes/multi-value.pipe.mjs +0 -37
  604. package/esm2022/lib/pipes/pipe.module.mjs +0 -83
  605. package/esm2022/lib/pipes/public-api.mjs +0 -30
  606. package/esm2022/lib/pipes/text-highlight.pipe.mjs +0 -39
  607. package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -65
  608. package/esm2022/lib/pipes/truncate.pipe.mjs +0 -33
  609. package/esm2022/lib/pipes/user-initial.pipe.mjs +0 -52
  610. package/esm2022/lib/pipes/user-like.interface.mjs +0 -18
  611. package/esm2022/lib/progress/progress.component.mjs +0 -90
  612. package/esm2022/lib/search-text/animations.mjs +0 -32
  613. package/esm2022/lib/search-text/index.mjs +0 -18
  614. package/esm2022/lib/search-text/models/search-text-input.model.mjs +0 -23
  615. package/esm2022/lib/search-text/public-api.mjs +0 -22
  616. package/esm2022/lib/search-text/search-text-input.component.mjs +0 -294
  617. package/esm2022/lib/search-text/search-text-input.module.mjs +0 -35
  618. package/esm2022/lib/search-text/search-trigger.directive.mjs +0 -181
  619. package/esm2022/lib/snackbar-content/index.mjs +0 -18
  620. package/esm2022/lib/snackbar-content/public-api.mjs +0 -20
  621. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +0 -18
  622. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +0 -48
  623. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +0 -38
  624. package/esm2022/lib/sorting-picker/index.mjs +0 -18
  625. package/esm2022/lib/sorting-picker/public-api.mjs +0 -18
  626. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +0 -68
  627. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +0 -44
  628. package/esm2022/lib/templates/error-content/error-content.component.mjs +0 -62
  629. package/esm2022/lib/templates/index.mjs +0 -18
  630. package/esm2022/lib/templates/public-api.mjs +0 -20
  631. package/esm2022/lib/templates/template.module.mjs +0 -38
  632. package/esm2022/lib/testing/core.story.module.mjs +0 -39
  633. package/esm2022/lib/testing/core.testing.module.mjs +0 -35
  634. package/esm2022/lib/testing/index.mjs +0 -22
  635. package/esm2022/lib/testing/noop-auth.module.mjs +0 -80
  636. package/esm2022/lib/testing/noop-translate.module.mjs +0 -61
  637. package/esm2022/lib/testing/unit-testing-utils.mjs +0 -364
  638. package/esm2022/lib/toolbar/index.mjs +0 -18
  639. package/esm2022/lib/toolbar/public-api.mjs +0 -21
  640. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +0 -27
  641. package/esm2022/lib/toolbar/toolbar-title.component.mjs +0 -32
  642. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -40
  643. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -36
  644. package/esm2022/lib/translation/index.mjs +0 -18
  645. package/esm2022/lib/translation/public-api.mjs +0 -19
  646. package/esm2022/lib/translation/translate-loader.service.mjs +0 -148
  647. package/esm2022/lib/translation/translation.service.mjs +0 -148
  648. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +0 -37
  649. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +0 -218
  650. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +0 -61
  651. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +0 -509
  652. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +0 -61
  653. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +0 -49
  654. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +0 -198
  655. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +0 -77
  656. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +0 -31
  657. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +0 -34
  658. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +0 -34
  659. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +0 -205
  660. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +0 -46
  661. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +0 -34
  662. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +0 -34
  663. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +0 -34
  664. package/esm2022/lib/viewer/components/viewer.component.mjs +0 -441
  665. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +0 -67
  666. package/esm2022/lib/viewer/index.mjs +0 -18
  667. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +0 -23
  668. package/esm2022/lib/viewer/models/viewer.model.mjs +0 -22
  669. package/esm2022/lib/viewer/public-api.mjs +0 -40
  670. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +0 -179
  671. package/esm2022/lib/viewer/services/view-util.service.mjs +0 -149
  672. package/esm2022/lib/viewer/viewer.module.mjs +0 -112
  673. package/esm2022/public-api.mjs +0 -60
  674. package/esm2022/shell/alfresco-adf-core-shell.mjs +0 -5
  675. package/esm2022/shell/index.mjs +0 -20
  676. package/esm2022/shell/lib/components/shell/shell.component.mjs +0 -122
  677. package/esm2022/shell/lib/services/shell-app.service.mjs +0 -22
  678. package/esm2022/shell/lib/shell.module.mjs +0 -79
  679. package/esm2022/shell/lib/shell.routes.mjs +0 -25
  680. package/lib/prebuilt-themes/adf-blue-orange.css +0 -1
  681. package/lib/prebuilt-themes/adf-blue-purple.css +0 -1
  682. package/lib/prebuilt-themes/adf-cyan-orange.css +0 -1
  683. package/lib/prebuilt-themes/adf-cyan-purple.css +0 -1
  684. package/lib/prebuilt-themes/adf-green-orange.css +0 -1
  685. package/lib/prebuilt-themes/adf-green-purple.css +0 -1
  686. package/lib/prebuilt-themes/adf-indigo-pink.css +0 -1
  687. package/lib/prebuilt-themes/adf-pink-bluegrey.css +0 -1
  688. package/lib/prebuilt-themes/adf-purple-green.css +0 -1
  689. package/lib/styles/_colors.scss +0 -240
  690. package/lib/styles/_components-variables.scss +0 -105
  691. package/lib/styles/_reference-variables.scss +0 -33
  692. package/lib/styles/prebuilt/_all-theme.scss +0 -1
  693. package/lib/styles/prebuilt/adf-blue-orange.scss +0 -21
  694. package/lib/styles/prebuilt/adf-blue-purple.scss +0 -21
  695. package/lib/styles/prebuilt/adf-cyan-orange.scss +0 -21
  696. package/lib/styles/prebuilt/adf-cyan-purple.scss +0 -21
  697. package/lib/styles/prebuilt/adf-green-orange.scss +0 -21
  698. package/lib/styles/prebuilt/adf-green-purple.scss +0 -21
  699. package/lib/styles/prebuilt/adf-indigo-pink.scss +0 -22
  700. package/lib/styles/prebuilt/adf-pink-bluegrey.scss +0 -22
  701. package/lib/styles/prebuilt/adf-purple-green.scss +0 -22
  702. package/lib/styles/snackbar.theme.scss +0 -13
@@ -1,441 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { A11yModule } from '@angular/cdk/a11y';
18
- import { NgIf, NgTemplateOutlet } from '@angular/common';
19
- import { Component, ContentChild, DestroyRef, ElementRef, EventEmitter, HostListener, inject, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
20
- import { MatButtonModule } from '@angular/material/button';
21
- import { MatDialog } from '@angular/material/dialog';
22
- import { MatIconModule } from '@angular/material/icon';
23
- import { MatMenuModule } from '@angular/material/menu';
24
- import { TranslateModule } from '@ngx-translate/core';
25
- import { fromEvent } from 'rxjs';
26
- import { filter, first, skipWhile } from 'rxjs/operators';
27
- import { AppConfigService } from '../../app-config';
28
- import { ToolbarComponent, ToolbarDividerComponent, ToolbarTitleComponent } from '../../toolbar';
29
- import { DownloadPromptActions } from '../models/download-prompt.actions';
30
- import { CloseButtonPosition } from '../models/viewer.model';
31
- import { ViewUtilService } from '../services/view-util.service';
32
- import { DownloadPromptDialogComponent } from './download-prompt-dialog/download-prompt-dialog.component';
33
- import { ViewerMoreActionsComponent } from './viewer-more-actions.component';
34
- import { ViewerOpenWithComponent } from './viewer-open-with.component';
35
- import { ViewerRenderComponent } from './viewer-render/viewer-render.component';
36
- import { ViewerSidebarComponent } from './viewer-sidebar.component';
37
- import { ViewerToolbarComponent } from './viewer-toolbar.component';
38
- import { ViewerToolbarActionsComponent } from './viewer-toolbar-actions.component';
39
- import { ViewerToolbarCustomActionsComponent } from './viewer-toolbar-custom-actions.component';
40
- import { IconComponent } from '../../icon';
41
- import { ThumbnailService } from '../../common';
42
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
43
- import * as i0 from "@angular/core";
44
- import * as i1 from "@angular/material/dialog";
45
- import * as i2 from "../services/view-util.service";
46
- import * as i3 from "../../app-config";
47
- import * as i4 from "@angular/cdk/a11y";
48
- import * as i5 from "@angular/material/button";
49
- import * as i6 from "@ngx-translate/core";
50
- import * as i7 from "@angular/material/icon";
51
- import * as i8 from "@angular/material/menu";
52
- const DEFAULT_NON_PREVIEW_CONFIG = {
53
- enableDownloadPrompt: false,
54
- enableDownloadPromptReminder: false,
55
- downloadPromptDelay: 50,
56
- downloadPromptReminderDelay: 30
57
- };
58
- export class ViewerComponent {
59
- get CloseButtonPosition() {
60
- return CloseButtonPosition;
61
- }
62
- constructor(el, dialog, viewUtilsService, appConfigService) {
63
- this.el = el;
64
- this.dialog = dialog;
65
- this.viewUtilsService = viewUtilsService;
66
- this.appConfigService = appConfigService;
67
- this.thumbnailService = inject(ThumbnailService);
68
- /**
69
- * If you want to load an external file that does not come from ACS you
70
- * can use this URL to specify where to load the file from.
71
- */
72
- this.urlFile = '';
73
- /** Hide or show the viewer */
74
- this.showViewer = true;
75
- /** Allows `back` navigation */
76
- this.allowGoBack = true;
77
- /** Toggles the 'Full Screen' feature. */
78
- this.allowFullScreen = true;
79
- /** Hide or show the toolbar */
80
- this.showToolbar = true;
81
- /**
82
- * If `true` then show the Viewer as a full page over the current content.
83
- * Otherwise, fit inside the parent div.
84
- */
85
- this.overlayMode = false;
86
- /**
87
- * Toggles before/next navigation. You can use the arrow buttons to navigate
88
- * between documents in the collection.
89
- */
90
- this.allowNavigate = false;
91
- /** Toggles the "before" ("<") button. Requires `allowNavigate` to be enabled. */
92
- this.canNavigateBefore = true;
93
- /** Toggles the next (">") button. Requires `allowNavigate` to be enabled. */
94
- this.canNavigateNext = true;
95
- /** Allow the left the sidebar. */
96
- this.allowLeftSidebar = false;
97
- /** Allow the right sidebar. */
98
- this.allowRightSidebar = false;
99
- /** Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. */
100
- this.showRightSidebar = false;
101
- /** Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. */
102
- this.showLeftSidebar = false;
103
- /** The template for the right sidebar. The template context contains the loaded node data. */
104
- this.sidebarRightTemplate = null;
105
- /** The template for the left sidebar. The template context contains the loaded node data. */
106
- this.sidebarLeftTemplate = null;
107
- /** Enable when where is possible the editing functionalities */
108
- this.readOnly = true;
109
- /**
110
- * Controls which actions are enabled in the viewer.
111
- * Example:
112
- * { rotate: true, crop: false } will enable rotation but disable cropping.
113
- */
114
- this.allowedEditActions = {
115
- rotate: true,
116
- crop: true
117
- };
118
- /** media subtitles for the media player*/
119
- this.tracks = [];
120
- /**
121
- * Context object available for binding by the local sidebarRightTemplate with let declarations.
122
- */
123
- this.sidebarRightTemplateContext = null;
124
- /**
125
- * Context object available for binding by the local sidebarLeftTemplate with let declarations.
126
- */
127
- this.sidebarLeftTemplateContext = null;
128
- /**
129
- * Change the close button position Right/Left.
130
- */
131
- this.closeButtonPosition = CloseButtonPosition.Left;
132
- /** Toggles the 'Info Button' */
133
- this.hideInfoButton = false;
134
- /** Identifier of a node that is opened by the viewer. */
135
- this.nodeId = null;
136
- /** Original node mime type, should be provided when renditiona mime type is different. */
137
- this.nodeMimeType = undefined;
138
- /**
139
- * Enable dialog box to allow user to download the previewed file, in case the preview is not responding for a set period of time.
140
- */
141
- this.enableDownloadPrompt = false;
142
- /**
143
- * Enable reminder dialogs to prompt user to download the file, in case the preview is not responding for a set period of time.
144
- */
145
- this.enableDownloadPromptReminder = false;
146
- /**
147
- * Initial time in seconds to wait before giving the first prompt to user to download the file
148
- */
149
- this.downloadPromptDelay = 50;
150
- /**
151
- * Time in seconds to wait before giving the second and consequent reminders to the user to download the file.
152
- */
153
- this.downloadPromptReminderDelay = 15;
154
- /**
155
- * Emitted when user clicks on download button on download prompt dialog.
156
- */
157
- this.downloadFile = new EventEmitter();
158
- /** Emitted when user clicks 'Navigate Before' ("<") button. */
159
- this.navigateBefore = new EventEmitter();
160
- /** Emitted when user clicks 'Navigate Next' (">") button. */
161
- this.navigateNext = new EventEmitter();
162
- /** Emitted when the viewer close */
163
- this.showViewerChange = new EventEmitter();
164
- /** Emitted when the img is submitted in the img viewer. */
165
- this.submitFile = new EventEmitter();
166
- this.closeViewer = true;
167
- this.keyDown$ = fromEvent(document, 'keydown');
168
- this.isDialogVisible = false;
169
- this.destroyRef = inject(DestroyRef);
170
- }
171
- ngOnChanges(changes) {
172
- const { blobFile, urlFile, mimeType, nodeMimeType } = changes;
173
- if (blobFile?.currentValue) {
174
- this.mimeType = blobFile.currentValue.type;
175
- this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(blobFile.currentValue.type);
176
- }
177
- if (urlFile?.currentValue) {
178
- this.fileName ||= this.viewUtilsService.getFilenameFromUrl(urlFile.currentValue);
179
- }
180
- if (mimeType?.currentValue && !nodeMimeType?.currentValue) {
181
- this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(mimeType.currentValue);
182
- }
183
- if (nodeMimeType?.currentValue) {
184
- this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(nodeMimeType.currentValue);
185
- }
186
- }
187
- ngOnInit() {
188
- this.closeOverlayManager();
189
- this.configureAndInitDownloadPrompt();
190
- }
191
- closeOverlayManager() {
192
- this.dialog.afterOpened
193
- .pipe(skipWhile(() => !this.overlayMode), takeUntilDestroyed(this.destroyRef))
194
- .subscribe(() => (this.closeViewer = false));
195
- this.dialog.afterAllClosed
196
- .pipe(skipWhile(() => !this.overlayMode), takeUntilDestroyed(this.destroyRef))
197
- .subscribe(() => (this.closeViewer = true));
198
- this.keyDown$
199
- .pipe(skipWhile(() => !this.overlayMode), filter((e) => e.keyCode === 27), takeUntilDestroyed(this.destroyRef))
200
- .subscribe((event) => {
201
- event.preventDefault();
202
- if (this.closeViewer) {
203
- this.onClose();
204
- }
205
- });
206
- }
207
- onNavigateBeforeClick(event) {
208
- this.navigateBefore.next(event);
209
- }
210
- onNavigateNextClick(event) {
211
- this.navigateNext.next(event);
212
- }
213
- /**
214
- * close the viewer
215
- */
216
- onClose() {
217
- this.showViewer = false;
218
- this.showViewerChange.emit(this.showViewer);
219
- }
220
- toggleRightSidebar() {
221
- this.showRightSidebar = !this.showRightSidebar;
222
- }
223
- toggleLeftSidebar() {
224
- this.showLeftSidebar = !this.showLeftSidebar;
225
- }
226
- handleKeyboardEvent(event) {
227
- if (event?.defaultPrevented) {
228
- return;
229
- }
230
- const key = event.keyCode;
231
- // Left arrow
232
- if (key === 37 && this.canNavigateBefore) {
233
- event.preventDefault();
234
- this.onNavigateBeforeClick(event);
235
- }
236
- // Right arrow
237
- if (key === 39 && this.canNavigateNext) {
238
- event.preventDefault();
239
- this.onNavigateNextClick(event);
240
- }
241
- // Ctrl+F
242
- if (key === 70 && event.ctrlKey) {
243
- event.preventDefault();
244
- this.enterFullScreen();
245
- }
246
- }
247
- /**
248
- * Triggers full screen mode with a main content area displayed.
249
- */
250
- enterFullScreen() {
251
- if (this.allowFullScreen) {
252
- const container = this.el.nativeElement.querySelector('.adf-viewer__fullscreen-container');
253
- if (container) {
254
- if (container.requestFullscreen) {
255
- container.requestFullscreen();
256
- }
257
- else if (container.webkitRequestFullscreen) {
258
- container.webkitRequestFullscreen();
259
- }
260
- else if (container.mozRequestFullScreen) {
261
- container.mozRequestFullScreen();
262
- }
263
- else if (container.msRequestFullscreen) {
264
- container.msRequestFullscreen();
265
- }
266
- }
267
- }
268
- }
269
- onSubmitFile(newImageBlob) {
270
- this.submitFile.emit(newImageBlob);
271
- }
272
- ngOnDestroy() {
273
- this.clearDownloadPromptTimeouts();
274
- }
275
- configureAndInitDownloadPrompt() {
276
- this.configureDownloadPromptProperties();
277
- if (this.enableDownloadPrompt) {
278
- this.initDownloadPrompt();
279
- }
280
- }
281
- configureDownloadPromptProperties() {
282
- const nonResponsivePreviewConfig = this.appConfigService.get('viewer', DEFAULT_NON_PREVIEW_CONFIG);
283
- this.enableDownloadPrompt = nonResponsivePreviewConfig.enableDownloadPrompt;
284
- this.enableDownloadPromptReminder = nonResponsivePreviewConfig.enableDownloadPromptReminder;
285
- this.downloadPromptDelay = nonResponsivePreviewConfig.downloadPromptDelay;
286
- this.downloadPromptReminderDelay = nonResponsivePreviewConfig.downloadPromptReminderDelay;
287
- }
288
- initDownloadPrompt() {
289
- this.downloadPromptTimer = window.setTimeout(() => {
290
- this.showOrClearDownloadPrompt();
291
- }, this.downloadPromptDelay * 1000);
292
- }
293
- showOrClearDownloadPrompt() {
294
- if (!this.urlFile && !this.blobFile) {
295
- this.showDownloadPrompt();
296
- }
297
- else {
298
- this.clearDownloadPromptTimeouts();
299
- }
300
- }
301
- clearDownloadPromptTimeouts() {
302
- if (this.downloadPromptTimer) {
303
- clearTimeout(this.downloadPromptTimer);
304
- }
305
- if (this.downloadPromptReminderTimer) {
306
- clearTimeout(this.downloadPromptReminderTimer);
307
- }
308
- }
309
- showDownloadPrompt() {
310
- if (!this.isDialogVisible) {
311
- this.isDialogVisible = true;
312
- this.dialog
313
- .open(DownloadPromptDialogComponent, { disableClose: true })
314
- .afterClosed()
315
- .pipe(first())
316
- .subscribe((result) => {
317
- this.isDialogVisible = false;
318
- if (result === DownloadPromptActions.DOWNLOAD) {
319
- this.downloadFile.emit();
320
- this.onClose();
321
- }
322
- else if (result === DownloadPromptActions.WAIT) {
323
- if (this.enableDownloadPromptReminder) {
324
- this.clearDownloadPromptTimeouts();
325
- this.downloadPromptReminderTimer = window.setTimeout(() => {
326
- this.showOrClearDownloadPrompt();
327
- }, this.downloadPromptReminderDelay * 1000);
328
- }
329
- }
330
- });
331
- }
332
- }
333
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialog }, { token: i2.ViewUtilService }, { token: i3.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
334
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ViewerComponent, isStandalone: true, selector: "adf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", fileName: "fileName", showViewer: "showViewer", allowGoBack: "allowGoBack", allowFullScreen: "allowFullScreen", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", mimeType: "mimeType", sidebarRightTemplateContext: "sidebarRightTemplateContext", sidebarLeftTemplateContext: "sidebarLeftTemplateContext", closeButtonPosition: "closeButtonPosition", hideInfoButton: "hideInfoButton", viewerExtensions: "viewerExtensions", nodeId: "nodeId", nodeMimeType: "nodeMimeType" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, classAttribute: "adf-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "mnuOpenWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "mnuMoreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "viewerTemplateExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n <span class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\">{{ fileName }}</span>\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n <adf-toolbar-divider />\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n <adf-toolbar-divider />\n\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ViewerRenderComponent, selector: "adf-viewer-render", inputs: ["urlFile", "blobFile", "allowFullScreen", "allowThumbnails", "thumbnailsTemplate", "mimeType", "fileName", "isLoading", "readOnly", "allowedEditActions", "tracks", "nodeId", "viewerTemplateExtensions"], outputs: ["extensionChange", "submitFile", "close", "isSaving"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
335
- }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ViewerComponent, decorators: [{
337
- type: Component,
338
- args: [{ selector: 'adf-viewer', standalone: true, host: { class: 'adf-viewer' }, encapsulation: ViewEncapsulation.None, imports: [
339
- NgIf,
340
- A11yModule,
341
- ToolbarComponent,
342
- ToolbarTitleComponent,
343
- MatButtonModule,
344
- TranslateModule,
345
- MatIconModule,
346
- MatMenuModule,
347
- ToolbarDividerComponent,
348
- ViewerRenderComponent,
349
- NgTemplateOutlet,
350
- ViewerToolbarComponent,
351
- ViewerSidebarComponent,
352
- ViewerToolbarActionsComponent,
353
- ViewerToolbarCustomActionsComponent,
354
- IconComponent
355
- ], providers: [ViewUtilService], template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n <span class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\">{{ fileName }}</span>\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n <adf-toolbar-divider />\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n <adf-toolbar-divider />\n\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"] }]
356
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialog }, { type: i2.ViewUtilService }, { type: i3.AppConfigService }], propDecorators: { toolbar: [{
357
- type: ContentChild,
358
- args: [ViewerToolbarComponent]
359
- }], sidebar: [{
360
- type: ContentChild,
361
- args: [ViewerSidebarComponent]
362
- }], mnuOpenWith: [{
363
- type: ContentChild,
364
- args: [ViewerOpenWithComponent]
365
- }], mnuMoreActions: [{
366
- type: ContentChild,
367
- args: [ViewerMoreActionsComponent]
368
- }], viewerTemplateExtensions: [{
369
- type: ContentChild,
370
- args: ['viewerExtensions', { static: false }]
371
- }], urlFile: [{
372
- type: Input
373
- }], blobFile: [{
374
- type: Input
375
- }], fileName: [{
376
- type: Input
377
- }], showViewer: [{
378
- type: Input
379
- }], allowGoBack: [{
380
- type: Input
381
- }], allowFullScreen: [{
382
- type: Input
383
- }], showToolbar: [{
384
- type: Input
385
- }], overlayMode: [{
386
- type: Input
387
- }], allowNavigate: [{
388
- type: Input
389
- }], canNavigateBefore: [{
390
- type: Input
391
- }], canNavigateNext: [{
392
- type: Input
393
- }], allowLeftSidebar: [{
394
- type: Input
395
- }], allowRightSidebar: [{
396
- type: Input
397
- }], showRightSidebar: [{
398
- type: Input
399
- }], showLeftSidebar: [{
400
- type: Input
401
- }], sidebarRightTemplate: [{
402
- type: Input
403
- }], sidebarLeftTemplate: [{
404
- type: Input
405
- }], readOnly: [{
406
- type: Input
407
- }], allowedEditActions: [{
408
- type: Input
409
- }], tracks: [{
410
- type: Input
411
- }], mimeType: [{
412
- type: Input
413
- }], sidebarRightTemplateContext: [{
414
- type: Input
415
- }], sidebarLeftTemplateContext: [{
416
- type: Input
417
- }], closeButtonPosition: [{
418
- type: Input
419
- }], hideInfoButton: [{
420
- type: Input
421
- }], viewerExtensions: [{
422
- type: Input
423
- }], nodeId: [{
424
- type: Input
425
- }], nodeMimeType: [{
426
- type: Input
427
- }], downloadFile: [{
428
- type: Output
429
- }], navigateBefore: [{
430
- type: Output
431
- }], navigateNext: [{
432
- type: Output
433
- }], showViewerChange: [{
434
- type: Output
435
- }], submitFile: [{
436
- type: Output
437
- }], handleKeyboardEvent: [{
438
- type: HostListener,
439
- args: ['document:keyup', ['$event']]
440
- }] } });
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFB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S04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLDJCQUEyQjtzQkFEMUIsS0FBSztnQkFPTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBT04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQTJCTixZQUFZO3NCQURYLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBb0dQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50LCBUb29sYmFyVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90b29sYmFyJztcbmltcG9ydCB7IERvd25sb2FkUHJvbXB0QWN0aW9ucyB9IGZyb20gJy4uL21vZGVscy9kb3dubG9hZC1wcm9tcHQuYWN0aW9ucyc7XG5pbXBvcnQgeyBDbG9zZUJ1dHRvblBvc2l0aW9uLCBUcmFjayB9IGZyb20gJy4uL21vZGVscy92aWV3ZXIubW9kZWwnO1xuaW1wb3J0IHsgVmlld1V0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlldy11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG93bmxvYWRQcm9tcHREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Rvd25sb2FkLXByb21wdC1kaWFsb2cvZG93bmxvYWQtcHJvbXB0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1tb3JlLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItb3Blbi13aXRoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJSZW5kZXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXNpZGViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXItYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLWN1c3RvbS1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbic7XG5pbXBvcnQgeyBUaHVtYm5haWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcgPSB7XG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHQ6IGZhbHNlLFxuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXI6IGZhbHNlLFxuICAgIGRvd25sb2FkUHJvbXB0RGVsYXk6IDUwLFxuICAgIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheTogMzBcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXZpZXdlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXZpZXdlcicgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgQTExeU1vZHVsZSxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhclRpdGxlQ29tcG9uZW50LFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsXG4gICAgICAgIFZpZXdlclJlbmRlckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVmlld2VyVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyU2lkZWJhckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQsXG4gICAgICAgIFZpZXdlclRvb2xiYXJDdXN0b21BY3Rpb25zQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtWaWV3VXRpbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdlckNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZSA9IGluamVjdChUaHVtYm5haWxTZXJ2aWNlKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyVG9vbGJhckNvbXBvbmVudClcbiAgICB0b29sYmFyOiBWaWV3ZXJUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJTaWRlYmFyQ29tcG9uZW50KVxuICAgIHNpZGViYXI6IFZpZXdlclNpZGViYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlck9wZW5XaXRoQ29tcG9uZW50KVxuICAgIG1udU9wZW5XaXRoOiBWaWV3ZXJPcGVuV2l0aENvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQpXG4gICAgbW51TW9yZUFjdGlvbnM6IFZpZXdlck1vcmVBY3Rpb25zQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZCgndmlld2VyRXh0ZW5zaW9ucycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHZpZXdlclRlbXBsYXRlRXh0ZW5zaW9uczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGdldCBDbG9zZUJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gQ2xvc2VCdXR0b25Qb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugd2FudCB0byBsb2FkIGFuIGV4dGVybmFsIGZpbGUgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gQUNTIHlvdVxuICAgICAqIGNhbiB1c2UgdGhpcyBVUkwgdG8gc3BlY2lmeSB3aGVyZSB0byBsb2FkIHRoZSBmaWxlIGZyb20uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1cmxGaWxlID0gJyc7XG5cbiAgICAvKiogTG9hZHMgYSBCbG9iIEZpbGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsb2JGaWxlOiBCbG9iO1xuXG4gICAgLyoqIE92ZXJyaWRlIENvbnRlbnQgZmlsZW5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIEhpZGUgb3Igc2hvdyB0aGUgdmlld2VyICovXG4gICAgQElucHV0KClcbiAgICBzaG93Vmlld2VyID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvd3MgYGJhY2tgIG5hdmlnYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93R29CYWNrID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnRnVsbCBTY3JlZW4nIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0Z1bGxTY3JlZW4gPSB0cnVlO1xuXG4gICAgLyoqIEhpZGUgb3Igc2hvdyB0aGUgdG9vbGJhciAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Rvb2xiYXIgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgYHRydWVgIHRoZW4gc2hvdyB0aGUgVmlld2VyIGFzIGEgZnVsbCBwYWdlIG92ZXIgdGhlIGN1cnJlbnQgY29udGVudC5cbiAgICAgKiBPdGhlcndpc2UsIGZpdCBpbnNpZGUgdGhlIHBhcmVudCBkaXYuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBvdmVybGF5TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyBiZWZvcmUvbmV4dCBuYXZpZ2F0aW9uLiBZb3UgY2FuIHVzZSB0aGUgYXJyb3cgYnV0dG9ucyB0byBuYXZpZ2F0ZVxuICAgICAqIGJldHdlZW4gZG9jdW1lbnRzIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dOYXZpZ2F0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIFwiYmVmb3JlXCIgKFwiPFwiKSBidXR0b24uIFJlcXVpcmVzIGBhbGxvd05hdmlnYXRlYCB0byBiZSBlbmFibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2FuTmF2aWdhdGVCZWZvcmUgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIG5leHQgKFwiPlwiKSBidXR0b24uIFJlcXVpcmVzIGBhbGxvd05hdmlnYXRlYCB0byBiZSBlbmFibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2FuTmF2aWdhdGVOZXh0ID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvdyB0aGUgbGVmdCB0aGUgc2lkZWJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93TGVmdFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBBbGxvdyB0aGUgcmlnaHQgc2lkZWJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93UmlnaHRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyByaWdodCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd1JpZ2h0U2lkZWJhcmAgdG8gYmUgc2V0IHRvIGB0cnVlYC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGxlZnQgc2lkZWJhciB2aXNpYmlsaXR5LiBSZXF1aXJlcyBgYWxsb3dMZWZ0U2lkZWJhcmAgdG8gYmUgc2V0IHRvIGB0cnVlYC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHJpZ2h0IHNpZGViYXIuIFRoZSB0ZW1wbGF0ZSBjb250ZXh0IGNvbnRhaW5zIHRoZSBsb2FkZWQgbm9kZSBkYXRhLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGxlZnQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKiBFbmFibGUgd2hlbiB3aGVyZSBpcyBwb3NzaWJsZSB0aGUgZWRpdGluZyBmdW5jdGlvbmFsaXRpZXMgICovXG4gICAgQElucHV0KClcbiAgICByZWFkT25seSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGljaCBhY3Rpb25zIGFyZSBlbmFibGVkIGluIHRoZSB2aWV3ZXIuXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiB7IHJvdGF0ZTogdHJ1ZSwgY3JvcDogZmFsc2UgfSB3aWxsIGVuYWJsZSByb3RhdGlvbiBidXQgZGlzYWJsZSBjcm9wcGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93ZWRFZGl0QWN0aW9uczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7XG4gICAgICAgIHJvdGF0ZTogdHJ1ZSxcbiAgICAgICAgY3JvcDogdHJ1ZVxuICAgIH07XG5cbiAgICAvKiogbWVkaWEgc3VidGl0bGVzIGZvciB0aGUgbWVkaWEgcGxheWVyKi9cbiAgICBASW5wdXQoKVxuICAgIHRyYWNrczogVHJhY2tbXSA9IFtdO1xuXG4gICAgLyoqIE92ZXJsb2FkIG1pbWVUeXBlKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbWVUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb250ZXh0IG9iamVjdCBhdmFpbGFibGUgZm9yIGJpbmRpbmcgYnkgdGhlIGxvY2FsIHNpZGViYXJSaWdodFRlbXBsYXRlIHdpdGggbGV0IGRlY2xhcmF0aW9ucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJSaWdodFRlbXBsYXRlQ29udGV4dDogVCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb250ZXh0IG9iamVjdCBhdmFpbGFibGUgZm9yIGJpbmRpbmcgYnkgdGhlIGxvY2FsIHNpZGViYXJMZWZ0VGVtcGxhdGUgd2l0aCBsZXQgZGVjbGFyYXRpb25zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhckxlZnRUZW1wbGF0ZUNvbnRleHQ6IFQgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBjbG9zZSBidXR0b24gcG9zaXRpb24gUmlnaHQvTGVmdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlQnV0dG9uUG9zaXRpb24gPSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnQ7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgJ0luZm8gQnV0dG9uJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZUluZm9CdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKiBUZW1wbGF0ZSBjb250YWluaW5nIFZpZXdlckV4dGVuc2lvbkRpcmVjdGl2ZSBpbnN0YW5jZXMgcHJvdmlkaW5nIGRpZmZlcmVudCB2aWV3ZXIgZXh0ZW5zaW9ucyBiYXNlZCBvbiBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb24uICovXG4gICAgQElucHV0KClcbiAgICB2aWV3ZXJFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIElkZW50aWZpZXIgb2YgYSBub2RlIHRoYXQgaXMgb3BlbmVkIGJ5IHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogT3JpZ2luYWwgbm9kZSBtaW1lIHR5cGUsIHNob3VsZCBiZSBwcm92aWRlZCB3aGVuIHJlbmRpdGlvbmEgbWltZSB0eXBlIGlzIGRpZmZlcmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVNaW1lVHlwZTogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIGRpYWxvZyBib3ggdG8gYWxsb3cgdXNlciB0byBkb3dubG9hZCB0aGUgcHJldmlld2VkIGZpbGUsIGluIGNhc2UgdGhlIHByZXZpZXcgaXMgbm90IHJlc3BvbmRpbmcgZm9yIGEgc2V0IHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgcmVtaW5kZXIgZGlhbG9ncyB0byBwcm9tcHQgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZSwgaW4gY2FzZSB0aGUgcHJldmlldyBpcyBub3QgcmVzcG9uZGluZyBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHRoZSBmaXJzdCBwcm9tcHQgdG8gdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAqL1xuICAgIGRvd25sb2FkUHJvbXB0RGVsYXk6IG51bWJlciA9IDUwO1xuXG4gICAgLyoqXG4gICAgICogVGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB0aGUgc2Vjb25kIGFuZCBjb25zZXF1ZW50IHJlbWluZGVycyB0byB0aGUgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZS5cbiAgICAgKi9cbiAgICBkb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk6IG51bWJlciA9IDE1O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGRvd25sb2FkIGJ1dHRvbiBvbiBkb3dubG9hZCBwcm9tcHQgZGlhbG9nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRvd25sb2FkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIEJlZm9yZScgKFwiPFwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyAnTmF2aWdhdGUgTmV4dCcgKFwiPlwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVOZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHZpZXdlciBjbG9zZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dWaWV3ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc3VibWl0dGVkIGluIHRoZSBpbWcgdmlld2VyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Ym1pdEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XG5cbiAgICBwcml2YXRlIGNsb3NlVmlld2VyID0gdHJ1ZTtcbiAgICBwcml2YXRlIGtleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpO1xuICAgIHByaXZhdGUgaXNEaWFsb2dWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGRvd25sb2FkUHJvbXB0VGltZXI6IG51bWJlcjtcbiAgICBwdWJsaWMgZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyOiBudW1iZXI7XG4gICAgcHVibGljIG1pbWVUeXBlSWNvblVybDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbHNTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyBibG9iRmlsZSwgdXJsRmlsZSwgbWltZVR5cGUsIG5vZGVNaW1lVHlwZSB9ID0gY2hhbmdlcztcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9IGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgfHw9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlbmFtZUZyb21VcmwodXJsRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbWVUeXBlPy5jdXJyZW50VmFsdWUgJiYgIW5vZGVNaW1lVHlwZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obWltZVR5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlTWltZVR5cGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG5vZGVNaW1lVHlwZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZUFuZEluaXREb3dubG9hZFByb21wdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VPdmVybGF5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuYWZ0ZXJPcGVuZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuY2xvc2VWaWV3ZXIgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuZGlhbG9nLmFmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmNsb3NlVmlld2VyID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMua2V5RG93biRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleUNvZGUgPT09IDI3KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VWaWV3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZUJlZm9yZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlQmVmb3JlLm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTmF2aWdhdGVOZXh0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVOZXh0Lm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlIHRoZSB2aWV3ZXJcbiAgICAgKi9cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLnNob3dWaWV3ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93Vmlld2VyQ2hhbmdlLmVtaXQodGhpcy5zaG93Vmlld2VyKTtcbiAgICB9XG5cbiAgICB0b2dnbGVSaWdodFNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0U2lkZWJhciA9ICF0aGlzLnNob3dSaWdodFNpZGViYXI7XG4gICAgfVxuXG4gICAgdG9nZ2xlTGVmdFNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2hvd0xlZnRTaWRlYmFyID0gIXRoaXMuc2hvd0xlZnRTaWRlYmFyO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudD8uZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Q29kZTtcblxuICAgICAgICAvLyBMZWZ0IGFycm93XG4gICAgICAgIGlmIChrZXkgPT09IDM3ICYmIHRoaXMuY2FuTmF2aWdhdGVCZWZvcmUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGVCZWZvcmVDbGljayhldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSaWdodCBhcnJvd1xuICAgICAgICBpZiAoa2V5ID09PSAzOSAmJiB0aGlzLmNhbk5hdmlnYXRlTmV4dCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0ZU5leHRDbGljayhldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdHJsK0ZcbiAgICAgICAgaWYgKGtleSA9PT0gNzAgJiYgZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBmdWxsIHNjcmVlbiBtb2RlIHdpdGggYSBtYWluIGNvbnRlbnQgYXJlYSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgZW50ZXJGdWxsU2NyZWVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0Z1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXInKTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5lbWl0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVBbmRJbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJlRG93bmxvYWRQcm9tcHRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0KSB7XG4gICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVEb3dubG9hZFByb21wdFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgndmlld2VyJywgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcpO1xuXG4gICAgICAgIHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHQgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5lbmFibGVEb3dubG9hZFByb21wdDtcbiAgICAgICAgdGhpcy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdERlbGF5ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZG93bmxvYWRQcm9tcHREZWxheTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXkgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0RGVsYXkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0Rvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEaWFsb2dWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgICAgIC5vcGVuKERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IERvd25sb2FkUHJvbXB0QWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBEb3dubG9hZFByb21wdEFjdGlvbnMuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gRG93bmxvYWRQcm9tcHRBY3Rpb25zLldBSVQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheSAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdlclwiXG4gICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jb250YWluZXJcIlxuICAgICBbY2xhc3MuYWRmLXZpZXdlci1vdmVybGF5LWNvbnRhaW5lcl09XCJvdmVybGF5TW9kZVwiXG4gICAgIFtjbGFzcy5hZGYtdmlld2VyLWlubGluZS1jb250YWluZXJdPVwiIW92ZXJsYXlNb2RlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1jb250ZW50XCJcbiAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwib3ZlcmxheU1vZGVcIlxuICAgICAgICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhclwiIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9vbGJhciAmJiAhdG9vbGJhclwiPlxuICAgICAgICAgICAgPGFkZi10b29sYmFyIGlkPVwiYWRmLXZpZXdlci10b29sYmFyXCIgY2xhc3M9XCJhZGYtdmlld2VyLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0xlZnRTaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dMZWZ0U2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzaG93TGVmdFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGVmdFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19maWxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd05hdmlnYXRlICYmIGNhbk5hdmlnYXRlQmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1wcmVmLWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuUFJFVl9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVCZWZvcmVDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfYmVmb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhZGYtdmlld2VyX19taW1laWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCInQURGX1ZJRVdFUi5BUklBLk1JTUVfVFlQRV9JQ09OJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtaW1lVHlwZUljb25VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWxlLXRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi12aWV3ZXJfX2Rpc3BsYXktbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLXZpZXdlci1kaXNwbGF5LW5hbWVcIj57eyBmaWxlTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93TmF2aWdhdGUgJiYgY2FuTmF2aWdhdGVOZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1uZXh0LWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuTkVYVF9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVOZXh0Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm5hdmlnYXRlX25leHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zXCIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9J2FkZi10b29sYmFyLWN1c3RvbS1idG4nPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1vcGVud2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItb3Blbi13aXRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk9QRU5fV0lUSCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbW51T3BlbldpdGg9XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci1vcGVuLXdpdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9uc1wiIC8+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dGdWxsU2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbnRlckZ1bGxTY3JlZW4oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dSaWdodFNpZGViYXIgJiYgIWhpZGVJbmZvQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dSaWdodFNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLklORk8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1zaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2hvd1JpZ2h0U2lkZWJhciA/ICdhY2NlbnQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJpZ2h0U2lkZWJhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVNb3JlQWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1tb3JlYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU1vcmVBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW1vcmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21udU1vcmVBY3Rpb25zPVwibWF0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItbW9yZS1hY3Rpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLlJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCIgLz5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19