nuxeo-development-framework 3.1.1 → 3.1.2

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 (1229) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +63 -70
  4. package/src/lib/Core/adapters/adapter.service.ts +46 -0
  5. package/src/lib/Core/core.module.ts +65 -0
  6. package/src/lib/Core/enums/language.enum.ts +4 -0
  7. package/src/lib/Core/models/component.model.ts +11 -0
  8. package/src/lib/Core/services/callApi/call-api.service.ts +31 -0
  9. package/src/lib/Core/services/extension/action.extensions.ts +35 -0
  10. package/src/lib/Core/services/extension/component-register.service.ts +25 -0
  11. package/src/lib/Core/services/extension/extenion-utils.ts +142 -0
  12. package/src/lib/Core/services/extension/extension-element.ts +6 -0
  13. package/src/lib/Core/services/extension/extension-loader.service.ts +160 -0
  14. package/src/lib/Core/services/extension/extension.service.ts +137 -0
  15. package/src/lib/Core/services/initialization/initialization.service.ts +50 -0
  16. package/src/lib/Core/services/localStorag/local-storag.service.ts +125 -0
  17. package/src/lib/Core/services/nuxeo/nuxeo-override.ts +86 -0
  18. package/src/lib/Core/services/nuxeo/nuxeo.service.ts +123 -0
  19. package/src/lib/Core/services/roles/roles.service.spec.ts +16 -0
  20. package/src/lib/Core/services/roles/roles.service.ts +122 -0
  21. package/src/lib/Core/services/translation/translate-loader.service.ts +173 -0
  22. package/src/lib/Core/services/translation/translation.service.ts +221 -0
  23. package/src/lib/Core/services/user/user-preferences.service.ts +172 -0
  24. package/src/lib/Core/utilities/moment-date-adapter.ts +203 -0
  25. package/src/lib/Core/utilities/moment-dates-format.ts +18 -0
  26. package/src/lib/Core/utilities/utility.service.ts +83 -0
  27. package/src/lib/assets/scss/ej2/material.css +1 -0
  28. package/src/lib/assets/scss/mixins.scss +38 -0
  29. package/src/lib/assets/scss/myApp.scss +487 -0
  30. package/src/lib/assets/scss/variables.scss +62 -0
  31. package/src/lib/components/activities-log/activities-log/activities-log.component.html +11 -0
  32. package/src/lib/components/activities-log/activities-log/activities-log.component.scss +12 -0
  33. package/src/lib/components/activities-log/activities-log/activities-log.component.spec.ts +25 -0
  34. package/src/lib/components/activities-log/activities-log/activities-log.component.ts +107 -0
  35. package/src/lib/components/activities-log/activities-log/activities-log.service.ts +30 -0
  36. package/src/lib/components/activities-log/activities-log.module.ts +18 -0
  37. package/src/lib/components/activity/activity/activity.component.html +28 -0
  38. package/src/lib/components/activity/activity/activity.component.scss +33 -0
  39. package/src/lib/components/activity/activity/activity.component.spec.ts +25 -0
  40. package/src/lib/components/activity/activity/activity.component.ts +23 -0
  41. package/src/lib/components/activity/activity.module.ts +24 -0
  42. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.html +36 -0
  43. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.scss +21 -0
  44. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.spec.ts +25 -0
  45. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.ts +35 -0
  46. package/src/lib/components/attachment-item/attachment-item.module.ts +26 -0
  47. package/src/lib/components/attachment-modal/attachment-modal.module.ts +24 -0
  48. package/src/lib/components/attachment-modal/attachments/attachments.component.html +41 -0
  49. package/src/lib/components/attachment-modal/attachments/attachments.component.scss +5 -0
  50. package/src/lib/components/attachment-modal/attachments/attachments.component.spec.ts +25 -0
  51. package/src/lib/components/attachment-modal/attachments/attachments.component.ts +161 -0
  52. package/src/lib/components/avatar/avatar/avatar.component.html +13 -0
  53. package/src/lib/components/avatar/avatar/avatar.component.scss +32 -0
  54. package/src/lib/components/avatar/avatar/avatar.component.spec.ts +25 -0
  55. package/src/lib/components/avatar/avatar/avatar.component.ts +50 -0
  56. package/src/lib/components/avatar/avatar.module.ts +21 -0
  57. package/src/lib/components/card/card.component.html +35 -0
  58. package/src/lib/components/card/card.component.scss +81 -0
  59. package/src/lib/components/card/card.component.spec.ts +25 -0
  60. package/src/lib/components/card/card.component.ts +38 -0
  61. package/src/lib/components/card/card.module.ts +15 -0
  62. package/src/lib/components/comments/comments.module.ts +48 -0
  63. package/src/lib/components/comments/components/comment-item/comment-item.component.html +32 -0
  64. package/src/lib/components/comments/components/comment-item/comment-item.component.scss +41 -0
  65. package/src/lib/components/comments/components/comment-item/comment-item.component.ts +70 -0
  66. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.html +58 -0
  67. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.scss +69 -0
  68. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.ts +80 -0
  69. package/src/lib/components/comments/components/comments-list/comments-list.component.html +43 -0
  70. package/src/lib/components/comments/components/comments-list/comments-list.component.scss +103 -0
  71. package/src/lib/components/comments/components/comments-list/comments-list.component.ts +61 -0
  72. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.html +22 -0
  73. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.scss +48 -0
  74. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.spec.ts +25 -0
  75. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.ts +56 -0
  76. package/src/lib/components/comments/constants/comment.ts +25 -0
  77. package/src/lib/components/comments/services/comment-api.service.ts +85 -0
  78. package/src/lib/components/confirm-caller/confirm-caller.dialog.html +26 -0
  79. package/src/lib/components/confirm-caller/confirm-caller.dialog.scss +34 -0
  80. package/src/lib/components/confirm-caller/confirm-caller.dialog.ts +68 -0
  81. package/src/lib/components/confirm-caller/confirm-caller.module.ts +19 -0
  82. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.html +13 -0
  83. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.scss +0 -0
  84. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.spec.ts +25 -0
  85. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.ts +18 -0
  86. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.html +24 -0
  87. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.scss +0 -0
  88. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.spec.ts +25 -0
  89. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.ts +19 -0
  90. package/src/lib/components/confirmation-dialog/confirmation-dialog.module.ts +18 -0
  91. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.html +27 -0
  92. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.scss +34 -0
  93. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.spec.ts +25 -0
  94. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.ts +149 -0
  95. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.html +92 -0
  96. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.scss +124 -0
  97. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.spec.ts +25 -0
  98. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.ts +132 -0
  99. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.html +33 -0
  100. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.scss +42 -0
  101. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.spec.ts +25 -0
  102. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.ts +111 -0
  103. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.html +20 -0
  104. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.scss +9 -0
  105. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.spec.ts +25 -0
  106. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.ts +64 -0
  107. package/src/lib/components/correspondence-relation/components/versions/versions.component.html +80 -0
  108. package/src/lib/components/correspondence-relation/components/versions/versions.component.scss +0 -0
  109. package/src/lib/components/correspondence-relation/components/versions/versions.component.ts +71 -0
  110. package/src/lib/components/correspondence-relation/correspondence-relation.module.ts +59 -0
  111. package/src/lib/components/correspondence-relation/services/correspondence-realation.service.ts +192 -0
  112. package/src/lib/components/correspondence-relation/services/viewer-files.service.ts +51 -0
  113. package/src/lib/components/create-entity/create-entity/create-entity.component.html +18 -0
  114. package/src/lib/components/create-entity/create-entity/create-entity.component.scss +90 -0
  115. package/src/lib/components/create-entity/create-entity/create-entity.component.spec.ts +25 -0
  116. package/src/lib/components/create-entity/create-entity/create-entity.component.ts +57 -0
  117. package/src/lib/components/create-entity/create-entity.module.ts +22 -0
  118. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.html +57 -0
  119. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.scss +43 -0
  120. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.spec.ts +25 -0
  121. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.ts +133 -0
  122. package/src/lib/components/cts-tags/cts-tags.module.ts +35 -0
  123. package/src/lib/components/cts-tags/services/tags-api.service.ts +106 -0
  124. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.html +44 -0
  125. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.scss +91 -0
  126. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.spec.ts +25 -0
  127. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.ts +79 -0
  128. package/src/lib/components/custom-toastr/custom-toastr.module.ts +19 -0
  129. package/src/lib/components/custom-toastr/interfaces/toast-type.interface.ts +1 -0
  130. package/src/lib/components/custom-toastr/services/custom-toastr.service.ts +56 -0
  131. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.html +37 -0
  132. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.scss +73 -0
  133. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.spec.ts +25 -0
  134. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.ts +34 -0
  135. package/src/lib/components/display-suitable-icon/display-suitable-icon/icon.service.ts +107 -0
  136. package/src/lib/components/display-suitable-icon/display-suitable-icon.module.ts +16 -0
  137. package/src/lib/components/documents/components/attachments-list/attachments-list.component.html +92 -0
  138. package/src/lib/components/documents/components/attachments-list/attachments-list.component.scss +65 -0
  139. package/src/lib/components/documents/components/attachments-list/attachments-list.component.spec.ts +25 -0
  140. package/src/lib/components/documents/components/attachments-list/attachments-list.component.ts +162 -0
  141. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.html +36 -0
  142. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.scss +44 -0
  143. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.spec.ts +25 -0
  144. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.ts +77 -0
  145. package/src/lib/components/documents/components/document-list/documents-list.component.html +34 -0
  146. package/src/lib/components/documents/components/document-list/documents-list.component.scss +41 -0
  147. package/src/lib/components/documents/components/document-list/documents-list.component.ts +244 -0
  148. package/src/lib/components/documents/components/document-scan/document-scan.component.html +176 -0
  149. package/src/lib/components/documents/components/document-scan/document-scan.component.scss +725 -0
  150. package/src/lib/components/documents/components/document-scan/document-scan.component.ts +1156 -0
  151. package/src/lib/components/documents/components/document-scan/document-scan.service.ts +26 -0
  152. package/src/lib/components/documents/components/document-upload/document-upload.component.html +19 -0
  153. package/src/lib/components/documents/components/document-upload/document-upload.component.scss +49 -0
  154. package/src/lib/components/documents/components/document-upload/document-upload.component.ts +168 -0
  155. package/src/lib/components/documents/components/documents/documents.component.html +16 -0
  156. package/src/lib/components/documents/components/documents/documents.component.scss +0 -0
  157. package/src/lib/components/documents/components/documents/documents.component.ts +49 -0
  158. package/src/lib/components/documents/constants/document-templates.ts +32 -0
  159. package/src/lib/components/documents/constants/documents.ts +85 -0
  160. package/src/lib/components/documents/documents.module.ts +69 -0
  161. package/src/lib/components/documents/services/document-templates.service.ts +155 -0
  162. package/src/lib/components/documents/services/documents.service.ts +354 -0
  163. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.html +26 -0
  164. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.scss +35 -0
  165. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.spec.ts +25 -0
  166. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.ts +423 -0
  167. package/src/lib/components/dynamic-chart/dynamic-chart.module.ts +22 -0
  168. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.html +4 -0
  169. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.scss +14 -0
  170. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.spec.ts +25 -0
  171. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.ts +178 -0
  172. package/src/lib/components/dynamic-chart/new-chart-box.ts +0 -0
  173. package/src/lib/components/dynamic-chart/services/chart-data.service.ts +613 -0
  174. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.html +58 -0
  175. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.scss +0 -0
  176. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.spec.ts +25 -0
  177. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.ts +162 -0
  178. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.ts +25 -0
  179. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.html +122 -0
  180. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.scss +103 -0
  181. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.spec.ts +25 -0
  182. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.ts +124 -0
  183. package/src/lib/components/dynamic-filter/dynamic-filter.module.ts +19 -0
  184. package/src/lib/components/dynamic-filter/services/dynamic-filter.service.ts +14 -0
  185. package/src/lib/components/dynamic-form/components/department-form/department-form.component.html +100 -0
  186. package/src/lib/components/dynamic-form/components/department-form/department-form.component.scss +38 -0
  187. package/src/lib/components/dynamic-form/components/department-form/department-form.component.spec.ts +25 -0
  188. package/src/lib/components/dynamic-form/components/department-form/department-form.component.ts +132 -0
  189. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.html +3 -0
  190. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.scss +51 -0
  191. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.ts +109 -0
  192. package/src/lib/components/dynamic-form/components/dynamic-form/fields.adapter.ts +123 -0
  193. package/src/lib/components/dynamic-form/components/dynamic-form/form-builder.service.ts +120 -0
  194. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.html +14 -0
  195. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.scss +2 -0
  196. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.ts +34 -0
  197. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.html +15 -0
  198. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.scss +73 -0
  199. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.ts +161 -0
  200. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.html +10 -0
  201. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.scss +13 -0
  202. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.spec.ts +25 -0
  203. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.ts +72 -0
  204. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.html +56 -0
  205. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.scss +99 -0
  206. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.ts +210 -0
  207. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.ts +94 -0
  208. package/src/lib/components/dynamic-form/components/dynamic-form-department/constants/department.ts +12 -0
  209. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.html +36 -0
  210. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.scss +11 -0
  211. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.ts +230 -0
  212. package/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.ts +251 -0
  213. package/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.ts +126 -0
  214. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.html +1 -0
  215. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.scss +0 -0
  216. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.ts +92 -0
  217. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.html +29 -0
  218. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.scss +54 -0
  219. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.spec.ts +25 -0
  220. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.ts +152 -0
  221. package/src/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.ts +105 -0
  222. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.html +31 -0
  223. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.scss +5 -0
  224. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.ts +32 -0
  225. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.html +56 -0
  226. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.scss +24 -0
  227. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.spec.ts +25 -0
  228. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.ts +110 -0
  229. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.html +27 -0
  230. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.scss +100 -0
  231. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.spec.ts +25 -0
  232. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.ts +117 -0
  233. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.html +83 -0
  234. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.scss +136 -0
  235. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.spec.ts +25 -0
  236. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.ts +199 -0
  237. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.html +99 -0
  238. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.scss +177 -0
  239. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.spec.ts +25 -0
  240. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.ts +335 -0
  241. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.ts +50 -0
  242. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.html +92 -0
  243. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.scss +132 -0
  244. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.ts +194 -0
  245. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.html +13 -0
  246. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.scss +19 -0
  247. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.spec.ts +25 -0
  248. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.ts +85 -0
  249. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.html +27 -0
  250. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.scss +147 -0
  251. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.ts +213 -0
  252. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.html +68 -0
  253. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.scss +208 -0
  254. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.ts +308 -0
  255. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.ts +73 -0
  256. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.ts +350 -0
  257. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dynamic-form-treeview-select.component.html +235 -0
  258. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dynamic-form-treeview-select.component.scss +246 -0
  259. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.html +23 -0
  260. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.scss +29 -0
  261. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.spec.ts +25 -0
  262. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.ts +39 -0
  263. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.html +35 -0
  264. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.scss +0 -0
  265. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.spec.ts +25 -0
  266. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.ts +175 -0
  267. package/src/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.ts +780 -0
  268. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.html +2 -0
  269. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.scss +0 -0
  270. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.ts +33 -0
  271. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.ts +22 -0
  272. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.html +1 -0
  273. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.scss +0 -0
  274. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.ts +32 -0
  275. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.ts +20 -0
  276. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.css +0 -0
  277. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.html +17 -0
  278. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.ts +65 -0
  279. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.ts +34 -0
  280. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.html +10 -0
  281. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.scss +0 -0
  282. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.ts +28 -0
  283. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.ts +34 -0
  284. package/src/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.ts +10 -0
  285. package/src/lib/components/dynamic-form/dynamic-form.module.scss +13 -0
  286. package/src/lib/components/dynamic-form/dynamic-form.module.ts +193 -0
  287. package/src/lib/components/dynamic-form/interfaces/aspect-oriented-config.interface.ts +3 -0
  288. package/src/lib/components/dynamic-form/interfaces/content-metadata-config.interface.ts +16 -0
  289. package/src/lib/components/dynamic-form/interfaces/content-metadata.interfaces.ts +26 -0
  290. package/src/lib/components/dynamic-form/interfaces/dynamic-form-arrayitem-properties.interface.ts +5 -0
  291. package/src/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.ts +6 -0
  292. package/src/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.ts +6 -0
  293. package/src/lib/components/dynamic-form/interfaces/dynamic-form-group.interface.ts +6 -0
  294. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.ts +16 -0
  295. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.ts +4 -0
  296. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.ts +12 -0
  297. package/src/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.ts +11 -0
  298. package/src/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.ts +13 -0
  299. package/src/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.ts +6 -0
  300. package/src/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.ts +9 -0
  301. package/src/lib/components/dynamic-form/interfaces/indifferent-config.interface.ts +1 -0
  302. package/src/lib/components/dynamic-form/interfaces/layout-oriented-config.interface.ts +17 -0
  303. package/src/lib/components/dynamic-form/interfaces/organised-property-group.interface.ts +7 -0
  304. package/src/lib/components/dynamic-form/interfaces/preset-config.interface.ts +8 -0
  305. package/src/lib/components/dynamic-form/interfaces/property-group.interface.ts +14 -0
  306. package/src/lib/components/dynamic-form/interfaces/property.interface.ts +12 -0
  307. package/src/lib/components/dynamic-form/models/dynamic-form-arrayitem.model.ts +26 -0
  308. package/src/lib/components/dynamic-form/models/dynamic-form-baseitem.model.ts +96 -0
  309. package/src/lib/components/dynamic-form/models/dynamic-form-boolitem.model.ts +27 -0
  310. package/src/lib/components/dynamic-form/models/dynamic-form-dateitem.model.ts +39 -0
  311. package/src/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.ts +18 -0
  312. package/src/lib/components/dynamic-form/models/dynamic-form-keyvaluepairs.model.ts +19 -0
  313. package/src/lib/components/dynamic-form/models/dynamic-form-mapitem.model.ts +17 -0
  314. package/src/lib/components/dynamic-form/models/dynamic-form-selectitem.model.ts +30 -0
  315. package/src/lib/components/dynamic-form/models/dynamic-form-textitem.model.ts +47 -0
  316. package/src/lib/components/dynamic-form/services/card-item-types.service.ts +55 -0
  317. package/src/lib/components/dynamic-form/services/dynamic-component-mapper.service.ts +86 -0
  318. package/src/lib/components/dynamic-form/services/dynamic-form-update.service.ts +105 -0
  319. package/src/lib/components/dynamic-form/services/property-groups-translator.service.ts +159 -0
  320. package/src/lib/components/dynamic-form/services/vocabulary-api.service.ts +32 -0
  321. package/src/lib/components/dynamic-form/validators/date-validator.ts +18 -0
  322. package/src/lib/components/dynamic-form/validators/length-validator.ts +18 -0
  323. package/src/lib/components/dynamic-form/validators/regex-validator.ts +16 -0
  324. package/src/lib/components/dynamic-form/validators/required-validator.ts +7 -0
  325. package/src/lib/components/dynamic-form/validators/value-validator.ts +18 -0
  326. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.html +219 -0
  327. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.scss +195 -0
  328. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.spec.ts +25 -0
  329. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.ts +316 -0
  330. package/src/lib/components/dynamic-search/dynamic-search.module.ts +33 -0
  331. package/src/lib/components/dynamic-table/constants/documents.ts +72 -0
  332. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.html +46 -0
  333. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.scss +33 -0
  334. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.spec.ts +25 -0
  335. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.ts +239 -0
  336. package/src/lib/components/dynamic-table/dynamic-table.module.ts +27 -0
  337. package/src/lib/components/dynamic-table/services/dynamic-table.service.spec.ts +16 -0
  338. package/src/lib/components/dynamic-table/services/dynamic-table.service.ts +10 -0
  339. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.html +11 -0
  340. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.scss +63 -0
  341. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.spec.ts +25 -0
  342. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.ts +25 -0
  343. package/src/lib/components/dynamic-tabs/dynamic-tabs.module.ts +20 -0
  344. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.html +4 -0
  345. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.scss +0 -0
  346. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.spec.ts +25 -0
  347. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.ts +19 -0
  348. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.html +3 -0
  349. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.scss +0 -0
  350. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.spec.ts +25 -0
  351. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.ts +55 -0
  352. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.html +3 -0
  353. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.scss +0 -0
  354. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.spec.ts +25 -0
  355. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.ts +65 -0
  356. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.html +14 -0
  357. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.scss +0 -0
  358. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.spec.ts +25 -0
  359. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.ts +28 -0
  360. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.html +15 -0
  361. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.scss +0 -0
  362. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.spec.ts +25 -0
  363. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.ts +19 -0
  364. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.html +5 -0
  365. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.scss +0 -0
  366. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.spec.ts +25 -0
  367. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.ts +38 -0
  368. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.html +14 -0
  369. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.scss +0 -0
  370. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.spec.ts +25 -0
  371. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.ts +84 -0
  372. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.html +4 -0
  373. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.scss +0 -0
  374. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.spec.ts +25 -0
  375. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.ts +44 -0
  376. package/src/lib/components/dynamic-view/dynamic-view.module.ts +44 -0
  377. package/src/lib/components/dynamic-view/dynamic-viewe.service.ts +58 -0
  378. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.html +24 -0
  379. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.scss +55 -0
  380. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.spec.ts +25 -0
  381. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.ts +27 -0
  382. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.html +34 -0
  383. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.scss +0 -0
  384. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.spec.ts +25 -0
  385. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.ts +139 -0
  386. package/src/lib/components/file-manger/components/clipboard/clipboard.component.html +88 -0
  387. package/src/lib/components/file-manger/components/clipboard/clipboard.component.scss +17 -0
  388. package/src/lib/components/file-manger/components/clipboard/clipboard.component.spec.ts +25 -0
  389. package/src/lib/components/file-manger/components/clipboard/clipboard.component.ts +279 -0
  390. package/src/lib/components/file-manger/components/copy/copy.component.html +24 -0
  391. package/src/lib/components/file-manger/components/copy/copy.component.scss +0 -0
  392. package/src/lib/components/file-manger/components/copy/copy.component.spec.ts +25 -0
  393. package/src/lib/components/file-manger/components/copy/copy.component.ts +129 -0
  394. package/src/lib/components/file-manger/components/create-directory/create-directory.component.html +32 -0
  395. package/src/lib/components/file-manger/components/create-directory/create-directory.component.scss +0 -0
  396. package/src/lib/components/file-manger/components/create-directory/create-directory.component.spec.ts +25 -0
  397. package/src/lib/components/file-manger/components/create-directory/create-directory.component.ts +85 -0
  398. package/src/lib/components/file-manger/components/create-modal/create-modal.component.html +244 -0
  399. package/src/lib/components/file-manger/components/create-modal/create-modal.component.scss +20 -0
  400. package/src/lib/components/file-manger/components/create-modal/create-modal.component.spec.ts +25 -0
  401. package/src/lib/components/file-manger/components/create-modal/create-modal.component.ts +475 -0
  402. package/src/lib/components/file-manger/components/creation-type/creation-type.component.html +39 -0
  403. package/src/lib/components/file-manger/components/creation-type/creation-type.component.scss +0 -0
  404. package/src/lib/components/file-manger/components/creation-type/creation-type.component.spec.ts +25 -0
  405. package/src/lib/components/file-manger/components/creation-type/creation-type.component.ts +19 -0
  406. package/src/lib/components/file-manger/components/delete/delete.component.html +25 -0
  407. package/src/lib/components/file-manger/components/delete/delete.component.scss +0 -0
  408. package/src/lib/components/file-manger/components/delete/delete.component.spec.ts +25 -0
  409. package/src/lib/components/file-manger/components/delete/delete.component.ts +80 -0
  410. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.html +88 -0
  411. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.scss +7 -0
  412. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.spec.ts +25 -0
  413. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.ts +113 -0
  414. package/src/lib/components/file-manger/components/loan-request/loan-request.component.html +31 -0
  415. package/src/lib/components/file-manger/components/loan-request/loan-request.component.scss +0 -0
  416. package/src/lib/components/file-manger/components/loan-request/loan-request.component.spec.ts +25 -0
  417. package/src/lib/components/file-manger/components/loan-request/loan-request.component.ts +72 -0
  418. package/src/lib/components/file-manger/components/move/move.component.html +24 -0
  419. package/src/lib/components/file-manger/components/move/move.component.scss +0 -0
  420. package/src/lib/components/file-manger/components/move/move.component.spec.ts +25 -0
  421. package/src/lib/components/file-manger/components/move/move.component.ts +114 -0
  422. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.html +45 -0
  423. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.scss +0 -0
  424. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.spec.ts +25 -0
  425. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.ts +98 -0
  426. package/src/lib/components/file-manger/components/rename/rename.component.html +28 -0
  427. package/src/lib/components/file-manger/components/rename/rename.component.scss +0 -0
  428. package/src/lib/components/file-manger/components/rename/rename.component.spec.ts +25 -0
  429. package/src/lib/components/file-manger/components/rename/rename.component.ts +82 -0
  430. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.html +336 -0
  431. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.scss +9 -0
  432. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.spec.ts +25 -0
  433. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.ts +337 -0
  434. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.html +159 -0
  435. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.scss +38 -0
  436. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.spec.ts +25 -0
  437. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.ts +288 -0
  438. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.html +350 -0
  439. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.scss +0 -0
  440. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.spec.ts +25 -0
  441. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.ts +247 -0
  442. package/src/lib/components/file-manger/components/template-modal/template-modal.component.html +213 -0
  443. package/src/lib/components/file-manger/components/template-modal/template-modal.component.scss +3 -0
  444. package/src/lib/components/file-manger/components/template-modal/template-modal.component.spec.ts +25 -0
  445. package/src/lib/components/file-manger/components/template-modal/template-modal.component.ts +55 -0
  446. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.html +26 -0
  447. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.scss +0 -0
  448. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.spec.ts +25 -0
  449. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.ts +74 -0
  450. package/src/lib/components/file-manger/components/update-modal/update-modal.component.html +97 -0
  451. package/src/lib/components/file-manger/components/update-modal/update-modal.component.scss +7 -0
  452. package/src/lib/components/file-manger/components/update-modal/update-modal.component.spec.ts +25 -0
  453. package/src/lib/components/file-manger/components/update-modal/update-modal.component.ts +365 -0
  454. package/src/lib/components/file-manger/file-manager.abstract.ts +1347 -0
  455. package/src/lib/components/file-manger/file-manger.module.ts +154 -0
  456. package/src/lib/components/filter/filter/filter.component.html +79 -0
  457. package/src/lib/components/filter/filter/filter.component.md +68 -0
  458. package/src/lib/components/filter/filter/filter.component.scss +50 -0
  459. package/src/lib/components/filter/filter/filter.component.spec.ts +25 -0
  460. package/src/lib/components/filter/filter/filter.component.ts +81 -0
  461. package/src/lib/components/filter/filter.module.ts +27 -0
  462. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-date-picker.component.scss +67 -0
  463. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.html +47 -0
  464. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.ts +99 -0
  465. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-date-picker.component.scss +67 -0
  466. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.html +47 -0
  467. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.ts +102 -0
  468. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.html +29 -0
  469. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.ts +152 -0
  470. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.ts +23 -0
  471. package/src/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.ts +35 -0
  472. package/src/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.ts +94 -0
  473. package/src/lib/components/hijri-gregorian-datepicker/services/date-helper.service.ts +28 -0
  474. package/src/lib/components/hijri-gregorian-datepicker/services/ngx-hijri-gregorian-datepicker.service.ts +9 -0
  475. package/src/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.ts +35 -0
  476. package/src/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.ts +26 -0
  477. package/src/lib/components/hijri-gregorian-datepicker/utils/consts.ts +4 -0
  478. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.html +27 -0
  479. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.scss +13 -0
  480. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.spec.ts +25 -0
  481. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.ts +73 -0
  482. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.html +36 -0
  483. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.scss +12 -0
  484. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.spec.ts +25 -0
  485. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.ts +78 -0
  486. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.html +38 -0
  487. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.scss +157 -0
  488. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.spec.ts +25 -0
  489. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.ts +19 -0
  490. package/src/lib/components/latest-activity/constants/activitylog.ts +80 -0
  491. package/src/lib/components/latest-activity/latest-activity.module.ts +33 -0
  492. package/src/lib/components/latest-activity/services/activity-log.service.ts +41 -0
  493. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.html +36 -0
  494. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.scss +32 -0
  495. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.spec.ts +25 -0
  496. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.ts +45 -0
  497. package/src/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.ts +18 -0
  498. package/src/lib/components/notifications/components/notification-item/notification-item.component.html +45 -0
  499. package/src/lib/components/notifications/components/notification-item/notification-item.component.scss +60 -0
  500. package/src/lib/components/notifications/components/notification-item/notification-item.component.ts +136 -0
  501. package/src/lib/components/notifications/components/notification-options/notification-options.component.html +7 -0
  502. package/src/lib/components/notifications/components/notification-options/notification-options.component.scss +7 -0
  503. package/src/lib/components/notifications/components/notification-options/notification-options.component.ts +16 -0
  504. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.html +66 -0
  505. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.scss +62 -0
  506. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.spec.ts +25 -0
  507. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.ts +55 -0
  508. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.html +7 -0
  509. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.scss +90 -0
  510. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.ts +190 -0
  511. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.html +55 -0
  512. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.scss +108 -0
  513. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.ts +161 -0
  514. package/src/lib/components/notifications/interceptors/token.interceptor.ts +37 -0
  515. package/src/lib/components/notifications/notifications.module.ts +67 -0
  516. package/src/lib/components/notifications/notifications.service.ts +300 -0
  517. package/src/lib/components/pagination/pagination/pagination.component.html +33 -0
  518. package/src/lib/components/pagination/pagination/pagination.component.scss +46 -0
  519. package/src/lib/components/pagination/pagination/pagination.component.spec.ts +25 -0
  520. package/src/lib/components/pagination/pagination/pagination.component.ts +132 -0
  521. package/src/lib/components/pagination/pagination.module.ts +21 -0
  522. package/src/lib/components/pdf-tron/pdf-tron.module.ts +16 -0
  523. package/src/lib/components/pdf-tron/pdftron/pdftron.component.html +1 -0
  524. package/src/lib/components/pdf-tron/pdftron/pdftron.component.scss +0 -0
  525. package/src/lib/components/pdf-tron/pdftron/pdftron.component.spec.ts +25 -0
  526. package/src/lib/components/pdf-tron/pdftron/pdftron.component.ts +782 -0
  527. package/src/lib/components/pdf-tron/pdftron/pdftron.service.ts +236 -0
  528. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.html +149 -0
  529. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.scss +159 -0
  530. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.spec.ts +25 -0
  531. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.ts +198 -0
  532. package/src/lib/components/permissions/permission.service.ts +151 -0
  533. package/src/lib/components/permissions/permissions/permissions.component.html +129 -0
  534. package/src/lib/components/permissions/permissions/permissions.component.scss +0 -0
  535. package/src/lib/components/permissions/permissions/permissions.component.spec.ts +25 -0
  536. package/src/lib/components/permissions/permissions/permissions.component.ts +227 -0
  537. package/src/lib/components/permissions/permissions-template/permissions-template.component.html +47 -0
  538. package/src/lib/components/permissions/permissions-template/permissions-template.component.scss +7 -0
  539. package/src/lib/components/permissions/permissions-template/permissions-template.component.spec.ts +25 -0
  540. package/src/lib/components/permissions/permissions-template/permissions-template.component.ts +104 -0
  541. package/src/lib/components/permissions/permissions.module.ts +39 -0
  542. package/src/lib/components/select/select/select.component.html +64 -0
  543. package/src/lib/components/select/select/select.component.scss +144 -0
  544. package/src/lib/components/select/select/select.component.spec.ts +25 -0
  545. package/src/lib/components/select/select/select.component.ts +116 -0
  546. package/src/lib/components/select/select.module.ts +22 -0
  547. package/src/lib/components/select-users-by-department/select-users-by-department.module.ts +27 -0
  548. package/src/lib/components/select-users-by-department/select-users-by-departments/department-management.service.ts +27 -0
  549. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.html +88 -0
  550. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.scss +15 -0
  551. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.spec.ts +25 -0
  552. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.ts +105 -0
  553. package/src/lib/components/table/dynamic-column/dynamic-column.component.ts +79 -0
  554. package/src/lib/components/table/table/table.component.html +377 -0
  555. package/src/lib/components/table/table/table.component.scss +507 -0
  556. package/src/lib/components/table/table/table.component.spec.ts +25 -0
  557. package/src/lib/components/table/table/table.component.ts +195 -0
  558. package/src/lib/components/table/table.module.ts +35 -0
  559. package/src/lib/components/user/user/user.component.html +15 -0
  560. package/src/lib/components/user/user/user.component.scss +0 -0
  561. package/src/lib/components/user/user/user.component.spec.ts +25 -0
  562. package/src/lib/components/user/user/user.component.ts +19 -0
  563. package/src/lib/components/user/user.module.ts +18 -0
  564. package/src/lib/components/users-card/users-card.component.html +20 -0
  565. package/src/lib/components/users-card/users-card.component.scss +16 -0
  566. package/src/lib/components/users-card/users-card.component.ts +30 -0
  567. package/src/lib/components/users-card/users-card.module.ts +19 -0
  568. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.html +9 -0
  569. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.scss +12 -0
  570. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.spec.ts +25 -0
  571. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.ts +25 -0
  572. package/src/lib/components/viewer-log/viewer-log.module.ts +12 -0
  573. package/src/lib/components/vocabulary/interfaces/op-type.interface.ts +4 -0
  574. package/src/lib/components/vocabulary/services/vocabulary-api.service.ts +46 -0
  575. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.html +12 -0
  576. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.scss +0 -0
  577. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.spec.ts +25 -0
  578. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.ts +80 -0
  579. package/src/lib/components/vocabulary/vocabulary.module.ts +20 -0
  580. package/src/lib/configuration/app-config.service.ts +26 -0
  581. package/src/lib/configuration/configuration.module.ts +12 -0
  582. package/src/lib/configuration/helpers/app-initializer.ts +5 -0
  583. package/src/lib/directive/app-has-role/app-has-role.directive.ts +62 -0
  584. package/src/lib/directive/clickOutSide/click-outside.directive.ts +20 -0
  585. package/src/lib/directive/directive.module.ts +36 -0
  586. package/src/lib/directive/drag-and-drop/drag-and-drop.directive.ts +37 -0
  587. package/src/lib/directive/permissions/evaluators.service.ts +148 -0
  588. package/src/lib/directive/permissions/permissions.directive.ts +74 -0
  589. package/src/lib/directive/rtl/set-dir-rtl.directive.ts +25 -0
  590. package/src/lib/directive/rtl/set-rtl.directive.ts +26 -0
  591. package/src/lib/nuxeo-development-framework.component.ts +20 -0
  592. package/src/lib/nuxeo-development-framework.module.ts +31 -0
  593. package/src/lib/nuxeo-development-framework.service.ts +9 -0
  594. package/src/lib/pipes/file-size.pipe.ts +61 -0
  595. package/src/lib/pipes/hijri-date.pipe.ts +40 -0
  596. package/src/lib/pipes/localized-date.pipe.ts +80 -0
  597. package/src/lib/pipes/multi-value.pipe.ts +39 -0
  598. package/src/lib/pipes/pipes.module.ts +20 -0
  599. package/src/lib/pipes/secure-html.pipe.ts +27 -0
  600. package/src/lib/pipes/secure.pipe.ts +37 -0
  601. package/src/lib/pipes/time-ago.pipe.ts +68 -0
  602. package/src/lib/shared/components/button/button.component.html +13 -0
  603. package/src/lib/shared/components/button/button.component.scss +102 -0
  604. package/src/lib/shared/components/button/button.component.spec.ts +25 -0
  605. package/src/lib/shared/components/button/button.component.ts +87 -0
  606. package/src/lib/shared/components/item-list/item-list.component.html +37 -0
  607. package/src/lib/shared/components/item-list/item-list.component.scss +62 -0
  608. package/src/lib/shared/components/item-list/item-list.component.spec.ts +25 -0
  609. package/src/lib/shared/components/item-list/item-list.component.ts +69 -0
  610. package/src/lib/shared/components/no-data/no-data.component.html +3 -0
  611. package/src/lib/shared/components/no-data/no-data.component.scss +13 -0
  612. package/src/lib/shared/components/no-data/no-data.component.spec.ts +25 -0
  613. package/src/lib/shared/components/no-data/no-data.component.ts +26 -0
  614. package/src/lib/shared/components/read-more/read-more.component.ts +86 -0
  615. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.html +24 -0
  616. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.scss +50 -0
  617. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.spec.ts +25 -0
  618. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.ts +153 -0
  619. package/src/lib/shared/components/spinner/spinner.component.html +10 -0
  620. package/src/lib/shared/components/spinner/spinner.component.scss +11 -0
  621. package/src/lib/shared/components/spinner/spinner.component.spec.ts +25 -0
  622. package/src/lib/shared/components/spinner/spinner.component.ts +25 -0
  623. package/src/lib/shared/components/user-card/user-card.component.html +21 -0
  624. package/src/lib/shared/components/user-card/user-card.component.scss +42 -0
  625. package/src/lib/shared/components/user-card/user-card.component.spec.ts +25 -0
  626. package/src/lib/shared/components/user-card/user-card.component.ts +42 -0
  627. package/src/lib/shared/libraryShared.module.ts +47 -0
  628. package/src/lib/shared-services/dialog-mangment.service.ts +62 -0
  629. package/src/lib/shared-services/dynamic-form.service.ts +252 -0
  630. package/src/lib/shared-services/file-manager.adapter.ts +69 -0
  631. package/src/lib/shared-services/file-manager.service.ts +1073 -0
  632. package/src/lib/shared-services/global-pdftron.service.ts +50 -0
  633. package/src/lib/shared-services/mainfolder.service.ts +220 -0
  634. package/src/lib/shared-services/publishing-document.service.ts +242 -0
  635. package/src/lib/shared-services/recently-viewed.service.ts +55 -0
  636. package/src/lib/shared-services/shared-docs.service.ts +173 -0
  637. package/src/lib/shared-services/shared-services.module.ts +12 -0
  638. package/src/lib/shared-services/upload-file.service.ts +26 -0
  639. package/src/lib/shared-services/upload-managment.service.ts +148 -0
  640. package/src/lib/shared-services/user.service.ts +49 -0
  641. package/src/public-api.ts +274 -0
  642. package/src/test.ts +26 -0
  643. package/tsconfig.doc.json +4 -0
  644. package/tsconfig.lib.json +21 -0
  645. package/tsconfig.lib.prod.json +10 -0
  646. package/tsconfig.spec.json +17 -0
  647. package/tslint.json +17 -0
  648. package/bundles/nuxeo-development-framework.umd.js +0 -29331
  649. package/bundles/nuxeo-development-framework.umd.js.map +0 -1
  650. package/esm2015/lib/Core/adapters/adapter.service.js +0 -50
  651. package/esm2015/lib/Core/core.module.js +0 -107
  652. package/esm2015/lib/Core/enums/language.enum.js +0 -6
  653. package/esm2015/lib/Core/models/component.model.js +0 -8
  654. package/esm2015/lib/Core/services/callApi/call-api.service.js +0 -33
  655. package/esm2015/lib/Core/services/extension/action.extensions.js +0 -9
  656. package/esm2015/lib/Core/services/extension/component-register.service.js +0 -25
  657. package/esm2015/lib/Core/services/extension/extenion-utils.js +0 -115
  658. package/esm2015/lib/Core/services/extension/extension-element.js +0 -2
  659. package/esm2015/lib/Core/services/extension/extension-loader.service.js +0 -127
  660. package/esm2015/lib/Core/services/extension/extension.service.js +0 -120
  661. package/esm2015/lib/Core/services/initialization/initialization.service.js +0 -57
  662. package/esm2015/lib/Core/services/localStorag/local-storag.service.js +0 -123
  663. package/esm2015/lib/Core/services/nuxeo/nuxeo-override.js +0 -82
  664. package/esm2015/lib/Core/services/nuxeo/nuxeo.service.js +0 -120
  665. package/esm2015/lib/Core/services/roles/roles.service.js +0 -119
  666. package/esm2015/lib/Core/services/translation/translate-loader.service.js +0 -150
  667. package/esm2015/lib/Core/services/translation/translation.service.js +0 -174
  668. package/esm2015/lib/Core/services/user/user-preferences.service.js +0 -153
  669. package/esm2015/lib/Core/utilities/moment-date-adapter.js +0 -178
  670. package/esm2015/lib/Core/utilities/utility.service.js +0 -81
  671. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +0 -84
  672. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +0 -35
  673. package/esm2015/lib/components/activities-log/activities-log.module.js +0 -30
  674. package/esm2015/lib/components/activity/activity/activity.component.js +0 -28
  675. package/esm2015/lib/components/activity/activity.module.js +0 -37
  676. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +0 -54
  677. package/esm2015/lib/components/attachment-item/attachment-item.module.js +0 -44
  678. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +0 -40
  679. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +0 -157
  680. package/esm2015/lib/components/avatar/avatar/avatar.component.js +0 -55
  681. package/esm2015/lib/components/avatar/avatar.module.js +0 -32
  682. package/esm2015/lib/components/card/card.component.js +0 -48
  683. package/esm2015/lib/components/card/card.module.js +0 -23
  684. package/esm2015/lib/components/comments/comments.module.js +0 -82
  685. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +0 -86
  686. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +0 -81
  687. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +0 -73
  688. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +0 -63
  689. package/esm2015/lib/components/comments/constants/comment.js +0 -25
  690. package/esm2015/lib/components/comments/services/comment-api.service.js +0 -71
  691. package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +0 -75
  692. package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +0 -27
  693. package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +0 -29
  694. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +0 -30
  695. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +0 -30
  696. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +0 -137
  697. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +0 -133
  698. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +0 -110
  699. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +0 -68
  700. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +0 -75
  701. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +0 -111
  702. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +0 -153
  703. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +0 -50
  704. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +0 -69
  705. package/esm2015/lib/components/create-entity/create-entity.module.js +0 -36
  706. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +0 -140
  707. package/esm2015/lib/components/cts-tags/cts-tags.module.js +0 -65
  708. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +0 -90
  709. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +0 -82
  710. package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +0 -36
  711. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +0 -2
  712. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +0 -41
  713. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +0 -44
  714. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +0 -140
  715. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +0 -24
  716. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +0 -156
  717. package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +0 -75
  718. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +0 -252
  719. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +0 -974
  720. package/esm2015/lib/components/documents/components/document-scan/document-scan.service.js +0 -30
  721. package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +0 -159
  722. package/esm2015/lib/components/documents/components/documents/documents.component.js +0 -63
  723. package/esm2015/lib/components/documents/constants/document-templates.js +0 -32
  724. package/esm2015/lib/components/documents/constants/documents.js +0 -86
  725. package/esm2015/lib/components/documents/documents.module.js +0 -123
  726. package/esm2015/lib/components/documents/services/document-templates.service.js +0 -115
  727. package/esm2015/lib/components/documents/services/documents.service.js +0 -223
  728. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +0 -391
  729. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +0 -34
  730. package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +0 -164
  731. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +0 -552
  732. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +0 -177
  733. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +0 -43
  734. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +0 -137
  735. package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +0 -27
  736. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +0 -130
  737. package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +0 -105
  738. package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +0 -127
  739. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +0 -107
  740. package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +0 -35
  741. package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +0 -165
  742. package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +0 -71
  743. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +0 -202
  744. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +0 -78
  745. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +0 -13
  746. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +0 -204
  747. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +0 -203
  748. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +0 -95
  749. package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +0 -85
  750. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +0 -139
  751. package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +0 -81
  752. package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +0 -36
  753. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +0 -106
  754. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +0 -93
  755. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +0 -207
  756. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +0 -311
  757. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +0 -44
  758. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +0 -191
  759. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +0 -81
  760. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +0 -180
  761. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +0 -279
  762. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +0 -68
  763. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +0 -314
  764. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +0 -47
  765. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +0 -178
  766. package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +0 -768
  767. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +0 -35
  768. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +0 -17
  769. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +0 -34
  770. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +0 -17
  771. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +0 -74
  772. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.js +0 -30
  773. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +0 -32
  774. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +0 -30
  775. package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +0 -17
  776. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +0 -299
  777. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +0 -2
  778. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +0 -2
  779. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +0 -2
  780. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +0 -2
  781. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +0 -2
  782. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +0 -2
  783. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +0 -2
  784. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +0 -2
  785. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +0 -2
  786. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +0 -10
  787. package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +0 -63
  788. package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +0 -20
  789. package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +0 -24
  790. package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +0 -12
  791. package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +0 -16
  792. package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +0 -17
  793. package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +0 -32
  794. package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +0 -8
  795. package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +0 -46
  796. package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +0 -60
  797. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +0 -83
  798. package/esm2015/lib/components/dynamic-form/validators/length-validator.js +0 -15
  799. package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +0 -15
  800. package/esm2015/lib/components/dynamic-form/validators/required-validator.js +0 -9
  801. package/esm2015/lib/components/dynamic-form/validators/value-validator.js +0 -15
  802. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +0 -323
  803. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +0 -61
  804. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +0 -238
  805. package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +0 -44
  806. package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +0 -16
  807. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +0 -39
  808. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +0 -34
  809. package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +0 -36
  810. package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +0 -59
  811. package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +0 -68
  812. package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +0 -33
  813. package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +0 -33
  814. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +0 -55
  815. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +0 -89
  816. package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +0 -61
  817. package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +0 -69
  818. package/esm2015/lib/components/dynamic-view/dynamic-viewe.service.js +0 -62
  819. package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +0 -40
  820. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +0 -132
  821. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +0 -264
  822. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +0 -121
  823. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +0 -91
  824. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +0 -455
  825. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +0 -26
  826. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +0 -74
  827. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +0 -114
  828. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +0 -80
  829. package/esm2015/lib/components/file-manger/components/move/move.component.js +0 -110
  830. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +0 -108
  831. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +0 -86
  832. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +0 -314
  833. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +0 -294
  834. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +0 -257
  835. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +0 -64
  836. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +0 -71
  837. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +0 -358
  838. package/esm2015/lib/components/file-manger/file-manager.abstract.js +0 -1035
  839. package/esm2015/lib/components/file-manger/file-manger.module.js +0 -295
  840. package/esm2015/lib/components/filter/filter/filter.component.js +0 -94
  841. package/esm2015/lib/components/filter/filter.module.js +0 -45
  842. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +0 -123
  843. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +0 -126
  844. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +0 -165
  845. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +0 -32
  846. package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +0 -58
  847. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +0 -71
  848. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +0 -30
  849. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +0 -43
  850. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +0 -26
  851. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +0 -5
  852. package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +0 -75
  853. package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +0 -70
  854. package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +0 -27
  855. package/esm2015/lib/components/latest-activity/constants/activitylog.js +0 -80
  856. package/esm2015/lib/components/latest-activity/latest-activity.module.js +0 -57
  857. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +0 -33
  858. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +0 -51
  859. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +0 -30
  860. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +0 -137
  861. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +0 -22
  862. package/esm2015/lib/components/notifications/components/notification-toast/notification-toast.component.js +0 -57
  863. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +0 -172
  864. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +0 -164
  865. package/esm2015/lib/components/notifications/notifications.module.js +0 -109
  866. package/esm2015/lib/components/notifications/notifications.service.js +0 -280
  867. package/esm2015/lib/components/pagination/pagination/pagination.component.js +0 -124
  868. package/esm2015/lib/components/pagination/pagination.module.js +0 -32
  869. package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +0 -24
  870. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +0 -745
  871. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +0 -239
  872. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +0 -177
  873. package/esm2015/lib/components/permissions/permission.service.js +0 -118
  874. package/esm2015/lib/components/permissions/permissions/permissions.component.js +0 -232
  875. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +0 -117
  876. package/esm2015/lib/components/permissions/permissions.module.js +0 -71
  877. package/esm2015/lib/components/select/select/select.component.js +0 -130
  878. package/esm2015/lib/components/select/select.module.js +0 -37
  879. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +0 -47
  880. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +0 -27
  881. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +0 -116
  882. package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +0 -64
  883. package/esm2015/lib/components/table/table/table.component.js +0 -227
  884. package/esm2015/lib/components/table/table.module.js +0 -61
  885. package/esm2015/lib/components/user/user/user.component.js +0 -31
  886. package/esm2015/lib/components/user/user.module.js +0 -30
  887. package/esm2015/lib/components/users-card/users-card.component.js +0 -43
  888. package/esm2015/lib/components/users-card/users-card.module.js +0 -28
  889. package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +0 -33
  890. package/esm2015/lib/components/viewer-log/viewer-log.module.js +0 -20
  891. package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +0 -2
  892. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +0 -49
  893. package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +0 -106
  894. package/esm2015/lib/components/vocabulary/vocabulary.module.js +0 -34
  895. package/esm2015/lib/configuration/app-config.service.js +0 -30
  896. package/esm2015/lib/configuration/helpers/app-initializer.js +0 -4
  897. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +0 -61
  898. package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +0 -29
  899. package/esm2015/lib/directive/directive.module.js +0 -52
  900. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +0 -46
  901. package/esm2015/lib/directive/permissions/evaluators.service.js +0 -152
  902. package/esm2015/lib/directive/permissions/permissions.directive.js +0 -69
  903. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +0 -28
  904. package/esm2015/lib/directive/rtl/set-rtl.directive.js +0 -29
  905. package/esm2015/lib/nuxeo-development-framework.component.js +0 -26
  906. package/esm2015/lib/nuxeo-development-framework.module.js +0 -50
  907. package/esm2015/lib/nuxeo-development-framework.service.js +0 -14
  908. package/esm2015/lib/pipes/file-size.pipe.js +0 -57
  909. package/esm2015/lib/pipes/hijri-date.pipe.js +0 -46
  910. package/esm2015/lib/pipes/localized-date.pipe.js +0 -81
  911. package/esm2015/lib/pipes/multi-value.pipe.js +0 -42
  912. package/esm2015/lib/pipes/pipes.module.js +0 -29
  913. package/esm2015/lib/pipes/secure-html.pipe.js +0 -34
  914. package/esm2015/lib/pipes/secure.pipe.js +0 -40
  915. package/esm2015/lib/pipes/time-ago.pipe.js +0 -68
  916. package/esm2015/lib/shared/components/button/button.component.js +0 -87
  917. package/esm2015/lib/shared/components/item-list/item-list.component.js +0 -77
  918. package/esm2015/lib/shared/components/no-data/no-data.component.js +0 -37
  919. package/esm2015/lib/shared/components/read-more/read-more.component.js +0 -108
  920. package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +0 -146
  921. package/esm2015/lib/shared/components/spinner/spinner.component.js +0 -29
  922. package/esm2015/lib/shared/components/user-card/user-card.component.js +0 -49
  923. package/esm2015/lib/shared/libraryShared.module.js +0 -81
  924. package/esm2015/lib/shared-services/dialog-mangment.service.js +0 -61
  925. package/esm2015/lib/shared-services/dynamic-form.service.js +0 -241
  926. package/esm2015/lib/shared-services/file-manager.adapter.js +0 -74
  927. package/esm2015/lib/shared-services/file-manager.service.js +0 -792
  928. package/esm2015/lib/shared-services/global-pdftron.service.js +0 -46
  929. package/esm2015/lib/shared-services/mainfolder.service.js +0 -162
  930. package/esm2015/lib/shared-services/publishing-document.service.js +0 -202
  931. package/esm2015/lib/shared-services/recently-viewed.service.js +0 -57
  932. package/esm2015/lib/shared-services/shared-docs.service.js +0 -135
  933. package/esm2015/lib/shared-services/shared-services.module.js +0 -20
  934. package/esm2015/lib/shared-services/upload-file.service.js +0 -29
  935. package/esm2015/lib/shared-services/upload-managment.service.js +0 -151
  936. package/esm2015/lib/shared-services/user.service.js +0 -54
  937. package/esm2015/nuxeo-development-framework.js +0 -5
  938. package/esm2015/public-api.js +0 -237
  939. package/fesm2015/nuxeo-development-framework.js +0 -27318
  940. package/fesm2015/nuxeo-development-framework.js.map +0 -1
  941. package/lib/Core/adapters/adapter.service.d.ts +0 -11
  942. package/lib/Core/core.module.d.ts +0 -14
  943. package/lib/Core/enums/language.enum.d.ts +0 -4
  944. package/lib/Core/models/component.model.d.ts +0 -6
  945. package/lib/Core/services/callApi/call-api.service.d.ts +0 -11
  946. package/lib/Core/services/extension/action.extensions.d.ts +0 -31
  947. package/lib/Core/services/extension/component-register.service.d.ts +0 -17
  948. package/lib/Core/services/extension/extenion-utils.d.ts +0 -14
  949. package/lib/Core/services/extension/extension-element.d.ts +0 -5
  950. package/lib/Core/services/extension/extension-loader.service.d.ts +0 -28
  951. package/lib/Core/services/extension/extension.service.d.ts +0 -70
  952. package/lib/Core/services/initialization/initialization.service.d.ts +0 -14
  953. package/lib/Core/services/localStorag/local-storag.service.d.ts +0 -41
  954. package/lib/Core/services/nuxeo/nuxeo-override.d.ts +0 -8
  955. package/lib/Core/services/nuxeo/nuxeo.service.d.ts +0 -33
  956. package/lib/Core/services/roles/roles.service.d.ts +0 -12
  957. package/lib/Core/services/translation/translate-loader.service.d.ts +0 -26
  958. package/lib/Core/services/translation/translation.service.d.ts +0 -74
  959. package/lib/Core/services/user/user-preferences.service.d.ts +0 -80
  960. package/lib/Core/utilities/moment-date-adapter.d.ts +0 -37
  961. package/lib/Core/utilities/utility.service.d.ts +0 -11
  962. package/lib/components/activities-log/activities-log/activities-log.component.d.ts +0 -23
  963. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +0 -9
  964. package/lib/components/activities-log/activities-log.module.d.ts +0 -10
  965. package/lib/components/activity/activity/activity.component.d.ts +0 -13
  966. package/lib/components/activity/activity.module.d.ts +0 -13
  967. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +0 -21
  968. package/lib/components/attachment-item/attachment-item.module.d.ts +0 -13
  969. package/lib/components/attachment-modal/attachment-modal.module.d.ts +0 -12
  970. package/lib/components/attachment-modal/attachments/attachments.component.d.ts +0 -50
  971. package/lib/components/avatar/avatar/avatar.component.d.ts +0 -23
  972. package/lib/components/avatar/avatar.module.d.ts +0 -13
  973. package/lib/components/card/card.component.d.ts +0 -32
  974. package/lib/components/card/card.module.d.ts +0 -12
  975. package/lib/components/comments/comments.module.d.ts +0 -26
  976. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +0 -24
  977. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +0 -46
  978. package/lib/components/comments/components/comments-list/comments-list.component.d.ts +0 -28
  979. package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +0 -22
  980. package/lib/components/comments/constants/comment.d.ts +0 -25
  981. package/lib/components/comments/services/comment-api.service.d.ts +0 -16
  982. package/lib/components/confirm-caller/confirm-caller.dialog.d.ts +0 -46
  983. package/lib/components/confirm-caller/confirm-caller.module.d.ts +0 -16
  984. package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts +0 -12
  985. package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +0 -12
  986. package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +0 -10
  987. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +0 -34
  988. package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +0 -42
  989. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +0 -31
  990. package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts +0 -18
  991. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +0 -38
  992. package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +0 -30
  993. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +0 -26
  994. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +0 -18
  995. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +0 -17
  996. package/lib/components/create-entity/create-entity.module.d.ts +0 -11
  997. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +0 -38
  998. package/lib/components/cts-tags/cts-tags.module.d.ts +0 -21
  999. package/lib/components/cts-tags/services/tags-api.service.d.ts +0 -17
  1000. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +0 -30
  1001. package/lib/components/custom-toastr/custom-toastr.module.d.ts +0 -12
  1002. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +0 -1
  1003. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +0 -18
  1004. package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +0 -17
  1005. package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +0 -8
  1006. package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +0 -8
  1007. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +0 -54
  1008. package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts +0 -38
  1009. package/lib/components/documents/components/document-list/documents-list.component.d.ts +0 -81
  1010. package/lib/components/documents/components/document-scan/document-scan.component.d.ts +0 -112
  1011. package/lib/components/documents/components/document-scan/document-scan.service.d.ts +0 -14
  1012. package/lib/components/documents/components/document-upload/document-upload.component.d.ts +0 -58
  1013. package/lib/components/documents/components/documents/documents.component.d.ts +0 -27
  1014. package/lib/components/documents/constants/document-templates.d.ts +0 -33
  1015. package/lib/components/documents/constants/documents.d.ts +0 -95
  1016. package/lib/components/documents/documents.module.d.ts +0 -33
  1017. package/lib/components/documents/services/document-templates.service.d.ts +0 -24
  1018. package/lib/components/documents/services/documents.service.d.ts +0 -36
  1019. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +0 -66
  1020. package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +0 -16
  1021. package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +0 -33
  1022. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +0 -37
  1023. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +0 -137
  1024. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +0 -12
  1025. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +0 -55
  1026. package/lib/components/dynamic-filter/dynamic-filter.module.d.ts +0 -17
  1027. package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +0 -28
  1028. package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +0 -27
  1029. package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts +0 -6
  1030. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +0 -21
  1031. package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts +0 -17
  1032. package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts +0 -57
  1033. package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts +0 -35
  1034. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +0 -70
  1035. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +0 -52
  1036. package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts +0 -12
  1037. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +0 -76
  1038. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +0 -29
  1039. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +0 -21
  1040. package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +0 -30
  1041. package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +0 -64
  1042. package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts +0 -25
  1043. package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts +0 -15
  1044. package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts +0 -45
  1045. package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts +0 -41
  1046. package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts +0 -65
  1047. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +0 -85
  1048. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +0 -13
  1049. package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts +0 -80
  1050. package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts +0 -40
  1051. package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts +0 -71
  1052. package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts +0 -89
  1053. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +0 -19
  1054. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +0 -104
  1055. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +0 -16
  1056. package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts +0 -79
  1057. package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +0 -599
  1058. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts +0 -13
  1059. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts +0 -2
  1060. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts +0 -13
  1061. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts +0 -2
  1062. package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.d.ts +0 -16
  1063. package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.d.ts +0 -2
  1064. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts +0 -13
  1065. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts +0 -2
  1066. package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts +0 -9
  1067. package/lib/components/dynamic-form/dynamic-form.module.d.ts +0 -66
  1068. package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts +0 -5
  1069. package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts +0 -5
  1070. package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts +0 -15
  1071. package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts +0 -4
  1072. package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts +0 -12
  1073. package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts +0 -8
  1074. package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts +0 -10
  1075. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts +0 -5
  1076. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts +0 -8
  1077. package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts +0 -21
  1078. package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts +0 -11
  1079. package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts +0 -13
  1080. package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts +0 -9
  1081. package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts +0 -8
  1082. package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts +0 -11
  1083. package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts +0 -15
  1084. package/lib/components/dynamic-form/services/card-item-types.service.d.ts +0 -13
  1085. package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts +0 -36
  1086. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +0 -25
  1087. package/lib/components/dynamic-form/validators/length-validator.d.ts +0 -7
  1088. package/lib/components/dynamic-form/validators/regex-validator.d.ts +0 -7
  1089. package/lib/components/dynamic-form/validators/required-validator.d.ts +0 -5
  1090. package/lib/components/dynamic-form/validators/value-validator.d.ts +0 -7
  1091. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +0 -98
  1092. package/lib/components/dynamic-search/dynamic-search.module.d.ts +0 -20
  1093. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +0 -108
  1094. package/lib/components/dynamic-table/dynamic-table.module.d.ts +0 -16
  1095. package/lib/components/dynamic-table/services/dynamic-table.service.d.ts +0 -8
  1096. package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +0 -13
  1097. package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +0 -11
  1098. package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts +0 -13
  1099. package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts +0 -22
  1100. package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts +0 -28
  1101. package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts +0 -16
  1102. package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +0 -12
  1103. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +0 -22
  1104. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +0 -30
  1105. package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts +0 -37
  1106. package/lib/components/dynamic-view/dynamic-view.module.d.ts +0 -23
  1107. package/lib/components/dynamic-view/dynamic-viewe.service.d.ts +0 -15
  1108. package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts +0 -20
  1109. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +0 -31
  1110. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +0 -41
  1111. package/lib/components/file-manger/components/copy/copy.component.d.ts +0 -33
  1112. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +0 -24
  1113. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +0 -108
  1114. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +0 -11
  1115. package/lib/components/file-manger/components/delete/delete.component.d.ts +0 -24
  1116. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +0 -56
  1117. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +0 -23
  1118. package/lib/components/file-manger/components/move/move.component.d.ts +0 -33
  1119. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +0 -32
  1120. package/lib/components/file-manger/components/rename/rename.component.d.ts +0 -24
  1121. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +0 -95
  1122. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +0 -58
  1123. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +0 -62
  1124. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +0 -34
  1125. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +0 -23
  1126. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +0 -194
  1127. package/lib/components/file-manger/file-manager.abstract.d.ts +0 -173
  1128. package/lib/components/file-manger/file-manger.module.d.ts +0 -59
  1129. package/lib/components/filter/filter/filter.component.d.ts +0 -31
  1130. package/lib/components/filter/filter.module.d.ts +0 -15
  1131. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +0 -35
  1132. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +0 -35
  1133. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +0 -39
  1134. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts +0 -9
  1135. package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts +0 -15
  1136. package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts +0 -15
  1137. package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts +0 -9
  1138. package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts +0 -11
  1139. package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts +0 -10
  1140. package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts +0 -4
  1141. package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts +0 -19
  1142. package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts +0 -22
  1143. package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts +0 -10
  1144. package/lib/components/latest-activity/constants/activitylog.d.ts +0 -82
  1145. package/lib/components/latest-activity/latest-activity.module.d.ts +0 -19
  1146. package/lib/components/latest-activity/services/activity-log.service.d.ts +0 -12
  1147. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +0 -17
  1148. package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +0 -10
  1149. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +0 -25
  1150. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +0 -10
  1151. package/lib/components/notifications/components/notification-toast/notification-toast.component.d.ts +0 -19
  1152. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +0 -30
  1153. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +0 -51
  1154. package/lib/components/notifications/notifications.module.d.ts +0 -24
  1155. package/lib/components/notifications/notifications.service.d.ts +0 -64
  1156. package/lib/components/pagination/pagination/pagination.component.d.ts +0 -46
  1157. package/lib/components/pagination/pagination.module.d.ts +0 -13
  1158. package/lib/components/pdf-tron/pdf-tron.module.d.ts +0 -8
  1159. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +0 -102
  1160. package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts +0 -33
  1161. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +0 -44
  1162. package/lib/components/permissions/permission.service.d.ts +0 -21
  1163. package/lib/components/permissions/permissions/permissions.component.d.ts +0 -48
  1164. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +0 -22
  1165. package/lib/components/permissions/permissions.module.d.ts +0 -21
  1166. package/lib/components/select/select/select.component.d.ts +0 -43
  1167. package/lib/components/select/select.module.d.ts +0 -12
  1168. package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +0 -13
  1169. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +0 -10
  1170. package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +0 -33
  1171. package/lib/components/table/dynamic-column/dynamic-column.component.d.ts +0 -19
  1172. package/lib/components/table/table/table.component.d.ts +0 -108
  1173. package/lib/components/table/table.module.d.ts +0 -20
  1174. package/lib/components/user/user/user.component.d.ts +0 -13
  1175. package/lib/components/user/user.module.d.ts +0 -10
  1176. package/lib/components/users-card/users-card.component.d.ts +0 -22
  1177. package/lib/components/users-card/users-card.module.d.ts +0 -17
  1178. package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts +0 -12
  1179. package/lib/components/viewer-log/viewer-log.module.d.ts +0 -10
  1180. package/lib/components/vocabulary/interfaces/op-type.interface.d.ts +0 -1
  1181. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +0 -16
  1182. package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts +0 -37
  1183. package/lib/components/vocabulary/vocabulary.module.d.ts +0 -11
  1184. package/lib/configuration/app-config.service.d.ts +0 -14
  1185. package/lib/configuration/helpers/app-initializer.d.ts +0 -2
  1186. package/lib/directive/app-has-role/app-has-role.directive.d.ts +0 -18
  1187. package/lib/directive/clickOutSide/click-outside.directive.d.ts +0 -11
  1188. package/lib/directive/directive.module.d.ts +0 -17
  1189. package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +0 -11
  1190. package/lib/directive/permissions/evaluators.service.d.ts +0 -37
  1191. package/lib/directive/permissions/permissions.directive.d.ts +0 -42
  1192. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +0 -13
  1193. package/lib/directive/rtl/set-rtl.directive.d.ts +0 -13
  1194. package/lib/nuxeo-development-framework.component.d.ts +0 -8
  1195. package/lib/nuxeo-development-framework.module.d.ts +0 -13
  1196. package/lib/nuxeo-development-framework.service.d.ts +0 -6
  1197. package/lib/pipes/file-size.pipe.d.ts +0 -34
  1198. package/lib/pipes/hijri-date.pipe.d.ts +0 -32
  1199. package/lib/pipes/localized-date.pipe.d.ts +0 -44
  1200. package/lib/pipes/multi-value.pipe.d.ts +0 -32
  1201. package/lib/pipes/pipes.module.d.ts +0 -18
  1202. package/lib/pipes/secure-html.pipe.d.ts +0 -26
  1203. package/lib/pipes/secure.pipe.d.ts +0 -29
  1204. package/lib/pipes/time-ago.pipe.d.ts +0 -34
  1205. package/lib/shared/components/button/button.component.d.ts +0 -38
  1206. package/lib/shared/components/item-list/item-list.component.d.ts +0 -45
  1207. package/lib/shared/components/no-data/no-data.component.d.ts +0 -21
  1208. package/lib/shared/components/read-more/read-more.component.d.ts +0 -37
  1209. package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts +0 -51
  1210. package/lib/shared/components/spinner/spinner.component.d.ts +0 -18
  1211. package/lib/shared/components/user-card/user-card.component.d.ts +0 -30
  1212. package/lib/shared/libraryShared.module.d.ts +0 -26
  1213. package/lib/shared-services/dialog-mangment.service.d.ts +0 -15
  1214. package/lib/shared-services/dynamic-form.service.d.ts +0 -24
  1215. package/lib/shared-services/file-manager.adapter.d.ts +0 -48
  1216. package/lib/shared-services/file-manager.service.d.ts +0 -93
  1217. package/lib/shared-services/global-pdftron.service.d.ts +0 -10
  1218. package/lib/shared-services/mainfolder.service.d.ts +0 -32
  1219. package/lib/shared-services/publishing-document.service.d.ts +0 -25
  1220. package/lib/shared-services/recently-viewed.service.d.ts +0 -17
  1221. package/lib/shared-services/shared-docs.service.d.ts +0 -21
  1222. package/lib/shared-services/shared-services.module.d.ts +0 -7
  1223. package/lib/shared-services/upload-file.service.d.ts +0 -10
  1224. package/lib/shared-services/upload-managment.service.d.ts +0 -72
  1225. package/lib/shared-services/user.service.d.ts +0 -12
  1226. package/nuxeo-development-framework.d.ts +0 -5
  1227. package/public-api.d.ts +0 -224
  1228. /package/{lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts → src/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.ts} +0 -0
  1229. /package/{lib/components/dynamic-form/models/dynamic-form.models.d.ts → src/lib/components/dynamic-form/models/dynamic-form.models.ts} +0 -0
@@ -1,745 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, Inject, Input, Output, ViewChild, } from '@angular/core';
3
- import WebViewer from '@pdftron/webviewer';
4
- import { APP_BASE_HREF } from '@angular/common';
5
- import { SecurePipe } from '../../../pipes/secure.pipe';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./pdftron.service";
8
- import * as i2 from "../../../Core/services/nuxeo/nuxeo.service";
9
- import * as i3 from "../../../pipes/secure.pipe";
10
- import * as i4 from "../../../Core/services/translation/translation.service";
11
- /**
12
- * A reusable file viewer based on PDFTron Library
13
- * @title
14
- * PDFTron Viewer
15
- * @example
16
- * <app-pdftron
17
- * [fileData]="fileData"
18
- * [editMode]="false"
19
- * [docId]="fileId"
20
- * [fileTitle]="file.title"
21
- * >
22
- * </app-pdftron>
23
- */
24
- export class PdftronComponent {
25
- constructor(cdr, pdftronService, nuxeo, baseHref, securePipe, translationService, environment) {
26
- this.cdr = cdr;
27
- this.pdftronService = pdftronService;
28
- this.nuxeo = nuxeo;
29
- this.baseHref = baseHref;
30
- this.securePipe = securePipe;
31
- this.translationService = translationService;
32
- this.environment = environment;
33
- this.actionClicked = false; // used to know if there is action clicked outside to start edit mode or not
34
- this.DOCUMENT_TYPE = 'application/pdf';
35
- this.fitMode = 'FitWidth';
36
- this.searchString = ''; // string to search for it in the document
37
- this.trackSignature = false; // to enable tracking signature position and emit it after every change it signature
38
- this.onSignatureTracking = new EventEmitter(); // event to emit signature changes
39
- this.useOutsideAnotations = false; // flage to indicat if using out side anotations or not
40
- this.onAddingAnotation = new EventEmitter(); // used to export all anotations to outside
41
- this.events = new EventEmitter();
42
- this.SignatureEvent = new EventEmitter(); // used to export signature to outside
43
- this.firstTimeLoad = true; //flage to control importing signatures in the first time load only
44
- this.firstSignatureLoad = true; // flage to pass first load of imported signatures without emitting the event
45
- this.newSignCreation = false; // flage to indicate signature creation is created or choosed from stored ones
46
- this.savedAnotations = [];
47
- this.fileWithOcr = false;
48
- this.newAnnotations = [];
49
- this.mySearchStringResults = [];
50
- this.recivedSearchStringsArray = [];
51
- this.searchFn = (searchValue, options) => {
52
- this.mySearchStringResults = [];
53
- if (this.savedAnotations.length > 0) {
54
- this.savedAnotations.map(annotation => {
55
- annotation.Hidden = true;
56
- // Always redraw annotation if rendering was updated
57
- this.webViewerInstance.annotManager.redrawAnnotation(annotation);
58
- });
59
- }
60
- // don't do any search until there is a search pattern
61
- if (searchValue.trim().length > 0) {
62
- if (this.fileWithOcr) {
63
- // add redaction annotation for each search result
64
- // const annotation = new Annotations.TextHighlightAnnotation();
65
- let mySearch = searchValue.split(' ');
66
- if (mySearch.length > 1) {
67
- // then i am searching with more than one word
68
- this.pages.pages.forEach((page, index) => {
69
- this.pageHeight = page.page_height;
70
- this.pageWidth = page.page_width;
71
- this.standardHeight = this.webViewerInstance.docViewer.getPageHeight((index + 1));
72
- this.standardWidth = this.webViewerInstance.docViewer.getPageWidth((index + 1));
73
- page.zones.forEach(zone => {
74
- zone.paragraphs.forEach(paragraph => {
75
- paragraph.lines.forEach(line => {
76
- if (line.text.includes(searchValue)) {
77
- this.SearchForWordInLine(mySearch, line, (index + 1), page);
78
- }
79
- });
80
- });
81
- });
82
- });
83
- }
84
- else {
85
- // then i am searching with only one word
86
- this.searchForWordInAllPages(searchValue);
87
- }
88
- this.webViewerInstance.docViewer.clearSearchResults();
89
- this.dispalaySearchResults(this.webViewerInstance.docViewer);
90
- }
91
- }
92
- else {
93
- this.webViewerInstance.docViewer.clearSearchResults();
94
- }
95
- };
96
- }
97
- ngOnInit() {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- this.transelationSubscrition = this.translationService.isArabic.subscribe(res => {
100
- this.isArabic = res;
101
- });
102
- });
103
- }
104
- ngAfterViewInit() {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- this.recivedSearchStringsArray = this.searchString.trim() ? this.searchString.split(',') : [];
107
- if (this.fileTitle.endsWith('.ppt')) {
108
- this.DOCUMENT_TYPE = 'application/vnd.ms-powerpoint';
109
- }
110
- else if (this.fileTitle.endsWith('.pptx')) {
111
- this.DOCUMENT_TYPE =
112
- 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
113
- }
114
- else if (this.fileTitle.endsWith('.doc')) {
115
- this.DOCUMENT_TYPE = 'application/msword';
116
- }
117
- else if (this.fileTitle.endsWith('.docx')) {
118
- this.DOCUMENT_TYPE =
119
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
120
- }
121
- WebViewer({
122
- path: this.baseHref + '/assets/pdftrons',
123
- forceClientSideInit: true,
124
- streaming: true,
125
- licenseKey: this.environment.pdftronLicenceKey,
126
- css: this.isArabic ? (this.baseHref + '/assets/styles/ar-mypdftron.css') : (this.baseHref + '/assets/styles/en-mypdftron.css'),
127
- annotationUser: this.nuxeo.nuxeoClient.user.properties.firstName + ' ' + this.nuxeo.nuxeoClient.user.properties.lastName,
128
- disabledElements: ['downloadButton', 'printButton'],
129
- }, this.viewerRef.nativeElement).then((instance) => __awaiter(this, void 0, void 0, function* () {
130
- this.isArabic ? instance.setLanguage('ar') : instance.setLanguage('en');
131
- this.pdftronService.instance = this.webViewerInstance = instance;
132
- if (this.correspondance.facets.indexOf('ctocr') > -1) {
133
- this.fileWithOcr = true;
134
- this.pages = JSON.parse(this.correspondance.properties['ctocr:recognizedJson']);
135
- // override search funtion to use our search in ocr not defult search
136
- instance.overrideSearchExecution(this.searchFn);
137
- }
138
- else {
139
- // if no ocr then add search lisner to lisne to internal search and catch results
140
- this.addSearchListner();
141
- }
142
- this.addPrintButton();
143
- this.addDownloadButton();
144
- this.importSignature();
145
- this.exportingSignature();
146
- this.deleteAnnotation();
147
- this.exportingSavedSignature();
148
- if (this.useOutsideAnotations) {
149
- this.importAnotationsFromOutside();
150
- this.exportAnotationsToOutside();
151
- }
152
- this.webViewerInstance.docViewer.setSearchHighlightColors({
153
- // setSearchHighlightColors accepts both Annotations.Color objects or 'rgba' strings
154
- searchResult: new this.webViewerInstance.Annotations.Color(250, 206, 0, 0.50196),
155
- activeSearchResult: new this.webViewerInstance.Annotations.Color(250, 206, 0, 0.50196),
156
- });
157
- if (this.recivedSearchStringsArray.length !== 0) {
158
- this.automaticSearch(this.recivedSearchStringsArray);
159
- }
160
- this.loadDocument();
161
- }));
162
- });
163
- }
164
- importAnotationsFromOutside() {
165
- const documentViewer = this.webViewerInstance.docViewer;
166
- documentViewer.on('documentLoaded', () => {
167
- this.webViewerInstance.annotManager.importAnnotations(this.importedAnotations);
168
- });
169
- // .then(annotations => {
170
- // annotations.forEach(annotation => {
171
- // this.webViewerInstance.annotManager.redrawAnnotation(annotation);
172
- // });
173
- // });
174
- }
175
- // exctract all anotations on the file and send it out side to be saved and leave the file as it is without any anotations on it
176
- exportAnotationsToOutside() {
177
- this.webViewerInstance.annotManager.on('annotationChanged', (annotations, action, { imported }) => {
178
- if (imported)
179
- return;
180
- this.webViewerInstance.annotManager.exportAnnotations().then(exctractedAnotations => {
181
- this.onAddingAnotation.emit(exctractedAnotations);
182
- });
183
- // if tracking signature location is enable then emit signature outside with every changes in it
184
- if (this.trackSignature) {
185
- this.onSignatureTracking.emit({ anotations: annotations, action: action });
186
- }
187
- });
188
- }
189
- importSignature() {
190
- const documentViewer = this.webViewerInstance.docViewer;
191
- const signatureTool = documentViewer.getTool('AnnotationCreateSignature');
192
- documentViewer.on('documentLoaded', () => {
193
- if (this.firstTimeLoad) {
194
- signatureTool.importSignatures([...this.userSignatures]);
195
- this.firstTimeLoad = false;
196
- }
197
- });
198
- }
199
- exportingSavedSignature() {
200
- const documentViewer = this.webViewerInstance.docViewer;
201
- const SignatureCreateTool = documentViewer.getTool('AnnotationCreateSignature');
202
- SignatureCreateTool.on('signatureSaved', (annotation) => {
203
- if (!this.firstSignatureLoad) {
204
- console.log('signature saved trigered');
205
- this.newSignCreation = true;
206
- }
207
- this.firstSignatureLoad = false;
208
- });
209
- ;
210
- }
211
- exportingSignature() {
212
- const documentViewer = this.webViewerInstance.docViewer;
213
- const SignatureCreateTool = documentViewer.getTool('AnnotationCreateSignature');
214
- SignatureCreateTool.on('annotationAdded', (annotation) => {
215
- if (annotation && this.newSignCreation) {
216
- this.newSignCreation = false;
217
- this.extractAnotation(annotation, documentViewer);
218
- console.log(annotation);
219
- }
220
- });
221
- ;
222
- }
223
- extractAnotation(annotation, documentViewer) {
224
- if (annotation['image']) {
225
- // convert base64 signature into file and emit it to out side
226
- let base64Img = annotation['image']['currentSrc'];
227
- var arr = base64Img.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
228
- while (n--) {
229
- u8arr[n] = bstr.charCodeAt(n);
230
- }
231
- let name = mime.replace('/', '.');
232
- let myFile = new File([u8arr], 'mySignature.png', { type: mime });
233
- this.SignatureEvent.emit({ data: myFile, eventName: 'export' });
234
- }
235
- else {
236
- this.extractAnnotationSignature(annotation, documentViewer);
237
- }
238
- }
239
- extractAnnotationSignature(annotation, docViewer) {
240
- return __awaiter(this, void 0, void 0, function* () {
241
- // Create a new Canvas to draw the Annotation on
242
- const canvas = document.createElement('canvas');
243
- // Reference the annotation from the Document
244
- const pageMatrix = docViewer.getDocument().getPageMatrix(annotation.PageNumber);
245
- // Set the height & width of the canvas to match the annotation
246
- canvas.height = annotation.Height;
247
- canvas.width = annotation.Width;
248
- const ctx = canvas.getContext('2d');
249
- // Translate the Annotation to the top Top Left Corner of the Canvas ie (0, 0)
250
- ctx.translate(-annotation.X, -annotation.Y);
251
- // Draw the Annotation onto the Canvas
252
- annotation.draw(ctx, pageMatrix);
253
- // Convert the Canvas to a Blob Object for Upload
254
- canvas.toBlob((blob) => {
255
- // Call your Blob Storage Upload Function
256
- let name = blob.type.replace('/', '.');
257
- let myFile = new File([blob], name);
258
- this.SignatureEvent.emit({ data: myFile, eventName: 'export' });
259
- });
260
- });
261
- }
262
- deleteAnnotation() {
263
- const documentViewer = this.webViewerInstance.docViewer;
264
- const SignatureCreateTool = documentViewer.getTool('AnnotationCreateSignature');
265
- SignatureCreateTool.on('signatureDeleted', (annotation, index) => {
266
- console.log('there were annotations deleted');
267
- this.userSignatures.splice(index, 1);
268
- this.SignatureEvent.emit({ data: { signature: annotation, index: index }, eventName: 'delete' });
269
- });
270
- }
271
- addDownloadButton() {
272
- this.webViewerInstance.setHeaderItems((header) => {
273
- header.push({
274
- type: 'actionButton',
275
- img: '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-file-earmark-arrow-down" viewBox="0 0 16 16"> <path d="M8.5 6.5a.5.5 0 0 0-1 0v3.793L6.354 9.146a.5.5 0 1 0-.708.708l2 2a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 10.293V6.5z"/> <path d="M14 14V4.5L9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2zM9.5 3A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5v2z"/></svg>',
276
- title: this.isArabic ? 'تنزيل' : 'Download',
277
- onClick: () => __awaiter(this, void 0, void 0, function* () {
278
- const { DocumentViewer, AnnotationManager, SaveOptions } = this.webViewerInstance.CoreControls;
279
- // const xfdfString = await AnnotationManager.exportAnnotations();
280
- const saveOptions = SaveOptions;
281
- const options = {
282
- filename: this.correspondance.title ? this.correspondance.title : 'myDocument.pdf',
283
- // xfdfString,
284
- flags: saveOptions.LINEARIZED,
285
- downloadType: 'pdf'
286
- };
287
- this.pdftronService.instance.downloadPdf(options);
288
- this.events.next('download');
289
- // let url = this.correspondance.properties.content.data;
290
- // let fileName = this.correspondance.properties.content.name;
291
- // if (url && fileName) {
292
- // let safeUrl = this.securePipe.transform(url);
293
- // safeUrl.subscribe((url: any) => {
294
- // const link = document.createElement('a');
295
- // link.style.display = 'none';
296
- // link.href = url.changingThisBreaksApplicationSecurity;
297
- // link.download = fileName;
298
- // document.body.appendChild(link);
299
- // link.click();
300
- // document.body.removeChild(link);
301
- // this.events.next('download');
302
- // });
303
- // }
304
- }),
305
- });
306
- });
307
- }
308
- addPrintButton() {
309
- this.webViewerInstance.setHeaderItems((header) => {
310
- header.push({
311
- type: 'actionButton',
312
- img: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#abb0c4;}</style></defs><title>icon - header - print - line</title><path class="cls-1" d="M20,6H18V2H6V6H4A2,2,0,0,0,2,8v9a2,2,0,0,0,2,2H6v3H18V19h2a2,2,0,0,0,2-2V8A2,2,0,0,0,20,6ZM8,4h8V6H8Zm8,16H8V16h8Zm4-3H18V14H6v3H4V8H20Zm-4-7h2v2H16Zm-3,0h2v2H13Z"></path></svg>',
313
- title: this.isArabic ? "طباعة" : 'Print',
314
- onClick: () => {
315
- this.pdftronService.instance.print();
316
- this.events.next('print');
317
- },
318
- });
319
- });
320
- }
321
- addWatermark() {
322
- const userinfo = this.nuxeo.nuxeoClient.user.properties;
323
- this.pdftronService.addWatermark(`${userinfo.username} `
324
- // `${userinfo.firstName} ${
325
- // userinfo.lastName
326
- // } `
327
- );
328
- }
329
- loadDocument() {
330
- if (!this.webViewerInstance || (!this.fileData && !this.fileURL)) {
331
- return;
332
- }
333
- const { docViewer, annotManager, Annotations } = this.webViewerInstance;
334
- docViewer.on('documentLoaded', () => {
335
- let fitMode = this.webViewerInstance.FitMode.FitWidth;
336
- if (this.fitMode === 'FitPage') {
337
- fitMode = this.webViewerInstance.FitMode.FitPage;
338
- }
339
- else if (this.fitMode === 'Zoom') {
340
- fitMode = this.webViewerInstance.FitMode.Zoom;
341
- }
342
- this.webViewerInstance.setFitMode(fitMode);
343
- });
344
- if (!this.editMode) {
345
- this.webViewerInstance.annotManager.setReadOnly(true);
346
- // instance.enableTools([]);
347
- }
348
- if (this.fileURL && this.fileURL.length) {
349
- this.webViewerInstance.loadDocument(this.fileURL, {
350
- xodstreaming: true,
351
- customHeaders: {
352
- Authorization: this.authHeader,
353
- },
354
- // withCredentials: true,
355
- });
356
- }
357
- else {
358
- this.webViewerInstance.loadDocument(new Blob([new Uint8Array(this.fileData)], { type: this.DOCUMENT_TYPE }), {
359
- filename: this.fileTitle,
360
- });
361
- }
362
- this.isFetching = false;
363
- if (this.correspondance !== undefined) {
364
- // if we need to check on secrecy level for adding water mark or not
365
- if (this.environment.enableViewerWaterMark && this.secrecyProperty) {
366
- // check for secrecy level befor adding watermark
367
- if (this.correspondance.properties[this.secrecyProperty] && this.correspondance.properties[this.secrecyProperty] !== 'Normal') {
368
- this.addWatermark();
369
- }
370
- }
371
- else if (this.environment.enableViewerWaterMark && !this.secrecyProperty) {
372
- this.addWatermark();
373
- }
374
- }
375
- this.cdr.detectChanges();
376
- }
377
- exportAsBlob() {
378
- return __awaiter(this, void 0, void 0, function* () {
379
- const doc = this.webViewerInstance.docViewer.getDocument();
380
- const xfdfString = yield this.webViewerInstance.annotManager.exportAnnotations();
381
- const data = yield doc.getFileData({
382
- // saves the document with annotations in it
383
- xfdfString,
384
- });
385
- const arr = new Uint8Array(data);
386
- const blob = new Blob([arr], { type: this.DOCUMENT_TYPE });
387
- return Promise.resolve(blob);
388
- });
389
- }
390
- toggleEdit() {
391
- if (!this.actionClicked) {
392
- // action clicked is not clicked then no update mode opened
393
- this.webViewerInstance.disableElements([
394
- 'toolbarGroup-Shapes',
395
- 'toolbarGroup-Edit',
396
- 'toolbarGroup-Insert',
397
- 'toolbarGroup-Annotate',
398
- ]);
399
- this.webViewerInstance.annotManager.setReadOnly(true);
400
- }
401
- else {
402
- // edit mode opened and must be when action is clicked
403
- if (this.editingType) {
404
- this.webViewerInstance.disableElements([
405
- 'toolbarGroup-Shapes',
406
- 'toolbarGroup-Edit',
407
- 'toolbarGroup-Insert',
408
- 'toolbarGroup-Annotate',
409
- ]);
410
- let group;
411
- if (this.editingType === 'signDoc') {
412
- this.webViewerInstance.enableElements([
413
- 'toolbarGroup-Insert'
414
- ]);
415
- }
416
- else if (this.editingType === 'annotate') {
417
- this.webViewerInstance.enableElements([
418
- 'toolbarGroup-Shapes',
419
- 'toolbarGroup-Edit',
420
- 'toolbarGroup-Annotate',
421
- ]);
422
- }
423
- }
424
- else {
425
- this.webViewerInstance.enableElements([
426
- 'toolbarGroup-Shapes',
427
- 'toolbarGroup-Edit',
428
- 'toolbarGroup-Insert',
429
- 'toolbarGroup-Annotate',
430
- ]);
431
- }
432
- this.webViewerInstance.annotManager.setReadOnly(false);
433
- // this.webViewerInstance.setToolbarGroup('toolbarGroup-Annotate');
434
- }
435
- }
436
- ngOnChanges(changes) {
437
- if (this.webViewerInstance) {
438
- this.toggleEdit();
439
- if (changes.urlFileContent &&
440
- changes.urlFileContent.previousValue &&
441
- changes.urlFileContent.previousValue !==
442
- changes.urlFileContent.currentValue) {
443
- this.ngOnDestroy();
444
- this.ngOnInit();
445
- this.ngAfterViewInit();
446
- }
447
- }
448
- }
449
- pdfTronEvent(event) {
450
- if (this[event.action]) {
451
- // method exists in the component
452
- // this[event.action](event.params); // call it
453
- }
454
- }
455
- // adding search lisner to lisen to internal search from ui and without ocr
456
- addSearchListner() {
457
- const { annotManager, docViewer, Annotations } = this.webViewerInstance;
458
- const searchListener = (searchPattern, options, results) => {
459
- this.mySearchStringResults = [];
460
- if (this.savedAnotations.length > 0) {
461
- this.savedAnotations.map(annotation => {
462
- annotation.Hidden = true;
463
- // Always redraw annotation if rendering was updated
464
- annotManager.redrawAnnotation(annotation);
465
- });
466
- }
467
- // don't do any search until there is a search pattern
468
- if (searchPattern.trim().length > 0) {
469
- // add redaction annotation for each search result
470
- this.newAnnotations = results.map(result => {
471
- const annotation = new Annotations.TextHighlightAnnotation();
472
- annotation.Quads = result.quads.map(quad => quad.getPoints());
473
- annotation.PageNumber = result.pageNum;
474
- annotation.StrokeColor = new Annotations.Color(250, 206, 0, 0.50196);
475
- annotation.Author = this.webViewerInstance.annotManager.getCurrentUser();
476
- return annotation;
477
- });
478
- this.savedAnotations.push(...this.newAnnotations);
479
- annotManager.addAnnotations(this.newAnnotations);
480
- annotManager.drawAnnotationsFromList(this.newAnnotations);
481
- }
482
- else {
483
- docViewer.clearSearchResults();
484
- }
485
- };
486
- docViewer.on('documentLoaded', () => {
487
- this.webViewerInstance.addSearchListener(searchListener);
488
- });
489
- }
490
- // perform automatic search when intering the page
491
- automaticSearch(searchTextArray) {
492
- const { annotManager, docViewer, Annotations } = this.webViewerInstance;
493
- let searchOptions;
494
- this.webViewerInstance.openElements(['searchPanel']);
495
- docViewer.on('documentLoaded', () => {
496
- const mode = this.webViewerInstance.CoreControls.Search.Mode.PAGE_STOP | this.webViewerInstance.CoreControls.Search.Mode.HIGHLIGHT | this.webViewerInstance.CoreControls.Search.Mode.AMBIENT_STRING;
497
- this.mySearchStringResults = []; // empty my search result when starting new search
498
- if (this.fileWithOcr) {
499
- // add redaction annotation for each search result
500
- const annotation = new Annotations.TextHighlightAnnotation();
501
- searchTextArray.map(searchText => {
502
- let mySearch = searchText.split(' ');
503
- if (mySearch.length > 1) {
504
- // then i am searching with more than one word
505
- this.pages.pages.forEach((page, index) => {
506
- this.pageHeight = page.page_height;
507
- this.pageWidth = page.page_width;
508
- this.standardHeight = this.webViewerInstance.docViewer.getPageHeight((index + 1));
509
- this.standardWidth = this.webViewerInstance.docViewer.getPageWidth((index + 1));
510
- page.zones.forEach(zone => {
511
- zone.paragraphs.forEach(paragraph => {
512
- paragraph.lines.forEach(line => {
513
- if (line.text.includes(searchText)) {
514
- this.SearchForWordInLine(mySearch, line, (index + 1), page);
515
- }
516
- });
517
- });
518
- });
519
- });
520
- }
521
- else {
522
- // then i am searching with only one word
523
- this.searchForWordInAllPages(searchText);
524
- }
525
- });
526
- docViewer.clearSearchResults();
527
- this.dispalaySearchResults(docViewer);
528
- }
529
- else {
530
- searchOptions = {
531
- // If true, a search of the entire document will be performed. Otherwise, a single search will be performed.
532
- fullSearch: true,
533
- // The callback function that is called when the search returns a result.
534
- onResult: result => {
535
- // with 'PAGE_STOP' mode, the callback is invoked after each page has been searched.
536
- if (result.resultCode === this.webViewerInstance.CoreControls.Search.ResultCode.FOUND) {
537
- const annotation = new Annotations.TextHighlightAnnotation();
538
- annotation.Quads = result.quads.map(quad => quad.getPoints());
539
- console.log(annotation.Quads);
540
- annotation.PageNumber = result.pageNum;
541
- annotation.StrokeColor = new Annotations.Color(250, 206, 0, 0.50196);
542
- annotation.Author = this.webViewerInstance.annotManager.getCurrentUser();
543
- this.savedAnotations.push(annotation);
544
- annotManager.addAnnotations([annotation]);
545
- annotManager.drawAnnotationsFromList([annotation]);
546
- docViewer.displayAdditionalSearchResults([result]);
547
- }
548
- }
549
- };
550
- searchTextArray.map(searchedText => {
551
- docViewer.textSearchInit(searchedText, mode, searchOptions);
552
- });
553
- }
554
- });
555
- }
556
- // search for single word in all pages
557
- searchForWordInAllPages(searchedWord) {
558
- this.pages.pages.forEach((page, index) => {
559
- this.pageHeight = page.page_height;
560
- this.pageWidth = page.page_width;
561
- this.standardHeight = this.webViewerInstance.docViewer.getPageHeight((index + 1));
562
- this.standardWidth = this.webViewerInstance.docViewer.getPageWidth((index + 1));
563
- const x = (this.pageWidth / this.standardWidth); // width ratio
564
- const y = (this.pageHeight / this.standardHeight); // height ratio
565
- page.zones.forEach(zone => {
566
- zone.paragraphs.forEach(paragraph => {
567
- paragraph.lines.forEach(line => {
568
- line.words.forEach(word => {
569
- if (word.text.includes(searchedWord)) {
570
- // annotation.PageNumber = index+1;
571
- let quads = [{
572
- x1: (word.coordinates.upper_left.x / x),
573
- x2: (word.coordinates.bottom_right.x / x),
574
- x3: (word.coordinates.bottom_right.x / x),
575
- x4: (word.coordinates.upper_left.x / x),
576
- y1: (word.coordinates.upper_left.y / y),
577
- y2: (word.coordinates.upper_left.y / y),
578
- y3: (word.coordinates.bottom_right.y / y),
579
- y4: (word.coordinates.bottom_right.y / y),
580
- }];
581
- this.higlightText(quads, index + 1);
582
- this.constructSearchResult(searchedWord, index + 1, quads, line.text);
583
- }
584
- });
585
- });
586
- });
587
- });
588
- });
589
- }
590
- // search for word in single line
591
- SearchForWordInLine(listOfSearchedWords, line, pagenumber, page) {
592
- this.pageHeight = page.page_height;
593
- this.pageWidth = page.page_width;
594
- this.standardHeight = this.webViewerInstance.docViewer.getPageHeight((pagenumber));
595
- this.standardWidth = this.webViewerInstance.docViewer.getPageWidth((pagenumber));
596
- const x = (this.pageWidth / this.standardWidth); // width ratio
597
- const y = (this.pageHeight / this.standardHeight); // height ratio
598
- // find only words related to my search form the line
599
- let myFoundedResults = [];
600
- let correctResults = [];
601
- line.words.forEach((word, wordIndex) => {
602
- if (listOfSearchedWords.indexOf(word.text) > -1) {
603
- myFoundedResults.push({ word: word, wordIndex: wordIndex });
604
- }
605
- });
606
- // find only words exist in my search sentence and not single and repeated word
607
- myFoundedResults.map((result, index) => {
608
- if ((myFoundedResults[index]['wordIndex'] - 1 === (myFoundedResults[index - 1] && myFoundedResults[index - 1]['wordIndex'])) ||
609
- (myFoundedResults[index + 1] && (myFoundedResults[index + 1]['wordIndex'] - 1 === myFoundedResults[index]['wordIndex']))) {
610
- correctResults.push(result);
611
- }
612
- });
613
- // highliht these words after eleminating all repeated and related words
614
- // must be for loop sp i can control the step in each loop
615
- let quads = [];
616
- for (let i = 0; i < correctResults.length; (i = i + listOfSearchedWords.length)) {
617
- quads.push({
618
- x1: (correctResults[((i + listOfSearchedWords.length) - 1)].word.coordinates.upper_left.x / x),
619
- x2: (correctResults[i].word.coordinates.bottom_right.x / x),
620
- x3: (correctResults[i].word.coordinates.bottom_right.x / x),
621
- x4: (correctResults[((i + listOfSearchedWords.length) - 1)].word.coordinates.upper_left.x / x),
622
- y1: (correctResults[i].word.coordinates.upper_left.y / y),
623
- y2: (correctResults[((i + listOfSearchedWords.length) - 1)].word.coordinates.upper_left.y / y),
624
- y3: (correctResults[((i + listOfSearchedWords.length) - 1)].word.coordinates.bottom_right.y / y),
625
- y4: (correctResults[i].word.coordinates.bottom_right.y / y),
626
- });
627
- this.higlightText(quads, pagenumber);
628
- this.constructSearchResult(listOfSearchedWords.join(" "), pagenumber, quads, line.text);
629
- }
630
- }
631
- constructSearchResult(searchedText, pageNum, quads, line) {
632
- let mySearchStartTextIndex = line.indexOf(searchedText);
633
- let mySeearchedTextEndIndex = mySearchStartTextIndex + searchedText.length;
634
- let searchResultObject = {
635
- ambientStr: line,
636
- resultStr: searchedText,
637
- resultStrStart: mySearchStartTextIndex,
638
- resultStrEnd: mySeearchedTextEndIndex,
639
- pageNum: pageNum,
640
- resultCode: 2,
641
- quads: [{
642
- ea: quads[0]['y3'],
643
- fa: quads[0]['y4'],
644
- ha: quads[0]['x1'],
645
- ia: quads[0]['x2'],
646
- pB: quads[0]['x3'],
647
- qB: quads[0]['x4'],
648
- rB: quads[0]['y1'],
649
- sB: quads[0]['y2']
650
- }]
651
- };
652
- this.mySearchStringResults.push(searchResultObject);
653
- console.log(this.mySearchStringResults);
654
- }
655
- dispalaySearchResults(docViewer) {
656
- setTimeout(() => {
657
- docViewer.displayAdditionalSearchResults(this.mySearchStringResults);
658
- }, 500);
659
- }
660
- // draw hiligthing around certain charatacters
661
- higlightText(quads, pageNumber) {
662
- const highlightingAnnot = new this.webViewerInstance.Annotations.TextHighlightAnnotation();
663
- highlightingAnnot.StrokeColor = new this.webViewerInstance.Annotations.Color(250, 206, 0, 0.50196);
664
- highlightingAnnot.Quads = quads;
665
- highlightingAnnot.PageNumber = pageNumber;
666
- highlightingAnnot.Author = this.webViewerInstance.annotManager.getCurrentUser();
667
- this.savedAnotations.push(highlightingAnnot);
668
- this.webViewerInstance.annotManager.addAnnotation(highlightingAnnot);
669
- // need to draw the annotation otherwise it won't show up until the page is refreshed
670
- this.webViewerInstance.annotManager.redrawAnnotation(highlightingAnnot);
671
- }
672
- // ------------------------------------------------------------------------ ------------------------------------------
673
- ngOnDestroy() {
674
- if (this.webViewerInstance) {
675
- this.webViewerInstance.closeDocument().then(() => {
676
- console.log('document closed!');
677
- });
678
- this.pdftronService.instance = this.webViewerInstance = null;
679
- }
680
- this.transelationSubscrition ? this.transelationSubscrition.unsubscribe() : null;
681
- }
682
- }
683
- PdftronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PdftronComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PdftronService }, { token: i2.NuxeoService }, { token: APP_BASE_HREF }, { token: i3.SecurePipe }, { token: i4.TranslationService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
684
- PdftronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: PdftronComponent, selector: "app-pdftron", inputs: { editMode: "editMode", actionClicked: "actionClicked", fileTitle: "fileTitle", docId: "docId", DOCUMENT_TYPE: "DOCUMENT_TYPE", fileData: "fileData", fitMode: "fitMode", authHeader: "authHeader", fileURL: "fileURL", correspondance: "correspondance", secrecyProperty: "secrecyProperty", editingType: "editingType", userSignatures: "userSignatures", searchString: "searchString", trackSignature: "trackSignature", useOutsideAnotations: "useOutsideAnotations", importedAnotations: "importedAnotations" }, outputs: { onSignatureTracking: "onSignatureTracking", onAddingAnotation: "onAddingAnotation", events: "events", SignatureEvent: "SignatureEvent" }, providers: [SecurePipe], viewQueries: [{ propertyName: "viewerRef", first: true, predicate: ["fileViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #fileViewer style=\"width: 100%; height: 100%;\"></div>\r\n", styles: [""] });
685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PdftronComponent, decorators: [{
686
- type: Component,
687
- args: [{
688
- selector: 'app-pdftron',
689
- templateUrl: './pdftron.component.html',
690
- styleUrls: ['./pdftron.component.scss'],
691
- providers: [SecurePipe],
692
- }]
693
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PdftronService }, { type: i2.NuxeoService }, { type: undefined, decorators: [{
694
- type: Inject,
695
- args: [APP_BASE_HREF]
696
- }] }, { type: i3.SecurePipe }, { type: i4.TranslationService }, { type: undefined, decorators: [{
697
- type: Inject,
698
- args: ['environment']
699
- }] }]; }, propDecorators: { viewerRef: [{
700
- type: ViewChild,
701
- args: ['fileViewer']
702
- }], editMode: [{
703
- type: Input
704
- }], actionClicked: [{
705
- type: Input
706
- }], fileTitle: [{
707
- type: Input
708
- }], docId: [{
709
- type: Input
710
- }], DOCUMENT_TYPE: [{
711
- type: Input
712
- }], fileData: [{
713
- type: Input
714
- }], fitMode: [{
715
- type: Input
716
- }], authHeader: [{
717
- type: Input
718
- }], fileURL: [{
719
- type: Input
720
- }], correspondance: [{
721
- type: Input
722
- }], secrecyProperty: [{
723
- type: Input
724
- }], editingType: [{
725
- type: Input
726
- }], userSignatures: [{
727
- type: Input
728
- }], searchString: [{
729
- type: Input
730
- }], trackSignature: [{
731
- type: Input
732
- }], onSignatureTracking: [{
733
- type: Output
734
- }], useOutsideAnotations: [{
735
- type: Input
736
- }], importedAnotations: [{
737
- type: Input
738
- }], onAddingAnotation: [{
739
- type: Output
740
- }], events: [{
741
- type: Output
742
- }], SignatureEvent: [{
743
- type: Output
744
- }] } });
745
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sU0FBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUc3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFLeEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQWdEM0IsWUFDUyxHQUFzQixFQUNyQixjQUE4QixFQUM5QixLQUFtQixFQUNJLFFBQWdCLEVBQ3ZDLFVBQXNCLEVBQ3RCLGtCQUF1QyxFQUNoQixXQUFXO1FBTm5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ0ksYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFoRG5DLGtCQUFhLEdBQUcsS0FBSyxDQUFDLENB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QUExQixNQUFNO2dCQUVQLE1BQU07c0JBREwsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdlYlZpZXdlciwgeyBDb3JlQ29udHJvbHMgfSBmcm9tICdAcGRmdHJvbi93ZWJ2aWV3ZXInO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9Db3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZGZ0cm9uU2VydmljZSB9IGZyb20gJy4vcGRmdHJvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBQX0JBU0VfSFJFRiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNlY3VyZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9zZWN1cmUucGlwZSc7XHJcbmltcG9ydCB7IFRocm93U3RtdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogQSByZXVzYWJsZSBmaWxlIHZpZXdlciBiYXNlZCBvbiBQREZUcm9uIExpYnJhcnlcclxuICogQHRpdGxlXHJcbiAqIFBERlRyb24gVmlld2VyXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxhcHAtcGRmdHJvblxyXG4gKiAgIFtmaWxlRGF0YV09XCJmaWxlRGF0YVwiXHJcbiAqICAgW2VkaXRNb2RlXT1cImZhbHNlXCJcclxuICogICBbZG9jSWRdPVwiZmlsZUlkXCJcclxuICogICBbZmlsZVRpdGxlXT1cImZpbGUudGl0bGVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLXBkZnRyb24+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wZGZ0cm9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGRmdHJvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGRmdHJvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1NlY3VyZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmdHJvbkNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVZpZXdlcicpIHZpZXdlclJlZjogRWxlbWVudFJlZjtcclxuICB3ZWJWaWV3ZXJJbnN0YW5jZTtcclxuICAvKiogRGlzYWJsZS9FbmFibGUgQW5ub3RhdGlvbiAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWN0aW9uQ2xpY2tlZCA9IGZhbHNlOyAvLyB1c2VkIHRvIGtub3cgaWYgdGhlcmUgaXMgYWN0aW9uIGNsaWNrZWQgb3V0c2lkZSB0byBzdGFydCBlZGl0IG1vZGUgb3Igbm90XHJcbiAgaXNEb2N1bWVudExvYWRpbmc6IGJvb2xlYW47XHJcbiAgaXNGZXRjaGluZzogYm9vbGVhbjtcclxuICAvKiogRG9jdW1lbnQgdGl0bGUgKi9cclxuICBASW5wdXQoKVxyXG4gIGZpbGVUaXRsZTogc3RyaW5nO1xyXG4gIC8qKiBEb2N1bWVudCBJRCAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZG9jSWQ6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIERPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vcGRmJztcclxuICBASW5wdXQoKVxyXG4gIGZpbGVEYXRhO1xyXG4gIEBJbnB1dCgpXHJcbiAgZml0TW9kZTogJ0ZpdFdpZHRoJyB8ICdGaXRQYWdlJyB8ICdab29tJyA9ICdGaXRXaWR0aCc7XHJcbiAgQElucHV0KClcclxuICBhdXRoSGVhZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBmaWxlVVJMOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjb3JyZXNwb25kYW5jZTtcclxuXHJcbiAgQElucHV0KCkgc2VjcmVjeVByb3BlcnR5OyAvLyB1c2VkIHRvIGFkZCB3YXRlcm1hcmsgYWNvcmRpbmcgY2VydGFpbiBzZWNyZWN5IGxldmVsXHJcbiAgQElucHV0KCkgZWRpdGluZ1R5cGU7XHJcbiAgQElucHV0KCkgdXNlclNpZ25hdHVyZXM7XHJcbiAgQElucHV0KCkgc2VhcmNoU3RyaW5nID0gJyc7IC8vIHN0cmluZyB0byBzZWFyY2ggZm9yIGl0IGluIHRoZSBkb2N1bWVudFxyXG5cclxuICBASW5wdXQoKSB0cmFja1NpZ25hdHVyZSA9IGZhbHNlOyAvLyB0byBlbmFibGUgdHJhY2tpbmcgc2lnbmF0dXJlIHBvc2l0aW9uIGFuZCBlbWl0IGl0IGFmdGVyIGV2ZXJ5IGNoYW5nZSBpdCBzaWduYXR1cmVcclxuICBAT3V0cHV0KCkgb25TaWduYXR1cmVUcmFja2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gZXZlbnQgdG8gZW1pdCBzaWduYXR1cmUgY2hhbmdlc1xyXG5cclxuICBASW5wdXQoKSB1c2VPdXRzaWRlQW5vdGF0aW9ucyA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0IGlmIHVzaW5nIG91dCBzaWRlIGFub3RhdGlvbnMgb3Igbm90XHJcbiAgQElucHV0KCkgaW1wb3J0ZWRBbm90YXRpb25zIDsgLy8gaW1wb3J0ZWQgYW5vdGF0aW9ucyBmcm9tIG91dHNpZGVcclxuICBAT3V0cHV0KCkgb25BZGRpbmdBbm90YXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHVzZWQgdG8gZXhwb3J0IGFsbCBhbm90YXRpb25zIHRvIG91dHNpZGVcclxuICBAT3V0cHV0KClcclxuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIFNpZ25hdHVyZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB1c2VkIHRvIGV4cG9ydCBzaWduYXR1cmUgdG8gb3V0c2lkZVxyXG4gIGZpcnN0VGltZUxvYWQgPSB0cnVlOyAvL2ZsYWdlIHRvIGNvbnRyb2wgaW1wb3J0aW5nIHNpZ25hdHVyZXMgaW4gdGhlIGZpcnN0IHRpbWUgbG9hZCBvbmx5XHJcbiAgZmlyc3RTaWduYXR1cmVMb2FkID0gdHJ1ZTsgLy8gZmxhZ2UgdG8gcGFzcyBmaXJzdCBsb2FkIG9mIGltcG9ydGVkIHNpZ25hdHVyZXMgd2l0aG91dCBlbWl0dGluZyB0aGUgZXZlbnQgXHJcbiAgbmV3U2lnbkNyZWF0aW9uID0gZmFsc2U7IC8vIGZsYWdlIHRvIGluZGljYXRlIHNpZ25hdHVyZSBjcmVhdGlvbiBpcyBjcmVhdGVkIG9yIGNob29zZWQgZnJvbSBzdG9yZWQgb25lc1xyXG4gIHRyYW5zZWxhdGlvblN1YnNjcml0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGlzQXJhYmljO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHBkZnRyb25TZXJ2aWNlOiBQZGZ0cm9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbnV4ZW86IE51eGVvU2VydmljZSxcclxuICAgIEBJbmplY3QoQVBQX0JBU0VfSFJFRikgcHJpdmF0ZSBiYXNlSHJlZjogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBzZWN1cmVQaXBlOiBTZWN1cmVQaXBlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnRcclxuICApIHsgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcyA7XHJcbiAgICB9KVxyXG4gICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheSA9IHRoaXMuc2VhcmNoU3RyaW5nLnRyaW0oKSA/IHRoaXMuc2VhcmNoU3RyaW5nLnNwbGl0KCcsJykgOiBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5wcHQnKSkge1xyXG4gICAgICB0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpbGVUaXRsZS5lbmRzV2l0aCgnLnBwdHgnKSkge1xyXG4gICAgICB0aGlzLkRPQ1VNRU5UX1RZUEUgPVxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5kb2MnKSkge1xyXG4gICAgICB0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vbXN3b3JkJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5kb2N4JykpIHtcclxuICAgICAgdGhpcy5ET0NVTUVOVF9UWVBFID1cclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnO1xyXG4gICAgfVxyXG4gICAgV2ViVmlld2VyKFxyXG4gICAgICB7XHJcbiAgICAgICAgcGF0aDogdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3BkZnRyb25zJyxcclxuICAgICAgICBmb3JjZUNsaWVudFNpZGVJbml0OiB0cnVlLFxyXG4gICAgICAgIHN0cmVhbWluZzogdHJ1ZSxcclxuICAgICAgICBsaWNlbnNlS2V5OiB0aGlzLmVudmlyb25tZW50LnBkZnRyb25MaWNlbmNlS2V5LFxyXG4gICAgICAgIGNzczogdGhpcy5pc0FyYWJpYyA/ICh0aGlzLmJhc2VIcmVmICsgJy9hc3NldHMvc3R5bGVzL2FyLW15cGRmdHJvbi5jc3MnKSA6ICh0aGlzLmJhc2VIcmVmICsgJy9hc3NldHMvc3R5bGVzL2VuLW15cGRmdHJvbi5jc3MnKSxcclxuICAgICAgICBhbm5vdGF0aW9uVXNlcjogdGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMubGFzdE5hbWUsXHJcbiAgICAgICAgZGlzYWJsZWRFbGVtZW50czogWydkb3dubG9hZEJ1dHRvbicsICdwcmludEJ1dHRvbiddLFxyXG5cclxuICAgICAgfSxcclxuICAgICAgdGhpcy52aWV3ZXJSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgKS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xyXG4gICAgICB0aGlzLmlzQXJhYmljID8gaW5zdGFuY2Uuc2V0TGFuZ3VhZ2UoJ2FyJykgOiBpbnN0YW5jZS5zZXRMYW5ndWFnZSgnZW4nKSA7XHJcbiAgICAgIHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICAgIGlmKHRoaXMuY29ycmVzcG9uZGFuY2UuZmFjZXRzLmluZGV4T2YoJ2N0b2NyJykgPiAtMSl7XHJcbiAgICAgICAgdGhpcy5maWxlV2l0aE9jciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYWdlcyA9IEpTT04ucGFyc2UodGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzWydjdG9jcjpyZWNvZ25pemVkSnNvbiddKTtcclxuICAgICAgICAvLyBvdmVycmlkZSBzZWFyY2ggZnVudGlvbiB0byB1c2Ugb3VyIHNlYXJjaCBpbiBvY3Igbm90IGRlZnVsdCBzZWFyY2hcclxuICAgICAgICBpbnN0YW5jZS5vdmVycmlkZVNlYXJjaEV4ZWN1dGlvbih0aGlzLnNlYXJjaEZuKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAvLyBpZiBubyBvY3IgdGhlbiBhZGQgc2VhcmNoIGxpc25lciB0byBsaXNuZSB0byBpbnRlcm5hbCBzZWFyY2ggYW5kIGNhdGNoIHJlc3VsdHNcclxuICAgICAgICAgICAgdGhpcy5hZGRTZWFyY2hMaXN0bmVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB0aGlzLmFkZFByaW50QnV0dG9uKCk7XHJcbiAgICAgIHRoaXMuYWRkRG93bmxvYWRCdXR0b24oKTtcclxuICAgICAgdGhpcy5pbXBvcnRTaWduYXR1cmUoKTtcclxuICAgICAgdGhpcy5leHBvcnRpbmdTaWduYXR1cmUoKTtcclxuICAgICAgdGhpcy5kZWxldGVBbm5vdGF0aW9uKCk7XHJcbiAgICAgIHRoaXMuZXhwb3J0aW5nU2F2ZWRTaWduYXR1cmUoKTtcclxuICAgICAgaWYodGhpcy51c2VPdXRzaWRlQW5vdGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKTtcclxuICAgICAgICB0aGlzLmV4cG9ydEFub3RhdGlvbnNUb091dHNpZGUoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5zZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMoe1xyXG4gICAgICAgIC8vIHNldFNlYXJjaEhpZ2hsaWdodENvbG9ycyBhY2NlcHRzIGJvdGggQW5ub3RhdGlvbnMuQ29sb3Igb2JqZWN0cyBvciAncmdiYScgc3RyaW5nc1xyXG4gICAgICAgIHNlYXJjaFJlc3VsdDogbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLDIwNiwwLDAuNTAxOTYpLFxyXG4gICAgICAgIGFjdGl2ZVNlYXJjaFJlc3VsdDogbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLDIwNiwwLDAuNTAxOTYpLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYodGhpcy5yZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5Lmxlbmd0aCAhPT0gMCl7XHJcbiAgICAgICAgdGhpcy5hdXRvbWF0aWNTZWFyY2godGhpcy5yZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5KTtcclxuICAgIH1cclxuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQoKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGltcG9ydEFub3RhdGlvbnNGcm9tT3V0c2lkZSgpe1xyXG4gICAgY29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuXHJcbiAgICBkb2N1bWVudFZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmltcG9ydEFubm90YXRpb25zKHRoaXMuaW1wb3J0ZWRBbm90YXRpb25zKVxyXG4gICAgfSlcclxuICAgIC8vIC50aGVuKGFubm90YXRpb25zID0+IHtcclxuICAgIC8vICAgYW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcclxuICAgIC8vICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24pO1xyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gZXhjdHJhY3QgYWxsIGFub3RhdGlvbnMgb24gdGhlIGZpbGUgYW5kIHNlbmQgaXQgb3V0IHNpZGUgdG8gYmUgc2F2ZWQgYW5kIGxlYXZlIHRoZSBmaWxlIGFzIGl0IGlzIHdpdGhvdXQgYW55IGFub3RhdGlvbnMgb24gaXRcclxuICBleHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCl7XHJcbiAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5vbignYW5ub3RhdGlvbkNoYW5nZWQnLCAoYW5ub3RhdGlvbnMsIGFjdGlvbiwgeyBpbXBvcnRlZCB9KSA9PiB7XHJcbiAgICAgIGlmIChpbXBvcnRlZCkgcmV0dXJuO1xyXG4gICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5leHBvcnRBbm5vdGF0aW9ucygpLnRoZW4oZXhjdHJhY3RlZEFub3RhdGlvbnMgPT4ge1xyXG4gICAgICAgIHRoaXMub25BZGRpbmdBbm90YXRpb24uZW1pdChleGN0cmFjdGVkQW5vdGF0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBpZiB0cmFja2luZyBzaWduYXR1cmUgbG9jYXRpb24gaXMgZW5hYmxlIHRoZW4gZW1pdCBzaWduYXR1cmUgb3V0c2lkZSB3aXRoIGV2ZXJ5IGNoYW5nZXMgaW4gaXRcclxuICAgICAgaWYodGhpcy50cmFja1NpZ25hdHVyZSl7XHJcbiAgICAgICAgdGhpcy5vblNpZ25hdHVyZVRyYWNraW5nLmVtaXQoe2Fub3RhdGlvbnMgOiBhbm5vdGF0aW9ucyAsIGFjdGlvbiA6IGFjdGlvbn0pXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0U2lnbmF0dXJlKCkge1xyXG4gICAgY29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuICAgIGNvbnN0IHNpZ25hdHVyZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcblxyXG4gICAgZG9jdW1lbnRWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG4gICAgICBpZih0aGlzLmZpcnN0VGltZUxvYWQpe1xyXG4gICAgICAgIHNpZ25hdHVyZVRvb2wuaW1wb3J0U2lnbmF0dXJlcyhbLi4udGhpcy51c2VyU2lnbmF0dXJlc10pO1xyXG4gICAgICAgIHRoaXMuZmlyc3RUaW1lTG9hZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBcclxuICBleHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpIHtcclxuICAgIGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcbiAgICBjb25zdCBTaWduYXR1cmVDcmVhdGVUb29sID0gZG9jdW1lbnRWaWV3ZXIuZ2V0VG9vbCgnQW5ub3RhdGlvbkNyZWF0ZVNpZ25hdHVyZScpXHJcbiAgICBTaWduYXR1cmVDcmVhdGVUb29sLm9uKCdzaWduYXR1cmVTYXZlZCcsIChhbm5vdGF0aW9uKSA9PiB7XHJcbiAgICAgIGlmKCF0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NpZ25hdHVyZSBzYXZlZCB0cmlnZXJlZCcpO1xyXG4gICAgICAgIHRoaXMubmV3U2lnbkNyZWF0aW9uID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCA9IGZhbHNlO1xyXG4gICAgfSk7O1xyXG4gIH1cclxuICBcclxuICBleHBvcnRpbmdTaWduYXR1cmUoKSB7XHJcbiAgICBjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG4gICAgY29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKVxyXG4gICAgU2lnbmF0dXJlQ3JlYXRlVG9vbC5vbignYW5ub3RhdGlvbkFkZGVkJywgKGFubm90YXRpb24pID0+IHtcclxuICAgICAgaWYgKGFubm90YXRpb24gJiYgdGhpcy5uZXdTaWduQ3JlYXRpb24pIHtcclxuICAgICAgICB0aGlzLm5ld1NpZ25DcmVhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXh0cmFjdEFub3RhdGlvbihhbm5vdGF0aW9uICwgZG9jdW1lbnRWaWV3ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGFubm90YXRpb24pXHJcbiAgICAgIH1cclxuICAgIH0pOztcclxuICB9XHJcblxyXG4gIGV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbiAsIGRvY3VtZW50Vmlld2VyKXtcclxuICAgIGlmKGFubm90YXRpb25bJ2ltYWdlJ10pe1xyXG4gICAgICAvLyBjb252ZXJ0IGJhc2U2NCBzaWduYXR1cmUgaW50byBmaWxlIGFuZCBlbWl0IGl0IHRvIG91dCBzaWRlIFxyXG4gICAgICBsZXQgYmFzZTY0SW1nID0gYW5ub3RhdGlvblsnaW1hZ2UnXVsnY3VycmVudFNyYyddO1xyXG4gICAgICB2YXIgYXJyID0gYmFzZTY0SW1nLnNwbGl0KCcsJyksXHJcbiAgICAgIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgXHJcbiAgICAgIG4gPSBic3RyLmxlbmd0aCwgXHJcbiAgICAgIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcbiAgICAgIHdoaWxlKG4tLSl7XHJcbiAgICAgICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmFtZSA9IG1pbWUucmVwbGFjZSgnLycgLCAnLicpXHJcbiAgICAgIGxldCBteUZpbGUgPSBuZXcgRmlsZShbdThhcnJdLCAnbXlTaWduYXR1cmUucG5nJywge3R5cGU6bWltZX0pO1xyXG4gICAgICB0aGlzLlNpZ25hdHVyZUV2ZW50LmVtaXQoeyBkYXRhOiBteUZpbGUsIGV2ZW50TmFtZTogJ2V4cG9ydCcgfSk7XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiAsIGRvY3VtZW50Vmlld2VyKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jVmlld2VyKSB7XHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgQ2FudmFzIHRvIGRyYXcgdGhlIEFubm90YXRpb24gb25cclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgLy8gUmVmZXJlbmNlIHRoZSBhbm5vdGF0aW9uIGZyb20gdGhlIERvY3VtZW50XHJcbiAgICBjb25zdCBwYWdlTWF0cml4ID0gZG9jVmlld2VyLmdldERvY3VtZW50KCkuZ2V0UGFnZU1hdHJpeChhbm5vdGF0aW9uLlBhZ2VOdW1iZXIpO1xyXG4gICAgLy8gU2V0IHRoZSBoZWlnaHQgJiB3aWR0aCBvZiB0aGUgY2FudmFzIHRvIG1hdGNoIHRoZSBhbm5vdGF0aW9uXHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gYW5ub3RhdGlvbi5IZWlnaHQ7XHJcbiAgICBjYW52YXMud2lkdGggPSBhbm5vdGF0aW9uLldpZHRoO1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAvLyBUcmFuc2xhdGUgdGhlIEFubm90YXRpb24gdG8gdGhlIHRvcCBUb3AgTGVmdCBDb3JuZXIgb2YgdGhlIENhbnZhcyBpZSAoMCwgMClcclxuICAgIGN0eC50cmFuc2xhdGUoLWFubm90YXRpb24uWCwgLWFubm90YXRpb24uWSk7XHJcbiAgICAvLyBEcmF3IHRoZSBBbm5vdGF0aW9uIG9udG8gdGhlIENhbnZhc1xyXG4gICAgYW5ub3RhdGlvbi5kcmF3KGN0eCwgcGFnZU1hdHJpeCk7XHJcbiAgICAvLyBDb252ZXJ0IHRoZSBDYW52YXMgdG8gYSBCbG9iIE9iamVjdCBmb3IgVXBsb2FkXHJcbiAgICBjYW52YXMudG9CbG9iKChibG9iKSA9PiB7XHJcbiAgICAgIC8vIENhbGwgeW91ciBCbG9iIFN0b3JhZ2UgVXBsb2FkIEZ1bmN0aW9uXHJcbiAgICAgIGxldCBuYW1lID0gYmxvYi50eXBlLnJlcGxhY2UoJy8nICwgJy4nKVxyXG4gICAgICBsZXQgbXlGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBuYW1lKTtcclxuICAgICAgdGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogbXlGaWxlLCBldmVudE5hbWU6ICdleHBvcnQnIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBbm5vdGF0aW9uKCkge1xyXG4gICAgY29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuICAgIGNvbnN0IFNpZ25hdHVyZUNyZWF0ZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcbiAgICBTaWduYXR1cmVDcmVhdGVUb29sLm9uKCdzaWduYXR1cmVEZWxldGVkJywgKGFubm90YXRpb24sIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd0aGVyZSB3ZXJlIGFubm90YXRpb25zIGRlbGV0ZWQnKTtcclxuICAgICAgdGhpcy51c2VyU2lnbmF0dXJlcy5zcGxpY2UoaW5kZXggLCAxKTtcclxuICAgICAgdGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogeyBzaWduYXR1cmU6IGFubm90YXRpb24sIGluZGV4OiBpbmRleCB9LCBldmVudE5hbWU6ICdkZWxldGUnIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGREb3dubG9hZEJ1dHRvbigpIHtcclxuICAgIHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG4gICAgICBoZWFkZXIucHVzaCh7XHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbkJ1dHRvbicsXHJcbiAgICAgICAgaW1nOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYmkgYmktZmlsZS1lYXJtYXJrLWFycm93LWRvd25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+IDxwYXRoIGQ9XCJNOC41IDYuNWEuNS41IDAgMCAwLTEgMHYzLjc5M0w2LjM1NCA5LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDIgMmEuNS41IDAgMCAwIC43MDggMGwyLTJhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1Y2LjV6XCIvPiA8cGF0aCBkPVwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwiLz48L3N2Zz4nLFxyXG4gICAgICAgIHRpdGxlOiB0aGlzLmlzQXJhYmljID8gJ9iq2YbYstmK2YQnIDogJ0Rvd25sb2FkJyxcclxuICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IERvY3VtZW50Vmlld2VyLCBBbm5vdGF0aW9uTWFuYWdlciwgU2F2ZU9wdGlvbnMgfSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzO1xyXG4gICAgICAgICAgLy8gY29uc3QgeGZkZlN0cmluZyA9IGF3YWl0IEFubm90YXRpb25NYW5hZ2VyLmV4cG9ydEFubm90YXRpb25zKCk7XHJcbiAgICAgICAgICBjb25zdCBzYXZlT3B0aW9ucyA9IFNhdmVPcHRpb25zO1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuY29ycmVzcG9uZGFuY2UudGl0bGUgPyB0aGlzLmNvcnJlc3BvbmRhbmNlLnRpdGxlIDogJ215RG9jdW1lbnQucGRmJyxcclxuICAgICAgICAgICAgLy8geGZkZlN0cmluZyxcclxuICAgICAgICAgICAgZmxhZ3M6IHNhdmVPcHRpb25zLkxJTkVBUklaRUQsXHJcbiAgICAgICAgICAgIGRvd25sb2FkVHlwZTogJ3BkZidcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5kb3dubG9hZFBkZihvcHRpb25zKTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzLm5leHQoJ2Rvd25sb2FkJyk7XHJcbiAgICAgICAgICAvLyBsZXQgdXJsID0gdGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzLmNvbnRlbnQuZGF0YTtcclxuICAgICAgICAgIC8vIGxldCBmaWxlTmFtZSA9IHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllcy5jb250ZW50Lm5hbWU7XHJcbiAgICAgICAgICAvLyBpZiAodXJsICYmIGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAvLyAgIGxldCBzYWZlVXJsID0gdGhpcy5zZWN1cmVQaXBlLnRyYW5zZm9ybSh1cmwpO1xyXG4gICAgICAgICAgLy8gICBzYWZlVXJsLnN1YnNjcmliZSgodXJsOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgLy8gICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgIC8vICAgICBsaW5rLmhyZWYgPSB1cmwuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTtcclxuICAgICAgICAgIC8vICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICAvLyAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICAgIC8vICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAvLyAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgICAgIC8vICAgICB0aGlzLmV2ZW50cy5uZXh0KCdkb3dubG9hZCcpO1xyXG4gICAgICAgICAgLy8gICB9KTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkUHJpbnRCdXR0b24oKSB7XHJcbiAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEhlYWRlckl0ZW1zKChoZWFkZXIpID0+IHtcclxuICAgICAgaGVhZGVyLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdhY3Rpb25CdXR0b24nLFxyXG4gICAgICAgIGltZzogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2FiYjBjNDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmljb24gLSBoZWFkZXIgLSBwcmludCAtIGxpbmU8L3RpdGxlPjxwYXRoIGNsYXNzPVwiY2xzLTFcIiBkPVwiTTIwLDZIMThWMkg2VjZINEEyLDIsMCwwLDAsMiw4djlhMiwyLDAsMCwwLDIsMkg2djNIMThWMTloMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDIwLDZaTTgsNGg4VjZIOFptOCwxNkg4VjE2aDhabTQtM0gxOFYxNEg2djNINFY4SDIwWm0tNC03aDJ2MkgxNlptLTMsMGgydjJIMTNaXCI+PC9wYXRoPjwvc3ZnPicsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMuaXNBcmFiaWMgPyBcIti32KjYp9i52KlcIiA6ICdQcmludCcsXHJcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5wcmludCgpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHMubmV4dCgncHJpbnQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkV2F0ZXJtYXJrKCkge1xyXG4gICAgY29uc3QgdXNlcmluZm8gPSB0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcztcclxuICAgIHRoaXMucGRmdHJvblNlcnZpY2UuYWRkV2F0ZXJtYXJrKFxyXG4gICAgICBgJHt1c2VyaW5mby51c2VybmFtZX0gICAgYFxyXG4gICAgICAvLyBgJHt1c2VyaW5mby5maXJzdE5hbWV9ICR7XHJcbiAgICAgIC8vICAgdXNlcmluZm8ubGFzdE5hbWVcclxuICAgICAgLy8gfSBgXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbG9hZERvY3VtZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLndlYlZpZXdlckluc3RhbmNlIHx8ICghdGhpcy5maWxlRGF0YSAmJiAhdGhpcy5maWxlVVJMKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGRvY1ZpZXdlciwgYW5ub3RNYW5hZ2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuICAgIGRvY1ZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcbiAgICAgIGxldCBmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLkZpdFdpZHRoO1xyXG4gICAgICBpZiAodGhpcy5maXRNb2RlID09PSAnRml0UGFnZScpIHtcclxuICAgICAgICBmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLkZpdFBhZ2U7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXRNb2RlID09PSAnWm9vbScpIHtcclxuICAgICAgICBmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLlpvb207XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRGaXRNb2RlKGZpdE1vZGUpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuZWRpdE1vZGUpIHtcclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcbiAgICAgIC8vIGluc3RhbmNlLmVuYWJsZVRvb2xzKFtdKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbGVVUkwgJiYgdGhpcy5maWxlVVJMLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmxvYWREb2N1bWVudCh0aGlzLmZpbGVVUkwsIHtcclxuICAgICAgICB4b2RzdHJlYW1pbmc6dHJ1ZSxcclxuICAgICAgICBjdXN0b21IZWFkZXJzOiB7XHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiB0aGlzLmF1dGhIZWFkZXIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5sb2FkRG9jdW1lbnQoXHJcbiAgICAgICAgbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KHRoaXMuZmlsZURhdGEpXSwgeyB0eXBlOiB0aGlzLkRPQ1VNRU5UX1RZUEUgfSksXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZVRpdGxlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmNvcnJlc3BvbmRhbmNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gaWYgd2UgbmVlZCB0byBjaGVjayBvbiBzZWNyZWN5IGxldmVsIGZvciBhZGRpbmcgd2F0ZXIgbWFyayBvciBub3QgXHJcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZVZpZXdlcldhdGVyTWFyayAmJiB0aGlzLnNlY3JlY3lQcm9wZXJ0eSkge1xyXG4gICAgICAgIC8vIGNoZWNrIGZvciBzZWNyZWN5IGxldmVsIGJlZm9yIGFkZGluZyB3YXRlcm1hcmtcclxuICAgICAgICBpZiAodGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAmJiB0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICE9PSAnTm9ybWFsJykge1xyXG4gICAgICAgICAgdGhpcy5hZGRXYXRlcm1hcmsoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZVZpZXdlcldhdGVyTWFyayAmJiAhdGhpcy5zZWNyZWN5UHJvcGVydHkpIHtcclxuICAgICAgICB0aGlzLmFkZFdhdGVybWFyaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBleHBvcnRBc0Jsb2IoKTogUHJvbWlzZTxCbG9iPiB7XHJcbiAgICBjb25zdCBkb2MgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXREb2N1bWVudCgpO1xyXG4gICAgY29uc3QgeGZkZlN0cmluZyA9XHJcbiAgICAgIGF3YWl0IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmV4cG9ydEFubm90YXRpb25zKCk7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZG9jLmdldEZpbGVEYXRhKHtcclxuICAgICAgLy8gc2F2ZXMgdGhlIGRvY3VtZW50IHdpdGggYW5ub3RhdGlvbnMgaW4gaXRcclxuICAgICAgeGZkZlN0cmluZyxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2Fycl0sIHsgdHlwZTogdGhpcy5ET0NVTUVOVF9UWVBFIH0pO1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShibG9iKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUVkaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aW9uQ2xpY2tlZCkge1xyXG4gICAgICAvLyBhY3Rpb24gY2xpY2tlZCBpcyBub3QgY2xpY2tlZCB0aGVuIG5vIHVwZGF0ZSBtb2RlIG9wZW5lZFxyXG4gICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcbiAgICAgICAgJ3Rvb2xiYXJHcm91cC1TaGFwZXMnLFxyXG4gICAgICAgICd0b29sYmFyR3JvdXAtRWRpdCcsXHJcbiAgICAgICAgJ3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG4gICAgICAgICd0b29sYmFyR3JvdXAtQW5ub3RhdGUnLFxyXG4gICAgICBdKTtcclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBlZGl0IG1vZGUgb3BlbmVkIGFuZCBtdXN0IGJlIHdoZW4gYWN0aW9uIGlzIGNsaWNrZWRcclxuICAgICAgaWYgKHRoaXMuZWRpdGluZ1R5cGUpIHtcclxuICAgICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcbiAgICAgICAgICAndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcbiAgICAgICAgICAndG9vbGJhckdyb3VwLUVkaXQnLFxyXG4gICAgICAgICAgJ3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG4gICAgICAgICAgJ3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZScsXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgbGV0IGdyb3VwIDtcclxuICAgICAgICBpZih0aGlzLmVkaXRpbmdUeXBlID09PSAnc2lnbkRvYycpe1xyXG4gICAgICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbXHJcbiAgICAgICAgICAgICd0b29sYmFyR3JvdXAtSW5zZXJ0J1xyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuZWRpdGluZ1R5cGUgPT09ICdhbm5vdGF0ZScpe1xyXG4gICAgICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbXHJcbiAgICAgICAgICAgICd0b29sYmFyR3JvdXAtU2hhcGVzJyxcclxuICAgICAgICAgICAgJ3Rvb2xiYXJHcm91cC1FZGl0JyxcclxuICAgICAgICAgICAgJ3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZScsXHJcbiAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbXHJcbiAgICAgICAgICAndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcbiAgICAgICAgICAndG9vbGJhckdyb3VwLUVkaXQnLFxyXG4gICAgICAgICAgJ3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG4gICAgICAgICAgJ3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZScsXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkoZmFsc2UpO1xyXG4gICAgICAvLyB0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldFRvb2xiYXJHcm91cCgndG9vbGJhckdyb3VwLUFubm90YXRlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLnRvZ2dsZUVkaXQoKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNoYW5nZXMudXJsRmlsZUNvbnRlbnQgJiZcclxuICAgICAgICBjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgJiZcclxuICAgICAgICBjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgIT09XHJcbiAgICAgICAgY2hhbmdlcy51cmxGaWxlQ29udGVudC5jdXJyZW50VmFsdWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBkZlRyb25FdmVudChldmVudCkge1xyXG4gICAgaWYgKHRoaXNbZXZlbnQuYWN0aW9uXSkge1xyXG4gICAgICAvLyBtZXRob2QgZXhpc3RzIGluIHRoZSBjb21wb25lbnRcclxuICAgICAgLy8gIHRoaXNbZXZlbnQuYWN0aW9uXShldmVudC5wYXJhbXMpOyAvLyBjYWxsIGl0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNlYXJjaCByZXN1bHRzIHNlY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgXHJcbiAgcGFnZXM6YW55O1xyXG4gIHN0YW5kYXJkSGVpZ2h0O1xyXG4gIHN0YW5kYXJkV2lkdGg7XHJcbiAgcGFnZUhlaWdodDtcclxuICBwYWdlV2lkdGg7XHJcbiAgc2F2ZWRBbm90YXRpb25zID0gW107XHJcbiAgZmlsZVdpdGhPY3IgPSBmYWxzZTtcclxuICBuZXdBbm5vdGF0aW9ucz1bXTtcclxuICBteVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuICByZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5ID0gW107XHJcblxyXG4gIC8vIGFkZGluZyBzZWFyY2ggbGlzbmVyIHRvIGxpc2VuIHRvIGludGVybmFsIHNlYXJjaCBmcm9tIHVpIGFuZCB3aXRob3V0IG9jclxyXG4gIGFkZFNlYXJjaExpc3RuZXIoKSB7XHJcbiAgICBjb25zdCB7IGFubm90TWFuYWdlciwgZG9jVmlld2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuICAgIGNvbnN0IHNlYXJjaExpc3RlbmVyID0gKHNlYXJjaFBhdHRlcm4sIG9wdGlvbnMsIHJlc3VsdHMpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuICAgICAgaWYodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgdGhpcy5zYXZlZEFub3RhdGlvbnMubWFwKGFubm90YXRpb24gPT4ge1xyXG4gICAgICAgICAgYW5ub3RhdGlvbi5IaWRkZW4gPSB0cnVlO1xyXG4gICAgICAgIC8vIEFsd2F5cyByZWRyYXcgYW5ub3RhdGlvbiBpZiByZW5kZXJpbmcgd2FzIHVwZGF0ZWRcclxuICAgICAgICBhbm5vdE1hbmFnZXIucmVkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcbiAgICAgIGlmKHNlYXJjaFBhdHRlcm4udHJpbSgpLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAvLyBhZGQgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggc2VhcmNoIHJlc3VsdFxyXG4gICAgICAgICAgICB0aGlzLm5ld0Fubm90YXRpb25zID0gcmVzdWx0cy5tYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gbmV3IEFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcbiAgICAgICAgICAgICAgYW5ub3RhdGlvbi5RdWFkcyA9IHJlc3VsdC5xdWFkcy5tYXAocXVhZCA9PiBxdWFkLmdldFBvaW50cygpKTtcclxuICAgICAgICAgICAgICBhbm5vdGF0aW9uLlBhZ2VOdW1iZXIgPSByZXN1bHQucGFnZU51bTtcclxuICAgICAgICAgICAgICBhbm5vdGF0aW9uLlN0cm9rZUNvbG9yID0gbmV3IEFubm90YXRpb25zLkNvbG9yKDI1MCwyMDYsMCwwLjUwMTk2KTsgIFxyXG4gICAgICAgICAgICAgIGFubm90YXRpb24uQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTsgICAgICBcclxuICAgICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZWRBbm90YXRpb25zLnB1c2goLi4udGhpcy5uZXdBbm5vdGF0aW9ucyk7XHJcbiAgICAgICAgICAgIGFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9ucyh0aGlzLm5ld0Fubm90YXRpb25zKTtcclxuICAgICAgICAgICAgYW5ub3RNYW5hZ2VyLmRyYXdBbm5vdGF0aW9uc0Zyb21MaXN0KHRoaXMubmV3QW5ub3RhdGlvbnMpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBkb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuICAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hZGRTZWFyY2hMaXN0ZW5lcihzZWFyY2hMaXN0ZW5lcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHBlcmZvcm0gYXV0b21hdGljIHNlYXJjaCB3aGVuIGludGVyaW5nIHRoZSBwYWdlIFxyXG4gIGF1dG9tYXRpY1NlYXJjaChzZWFyY2hUZXh0QXJyYXkpe1xyXG4gICAgY29uc3QgeyBhbm5vdE1hbmFnZXIsIGRvY1ZpZXdlciwgQW5ub3RhdGlvbnMgfSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2U7XHJcbiAgICBsZXQgc2VhcmNoT3B0aW9ucztcclxuICAgIHRoaXMud2ViVmlld2VySW5zdGFuY2Uub3BlbkVsZW1lbnRzKFsnc2VhcmNoUGFuZWwnXSk7XHJcbiAgICBkb2NWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG4gICAgICBjb25zdCBtb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuUEFHRV9TVE9QIHwgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuSElHSExJR0hUIHwgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuQU1CSUVOVF9TVFJJTkc7XHJcbiAgICAgIHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107IC8vIGVtcHR5IG15IHNlYXJjaCByZXN1bHQgd2hlbiBzdGFydGluZyBuZXcgc2VhcmNoXHJcbiAgICAgIGlmICh0aGlzLmZpbGVXaXRoT2NyKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gYWRkIHJlZGFjdGlvbiBhbm5vdGF0aW9uIGZvciBlYWNoIHNlYXJjaCByZXN1bHRcclxuICAgICAgICAgIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuICAgICAgICAgIHNlYXJjaFRleHRBcnJheS5tYXAoc2VhcmNoVGV4dCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBteVNlYXJjaCA9IHNlYXJjaFRleHQuc3BsaXQoJyAnKTtcclxuICAgICAgICAgICAgaWYobXlTZWFyY2gubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICAgICAgLy8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgd29yZFxyXG4gICAgICAgICAgICAgIHRoaXMucGFnZXMucGFnZXMuZm9yRWFjaCgocGFnZSAsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodCgoaW5kZXgrMSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKChpbmRleCsxKSk7XHJcbiAgICAgICAgICAgICAgICBwYWdlLnpvbmVzLmZvckVhY2goem9uZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHpvbmUucGFyYWdyYXBocy5mb3JFYWNoKHBhcmFncmFwaCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lLnRleHQuaW5jbHVkZXMoc2VhcmNoVGV4dCkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsbGluZSwoaW5kZXgrMSkgLCBwYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgLy8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG9ubHkgb25lIHdvcmQgXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hUZXh0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICAgICAgdGhpcy5kaXNwYWxheVNlYXJjaFJlc3VsdHMoZG9jVmlld2VyKTtcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHNlYXJjaE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAvLyBJZiB0cnVlLCBhIHNlYXJjaCBvZiB0aGUgZW50aXJlIGRvY3VtZW50IHdpbGwgYmUgcGVyZm9ybWVkLiBPdGhlcndpc2UsIGEgc2luZ2xlIHNlYXJjaCB3aWxsIGJlIHBlcmZvcm1lZC5cclxuICAgICAgICAgIGZ1bGxTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAvLyBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgc2VhcmNoIHJldHVybnMgYSByZXN1bHQuXHJcbiAgICAgICAgICBvblJlc3VsdDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgLy8gd2l0aCAnUEFHRV9TVE9QJyBtb2RlLCB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZCBhZnRlciBlYWNoIHBhZ2UgaGFzIGJlZW4gc2VhcmNoZWQuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0Q29kZSA9PT0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLlJlc3VsdENvZGUuRk9VTkQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb24uUXVhZHMgPSByZXN1bHQucXVhZHMubWFwKHF1YWQgPT4gcXVhZC5nZXRQb2ludHMoKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhhbm5vdGF0aW9uLlF1YWRzKTtcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb24uUGFnZU51bWJlciA9IHJlc3VsdC5wYWdlTnVtO1xyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbi5TdHJva2VDb2xvciA9IG5ldyBBbm5vdGF0aW9ucy5Db2xvcigyNTAsMjA2LDAsMC41MDE5Nik7ICAgXHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uLkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRBbm90YXRpb25zLnB1c2goYW5ub3RhdGlvbikgICA7XHJcbiAgICAgICAgICAgICAgICBhbm5vdE1hbmFnZXIuYWRkQW5ub3RhdGlvbnMoW2Fubm90YXRpb25dKTtcclxuICAgICAgICAgICAgICAgIGFubm90TWFuYWdlci5kcmF3QW5ub3RhdGlvbnNGcm9tTGlzdChbYW5ub3RhdGlvbl0pO1xyXG4gICAgICAgICAgICAgICAgZG9jVmlld2VyLmRpc3BsYXlBZGRpdGlvbmFsU2VhcmNoUmVzdWx0cyhbcmVzdWx0XSk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBzZWFyY2hUZXh0QXJyYXkubWFwKHNlYXJjaGVkVGV4dCA9PiB7XHJcbiAgICAgICAgICBkb2NWaWV3ZXIudGV4dFNlYXJjaEluaXQoc2VhcmNoZWRUZXh0LCBtb2RlLCBzZWFyY2hPcHRpb25zKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gc2VhcmNoIGZvciBzaW5nbGUgd29yZCBpbiBhbGwgcGFnZXMgXHJcbiAgc2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoZWRXb3JkKXtcclxuICAgIHRoaXMucGFnZXMucGFnZXMuZm9yRWFjaCgocGFnZSAsIGluZGV4KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcbiAgICAgIHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG4gICAgICB0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodCgoaW5kZXgrMSkpO1xyXG4gICAgICB0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoKGluZGV4KzEpKTtcclxuICAgICAgY29uc3QgeCA9ICh0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuc3RhbmRhcmRXaWR0aCk7IC8vIHdpZHRoIHJhdGlvXHJcbiAgICAgIGNvbnN0IHkgPSAodGhpcy5wYWdlSGVpZ2h0IC8gdGhpcy5zdGFuZGFyZEhlaWdodCk7IC8vIGhlaWdodCByYXRpb1xyXG4gICAgICBwYWdlLnpvbmVzLmZvckVhY2goem9uZSA9PiB7XHJcbiAgICAgICAgem9uZS5wYXJhZ3JhcGhzLmZvckVhY2gocGFyYWdyYXBoID0+IHtcclxuICAgICAgICAgIHBhcmFncmFwaC5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICBsaW5lLndvcmRzLmZvckVhY2god29yZCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHdvcmQudGV4dC5pbmNsdWRlcyhzZWFyY2hlZFdvcmQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhbm5vdGF0aW9uLlBhZ2VOdW1iZXIgPSBpbmRleCsxO1xyXG4gICAgICAgICAgICAgICAgbGV0IHF1YWRzID0gW3tcclxuICAgICAgICAgICAgICAgICAgICB4MTogKHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCksXHJcbiAgICAgICAgICAgICAgICAgICAgeDI6ICh3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCksXHJcbiAgICAgICAgICAgICAgICAgICAgeDM6ICh3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCksXHJcbiAgICAgICAgICAgICAgICAgICAgeDQ6ICh3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueCAvIHgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHkxOiAod29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5KSxcclxuICAgICAgICAgICAgICAgICAgICB5MjogKHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC55IC8geSksXHJcbiAgICAgICAgICAgICAgICAgICAgeTM6ICh3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geSksXHJcbiAgICAgICAgICAgICAgICAgICAgeTQ6ICh3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geSksXHJcbiAgICAgICAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZ2xpZ2h0VGV4dChcclxuICAgICAgICAgICAgICAgICAgcXVhZHMsIFxyXG4gICAgICAgICAgICAgICAgICBpbmRleCsxXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RTZWFyY2hSZXN1bHQoc2VhcmNoZWRXb3JkICwgaW5kZXgrMSAsIHF1YWRzICwgbGluZS50ZXh0ICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBzZWFyY2ggZm9yIHdvcmQgaW4gc2luZ2xlIGxpbmUgXHJcbiAgU2VhcmNoRm9yV29yZEluTGluZShsaXN0T2ZTZWFyY2hlZFdvcmRzLCBsaW5lLCBwYWdlbnVtYmVyLCBwYWdlKSB7XHJcbiAgICB0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG4gICAgdGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcbiAgICB0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodCgocGFnZW51bWJlcikpO1xyXG4gICAgdGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKChwYWdlbnVtYmVyKSk7XHJcbiAgICBjb25zdCB4ID0gKHRoaXMucGFnZVdpZHRoIC8gdGhpcy5zdGFuZGFyZFdpZHRoKTsgLy8gd2lkdGggcmF0aW9cclxuICAgIGNvbnN0IHkgPSAodGhpcy5wYWdlSGVpZ2h0IC8gdGhpcy5zdGFuZGFyZEhlaWdodCk7IC8vIGhlaWdodCByYXRpb1xyXG4gICAgLy8gZmluZCBvbmx5IHdvcmRzIHJlbGF0ZWQgdG8gbXkgc2VhcmNoIGZvcm0gdGhlIGxpbmVcclxuICAgIGxldCBteUZvdW5kZWRSZXN1bHRzID0gW107XHJcbiAgICBsZXQgY29ycmVjdFJlc3VsdHMgPSBbXTtcclxuICAgIGxpbmUud29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChsaXN0T2ZTZWFyY2hlZFdvcmRzLmluZGV4T2Yod29yZC50ZXh0KSA+IC0xKSB7XHJcbiAgICAgICAgbXlGb3VuZGVkUmVzdWx0cy5wdXNoKHsgd29yZDogd29yZCwgd29yZEluZGV4OiB3b3JkSW5kZXggfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gZmluZCBvbmx5IHdvcmRzIGV4aXN0IGluIG15IHNlYXJjaCBzZW50ZW5jZSBhbmQgbm90IHNpbmdsZSBhbmQgcmVwZWF0ZWQgd29yZFxyXG4gICAgbXlGb3VuZGVkUmVzdWx0cy5tYXAoKHJlc3VsdCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKChteUZvdW5kZWRSZXN1bHRzW2luZGV4XVsnd29yZEluZGV4J10gLSAxID09PSAobXlGb3VuZGVkUmVzdWx0c1tpbmRleCAtIDFdICYmIG15Rm91bmRlZFJlc3VsdHNbaW5kZXggLSAxXVsnd29yZEluZGV4J10pKSB8fFxyXG4gICAgICAgIChteUZvdW5kZWRSZXN1bHRzW2luZGV4ICsgMV0gJiYgKG15Rm91bmRlZFJlc3VsdHNbaW5kZXggKyAxXVsnd29yZEluZGV4J10gLSAxID09PSBteUZvdW5kZWRSZXN1bHRzW2luZGV4XVsnd29yZEluZGV4J10pKSkge1xyXG4gICAgICAgIGNvcnJlY3RSZXN1bHRzLnB1c2gocmVzdWx0KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIGhpZ2hsaWh0IHRoZXNlIHdvcmRzIGFmdGVyIGVsZW1pbmF0aW5nIGFsbCByZXBlYXRlZCBhbmQgcmVsYXRlZCB3b3Jkc1xyXG4gICAgLy8gbXVzdCBiZSBmb3IgbG9vcCBzcCBpIGNhbiBjb250cm9sIHRoZSBzdGVwIGluIGVhY2ggbG9vcFxyXG4gICAgbGV0IHF1YWRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcnJlY3RSZXN1bHRzLmxlbmd0aDsgKGkgPSBpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGgpKSB7XHJcbiAgICAgIHF1YWRzLnB1c2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgeDE6IChjb3JyZWN0UmVzdWx0c1soKGkgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCkgLSAxKV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4KSxcclxuICAgICAgICAgIHgyOiAoY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgpLFxyXG4gICAgICAgICAgeDM6IChjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCksXHJcbiAgICAgICAgICB4NDogKGNvcnJlY3RSZXN1bHRzWygoaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoKSAtIDEpXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueCAvIHgpLFxyXG4gICAgICAgICAgeTE6IChjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHkpLFxyXG4gICAgICAgICAgeTI6IChjb3JyZWN0UmVzdWx0c1soKGkgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCkgLSAxKV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5KSxcclxuICAgICAgICAgIHkzOiAoY29ycmVjdFJlc3VsdHNbKChpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGgpIC0gMSldLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5KSxcclxuICAgICAgICAgIHk0OiAoY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueSAvIHkpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmhpZ2xpZ2h0VGV4dChcclxuICAgICAgICBxdWFkcyxcclxuICAgICAgICBwYWdlbnVtYmVyXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0U2VhcmNoUmVzdWx0KGxpc3RPZlNlYXJjaGVkV29yZHMuam9pbihcIiBcIikgLCBwYWdlbnVtYmVyICwgcXVhZHMgLCBsaW5lLnRleHQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RTZWFyY2hSZXN1bHQoc2VhcmNoZWRUZXh0ICwgcGFnZU51bSAsIHF1YWRzICwgbGluZSl7XHJcbiAgIGxldCBteVNlYXJjaFN0YXJ0VGV4dEluZGV4ID0gbGluZS5pbmRleE9mKHNlYXJjaGVkVGV4dCk7XHJcbiAgIGxldCBteVNlZWFyY2hlZFRleHRFbmRJbmRleCA9IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggKyBzZWFyY2hlZFRleHQubGVuZ3RoO1xyXG4gICAgbGV0IHNlYXJjaFJlc3VsdE9iamVjdCA9IHtcclxuICAgICAgICBhbWJpZW50U3RyOiBsaW5lLFxyXG4gICAgICAgIHJlc3VsdFN0cjogc2VhcmNoZWRUZXh0LFxyXG4gICAgICAgIHJlc3VsdFN0clN0YXJ0Om15U2VhcmNoU3RhcnRUZXh0SW5kZXgsXHJcbiAgICAgICAgcmVzdWx0U3RyRW5kOiBteVNlZWFyY2hlZFRleHRFbmRJbmRleCxcclxuICAgICAgICBwYWdlTnVtOiBwYWdlTnVtLFxyXG4gICAgICAgIHJlc3VsdENvZGU6IDIsXHJcbiAgICAgICAgcXVhZHM6IFt7XHJcbiAgICAgICAgICAgIGVhOiBxdWFkc1swXVsneTMnXSxcclxuICAgICAgICAgICAgZmE6IHF1YWRzWzBdWyd5NCddLFxyXG4gICAgICAgICAgICBoYTogcXVhZHNbMF1bJ3gxJ10sXHJcbiAgICAgICAgICAgIGlhOiBxdWFkc1swXVsneDInXSxcclxuICAgICAgICAgICAgcEI6IHF1YWRzWzBdWyd4MyddLFxyXG4gICAgICAgICAgICBxQjogcXVhZHNbMF1bJ3g0J10sXHJcbiAgICAgICAgICAgIHJCOiBxdWFkc1swXVsneTEnXSxcclxuICAgICAgICAgICAgc0I6IHF1YWRzWzBdWyd5MiddXHJcbiAgICAgICAgfV1cclxuICAgIH1cclxuICAgIHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzLnB1c2goc2VhcmNoUmVzdWx0T2JqZWN0KTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuICB9XHJcblxyXG4gIGRpc3BhbGF5U2VhcmNoUmVzdWx0cyhkb2NWaWV3ZXIpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgZG9jVmlld2VyLmRpc3BsYXlBZGRpdGlvbmFsU2VhcmNoUmVzdWx0cyh0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLy8gZHJhdyBoaWxpZ3RoaW5nIGFyb3VuZCBjZXJ0YWluIGNoYXJhdGFjdGVyc1xyXG4gIGhpZ2xpZ2h0VGV4dChxdWFkcywgcGFnZU51bWJlcikge1xyXG4gICAgY29uc3QgaGlnaGxpZ2h0aW5nQW5ub3QgPSBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG4gICAgaGlnaGxpZ2h0aW5nQW5ub3QuU3Ryb2tlQ29sb3IgPSBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5Db2xvcigyNTAsMjA2LDAsMC41MDE5Nik7XHJcbiAgICBoaWdobGlnaHRpbmdBbm5vdC5RdWFkcyA9IHF1YWRzO1xyXG4gICAgaGlnaGxpZ2h0aW5nQW5ub3QuUGFnZU51bWJlciA9IHBhZ2VOdW1iZXI7XHJcbiAgICBoaWdobGlnaHRpbmdBbm5vdC5BdXRob3IgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgdGhpcy5zYXZlZEFub3RhdGlvbnMucHVzaChoaWdobGlnaHRpbmdBbm5vdCk7XHJcbiAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9uKGhpZ2hsaWdodGluZ0Fubm90KTtcclxuXHJcbiAgICAvLyBuZWVkIHRvIGRyYXcgdGhlIGFubm90YXRpb24gb3RoZXJ3aXNlIGl0IHdvbid0IHNob3cgdXAgdW50aWwgdGhlIHBhZ2UgaXMgcmVmcmVzaGVkXHJcbiAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGhpZ2hsaWdodGluZ0Fubm90KTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZuID0gKHNlYXJjaFZhbHVlLCBvcHRpb25zKSA9PiB7XHJcbiAgICB0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdO1xyXG4gICBpZih0aGlzLnNhdmVkQW5vdGF0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICB0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoYW5ub3RhdGlvbiA9PiB7XHJcbiAgICAgICBhbm5vdGF0aW9uLkhpZGRlbiA9IHRydWU7XHJcbiAgICAgLy8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG4gICAgIHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcbiAgIH0pO1xyXG4gICB9XHJcbiAgIC8vIGRvbid0IGRvIGFueSBzZWFyY2ggdW50aWwgdGhlcmUgaXMgYSBzZWFyY2ggcGF0dGVyblxyXG4gICBpZihzZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoID4gMCl7XHJcbiAgICAgICBpZiAodGhpcy5maWxlV2l0aE9jcikge1xyXG4gICAgICAgICAvLyBhZGQgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggc2VhcmNoIHJlc3VsdFxyXG4gICAgICAgICAgIC8vIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuICAgICAgICAgICBsZXQgbXlTZWFyY2ggPSBzZWFyY2hWYWx1ZS5zcGxpdCgnICcpO1xyXG4gICAgICAgICAgIGlmKG15U2VhcmNoLmxlbmd0aCA+IDEpe1xyXG4gICAgICAgICAgICAgLy8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgd29yZFxyXG4gICAgICAgICAgICAgdGhpcy5wYWdlcy5wYWdlcy5mb3JFYWNoKChwYWdlICwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgdGhpcy5wYWdlSGVpZ2h0ID0gcGFnZS5wYWdlX2hlaWdodDtcclxuICAgICAgICAgICAgICAgdGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc3RhbmRhcmRIZWlnaHQgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlSGVpZ2h0KChpbmRleCsxKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aCgoaW5kZXgrMSkpO1xyXG4gICAgICAgICAgICAgICBwYWdlLnpvbmVzLmZvckVhY2goem9uZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgem9uZS5wYXJhZ3JhcGhzLmZvckVhY2gocGFyYWdyYXBoID0+IHtcclxuICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaC5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZihsaW5lLnRleHQuaW5jbHVkZXMoc2VhcmNoVmFsdWUpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsbGluZSwoaW5kZXgrMSkgLCBwYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggb25seSBvbmUgd29yZCBcclxuICAgICAgICAgICAgIHRoaXMuc2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoVmFsdWUpXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgdGhpcy5kaXNwYWxheVNlYXJjaFJlc3VsdHModGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIpO1xyXG4gICAgICAgfVxyXG4gfWVsc2V7XHJcbiAgIHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG4gfVxyXG59XHJcblxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmNsb3NlRG9jdW1lbnQoKS50aGVuKCgpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZG9jdW1lbnQgY2xvc2VkIScpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA/IHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2ZpbGVWaWV3ZXIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPjwvZGl2PlxyXG4iXX0=