nuxeo-development-framework 3.1.6 → 3.1.8

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/bundles/nuxeo-development-framework.umd.js +29449 -0
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -0
  3. package/esm2015/lib/Core/adapters/adapter.service.js +50 -0
  4. package/esm2015/lib/Core/core.module.js +107 -0
  5. package/esm2015/lib/Core/enums/language.enum.js +6 -0
  6. package/esm2015/lib/Core/models/component.model.js +8 -0
  7. package/esm2015/lib/Core/services/callApi/call-api.service.js +33 -0
  8. package/esm2015/lib/Core/services/extension/action.extensions.js +9 -0
  9. package/esm2015/lib/Core/services/extension/component-register.service.js +25 -0
  10. package/esm2015/lib/Core/services/extension/extenion-utils.js +115 -0
  11. package/esm2015/lib/Core/services/extension/extension-element.js +2 -0
  12. package/esm2015/lib/Core/services/extension/extension-loader.service.js +127 -0
  13. package/esm2015/lib/Core/services/extension/extension.service.js +120 -0
  14. package/esm2015/lib/Core/services/initialization/initialization.service.js +57 -0
  15. package/esm2015/lib/Core/services/localStorag/local-storag.service.js +123 -0
  16. package/esm2015/lib/Core/services/nuxeo/nuxeo-override.js +82 -0
  17. package/esm2015/lib/Core/services/nuxeo/nuxeo.service.js +120 -0
  18. package/esm2015/lib/Core/services/roles/roles.service.js +119 -0
  19. package/esm2015/lib/Core/services/translation/translate-loader.service.js +150 -0
  20. package/esm2015/lib/Core/services/translation/translation.service.js +174 -0
  21. package/esm2015/lib/Core/services/user/user-preferences.service.js +153 -0
  22. package/esm2015/lib/Core/utilities/moment-date-adapter.js +178 -0
  23. package/esm2015/lib/Core/utilities/utility.service.js +81 -0
  24. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +188 -0
  25. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
  26. package/esm2015/lib/components/activities-log/activities-log.module.js +41 -0
  27. package/esm2015/lib/components/activity/activity/activity.component.js +28 -0
  28. package/esm2015/lib/components/activity/activity.module.js +37 -0
  29. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
  30. package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
  31. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
  32. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
  33. package/esm2015/lib/components/avatar/avatar/avatar.component.js +55 -0
  34. package/esm2015/lib/components/avatar/avatar.module.js +32 -0
  35. package/esm2015/lib/components/card/card.component.js +48 -0
  36. package/esm2015/lib/components/card/card.module.js +23 -0
  37. package/esm2015/lib/components/comments/comments.module.js +82 -0
  38. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +86 -0
  39. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +81 -0
  40. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +73 -0
  41. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +63 -0
  42. package/esm2015/lib/components/comments/constants/comment.js +25 -0
  43. package/esm2015/lib/components/comments/services/comment-api.service.js +71 -0
  44. package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +75 -0
  45. package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +27 -0
  46. package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +29 -0
  47. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
  48. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
  49. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +137 -0
  50. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +133 -0
  51. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +110 -0
  52. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +68 -0
  53. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +75 -0
  54. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +111 -0
  55. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +153 -0
  56. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +50 -0
  57. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +69 -0
  58. package/esm2015/lib/components/create-entity/create-entity.module.js +36 -0
  59. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +140 -0
  60. package/esm2015/lib/components/cts-tags/cts-tags.module.js +65 -0
  61. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +90 -0
  62. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +82 -0
  63. package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +36 -0
  64. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +2 -0
  65. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +41 -0
  66. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
  67. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
  68. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
  69. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +156 -0
  70. package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +75 -0
  71. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +252 -0
  72. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +974 -0
  73. package/esm2015/lib/components/documents/components/document-scan/document-scan.service.js +30 -0
  74. package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +159 -0
  75. package/esm2015/lib/components/documents/components/documents/documents.component.js +63 -0
  76. package/esm2015/lib/components/documents/constants/document-templates.js +32 -0
  77. package/esm2015/lib/components/documents/constants/documents.js +86 -0
  78. package/esm2015/lib/components/documents/documents.module.js +123 -0
  79. package/esm2015/lib/components/documents/services/document-templates.service.js +115 -0
  80. package/esm2015/lib/components/documents/services/documents.service.js +223 -0
  81. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +391 -0
  82. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +34 -0
  83. package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +164 -0
  84. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +552 -0
  85. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
  86. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
  87. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +137 -0
  88. package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +27 -0
  89. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +130 -0
  90. package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +105 -0
  91. package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +127 -0
  92. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +107 -0
  93. package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +35 -0
  94. package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +165 -0
  95. package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +71 -0
  96. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +202 -0
  97. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +78 -0
  98. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +13 -0
  99. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +204 -0
  100. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +203 -0
  101. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +95 -0
  102. package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +85 -0
  103. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +139 -0
  104. package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +81 -0
  105. package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +36 -0
  106. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +106 -0
  107. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +93 -0
  108. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +207 -0
  109. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +311 -0
  110. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +44 -0
  111. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +191 -0
  112. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +81 -0
  113. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +180 -0
  114. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +279 -0
  115. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +68 -0
  116. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +314 -0
  117. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +47 -0
  118. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +178 -0
  119. package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +768 -0
  120. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +35 -0
  121. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +17 -0
  122. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +34 -0
  123. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +17 -0
  124. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +74 -0
  125. package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.js +30 -0
  126. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +32 -0
  127. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +30 -0
  128. package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +17 -0
  129. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +299 -0
  130. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +2 -0
  131. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +2 -0
  132. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +2 -0
  133. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +2 -0
  134. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +2 -0
  135. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +2 -0
  136. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +2 -0
  137. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +2 -0
  138. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +2 -0
  139. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +10 -0
  140. package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +63 -0
  141. package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +20 -0
  142. package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +24 -0
  143. package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +12 -0
  144. package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +16 -0
  145. package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +17 -0
  146. package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +32 -0
  147. package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +8 -0
  148. package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +46 -0
  149. package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +60 -0
  150. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +83 -0
  151. package/esm2015/lib/components/dynamic-form/validators/length-validator.js +15 -0
  152. package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +15 -0
  153. package/esm2015/lib/components/dynamic-form/validators/required-validator.js +9 -0
  154. package/esm2015/lib/components/dynamic-form/validators/value-validator.js +15 -0
  155. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +323 -0
  156. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +61 -0
  157. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +238 -0
  158. package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +44 -0
  159. package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +16 -0
  160. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
  161. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
  162. package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +36 -0
  163. package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +59 -0
  164. package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +68 -0
  165. package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +33 -0
  166. package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +33 -0
  167. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +55 -0
  168. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +89 -0
  169. package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +61 -0
  170. package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +69 -0
  171. package/esm2015/lib/components/dynamic-view/dynamic-viewe.service.js +62 -0
  172. package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +40 -0
  173. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
  174. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +264 -0
  175. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +121 -0
  176. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
  177. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
  178. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
  179. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +74 -0
  180. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
  181. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
  182. package/esm2015/lib/components/file-manger/components/move/move.component.js +110 -0
  183. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
  184. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
  185. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +314 -0
  186. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
  187. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +257 -0
  188. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
  189. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
  190. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
  191. package/esm2015/lib/components/file-manger/file-manager.abstract.js +1040 -0
  192. package/esm2015/lib/components/file-manger/file-manger.module.js +295 -0
  193. package/esm2015/lib/components/filter/filter/filter.component.js +94 -0
  194. package/esm2015/lib/components/filter/filter.module.js +45 -0
  195. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +123 -0
  196. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +126 -0
  197. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +165 -0
  198. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +32 -0
  199. package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +58 -0
  200. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +71 -0
  201. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +30 -0
  202. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +43 -0
  203. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +26 -0
  204. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +5 -0
  205. package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +75 -0
  206. package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +70 -0
  207. package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +27 -0
  208. package/esm2015/lib/components/latest-activity/constants/activitylog.js +80 -0
  209. package/esm2015/lib/components/latest-activity/latest-activity.module.js +57 -0
  210. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +33 -0
  211. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
  212. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
  213. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +137 -0
  214. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +22 -0
  215. package/esm2015/lib/components/notifications/components/notification-toast/notification-toast.component.js +57 -0
  216. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +172 -0
  217. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +164 -0
  218. package/esm2015/lib/components/notifications/notifications.module.js +109 -0
  219. package/esm2015/lib/components/notifications/notifications.service.js +280 -0
  220. package/esm2015/lib/components/pagination/pagination/pagination.component.js +124 -0
  221. package/esm2015/lib/components/pagination/pagination.module.js +32 -0
  222. package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +24 -0
  223. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +745 -0
  224. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +239 -0
  225. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
  226. package/esm2015/lib/components/permissions/permission.service.js +118 -0
  227. package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
  228. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
  229. package/esm2015/lib/components/permissions/permissions.module.js +71 -0
  230. package/esm2015/lib/components/select/select/select.component.js +130 -0
  231. package/esm2015/lib/components/select/select.module.js +37 -0
  232. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
  233. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
  234. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
  235. package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +64 -0
  236. package/esm2015/lib/components/table/table/table.component.js +227 -0
  237. package/esm2015/lib/components/table/table.module.js +61 -0
  238. package/esm2015/lib/components/user/user/user.component.js +31 -0
  239. package/esm2015/lib/components/user/user.module.js +30 -0
  240. package/esm2015/lib/components/users-card/users-card.component.js +43 -0
  241. package/esm2015/lib/components/users-card/users-card.module.js +28 -0
  242. package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +33 -0
  243. package/esm2015/lib/components/viewer-log/viewer-log.module.js +20 -0
  244. package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +2 -0
  245. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +49 -0
  246. package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +106 -0
  247. package/esm2015/lib/components/vocabulary/vocabulary.module.js +34 -0
  248. package/esm2015/lib/configuration/app-config.service.js +30 -0
  249. package/esm2015/lib/configuration/helpers/app-initializer.js +4 -0
  250. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +61 -0
  251. package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +29 -0
  252. package/esm2015/lib/directive/directive.module.js +52 -0
  253. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
  254. package/esm2015/lib/directive/permissions/evaluators.service.js +152 -0
  255. package/esm2015/lib/directive/permissions/permissions.directive.js +69 -0
  256. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +28 -0
  257. package/esm2015/lib/directive/rtl/set-rtl.directive.js +29 -0
  258. package/esm2015/lib/nuxeo-development-framework.component.js +26 -0
  259. package/esm2015/lib/nuxeo-development-framework.module.js +50 -0
  260. package/esm2015/lib/nuxeo-development-framework.service.js +14 -0
  261. package/esm2015/lib/pipes/file-size.pipe.js +57 -0
  262. package/esm2015/lib/pipes/hijri-date.pipe.js +46 -0
  263. package/esm2015/lib/pipes/localized-date.pipe.js +81 -0
  264. package/esm2015/lib/pipes/multi-value.pipe.js +42 -0
  265. package/esm2015/lib/pipes/pipes.module.js +29 -0
  266. package/esm2015/lib/pipes/secure-html.pipe.js +34 -0
  267. package/esm2015/lib/pipes/secure.pipe.js +40 -0
  268. package/esm2015/lib/pipes/time-ago.pipe.js +68 -0
  269. package/esm2015/lib/shared/components/button/button.component.js +87 -0
  270. package/esm2015/lib/shared/components/item-list/item-list.component.js +77 -0
  271. package/esm2015/lib/shared/components/no-data/no-data.component.js +37 -0
  272. package/esm2015/lib/shared/components/read-more/read-more.component.js +108 -0
  273. package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +146 -0
  274. package/esm2015/lib/shared/components/spinner/spinner.component.js +29 -0
  275. package/esm2015/lib/shared/components/user-card/user-card.component.js +49 -0
  276. package/esm2015/lib/shared/libraryShared.module.js +81 -0
  277. package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
  278. package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
  279. package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
  280. package/esm2015/lib/shared-services/file-manager.service.js +793 -0
  281. package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
  282. package/esm2015/lib/shared-services/mainfolder.service.js +162 -0
  283. package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
  284. package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
  285. package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
  286. package/esm2015/lib/shared-services/shared-services.module.js +20 -0
  287. package/esm2015/lib/shared-services/upload-file.service.js +29 -0
  288. package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
  289. package/esm2015/lib/shared-services/user.service.js +54 -0
  290. package/esm2015/nuxeo-development-framework.js +5 -0
  291. package/esm2015/public-api.js +237 -0
  292. package/fesm2015/nuxeo-development-framework.js +27436 -0
  293. package/fesm2015/nuxeo-development-framework.js.map +1 -0
  294. package/lib/Core/adapters/adapter.service.d.ts +11 -0
  295. package/lib/Core/core.module.d.ts +14 -0
  296. package/lib/Core/enums/language.enum.d.ts +4 -0
  297. package/lib/Core/models/component.model.d.ts +6 -0
  298. package/lib/Core/services/callApi/call-api.service.d.ts +11 -0
  299. package/lib/Core/services/extension/action.extensions.d.ts +31 -0
  300. package/lib/Core/services/extension/component-register.service.d.ts +17 -0
  301. package/lib/Core/services/extension/extenion-utils.d.ts +14 -0
  302. package/lib/Core/services/extension/extension-element.d.ts +5 -0
  303. package/lib/Core/services/extension/extension-loader.service.d.ts +28 -0
  304. package/lib/Core/services/extension/extension.service.d.ts +70 -0
  305. package/lib/Core/services/initialization/initialization.service.d.ts +14 -0
  306. package/lib/Core/services/localStorag/local-storag.service.d.ts +41 -0
  307. package/lib/Core/services/nuxeo/nuxeo-override.d.ts +8 -0
  308. package/lib/Core/services/nuxeo/nuxeo.service.d.ts +33 -0
  309. package/lib/Core/services/roles/roles.service.d.ts +12 -0
  310. package/lib/Core/services/translation/translate-loader.service.d.ts +26 -0
  311. package/lib/Core/services/translation/translation.service.d.ts +74 -0
  312. package/lib/Core/services/user/user-preferences.service.d.ts +80 -0
  313. package/lib/Core/utilities/moment-date-adapter.d.ts +37 -0
  314. package/lib/Core/utilities/utility.service.d.ts +11 -0
  315. package/lib/components/activities-log/activities-log/activities-log.component.d.ts +26 -0
  316. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
  317. package/lib/components/activities-log/activities-log.module.d.ts +12 -0
  318. package/lib/components/activity/activity/activity.component.d.ts +13 -0
  319. package/lib/components/activity/activity.module.d.ts +13 -0
  320. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
  321. package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
  322. package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
  323. package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
  324. package/lib/components/avatar/avatar/avatar.component.d.ts +23 -0
  325. package/lib/components/avatar/avatar.module.d.ts +13 -0
  326. package/lib/components/card/card.component.d.ts +32 -0
  327. package/lib/components/card/card.module.d.ts +12 -0
  328. package/lib/components/comments/comments.module.d.ts +26 -0
  329. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +24 -0
  330. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +46 -0
  331. package/lib/components/comments/components/comments-list/comments-list.component.d.ts +28 -0
  332. package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +22 -0
  333. package/lib/components/comments/constants/comment.d.ts +25 -0
  334. package/lib/components/comments/services/comment-api.service.d.ts +16 -0
  335. package/lib/components/confirm-caller/confirm-caller.dialog.d.ts +46 -0
  336. package/lib/components/confirm-caller/confirm-caller.module.d.ts +16 -0
  337. package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  338. package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
  339. package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
  340. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +34 -0
  341. package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +42 -0
  342. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +31 -0
  343. package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts +18 -0
  344. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +38 -0
  345. package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +30 -0
  346. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +26 -0
  347. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +18 -0
  348. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +17 -0
  349. package/lib/components/create-entity/create-entity.module.d.ts +11 -0
  350. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +38 -0
  351. package/lib/components/cts-tags/cts-tags.module.d.ts +21 -0
  352. package/lib/components/cts-tags/services/tags-api.service.d.ts +17 -0
  353. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +30 -0
  354. package/lib/components/custom-toastr/custom-toastr.module.d.ts +12 -0
  355. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -0
  356. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +18 -0
  357. package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
  358. package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
  359. package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
  360. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +54 -0
  361. package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts +38 -0
  362. package/lib/components/documents/components/document-list/documents-list.component.d.ts +81 -0
  363. package/lib/components/documents/components/document-scan/document-scan.component.d.ts +112 -0
  364. package/lib/components/documents/components/document-scan/document-scan.service.d.ts +14 -0
  365. package/lib/components/documents/components/document-upload/document-upload.component.d.ts +58 -0
  366. package/lib/components/documents/components/documents/documents.component.d.ts +27 -0
  367. package/lib/components/documents/constants/document-templates.d.ts +33 -0
  368. package/lib/components/documents/constants/documents.d.ts +95 -0
  369. package/lib/components/documents/documents.module.d.ts +33 -0
  370. package/lib/components/documents/services/document-templates.service.d.ts +24 -0
  371. package/lib/components/documents/services/documents.service.d.ts +36 -0
  372. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +66 -0
  373. package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +16 -0
  374. package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +33 -0
  375. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +37 -0
  376. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
  377. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
  378. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +55 -0
  379. package/lib/components/dynamic-filter/dynamic-filter.module.d.ts +17 -0
  380. package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +28 -0
  381. package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +27 -0
  382. package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts +6 -0
  383. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +21 -0
  384. package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts +17 -0
  385. package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts +57 -0
  386. package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts +35 -0
  387. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +70 -0
  388. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +52 -0
  389. package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts +12 -0
  390. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +76 -0
  391. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +29 -0
  392. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +21 -0
  393. package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +30 -0
  394. package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +64 -0
  395. package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts +25 -0
  396. package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts +15 -0
  397. package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts +45 -0
  398. package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts +41 -0
  399. package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts +65 -0
  400. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +85 -0
  401. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +13 -0
  402. package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts +80 -0
  403. package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts +40 -0
  404. package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts +71 -0
  405. package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts +89 -0
  406. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +19 -0
  407. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +104 -0
  408. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +16 -0
  409. package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts +79 -0
  410. package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +599 -0
  411. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts +13 -0
  412. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts +2 -0
  413. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts +13 -0
  414. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts +2 -0
  415. package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.d.ts +16 -0
  416. package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.d.ts +2 -0
  417. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts +13 -0
  418. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts +2 -0
  419. package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts +9 -0
  420. package/lib/components/dynamic-form/dynamic-form.module.d.ts +66 -0
  421. package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts +5 -0
  422. package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts +5 -0
  423. package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts +15 -0
  424. package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts +4 -0
  425. package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts +12 -0
  426. package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts +8 -0
  427. package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts +10 -0
  428. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts +5 -0
  429. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts +8 -0
  430. package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts +21 -0
  431. package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts +11 -0
  432. package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts +13 -0
  433. package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts +9 -0
  434. package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts +8 -0
  435. package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts +11 -0
  436. package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts +15 -0
  437. package/lib/components/dynamic-form/services/card-item-types.service.d.ts +13 -0
  438. package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts +36 -0
  439. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +25 -0
  440. package/lib/components/dynamic-form/validators/length-validator.d.ts +7 -0
  441. package/lib/components/dynamic-form/validators/regex-validator.d.ts +7 -0
  442. package/lib/components/dynamic-form/validators/required-validator.d.ts +5 -0
  443. package/lib/components/dynamic-form/validators/value-validator.d.ts +7 -0
  444. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +98 -0
  445. package/lib/components/dynamic-search/dynamic-search.module.d.ts +20 -0
  446. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +108 -0
  447. package/lib/components/dynamic-table/dynamic-table.module.d.ts +16 -0
  448. package/lib/components/dynamic-table/services/dynamic-table.service.d.ts +8 -0
  449. package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
  450. package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
  451. package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts +13 -0
  452. package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts +22 -0
  453. package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts +28 -0
  454. package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts +16 -0
  455. package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +12 -0
  456. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +22 -0
  457. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +30 -0
  458. package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts +37 -0
  459. package/lib/components/dynamic-view/dynamic-view.module.d.ts +23 -0
  460. package/lib/components/dynamic-view/dynamic-viewe.service.d.ts +15 -0
  461. package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts +20 -0
  462. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
  463. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +41 -0
  464. package/lib/components/file-manger/components/copy/copy.component.d.ts +33 -0
  465. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
  466. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
  467. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
  468. package/lib/components/file-manger/components/delete/delete.component.d.ts +24 -0
  469. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
  470. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
  471. package/lib/components/file-manger/components/move/move.component.d.ts +33 -0
  472. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
  473. package/lib/components/file-manger/components/rename/rename.component.d.ts +24 -0
  474. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
  475. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
  476. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
  477. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
  478. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +23 -0
  479. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
  480. package/lib/components/file-manger/file-manager.abstract.d.ts +173 -0
  481. package/lib/components/file-manger/file-manger.module.d.ts +59 -0
  482. package/lib/components/filter/filter/filter.component.d.ts +31 -0
  483. package/lib/components/filter/filter.module.d.ts +15 -0
  484. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +35 -0
  485. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +35 -0
  486. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +39 -0
  487. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts +9 -0
  488. package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts +15 -0
  489. package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts +15 -0
  490. package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts +9 -0
  491. package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts +11 -0
  492. package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts +10 -0
  493. package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts +4 -0
  494. package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts +19 -0
  495. package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts +22 -0
  496. package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts +10 -0
  497. package/lib/components/latest-activity/constants/activitylog.d.ts +82 -0
  498. package/lib/components/latest-activity/latest-activity.module.d.ts +19 -0
  499. package/lib/components/latest-activity/services/activity-log.service.d.ts +12 -0
  500. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
  501. package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
  502. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +25 -0
  503. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +10 -0
  504. package/lib/components/notifications/components/notification-toast/notification-toast.component.d.ts +19 -0
  505. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +30 -0
  506. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +51 -0
  507. package/lib/components/notifications/notifications.module.d.ts +24 -0
  508. package/lib/components/notifications/notifications.service.d.ts +64 -0
  509. package/lib/components/pagination/pagination/pagination.component.d.ts +46 -0
  510. package/lib/components/pagination/pagination.module.d.ts +13 -0
  511. package/lib/components/pdf-tron/pdf-tron.module.d.ts +8 -0
  512. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +102 -0
  513. package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts +33 -0
  514. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
  515. package/lib/components/permissions/permission.service.d.ts +21 -0
  516. package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
  517. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
  518. package/lib/components/permissions/permissions.module.d.ts +21 -0
  519. package/lib/components/select/select/select.component.d.ts +43 -0
  520. package/lib/components/select/select.module.d.ts +12 -0
  521. package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
  522. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
  523. package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
  524. package/lib/components/table/dynamic-column/dynamic-column.component.d.ts +19 -0
  525. package/lib/components/table/table/table.component.d.ts +108 -0
  526. package/lib/components/table/table.module.d.ts +20 -0
  527. package/lib/components/user/user/user.component.d.ts +13 -0
  528. package/lib/components/user/user.module.d.ts +10 -0
  529. package/lib/components/users-card/users-card.component.d.ts +22 -0
  530. package/lib/components/users-card/users-card.module.d.ts +17 -0
  531. package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts +12 -0
  532. package/lib/components/viewer-log/viewer-log.module.d.ts +10 -0
  533. package/lib/components/vocabulary/interfaces/op-type.interface.d.ts +1 -0
  534. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +16 -0
  535. package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts +37 -0
  536. package/lib/components/vocabulary/vocabulary.module.d.ts +11 -0
  537. package/lib/configuration/app-config.service.d.ts +14 -0
  538. package/lib/configuration/helpers/app-initializer.d.ts +2 -0
  539. package/lib/directive/app-has-role/app-has-role.directive.d.ts +18 -0
  540. package/lib/directive/clickOutSide/click-outside.directive.d.ts +11 -0
  541. package/lib/directive/directive.module.d.ts +17 -0
  542. package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
  543. package/lib/directive/permissions/evaluators.service.d.ts +37 -0
  544. package/lib/directive/permissions/permissions.directive.d.ts +42 -0
  545. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +13 -0
  546. package/lib/directive/rtl/set-rtl.directive.d.ts +13 -0
  547. package/lib/nuxeo-development-framework.component.d.ts +8 -0
  548. package/lib/nuxeo-development-framework.module.d.ts +13 -0
  549. package/lib/nuxeo-development-framework.service.d.ts +6 -0
  550. package/lib/pipes/file-size.pipe.d.ts +34 -0
  551. package/lib/pipes/hijri-date.pipe.d.ts +32 -0
  552. package/lib/pipes/localized-date.pipe.d.ts +44 -0
  553. package/lib/pipes/multi-value.pipe.d.ts +32 -0
  554. package/lib/pipes/pipes.module.d.ts +18 -0
  555. package/lib/pipes/secure-html.pipe.d.ts +26 -0
  556. package/lib/pipes/secure.pipe.d.ts +29 -0
  557. package/lib/pipes/time-ago.pipe.d.ts +34 -0
  558. package/lib/shared/components/button/button.component.d.ts +38 -0
  559. package/lib/shared/components/item-list/item-list.component.d.ts +45 -0
  560. package/lib/shared/components/no-data/no-data.component.d.ts +21 -0
  561. package/lib/shared/components/read-more/read-more.component.d.ts +37 -0
  562. package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts +51 -0
  563. package/lib/shared/components/spinner/spinner.component.d.ts +18 -0
  564. package/lib/shared/components/user-card/user-card.component.d.ts +30 -0
  565. package/lib/shared/libraryShared.module.d.ts +26 -0
  566. package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
  567. package/lib/shared-services/dynamic-form.service.d.ts +24 -0
  568. package/lib/shared-services/file-manager.adapter.d.ts +48 -0
  569. package/lib/shared-services/file-manager.service.d.ts +94 -0
  570. package/lib/shared-services/global-pdftron.service.d.ts +10 -0
  571. package/lib/shared-services/mainfolder.service.d.ts +32 -0
  572. package/lib/shared-services/publishing-document.service.d.ts +25 -0
  573. package/lib/shared-services/recently-viewed.service.d.ts +17 -0
  574. package/lib/shared-services/shared-docs.service.d.ts +21 -0
  575. package/lib/shared-services/shared-services.module.d.ts +7 -0
  576. package/lib/shared-services/upload-file.service.d.ts +10 -0
  577. package/lib/shared-services/upload-managment.service.d.ts +72 -0
  578. package/lib/shared-services/user.service.d.ts +12 -0
  579. package/nuxeo-development-framework.d.ts +5 -0
  580. package/package.json +70 -63
  581. package/public-api.d.ts +224 -0
  582. package/karma.conf.js +0 -44
  583. package/ng-package.json +0 -7
  584. package/src/lib/Core/adapters/adapter.service.ts +0 -46
  585. package/src/lib/Core/core.module.ts +0 -65
  586. package/src/lib/Core/enums/language.enum.ts +0 -4
  587. package/src/lib/Core/models/component.model.ts +0 -11
  588. package/src/lib/Core/services/callApi/call-api.service.ts +0 -31
  589. package/src/lib/Core/services/extension/action.extensions.ts +0 -35
  590. package/src/lib/Core/services/extension/component-register.service.ts +0 -25
  591. package/src/lib/Core/services/extension/extenion-utils.ts +0 -142
  592. package/src/lib/Core/services/extension/extension-element.ts +0 -6
  593. package/src/lib/Core/services/extension/extension-loader.service.ts +0 -160
  594. package/src/lib/Core/services/extension/extension.service.ts +0 -137
  595. package/src/lib/Core/services/initialization/initialization.service.ts +0 -50
  596. package/src/lib/Core/services/localStorag/local-storag.service.ts +0 -125
  597. package/src/lib/Core/services/nuxeo/nuxeo-override.ts +0 -86
  598. package/src/lib/Core/services/nuxeo/nuxeo.service.ts +0 -123
  599. package/src/lib/Core/services/roles/roles.service.spec.ts +0 -16
  600. package/src/lib/Core/services/roles/roles.service.ts +0 -122
  601. package/src/lib/Core/services/translation/translate-loader.service.ts +0 -173
  602. package/src/lib/Core/services/translation/translation.service.ts +0 -221
  603. package/src/lib/Core/services/user/user-preferences.service.ts +0 -172
  604. package/src/lib/Core/utilities/moment-date-adapter.ts +0 -203
  605. package/src/lib/Core/utilities/moment-dates-format.ts +0 -18
  606. package/src/lib/Core/utilities/utility.service.ts +0 -83
  607. package/src/lib/assets/scss/ej2/material.css +0 -1
  608. package/src/lib/assets/scss/mixins.scss +0 -38
  609. package/src/lib/assets/scss/myApp.scss +0 -487
  610. package/src/lib/assets/scss/variables.scss +0 -62
  611. package/src/lib/components/activities-log/activities-log/activities-log.component.html +0 -20
  612. package/src/lib/components/activities-log/activities-log/activities-log.component.scss +0 -12
  613. package/src/lib/components/activities-log/activities-log/activities-log.component.spec.ts +0 -25
  614. package/src/lib/components/activities-log/activities-log/activities-log.component.ts +0 -177
  615. package/src/lib/components/activities-log/activities-log/activities-log.service.ts +0 -30
  616. package/src/lib/components/activities-log/activities-log.module.ts +0 -23
  617. package/src/lib/components/activity/activity/activity.component.html +0 -28
  618. package/src/lib/components/activity/activity/activity.component.scss +0 -33
  619. package/src/lib/components/activity/activity/activity.component.spec.ts +0 -25
  620. package/src/lib/components/activity/activity/activity.component.ts +0 -23
  621. package/src/lib/components/activity/activity.module.ts +0 -24
  622. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.html +0 -36
  623. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.scss +0 -21
  624. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.spec.ts +0 -25
  625. package/src/lib/components/attachment-item/attachment-item/attachment-item.component.ts +0 -35
  626. package/src/lib/components/attachment-item/attachment-item.module.ts +0 -26
  627. package/src/lib/components/attachment-modal/attachment-modal.module.ts +0 -24
  628. package/src/lib/components/attachment-modal/attachments/attachments.component.html +0 -41
  629. package/src/lib/components/attachment-modal/attachments/attachments.component.scss +0 -5
  630. package/src/lib/components/attachment-modal/attachments/attachments.component.spec.ts +0 -25
  631. package/src/lib/components/attachment-modal/attachments/attachments.component.ts +0 -161
  632. package/src/lib/components/avatar/avatar/avatar.component.html +0 -13
  633. package/src/lib/components/avatar/avatar/avatar.component.scss +0 -32
  634. package/src/lib/components/avatar/avatar/avatar.component.spec.ts +0 -25
  635. package/src/lib/components/avatar/avatar/avatar.component.ts +0 -50
  636. package/src/lib/components/avatar/avatar.module.ts +0 -21
  637. package/src/lib/components/card/card.component.html +0 -35
  638. package/src/lib/components/card/card.component.scss +0 -81
  639. package/src/lib/components/card/card.component.spec.ts +0 -25
  640. package/src/lib/components/card/card.component.ts +0 -38
  641. package/src/lib/components/card/card.module.ts +0 -15
  642. package/src/lib/components/comments/comments.module.ts +0 -48
  643. package/src/lib/components/comments/components/comment-item/comment-item.component.html +0 -32
  644. package/src/lib/components/comments/components/comment-item/comment-item.component.scss +0 -41
  645. package/src/lib/components/comments/components/comment-item/comment-item.component.ts +0 -70
  646. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.html +0 -58
  647. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.scss +0 -69
  648. package/src/lib/components/comments/components/comments-dashlet/comments-dashlet.component.ts +0 -80
  649. package/src/lib/components/comments/components/comments-list/comments-list.component.html +0 -43
  650. package/src/lib/components/comments/components/comments-list/comments-list.component.scss +0 -103
  651. package/src/lib/components/comments/components/comments-list/comments-list.component.ts +0 -61
  652. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.html +0 -22
  653. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.scss +0 -48
  654. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.spec.ts +0 -25
  655. package/src/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.ts +0 -56
  656. package/src/lib/components/comments/constants/comment.ts +0 -25
  657. package/src/lib/components/comments/services/comment-api.service.ts +0 -85
  658. package/src/lib/components/confirm-caller/confirm-caller.dialog.html +0 -26
  659. package/src/lib/components/confirm-caller/confirm-caller.dialog.scss +0 -34
  660. package/src/lib/components/confirm-caller/confirm-caller.dialog.ts +0 -68
  661. package/src/lib/components/confirm-caller/confirm-caller.module.ts +0 -19
  662. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.html +0 -13
  663. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.scss +0 -0
  664. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.spec.ts +0 -25
  665. package/src/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.ts +0 -18
  666. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.html +0 -24
  667. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.scss +0 -0
  668. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.spec.ts +0 -25
  669. package/src/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.ts +0 -19
  670. package/src/lib/components/confirmation-dialog/confirmation-dialog.module.ts +0 -18
  671. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.html +0 -27
  672. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.scss +0 -34
  673. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.spec.ts +0 -25
  674. package/src/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.ts +0 -149
  675. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.html +0 -92
  676. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.scss +0 -124
  677. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.spec.ts +0 -25
  678. package/src/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.ts +0 -132
  679. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.html +0 -33
  680. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.scss +0 -42
  681. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.spec.ts +0 -25
  682. package/src/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.ts +0 -111
  683. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.html +0 -20
  684. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.scss +0 -9
  685. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.spec.ts +0 -25
  686. package/src/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.ts +0 -64
  687. package/src/lib/components/correspondence-relation/components/versions/versions.component.html +0 -80
  688. package/src/lib/components/correspondence-relation/components/versions/versions.component.scss +0 -0
  689. package/src/lib/components/correspondence-relation/components/versions/versions.component.ts +0 -71
  690. package/src/lib/components/correspondence-relation/correspondence-relation.module.ts +0 -59
  691. package/src/lib/components/correspondence-relation/services/correspondence-realation.service.ts +0 -192
  692. package/src/lib/components/correspondence-relation/services/viewer-files.service.ts +0 -51
  693. package/src/lib/components/create-entity/create-entity/create-entity.component.html +0 -18
  694. package/src/lib/components/create-entity/create-entity/create-entity.component.scss +0 -90
  695. package/src/lib/components/create-entity/create-entity/create-entity.component.spec.ts +0 -25
  696. package/src/lib/components/create-entity/create-entity/create-entity.component.ts +0 -57
  697. package/src/lib/components/create-entity/create-entity.module.ts +0 -22
  698. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.html +0 -57
  699. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.scss +0 -43
  700. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.spec.ts +0 -25
  701. package/src/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.ts +0 -133
  702. package/src/lib/components/cts-tags/cts-tags.module.ts +0 -35
  703. package/src/lib/components/cts-tags/services/tags-api.service.ts +0 -106
  704. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.html +0 -44
  705. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.scss +0 -91
  706. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.spec.ts +0 -25
  707. package/src/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.ts +0 -79
  708. package/src/lib/components/custom-toastr/custom-toastr.module.ts +0 -19
  709. package/src/lib/components/custom-toastr/interfaces/toast-type.interface.ts +0 -1
  710. package/src/lib/components/custom-toastr/services/custom-toastr.service.ts +0 -56
  711. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.html +0 -37
  712. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.scss +0 -73
  713. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.spec.ts +0 -25
  714. package/src/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.ts +0 -34
  715. package/src/lib/components/display-suitable-icon/display-suitable-icon/icon.service.ts +0 -107
  716. package/src/lib/components/display-suitable-icon/display-suitable-icon.module.ts +0 -16
  717. package/src/lib/components/documents/components/attachments-list/attachments-list.component.html +0 -92
  718. package/src/lib/components/documents/components/attachments-list/attachments-list.component.scss +0 -65
  719. package/src/lib/components/documents/components/attachments-list/attachments-list.component.spec.ts +0 -25
  720. package/src/lib/components/documents/components/attachments-list/attachments-list.component.ts +0 -162
  721. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.html +0 -36
  722. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.scss +0 -44
  723. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.spec.ts +0 -25
  724. package/src/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.ts +0 -77
  725. package/src/lib/components/documents/components/document-list/documents-list.component.html +0 -34
  726. package/src/lib/components/documents/components/document-list/documents-list.component.scss +0 -41
  727. package/src/lib/components/documents/components/document-list/documents-list.component.ts +0 -244
  728. package/src/lib/components/documents/components/document-scan/document-scan.component.html +0 -176
  729. package/src/lib/components/documents/components/document-scan/document-scan.component.scss +0 -725
  730. package/src/lib/components/documents/components/document-scan/document-scan.component.ts +0 -1156
  731. package/src/lib/components/documents/components/document-scan/document-scan.service.ts +0 -26
  732. package/src/lib/components/documents/components/document-upload/document-upload.component.html +0 -19
  733. package/src/lib/components/documents/components/document-upload/document-upload.component.scss +0 -49
  734. package/src/lib/components/documents/components/document-upload/document-upload.component.ts +0 -168
  735. package/src/lib/components/documents/components/documents/documents.component.html +0 -16
  736. package/src/lib/components/documents/components/documents/documents.component.scss +0 -0
  737. package/src/lib/components/documents/components/documents/documents.component.ts +0 -49
  738. package/src/lib/components/documents/constants/document-templates.ts +0 -32
  739. package/src/lib/components/documents/constants/documents.ts +0 -85
  740. package/src/lib/components/documents/documents.module.ts +0 -69
  741. package/src/lib/components/documents/services/document-templates.service.ts +0 -155
  742. package/src/lib/components/documents/services/documents.service.ts +0 -354
  743. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.html +0 -26
  744. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.scss +0 -35
  745. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.spec.ts +0 -25
  746. package/src/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.ts +0 -423
  747. package/src/lib/components/dynamic-chart/dynamic-chart.module.ts +0 -22
  748. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.html +0 -4
  749. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.scss +0 -14
  750. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.spec.ts +0 -25
  751. package/src/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.ts +0 -178
  752. package/src/lib/components/dynamic-chart/new-chart-box.ts +0 -0
  753. package/src/lib/components/dynamic-chart/services/chart-data.service.ts +0 -613
  754. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.html +0 -58
  755. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.scss +0 -0
  756. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.spec.ts +0 -25
  757. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.ts +0 -162
  758. package/src/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.ts +0 -25
  759. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.html +0 -122
  760. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.scss +0 -103
  761. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.spec.ts +0 -25
  762. package/src/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.ts +0 -124
  763. package/src/lib/components/dynamic-filter/dynamic-filter.module.ts +0 -19
  764. package/src/lib/components/dynamic-filter/services/dynamic-filter.service.ts +0 -14
  765. package/src/lib/components/dynamic-form/components/department-form/department-form.component.html +0 -100
  766. package/src/lib/components/dynamic-form/components/department-form/department-form.component.scss +0 -38
  767. package/src/lib/components/dynamic-form/components/department-form/department-form.component.spec.ts +0 -25
  768. package/src/lib/components/dynamic-form/components/department-form/department-form.component.ts +0 -132
  769. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.html +0 -3
  770. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.scss +0 -51
  771. package/src/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.ts +0 -109
  772. package/src/lib/components/dynamic-form/components/dynamic-form/fields.adapter.ts +0 -123
  773. package/src/lib/components/dynamic-form/components/dynamic-form/form-builder.service.ts +0 -120
  774. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.html +0 -14
  775. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.scss +0 -2
  776. package/src/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.ts +0 -34
  777. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.html +0 -15
  778. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.scss +0 -73
  779. package/src/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.ts +0 -161
  780. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.html +0 -10
  781. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.scss +0 -13
  782. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.spec.ts +0 -25
  783. package/src/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.ts +0 -72
  784. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.html +0 -56
  785. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.scss +0 -99
  786. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.ts +0 -210
  787. package/src/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.ts +0 -94
  788. package/src/lib/components/dynamic-form/components/dynamic-form-department/constants/department.ts +0 -12
  789. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.html +0 -36
  790. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.scss +0 -11
  791. package/src/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.ts +0 -230
  792. package/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.ts +0 -251
  793. package/src/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.ts +0 -126
  794. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.html +0 -1
  795. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.scss +0 -0
  796. package/src/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.ts +0 -92
  797. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.html +0 -29
  798. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.scss +0 -54
  799. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.spec.ts +0 -25
  800. package/src/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.ts +0 -152
  801. package/src/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.ts +0 -105
  802. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.html +0 -31
  803. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.scss +0 -5
  804. package/src/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.ts +0 -32
  805. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.html +0 -56
  806. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.scss +0 -24
  807. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.spec.ts +0 -25
  808. package/src/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.ts +0 -110
  809. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.html +0 -27
  810. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.scss +0 -100
  811. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.spec.ts +0 -25
  812. package/src/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.ts +0 -117
  813. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.html +0 -83
  814. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.scss +0 -136
  815. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.spec.ts +0 -25
  816. package/src/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.ts +0 -199
  817. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.html +0 -99
  818. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.scss +0 -177
  819. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.spec.ts +0 -25
  820. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.ts +0 -335
  821. package/src/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.ts +0 -50
  822. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.html +0 -92
  823. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.scss +0 -132
  824. package/src/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.ts +0 -194
  825. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.html +0 -13
  826. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.scss +0 -19
  827. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.spec.ts +0 -25
  828. package/src/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.ts +0 -85
  829. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.html +0 -27
  830. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.scss +0 -147
  831. package/src/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.ts +0 -213
  832. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.html +0 -68
  833. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.scss +0 -208
  834. package/src/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.ts +0 -308
  835. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.ts +0 -73
  836. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.ts +0 -350
  837. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dynamic-form-treeview-select.component.html +0 -235
  838. package/src/lib/components/dynamic-form/components/dynamic-form-treeview-select/dynamic-form-treeview-select.component.scss +0 -246
  839. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.html +0 -23
  840. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.scss +0 -29
  841. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.spec.ts +0 -25
  842. package/src/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.ts +0 -39
  843. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.html +0 -35
  844. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.scss +0 -0
  845. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.spec.ts +0 -25
  846. package/src/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.ts +0 -175
  847. package/src/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.ts +0 -780
  848. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.html +0 -2
  849. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.scss +0 -0
  850. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.ts +0 -33
  851. package/src/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.ts +0 -22
  852. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.html +0 -1
  853. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.scss +0 -0
  854. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.ts +0 -32
  855. package/src/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.ts +0 -20
  856. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.css +0 -0
  857. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.html +0 -17
  858. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.ts +0 -65
  859. package/src/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.ts +0 -34
  860. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.html +0 -10
  861. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.scss +0 -0
  862. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.ts +0 -28
  863. package/src/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.ts +0 -34
  864. package/src/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.ts +0 -10
  865. package/src/lib/components/dynamic-form/dynamic-form.module.scss +0 -13
  866. package/src/lib/components/dynamic-form/dynamic-form.module.ts +0 -193
  867. package/src/lib/components/dynamic-form/interfaces/aspect-oriented-config.interface.ts +0 -3
  868. package/src/lib/components/dynamic-form/interfaces/content-metadata-config.interface.ts +0 -16
  869. package/src/lib/components/dynamic-form/interfaces/content-metadata.interfaces.ts +0 -26
  870. package/src/lib/components/dynamic-form/interfaces/dynamic-form-arrayitem-properties.interface.ts +0 -5
  871. package/src/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.ts +0 -6
  872. package/src/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.ts +0 -6
  873. package/src/lib/components/dynamic-form/interfaces/dynamic-form-group.interface.ts +0 -6
  874. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.ts +0 -16
  875. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.ts +0 -4
  876. package/src/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.ts +0 -12
  877. package/src/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.ts +0 -11
  878. package/src/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.ts +0 -13
  879. package/src/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.ts +0 -6
  880. package/src/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.ts +0 -9
  881. package/src/lib/components/dynamic-form/interfaces/indifferent-config.interface.ts +0 -1
  882. package/src/lib/components/dynamic-form/interfaces/layout-oriented-config.interface.ts +0 -17
  883. package/src/lib/components/dynamic-form/interfaces/organised-property-group.interface.ts +0 -7
  884. package/src/lib/components/dynamic-form/interfaces/preset-config.interface.ts +0 -8
  885. package/src/lib/components/dynamic-form/interfaces/property-group.interface.ts +0 -14
  886. package/src/lib/components/dynamic-form/interfaces/property.interface.ts +0 -12
  887. package/src/lib/components/dynamic-form/models/dynamic-form-arrayitem.model.ts +0 -26
  888. package/src/lib/components/dynamic-form/models/dynamic-form-baseitem.model.ts +0 -96
  889. package/src/lib/components/dynamic-form/models/dynamic-form-boolitem.model.ts +0 -27
  890. package/src/lib/components/dynamic-form/models/dynamic-form-dateitem.model.ts +0 -39
  891. package/src/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.ts +0 -18
  892. package/src/lib/components/dynamic-form/models/dynamic-form-keyvaluepairs.model.ts +0 -19
  893. package/src/lib/components/dynamic-form/models/dynamic-form-mapitem.model.ts +0 -17
  894. package/src/lib/components/dynamic-form/models/dynamic-form-selectitem.model.ts +0 -30
  895. package/src/lib/components/dynamic-form/models/dynamic-form-textitem.model.ts +0 -47
  896. package/src/lib/components/dynamic-form/services/card-item-types.service.ts +0 -55
  897. package/src/lib/components/dynamic-form/services/dynamic-component-mapper.service.ts +0 -86
  898. package/src/lib/components/dynamic-form/services/dynamic-form-update.service.ts +0 -105
  899. package/src/lib/components/dynamic-form/services/property-groups-translator.service.ts +0 -159
  900. package/src/lib/components/dynamic-form/services/vocabulary-api.service.ts +0 -32
  901. package/src/lib/components/dynamic-form/validators/date-validator.ts +0 -18
  902. package/src/lib/components/dynamic-form/validators/length-validator.ts +0 -18
  903. package/src/lib/components/dynamic-form/validators/regex-validator.ts +0 -16
  904. package/src/lib/components/dynamic-form/validators/required-validator.ts +0 -7
  905. package/src/lib/components/dynamic-form/validators/value-validator.ts +0 -18
  906. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.html +0 -219
  907. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.scss +0 -195
  908. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.spec.ts +0 -25
  909. package/src/lib/components/dynamic-search/dynamic-search/dynamic-search.component.ts +0 -316
  910. package/src/lib/components/dynamic-search/dynamic-search.module.ts +0 -33
  911. package/src/lib/components/dynamic-table/constants/documents.ts +0 -72
  912. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.html +0 -46
  913. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.scss +0 -33
  914. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.spec.ts +0 -25
  915. package/src/lib/components/dynamic-table/dynamic-table/dynamic-table.component.ts +0 -239
  916. package/src/lib/components/dynamic-table/dynamic-table.module.ts +0 -27
  917. package/src/lib/components/dynamic-table/services/dynamic-table.service.spec.ts +0 -16
  918. package/src/lib/components/dynamic-table/services/dynamic-table.service.ts +0 -10
  919. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.html +0 -11
  920. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.scss +0 -63
  921. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.spec.ts +0 -25
  922. package/src/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.ts +0 -25
  923. package/src/lib/components/dynamic-tabs/dynamic-tabs.module.ts +0 -20
  924. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.html +0 -4
  925. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.scss +0 -0
  926. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.spec.ts +0 -25
  927. package/src/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.ts +0 -19
  928. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.html +0 -3
  929. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.scss +0 -0
  930. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.spec.ts +0 -25
  931. package/src/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.ts +0 -55
  932. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.html +0 -3
  933. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.scss +0 -0
  934. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.spec.ts +0 -25
  935. package/src/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.ts +0 -65
  936. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.html +0 -14
  937. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.scss +0 -0
  938. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.spec.ts +0 -25
  939. package/src/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.ts +0 -28
  940. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.html +0 -15
  941. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.scss +0 -0
  942. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.spec.ts +0 -25
  943. package/src/lib/components/dynamic-view/data-viewer/data-viewer.component.ts +0 -19
  944. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.html +0 -5
  945. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.scss +0 -0
  946. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.spec.ts +0 -25
  947. package/src/lib/components/dynamic-view/date-viewer/date-viewer.component.ts +0 -38
  948. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.html +0 -14
  949. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.scss +0 -0
  950. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.spec.ts +0 -25
  951. package/src/lib/components/dynamic-view/department-viewer/department-viewer.component.ts +0 -84
  952. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.html +0 -4
  953. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.scss +0 -0
  954. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.spec.ts +0 -25
  955. package/src/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.ts +0 -44
  956. package/src/lib/components/dynamic-view/dynamic-view.module.ts +0 -44
  957. package/src/lib/components/dynamic-view/dynamic-viewe.service.ts +0 -58
  958. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.html +0 -24
  959. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.scss +0 -55
  960. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.spec.ts +0 -25
  961. package/src/lib/components/dynamic-view/list-viewer/list-viewer.component.ts +0 -27
  962. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.html +0 -34
  963. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.scss +0 -0
  964. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.spec.ts +0 -25
  965. package/src/lib/components/file-manger/components/add-to-collection/add-to-collection.component.ts +0 -139
  966. package/src/lib/components/file-manger/components/clipboard/clipboard.component.html +0 -88
  967. package/src/lib/components/file-manger/components/clipboard/clipboard.component.scss +0 -17
  968. package/src/lib/components/file-manger/components/clipboard/clipboard.component.spec.ts +0 -25
  969. package/src/lib/components/file-manger/components/clipboard/clipboard.component.ts +0 -279
  970. package/src/lib/components/file-manger/components/copy/copy.component.html +0 -24
  971. package/src/lib/components/file-manger/components/copy/copy.component.scss +0 -0
  972. package/src/lib/components/file-manger/components/copy/copy.component.spec.ts +0 -25
  973. package/src/lib/components/file-manger/components/copy/copy.component.ts +0 -129
  974. package/src/lib/components/file-manger/components/create-directory/create-directory.component.html +0 -32
  975. package/src/lib/components/file-manger/components/create-directory/create-directory.component.scss +0 -0
  976. package/src/lib/components/file-manger/components/create-directory/create-directory.component.spec.ts +0 -25
  977. package/src/lib/components/file-manger/components/create-directory/create-directory.component.ts +0 -85
  978. package/src/lib/components/file-manger/components/create-modal/create-modal.component.html +0 -241
  979. package/src/lib/components/file-manger/components/create-modal/create-modal.component.scss +0 -30
  980. package/src/lib/components/file-manger/components/create-modal/create-modal.component.spec.ts +0 -25
  981. package/src/lib/components/file-manger/components/create-modal/create-modal.component.ts +0 -475
  982. package/src/lib/components/file-manger/components/creation-type/creation-type.component.html +0 -39
  983. package/src/lib/components/file-manger/components/creation-type/creation-type.component.scss +0 -0
  984. package/src/lib/components/file-manger/components/creation-type/creation-type.component.spec.ts +0 -25
  985. package/src/lib/components/file-manger/components/creation-type/creation-type.component.ts +0 -19
  986. package/src/lib/components/file-manger/components/delete/delete.component.html +0 -25
  987. package/src/lib/components/file-manger/components/delete/delete.component.scss +0 -0
  988. package/src/lib/components/file-manger/components/delete/delete.component.spec.ts +0 -25
  989. package/src/lib/components/file-manger/components/delete/delete.component.ts +0 -80
  990. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.html +0 -65
  991. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.scss +0 -17
  992. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.spec.ts +0 -25
  993. package/src/lib/components/file-manger/components/folder-modal/folder-modal.component.ts +0 -113
  994. package/src/lib/components/file-manger/components/loan-request/loan-request.component.html +0 -31
  995. package/src/lib/components/file-manger/components/loan-request/loan-request.component.scss +0 -0
  996. package/src/lib/components/file-manger/components/loan-request/loan-request.component.spec.ts +0 -25
  997. package/src/lib/components/file-manger/components/loan-request/loan-request.component.ts +0 -72
  998. package/src/lib/components/file-manger/components/move/move.component.html +0 -24
  999. package/src/lib/components/file-manger/components/move/move.component.scss +0 -0
  1000. package/src/lib/components/file-manger/components/move/move.component.spec.ts +0 -25
  1001. package/src/lib/components/file-manger/components/move/move.component.ts +0 -114
  1002. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.html +0 -45
  1003. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.scss +0 -0
  1004. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.spec.ts +0 -25
  1005. package/src/lib/components/file-manger/components/publish-dialog/publish-dialog.component.ts +0 -98
  1006. package/src/lib/components/file-manger/components/rename/rename.component.html +0 -28
  1007. package/src/lib/components/file-manger/components/rename/rename.component.scss +0 -0
  1008. package/src/lib/components/file-manger/components/rename/rename.component.spec.ts +0 -25
  1009. package/src/lib/components/file-manger/components/rename/rename.component.ts +0 -82
  1010. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.html +0 -336
  1011. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.scss +0 -9
  1012. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.spec.ts +0 -25
  1013. package/src/lib/components/file-manger/components/scan-modal/scan-modal.component.ts +0 -337
  1014. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.html +0 -159
  1015. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.scss +0 -38
  1016. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.spec.ts +0 -25
  1017. package/src/lib/components/file-manger/components/share-dialog/share-dialog.component.ts +0 -288
  1018. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.html +0 -350
  1019. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.scss +0 -0
  1020. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.spec.ts +0 -25
  1021. package/src/lib/components/file-manger/components/sidepanel/sidepanel.component.ts +0 -247
  1022. package/src/lib/components/file-manger/components/template-modal/template-modal.component.html +0 -213
  1023. package/src/lib/components/file-manger/components/template-modal/template-modal.component.scss +0 -3
  1024. package/src/lib/components/file-manger/components/template-modal/template-modal.component.spec.ts +0 -25
  1025. package/src/lib/components/file-manger/components/template-modal/template-modal.component.ts +0 -55
  1026. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.html +0 -26
  1027. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.scss +0 -0
  1028. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.spec.ts +0 -25
  1029. package/src/lib/components/file-manger/components/transfer-doc/transfer-doc.component.ts +0 -74
  1030. package/src/lib/components/file-manger/components/update-modal/update-modal.component.html +0 -97
  1031. package/src/lib/components/file-manger/components/update-modal/update-modal.component.scss +0 -7
  1032. package/src/lib/components/file-manger/components/update-modal/update-modal.component.spec.ts +0 -25
  1033. package/src/lib/components/file-manger/components/update-modal/update-modal.component.ts +0 -365
  1034. package/src/lib/components/file-manger/file-manager.abstract.ts +0 -1351
  1035. package/src/lib/components/file-manger/file-manger.module.ts +0 -154
  1036. package/src/lib/components/filter/filter/filter.component.html +0 -79
  1037. package/src/lib/components/filter/filter/filter.component.md +0 -68
  1038. package/src/lib/components/filter/filter/filter.component.scss +0 -50
  1039. package/src/lib/components/filter/filter/filter.component.spec.ts +0 -25
  1040. package/src/lib/components/filter/filter/filter.component.ts +0 -81
  1041. package/src/lib/components/filter/filter.module.ts +0 -27
  1042. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-date-picker.component.scss +0 -67
  1043. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.html +0 -47
  1044. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.ts +0 -99
  1045. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-date-picker.component.scss +0 -67
  1046. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.html +0 -47
  1047. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.ts +0 -102
  1048. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.html +0 -29
  1049. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.ts +0 -152
  1050. package/src/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.ts +0 -23
  1051. package/src/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.ts +0 -35
  1052. package/src/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.ts +0 -94
  1053. package/src/lib/components/hijri-gregorian-datepicker/services/date-helper.service.ts +0 -28
  1054. package/src/lib/components/hijri-gregorian-datepicker/services/ngx-hijri-gregorian-datepicker.service.ts +0 -9
  1055. package/src/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.ts +0 -35
  1056. package/src/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.ts +0 -26
  1057. package/src/lib/components/hijri-gregorian-datepicker/utils/consts.ts +0 -4
  1058. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.html +0 -27
  1059. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.scss +0 -13
  1060. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.spec.ts +0 -25
  1061. package/src/lib/components/latest-activity/components/activity-line/activity-line.component.ts +0 -73
  1062. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.html +0 -36
  1063. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.scss +0 -12
  1064. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.spec.ts +0 -25
  1065. package/src/lib/components/latest-activity/components/latest-activity/latest-activity.component.ts +0 -78
  1066. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.html +0 -38
  1067. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.scss +0 -157
  1068. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.spec.ts +0 -25
  1069. package/src/lib/components/latest-activity/components/single-activity/single-activity.component.ts +0 -19
  1070. package/src/lib/components/latest-activity/constants/activitylog.ts +0 -80
  1071. package/src/lib/components/latest-activity/latest-activity.module.ts +0 -33
  1072. package/src/lib/components/latest-activity/services/activity-log.service.ts +0 -41
  1073. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.html +0 -36
  1074. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.scss +0 -32
  1075. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.spec.ts +0 -25
  1076. package/src/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.ts +0 -45
  1077. package/src/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.ts +0 -18
  1078. package/src/lib/components/notifications/components/notification-item/notification-item.component.html +0 -45
  1079. package/src/lib/components/notifications/components/notification-item/notification-item.component.scss +0 -60
  1080. package/src/lib/components/notifications/components/notification-item/notification-item.component.ts +0 -136
  1081. package/src/lib/components/notifications/components/notification-options/notification-options.component.html +0 -7
  1082. package/src/lib/components/notifications/components/notification-options/notification-options.component.scss +0 -7
  1083. package/src/lib/components/notifications/components/notification-options/notification-options.component.ts +0 -16
  1084. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.html +0 -66
  1085. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.scss +0 -62
  1086. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.spec.ts +0 -25
  1087. package/src/lib/components/notifications/components/notification-toast/notification-toast.component.ts +0 -55
  1088. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.html +0 -7
  1089. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.scss +0 -90
  1090. package/src/lib/components/notifications/components/notifications-button/notifications-button.component.ts +0 -190
  1091. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.html +0 -55
  1092. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.scss +0 -108
  1093. package/src/lib/components/notifications/components/notifications-list/notifications-list.component.ts +0 -161
  1094. package/src/lib/components/notifications/interceptors/token.interceptor.ts +0 -37
  1095. package/src/lib/components/notifications/notifications.module.ts +0 -67
  1096. package/src/lib/components/notifications/notifications.service.ts +0 -300
  1097. package/src/lib/components/pagination/pagination/pagination.component.html +0 -33
  1098. package/src/lib/components/pagination/pagination/pagination.component.scss +0 -46
  1099. package/src/lib/components/pagination/pagination/pagination.component.spec.ts +0 -25
  1100. package/src/lib/components/pagination/pagination/pagination.component.ts +0 -132
  1101. package/src/lib/components/pagination/pagination.module.ts +0 -21
  1102. package/src/lib/components/pdf-tron/pdf-tron.module.ts +0 -16
  1103. package/src/lib/components/pdf-tron/pdftron/pdftron.component.html +0 -1
  1104. package/src/lib/components/pdf-tron/pdftron/pdftron.component.scss +0 -0
  1105. package/src/lib/components/pdf-tron/pdftron/pdftron.component.spec.ts +0 -25
  1106. package/src/lib/components/pdf-tron/pdftron/pdftron.component.ts +0 -782
  1107. package/src/lib/components/pdf-tron/pdftron/pdftron.service.ts +0 -236
  1108. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.html +0 -149
  1109. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.scss +0 -159
  1110. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.spec.ts +0 -25
  1111. package/src/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.ts +0 -198
  1112. package/src/lib/components/permissions/permission.service.ts +0 -151
  1113. package/src/lib/components/permissions/permissions/permissions.component.html +0 -129
  1114. package/src/lib/components/permissions/permissions/permissions.component.scss +0 -0
  1115. package/src/lib/components/permissions/permissions/permissions.component.spec.ts +0 -25
  1116. package/src/lib/components/permissions/permissions/permissions.component.ts +0 -227
  1117. package/src/lib/components/permissions/permissions-template/permissions-template.component.html +0 -47
  1118. package/src/lib/components/permissions/permissions-template/permissions-template.component.scss +0 -7
  1119. package/src/lib/components/permissions/permissions-template/permissions-template.component.spec.ts +0 -25
  1120. package/src/lib/components/permissions/permissions-template/permissions-template.component.ts +0 -104
  1121. package/src/lib/components/permissions/permissions.module.ts +0 -39
  1122. package/src/lib/components/select/select/select.component.html +0 -64
  1123. package/src/lib/components/select/select/select.component.scss +0 -144
  1124. package/src/lib/components/select/select/select.component.spec.ts +0 -25
  1125. package/src/lib/components/select/select/select.component.ts +0 -116
  1126. package/src/lib/components/select/select.module.ts +0 -22
  1127. package/src/lib/components/select-users-by-department/select-users-by-department.module.ts +0 -27
  1128. package/src/lib/components/select-users-by-department/select-users-by-departments/department-management.service.ts +0 -27
  1129. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.html +0 -88
  1130. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.scss +0 -15
  1131. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.spec.ts +0 -25
  1132. package/src/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.ts +0 -105
  1133. package/src/lib/components/table/dynamic-column/dynamic-column.component.ts +0 -79
  1134. package/src/lib/components/table/table/table.component.html +0 -377
  1135. package/src/lib/components/table/table/table.component.scss +0 -507
  1136. package/src/lib/components/table/table/table.component.spec.ts +0 -25
  1137. package/src/lib/components/table/table/table.component.ts +0 -195
  1138. package/src/lib/components/table/table.module.ts +0 -35
  1139. package/src/lib/components/user/user/user.component.html +0 -15
  1140. package/src/lib/components/user/user/user.component.scss +0 -0
  1141. package/src/lib/components/user/user/user.component.spec.ts +0 -25
  1142. package/src/lib/components/user/user/user.component.ts +0 -19
  1143. package/src/lib/components/user/user.module.ts +0 -18
  1144. package/src/lib/components/users-card/users-card.component.html +0 -20
  1145. package/src/lib/components/users-card/users-card.component.scss +0 -16
  1146. package/src/lib/components/users-card/users-card.component.ts +0 -30
  1147. package/src/lib/components/users-card/users-card.module.ts +0 -19
  1148. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.html +0 -9
  1149. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.scss +0 -12
  1150. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.spec.ts +0 -25
  1151. package/src/lib/components/viewer-log/components/viewer-log/viewer-log.component.ts +0 -25
  1152. package/src/lib/components/viewer-log/viewer-log.module.ts +0 -12
  1153. package/src/lib/components/vocabulary/interfaces/op-type.interface.ts +0 -4
  1154. package/src/lib/components/vocabulary/services/vocabulary-api.service.ts +0 -46
  1155. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.html +0 -12
  1156. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.scss +0 -0
  1157. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.spec.ts +0 -25
  1158. package/src/lib/components/vocabulary/vocabulary/vocabulary.component.ts +0 -80
  1159. package/src/lib/components/vocabulary/vocabulary.module.ts +0 -20
  1160. package/src/lib/configuration/app-config.service.ts +0 -26
  1161. package/src/lib/configuration/configuration.module.ts +0 -12
  1162. package/src/lib/configuration/helpers/app-initializer.ts +0 -5
  1163. package/src/lib/directive/app-has-role/app-has-role.directive.ts +0 -62
  1164. package/src/lib/directive/clickOutSide/click-outside.directive.ts +0 -20
  1165. package/src/lib/directive/directive.module.ts +0 -36
  1166. package/src/lib/directive/drag-and-drop/drag-and-drop.directive.ts +0 -37
  1167. package/src/lib/directive/permissions/evaluators.service.ts +0 -148
  1168. package/src/lib/directive/permissions/permissions.directive.ts +0 -74
  1169. package/src/lib/directive/rtl/set-dir-rtl.directive.ts +0 -25
  1170. package/src/lib/directive/rtl/set-rtl.directive.ts +0 -26
  1171. package/src/lib/nuxeo-development-framework.component.ts +0 -20
  1172. package/src/lib/nuxeo-development-framework.module.ts +0 -31
  1173. package/src/lib/nuxeo-development-framework.service.ts +0 -9
  1174. package/src/lib/pipes/file-size.pipe.ts +0 -61
  1175. package/src/lib/pipes/hijri-date.pipe.ts +0 -40
  1176. package/src/lib/pipes/localized-date.pipe.ts +0 -80
  1177. package/src/lib/pipes/multi-value.pipe.ts +0 -39
  1178. package/src/lib/pipes/pipes.module.ts +0 -20
  1179. package/src/lib/pipes/secure-html.pipe.ts +0 -27
  1180. package/src/lib/pipes/secure.pipe.ts +0 -37
  1181. package/src/lib/pipes/time-ago.pipe.ts +0 -68
  1182. package/src/lib/shared/components/button/button.component.html +0 -13
  1183. package/src/lib/shared/components/button/button.component.scss +0 -102
  1184. package/src/lib/shared/components/button/button.component.spec.ts +0 -25
  1185. package/src/lib/shared/components/button/button.component.ts +0 -87
  1186. package/src/lib/shared/components/item-list/item-list.component.html +0 -37
  1187. package/src/lib/shared/components/item-list/item-list.component.scss +0 -62
  1188. package/src/lib/shared/components/item-list/item-list.component.spec.ts +0 -25
  1189. package/src/lib/shared/components/item-list/item-list.component.ts +0 -69
  1190. package/src/lib/shared/components/no-data/no-data.component.html +0 -3
  1191. package/src/lib/shared/components/no-data/no-data.component.scss +0 -13
  1192. package/src/lib/shared/components/no-data/no-data.component.spec.ts +0 -25
  1193. package/src/lib/shared/components/no-data/no-data.component.ts +0 -26
  1194. package/src/lib/shared/components/read-more/read-more.component.ts +0 -86
  1195. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.html +0 -24
  1196. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.scss +0 -50
  1197. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.spec.ts +0 -25
  1198. package/src/lib/shared/components/search-autocomplete/search-autocomplete.component.ts +0 -153
  1199. package/src/lib/shared/components/spinner/spinner.component.html +0 -10
  1200. package/src/lib/shared/components/spinner/spinner.component.scss +0 -11
  1201. package/src/lib/shared/components/spinner/spinner.component.spec.ts +0 -25
  1202. package/src/lib/shared/components/spinner/spinner.component.ts +0 -25
  1203. package/src/lib/shared/components/user-card/user-card.component.html +0 -21
  1204. package/src/lib/shared/components/user-card/user-card.component.scss +0 -42
  1205. package/src/lib/shared/components/user-card/user-card.component.spec.ts +0 -25
  1206. package/src/lib/shared/components/user-card/user-card.component.ts +0 -42
  1207. package/src/lib/shared/libraryShared.module.ts +0 -47
  1208. package/src/lib/shared-services/dialog-mangment.service.ts +0 -62
  1209. package/src/lib/shared-services/dynamic-form.service.ts +0 -252
  1210. package/src/lib/shared-services/file-manager.adapter.ts +0 -69
  1211. package/src/lib/shared-services/file-manager.service.ts +0 -1074
  1212. package/src/lib/shared-services/global-pdftron.service.ts +0 -50
  1213. package/src/lib/shared-services/mainfolder.service.ts +0 -220
  1214. package/src/lib/shared-services/publishing-document.service.ts +0 -242
  1215. package/src/lib/shared-services/recently-viewed.service.ts +0 -55
  1216. package/src/lib/shared-services/shared-docs.service.ts +0 -173
  1217. package/src/lib/shared-services/shared-services.module.ts +0 -12
  1218. package/src/lib/shared-services/upload-file.service.ts +0 -26
  1219. package/src/lib/shared-services/upload-managment.service.ts +0 -148
  1220. package/src/lib/shared-services/user.service.ts +0 -49
  1221. package/src/public-api.ts +0 -274
  1222. package/src/test.ts +0 -26
  1223. package/tsconfig.doc.json +0 -4
  1224. package/tsconfig.lib.json +0 -21
  1225. package/tsconfig.lib.prod.json +0 -10
  1226. package/tsconfig.spec.json +0 -17
  1227. package/tslint.json +0 -17
  1228. /package/{src/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.ts → lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts} +0 -0
  1229. /package/{src/lib/components/dynamic-form/models/dynamic-form.models.ts → lib/components/dynamic-form/models/dynamic-form.models.d.ts} +0 -0
@@ -0,0 +1,974 @@
1
+ import { APP_BASE_HREF } from '@angular/common';
2
+ import { Component, EventEmitter, Inject, Input, Output, ViewEncapsulation } from '@angular/core';
3
+ import Dynamsoft from 'dwt';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ import * as i2 from "../../services/documents.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "./document-scan.service";
9
+ import * as i5 from "@angular/forms";
10
+ /**
11
+ * Document Scan is a reusable nuxeo API & Scanner integrated component,
12
+ * that utilizes the scanner to create and upload PDF file as a batch, then provide
13
+ * that batch for consumption
14
+ *
15
+ * @title
16
+ * Document Scan
17
+ *
18
+ * @example
19
+ *
20
+ * <app-document-scan
21
+ * (file)="onSuccess($event)"
22
+ * ></app-document-scan>
23
+ */
24
+ export class ScanComponent {
25
+ constructor(translate, documentsService, datePipe, DocumentScanService, environment, baseHref) {
26
+ this.translate = translate;
27
+ this.documentsService = documentsService;
28
+ this.datePipe = datePipe;
29
+ this.DocumentScanService = DocumentScanService;
30
+ this.environment = environment;
31
+ this.baseHref = baseHref;
32
+ this.useStoredFile = false;
33
+ this.hideUploadButton = false;
34
+ /** Event emitted when a batch is uploaded */
35
+ this.file = new EventEmitter();
36
+ this.DWTSourceCount = 0;
37
+ this.filename = '';
38
+ this.containerId = 'dwtcontrolContainer';
39
+ this.bWASM = Dynamsoft.Lib.env.bMobile || Dynamsoft.DWT.UseLocalService;
40
+ this._strTempStr = '';
41
+ this.re = /^\d+$/;
42
+ this.strre = /^[\s\w]+$/;
43
+ this.refloat = /^\d+\.*\d*$/i;
44
+ // --------------------------------------------------------------------------------------
45
+ // ************************** Dynamic Web TWAIN Events***********************************
46
+ // --------------------------------------------------------------------------------------
47
+ this.Dynamsoft_OnPostTransfer = () => {
48
+ this.updatePageInfo();
49
+ };
50
+ this.Dynamsoft_OnPostLoadfunction = (path, name, type) => {
51
+ this.updatePageInfo();
52
+ };
53
+ this.Dynamsoft_OnPostAllTransfers = () => {
54
+ this.DWObject.CloseSource();
55
+ this.updatePageInfo();
56
+ this.checkErrorString();
57
+ };
58
+ this.Dynamsoft_OnMouseClick = index => {
59
+ this.updatePageInfo();
60
+ };
61
+ this.Dynamsoft_OnMouseRightClick = index => {
62
+ // To add
63
+ };
64
+ this.Dynamsoft_OnImageAreaSelected = (index, left, top, right, bottom) => {
65
+ this._iLeft = left;
66
+ this._iTop = top;
67
+ this._iRight = right;
68
+ this._iBottom = bottom;
69
+ };
70
+ this.Dynamsoft_OnImageAreaDeselected = index => {
71
+ this._iLeft = 0;
72
+ this._iTop = 0;
73
+ this._iRight = 0;
74
+ this._iBottom = 0;
75
+ };
76
+ this.Dynamsoft_OnTopImageInTheViewChanged = index => {
77
+ this._iLeft = 0;
78
+ this._iTop = 0;
79
+ this._iRight = 0;
80
+ this._iBottom = 0;
81
+ this.DWObject.CurrentImageIndexInBuffer = index;
82
+ this.updatePageInfo();
83
+ };
84
+ this.Dynamsoft_OnGetFilePath = (bSave, count, index, path, name) => { };
85
+ }
86
+ ngOnInit() {
87
+ Dynamsoft.DWT.ResourcesPath = this.baseHref + '/assets/dwt-resources';
88
+ ///
89
+ Dynamsoft.DWT.AutoLoad = true;
90
+ ///
91
+ // const width = window.outerWidth * 0.3;
92
+ // const height = window.outerHeight * 0.3;
93
+ Dynamsoft.DWT.Containers = [
94
+ {
95
+ WebTwainId: 'DWTObject',
96
+ ContainerId: 'dwtcontrolContainer',
97
+ Width: '100%',
98
+ Height: '100%'
99
+ }
100
+ ];
101
+ Dynamsoft.DWT.ProductKey = this.environment.dynamsoftProductKey;
102
+ // Dynamsoft.DWT.Trial = false;
103
+ // Dynamsoft.DWT.Debug = false; // only for debugger output
104
+ ///
105
+ Dynamsoft.DWT.IfAddMD5InUploadHeader = false;
106
+ ///
107
+ Dynamsoft.DWT.IfConfineMaskWithinTheViewer = false;
108
+ Dynamsoft.MSG = {
109
+ ConvertingToBase64: this.translate.instant('scanner.ConvertingToBase64'),
110
+ ConvertingToBlob: this.translate.instant('scanner.ConvertingToBlob'),
111
+ Downloading: this.translate.instant('scanner.Downloading'),
112
+ Encoding: this.translate.instant('scanner.Encoding'),
113
+ Err_BrowserNotSupportWasm: this.translate.instant('scanner.Err_BrowserNotSupportWasm'),
114
+ Init_AllJsLoaded: Dynamsoft.MSG.Init_AllJsLoaded,
115
+ Init_CheckDWT: Dynamsoft.MSG.Init_CheckDWT,
116
+ Init_CheckDWTVersion: Dynamsoft.MSG.Init_CheckDWTVersion,
117
+ Init_CheckingLicense: Dynamsoft.MSG.Init_CheckingLicense,
118
+ Init_CompilingWasm: Dynamsoft.MSG.Init_CompilingWasm,
119
+ Init_ConfiguringDWT: Dynamsoft.MSG.Init_ConfiguringDWT,
120
+ Init_CreatingDWT: Dynamsoft.MSG.Init_CreatingDWT,
121
+ Init_DownloadingWasm: Dynamsoft.MSG.Init_DownloadingWasm,
122
+ Init_FireBeforeInitEvt: Dynamsoft.MSG.Init_FireBeforeInitEvt,
123
+ Init_GetLicenseInfoForDWT: Dynamsoft.MSG.Init_GetLicenseInfoForDWT,
124
+ Init_InitActiveX: Dynamsoft.MSG.Init_InitActiveX,
125
+ Init_InitDynamsoftService: Dynamsoft.MSG.Init_InitDynamsoftService,
126
+ Init_InitH5: Dynamsoft.MSG.Init_InitH5,
127
+ Init_InitWasm: Dynamsoft.MSG.Init_InitWasm,
128
+ Init_LoadingViewerJs: Dynamsoft.MSG.Init_LoadingViewerJs,
129
+ Init_LookingLicense: Dynamsoft.MSG.Init_LookingLicense,
130
+ Init_SetLicenseForDWT: Dynamsoft.MSG.Init_SetLicenseForDWT,
131
+ Loading: this.translate.instant('scanner.Loading'),
132
+ LoadingPdf: this.translate.instant('scanner.LoadingPdf'),
133
+ LoadingTiff: this.translate.instant('scanner.LoadingTiff'),
134
+ SavingPdf: this.translate.instant('scanner.SavingPdf'),
135
+ SavingTiff: this.translate.instant('scanner.SavingTiff'),
136
+ Uploading: this.translate.instant('scanner.Uploading')
137
+ };
138
+ Dynamsoft.DWT.CustomizableDisplayInfo = {
139
+ errorMessages: this.translate.instant('scanner.errorMessages'),
140
+ // launch
141
+ generalMessages: this.translate.instant('scanner.generalMessages'),
142
+ customProgressText: this.translate.instant('scanner.customProgressText'),
143
+ // image editor
144
+ buttons: this.translate.instant('scanner.buttons'),
145
+ dialogText: this.translate.instant('scanner.dialogText')
146
+ };
147
+ Dynamsoft.DWT.OnWebTwainReady = () => {
148
+ this.pageonload();
149
+ this.Dynamsoft_OnReady();
150
+ };
151
+ Dynamsoft.DWT.Load();
152
+ this.onMinimizingSubscription = this.DocumentScanService.onMinimizing.subscribe(res => {
153
+ this.convertToBlobForSaving();
154
+ });
155
+ }
156
+ ngAfterViewInit() {
157
+ this.pageonload();
158
+ if (this.useStoredFile) {
159
+ if (this.DocumentScanService.storedFile) {
160
+ setTimeout(() => {
161
+ this.setStoredFileToScanner(this.DocumentScanService.storedFile);
162
+ }, 2000);
163
+ }
164
+ }
165
+ }
166
+ setStoredFileToScanner(result) {
167
+ this.DWObject.LoadImageFromBinary(result, function () {
168
+ console.log('success');
169
+ }, function (errorCode, errorString) {
170
+ console.log(errorString);
171
+ });
172
+ }
173
+ pageonload() {
174
+ this.HideLoadImageForLinux();
175
+ const twainsource = document.getElementById('source');
176
+ if (twainsource) {
177
+ twainsource.options.length = 0;
178
+ twainsource.options.add(new Option(this.translate.instant('scanner.pleaseWait'), '0'));
179
+ twainsource.options[0].selected = true;
180
+ }
181
+ this.initiateInputs();
182
+ }
183
+ HideLoadImageForLinux() {
184
+ const o = document.getElementById('liLoadImage');
185
+ if (o) {
186
+ if (Dynamsoft.Lib.env.bLinux) {
187
+ o.style.display = 'none';
188
+ }
189
+ else {
190
+ o.style.display = '';
191
+ }
192
+ }
193
+ }
194
+ initiateInputs() {
195
+ const allinputs = document.getElementsByTagName('input');
196
+ for (let i = 0; i < allinputs.length; i++) {
197
+ if (allinputs[i].type === 'checkbox') {
198
+ allinputs[i].checked = false;
199
+ }
200
+ else if (allinputs[i].type === 'text') {
201
+ allinputs[i].value = '';
202
+ }
203
+ }
204
+ if (Dynamsoft.Lib.env.bIE === true && Dynamsoft.Lib.env.bWin64 === true) {
205
+ let o = document.getElementById('samplesource64bit');
206
+ if (o) {
207
+ o.style.display = 'inline';
208
+ }
209
+ o = document.getElementById('samplesource32bit');
210
+ if (o) {
211
+ o.style.display = 'none';
212
+ }
213
+ }
214
+ }
215
+ initDllForChangeImageSize() {
216
+ const vInterpolationMethod = document.getElementById('InterpolationMethod');
217
+ vInterpolationMethod.options.length = 0;
218
+ vInterpolationMethod.options.add(new Option('NearestNeighbor', '1'));
219
+ vInterpolationMethod.options.add(new Option('Bilinear', '2'));
220
+ vInterpolationMethod.options.add(new Option('Bicubic', '3'));
221
+ }
222
+ setDefaultValue() {
223
+ const vGray = document.getElementById('Gray');
224
+ if (vGray) {
225
+ vGray.checked = true;
226
+ }
227
+ const varImgTypepng2 = document.getElementById('imgTypepng2');
228
+ if (varImgTypepng2) {
229
+ varImgTypepng2.checked = true;
230
+ }
231
+ const varImgTypepng = document.getElementById('imgTypepng');
232
+ if (varImgTypepng) {
233
+ varImgTypepng.checked = true;
234
+ }
235
+ const _strDefaultSaveImageName = 'WebTWAINImage';
236
+ const _txtFileNameforSave = document.getElementById('txt_fileNameforSave');
237
+ if (_txtFileNameforSave) {
238
+ _txtFileNameforSave.value = _strDefaultSaveImageName;
239
+ }
240
+ const _txtFileName = document.getElementById('txt_fileName');
241
+ if (_txtFileName) {
242
+ _txtFileName.value = _strDefaultSaveImageName;
243
+ }
244
+ const _chkMultiPageTIFF_save = document.getElementById('MultiPageTIFF_save');
245
+ if (_chkMultiPageTIFF_save) {
246
+ _chkMultiPageTIFF_save.disabled = true;
247
+ }
248
+ const _chkMultiPagePDF_save = document.getElementById('MultiPagePDF_save');
249
+ if (_chkMultiPagePDF_save) {
250
+ _chkMultiPagePDF_save.disabled = true;
251
+ }
252
+ const _chkMultiPageTIFF = document.getElementById('MultiPageTIFF');
253
+ if (_chkMultiPageTIFF) {
254
+ _chkMultiPageTIFF.disabled = true;
255
+ }
256
+ const _chkMultiPagePDF = document.getElementById('MultiPagePDF');
257
+ if (_chkMultiPagePDF) {
258
+ _chkMultiPagePDF.disabled = true;
259
+ }
260
+ }
261
+ // Check if the control is fully loaded.
262
+ Dynamsoft_OnReady() {
263
+ const liNoScanner = document.getElementById('pNoScanner');
264
+ // If the ErrorCode is 0, it means everything is fine for the control. It is fully loaded.
265
+ this.DWObject = Dynamsoft.DWT.GetWebTwain('dwtcontrolContainer');
266
+ if (this.DWObject) {
267
+ if (this.DWObject.ErrorCode === 0) {
268
+ this.DWObject.LogLevel = 0;
269
+ this.DWObject.IfAllowLocalCache = true;
270
+ this.DWObject.ImageCaptureDriverType = 4;
271
+ this.setDefaultValue();
272
+ this.DWObject.RegisterEvent('OnTopImageInTheViewChanged', this.Dynamsoft_OnTopImageInTheViewChanged);
273
+ this.DWObject.RegisterEvent('OnMouseClick', this.Dynamsoft_OnMouseClick);
274
+ let twainsource = document.getElementById('source');
275
+ if (!twainsource) {
276
+ twainsource = document.getElementById('webcamsource');
277
+ }
278
+ const vCount = this.DWObject.SourceCount;
279
+ this.DWTSourceCount = vCount;
280
+ if (twainsource) {
281
+ twainsource.options.length = 0;
282
+ for (let i = 0; i < vCount; i++) {
283
+ twainsource.options.add(new Option(this.DWObject.GetSourceNameItems(i), i.toString()));
284
+ }
285
+ }
286
+ // If source list need to be displayed, fill in the source items.
287
+ if (vCount === 0) {
288
+ if (liNoScanner) {
289
+ if (Dynamsoft.Lib.env.bWin) {
290
+ liNoScanner.style.display = 'block';
291
+ liNoScanner.style.textAlign = 'center';
292
+ }
293
+ else {
294
+ liNoScanner.style.display = 'none';
295
+ }
296
+ }
297
+ }
298
+ if (vCount > 0) {
299
+ this.source_onchange();
300
+ }
301
+ if (Dynamsoft.Lib.env.bWin) {
302
+ this.DWObject.MouseShape = false;
303
+ }
304
+ const btnScan = document.getElementById('btnScan');
305
+ if (btnScan) {
306
+ if (vCount === 0) {
307
+ btnScan.disabled = true;
308
+ }
309
+ else {
310
+ btnScan.disabled = false;
311
+ }
312
+ }
313
+ if (!Dynamsoft.Lib.env.bWin && vCount > 0) {
314
+ if (document.getElementById('lblShowUI')) {
315
+ document.getElementById('lblShowUI').style.display = 'none';
316
+ }
317
+ if (document.getElementById('ShowUI')) {
318
+ document.getElementById('ShowUI').style.display = 'none';
319
+ }
320
+ }
321
+ else {
322
+ if (document.getElementById('lblShowUI')) {
323
+ document.getElementById('lblShowUI').style.display = '';
324
+ }
325
+ if (document.getElementById('ShowUI')) {
326
+ document.getElementById('ShowUI').style.display = '';
327
+ }
328
+ }
329
+ this.initDllForChangeImageSize();
330
+ this._iLeft = 0;
331
+ this._iTop = 0;
332
+ this._iRight = 0;
333
+ this._iBottom = 0;
334
+ for (let i = 0; i < document.links.length; i++) {
335
+ if (document.links[i].className === 'ShowtblLoadImage') {
336
+ document.links[i].onclick = this.showtblLoadImage_onclick;
337
+ }
338
+ if (document.links[i].className === 'ClosetblLoadImage') {
339
+ document.links[i].onclick = this.closetblLoadImage_onclick;
340
+ }
341
+ }
342
+ if (vCount === 0) {
343
+ if (Dynamsoft.Lib.env.bWin) {
344
+ if (document.getElementById('aNoScanner') &&
345
+ window['bDWTOnlineDemo']) {
346
+ if (document.getElementById('div_ScanImage').style.display === '') {
347
+ this.showtblLoadImage_onclick();
348
+ }
349
+ }
350
+ if (document.getElementById('Resolution')) {
351
+ document.getElementById('Resolution').style.display = 'none';
352
+ }
353
+ }
354
+ }
355
+ else {
356
+ const divBlank = document.getElementById('divBlank');
357
+ if (divBlank) {
358
+ divBlank.style.display = 'none';
359
+ }
360
+ }
361
+ this.updatePageInfo();
362
+ const ua = navigator.userAgent.toLowerCase();
363
+ if (!ua.indexOf('msie 6.0')) {
364
+ }
365
+ this.DWObject.RegisterEvent('OnPostTransfer', this.Dynamsoft_OnPostTransfer);
366
+ this.DWObject.RegisterEvent('OnPostLoad', this.Dynamsoft_OnPostLoadfunction);
367
+ this.DWObject.RegisterEvent('OnPostAllTransfers', this.Dynamsoft_OnPostAllTransfers);
368
+ this.DWObject.RegisterEvent('OnImageAreaSelected', this.Dynamsoft_OnImageAreaSelected);
369
+ this.DWObject.RegisterEvent('OnImageAreaDeSelected', this.Dynamsoft_OnImageAreaDeselected);
370
+ this.DWObject.RegisterEvent('OnGetFilePath', this.Dynamsoft_OnGetFilePath);
371
+ }
372
+ }
373
+ }
374
+ showtblLoadImage_onclick() {
375
+ switch (document.getElementById('tblLoadImage').style.visibility) {
376
+ case 'hidden':
377
+ document.getElementById('tblLoadImage').style.visibility = 'visible';
378
+ document.getElementById('Resolution').style.visibility = 'hidden';
379
+ break;
380
+ case 'visible':
381
+ document.getElementById('tblLoadImage').style.visibility = 'hidden';
382
+ document.getElementById('Resolution').style.visibility = 'visible';
383
+ break;
384
+ default:
385
+ break;
386
+ }
387
+ if (document.getElementById('pNoScanner')) {
388
+ // document.getElementById("tblLoadImage").style.top = ds_gettop(document.getElementById("pNoScanner")) + pNoScanner.offsetHeight + "px";
389
+ // document.getElementById("tblLoadImage").style.left = ds_getleft(document.getElementById("pNoScanner")) + 0 + "px";
390
+ }
391
+ return false;
392
+ }
393
+ closetblLoadImage_onclick() {
394
+ document.getElementById('tblLoadImage').style.visibility = 'hidden';
395
+ document.getElementById('Resolution').style.visibility = 'visible';
396
+ return false;
397
+ }
398
+ // --------------------------------------------------------------------------------------
399
+ // ************************** Used a lot *****************************
400
+ // --------------------------------------------------------------------------------------
401
+ updatePageInfo() {
402
+ const totalImage = document.getElementById('DW_TotalImage');
403
+ const currentImage = document.getElementById('DW_CurrentImage');
404
+ if (totalImage) {
405
+ totalImage.value = this.DWObject.HowManyImagesInBuffer;
406
+ }
407
+ if (currentImage) {
408
+ currentImage.value = this.DWObject.CurrentImageIndexInBuffer + 1;
409
+ }
410
+ }
411
+ appendMessage(strMessage) {
412
+ this._strTempStr += strMessage;
413
+ const _divMessageContainer = document.getElementById('DWTemessage');
414
+ if (_divMessageContainer) {
415
+ _divMessageContainer.innerHTML = this._strTempStr;
416
+ _divMessageContainer.scrollTop = _divMessageContainer.scrollHeight;
417
+ }
418
+ }
419
+ checkIfImagesInBuffer() {
420
+ if (this.DWObject.HowManyImagesInBuffer === 0) {
421
+ this.appendMessage('There is no image in buffer.<br />');
422
+ return false;
423
+ }
424
+ else {
425
+ return true;
426
+ }
427
+ }
428
+ checkErrorString() {
429
+ return this.checkErrorStringWithErrorCode(this.DWObject.ErrorCode, this.DWObject.ErrorString);
430
+ }
431
+ checkErrorStringWithErrorCode(errorCode, errorString, responseString = null) {
432
+ if (errorCode === 0) {
433
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' + errorString + '</b></span><br />');
434
+ return true;
435
+ }
436
+ if (errorCode === -2115) {
437
+ // Cancel file dialog
438
+ return true;
439
+ }
440
+ else {
441
+ if (errorCode === -2003) {
442
+ const ErrorMessageWin = window.open('', 'ErrorMessage', 'height=500,width=750,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
443
+ ErrorMessageWin.document.writeln(responseString); // this.DWObject.HTTPPostResponseString);
444
+ }
445
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' + errorString + '</b></span><br />');
446
+ return false;
447
+ }
448
+ }
449
+ // --------------------------------------------------------------------------------------
450
+ // ************************** Used a lot *****************************
451
+ // --------------------------------------------------------------------------------------
452
+ ds_getleft(el) {
453
+ let tmp = el.offsetLeft;
454
+ el = el.offsetParent;
455
+ while (el) {
456
+ tmp += el.offsetLeft;
457
+ el = el.offsetParent;
458
+ }
459
+ return tmp;
460
+ }
461
+ ds_gettop(el) {
462
+ let tmp = el.offsetTop;
463
+ el = el.offsetParent;
464
+ while (el) {
465
+ tmp += el.offsetTop;
466
+ el = el.offsetParent;
467
+ }
468
+ return tmp;
469
+ }
470
+ Over_Out_DemoImage(obj, url) {
471
+ obj.src = url;
472
+ }
473
+ source_onchange() {
474
+ if (document.getElementById('divTwainType')) {
475
+ document.getElementById('divTwainType').style.display = '';
476
+ }
477
+ if (document.getElementById('source')) {
478
+ const cIndex = document.getElementById('source')
479
+ .selectedIndex;
480
+ if (Dynamsoft.Lib.env.bMac) {
481
+ const strSourceName = this.DWObject.GetSourceNameItems(cIndex);
482
+ if (strSourceName.indexOf('ICA') === 0) {
483
+ if (document.getElementById('lblShowUI')) {
484
+ document.getElementById('lblShowUI').style.display = 'none';
485
+ }
486
+ if (document.getElementById('ShowUI')) {
487
+ document.getElementById('ShowUI').style.display = 'none';
488
+ }
489
+ }
490
+ else {
491
+ if (document.getElementById('lblShowUI')) {
492
+ document.getElementById('lblShowUI').style.display = '';
493
+ }
494
+ if (document.getElementById('ShowUI')) {
495
+ document.getElementById('ShowUI').style.display = '';
496
+ }
497
+ }
498
+ }
499
+ else {
500
+ this.DWObject.SelectSourceByIndex(cIndex);
501
+ }
502
+ }
503
+ }
504
+ mediaType_onchange() {
505
+ const MediaType = document.getElementById('MediaType');
506
+ if (MediaType && MediaType.options.length > 0) {
507
+ const valueMediaType = MediaType.options[MediaType.selectedIndex].text;
508
+ if (valueMediaType !== '') {
509
+ if (!this.DWObject.Addon.Webcam.SetMediaType(valueMediaType)) {
510
+ this.appendMessage('<b>Error setting MediaType value: </b>');
511
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' +
512
+ this.DWObject.ErrorString +
513
+ '</b></span><br />');
514
+ return;
515
+ }
516
+ }
517
+ }
518
+ const ResolutionWebcam = document.getElementById('ResolutionWebcam');
519
+ if (ResolutionWebcam) {
520
+ ResolutionWebcam.options.length = 0;
521
+ const aryResolution = this.DWObject.Addon.Webcam.GetResolution();
522
+ const countResolution = aryResolution.GetCount();
523
+ for (let i = 0; i < countResolution; i++) {
524
+ const value = aryResolution.Get(i);
525
+ ResolutionWebcam.options.add(new Option(value, value));
526
+ }
527
+ }
528
+ }
529
+ /*-----------------Acquire Image---------------------*/
530
+ acquireImage() {
531
+ const cIndex = document.getElementById('source')
532
+ .selectedIndex;
533
+ if (cIndex < 0) {
534
+ return;
535
+ }
536
+ this.DWObject.SelectSourceByIndex(cIndex);
537
+ this.DWObject.CloseSource();
538
+ this.DWObject.OpenSource();
539
+ this.DWObject.IfShowUI = document.getElementById('ShowUI').checked;
540
+ let i;
541
+ for (i = 0; i < 3; i++) {
542
+ if (document.getElementsByName('PixelType').item(i)
543
+ .checked === true) {
544
+ this.DWObject.PixelType = i;
545
+ }
546
+ }
547
+ if (this.DWObject.ErrorCode !== 0) {
548
+ this.appendMessage('<b>Error setting PixelType value: </b>');
549
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' +
550
+ this.DWObject.ErrorString +
551
+ '</b></span><br />');
552
+ }
553
+ this.DWObject.Resolution = document.getElementById('Resolution').value;
554
+ if (this.DWObject.ErrorCode !== 0) {
555
+ this.appendMessage('<b>Error setting Resolution value: </b>');
556
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' +
557
+ this.DWObject.ErrorString +
558
+ '</b></span><br />');
559
+ }
560
+ const bADFChecked = document.getElementById('ADF')
561
+ .checked;
562
+ this.DWObject.IfFeederEnabled = bADFChecked;
563
+ if (bADFChecked === true && this.DWObject.ErrorCode !== 0) {
564
+ this.appendMessage('<b>Error setting ADF value: </b>');
565
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' +
566
+ this.DWObject.ErrorString +
567
+ '</b></span><br />');
568
+ }
569
+ const bDuplexChecked = document.getElementById('Duplex').checked;
570
+ this.DWObject.IfDuplexEnabled = bDuplexChecked;
571
+ if (bDuplexChecked === true && this.DWObject.ErrorCode !== 0) {
572
+ this.appendMessage('<b>Error setting Duplex value: </b>');
573
+ this.appendMessage('<span style=\'color:#cE5E04\'><b>' +
574
+ this.DWObject.ErrorString +
575
+ '</b></span><br />');
576
+ }
577
+ if (Dynamsoft.Lib.env.bWin ||
578
+ (!Dynamsoft.Lib.env.bWin && this.DWObject.ImageCaptureDriverType === 0)) {
579
+ this.appendMessage('Pixel Type: ' +
580
+ this.DWObject.PixelType +
581
+ '<br />Resolution: ' +
582
+ this.DWObject.Resolution +
583
+ '<br />');
584
+ }
585
+ this.DWObject.IfDisableSourceAfterAcquire = true;
586
+ this.DWObject.AcquireImage();
587
+ }
588
+ /*-----------------Load Image---------------------*/
589
+ btnLoadImagesOrPDFs_onclick() {
590
+ const OnPDFSuccess = () => {
591
+ this.appendMessage('Loaded an image successfully.<br/>');
592
+ this.updatePageInfo();
593
+ };
594
+ const OnPDFFailure = (errorCode, errorString) => {
595
+ this.checkErrorStringWithErrorCode(errorCode, errorString);
596
+ };
597
+ this.DWObject.IfShowFileDialog = true;
598
+ this.DWObject.Addon.PDF.SetResolution(200);
599
+ this.DWObject.Addon.PDF.SetConvertMode(Dynamsoft.DWT.EnumDWT_ConvertMode.CM_RENDERALL);
600
+ this.DWObject.LoadImageEx('', Dynamsoft.DWT.EnumDWT_ImageType.IT_ALL, OnPDFSuccess, OnPDFFailure);
601
+ }
602
+ // --------------------------------------------------------------------------------------
603
+ // ************************** Edit Image ******************************
604
+ // --------------------------------------------------------------------------------------
605
+ btnShowImageEditor_onclick() {
606
+ if (!this.checkIfImagesInBuffer()) {
607
+ return;
608
+ }
609
+ this.DWObject.ShowImageEditor();
610
+ }
611
+ btnRotateRight_onclick() {
612
+ if (!this.checkIfImagesInBuffer()) {
613
+ return;
614
+ }
615
+ this.DWObject.RotateRight(this.DWObject.CurrentImageIndexInBuffer);
616
+ this.appendMessage('<b>Rotate right: </b>');
617
+ if (this.checkErrorString()) {
618
+ return;
619
+ }
620
+ }
621
+ btnRotateLeft_onclick() {
622
+ if (!this.checkIfImagesInBuffer()) {
623
+ return;
624
+ }
625
+ this.DWObject.RotateLeft(this.DWObject.CurrentImageIndexInBuffer);
626
+ this.appendMessage('<b>Rotate left: </b>');
627
+ if (this.checkErrorString()) {
628
+ return;
629
+ }
630
+ }
631
+ btnRotate180_onclick() {
632
+ if (!this.checkIfImagesInBuffer()) {
633
+ return;
634
+ }
635
+ this.DWObject.Rotate(this.DWObject.CurrentImageIndexInBuffer, 180, true);
636
+ this.appendMessage('<b>Rotate 180: </b>');
637
+ if (this.checkErrorString()) {
638
+ return;
639
+ }
640
+ }
641
+ btnMirror_onclick() {
642
+ if (!this.checkIfImagesInBuffer()) {
643
+ return;
644
+ }
645
+ this.DWObject.Mirror(this.DWObject.CurrentImageIndexInBuffer);
646
+ this.appendMessage('<b>Mirror: </b>');
647
+ if (this.checkErrorString()) {
648
+ return;
649
+ }
650
+ }
651
+ btnFlip_onclick() {
652
+ if (!this.checkIfImagesInBuffer()) {
653
+ return;
654
+ }
655
+ this.DWObject.Flip(this.DWObject.CurrentImageIndexInBuffer);
656
+ this.appendMessage('<b>Flip: </b>');
657
+ if (this.checkErrorString()) {
658
+ return;
659
+ }
660
+ }
661
+ /*----------------------Crop Method---------------------*/
662
+ btnCrop_onclick() {
663
+ if (!this.checkIfImagesInBuffer()) {
664
+ return;
665
+ }
666
+ if (this._iLeft !== 0 ||
667
+ this._iTop !== 0 ||
668
+ this._iRight !== 0 ||
669
+ this._iBottom !== 0) {
670
+ this.DWObject.Crop(this.DWObject.CurrentImageIndexInBuffer, this._iLeft, this._iTop, this._iRight, this._iBottom);
671
+ this._iLeft = 0;
672
+ this._iTop = 0;
673
+ this._iRight = 0;
674
+ this._iBottom = 0;
675
+ this.appendMessage('<b>Crop: </b>');
676
+ if (this.checkErrorString()) {
677
+ return;
678
+ }
679
+ return;
680
+ }
681
+ else {
682
+ this.appendMessage('<b>Crop: </b>failed. Please first select the area you\'d like to crop.<br />');
683
+ }
684
+ }
685
+ /*----------------Change Image Size--------------------*/
686
+ btnChangeImageSize_onclick() {
687
+ if (!this.checkIfImagesInBuffer()) {
688
+ return;
689
+ }
690
+ switch (document.getElementById('ImgSizeEditor').style.visibility) {
691
+ case 'visible':
692
+ document.getElementById('ImgSizeEditor').style.visibility = 'hidden';
693
+ break;
694
+ case 'hidden':
695
+ document.getElementById('ImgSizeEditor').style.visibility = 'visible';
696
+ break;
697
+ default:
698
+ break;
699
+ }
700
+ // document.getElementById("ImgSizeEditor").style.top = ds_gettop(document.getElementById("btnChangeImageSize")) + document.getElementById("btnChangeImageSize").offsetHeight + 15 + "px";
701
+ // document.getElementById("ImgSizeEditor").style.left = ds_getleft(document.getElementById("btnChangeImageSize")) - 14 + "px";
702
+ const iWidth = this.DWObject.GetImageWidth(this.DWObject.CurrentImageIndexInBuffer);
703
+ if (iWidth !== -1) {
704
+ document.getElementById('img_width').value = iWidth;
705
+ }
706
+ const iHeight = this.DWObject.GetImageHeight(this.DWObject.CurrentImageIndexInBuffer);
707
+ if (iHeight !== -1) {
708
+ document.getElementById('img_height').value = iHeight;
709
+ }
710
+ }
711
+ btnCancelChange_onclick() {
712
+ document.getElementById('ImgSizeEditor').style.visibility = 'hidden';
713
+ }
714
+ btnChangeImageSizeOK_onclick() {
715
+ document.getElementById('img_height').className = '';
716
+ document.getElementById('img_width').className = '';
717
+ if (!this.re.test(document.getElementById('img_height').value)) {
718
+ document.getElementById('img_height').className += ' invalid';
719
+ document.getElementById('img_height').focus();
720
+ this.appendMessage('Please input a valid <b>height</b>.<br />');
721
+ return;
722
+ }
723
+ if (!this.re.test(document.getElementById('img_width').value)) {
724
+ document.getElementById('img_width').className += ' invalid';
725
+ document.getElementById('img_width').focus();
726
+ this.appendMessage('Please input a valid <b>width</b>.<br />');
727
+ return;
728
+ }
729
+ this.DWObject.ChangeImageSize(this.DWObject.CurrentImageIndexInBuffer, document.getElementById('img_width').value, document.getElementById('img_height').value, document.getElementById('InterpolationMethod')
730
+ .selectedIndex + 1);
731
+ this.appendMessage('<b>Change Image Size: </b>');
732
+ if (this.checkErrorString()) {
733
+ document.getElementById('ImgSizeEditor').style.visibility = 'hidden';
734
+ return;
735
+ }
736
+ }
737
+ // --------------------------------------------------------------------------------------
738
+ // ************************** Save Image***********************************
739
+ // --------------------------------------------------------------------------------------
740
+ btnSave_onclick() {
741
+ if (!this.checkIfImagesInBuffer()) {
742
+ return;
743
+ }
744
+ const strimgType_save = 'pdf';
745
+ this.DWObject.IfShowFileDialog = true;
746
+ const _txtFileNameforSave = document.getElementById('txt_fileName');
747
+ if (_txtFileNameforSave) {
748
+ _txtFileNameforSave.className = '';
749
+ }
750
+ let bSave = false;
751
+ const strFilePath = _txtFileNameforSave.value + '.' + strimgType_save;
752
+ const OnSuccess = () => {
753
+ this.appendMessage('<b>Save Image: </b>');
754
+ this.checkErrorStringWithErrorCode(0, 'Successful.');
755
+ };
756
+ const OnFailure = (errorCode, errorString) => {
757
+ this.checkErrorStringWithErrorCode(errorCode, errorString);
758
+ };
759
+ bSave = this.DWObject.SaveAllAsPDF(strFilePath, OnSuccess, OnFailure);
760
+ if (bSave) {
761
+ this.appendMessage('<b>Save Image: </b>');
762
+ }
763
+ if (this.checkErrorString()) {
764
+ return;
765
+ }
766
+ }
767
+ // --------------------------------------------------------------------------------------
768
+ // ************************** Upload Image***********************************
769
+ // --------------------------------------------------------------------------------------
770
+ makeid(length) {
771
+ let result = '';
772
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
773
+ const charactersLength = characters.length;
774
+ for (let i = 0; i < length; i++) {
775
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
776
+ }
777
+ return result;
778
+ }
779
+ convertToBlob() {
780
+ var _a;
781
+ this.DocumentScanService.uploadStart.emit(true);
782
+ const pages = [];
783
+ for (let index = 0; index < ((_a = this.DWObject) === null || _a === void 0 ? void 0 : _a.HowManyImagesInBuffer); index++) {
784
+ pages.push(index);
785
+ }
786
+ this.DWObject.ConvertToBlob(pages, Dynamsoft.DWT.EnumDWT_ImageType.IT_PDF, (result, indices, type) => {
787
+ result.lastModifiedDate = new Date();
788
+ result.name = 'scan-' + this.datePipe.transform(result.lastModifiedDate, 'dd-MM-yyyy') + '.pdf';
789
+ this.DocumentScanService.uploadBatch(result).subscribe((batch) => {
790
+ batch.forEach(doc => {
791
+ this.file.next(doc);
792
+ });
793
+ });
794
+ }, (errorCode, errorString) => {
795
+ console.log(errorString);
796
+ this.DocumentScanService.uploadStart.emit(false);
797
+ });
798
+ }
799
+ convertToBlobForSaving() {
800
+ var _a;
801
+ const pages = [];
802
+ for (let index = 0; index < ((_a = this.DWObject) === null || _a === void 0 ? void 0 : _a.HowManyImagesInBuffer); index++) {
803
+ pages.push(index);
804
+ }
805
+ this.DWObject.ConvertToBlob(pages, Dynamsoft.DWT.EnumDWT_ImageType.IT_PDF, (result, indices, type) => {
806
+ result.lastModifiedDate = new Date();
807
+ result.name = 'scan-' + this.datePipe.transform(result.lastModifiedDate, 'dd-MM-yyyy') + '.pdf';
808
+ this.DocumentScanService.storedFile = result;
809
+ this.onMinimizingSubscription ? this.onMinimizingSubscription.unsubscribe() : '';
810
+ }, (errorCode, errorString) => {
811
+ console.log(errorString);
812
+ });
813
+ }
814
+ // --------------------------------------------------------------------------------------
815
+ // ************************** Navigator functions***********************************
816
+ // --------------------------------------------------------------------------------------
817
+ btnFirstImage_onclick() {
818
+ if (!this.checkIfImagesInBuffer()) {
819
+ return;
820
+ }
821
+ this.DWObject.CurrentImageIndexInBuffer = 0;
822
+ this.updatePageInfo();
823
+ }
824
+ btnPreImage_wheel() {
825
+ if (this.DWObject.HowManyImagesInBuffer !== 0) {
826
+ this.btnPreImage_onclick();
827
+ }
828
+ }
829
+ btnNextImage_wheel() {
830
+ if (this.DWObject.HowManyImagesInBuffer !== 0) {
831
+ this.btnNextImage_onclick();
832
+ }
833
+ }
834
+ btnPreImage_onclick() {
835
+ if (!this.checkIfImagesInBuffer()) {
836
+ return;
837
+ }
838
+ else if (this.DWObject.CurrentImageIndexInBuffer === 0) {
839
+ return;
840
+ }
841
+ this.DWObject.CurrentImageIndexInBuffer =
842
+ this.DWObject.CurrentImageIndexInBuffer - 1;
843
+ this.updatePageInfo();
844
+ }
845
+ btnNextImage_onclick() {
846
+ if (!this.checkIfImagesInBuffer()) {
847
+ return;
848
+ }
849
+ else if (this.DWObject.CurrentImageIndexInBuffer ===
850
+ this.DWObject.HowManyImagesInBuffer - 1) {
851
+ return;
852
+ }
853
+ this.DWObject.CurrentImageIndexInBuffer =
854
+ this.DWObject.CurrentImageIndexInBuffer + 1;
855
+ this.updatePageInfo();
856
+ }
857
+ btnLastImage_onclick() {
858
+ if (!this.checkIfImagesInBuffer()) {
859
+ return;
860
+ }
861
+ this.DWObject.CurrentImageIndexInBuffer =
862
+ this.DWObject.HowManyImagesInBuffer - 1;
863
+ this.updatePageInfo();
864
+ }
865
+ btnRemoveCurrentImage_onclick() {
866
+ if (!this.checkIfImagesInBuffer()) {
867
+ return;
868
+ }
869
+ this.DWObject.RemoveAllSelectedImages();
870
+ if (this.DWObject.HowManyImagesInBuffer === 0) {
871
+ document.getElementById('DW_TotalImage').value = this.DWObject.HowManyImagesInBuffer;
872
+ document.getElementById('DW_CurrentImage').value =
873
+ '';
874
+ return;
875
+ }
876
+ else {
877
+ this.updatePageInfo();
878
+ }
879
+ }
880
+ btnRemoveAllImages_onclick() {
881
+ if (!this.checkIfImagesInBuffer()) {
882
+ return;
883
+ }
884
+ this.DWObject.RemoveAllImages();
885
+ document.getElementById('DW_TotalImage').value = '0';
886
+ document.getElementById('DW_CurrentImage').value = '';
887
+ }
888
+ setlPreviewMode() {
889
+ const varNum = parseInt((document.getElementById('DW_PreviewMode')
890
+ .selectedIndex + 1).toString(), 10);
891
+ const btnCrop = document.getElementById('btnCrop');
892
+ if (btnCrop) {
893
+ let tmpstr = btnCrop.src;
894
+ if (varNum > 1) {
895
+ tmpstr = tmpstr.replace('Crop.', 'Crop_gray.');
896
+ btnCrop.src = tmpstr;
897
+ btnCrop.onclick = function () { };
898
+ }
899
+ else {
900
+ tmpstr = tmpstr.replace('Crop_gray.', 'Crop.');
901
+ btnCrop.src = tmpstr;
902
+ btnCrop.onclick = () => {
903
+ this.btnCrop_onclick();
904
+ };
905
+ }
906
+ }
907
+ this.DWObject.SetViewMode(varNum, varNum);
908
+ if (Dynamsoft.Lib.env.bMac || Dynamsoft.Lib.env.bLinux) {
909
+ return;
910
+ }
911
+ else if (document.getElementById('DW_PreviewMode')
912
+ .selectedIndex !== 0) {
913
+ this.DWObject.MouseShape = true;
914
+ }
915
+ else {
916
+ this.DWObject.MouseShape = false;
917
+ }
918
+ }
919
+ // --------------------------------------------------------------------------------------
920
+ // *********************************radio response***************************************
921
+ // --------------------------------------------------------------------------------------
922
+ rdTIFF_onclick() {
923
+ const _chkMultiPageTIFF = document.getElementById('MultiPageTIFF');
924
+ _chkMultiPageTIFF.disabled = false;
925
+ _chkMultiPageTIFF.checked = false;
926
+ const _chkMultiPagePDF = document.getElementById('MultiPagePDF');
927
+ _chkMultiPagePDF.checked = false;
928
+ _chkMultiPagePDF.disabled = true;
929
+ }
930
+ rdPDF_onclick() {
931
+ const _chkMultiPageTIFF = document.getElementById('MultiPageTIFF');
932
+ _chkMultiPageTIFF.checked = false;
933
+ _chkMultiPageTIFF.disabled = true;
934
+ const _chkMultiPagePDF = document.getElementById('MultiPagePDF');
935
+ _chkMultiPagePDF.disabled = false;
936
+ _chkMultiPagePDF.checked = true;
937
+ }
938
+ rd_onclick() {
939
+ const _chkMultiPageTIFF = document.getElementById('MultiPageTIFF');
940
+ _chkMultiPageTIFF.checked = false;
941
+ _chkMultiPageTIFF.disabled = true;
942
+ const _chkMultiPagePDF = document.getElementById('MultiPagePDF');
943
+ _chkMultiPagePDF.checked = false;
944
+ _chkMultiPagePDF.disabled = true;
945
+ }
946
+ Dynamsoft_OnMouseDoubleClick() {
947
+ return;
948
+ }
949
+ }
950
+ ScanComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanComponent, deps: [{ token: i1.TranslateService }, { token: i2.DocumentsService }, { token: i3.DatePipe }, { token: i4.DocumentScanService }, { token: 'environment' }, { token: APP_BASE_HREF }], target: i0.ɵɵFactoryTarget.Component });
951
+ ScanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ScanComponent, selector: "app-document-scan", inputs: { useStoredFile: "useStoredFile", hideUploadButton: "hideUploadButton" }, outputs: { file: "file" }, host: { classAttribute: "scanner" }, ngImport: i0, template: "<div id=\"DWTcontainer\">\r\n <div id=\"DWTcontainerTop\">\r\n <div id=\"divEdit\">\r\n <ul class=\"operateGrp\">\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/ShowEditor.png\" [title]=\"'scanner.showImageEditor' | translate\"\r\n [alt]=\"'scanner.showImageEditor' | translate\" id=\"btnEditor\" (click)=\"btnShowImageEditor_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RotateLeft.png\" [title]=\"'scanner.rotateLeft' | translate\"\r\n [alt]=\"'scanner.rotateLeft' | translate\" id=\"btnRotateL\" (click)=\"btnRotateLeft_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RotateRight.png\" [title]=\"'scanner.rotateRight' | translate\"\r\n [alt]=\"'scanner.rotateRight' | translate\" id=\"btnRotateR\" (click)=\"btnRotateRight_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Rotate180.png\" [alt]=\"'scanner.rotate180' | translate\"\r\n [title]=\"'scanner.rotate180' | translate\" (click)=\"btnRotate180_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Mirror.png\" [title]=\"'scanner.mirror' | translate\"\r\n [alt]=\"'scanner.mirror' | translate\" id=\"btnMirror\" (click)=\"btnMirror_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Flip.png\" [title]=\"'scanner.flip' | translate\"\r\n [alt]=\"'scanner.flip' | translate\" id=\"btnFlip\" (click)=\"btnFlip_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RemoveSelectedImages.png\"\r\n [title]=\"'scanner.removeSelected' | translate\" [alt]=\"'scanner.removeSelected' | translate\"\r\n id=\"DW_btnRemoveCurrentImage\" (click)=\"btnRemoveCurrentImage_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/RemoveAllImages.png\" [title]=\"'scanner.removeAll' | translate\"\r\n [alt]=\"'scanner.removeAll' | translate\" id=\"DW_btnRemoveAllImages\" (click)=\"btnRemoveAllImages_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/ChangeSize.png\" [title]=\"'scanner.resize' | translate\"\r\n [alt]=\"'scanner.resize' | translate\" id=\"btnChangeImageSize\" (click)=\"btnChangeImageSize_onclick()\" />\r\n </li>\r\n <li>\r\n <img src=\"./assets/dwt-resources/Images/Crop.png\" [title]=\"'scanner.crop' | translate\"\r\n [alt]=\"'scanner.crop' | translate\" id=\"btnCrop\" (click)=\"btnCrop_onclick()\" />\r\n </li>\r\n </ul>\r\n <div id=\"ImgSizeEditor\" style=\"visibility:hidden\">\r\n <ul>\r\n <li>\r\n <label for=\"img_height\">{{ 'scanner.newHeight' | translate }} :\r\n <input type=\"text\" id=\"img_height\" style=\"width:50%;\" size=\"10\" />\r\n {{ 'scanner.pixel' | translate }}</label>\r\n </li>\r\n <li>\r\n <label for=\"img_width\">{{ 'scanner.newWidth' | translate }} :&nbsp;\r\n <input type=\"text\" id=\"img_width\" style=\"width:50%;\" size=\"10\" />\r\n {{ 'scanner.pixel' | translate }}</label>\r\n </li>\r\n <li>\r\n {{ 'scanner.InterpolationMethod' | translate }}:\r\n <select size=\"1\" id=\"InterpolationMethod\">\r\n <option value=\"\"></option>\r\n </select>\r\n </li>\r\n <li style=\"text-align:center;\">\r\n <input type=\"button\" value=\" OK \" id=\"btnChangeImageSizeOK\" (click)=\"btnChangeImageSizeOK_onclick()\" />\r\n <input type=\"button\" value=\" Cancel \" id=\"btnCancelChange\" (click)=\"btnCancelChange_onclick()\" />\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div id=\"dwtcontrolContainer\"></div>\r\n <div id=\"btnGroupBtm\">\r\n <div class=\"ct-lt\">\r\n {{ 'scanner.page' | translate }}:\r\n <input id=\"DW_btnFirstImage\" (click)=\"btnFirstImage_onclick()\" type=\"button\" value=\" |< \" />&nbsp;\r\n <input id=\"DW_btnPreImage\" (click)=\"btnPreImage_onclick()\" type=\"button\" value=\" < \" />&nbsp;&nbsp;\r\n <input type=\"text\" size=\"2\" id=\"DW_CurrentImage\" readonly=\"readonly\" />\r\n /\r\n <input type=\"text\" size=\"2\" id=\"DW_TotalImage\" readonly=\"readonly\" />&nbsp;&nbsp;\r\n <input id=\"DW_btnNextImage\" (click)=\"btnNextImage_onclick()\" type=\"button\" value=\"> \" />&nbsp;\r\n <input id=\"DW_btnLastImage\" (click)=\"btnLastImage_onclick()\" type=\"button\" value=\">| \" />\r\n </div>\r\n <div class=\"ct-rt\">\r\n {{ 'scanner.preview' | translate }}:\r\n <select size=\"1\" id=\"DW_PreviewMode\" (change)=\"setlPreviewMode()\">\r\n <option value=\"0\">1X1</option>\r\n <option value=\"1\">2X2</option>\r\n <option value=\"2\">3X3</option>\r\n <option value=\"3\">4X4</option>\r\n <option value=\"4\">5X5</option>\r\n </select><br />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"ScanWrapper\">\r\n <div id=\"divScanner\" class=\"divinput\">\r\n <div id=\"div_ScanImage\" class=\"divTableStyle\">\r\n <ul id=\"ulScaneImageHIDE\">\r\n <li>\r\n <label for=\"source\">\r\n <p>{{ 'scanner.source' | translate }}:</p>\r\n </label>\r\n <select size=\"1\" id=\"source\" style=\"position:relative;\" (change)=\"source_onchange()\">\r\n <option value=\"\"></option>\r\n </select>\r\n </li>\r\n <li style=\"display:none;\" id=\"pNoScanner\">\r\n <a href=\"javascript: void(0)\" class=\"ShowtblLoadImage\" style=\"color:#fe8e14\" id=\"aNoScanner\">(No TWAIN\r\n compatible drivers detected)</a>\r\n </li>\r\n <li id=\"divProductDetail\">\r\n <ul id=\"divTwainType\">\r\n <li>\r\n <label id=\"lblShowUI\" for=\"ShowUI\">\r\n <input type=\"checkbox\" id=\"ShowUI\" />{{\r\n 'scanner.ShowUI' | translate\r\n }}&nbsp;</label>\r\n <label for=\"ADF\">\r\n <input type=\"checkbox\" id=\"ADF\" />{{\r\n 'scanner.AutoFeeder' | translate\r\n }}&nbsp;</label>\r\n <label for=\"Duplex\">\r\n <input type=\"checkbox\" id=\"Duplex\" />{{\r\n 'scanner.Duplex' | translate\r\n }}</label>\r\n </li>\r\n <li>\r\n {{ 'scanner.PixelType' | translate }}:\r\n <label for=\"BW\" style=\"margin-left:5px;\">\r\n <input type=\"radio\" id=\"BW\" name=\"PixelType\" />{{\r\n 'scanner.B&W' | translate\r\n }}</label>\r\n <label for=\"Gray\">\r\n <input type=\"radio\" id=\"Gray\" name=\"PixelType\" />{{\r\n 'scanner.Gray' | translate\r\n }}</label>\r\n <label for=\"RGB\">\r\n <input type=\"radio\" id=\"RGB\" name=\"PixelType\" />{{\r\n 'scanner.Color' | translate\r\n }}</label>\r\n </li>\r\n <li>\r\n <span>{{ 'scanner.Resolution' | translate }}:&nbsp;</span><select size=\"1\" id=\"Resolution\">\r\n <option value=\"100\">100</option>\r\n <option value=\"150\">150</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\" selected>300</option>\r\n </select>\r\n </li>\r\n </ul>\r\n </li>\r\n\r\n <button id=\"btnScan\" disabled=\"disabled\" (click)=\"acquireImage()\" type=\"button\" class=\"btn mx-2\">\r\n <i class=\"bi bi-upc-upload icon\"></i>\r\n <span> {{ 'scanner.scan' | translate }}</span>\r\n </button>\r\n <button (click)=\"btnLoadImagesOrPDFs_onclick()\" type=\"button\" class=\"btn\">\r\n <i class=\"bi bi-upload icon\"></i>\r\n <span> {{ 'scanner.load' | translate }}</span>\r\n </button>\r\n \r\n </ul>\r\n </div>\r\n\r\n <div class=\"row gap\">\r\n <div class=\"col-12 mt-2\">\r\n <button class=\"btn\" [ngClass]=\"{'hide-upload-button' : hideUploadButton}\" #scannerUploadButton id=\"scannerUploadButton\" [disabled]=\"DWObject?.HowManyImagesInBuffer === 0\" color=\"primary\"\r\n (click)=\"convertToBlob()\">\r\n {{ 'scanner.save' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".scanner img{vertical-align:middle;border:0}.scanner p{margin:0;padding:0}.scanner a:link,.scanner a:visited{color:#606060;text-decoration:none}.scanner a:hover{color:#fe8e14}.scanner input{font:normal 12px verdana;color:#444}.scanner input.invalid{background-color:#ff9;border:2px red inset}.scanner a img{border:none}.scanner a img:hover{border:none}.scanner ul{list-style:none;padding-left:0;margin:0}.scanner .container{width:980px;margin:0 auto}.scanner .container:after,.scanner .clearfix:after{content:\"\";display:table;clear:both}.scanner .tc{text-align:center}.scanner .btnOrg{padding:0 15px;height:30px;line-height:28px;font-size:14px;color:#fff;background:#50a8e1;border:none;outline:none;cursor:pointer;border-radius:5px;-webkit-border-radius:5px;-moz-border-right-colors:5px;transition:all .2s ease-in-out}.scanner .btnOrg:hover{background:#61c2ec}.scanner .d-btn{display:inline-block;padding:0 25px;height:36px;line-height:30px;color:#fe8e14;font-size:14px;text-align:center;cursor:pointer;border:solid 2px #fe8e14;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;transition:all .2s ease-in-out}.scanner .d-btn:link,.scanner .d-btn:visited{color:#fe8e14}.scanner .d-btn:hover{color:#ffae38;border:solid 2px #ffae38}.scanner .d-btn.lgBtn{height:46px;line-height:40px}.scanner .d-btn.mdBtn{height:42px;line-height:36px}.scanner .d-btn.smBtn{height:38px;line-height:32px}.scanner .d-btn.bgOrange{background:#fe8e14;color:#fff}.scanner .d-btn.bgOrange:hover{background:#ffae38}.scanner .d-btn.bgBlue{border-color:#50a8e1;background:#50a8e1;color:#fff}.scanner .d-btn.bgBlue:hover{border-color:#61c2ec;background:#61c2ec}.scanner #dwtScanDemo{width:980px;margin:0 auto}.scanner #dwtScanDemo .ct-top{padding:0 0 15px}.scanner #dwtScanDemo .ct-top .title{font-size:18px;line-height:27px;color:#444}.scanner #dwtScanDemo .ct-top .desc{margin:0 15px 0 30px;font-size:14px;line-height:24px;color:#aaa}.scanner #DWTcontainer{display:flex;justify-content:space-between;flex-direction:row}.scanner #DWTcontainerTop{position:relative;float:left;flex:1;margin:0 10px;height:auto;border:1px solid #ccc;display:flex;justify-content:space-between;flex-direction:row}.scanner .ds-dwt-container-box>div{border:none!important}.scanner #divEdit{float:left;margin:0;padding:0;width:60px;background:#fff;border-right:1px solid #ccc}.scanner #divEdit .operateGrp li{margin:0;width:60px;height:57px;line-height:52px;border-bottom:solid 1px #ccc;text-align:center}.scanner #divEdit .operateGrp li:nth-last-child(2){height:58px}.scanner #divEdit .operateGrp li:last-child{height:56px;border-bottom:none}.scanner #divEdit .operateGrp li>img{cursor:pointer}.scanner #Crop{padding:10px 5px 5px;text-align:center;border-collapse:collapse;border:3px solid #ce5e04;position:absolute;height:80px;z-index:1;background-color:#f0f0f0;width:250px}.scanner #ImgSizeEditor{padding:10px 15px;position:absolute;z-index:1;top:513px;left:-1px;height:auto;width:320px;font-size:14px;color:#606060;text-align:left;background-color:#f5f5f5;border-collapse:collapse;border:1px solid #ccc;box-shadow:4px 4px 18px #ccc;-webkit-box-shadow:4px 4px 18px #ccc;-moz-box-shadow:4px 4px 18px #ccc}.scanner #ImgSizeEditor li{margin-bottom:5px}.scanner #ImgSizeEditor input{background:#fff;border:solid 1px #ccc}.scanner #ImgSizeEditor input[type=text]{padding-left:3px}.scanner #ImgSizeEditor input[type=button]{padding:5px;margin:6px 5px 0}.scanner #dwtcontrolContainer{float:left;width:100%;height:calc(100% - 58px)}.scanner #dwtcontrolContainer .dynamsoft-dwt-container-box>div{border:none!important}.scanner #dwt-NonInstallContainerID{float:left;width:560px;height:590px}.scanner #DWTcontainerTop #btnGroupBtm{position:absolute;bottom:0;padding:15px;width:calc(100% - 60px);height:58px;background:#f5f5f5;border-top:1px solid #ccc;font-size:14px;color:#606060;vertical-align:bottom;display:flex;justify-content:space-between;flex-direction:row;align-items:center;box-sizing:border-box;left:60px}.scanner #btnGroupBtm .ct-lt{float:left}.scanner #btnGroupBtm .ct-lt input{padding:0;margin-right:6px;width:25px;height:20px;font-size:10px;background:#f5f5f5;border:solid 1px #bbbcc0;outline:none;cursor:pointer}.scanner #btnGroupBtm .ct-lt input[type=text]{height:20px;font-size:12px;border:none;cursor:default}.scanner #btnGroupBtm .ct-lt #DW_btnFirstImage{margin-left:5px}.scanner #btnGroupBtm .ct-lt #DW_CurrentImage{margin:0 0 0 -13px;text-align:right}.scanner #btnGroupBtm .ct-lt #DW_TotalImage{margin:0 -7px 0 0;text-align:left}.scanner #btnGroupBtm .ct-rt{float:right}.scanner #DW_PreviewMode{padding:0 5px;margin-left:5px;height:26px;border:solid 1px #d8d8d8;color:#444;outline:none;border-radius:5px;cursor:pointer}.scanner #ScanWrapper{width:315px;height:570px;box-sizing:border-box}.scanner div.divinput{font-size:14px;color:#606060;line-height:24px;margin-bottom:20px}.scanner .divType,.scanner #ScanWrapper .toggle{padding-left:20px;height:38px;line-height:36px;font-size:14px;color:#444;border-bottom:solid 1px #ccc;background:#eee;cursor:pointer}.scanner #ScanWrapper .toggle{cursor:default}.scanner .mark_arrow{display:block;float:right;margin:15px 20px 0 0;width:12px;height:8px}.scanner .divTableStyle{border:3px solid #ccc;border-radius:5px;padding:10px;border-bottom:solid 1px #ccc}.scanner .divTableStyle input[type=radio],.scanner .divTableStyle input[type=checkbox]{margin:0 5px!important;height:13px;display:inline-block}.scanner #ScanWrapper select,.scanner #divUpload input[type=text]{margin-top:3px;margin-bottom:6px;height:26px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.scanner #ScanWrapper input[type=checkbox],.scanner #ScanWrapper input[type=radio]{margin:0 3px 0 0}.scanner #divScanner{border-bottom:none}.scanner #PCollapse{list-style:none inside none;margin-left:0;padding-left:0}.scanner select#source{margin-top:3px;padding-left:3px;width:100%;font-size:12px;border:solid 1px #ccc;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;outline:none}.scanner select#Resolution{margin-left:3px;width:192px;height:26px}.scanner #divProductDetail li{margin-top:8px}.scanner #divProductDetail li:first-child{margin-top:3px}.scanner #divProductDetail li label{display:inline-block;margin:0 4px;font-size:12px}.scanner #divProductDetail li label:last-child{margin:0}.scanner #divProductDetail li label input{width:15px;height:15px;vertical-align:middle}.scanner #btnScan{margin-top:10px;margin-bottom:5px}.scanner #div_LoadLocalImage input[type=button]{margin:15px 0;width:90px;height:30px}.scanner #div_ScanImage{position:relative}.scanner #tblLoadImage{position:absolute;top:102px;z-index:1;padding:30px 22px;width:275px;height:128px;font-size:14px;line-height:30px;text-align:left;border:1px solid #fe8e14;background-color:#f5f5f5}.scanner #tblLoadImage>a{position:absolute;top:15px;right:15px;line-height:normal;text-decoration:none}.scanner #tblLoadImage a{color:#50a8e1}.scanner #tblLoadImage a:hover{color:#61c2ec}.scanner #divUpload input[type=text]{width:100%;padding-left:5px}.scanner #divUpload li label{display:inline-block;margin:0 8px 0 0;font-size:12px}.scanner #divUpload li img{margin-right:2px}.scanner #divUpload li label:last-child{margin-right:0}.scanner #divUpload li input{width:15px;height:15px;vertical-align:middle}.scanner #divUpload li:nth-child(3){margin:5px 0 8px}.scanner #divUpload li{padding:0 20px}.scanner #divUpload li:nth-child(2){padding-top:12px}.scanner #divUpload input[type=button]{margin:14px 0 20px}.scanner #divUpload #btnSave,.scanner #divUpload #btnUpload{padding:0;width:115px;height:30px;margin-right:15px;cursor:pointer}.scanner #divUpload #btnUpload{width:138px;margin-right:0}.scanner #DWTcontainerBtm{position:relative;float:left;width:980px}.scanner #DWTemessageContainer{float:left}.scanner #DWTemessageContainer input[type=text]{border:solid 1px #ccc;padding-left:3px}.scanner #DWTemessageContainer input[type=button]{cursor:pointer;margin:0 3px;outline:none}.scanner #DWTdivMsg{padding:5px 0 0;font-size:14px;color:#444}.scanner #DWTemessage{padding:6px 0 0 8px;margin-top:3px;width:632px;height:160px;border:solid 1px #ccc;overflow-y:scroll;background:#fff}.scanner #divNoteMessage{float:right;padding:10px 15px;margin-top:34px;width:315px;height:160px;font-size:12px;line-height:20px;border:1px solid #ccc;background:#e7f2fd;color:#606060}.scanner #divNoteMessage p{margin:0;color:#444}.scanner .ds-dialog-wrap,.scanner .ds-dialog-wrap div{box-sizing:content-box!important}.scanner .ds-dialog-wrap:before,.scanner .ds-dialog-wrap div:before,.scanner .ds-dialog-wrap:after,.scanner .ds-dialog-wrap div:after{box-sizing:content-box!important}.scanner .ks-overlay{position:absolute;left:-9999px;top:-9999px}.scanner .ks-ext-close{padding:0 20px;position:absolute;right:-5px;top:5px}.scanner .ks-ext-close,.scanner .ks-ext-close:link{color:#22a;text-decoration:none;cursor:pointer}.scanner .ks-ext-mask{background:#999;filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7}.scanner .D-dailog .ks-ext-close .ks-ext-close-x{height:8px}.scanner .D-dailog .ks-ext-close,.scanner .D-dailog .ks-ext-close:hover{background:none;border:none}.scanner .D-dailog{position:absolute;left:-9999px;top:-99999px;margin:100px auto;padding:0;width:392px;height:262px;background-color:#f1f2f2}.scanner .D-dailog .D-dailog-body{width:350px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.scanner .D-dailog .D-dailog-body-Mac{width:350px;height:235px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.scanner .D-dailog .D-dailog-body-NotAllowed{color:#444;line-height:1.8;width:350px;height:185px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.scanner .D-dailog .D-dailog-body-Scan{width:380px;height:240px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.scanner .D-dailog .D-dailog-body-Scan-sample{width:380px;height:200px;position:relative;top:5px;left:5px;margin:0;background-color:#fff;border:1px solid #e7e7e7;padding:15px}.scanner .D-dailog a{text-decoration:none}.scanner .link{text-decoration:underline}.scanner .D-dailog ul{margin:10px 0 10px 20px;list-style-type:disc}.scanner .red{color:red;margin-left:5px}.scanner #message{position:fixed;top:0px;left:0px;width:100%;z-index:105;text-align:center;font-weight:bold;font-size:100%;padding:10px 0;color:#239210;background-color:#e0f0d6;border:1px solid #54d33f;box-shadow:0 0 10px #3a3a3a}.scanner #MessageBody a{color:#6a9962;font-size:14px}.scanner #message span{text-align:center;width:95%;float:left}.scanner #MessageBoy a:hover{text-decoration:underline}.scanner .close-notify{white-space:nowrap;float:right;margin-right:10px;color:#fff;text-decoration:none;border:2px #fff solid;padding-left:3px;padding-right:3px}.scanner .close-notify a{color:#fff}.scanner .DWTPage{margin:0 auto}.hide-upload-button{opacity:0!important}\n"], directives: [{ type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
952
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanComponent, decorators: [{
953
+ type: Component,
954
+ args: [{
955
+ selector: 'app-document-scan',
956
+ templateUrl: './document-scan.component.html',
957
+ styleUrls: ['./document-scan.component.scss'],
958
+ host: { class: 'scanner' },
959
+ encapsulation: ViewEncapsulation.None
960
+ }]
961
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.DocumentsService }, { type: i3.DatePipe }, { type: i4.DocumentScanService }, { type: undefined, decorators: [{
962
+ type: Inject,
963
+ args: ['environment']
964
+ }] }, { type: undefined, decorators: [{
965
+ type: Inject,
966
+ args: [APP_BASE_HREF]
967
+ }] }]; }, propDecorators: { useStoredFile: [{
968
+ type: Input
969
+ }], hideUploadButton: [{
970
+ type: Input
971
+ }], file: [{
972
+ type: Output
973
+ }] } });
974
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtc2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXNjYW4vZG9jdW1lbnQtc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXNjYW4vZG9jdW1lbnQtc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQUUsTUFBTSxFQUNwQixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLFNBQVMsTUFBTSxLQUFLLENBQUM7Ozs7Ozs7QUFLNUI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQVFILE1BQU0sT0FBTyxhQUFhO0lBeUJ4QixZQUNTLFNBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxRQUFrQixFQUNsQixtQkFBeUMsRUFDakIsV0FBVyxFQUNYLFFBQWdCO1FBTHhDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXNCO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ1gsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQTNCeEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIscUJBQWdCLEdBQUMs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QixHQUFRLFFBQVEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEUsaUJBQWlCLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWxDLE1BQU0sZ0JBQWdCLEdBQVEsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RSxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQTBDRCw0QkFBNEI7UUFDMUIsT0FBTztJQUNULENBQUM7OzBHQWxsQ1UsYUFBYSw2SUE4QmQsYUFBYSxhQUNiLGFBQWE7OEZBL0JaLGFBQWEsMk1DckMxQixteVJBZ0xBOzJGRDNJYSxhQUFhO2tCQVB6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO29CQUMxQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7OzBCQStCSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLGFBQWE7NENBM0JkLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdOLElBQUk7c0JBREgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9CQVNFX0hSRUYsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IER5bmFtc29mdCBmcm9tICdkd3QnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9jdW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvY3VtZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRTY2FuU2VydmljZSB9IGZyb20gJy4vZG9jdW1lbnQtc2Nhbi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEb2N1bWVudCBTY2FuIGlzIGEgcmV1c2FibGUgbnV4ZW8gQVBJICYgU2Nhbm5lciBpbnRlZ3JhdGVkIGNvbXBvbmVudCxcclxuICogdGhhdCB1dGlsaXplcyB0aGUgc2Nhbm5lciB0byBjcmVhdGUgYW5kIHVwbG9hZCBQREYgZmlsZSBhcyBhIGJhdGNoLCB0aGVuIHByb3ZpZGVcclxuICogdGhhdCBiYXRjaCBmb3IgY29uc3VtcHRpb25cclxuICpcclxuICogQHRpdGxlXHJcbiAqIERvY3VtZW50IFNjYW5cclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGFwcC1kb2N1bWVudC1zY2FuXHJcbiAqICAgKGZpbGUpPVwib25TdWNjZXNzKCRldmVudClcIlxyXG4gKiA+PC9hcHAtZG9jdW1lbnQtc2Nhbj5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWRvY3VtZW50LXNjYW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC1zY2FuLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC1zY2FuLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDogeyBjbGFzczogJ3NjYW5uZXInIH0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgdXBsb2FkZWRGaWxlO1xyXG4gIG9uTWluaW1pemluZ1N1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQElucHV0KCkgdXNlU3RvcmVkRmlsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVVcGxvYWRCdXR0b249ZmFsc2U7XHJcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGJhdGNoIGlzIHVwbG9hZGVkICovXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIERXT2JqZWN0O1xyXG4gIHNlbGVjdFNvdXJjZXM6IEhUTUxTZWxlY3RFbGVtZW50O1xyXG4gIERXVFNvdXJjZUNvdW50ID0gMDtcclxuICBmaWxlbmFtZSA9ICcnO1xyXG4gIGNvbnRhaW5lcklkID0gJ2R3dGNvbnRyb2xDb250YWluZXInO1xyXG4gIGJXQVNNID0gRHluYW1zb2Z0LkxpYi5lbnYuYk1vYmlsZSB8fCBEeW5hbXNvZnQuRFdULlVzZUxvY2FsU2VydmljZTtcclxuICBfaUxlZnQ7XHJcbiAgX2lUb3A7XHJcbiAgX2lSaWdodDtcclxuICBfaUJvdHRvbTtcclxuICBfc3RyVGVtcFN0ciA9ICcnO1xyXG4gIHJlID0gL15cXGQrJC87XHJcbiAgc3RycmUgPSAvXltcXHNcXHddKyQvO1xyXG4gIHJlZmxvYXQgPSAvXlxcZCtcXC4qXFxkKiQvaTtcclxuICBpbm5lckhUTUw6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRzU2VydmljZTogRG9jdW1lbnRzU2VydmljZSxcclxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwdWJsaWMgRG9jdW1lbnRTY2FuU2VydmljZSA6IERvY3VtZW50U2NhblNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcbiAgICBASW5qZWN0KEFQUF9CQVNFX0hSRUYpIHByaXZhdGUgYmFzZUhyZWY6IHN0cmluZ1xyXG4gICkgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBEeW5hbXNvZnQuRFdULlJlc291cmNlc1BhdGggPSB0aGlzLmJhc2VIcmVmICsgJy9hc3NldHMvZHd0LXJlc291cmNlcyc7XHJcbiAgICAvLy9cclxuICAgIER5bmFtc29mdC5EV1QuQXV0b0xvYWQgPSB0cnVlO1xyXG4gICAgLy8vXHJcbiAgICAvLyBjb25zdCB3aWR0aCA9IHdpbmRvdy5vdXRlcldpZHRoICogMC4zO1xyXG4gICAgLy8gY29uc3QgaGVpZ2h0ID0gd2luZG93Lm91dGVySGVpZ2h0ICogMC4zO1xyXG4gICAgRHluYW1zb2Z0LkRXVC5Db250YWluZXJzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgV2ViVHdhaW5JZDogJ0RXVE9iamVjdCcsXHJcbiAgICAgICAgQ29udGFpbmVySWQ6ICdkd3Rjb250cm9sQ29udGFpbmVyJyxcclxuICAgICAgICBXaWR0aDogJzEwMCUnLFxyXG4gICAgICAgIEhlaWdodDogJzEwMCUnXHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgRHluYW1zb2Z0LkRXVC5Qcm9kdWN0S2V5ID0gdGhpcy5lbnZpcm9ubWVudC5keW5hbXNvZnRQcm9kdWN0S2V5O1xyXG4gICAgICAgIC8vIER5bmFtc29mdC5EV1QuVHJpYWwgPSBmYWxzZTtcclxuICAgIC8vIER5bmFtc29mdC5EV1QuRGVidWcgPSBmYWxzZTsgLy8gb25seSBmb3IgZGVidWdnZXIgb3V0cHV0XHJcblxyXG4gICAgLy8vXHJcbiAgICBEeW5hbXNvZnQuRFdULklmQWRkTUQ1SW5VcGxvYWRIZWFkZXIgPSBmYWxzZTtcclxuXHJcbiAgICAvLy9cclxuICAgIER5bmFtc29mdC5EV1QuSWZDb25maW5lTWFza1dpdGhpblRoZVZpZXdlciA9IGZhbHNlO1xyXG4gICAgRHluYW1zb2Z0Lk1TRyA9IHtcclxuICAgICAgQ29udmVydGluZ1RvQmFzZTY0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICdzY2FubmVyLkNvbnZlcnRpbmdUb0Jhc2U2NCdcclxuICAgICAgKSxcclxuICAgICAgQ29udmVydGluZ1RvQmxvYjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnc2Nhbm5lci5Db252ZXJ0aW5nVG9CbG9iJ1xyXG4gICAgICApLFxyXG4gICAgICBEb3dubG9hZGluZzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5Eb3dubG9hZGluZycpLFxyXG4gICAgICBFbmNvZGluZzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5FbmNvZGluZycpLFxyXG4gICAgICBFcnJfQnJvd3Nlck5vdFN1cHBvcnRXYXNtOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICdzY2FubmVyLkVycl9Ccm93c2VyTm90U3VwcG9ydFdhc20nXHJcbiAgICAgICksXHJcbiAgICAgIEluaXRfQWxsSnNMb2FkZWQ6IER5bmFtc29mdC5NU0cuSW5pdF9BbGxKc0xvYWRlZCxcclxuICAgICAgSW5pdF9DaGVja0RXVDogRHluYW1zb2Z0Lk1TRy5Jbml0X0NoZWNrRFdULFxyXG4gICAgICBJbml0X0NoZWNrRFdUVmVyc2lvbjogRHluYW1zb2Z0Lk1TRy5Jbml0X0NoZWNrRFdUVmVyc2lvbixcclxuICAgICAgSW5pdF9DaGVja2luZ0xpY2Vuc2U6IER5bmFtc29mdC5NU0cuSW5pdF9DaGVja2luZ0xpY2Vuc2UsXHJcbiAgICAgIEluaXRfQ29tcGlsaW5nV2FzbTogRHluYW1zb2Z0Lk1TRy5Jbml0X0NvbXBpbGluZ1dhc20sXHJcbiAgICAgIEluaXRfQ29uZmlndXJpbmdEV1Q6IER5bmFtc29mdC5NU0cuSW5pdF9Db25maWd1cmluZ0RXVCxcclxuICAgICAgSW5pdF9DcmVhdGluZ0RXVDogRHluYW1zb2Z0Lk1TRy5Jbml0X0NyZWF0aW5nRFdULFxyXG4gICAgICBJbml0X0Rvd25sb2FkaW5nV2FzbTogRHluYW1zb2Z0Lk1TRy5Jbml0X0Rvd25sb2FkaW5nV2FzbSxcclxuICAgICAgSW5pdF9GaXJlQmVmb3JlSW5pdEV2dDogRHluYW1zb2Z0Lk1TRy5Jbml0X0ZpcmVCZWZvcmVJbml0RXZ0LFxyXG4gICAgICBJbml0X0dldExpY2Vuc2VJbmZvRm9yRFdUOiBEeW5hbXNvZnQuTVNHLkluaXRfR2V0TGljZW5zZUluZm9Gb3JEV1QsXHJcbiAgICAgIEluaXRfSW5pdEFjdGl2ZVg6IER5bmFtc29mdC5NU0cuSW5pdF9Jbml0QWN0aXZlWCxcclxuICAgICAgSW5pdF9Jbml0RHluYW1zb2Z0U2VydmljZTogRHluYW1zb2Z0Lk1TRy5Jbml0X0luaXREeW5hbXNvZnRTZXJ2aWNlLFxyXG4gICAgICBJbml0X0luaXRINTogRHluYW1zb2Z0Lk1TRy5Jbml0X0luaXRINSxcclxuICAgICAgSW5pdF9Jbml0V2FzbTogRHluYW1zb2Z0Lk1TRy5Jbml0X0luaXRXYXNtLFxyXG4gICAgICBJbml0X0xvYWRpbmdWaWV3ZXJKczogRHluYW1zb2Z0Lk1TRy5Jbml0X0xvYWRpbmdWaWV3ZXJKcyxcclxuICAgICAgSW5pdF9Mb29raW5nTGljZW5zZTogRHluYW1zb2Z0Lk1TRy5Jbml0X0xvb2tpbmdMaWNlbnNlLFxyXG4gICAgICBJbml0X1NldExpY2Vuc2VGb3JEV1Q6IER5bmFtc29mdC5NU0cuSW5pdF9TZXRMaWNlbnNlRm9yRFdULFxyXG4gICAgICBMb2FkaW5nOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FubmVyLkxvYWRpbmcnKSxcclxuICAgICAgTG9hZGluZ1BkZjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5Mb2FkaW5nUGRmJyksXHJcbiAgICAgIExvYWRpbmdUaWZmOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FubmVyLkxvYWRpbmdUaWZmJyksXHJcbiAgICAgIFNhdmluZ1BkZjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5TYXZpbmdQZGYnKSxcclxuICAgICAgU2F2aW5nVGlmZjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5TYXZpbmdUaWZmJyksXHJcbiAgICAgIFVwbG9hZGluZzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5VcGxvYWRpbmcnKVxyXG4gICAgfTtcclxuICAgIER5bmFtc29mdC5EV1QuQ3VzdG9taXphYmxlRGlzcGxheUluZm8gPSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3NjYW5uZXIuZXJyb3JNZXNzYWdlcycpLFxyXG5cclxuICAgICAgLy8gbGF1bmNoXHJcbiAgICAgIGdlbmVyYWxNZXNzYWdlczogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5nZW5lcmFsTWVzc2FnZXMnKSxcclxuXHJcbiAgICAgIGN1c3RvbVByb2dyZXNzVGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnc2Nhbm5lci5jdXN0b21Qcm9ncmVzc1RleHQnXHJcbiAgICAgICksXHJcblxyXG4gICAgICAvLyBpbWFnZSBlZGl0b3JcclxuICAgICAgYnV0dG9uczogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5idXR0b25zJyksXHJcblxyXG4gICAgICBkaWFsb2dUZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FubmVyLmRpYWxvZ1RleHQnKVxyXG4gICAgfTtcclxuXHJcbiAgICBEeW5hbXNvZnQuRFdULk9uV2ViVHdhaW5SZWFkeSA9ICgpOiBhbnkgPT4ge1xyXG4gICAgICB0aGlzLnBhZ2VvbmxvYWQoKTtcclxuICAgICAgdGhpcy5EeW5hbXNvZnRfT25SZWFkeSgpO1xyXG4gICAgfTtcclxuICAgIER5bmFtc29mdC5EV1QuTG9hZCgpO1xyXG5cclxuICAgIHRoaXMub25NaW5pbWl6aW5nU3Vic2NyaXB0aW9uID0gdGhpcy5Eb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jb252ZXJ0VG9CbG9iRm9yU2F2aW5nKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnBhZ2VvbmxvYWQoKTtcclxuICAgIGlmKHRoaXMudXNlU3RvcmVkRmlsZSl7XHJcbiAgICAgICAgaWYodGhpcy5Eb2N1bWVudFNjYW5TZXJ2aWNlLnN0b3JlZEZpbGUpe1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RvcmVkRmlsZVRvU2Nhbm5lcih0aGlzLkRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSk7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0U3RvcmVkRmlsZVRvU2Nhbm5lcihyZXN1bHQpe1xyXG4gICAgdGhpcy5EV09iamVjdC5Mb2FkSW1hZ2VGcm9tQmluYXJ5KFxyXG4gICAgICByZXN1bHQsXHJcbiAgICAgIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3N1Y2Nlc3MnKTtcclxuICAgICAgfSxcclxuICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlcnJvclN0cmluZykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3JTdHJpbmcpO1xyXG4gICAgICB9XHJcbiAgKTtcclxuICB9XHJcblxyXG4gIHBhZ2VvbmxvYWQoKSB7XHJcbiAgICB0aGlzLkhpZGVMb2FkSW1hZ2VGb3JMaW51eCgpO1xyXG4gICAgY29uc3QgdHdhaW5zb3VyY2U6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKTtcclxuICAgIGlmICh0d2FpbnNvdXJjZSkge1xyXG4gICAgICB0d2FpbnNvdXJjZS5vcHRpb25zLmxlbmd0aCA9IDA7XHJcbiAgICAgIHR3YWluc291cmNlLm9wdGlvbnMuYWRkKFxyXG4gICAgICAgIG5ldyBPcHRpb24odGhpcy50cmFuc2xhdGUuaW5zdGFudCgnc2Nhbm5lci5wbGVhc2VXYWl0JyksICcwJylcclxuICAgICAgKTtcclxuICAgICAgdHdhaW5zb3VyY2Uub3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0aWF0ZUlucHV0cygpO1xyXG4gIH1cclxuXHJcbiAgSGlkZUxvYWRJbWFnZUZvckxpbnV4KCkge1xyXG4gICAgY29uc3QgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaUxvYWRJbWFnZScpO1xyXG4gICAgaWYgKG8pIHtcclxuICAgICAgaWYgKER5bmFtc29mdC5MaWIuZW52LmJMaW51eCkgeyBvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IH1cclxuICAgICAgZWxzZSB7IG8uc3R5bGUuZGlzcGxheSA9ICcnOyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUlucHV0cygpIHtcclxuICAgIGNvbnN0IGFsbGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxpbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGFsbGlucHV0c1tpXS50eXBlID09PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgYWxsaW5wdXRzW2ldLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmIChhbGxpbnB1dHNbaV0udHlwZSA9PT0gJ3RleHQnKSB7XHJcbiAgICAgICAgYWxsaW5wdXRzW2ldLnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoRHluYW1zb2Z0LkxpYi5lbnYuYklFID09PSB0cnVlICYmIER5bmFtc29mdC5MaWIuZW52LmJXaW42NCA9PT0gdHJ1ZSkge1xyXG4gICAgICBsZXQgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW1wbGVzb3VyY2U2NGJpdCcpO1xyXG4gICAgICBpZiAobykgeyBvLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsgfVxyXG5cclxuICAgICAgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW1wbGVzb3VyY2UzMmJpdCcpO1xyXG4gICAgICBpZiAobykgeyBvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREbGxGb3JDaGFuZ2VJbWFnZVNpemUoKSB7XHJcbiAgICBjb25zdCB2SW50ZXJwb2xhdGlvbk1ldGhvZDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICdJbnRlcnBvbGF0aW9uTWV0aG9kJ1xyXG4gICAgKTtcclxuICAgIHZJbnRlcnBvbGF0aW9uTWV0aG9kLm9wdGlvbnMubGVuZ3RoID0gMDtcclxuICAgIHZJbnRlcnBvbGF0aW9uTWV0aG9kLm9wdGlvbnMuYWRkKG5ldyBPcHRpb24oJ05lYXJlc3ROZWlnaGJvcicsICcxJykpO1xyXG4gICAgdkludGVycG9sYXRpb25NZXRob2Qub3B0aW9ucy5hZGQobmV3IE9wdGlvbignQmlsaW5lYXInLCAnMicpKTtcclxuICAgIHZJbnRlcnBvbGF0aW9uTWV0aG9kLm9wdGlvbnMuYWRkKG5ldyBPcHRpb24oJ0JpY3ViaWMnLCAnMycpKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHZHcmF5OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnR3JheScpO1xyXG4gICAgaWYgKHZHcmF5KSB7IHZHcmF5LmNoZWNrZWQgPSB0cnVlOyB9XHJcblxyXG4gICAgY29uc3QgdmFySW1nVHlwZXBuZzI6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdUeXBlcG5nMicpO1xyXG4gICAgaWYgKHZhckltZ1R5cGVwbmcyKSB7IHZhckltZ1R5cGVwbmcyLmNoZWNrZWQgPSB0cnVlOyB9XHJcbiAgICBjb25zdCB2YXJJbWdUeXBlcG5nOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nVHlwZXBuZycpO1xyXG4gICAgaWYgKHZhckltZ1R5cGVwbmcpIHsgdmFySW1nVHlwZXBuZy5jaGVja2VkID0gdHJ1ZTsgfVxyXG5cclxuICAgIGNvbnN0IF9zdHJEZWZhdWx0U2F2ZUltYWdlTmFtZSA9ICdXZWJUV0FJTkltYWdlJztcclxuICAgIGNvbnN0IF90eHRGaWxlTmFtZWZvclNhdmU6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAndHh0X2ZpbGVOYW1lZm9yU2F2ZSdcclxuICAgICk7XHJcbiAgICBpZiAoX3R4dEZpbGVOYW1lZm9yU2F2ZSkge1xyXG4gICAgICBfdHh0RmlsZU5hbWVmb3JTYXZlLnZhbHVlID0gX3N0ckRlZmF1bHRTYXZlSW1hZ2VOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF90eHRGaWxlTmFtZTogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R4dF9maWxlTmFtZScpO1xyXG4gICAgaWYgKF90eHRGaWxlTmFtZSkgeyBfdHh0RmlsZU5hbWUudmFsdWUgPSBfc3RyRGVmYXVsdFNhdmVJbWFnZU5hbWU7IH1cclxuXHJcbiAgICBjb25zdCBfY2hrTXVsdGlQYWdlVElGRl9zYXZlOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgJ011bHRpUGFnZVRJRkZfc2F2ZSdcclxuICAgICk7XHJcbiAgICBpZiAoX2Noa011bHRpUGFnZVRJRkZfc2F2ZSkgeyBfY2hrTXVsdGlQYWdlVElGRl9zYXZlLmRpc2FibGVkID0gdHJ1ZTsgfVxyXG4gICAgY29uc3QgX2Noa011bHRpUGFnZVBERl9zYXZlOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgJ011bHRpUGFnZVBERl9zYXZlJ1xyXG4gICAgKTtcclxuICAgIGlmIChfY2hrTXVsdGlQYWdlUERGX3NhdmUpIHsgX2Noa011bHRpUGFnZVBERl9zYXZlLmRpc2FibGVkID0gdHJ1ZTsgfVxyXG4gICAgY29uc3QgX2Noa011bHRpUGFnZVRJRkY6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdNdWx0aVBhZ2VUSUZGJyk7XHJcbiAgICBpZiAoX2Noa011bHRpUGFnZVRJRkYpIHsgX2Noa011bHRpUGFnZVRJRkYuZGlzYWJsZWQgPSB0cnVlOyB9XHJcbiAgICBjb25zdCBfY2hrTXVsdGlQYWdlUERGOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTXVsdGlQYWdlUERGJyk7XHJcbiAgICBpZiAoX2Noa011bHRpUGFnZVBERikgeyBfY2hrTXVsdGlQYWdlUERGLmRpc2FibGVkID0gdHJ1ZTsgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRyb2wgaXMgZnVsbHkgbG9hZGVkLlxyXG4gIER5bmFtc29mdF9PblJlYWR5KCkge1xyXG4gICAgY29uc3QgbGlOb1NjYW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncE5vU2Nhbm5lcicpO1xyXG4gICAgLy8gSWYgdGhlIEVycm9yQ29kZSBpcyAwLCBpdCBtZWFucyBldmVyeXRoaW5nIGlzIGZpbmUgZm9yIHRoZSBjb250cm9sLiBJdCBpcyBmdWxseSBsb2FkZWQuXHJcbiAgICB0aGlzLkRXT2JqZWN0ID0gRHluYW1zb2Z0LkRXVC5HZXRXZWJUd2FpbignZHd0Y29udHJvbENvbnRhaW5lcicpO1xyXG4gICAgaWYgKHRoaXMuRFdPYmplY3QpIHtcclxuICAgICAgaWYgKHRoaXMuRFdPYmplY3QuRXJyb3JDb2RlID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5Mb2dMZXZlbCA9IDA7XHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5JZkFsbG93TG9jYWxDYWNoZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5JbWFnZUNhcHR1cmVEcml2ZXJUeXBlID0gNDtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLkRXT2JqZWN0LlJlZ2lzdGVyRXZlbnQoXHJcbiAgICAgICAgICAnT25Ub3BJbWFnZUluVGhlVmlld0NoYW5nZWQnLFxyXG4gICAgICAgICAgdGhpcy5EeW5hbXNvZnRfT25Ub3BJbWFnZUluVGhlVmlld0NoYW5nZWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuRFdPYmplY3QuUmVnaXN0ZXJFdmVudChcclxuICAgICAgICAgICdPbk1vdXNlQ2xpY2snLFxyXG4gICAgICAgICAgdGhpcy5EeW5hbXNvZnRfT25Nb3VzZUNsaWNrXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgbGV0IHR3YWluc291cmNlOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291cmNlJyk7XHJcbiAgICAgICAgaWYgKCF0d2FpbnNvdXJjZSkge1xyXG4gICAgICAgICAgdHdhaW5zb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2ViY2Ftc291cmNlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB2Q291bnQgPSB0aGlzLkRXT2JqZWN0LlNvdXJjZUNvdW50O1xyXG4gICAgICAgIHRoaXMuRFdUU291cmNlQ291bnQgPSB2Q291bnQ7XHJcblxyXG4gICAgICAgIGlmICh0d2FpbnNvdXJjZSkge1xyXG4gICAgICAgICAgdHdhaW5zb3VyY2Uub3B0aW9ucy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Q291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICB0d2FpbnNvdXJjZS5vcHRpb25zLmFkZChcclxuICAgICAgICAgICAgICBuZXcgT3B0aW9uKHRoaXMuRFdPYmplY3QuR2V0U291cmNlTmFtZUl0ZW1zKGkpLCBpLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBzb3VyY2UgbGlzdCBuZWVkIHRvIGJlIGRpc3BsYXllZCwgZmlsbCBpbiB0aGUgc291cmNlIGl0ZW1zLlxyXG4gICAgICAgIGlmICh2Q291bnQgPT09IDApIHtcclxuICAgICAgICAgIGlmIChsaU5vU2Nhbm5lcikge1xyXG4gICAgICAgICAgICBpZiAoRHluYW1zb2Z0LkxpYi5lbnYuYldpbikge1xyXG4gICAgICAgICAgICAgIGxpTm9TY2FubmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICAgICAgICAgIGxpTm9TY2FubmVyLnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG4gICAgICAgICAgICB9IGVsc2UgeyBsaU5vU2Nhbm5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodkNvdW50ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zb3VyY2Vfb25jaGFuZ2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChEeW5hbXNvZnQuTGliLmVudi5iV2luKSB7IHRoaXMuRFdPYmplY3QuTW91c2VTaGFwZSA9IGZhbHNlOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IGJ0blNjYW46IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5TY2FuJyk7XHJcbiAgICAgICAgaWYgKGJ0blNjYW4pIHtcclxuICAgICAgICAgIGlmICh2Q291bnQgPT09IDApIHsgYnRuU2Nhbi5kaXNhYmxlZCA9IHRydWU7IH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBidG5TY2FuLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIUR5bmFtc29mdC5MaWIuZW52LmJXaW4gJiYgdkNvdW50ID4gMCkge1xyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYmxTaG93VUknKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJsU2hvd1VJJykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU2hvd1VJJykpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Nob3dVSScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJsU2hvd1VJJykpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xibFNob3dVSScpLnN0eWxlLmRpc3BsYXkgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU2hvd1VJJykpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Nob3dVSScpLnN0eWxlLmRpc3BsYXkgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdERsbEZvckNoYW5nZUltYWdlU2l6ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9pTGVmdCA9IDA7XHJcbiAgICAgICAgdGhpcy5faVRvcCA9IDA7XHJcbiAgICAgICAgdGhpcy5faVJpZ2h0ID0gMDtcclxuICAgICAgICB0aGlzLl9pQm90dG9tID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb2N1bWVudC5saW5rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmxpbmtzW2ldLmNsYXNzTmFtZSA9PT0gJ1Nob3d0YmxMb2FkSW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmxpbmtzW2ldLm9uY2xpY2sgPSB0aGlzLnNob3d0YmxMb2FkSW1hZ2Vfb25jbGljaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChkb2N1bWVudC5saW5rc1tpXS5jbGFzc05hbWUgPT09ICdDbG9zZXRibExvYWRJbWFnZScpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQubGlua3NbaV0ub25jbGljayA9IHRoaXMuY2xvc2V0YmxMb2FkSW1hZ2Vfb25jbGljaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZDb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgaWYgKER5bmFtc29mdC5MaWIuZW52LmJXaW4pIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhTm9TY2FubmVyJykgJiZcclxuICAgICAgICAgICAgICB3aW5kb3dbJ2JEV1RPbmxpbmVEZW1vJ11cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZfU2NhbkltYWdlJykuc3R5bGUuZGlzcGxheSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd3RibExvYWRJbWFnZV9vbmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUmVzb2x1dGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Jlc29sdXRpb24nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGRpdkJsYW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdkJsYW5rJyk7XHJcbiAgICAgICAgICBpZiAoZGl2QmxhbmspIHsgZGl2Qmxhbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYWdlSW5mbygpO1xyXG4gICAgICAgIGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmICghdWEuaW5kZXhPZignbXNpZSA2LjAnKSkge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5SZWdpc3RlckV2ZW50KFxyXG4gICAgICAgICAgJ09uUG9zdFRyYW5zZmVyJyxcclxuICAgICAgICAgIHRoaXMuRHluYW1zb2Z0X09uUG9zdFRyYW5zZmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLkRXT2JqZWN0LlJlZ2lzdGVyRXZlbnQoXHJcbiAgICAgICAgICAnT25Qb3N0TG9hZCcsXHJcbiAgICAgICAgICB0aGlzLkR5bmFtc29mdF9PblBvc3RMb2FkZnVuY3Rpb25cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuRFdPYmplY3QuUmVnaXN0ZXJFdmVudChcclxuICAgICAgICAgICdPblBvc3RBbGxUcmFuc2ZlcnMnLFxyXG4gICAgICAgICAgdGhpcy5EeW5hbXNvZnRfT25Qb3N0QWxsVHJhbnNmZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLkRXT2JqZWN0LlJlZ2lzdGVyRXZlbnQoXHJcbiAgICAgICAgICAnT25JbWFnZUFyZWFTZWxlY3RlZCcsXHJcbiAgICAgICAgICB0aGlzLkR5bmFtc29mdF9PbkltYWdlQXJlYVNlbGVjdGVkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLkRXT2JqZWN0LlJlZ2lzdGVyRXZlbnQoXHJcbiAgICAgICAgICAnT25JbWFnZUFyZWFEZVNlbGVjdGVkJyxcclxuICAgICAgICAgIHRoaXMuRHluYW1zb2Z0X09uSW1hZ2VBcmVhRGVzZWxlY3RlZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5SZWdpc3RlckV2ZW50KFxyXG4gICAgICAgICAgJ09uR2V0RmlsZVBhdGgnLFxyXG4gICAgICAgICAgdGhpcy5EeW5hbXNvZnRfT25HZXRGaWxlUGF0aFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3d0YmxMb2FkSW1hZ2Vfb25jbGljaygpIHtcclxuICAgIHN3aXRjaCAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibExvYWRJbWFnZScpLnN0eWxlLnZpc2liaWxpdHkpIHtcclxuICAgICAgY2FzZSAnaGlkZGVuJzpcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJsTG9hZEltYWdlJykuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUmVzb2x1dGlvbicpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlzaWJsZSc6XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibExvYWRJbWFnZScpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUmVzb2x1dGlvbicpLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BOb1NjYW5uZXInKSkge1xyXG4gICAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRibExvYWRJbWFnZVwiKS5zdHlsZS50b3AgPSBkc19nZXR0b3AoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwTm9TY2FubmVyXCIpKSArIHBOb1NjYW5uZXIub2Zmc2V0SGVpZ2h0ICsgXCJweFwiO1xyXG4gICAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRibExvYWRJbWFnZVwiKS5zdHlsZS5sZWZ0ID0gZHNfZ2V0bGVmdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBOb1NjYW5uZXJcIikpICsgMCArIFwicHhcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NldGJsTG9hZEltYWdlX29uY2xpY2soKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJsTG9hZEltYWdlJykuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Jlc29sdXRpb24nKS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKiBVc2VkIGEgbG90ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICB1cGRhdGVQYWdlSW5mbygpIHtcclxuICAgIGNvbnN0IHRvdGFsSW1hZ2U6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV19Ub3RhbEltYWdlJyk7XHJcbiAgICBjb25zdCBjdXJyZW50SW1hZ2U6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV19DdXJyZW50SW1hZ2UnKTtcclxuICAgIGlmICh0b3RhbEltYWdlKSB7IHRvdGFsSW1hZ2UudmFsdWUgPSB0aGlzLkRXT2JqZWN0Lkhvd01hbnlJbWFnZXNJbkJ1ZmZlcjsgfVxyXG4gICAgaWYgKGN1cnJlbnRJbWFnZSkge1xyXG4gICAgICBjdXJyZW50SW1hZ2UudmFsdWUgPSB0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIgKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwZW5kTWVzc2FnZShzdHJNZXNzYWdlKSB7XHJcbiAgICB0aGlzLl9zdHJUZW1wU3RyICs9IHN0ck1lc3NhZ2U7XHJcbiAgICBjb25zdCBfZGl2TWVzc2FnZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV1RlbWVzc2FnZScpO1xyXG4gICAgaWYgKF9kaXZNZXNzYWdlQ29udGFpbmVyKSB7XHJcbiAgICAgIF9kaXZNZXNzYWdlQ29udGFpbmVyLmlubmVySFRNTCA9IHRoaXMuX3N0clRlbXBTdHI7XHJcbiAgICAgIF9kaXZNZXNzYWdlQ29udGFpbmVyLnNjcm9sbFRvcCA9IF9kaXZNZXNzYWdlQ29udGFpbmVyLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpIHtcclxuICAgIGlmICh0aGlzLkRXT2JqZWN0Lkhvd01hbnlJbWFnZXNJbkJ1ZmZlciA9PT0gMCkge1xyXG4gICAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoJ1RoZXJlIGlzIG5vIGltYWdlIGluIGJ1ZmZlci48YnIgLz4nKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHsgcmV0dXJuIHRydWU7IH1cclxuICB9XHJcblxyXG4gIGNoZWNrRXJyb3JTdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0Vycm9yU3RyaW5nV2l0aEVycm9yQ29kZShcclxuICAgICAgdGhpcy5EV09iamVjdC5FcnJvckNvZGUsXHJcbiAgICAgIHRoaXMuRFdPYmplY3QuRXJyb3JTdHJpbmdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja0Vycm9yU3RyaW5nV2l0aEVycm9yQ29kZShlcnJvckNvZGUsIGVycm9yU3RyaW5nLCByZXNwb25zZVN0cmluZyA9IG51bGwpIHtcclxuICAgIGlmIChlcnJvckNvZGUgPT09IDApIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICc8c3BhbiBzdHlsZT1cXCdjb2xvcjojY0U1RTA0XFwnPjxiPicgKyBlcnJvclN0cmluZyArICc8L2I+PC9zcGFuPjxiciAvPidcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGVycm9yQ29kZSA9PT0gLTIxMTUpIHtcclxuICAgICAgLy8gQ2FuY2VsIGZpbGUgZGlhbG9nXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChlcnJvckNvZGUgPT09IC0yMDAzKSB7XHJcbiAgICAgICAgY29uc3QgRXJyb3JNZXNzYWdlV2luID0gd2luZG93Lm9wZW4oXHJcbiAgICAgICAgICAnJyxcclxuICAgICAgICAgICdFcnJvck1lc3NhZ2UnLFxyXG4gICAgICAgICAgJ2hlaWdodD01MDAsd2lkdGg9NzUwLHRvcD0wLGxlZnQ9MCx0b29sYmFyPW5vLG1lbnViYXI9bm8sc2Nyb2xsYmFycz1ubywgcmVzaXphYmxlPW5vLGxvY2F0aW9uPW5vLCBzdGF0dXM9bm8nXHJcbiAgICAgICAgKTtcclxuICAgICAgICBFcnJvck1lc3NhZ2VXaW4uZG9jdW1lbnQud3JpdGVsbihyZXNwb25zZVN0cmluZyk7IC8vIHRoaXMuRFdPYmplY3QuSFRUUFBvc3RSZXNwb25zZVN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICc8c3BhbiBzdHlsZT1cXCdjb2xvcjojY0U1RTA0XFwnPjxiPicgKyBlcnJvclN0cmluZyArICc8L2I+PC9zcGFuPjxiciAvPidcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqIFVzZWQgYSBsb3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIGRzX2dldGxlZnQoZWwpIHtcclxuICAgIGxldCB0bXAgPSBlbC5vZmZzZXRMZWZ0O1xyXG4gICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XHJcbiAgICB3aGlsZSAoZWwpIHtcclxuICAgICAgdG1wICs9IGVsLm9mZnNldExlZnQ7XHJcbiAgICAgIGVsID0gZWwub2Zmc2V0UGFyZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRtcDtcclxuICB9XHJcbiAgZHNfZ2V0dG9wKGVsKSB7XHJcbiAgICBsZXQgdG1wID0gZWwub2Zmc2V0VG9wO1xyXG4gICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XHJcbiAgICB3aGlsZSAoZWwpIHtcclxuICAgICAgdG1wICs9IGVsLm9mZnNldFRvcDtcclxuICAgICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG1wO1xyXG4gIH1cclxuXHJcbiAgT3Zlcl9PdXRfRGVtb0ltYWdlKG9iaiwgdXJsKSB7XHJcbiAgICBvYmouc3JjID0gdXJsO1xyXG4gIH1cclxuICBzb3VyY2Vfb25jaGFuZ2UoKSB7XHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdlR3YWluVHlwZScpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXZUd2FpblR5cGUnKS5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKSkge1xyXG4gICAgICBjb25zdCBjSW5kZXggPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpIGFzIEhUTUxTZWxlY3RFbGVtZW50KVxyXG4gICAgICAgIC5zZWxlY3RlZEluZGV4O1xyXG4gICAgICBpZiAoRHluYW1zb2Z0LkxpYi5lbnYuYk1hYykge1xyXG4gICAgICAgIGNvbnN0IHN0clNvdXJjZU5hbWUgPSB0aGlzLkRXT2JqZWN0LkdldFNvdXJjZU5hbWVJdGVtcyhjSW5kZXgpO1xyXG4gICAgICAgIGlmIChzdHJTb3VyY2VOYW1lLmluZGV4T2YoJ0lDQScpID09PSAwKSB7XHJcbiAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xibFNob3dVSScpKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYmxTaG93VUknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdTaG93VUknKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU2hvd1VJJykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYmxTaG93VUknKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJsU2hvd1VJJykuc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdTaG93VUknKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU2hvd1VJJykuc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHsgdGhpcy5EV09iamVjdC5TZWxlY3RTb3VyY2VCeUluZGV4KGNJbmRleCk7IH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1lZGlhVHlwZV9vbmNoYW5nZSgpIHtcclxuICAgIGNvbnN0IE1lZGlhVHlwZTogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ01lZGlhVHlwZScpO1xyXG4gICAgaWYgKE1lZGlhVHlwZSAmJiBNZWRpYVR5cGUub3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlTWVkaWFUeXBlID0gTWVkaWFUeXBlLm9wdGlvbnNbTWVkaWFUeXBlLnNlbGVjdGVkSW5kZXhdLnRleHQ7XHJcbiAgICAgIGlmICh2YWx1ZU1lZGlhVHlwZSAhPT0gJycpIHtcclxuICAgICAgICBpZiAoIXRoaXMuRFdPYmplY3QuQWRkb24uV2ViY2FtLlNldE1lZGlhVHlwZSh2YWx1ZU1lZGlhVHlwZSkpIHtcclxuICAgICAgICAgIHRoaXMuYXBwZW5kTWVzc2FnZSgnPGI+RXJyb3Igc2V0dGluZyBNZWRpYVR5cGUgdmFsdWU6IDwvYj4nKTtcclxuICAgICAgICAgIHRoaXMuYXBwZW5kTWVzc2FnZShcclxuICAgICAgICAgICAgJzxzcGFuIHN0eWxlPVxcJ2NvbG9yOiNjRTVFMDRcXCc+PGI+JyArXHJcbiAgICAgICAgICAgIHRoaXMuRFdPYmplY3QuRXJyb3JTdHJpbmcgK1xyXG4gICAgICAgICAgICAnPC9iPjwvc3Bhbj48YnIgLz4nXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFJlc29sdXRpb25XZWJjYW06IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdSZXNvbHV0aW9uV2ViY2FtJyk7XHJcbiAgICBpZiAoUmVzb2x1dGlvbldlYmNhbSkge1xyXG4gICAgICBSZXNvbHV0aW9uV2ViY2FtLm9wdGlvbnMubGVuZ3RoID0gMDtcclxuICAgICAgY29uc3QgYXJ5UmVzb2x1dGlvbiA9IHRoaXMuRFdPYmplY3QuQWRkb24uV2ViY2FtLkdldFJlc29sdXRpb24oKTtcclxuICAgICAgY29uc3QgY291bnRSZXNvbHV0aW9uID0gYXJ5UmVzb2x1dGlvbi5HZXRDb3VudCgpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50UmVzb2x1dGlvbjsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhcnlSZXNvbHV0aW9uLkdldChpKTtcclxuICAgICAgICBSZXNvbHV0aW9uV2ViY2FtLm9wdGlvbnMuYWRkKG5ldyBPcHRpb24odmFsdWUsIHZhbHVlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS1BY3F1aXJlIEltYWdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgYWNxdWlyZUltYWdlKCkge1xyXG4gICAgY29uc3QgY0luZGV4ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKSBhcyBIVE1MU2VsZWN0RWxlbWVudClcclxuICAgICAgLnNlbGVjdGVkSW5kZXg7XHJcbiAgICBpZiAoY0luZGV4IDwgMCkgeyByZXR1cm47IH1cclxuXHJcbiAgICB0aGlzLkRXT2JqZWN0LlNlbGVjdFNvdXJjZUJ5SW5kZXgoY0luZGV4KTtcclxuICAgIHRoaXMuRFdPYmplY3QuQ2xvc2VTb3VyY2UoKTtcclxuICAgIHRoaXMuRFdPYmplY3QuT3BlblNvdXJjZSgpO1xyXG4gICAgdGhpcy5EV09iamVjdC5JZlNob3dVSSA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgJ1Nob3dVSSdcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcclxuXHJcbiAgICBsZXQgaTtcclxuICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnUGl4ZWxUeXBlJykuaXRlbShpKSBhcyBIVE1MSW5wdXRFbGVtZW50KVxyXG4gICAgICAgICAgLmNoZWNrZWQgPT09IHRydWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5QaXhlbFR5cGUgPSBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5EV09iamVjdC5FcnJvckNvZGUgIT09IDApIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5FcnJvciBzZXR0aW5nIFBpeGVsVHlwZSB2YWx1ZTogPC9iPicpO1xyXG4gICAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoXHJcbiAgICAgICAgJzxzcGFuIHN0eWxlPVxcJ2NvbG9yOiNjRTVFMDRcXCc+PGI+JyArXHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5FcnJvclN0cmluZyArXHJcbiAgICAgICAgJzwvYj48L3NwYW4+PGJyIC8+J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5EV09iamVjdC5SZXNvbHV0aW9uID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAnUmVzb2x1dGlvbidcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBpZiAodGhpcy5EV09iamVjdC5FcnJvckNvZGUgIT09IDApIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5FcnJvciBzZXR0aW5nIFJlc29sdXRpb24gdmFsdWU6IDwvYj4nKTtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICc8c3BhbiBzdHlsZT1cXCdjb2xvcjojY0U1RTA0XFwnPjxiPicgK1xyXG4gICAgICAgIHRoaXMuRFdPYmplY3QuRXJyb3JTdHJpbmcgK1xyXG4gICAgICAgICc8L2I+PC9zcGFuPjxiciAvPidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiQURGQ2hlY2tlZCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQURGJykgYXMgSFRNTElucHV0RWxlbWVudClcclxuICAgICAgLmNoZWNrZWQ7XHJcbiAgICB0aGlzLkRXT2JqZWN0LklmRmVlZGVyRW5hYmxlZCA9IGJBREZDaGVja2VkO1xyXG4gICAgaWYgKGJBREZDaGVja2VkID09PSB0cnVlICYmIHRoaXMuRFdPYmplY3QuRXJyb3JDb2RlICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuYXBwZW5kTWVzc2FnZSgnPGI+RXJyb3Igc2V0dGluZyBBREYgdmFsdWU6IDwvYj4nKTtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICc8c3BhbiBzdHlsZT1cXCdjb2xvcjojY0U1RTA0XFwnPjxiPicgK1xyXG4gICAgICAgIHRoaXMuRFdPYmplY3QuRXJyb3JTdHJpbmcgK1xyXG4gICAgICAgICc8L2I+PC9zcGFuPjxiciAvPidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiRHVwbGV4Q2hlY2tlZCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgJ0R1cGxleCdcclxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcclxuICAgIHRoaXMuRFdPYmplY3QuSWZEdXBsZXhFbmFibGVkID0gYkR1cGxleENoZWNrZWQ7XHJcbiAgICBpZiAoYkR1cGxleENoZWNrZWQgPT09IHRydWUgJiYgdGhpcy5EV09iamVjdC5FcnJvckNvZGUgIT09IDApIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5FcnJvciBzZXR0aW5nIER1cGxleCB2YWx1ZTogPC9iPicpO1xyXG4gICAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoXHJcbiAgICAgICAgJzxzcGFuIHN0eWxlPVxcJ2NvbG9yOiNjRTVFMDRcXCc+PGI+JyArXHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5FcnJvclN0cmluZyArXHJcbiAgICAgICAgJzwvYj48L3NwYW4+PGJyIC8+J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBEeW5hbXNvZnQuTGliLmVudi5iV2luIHx8XHJcbiAgICAgICghRHluYW1zb2Z0LkxpYi5lbnYuYldpbiAmJiB0aGlzLkRXT2JqZWN0LkltYWdlQ2FwdHVyZURyaXZlclR5cGUgPT09IDApXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICdQaXhlbCBUeXBlOiAnICtcclxuICAgICAgICB0aGlzLkRXT2JqZWN0LlBpeGVsVHlwZSArXHJcbiAgICAgICAgJzxiciAvPlJlc29sdXRpb246ICcgK1xyXG4gICAgICAgIHRoaXMuRFdPYmplY3QuUmVzb2x1dGlvbiArXHJcbiAgICAgICAgJzxiciAvPidcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuSWZEaXNhYmxlU291cmNlQWZ0ZXJBY3F1aXJlID0gdHJ1ZTtcclxuICAgIHRoaXMuRFdPYmplY3QuQWNxdWlyZUltYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tTG9hZCBJbWFnZS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgYnRuTG9hZEltYWdlc09yUERGc19vbmNsaWNrKCkge1xyXG5cclxuICAgIGNvbnN0IE9uUERGU3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKCdMb2FkZWQgYW4gaW1hZ2Ugc3VjY2Vzc2Z1bGx5Ljxici8+Jyk7XHJcbiAgICAgIHRoaXMudXBkYXRlUGFnZUluZm8oKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgT25QREZGYWlsdXJlID0gKGVycm9yQ29kZSwgZXJyb3JTdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5jaGVja0Vycm9yU3RyaW5nV2l0aEVycm9yQ29kZShlcnJvckNvZGUsIGVycm9yU3RyaW5nKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5EV09iamVjdC5JZlNob3dGaWxlRGlhbG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuRFdPYmplY3QuQWRkb24uUERGLlNldFJlc29sdXRpb24oMjAwKTtcclxuICAgIHRoaXMuRFdPYmplY3QuQWRkb24uUERGLlNldENvbnZlcnRNb2RlKFxyXG4gICAgICBEeW5hbXNvZnQuRFdULkVudW1EV1RfQ29udmVydE1vZGUuQ01fUkVOREVSQUxMXHJcbiAgICApO1xyXG4gICAgdGhpcy5EV09iamVjdC5Mb2FkSW1hZ2VFeChcclxuICAgICAgJycsXHJcbiAgICAgIER5bmFtc29mdC5EV1QuRW51bURXVF9JbWFnZVR5cGUuSVRfQUxMLFxyXG4gICAgICBPblBERlN1Y2Nlc3MsXHJcbiAgICAgIE9uUERGRmFpbHVyZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKiogRWRpdCBJbWFnZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBidG5TaG93SW1hZ2VFZGl0b3Jfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LlNob3dJbWFnZUVkaXRvcigpO1xyXG4gIH1cclxuXHJcbiAgYnRuUm90YXRlUmlnaHRfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LlJvdGF0ZVJpZ2h0KHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlcik7XHJcbiAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoJzxiPlJvdGF0ZSByaWdodDogPC9iPicpO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tFcnJvclN0cmluZygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbiAgYnRuUm90YXRlTGVmdF9vbmNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuUm90YXRlTGVmdCh0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIpO1xyXG4gICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5Sb3RhdGUgbGVmdDogPC9iPicpO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tFcnJvclN0cmluZygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ0blJvdGF0ZTE4MF9vbmNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuUm90YXRlKHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlciwgMTgwLCB0cnVlKTtcclxuICAgIHRoaXMuYXBwZW5kTWVzc2FnZSgnPGI+Um90YXRlIDE4MDogPC9iPicpO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tFcnJvclN0cmluZygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ0bk1pcnJvcl9vbmNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuTWlycm9yKHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlcik7XHJcbiAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoJzxiPk1pcnJvcjogPC9iPicpO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tFcnJvclN0cmluZygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbiAgYnRuRmxpcF9vbmNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuRmxpcCh0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIpO1xyXG4gICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5GbGlwOiA8L2I+Jyk7XHJcbiAgICBpZiAodGhpcy5jaGVja0Vycm9yU3RyaW5nKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tQ3JvcCBNZXRob2QtLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGJ0bkNyb3Bfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuX2lMZWZ0ICE9PSAwIHx8XHJcbiAgICAgIHRoaXMuX2lUb3AgIT09IDAgfHxcclxuICAgICAgdGhpcy5faVJpZ2h0ICE9PSAwIHx8XHJcbiAgICAgIHRoaXMuX2lCb3R0b20gIT09IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLkRXT2JqZWN0LkNyb3AoXHJcbiAgICAgICAgdGhpcy5EV09iamVjdC5DdXJyZW50SW1hZ2VJbmRleEluQnVmZmVyLFxyXG4gICAgICAgIHRoaXMuX2lMZWZ0LFxyXG4gICAgICAgIHRoaXMuX2lUb3AsXHJcbiAgICAgICAgdGhpcy5faVJpZ2h0LFxyXG4gICAgICAgIHRoaXMuX2lCb3R0b21cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5faUxlZnQgPSAwO1xyXG4gICAgICB0aGlzLl9pVG9wID0gMDtcclxuICAgICAgdGhpcy5faVJpZ2h0ID0gMDtcclxuICAgICAgdGhpcy5faUJvdHRvbSA9IDA7XHJcbiAgICAgIHRoaXMuYXBwZW5kTWVzc2FnZSgnPGI+Q3JvcDogPC9iPicpO1xyXG4gICAgICBpZiAodGhpcy5jaGVja0Vycm9yU3RyaW5nKCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKFxyXG4gICAgICAgICc8Yj5Dcm9wOiA8L2I+ZmFpbGVkLiBQbGVhc2UgZmlyc3Qgc2VsZWN0IHRoZSBhcmVhIHlvdVxcJ2QgbGlrZSB0byBjcm9wLjxiciAvPidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tQ2hhbmdlIEltYWdlIFNpemUtLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgYnRuQ2hhbmdlSW1hZ2VTaXplX29uY2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tJZkltYWdlc0luQnVmZmVyKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW1nU2l6ZUVkaXRvcicpLnN0eWxlLnZpc2liaWxpdHkpIHtcclxuICAgICAgY2FzZSAndmlzaWJsZSc6XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0ltZ1NpemVFZGl0b3InKS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2hpZGRlbic6XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0ltZ1NpemVFZGl0b3InKS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJJbWdTaXplRWRpdG9yXCIpLnN0eWxlLnRvcCA9IGRzX2dldHRvcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJ0bkNoYW5nZUltYWdlU2l6ZVwiKSkgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJ0bkNoYW5nZUltYWdlU2l6ZVwiKS5vZmZzZXRIZWlnaHQgKyAxNSArIFwicHhcIjtcclxuICAgIC8vIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiSW1nU2l6ZUVkaXRvclwiKS5zdHlsZS5sZWZ0ID0gZHNfZ2V0bGVmdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJ0bkNoYW5nZUltYWdlU2l6ZVwiKSkgLSAxNCArIFwicHhcIjtcclxuXHJcbiAgICBjb25zdCBpV2lkdGggPSB0aGlzLkRXT2JqZWN0LkdldEltYWdlV2lkdGgoXHJcbiAgICAgIHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlclxyXG4gICAgKTtcclxuICAgIGlmIChpV2lkdGggIT09IC0xKSB7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nX3dpZHRoJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSBpV2lkdGg7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpSGVpZ2h0ID0gdGhpcy5EV09iamVjdC5HZXRJbWFnZUhlaWdodChcclxuICAgICAgdGhpcy5EV09iamVjdC5DdXJyZW50SW1hZ2VJbmRleEluQnVmZmVyXHJcbiAgICApO1xyXG4gICAgaWYgKGlIZWlnaHQgIT09IC0xKSB7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAnaW1nX2hlaWdodCdcclxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IGlIZWlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGJ0bkNhbmNlbENoYW5nZV9vbmNsaWNrKCkge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0ltZ1NpemVFZGl0b3InKS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgfVxyXG5cclxuICBidG5DaGFuZ2VJbWFnZVNpemVPS19vbmNsaWNrKCkge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ19oZWlnaHQnKS5jbGFzc05hbWUgPSAnJztcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdfd2lkdGgnKS5jbGFzc05hbWUgPSAnJztcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMucmUudGVzdChcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ19oZWlnaHQnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZVxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ19oZWlnaHQnKS5jbGFzc05hbWUgKz0gJyBpbnZhbGlkJztcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ19oZWlnaHQnKS5mb2N1cygpO1xyXG4gICAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoJ1BsZWFzZSBpbnB1dCBhIHZhbGlkIDxiPmhlaWdodDwvYj4uPGJyIC8+Jyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMucmUudGVzdChcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZ193aWR0aCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nX3dpZHRoJykuY2xhc3NOYW1lICs9ICcgaW52YWxpZCc7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdfd2lkdGgnKS5mb2N1cygpO1xyXG4gICAgICB0aGlzLmFwcGVuZE1lc3NhZ2UoJ1BsZWFzZSBpbnB1dCBhIHZhbGlkIDxiPndpZHRoPC9iPi48YnIgLz4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5EV09iamVjdC5DaGFuZ2VJbWFnZVNpemUoXHJcbiAgICAgIHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlcixcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdfd2lkdGgnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWdfaGVpZ2h0JykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW50ZXJwb2xhdGlvbk1ldGhvZCcpIGFzIEhUTUxTZWxlY3RFbGVtZW50KVxyXG4gICAgICAgIC5zZWxlY3RlZEluZGV4ICsgMVxyXG4gICAgKTtcclxuICAgIHRoaXMuYXBwZW5kTWVzc2FnZSgnPGI+Q2hhbmdlIEltYWdlIFNpemU6IDwvYj4nKTtcclxuICAgIGlmICh0aGlzLmNoZWNrRXJyb3JTdHJpbmcoKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSW1nU2l6ZUVkaXRvcicpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqIFNhdmUgSW1hZ2UqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICBidG5TYXZlX29uY2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tJZkltYWdlc0luQnVmZmVyKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RyaW1nVHlwZV9zYXZlID0gJ3BkZic7XHJcblxyXG4gICAgdGhpcy5EV09iamVjdC5JZlNob3dGaWxlRGlhbG9nID0gdHJ1ZTtcclxuICAgIGNvbnN0IF90eHRGaWxlTmFtZWZvclNhdmU6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0eHRfZmlsZU5hbWUnKTtcclxuICAgIGlmIChfdHh0RmlsZU5hbWVmb3JTYXZlKSB7IF90eHRGaWxlTmFtZWZvclNhdmUuY2xhc3NOYW1lID0gJyc7IH1cclxuICAgIGxldCBiU2F2ZTogYW55ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgc3RyRmlsZVBhdGggPSBfdHh0RmlsZU5hbWVmb3JTYXZlLnZhbHVlICsgJy4nICsgc3RyaW1nVHlwZV9zYXZlO1xyXG5cclxuICAgIGNvbnN0IE9uU3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5TYXZlIEltYWdlOiA8L2I+Jyk7XHJcbiAgICAgIHRoaXMuY2hlY2tFcnJvclN0cmluZ1dpdGhFcnJvckNvZGUoMCwgJ1N1Y2Nlc3NmdWwuJyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IE9uRmFpbHVyZSA9IChlcnJvckNvZGUsIGVycm9yU3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tFcnJvclN0cmluZ1dpdGhFcnJvckNvZGUoZXJyb3JDb2RlLCBlcnJvclN0cmluZyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGJTYXZlID0gdGhpcy5EV09iamVjdC5TYXZlQWxsQXNQREYoc3RyRmlsZVBhdGgsIE9uU3VjY2VzcywgT25GYWlsdXJlKTtcclxuXHJcbiAgICBpZiAoYlNhdmUpIHsgdGhpcy5hcHBlbmRNZXNzYWdlKCc8Yj5TYXZlIEltYWdlOiA8L2I+Jyk7IH1cclxuICAgIGlmICh0aGlzLmNoZWNrRXJyb3JTdHJpbmcoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKiogVXBsb2FkIEltYWdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIG1ha2VpZChsZW5ndGgpIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGNvbnN0IGNoYXJhY3RlcnMgPVxyXG4gICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xyXG4gICAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0Jsb2IoKSB7XHJcbiAgICB0aGlzLkRvY3VtZW50U2NhblNlcnZpY2UudXBsb2FkU3RhcnQuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IHBhZ2VzID0gW107XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5EV09iamVjdD8uSG93TWFueUltYWdlc0luQnVmZmVyOyBpbmRleCsrKSB7XHJcbiAgICAgIHBhZ2VzLnB1c2goaW5kZXgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5EV09iamVjdC5Db252ZXJ0VG9CbG9iKFxyXG4gICAgICBwYWdlcyxcclxuICAgICAgRHluYW1zb2Z0LkRXVC5FbnVtRFdUX0ltYWdlVHlwZS5JVF9QREYsXHJcbiAgICAgIChyZXN1bHQsIGluZGljZXMsIHR5cGUpID0+IHtcclxuICAgICAgICByZXN1bHQubGFzdE1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSAnc2Nhbi0nICsgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocmVzdWx0Lmxhc3RNb2RpZmllZERhdGUsICdkZC1NTS15eXl5JykgKyAnLnBkZic7XHJcbiAgICAgICAgdGhpcy5Eb2N1bWVudFNjYW5TZXJ2aWNlLnVwbG9hZEJhdGNoKHJlc3VsdCkuc3Vic2NyaWJlKChiYXRjaCkgPT4ge1xyXG4gICAgICAgICAgYmF0Y2guZm9yRWFjaChkb2MgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGUubmV4dChkb2MpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvckNvZGUsIGVycm9yU3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3JTdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuRG9jdW1lbnRTY2FuU2VydmljZS51cGxvYWRTdGFydC5lbWl0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBjb252ZXJ0VG9CbG9iRm9yU2F2aW5nKCkge1xyXG4gICAgY29uc3QgcGFnZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLkRXT2JqZWN0Py5Ib3dNYW55SW1hZ2VzSW5CdWZmZXI7IGluZGV4KyspIHtcclxuICAgICAgcGFnZXMucHVzaChpbmRleCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LkNvbnZlcnRUb0Jsb2IoXHJcbiAgICAgIHBhZ2VzLFxyXG4gICAgICBEeW5hbXNvZnQuRFdULkVudW1EV1RfSW1hZ2VUeXBlLklUX1BERixcclxuICAgICAgKHJlc3VsdCwgaW5kaWNlcywgdHlwZSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdC5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICByZXN1bHQubmFtZSA9ICdzY2FuLScgKyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShyZXN1bHQubGFzdE1vZGlmaWVkRGF0ZSwgJ2RkLU1NLXl5eXknKSArICcucGRmJztcclxuICAgICAgICB0aGlzLkRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLm9uTWluaW1pemluZ1N1YnNjcmlwdGlvbiA/IHRoaXMub25NaW5pbWl6aW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yQ29kZSwgZXJyb3JTdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvclN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKiogTmF2aWdhdG9yIGZ1bmN0aW9ucyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgYnRuRmlyc3RJbWFnZV9vbmNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrSWZJbWFnZXNJbkJ1ZmZlcigpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlciA9IDA7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBidG5QcmVJbWFnZV93aGVlbCgpIHtcclxuICAgIGlmICh0aGlzLkRXT2JqZWN0Lkhvd01hbnlJbWFnZXNJbkJ1ZmZlciAhPT0gMCkgeyB0aGlzLmJ0blByZUltYWdlX29uY2xpY2soKTsgfVxyXG4gIH1cclxuXHJcbiAgYnRuTmV4dEltYWdlX3doZWVsKCkge1xyXG4gICAgaWYgKHRoaXMuRFdPYmplY3QuSG93TWFueUltYWdlc0luQnVmZmVyICE9PSAwKSB7IHRoaXMuYnRuTmV4dEltYWdlX29uY2xpY2soKTsgfVxyXG4gIH1cclxuXHJcbiAgYnRuUHJlSW1hZ2Vfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlciA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIgPVxyXG4gICAgICB0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIgLSAxO1xyXG4gICAgdGhpcy51cGRhdGVQYWdlSW5mbygpO1xyXG4gIH1cclxuICBidG5OZXh0SW1hZ2Vfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIgPT09XHJcbiAgICAgIHRoaXMuRFdPYmplY3QuSG93TWFueUltYWdlc0luQnVmZmVyIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlciA9XHJcbiAgICAgIHRoaXMuRFdPYmplY3QuQ3VycmVudEltYWdlSW5kZXhJbkJ1ZmZlciArIDE7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBidG5MYXN0SW1hZ2Vfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LkN1cnJlbnRJbWFnZUluZGV4SW5CdWZmZXIgPVxyXG4gICAgICB0aGlzLkRXT2JqZWN0Lkhvd01hbnlJbWFnZXNJbkJ1ZmZlciAtIDE7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBidG5SZW1vdmVDdXJyZW50SW1hZ2Vfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LlJlbW92ZUFsbFNlbGVjdGVkSW1hZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5EV09iamVjdC5Ib3dNYW55SW1hZ2VzSW5CdWZmZXIgPT09IDApIHtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgICdEV19Ub3RhbEltYWdlJ1xyXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlID0gdGhpcy5EV09iamVjdC5Ib3dNYW55SW1hZ2VzSW5CdWZmZXI7XHJcbiAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnRFdfQ3VycmVudEltYWdlJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPVxyXG4gICAgICAgICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidG5SZW1vdmVBbGxJbWFnZXNfb25jbGljaygpIHtcclxuICAgIGlmICghdGhpcy5jaGVja0lmSW1hZ2VzSW5CdWZmZXIoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLkRXT2JqZWN0LlJlbW92ZUFsbEltYWdlcygpO1xyXG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV19Ub3RhbEltYWdlJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSAnMCc7XHJcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0RXX0N1cnJlbnRJbWFnZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlID0gJyc7XHJcbiAgfVxyXG4gIHNldGxQcmV2aWV3TW9kZSgpIHtcclxuICAgIGNvbnN0IHZhck51bSA9IHBhcnNlSW50KFxyXG4gICAgICAoXHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV19QcmV2aWV3TW9kZScpIGFzIEhUTUxTZWxlY3RFbGVtZW50KVxyXG4gICAgICAgICAgLnNlbGVjdGVkSW5kZXggKyAxXHJcbiAgICAgICkudG9TdHJpbmcoKSxcclxuICAgICAgMTBcclxuICAgICk7XHJcbiAgICBjb25zdCBidG5Dcm9wOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuQ3JvcCcpO1xyXG4gICAgaWYgKGJ0bkNyb3ApIHtcclxuICAgICAgbGV0IHRtcHN0ciA9IGJ0bkNyb3Auc3JjO1xyXG4gICAgICBpZiAodmFyTnVtID4gMSkge1xyXG4gICAgICAgIHRtcHN0ciA9IHRtcHN0ci5yZXBsYWNlKCdDcm9wLicsICdDcm9wX2dyYXkuJyk7XHJcbiAgICAgICAgYnRuQ3JvcC5zcmMgPSB0bXBzdHI7XHJcbiAgICAgICAgYnRuQ3JvcC5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRtcHN0ciA9IHRtcHN0ci5yZXBsYWNlKCdDcm9wX2dyYXkuJywgJ0Nyb3AuJyk7XHJcbiAgICAgICAgYnRuQ3JvcC5zcmMgPSB0bXBzdHI7XHJcbiAgICAgICAgYnRuQ3JvcC5vbmNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5idG5Dcm9wX29uY2xpY2soKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5EV09iamVjdC5TZXRWaWV3TW9kZSh2YXJOdW0sIHZhck51bSk7XHJcbiAgICBpZiAoRHluYW1zb2Z0LkxpYi5lbnYuYk1hYyB8fCBEeW5hbXNvZnQuTGliLmVudi5iTGludXgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEV19QcmV2aWV3TW9kZScpIGFzIEhUTUxTZWxlY3RFbGVtZW50KVxyXG4gICAgICAgIC5zZWxlY3RlZEluZGV4ICE9PSAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5EV09iamVjdC5Nb3VzZVNoYXBlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuRFdPYmplY3QuTW91c2VTaGFwZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipyYWRpbyByZXNwb25zZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgcmRUSUZGX29uY2xpY2soKSB7XHJcbiAgICBjb25zdCBfY2hrTXVsdGlQYWdlVElGRjogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ011bHRpUGFnZVRJRkYnKTtcclxuICAgIF9jaGtNdWx0aVBhZ2VUSUZGLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBfY2hrTXVsdGlQYWdlVElGRi5jaGVja2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgX2Noa011bHRpUGFnZVBERjogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ011bHRpUGFnZVBERicpO1xyXG4gICAgX2Noa011bHRpUGFnZVBERi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICBfY2hrTXVsdGlQYWdlUERGLmRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJkUERGX29uY2xpY2soKSB7XHJcbiAgICBjb25zdCBfY2hrTXVsdGlQYWdlVElGRjogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ011bHRpUGFnZVRJRkYnKTtcclxuICAgIF9jaGtNdWx0aVBhZ2VUSUZGLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIF9jaGtNdWx0aVBhZ2VUSUZGLmRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBfY2hrTXVsdGlQYWdlUERGOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTXVsdGlQYWdlUERGJyk7XHJcbiAgICBfY2hrTXVsdGlQYWdlUERGLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBfY2hrTXVsdGlQYWdlUERGLmNoZWNrZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmRfb25jbGljaygpIHtcclxuICAgIGNvbnN0IF9jaGtNdWx0aVBhZ2VUSUZGOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTXVsdGlQYWdlVElGRicpO1xyXG4gICAgX2Noa011bHRpUGFnZVRJRkYuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgX2Noa011bHRpUGFnZVRJRkYuZGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IF9jaGtNdWx0aVBhZ2VQREY6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdNdWx0aVBhZ2VQREYnKTtcclxuICAgIF9jaGtNdWx0aVBhZ2VQREYuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgX2Noa011bHRpUGFnZVBERi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqIER5bmFtaWMgV2ViIFRXQUlOIEV2ZW50cyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgRHluYW1zb2Z0X09uUG9zdFRyYW5zZmVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy51cGRhdGVQYWdlSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgRHluYW1zb2Z0X09uUG9zdExvYWRmdW5jdGlvbiA9IChwYXRoLCBuYW1lLCB0eXBlKSA9PiB7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBEeW5hbXNvZnRfT25Qb3N0QWxsVHJhbnNmZXJzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5EV09iamVjdC5DbG9zZVNvdXJjZSgpO1xyXG4gICAgdGhpcy51cGRhdGVQYWdlSW5mbygpO1xyXG4gICAgdGhpcy5jaGVja0Vycm9yU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBEeW5hbXNvZnRfT25Nb3VzZUNsaWNrID0gaW5kZXggPT4ge1xyXG4gICAgdGhpcy51cGRhdGVQYWdlSW5mbygpO1xyXG4gIH1cclxuXHJcbiAgRHluYW1zb2Z0X09uTW91c2VSaWdodENsaWNrID0gaW5kZXggPT4ge1xyXG4gICAgLy8gVG8gYWRkXHJcbiAgfVxyXG5cclxuICBEeW5hbXNvZnRfT25JbWFnZUFyZWFTZWxlY3RlZCA9IChpbmRleCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKSA9PiB7XHJcbiAgICB0aGlzLl9pTGVmdCA9IGxlZnQ7XHJcbiAgICB0aGlzLl9pVG9wID0gdG9wO1xyXG4gICAgdGhpcy5faVJpZ2h0ID0gcmlnaHQ7XHJcbiAgICB0aGlzLl9pQm90dG9tID0gYm90dG9tO1xyXG4gIH1cclxuXHJcbiAgRHluYW1zb2Z0X09uSW1hZ2VBcmVhRGVzZWxlY3RlZCA9IGluZGV4ID0+IHtcclxuICAgIHRoaXMuX2lMZWZ0ID0gMDtcclxuICAgIHRoaXMuX2lUb3AgPSAwO1xyXG4gICAgdGhpcy5faVJpZ2h0ID0gMDtcclxuICAgIHRoaXMuX2lCb3R0b20gPSAwO1xyXG4gIH1cclxuXHJcbiAgRHluYW1zb2Z0X09uTW91c2VEb3VibGVDbGljaygpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIER5bmFtc29mdF9PblRvcEltYWdlSW5UaGVWaWV3Q2hhbmdlZCA9IGluZGV4ID0+IHtcclxuICAgIHRoaXMuX2lMZWZ0ID0gMDtcclxuICAgIHRoaXMuX2lUb3AgPSAwO1xyXG4gICAgdGhpcy5faVJpZ2h0ID0gMDtcclxuICAgIHRoaXMuX2lCb3R0b20gPSAwO1xyXG4gICAgdGhpcy5EV09iamVjdC5DdXJyZW50SW1hZ2VJbmRleEluQnVmZmVyID0gaW5kZXg7XHJcbiAgICB0aGlzLnVwZGF0ZVBhZ2VJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBEeW5hbXNvZnRfT25HZXRGaWxlUGF0aCA9IChiU2F2ZSwgY291bnQsIGluZGV4LCBwYXRoLCBuYW1lKSA9PiB7IH07XHJcbn1cclxuIiwiPGRpdiBpZD1cIkRXVGNvbnRhaW5lclwiPlxyXG4gIDxkaXYgaWQ9XCJEV1Rjb250YWluZXJUb3BcIj5cclxuICAgIDxkaXYgaWQ9XCJkaXZFZGl0XCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cIm9wZXJhdGVHcnBcIj5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2R3dC1yZXNvdXJjZXMvSW1hZ2VzL1Nob3dFZGl0b3IucG5nXCIgW3RpdGxlXT1cIidzY2FubmVyLnNob3dJbWFnZUVkaXRvcicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYWx0XT1cIidzY2FubmVyLnNob3dJbWFnZUVkaXRvcicgfCB0cmFuc2xhdGVcIiBpZD1cImJ0bkVkaXRvclwiIChjbGljayk9XCJidG5TaG93SW1hZ2VFZGl0b3Jfb25jbGljaygpXCIgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvZHd0LXJlc291cmNlcy9JbWFnZXMvUm90YXRlTGVmdC5wbmdcIiBbdGl0bGVdPVwiJ3NjYW5uZXIucm90YXRlTGVmdCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYWx0XT1cIidzY2FubmVyLnJvdGF0ZUxlZnQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJidG5Sb3RhdGVMXCIgKGNsaWNrKT1cImJ0blJvdGF0ZUxlZnRfb25jbGljaygpXCIgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvZHd0LXJlc291cmNlcy9JbWFnZXMvUm90YXRlUmlnaHQucG5nXCIgW3RpdGxlXT1cIidzY2FubmVyLnJvdGF0ZVJpZ2h0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthbHRdPVwiJ3NjYW5uZXIucm90YXRlUmlnaHQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJidG5Sb3RhdGVSXCIgKGNsaWNrKT1cImJ0blJvdGF0ZVJpZ2h0X29uY2xpY2soKVwiIC8+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2R3dC1yZXNvdXJjZXMvSW1hZ2VzL1JvdGF0ZTE4MC5wbmdcIiBbYWx0XT1cIidzY2FubmVyLnJvdGF0ZTE4MCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3NjYW5uZXIucm90YXRlMTgwJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJidG5Sb3RhdGUxODBfb25jbGljaygpXCIgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvZHd0LXJlc291cmNlcy9JbWFnZXMvTWlycm9yLnBuZ1wiIFt0aXRsZV09XCInc2Nhbm5lci5taXJyb3InIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FsdF09XCInc2Nhbm5lci5taXJyb3InIHwgdHJhbnNsYXRlXCIgaWQ9XCJidG5NaXJyb3JcIiAoY2xpY2spPVwiYnRuTWlycm9yX29uY2xpY2soKVwiIC8+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2R3dC1yZXNvdXJjZXMvSW1hZ2VzL0ZsaXAucG5nXCIgW3RpdGxlXT1cIidzY2FubmVyLmZsaXAnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FsdF09XCInc2Nhbm5lci5mbGlwJyB8IHRyYW5zbGF0ZVwiIGlkPVwiYnRuRmxpcFwiIChjbGljayk9XCJidG5GbGlwX29uY2xpY2soKVwiIC8+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2R3dC1yZXNvdXJjZXMvSW1hZ2VzL1JlbW92ZVNlbGVjdGVkSW1hZ2VzLnBuZ1wiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCInc2Nhbm5lci5yZW1vdmVTZWxlY3RlZCcgfCB0cmFuc2xhdGVcIiBbYWx0XT1cIidzY2FubmVyLnJlbW92ZVNlbGVjdGVkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIGlkPVwiRFdfYnRuUmVtb3ZlQ3VycmVudEltYWdlXCIgKGNsaWNrKT1cImJ0blJlbW92ZUN1cnJlbnRJbWFnZV9vbmNsaWNrKClcIiAvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy9kd3QtcmVzb3VyY2VzL0ltYWdlcy9SZW1vdmVBbGxJbWFnZXMucG5nXCIgW3RpdGxlXT1cIidzY2FubmVyLnJlbW92ZUFsbCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYWx0XT1cIidzY2FubmVyLnJlbW92ZUFsbCcgfCB0cmFuc2xhdGVcIiBpZD1cIkRXX2J0blJlbW92ZUFsbEltYWdlc1wiIChjbGljayk9XCJidG5SZW1vdmVBbGxJbWFnZXNfb25jbGljaygpXCIgLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvZHd0LXJlc291cmNlcy9JbWFnZXMvQ2hhbmdlU2l6ZS5wbmdcIiBbdGl0bGVdPVwiJ3NjYW5uZXIucmVzaXplJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthbHRdPVwiJ3NjYW5uZXIucmVzaXplJyB8IHRyYW5zbGF0ZVwiIGlkPVwiYnRuQ2hhbmdlSW1hZ2VTaXplXCIgKGNsaWNrKT1cImJ0bkNoYW5nZUltYWdlU2l6ZV9vbmNsaWNrKClcIiAvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy9kd3QtcmVzb3VyY2VzL0ltYWdlcy9Dcm9wLnBuZ1wiIFt0aXRsZV09XCInc2Nhbm5lci5jcm9wJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthbHRdPVwiJ3NjYW5uZXIuY3JvcCcgfCB0cmFuc2xhdGVcIiBpZD1cImJ0bkNyb3BcIiAoY2xpY2spPVwiYnRuQ3JvcF9vbmNsaWNrKClcIiAvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgaWQ9XCJJbWdTaXplRWRpdG9yXCIgc3R5bGU9XCJ2aXNpYmlsaXR5OmhpZGRlblwiPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImltZ19oZWlnaHRcIj57eyAnc2Nhbm5lci5uZXdIZWlnaHQnIHwgdHJhbnNsYXRlIH19IDpcclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImltZ19oZWlnaHRcIiBzdHlsZT1cIndpZHRoOjUwJTtcIiBzaXplPVwiMTBcIiAvPlxyXG4gICAgICAgICAgICAgIHt7ICdzY2FubmVyLnBpeGVsJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW1nX3dpZHRoXCI+e3sgJ3NjYW5uZXIubmV3V2lkdGgnIHwgdHJhbnNsYXRlIH19IDombmJzcDtcclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImltZ193aWR0aFwiIHN0eWxlPVwid2lkdGg6NTAlO1wiIHNpemU9XCIxMFwiIC8+XHJcbiAgICAgICAgICAgICAge3sgJ3NjYW5uZXIucGl4ZWwnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIHt7ICdzY2FubmVyLkludGVycG9sYXRpb25NZXRob2QnIHwgdHJhbnNsYXRlIH19OlxyXG4gICAgICAgICAgICA8c2VsZWN0IHNpemU9XCIxXCIgaWQ9XCJJbnRlcnBvbGF0aW9uTWV0aG9kXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIiAgIE9LICAgXCIgaWQ9XCJidG5DaGFuZ2VJbWFnZVNpemVPS1wiIChjbGljayk9XCJidG5DaGFuZ2VJbWFnZVNpemVPS19vbmNsaWNrKClcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiIENhbmNlbCBcIiBpZD1cImJ0bkNhbmNlbENoYW5nZVwiIChjbGljayk9XCJidG5DYW5jZWxDaGFuZ2Vfb25jbGljaygpXCIgLz5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJkd3Rjb250cm9sQ29udGFpbmVyXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGlkPVwiYnRuR3JvdXBCdG1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImN0LWx0XCI+XHJcbiAgICAgICAge3sgJ3NjYW5uZXIucGFnZScgfCB0cmFuc2xhdGUgfX06XHJcbiAgICAgICAgPGlucHV0IGlkPVwiRFdfYnRuRmlyc3RJbWFnZVwiIChjbGljayk9XCJidG5GaXJzdEltYWdlX29uY2xpY2soKVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIiB8PCBcIiAvPiZuYnNwO1xyXG4gICAgICAgIDxpbnB1dCBpZD1cIkRXX2J0blByZUltYWdlXCIgKGNsaWNrKT1cImJ0blByZUltYWdlX29uY2xpY2soKVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIiA8IFwiIC8+Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cIjJcIiBpZD1cIkRXX0N1cnJlbnRJbWFnZVwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiAvPlxyXG4gICAgICAgIC9cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBzaXplPVwiMlwiIGlkPVwiRFdfVG90YWxJbWFnZVwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiAvPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgIDxpbnB1dCBpZD1cIkRXX2J0bk5leHRJbWFnZVwiIChjbGljayk9XCJidG5OZXh0SW1hZ2Vfb25jbGljaygpXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiPiBcIiAvPiZuYnNwO1xyXG4gICAgICAgIDxpbnB1dCBpZD1cIkRXX2J0bkxhc3RJbWFnZVwiIChjbGljayk9XCJidG5MYXN0SW1hZ2Vfb25jbGljaygpXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiPnwgXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdC1ydFwiPlxyXG4gICAgICAgIHt7ICdzY2FubmVyLnByZXZpZXcnIHwgdHJhbnNsYXRlIH19OlxyXG4gICAgICAgIDxzZWxlY3Qgc2l6ZT1cIjFcIiBpZD1cIkRXX1ByZXZpZXdNb2RlXCIgKGNoYW5nZSk9XCJzZXRsUHJldmlld01vZGUoKVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjBcIj4xWDE8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCI+MlgyPC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPjNYMzwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjNcIj40WDQ8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI0XCI+NVg1PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+PGJyIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBpZD1cIlNjYW5XcmFwcGVyXCI+XHJcbiAgICA8ZGl2IGlkPVwiZGl2U2Nhbm5lclwiIGNsYXNzPVwiZGl2aW5wdXRcIj5cclxuICAgICAgPGRpdiBpZD1cImRpdl9TY2FuSW1hZ2VcIiBjbGFzcz1cImRpdlRhYmxlU3R5bGVcIj5cclxuICAgICAgICA8dWwgaWQ9XCJ1bFNjYW5lSW1hZ2VISURFXCI+XHJcbiAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzb3VyY2VcIj5cclxuICAgICAgICAgICAgICA8cD57eyAnc2Nhbm5lci5zb3VyY2UnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPHNlbGVjdCBzaXplPVwiMVwiIGlkPVwic291cmNlXCIgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZTtcIiAoY2hhbmdlKT1cInNvdXJjZV9vbmNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCIgaWQ9XCJwTm9TY2FubmVyXCI+XHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OiB2b2lkKDApXCIgY2xhc3M9XCJTaG93dGJsTG9hZEltYWdlXCIgc3R5bGU9XCJjb2xvcjojZmU4ZTE0XCIgaWQ9XCJhTm9TY2FubmVyXCI+KE5vIFRXQUlOXHJcbiAgICAgICAgICAgICAgY29tcGF0aWJsZSBkcml2ZXJzIGRldGVjdGVkKTwvYT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGkgaWQ9XCJkaXZQcm9kdWN0RGV0YWlsXCI+XHJcbiAgICAgICAgICAgIDx1bCBpZD1cImRpdlR3YWluVHlwZVwiPlxyXG4gICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cImxibFNob3dVSVwiIGZvcj1cIlNob3dVSVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJTaG93VUlcIiAvPnt7XHJcbiAgICAgICAgICAgICAgICAgICdzY2FubmVyLlNob3dVSScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgfX0mbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkFERlwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJBREZcIiAvPnt7XHJcbiAgICAgICAgICAgICAgICAgICdzY2FubmVyLkF1dG9GZWVkZXInIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgIH19Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJEdXBsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiRHVwbGV4XCIgLz57e1xyXG4gICAgICAgICAgICAgICAgICAnc2Nhbm5lci5EdXBsZXgnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgIHt7ICdzY2FubmVyLlBpeGVsVHlwZScgfCB0cmFuc2xhdGUgfX06XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiQldcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGlkPVwiQldcIiBuYW1lPVwiUGl4ZWxUeXBlXCIgLz57e1xyXG4gICAgICAgICAgICAgICAgICAnc2Nhbm5lci5CJlcnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJHcmF5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBpZD1cIkdyYXlcIiBuYW1lPVwiUGl4ZWxUeXBlXCIgLz57e1xyXG4gICAgICAgICAgICAgICAgICAnc2Nhbm5lci5HcmF5JyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBpZD1cIlJHQlwiIG5hbWU9XCJQaXhlbFR5cGVcIiAvPnt7XHJcbiAgICAgICAgICAgICAgICAgICdzY2FubmVyLkNvbG9yJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnc2Nhbm5lci5SZXNvbHV0aW9uJyB8IHRyYW5zbGF0ZSB9fTombmJzcDs8L3NwYW4+PHNlbGVjdCBzaXplPVwiMVwiIGlkPVwiUmVzb2x1dGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwXCI+MTAwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxNTBcIj4xNTA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwMFwiPjIwMDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMzAwXCIgc2VsZWN0ZWQ+MzAwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuU2NhblwiIGRpc2FibGVkPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwiYWNxdWlyZUltYWdlKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gbXgtMlwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXVwYy11cGxvYWQgaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4+IHt7ICdzY2FubmVyLnNjYW4nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJidG5Mb2FkSW1hZ2VzT3JQREZzX29uY2xpY2soKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0blwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXVwbG9hZCBpY29uXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Bhbj4ge3sgJ3NjYW5uZXIubG9hZCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIFxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBnYXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJ7J2hpZGUtdXBsb2FkLWJ1dHRvbicgOiBoaWRlVXBsb2FkQnV0dG9ufVwiICNzY2FubmVyVXBsb2FkQnV0dG9uIGlkPVwic2Nhbm5lclVwbG9hZEJ1dHRvblwiIFtkaXNhYmxlZF09XCJEV09iamVjdD8uSG93TWFueUltYWdlc0luQnVmZmVyID09PSAwXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbnZlcnRUb0Jsb2IoKVwiPlxyXG4gICAgICAgICAgICB7eyAnc2Nhbm5lci5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=