@netgrif/components-core 6.0.1

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 (2010) hide show
  1. package/LICENSE +132 -0
  2. package/README.md +105 -0
  3. package/bundles/netgrif-components-core.umd.js +32298 -0
  4. package/bundles/netgrif-components-core.umd.js.map +1 -0
  5. package/bundles/netgrif-components-core.umd.min.js +17 -0
  6. package/bundles/netgrif-components-core.umd.min.js.map +1 -0
  7. package/commons/angular-cli-devkit-core-strings.d.ts +93 -0
  8. package/commons/import-to-add.d.ts +5 -0
  9. package/commons/schema.d.ts +277 -0
  10. package/commons/view-class-info.d.ts +22 -0
  11. package/esm2015/assets/i18n/de.json +419 -0
  12. package/esm2015/assets/i18n/en.json +419 -0
  13. package/esm2015/assets/i18n/sk.json +419 -0
  14. package/esm2015/commons/angular-cli-devkit-core-strings.js +157 -0
  15. package/esm2015/commons/import-to-add.js +7 -0
  16. package/esm2015/commons/schema.js +7 -0
  17. package/esm2015/commons/view-class-info.js +52 -0
  18. package/esm2015/lib/admin/public-api.js +9 -0
  19. package/esm2015/lib/admin/role-assignment/abstract-role-assignment.js +77 -0
  20. package/esm2015/lib/admin/role-assignment/services/ProcessList.js +155 -0
  21. package/esm2015/lib/admin/role-assignment/services/role-assignment.service.js +40 -0
  22. package/esm2015/lib/admin/user-invite/abstract-user-invite.component.js +77 -0
  23. package/esm2015/lib/admin/user-invite/services/organization-list.service.js +63 -0
  24. package/esm2015/lib/admin/user-invite/services/user-invite.service.js +31 -0
  25. package/esm2015/lib/allowed-nets/public-api.js +4 -0
  26. package/esm2015/lib/allowed-nets/services/allowed-nets.service.js +74 -0
  27. package/esm2015/lib/allowed-nets/services/base-allowed-nets.service.js +54 -0
  28. package/esm2015/lib/allowed-nets/services/factory/allowed-nets-service-factory.js +129 -0
  29. package/esm2015/lib/authentication/anonymous/anonymous.service.js +63 -0
  30. package/esm2015/lib/authentication/authentication.factory.js +16 -0
  31. package/esm2015/lib/authentication/authentication.module.js +32 -0
  32. package/esm2015/lib/authentication/components/abstract-authentication-overlay.js +50 -0
  33. package/esm2015/lib/authentication/models/credentials.js +2 -0
  34. package/esm2015/lib/authentication/models/public-api.js +5 -0
  35. package/esm2015/lib/authentication/models/transformer.js +2 -0
  36. package/esm2015/lib/authentication/models/user.transformer.js +19 -0
  37. package/esm2015/lib/authentication/public-api.js +14 -0
  38. package/esm2015/lib/authentication/services/anonymous-authentication-interceptor.js +44 -0
  39. package/esm2015/lib/authentication/services/authentication/authentication.service.js +71 -0
  40. package/esm2015/lib/authentication/services/authentication-interceptor.js +52 -0
  41. package/esm2015/lib/authentication/services/authentication-method.service.js +5 -0
  42. package/esm2015/lib/authentication/services/guard/authentication-guard.service.js +39 -0
  43. package/esm2015/lib/authentication/services/methods/basic-authentication/basic-authentication.service.js +48 -0
  44. package/esm2015/lib/authentication/services/methods/null-authentication/null-authentication.service.js +19 -0
  45. package/esm2015/lib/authentication/services/public-api.js +7 -0
  46. package/esm2015/lib/authentication/session/null-storage.js +15 -0
  47. package/esm2015/lib/authentication/session/public-api.js +3 -0
  48. package/esm2015/lib/authentication/session/services/session.service.js +156 -0
  49. package/esm2015/lib/authentication/sign-up/models/user-invitation-request.js +2 -0
  50. package/esm2015/lib/authentication/sign-up/models/user-registration-request.js +2 -0
  51. package/esm2015/lib/authentication/sign-up/public-api.js +8 -0
  52. package/esm2015/lib/authentication/sign-up/services/sign-up.service.js +105 -0
  53. package/esm2015/lib/authentication/sign-up/sign-up.module.js +13 -0
  54. package/esm2015/lib/authorization/authority/authority-guard.service.js +50 -0
  55. package/esm2015/lib/authorization/group/group-guard.service.js +67 -0
  56. package/esm2015/lib/authorization/permission/permission.service.js +116 -0
  57. package/esm2015/lib/authorization/public-api.js +10 -0
  58. package/esm2015/lib/authorization/role/role-guard.service.js +105 -0
  59. package/esm2015/lib/changed-fields/public-api.js +2 -0
  60. package/esm2015/lib/changed-fields/services/changed-fields.service.js +32 -0
  61. package/esm2015/lib/configuration/configuration.service.js +190 -0
  62. package/esm2015/lib/configuration/public-api.js +3 -0
  63. package/esm2015/lib/covalent/covalent.module.js +22 -0
  64. package/esm2015/lib/currency/currency.module.js +23 -0
  65. package/esm2015/lib/dashboard/cards/count-card/abstract-count-card.js +39 -0
  66. package/esm2015/lib/dashboard/cards/custom-card/abstract-custom-card.js +47 -0
  67. package/esm2015/lib/dashboard/cards/iframe-card/abstract-iframe-card.js +14 -0
  68. package/esm2015/lib/dashboard/cards/model/card-grid-element.js +2 -0
  69. package/esm2015/lib/dashboard/cards/model/count-card.js +2 -0
  70. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.js +2 -0
  71. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.js +2 -0
  72. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/custom-card.js +2 -0
  73. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.js +2 -0
  74. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.js +7 -0
  75. package/esm2015/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.js +7 -0
  76. package/esm2015/lib/dashboard/cards/model/dashboard-card-types.js +13 -0
  77. package/esm2015/lib/dashboard/cards/model/dashboard-card.js +2 -0
  78. package/esm2015/lib/dashboard/cards/model/graph-card.js +2 -0
  79. package/esm2015/lib/dashboard/cards/model/iframe-card.js +2 -0
  80. package/esm2015/lib/dashboard/dashboard-content/abstract-dashboard-content.js +19 -0
  81. package/esm2015/lib/dashboard/dashboard-content/dashboard-params.js +2 -0
  82. package/esm2015/lib/dashboard/public-api.js +20 -0
  83. package/esm2015/lib/data-fields/boolean-field/abstract-boolean-field.component.js +40 -0
  84. package/esm2015/lib/data-fields/boolean-field/models/boolean-field.js +24 -0
  85. package/esm2015/lib/data-fields/button-field/abstract-button-field.component.js +62 -0
  86. package/esm2015/lib/data-fields/button-field/models/button-field.js +27 -0
  87. package/esm2015/lib/data-fields/data-field-template/abstract-data-field-template.component.js +101 -0
  88. package/esm2015/lib/data-fields/data-field-template/models/wrapped-boolean.js +6 -0
  89. package/esm2015/lib/data-fields/data-fields.module.js +35 -0
  90. package/esm2015/lib/data-fields/date-field/abstract-date-field.component.js +21 -0
  91. package/esm2015/lib/data-fields/date-field/models/custom-date-adapter.js +11 -0
  92. package/esm2015/lib/data-fields/date-field/models/date-field.js +10 -0
  93. package/esm2015/lib/data-fields/date-time-field/abstract-date-time-field.component.js +21 -0
  94. package/esm2015/lib/data-fields/date-time-field/models/date-time-field.js +10 -0
  95. package/esm2015/lib/data-fields/enumeration-field/abstract-enumeration-field.component.js +17 -0
  96. package/esm2015/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.js +43 -0
  97. package/esm2015/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.js +53 -0
  98. package/esm2015/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.js +37 -0
  99. package/esm2015/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.js +11 -0
  100. package/esm2015/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.js +11 -0
  101. package/esm2015/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.js +40 -0
  102. package/esm2015/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.js +44 -0
  103. package/esm2015/lib/data-fields/enumeration-field/models/enumeration-field.js +59 -0
  104. package/esm2015/lib/data-fields/file-field/abstract-file-field.component.js +390 -0
  105. package/esm2015/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.js +2 -0
  106. package/esm2015/lib/data-fields/file-field/models/file-field-value.js +2 -0
  107. package/esm2015/lib/data-fields/file-field/models/file-field.js +106 -0
  108. package/esm2015/lib/data-fields/file-list-field/abstract-file-list-field.component.js +261 -0
  109. package/esm2015/lib/data-fields/file-list-field/models/file-list-field-value.js +2 -0
  110. package/esm2015/lib/data-fields/file-list-field/models/file-list-field.js +83 -0
  111. package/esm2015/lib/data-fields/filter-field/abstract-filter-field-content.component.js +29 -0
  112. package/esm2015/lib/data-fields/filter-field/abstract-filter-field.component.js +28 -0
  113. package/esm2015/lib/data-fields/filter-field/models/filter-field-injection-token.js +7 -0
  114. package/esm2015/lib/data-fields/filter-field/models/filter-field.js +15 -0
  115. package/esm2015/lib/data-fields/i18n-field/abstract-i18n-field.component.js +19 -0
  116. package/esm2015/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.js +26 -0
  117. package/esm2015/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.js +40 -0
  118. package/esm2015/lib/data-fields/i18n-field/models/i18n-field-value.js +2 -0
  119. package/esm2015/lib/data-fields/i18n-field/models/i18n-field.js +10 -0
  120. package/esm2015/lib/data-fields/models/abstract-data-field-component.js +39 -0
  121. package/esm2015/lib/data-fields/models/abstract-data-field.js +391 -0
  122. package/esm2015/lib/data-fields/models/behavior.js +2 -0
  123. package/esm2015/lib/data-fields/models/boolean-label-enabled-token.js +3 -0
  124. package/esm2015/lib/data-fields/models/changed-fields.js +2 -0
  125. package/esm2015/lib/data-fields/models/component.js +2 -0
  126. package/esm2015/lib/data-fields/models/format-filter.js +2 -0
  127. package/esm2015/lib/data-fields/models/icon.js +6 -0
  128. package/esm2015/lib/data-fields/models/invalid-data-policy-token.js +11 -0
  129. package/esm2015/lib/data-fields/models/layout.js +2 -0
  130. package/esm2015/lib/data-fields/models/material-appearance.js +14 -0
  131. package/esm2015/lib/data-fields/models/properties.js +2 -0
  132. package/esm2015/lib/data-fields/models/template-appearance.js +15 -0
  133. package/esm2015/lib/data-fields/models/validation.js +2 -0
  134. package/esm2015/lib/data-fields/multichoice-field/abstract-multichoice-field.component.js +17 -0
  135. package/esm2015/lib/data-fields/multichoice-field/models/multichoice-field.js +41 -0
  136. package/esm2015/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.js +9 -0
  137. package/esm2015/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.js +9 -0
  138. package/esm2015/lib/data-fields/number-field/abstract-number-errors.component.js +45 -0
  139. package/esm2015/lib/data-fields/number-field/abstract-number-field.component.js +18 -0
  140. package/esm2015/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.js +48 -0
  141. package/esm2015/lib/data-fields/number-field/models/number-field.js +131 -0
  142. package/esm2015/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.js +7 -0
  143. package/esm2015/lib/data-fields/public-api.js +73 -0
  144. package/esm2015/lib/data-fields/task-ref-field/model/task-ref-field.js +7 -0
  145. package/esm2015/lib/data-fields/text-field/abstract-text-errors.component.js +35 -0
  146. package/esm2015/lib/data-fields/text-field/abstract-text-field.component.js +15 -0
  147. package/esm2015/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.js +39 -0
  148. package/esm2015/lib/data-fields/text-field/models/text-area-field.js +13 -0
  149. package/esm2015/lib/data-fields/text-field/models/text-field.js +85 -0
  150. package/esm2015/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.js +17 -0
  151. package/esm2015/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.js +30 -0
  152. package/esm2015/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.js +17 -0
  153. package/esm2015/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.js +40 -0
  154. package/esm2015/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.js +45 -0
  155. package/esm2015/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.js +105 -0
  156. package/esm2015/lib/data-fields/user-field/abstract-user-field.component.js +59 -0
  157. package/esm2015/lib/data-fields/user-field/models/user-field.js +14 -0
  158. package/esm2015/lib/data-fields/user-field/models/user-value.js +36 -0
  159. package/esm2015/lib/dialog/components/alert-dialog/alert-dialog.component.js +38 -0
  160. package/esm2015/lib/dialog/components/alert-dialog/alert-dialog.module.js +28 -0
  161. package/esm2015/lib/dialog/components/confirm-dialog/confirm-dialog.component.js +52 -0
  162. package/esm2015/lib/dialog/components/confirm-dialog/confirm-dialog.module.js +28 -0
  163. package/esm2015/lib/dialog/components/prompt-dialog/prompt-dialog.component.js +42 -0
  164. package/esm2015/lib/dialog/components/prompt-dialog/prompt-dialog.module.js +30 -0
  165. package/esm2015/lib/dialog/dialog.module.js +29 -0
  166. package/esm2015/lib/dialog/models/DialogData.js +2 -0
  167. package/esm2015/lib/dialog/models/DialogResult.js +2 -0
  168. package/esm2015/lib/dialog/models/abstract-dialog.js +21 -0
  169. package/esm2015/lib/dialog/public-api.js +9 -0
  170. package/esm2015/lib/dialog/services/dialog.service.js +82 -0
  171. package/esm2015/lib/event/model/event-constants.js +8 -0
  172. package/esm2015/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.js +2 -0
  173. package/esm2015/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.js +2 -0
  174. package/esm2015/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.js +2 -0
  175. package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.js +2 -0
  176. package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.js +2 -0
  177. package/esm2015/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.js +2 -0
  178. package/esm2015/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.js +2 -0
  179. package/esm2015/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.js +2 -0
  180. package/esm2015/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.js +2 -0
  181. package/esm2015/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.js +2 -0
  182. package/esm2015/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.js +2 -0
  183. package/esm2015/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.js +2 -0
  184. package/esm2015/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.js +2 -0
  185. package/esm2015/lib/event/public-api.js +19 -0
  186. package/esm2015/lib/event/services/event.service.js +57 -0
  187. package/esm2015/lib/event/services/interfaces/changed-fields-map.js +2 -0
  188. package/esm2015/lib/event-queue/model/queued-event.js +31 -0
  189. package/esm2015/lib/event-queue/public-api.js +5 -0
  190. package/esm2015/lib/event-queue/services/event-queue.service.js +63 -0
  191. package/esm2015/lib/filter/filter.repository.js +141 -0
  192. package/esm2015/lib/filter/models/case-search-request-body.js +2 -0
  193. package/esm2015/lib/filter/models/filter-type.js +11 -0
  194. package/esm2015/lib/filter/models/filter.js +56 -0
  195. package/esm2015/lib/filter/models/filters-filter-injection-token.js +9 -0
  196. package/esm2015/lib/filter/models/merge-operator.js +11 -0
  197. package/esm2015/lib/filter/models/merged-filter-params.js +2 -0
  198. package/esm2015/lib/filter/models/merged-filter.js +111 -0
  199. package/esm2015/lib/filter/models/simple-filter.js +91 -0
  200. package/esm2015/lib/filter/models/task-search-request-body.js +2 -0
  201. package/esm2015/lib/filter/models/user-filter-constants.js +39 -0
  202. package/esm2015/lib/filter/public-api.js +18 -0
  203. package/esm2015/lib/filter/user-filters.service.js +337 -0
  204. package/esm2015/lib/forms/email-submission/abstract-email-submission-form.component.js +31 -0
  205. package/esm2015/lib/forms/forgotten-password/abstract-forgotten-password.component.js +32 -0
  206. package/esm2015/lib/forms/has-form.js +2 -0
  207. package/esm2015/lib/forms/login/abstract-login-form.component.js +58 -0
  208. package/esm2015/lib/forms/models/abstract-registration.component.js +94 -0
  209. package/esm2015/lib/forms/models/password.validator.js +21 -0
  210. package/esm2015/lib/forms/public-api.js +7 -0
  211. package/esm2015/lib/forms/registration/abstract-registration-form.component.js +37 -0
  212. package/esm2015/lib/groups/public-api.js +3 -0
  213. package/esm2015/lib/groups/services/active-group.service.js +88 -0
  214. package/esm2015/lib/groups/services/next-group.service.js +104 -0
  215. package/esm2015/lib/header/abstract-header-service.js +394 -0
  216. package/esm2015/lib/header/abstract-header.component.js +159 -0
  217. package/esm2015/lib/header/case-header/case-header.service.js +81 -0
  218. package/esm2015/lib/header/case-header/case-menta-enum.js +9 -0
  219. package/esm2015/lib/header/header-modes/abstract-header-mode.component.js +12 -0
  220. package/esm2015/lib/header/header-modes/edit-mode/abstract-edit-mode.component.js +73 -0
  221. package/esm2015/lib/header/header-modes/loading-mode/abstract-loading-mode.component.js +13 -0
  222. package/esm2015/lib/header/header-modes/search-mode/abstract-search-mode.component.js +86 -0
  223. package/esm2015/lib/header/header-modes/sort-mode/abstract-sort-mode.component.js +15 -0
  224. package/esm2015/lib/header/header-state.js +43 -0
  225. package/esm2015/lib/header/models/default-headers-token.js +3 -0
  226. package/esm2015/lib/header/models/fields-group.js +2 -0
  227. package/esm2015/lib/header/models/header-column.js +22 -0
  228. package/esm2015/lib/header/models/header-mode.js +7 -0
  229. package/esm2015/lib/header/models/header-type.js +7 -0
  230. package/esm2015/lib/header/models/public-api.js +12 -0
  231. package/esm2015/lib/header/models/user-changes/column-header-change.js +2 -0
  232. package/esm2015/lib/header/models/user-changes/edit-change-description.js +2 -0
  233. package/esm2015/lib/header/models/user-changes/header-change-description.js +2 -0
  234. package/esm2015/lib/header/models/user-changes/header-change-type.js +20 -0
  235. package/esm2015/lib/header/models/user-changes/header-change.js +2 -0
  236. package/esm2015/lib/header/models/user-changes/mode-change-description.js +2 -0
  237. package/esm2015/lib/header/models/user-changes/search-change-description.js +2 -0
  238. package/esm2015/lib/header/models/user-changes/sort-change-description.js +2 -0
  239. package/esm2015/lib/header/public-api.js +21 -0
  240. package/esm2015/lib/header/services/overflow.service.js +94 -0
  241. package/esm2015/lib/header/task-header/task-header.service.js +66 -0
  242. package/esm2015/lib/header/task-header/task-meta-enum.js +11 -0
  243. package/esm2015/lib/header/workflow-header/workflow-header.service.js +48 -0
  244. package/esm2015/lib/header/workflow-header/workflow-meta-enum.js +10 -0
  245. package/esm2015/lib/legal/legal-notice/abstract-legal-notice.component.js +16 -0
  246. package/esm2015/lib/legal/public-api.js +2 -0
  247. package/esm2015/lib/logger/models/log-entry.js +61 -0
  248. package/esm2015/lib/logger/public-api.js +10 -0
  249. package/esm2015/lib/logger/publishers/console-log-publisher.js +32 -0
  250. package/esm2015/lib/logger/publishers/local-storage-log-publisher.js +40 -0
  251. package/esm2015/lib/logger/publishers/log-publisher.js +12 -0
  252. package/esm2015/lib/logger/services/log-level.js +10 -0
  253. package/esm2015/lib/logger/services/log-publisher.service.js +59 -0
  254. package/esm2015/lib/logger/services/logger.service.js +77 -0
  255. package/esm2015/lib/material/material.module.js +108 -0
  256. package/esm2015/lib/moment/public-api.js +2 -0
  257. package/esm2015/lib/moment/time-formats.js +26 -0
  258. package/esm2015/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.js +36 -0
  259. package/esm2015/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.js +34 -0
  260. package/esm2015/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.js +5 -0
  261. package/esm2015/lib/navigation/model/filter-case-injection-token.js +6 -0
  262. package/esm2015/lib/navigation/model/group-navigation-component-resolver-component-injection-token.js +6 -0
  263. package/esm2015/lib/navigation/model/group-navigation-constants.js +59 -0
  264. package/esm2015/lib/navigation/model/group-navigation-item-label.js +2 -0
  265. package/esm2015/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.js +131 -0
  266. package/esm2015/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.js +14 -0
  267. package/esm2015/lib/navigation/navigation-rail/abstract-navigation-rail.component.js +32 -0
  268. package/esm2015/lib/navigation/navigation-tree/abstract-navigation-tree.component.js +371 -0
  269. package/esm2015/lib/navigation/public-api.js +19 -0
  270. package/esm2015/lib/navigation/quick-panel/components/abstract-quick-panel.component.js +25 -0
  271. package/esm2015/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.js +12 -0
  272. package/esm2015/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.js +52 -0
  273. package/esm2015/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.js +21 -0
  274. package/esm2015/lib/navigation/quick-panel/components/paper-view.service.js +38 -0
  275. package/esm2015/lib/navigation/quick-panel/public-api.js +8 -0
  276. package/esm2015/lib/navigation/utility/filter-extraction.service.js +87 -0
  277. package/esm2015/lib/navigation/utility/navigation-item-task-utility-methods.js +78 -0
  278. package/esm2015/lib/panel/abstract/featured-value.js +2 -0
  279. package/esm2015/lib/panel/abstract/panel-with-header-binding.js +47 -0
  280. package/esm2015/lib/panel/abstract/panel-with-immediate-data.js +62 -0
  281. package/esm2015/lib/panel/abstract/tabbed-virtual-scroll.component.js +28 -0
  282. package/esm2015/lib/panel/abstract-panel.component.js +44 -0
  283. package/esm2015/lib/panel/case-panel/abstract-case-panel.component.js +88 -0
  284. package/esm2015/lib/panel/immediate/abstract-immediate-filter-text-content.component.js +38 -0
  285. package/esm2015/lib/panel/immediate/abstract-immediate-filter-text.component.js +21 -0
  286. package/esm2015/lib/panel/immediate/model/filter-text-injection-token.js +6 -0
  287. package/esm2015/lib/panel/public-api.js +15 -0
  288. package/esm2015/lib/panel/task-panel/abstract-task-panel.component.js +281 -0
  289. package/esm2015/lib/panel/task-panel/models/disable-functions.js +3 -0
  290. package/esm2015/lib/panel/task-panel-list/abstract-task-list.component.js +89 -0
  291. package/esm2015/lib/panel/task-panel-list/task-panel-data/task-panel-data.js +2 -0
  292. package/esm2015/lib/panel/workflow-panel/abstract-workflow-panel.component.js +103 -0
  293. package/esm2015/lib/process/net.js +101 -0
  294. package/esm2015/lib/process/netRole.js +2 -0
  295. package/esm2015/lib/process/permissions.js +12 -0
  296. package/esm2015/lib/process/petri-net-reference-with-permissions.js +2 -0
  297. package/esm2015/lib/process/process.service.js +301 -0
  298. package/esm2015/lib/process/public-api.js +8 -0
  299. package/esm2015/lib/process/public-process.service.js +29 -0
  300. package/esm2015/lib/process/rolesAndPermissions.js +2 -0
  301. package/esm2015/lib/process/transaction.js +2 -0
  302. package/esm2015/lib/process/transition.js +2 -0
  303. package/esm2015/lib/public/factories/get-net-and-create-case.js +22 -0
  304. package/esm2015/lib/public/factories/public-factory-resolver.js +13 -0
  305. package/esm2015/lib/public/factories/public-search-factory.js +17 -0
  306. package/esm2015/lib/public/public-api.js +5 -0
  307. package/esm2015/lib/public/services/public-url-resolver.service.js +20 -0
  308. package/esm2015/lib/resources/abstract-endpoint/abstract-resource.service.js +79 -0
  309. package/esm2015/lib/resources/abstract-endpoint/count-service.js +2 -0
  310. package/esm2015/lib/resources/engine-endpoint/case-resource.service.js +133 -0
  311. package/esm2015/lib/resources/engine-endpoint/dashboard-resource.service.js +33 -0
  312. package/esm2015/lib/resources/engine-endpoint/petri-net-resource.service.js +161 -0
  313. package/esm2015/lib/resources/engine-endpoint/public/public-case-resource.service.js +46 -0
  314. package/esm2015/lib/resources/engine-endpoint/public/public-petri-net-resource.service.js +108 -0
  315. package/esm2015/lib/resources/engine-endpoint/public/public-task-resource.service.js +224 -0
  316. package/esm2015/lib/resources/engine-endpoint/task-resource.service.js +306 -0
  317. package/esm2015/lib/resources/engine-endpoint/user-resource.service.js +191 -0
  318. package/esm2015/lib/resources/interface/assigned-user-policy.js +2 -0
  319. package/esm2015/lib/resources/interface/author.js +2 -0
  320. package/esm2015/lib/resources/interface/authority.js +2 -0
  321. package/esm2015/lib/resources/interface/case-get-request-body.js +2 -0
  322. package/esm2015/lib/resources/interface/case.js +2 -0
  323. package/esm2015/lib/resources/interface/changed-field-container.js +2 -0
  324. package/esm2015/lib/resources/interface/count.js +2 -0
  325. package/esm2015/lib/resources/interface/create-case-request-body.js +2 -0
  326. package/esm2015/lib/resources/interface/data-group-layout.js +59 -0
  327. package/esm2015/lib/resources/interface/data-groups.js +19 -0
  328. package/esm2015/lib/resources/interface/event-outcome.js +2 -0
  329. package/esm2015/lib/resources/interface/field-alignment.js +10 -0
  330. package/esm2015/lib/resources/interface/fields.js +2 -0
  331. package/esm2015/lib/resources/interface/file-resource.js +2 -0
  332. package/esm2015/lib/resources/interface/group.js +2 -0
  333. package/esm2015/lib/resources/interface/immediate-data.js +2 -0
  334. package/esm2015/lib/resources/interface/link.js +2 -0
  335. package/esm2015/lib/resources/interface/message-resource.js +2 -0
  336. package/esm2015/lib/resources/interface/page.js +2 -0
  337. package/esm2015/lib/resources/interface/pagination.js +2 -0
  338. package/esm2015/lib/resources/interface/petri-net-object-id.js +2 -0
  339. package/esm2015/lib/resources/interface/petri-net-reference.js +2 -0
  340. package/esm2015/lib/resources/interface/petri-net-request-body.js +2 -0
  341. package/esm2015/lib/resources/interface/petri-net.js +2 -0
  342. package/esm2015/lib/resources/interface/preferences.js +2 -0
  343. package/esm2015/lib/resources/interface/process-role.js +2 -0
  344. package/esm2015/lib/resources/interface/response-data.js +2 -0
  345. package/esm2015/lib/resources/interface/task-layout.js +2 -0
  346. package/esm2015/lib/resources/interface/task-reference.js +2 -0
  347. package/esm2015/lib/resources/interface/task-set-data-request-body.js +2 -0
  348. package/esm2015/lib/resources/interface/task.js +2 -0
  349. package/esm2015/lib/resources/interface/user-process-role.js +2 -0
  350. package/esm2015/lib/resources/interface/user-resource-small.js +2 -0
  351. package/esm2015/lib/resources/interface/user-resource.js +2 -0
  352. package/esm2015/lib/resources/public-api.js +46 -0
  353. package/esm2015/lib/resources/resource-provider.service.js +168 -0
  354. package/esm2015/lib/resources/types/nae-date-type.js +5 -0
  355. package/esm2015/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.js +36 -0
  356. package/esm2015/lib/routing/public-api.js +7 -0
  357. package/esm2015/lib/routing/redirect-service/redirect.service.js +103 -0
  358. package/esm2015/lib/routing/routing-builder/routing-builder.service.js +190 -0
  359. package/esm2015/lib/routing/view-service/model/view-entry.js +2 -0
  360. package/esm2015/lib/routing/view-service/view.service.js +35 -0
  361. package/esm2015/lib/search/advanced-search-component/abstract-advanced-search.component.js +49 -0
  362. package/esm2015/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.js +34 -0
  363. package/esm2015/lib/search/category-factory/category-factory.js +94 -0
  364. package/esm2015/lib/search/category-factory/category-resolver.service.js +149 -0
  365. package/esm2015/lib/search/category-factory/category-serialisation-pair.js +2 -0
  366. package/esm2015/lib/search/category-factory/default-categories-factories.js +67 -0
  367. package/esm2015/lib/search/category-factory/default-search-categories.module.js +50 -0
  368. package/esm2015/lib/search/category-factory/optional-dependencies.js +2 -0
  369. package/esm2015/lib/search/category-factory/search-categories-injection-token.js +24 -0
  370. package/esm2015/lib/search/fulltext-search-component/abstract-fulltext-search.component.js +17 -0
  371. package/esm2015/lib/search/header-search-service/header-search.service.js +226 -0
  372. package/esm2015/lib/search/models/base-filter-injection-token.js +6 -0
  373. package/esm2015/lib/search/models/base-filter.js +2 -0
  374. package/esm2015/lib/search/models/boolean-operator.js +10 -0
  375. package/esm2015/lib/search/models/category/autocomplete-category.js +129 -0
  376. package/esm2015/lib/search/models/category/autocomplete-options.js +2 -0
  377. package/esm2015/lib/search/models/category/case/case-author.js +21 -0
  378. package/esm2015/lib/search/models/category/case/case-creation-date-time.js +43 -0
  379. package/esm2015/lib/search/models/category/case/case-creation-date.js +43 -0
  380. package/esm2015/lib/search/models/category/case/case-dataset.js +397 -0
  381. package/esm2015/lib/search/models/category/case/case-net-attribute-autocomplete-category.js +23 -0
  382. package/esm2015/lib/search/models/category/case/case-process.js +73 -0
  383. package/esm2015/lib/search/models/category/case/case-role.js +24 -0
  384. package/esm2015/lib/search/models/category/case/case-search.enum.js +15 -0
  385. package/esm2015/lib/search/models/category/case/case-simple-dataset.js +135 -0
  386. package/esm2015/lib/search/models/category/case/case-string-id.js +27 -0
  387. package/esm2015/lib/search/models/category/case/case-task.js +24 -0
  388. package/esm2015/lib/search/models/category/case/case-title.js +29 -0
  389. package/esm2015/lib/search/models/category/case/case-visual-id.js +23 -0
  390. package/esm2015/lib/search/models/category/categories.js +24 -0
  391. package/esm2015/lib/search/models/category/category.js +524 -0
  392. package/esm2015/lib/search/models/category/name-id-pair.js +2 -0
  393. package/esm2015/lib/search/models/category/net-attribute-autocomplete-category.js +59 -0
  394. package/esm2015/lib/search/models/category/net-attribute-pair.js +2 -0
  395. package/esm2015/lib/search/models/category/no-configuration-autocomplete-category.js +36 -0
  396. package/esm2015/lib/search/models/category/no-configuration-category.js +39 -0
  397. package/esm2015/lib/search/models/category/no-configuration-user-autocomplete-category.js +28 -0
  398. package/esm2015/lib/search/models/category/search-autocomplete-option.js +2 -0
  399. package/esm2015/lib/search/models/category/search-input-type.js +14 -0
  400. package/esm2015/lib/search/models/category/task/task-assignee.js +21 -0
  401. package/esm2015/lib/search/models/category/task/task-net-attribute-autocomplete-category.js +23 -0
  402. package/esm2015/lib/search/models/category/task/task-process.js +50 -0
  403. package/esm2015/lib/search/models/category/task/task-role.js +23 -0
  404. package/esm2015/lib/search/models/category/task/task-task.js +23 -0
  405. package/esm2015/lib/search/models/category/user-autocomplete.js +59 -0
  406. package/esm2015/lib/search/models/component-configuration/search-component-configuration-injection-token.js +8 -0
  407. package/esm2015/lib/search/models/component-configuration/search-component-configuration.js +2 -0
  408. package/esm2015/lib/search/models/component-configuration/search-mode.js +9 -0
  409. package/esm2015/lib/search/models/configuration-input.js +52 -0
  410. package/esm2015/lib/search/models/datafield-map-key.js +69 -0
  411. package/esm2015/lib/search/models/escape-result.js +2 -0
  412. package/esm2015/lib/search/models/operator/equals-date-time.js +26 -0
  413. package/esm2015/lib/search/models/operator/equals-date.js +26 -0
  414. package/esm2015/lib/search/models/operator/equals.js +21 -0
  415. package/esm2015/lib/search/models/operator/in-range-date-time.js +43 -0
  416. package/esm2015/lib/search/models/operator/in-range-date.js +42 -0
  417. package/esm2015/lib/search/models/operator/in-range.js +22 -0
  418. package/esm2015/lib/search/models/operator/is-null.js +69 -0
  419. package/esm2015/lib/search/models/operator/less-than-date-time.js +27 -0
  420. package/esm2015/lib/search/models/operator/less-than-date.js +27 -0
  421. package/esm2015/lib/search/models/operator/less-than-equal-date-time.js +27 -0
  422. package/esm2015/lib/search/models/operator/less-than-equal-date.js +26 -0
  423. package/esm2015/lib/search/models/operator/less-than-equal.js +17 -0
  424. package/esm2015/lib/search/models/operator/less-than.js +17 -0
  425. package/esm2015/lib/search/models/operator/like.js +29 -0
  426. package/esm2015/lib/search/models/operator/more-than-date-time.js +29 -0
  427. package/esm2015/lib/search/models/operator/more-than-date.js +29 -0
  428. package/esm2015/lib/search/models/operator/more-than-equal-date-time.js +27 -0
  429. package/esm2015/lib/search/models/operator/more-than-equal-date.js +27 -0
  430. package/esm2015/lib/search/models/operator/more-than-equal.js +17 -0
  431. package/esm2015/lib/search/models/operator/more-than.js +17 -0
  432. package/esm2015/lib/search/models/operator/not-equals-date-time.js +24 -0
  433. package/esm2015/lib/search/models/operator/not-equals-date.js +27 -0
  434. package/esm2015/lib/search/models/operator/not-equals.js +30 -0
  435. package/esm2015/lib/search/models/operator/operator.js +124 -0
  436. package/esm2015/lib/search/models/operator/operators.js +31 -0
  437. package/esm2015/lib/search/models/operator/substring.js +27 -0
  438. package/esm2015/lib/search/models/operator-template-part-type.js +15 -0
  439. package/esm2015/lib/search/models/operator-template-part.js +31 -0
  440. package/esm2015/lib/search/models/persistance/filter-metadata-allowed-nets.js +2 -0
  441. package/esm2015/lib/search/models/persistance/filter-metadata.js +2 -0
  442. package/esm2015/lib/search/models/persistance/filter-text-segment.js +2 -0
  443. package/esm2015/lib/search/models/persistance/generator-metadata.js +2 -0
  444. package/esm2015/lib/search/models/persistance/saved-filter-metadata.js +2 -0
  445. package/esm2015/lib/search/models/predicate/clause-predicate.js +78 -0
  446. package/esm2015/lib/search/models/predicate/editable-clause-predicate-with-generators.js +47 -0
  447. package/esm2015/lib/search/models/predicate/editable-clause-predicate.js +116 -0
  448. package/esm2015/lib/search/models/predicate/editable-elementary-predicate.js +20 -0
  449. package/esm2015/lib/search/models/predicate/editable-predicate-with-generator.js +37 -0
  450. package/esm2015/lib/search/models/predicate/editable-predicate.js +22 -0
  451. package/esm2015/lib/search/models/predicate/elementary-predicate.js +14 -0
  452. package/esm2015/lib/search/models/predicate/predicate-with-generator.js +95 -0
  453. package/esm2015/lib/search/models/predicate/predicate.js +90 -0
  454. package/esm2015/lib/search/models/predicate-removal-event.js +2 -0
  455. package/esm2015/lib/search/models/query/query.js +72 -0
  456. package/esm2015/lib/search/models/search-index.js +76 -0
  457. package/esm2015/lib/search/models/wrap-result.js +2 -0
  458. package/esm2015/lib/search/operator-service/operator-resolver.service.js +109 -0
  459. package/esm2015/lib/search/operator-service/operator.service.js +39 -0
  460. package/esm2015/lib/search/public-api.js +107 -0
  461. package/esm2015/lib/search/search-clause-component/abstract-search-clause.component.js +52 -0
  462. package/esm2015/lib/search/search-component/abstract-search.component.js +171 -0
  463. package/esm2015/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.js +75 -0
  464. package/esm2015/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +36 -0
  465. package/esm2015/lib/search/search-operand-input-component/abstract-search-operand-input.component.js +97 -0
  466. package/esm2015/lib/search/search-predicate-component/abstract-search-predicate.component.js +144 -0
  467. package/esm2015/lib/search/search-service/search.service.js +306 -0
  468. package/esm2015/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.js +163 -0
  469. package/esm2015/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.js +22 -0
  470. package/esm2015/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.js +2 -0
  471. package/esm2015/lib/side-menu/content-components/filter-selector/model/filtered-array.js +32 -0
  472. package/esm2015/lib/side-menu/content-components/import-net/abstract-import-net.component.js +123 -0
  473. package/esm2015/lib/side-menu/content-components/injection-tokens.js +8 -0
  474. package/esm2015/lib/side-menu/content-components/load-filter/abstract-load-filter.component.js +42 -0
  475. package/esm2015/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.js +2 -0
  476. package/esm2015/lib/side-menu/content-components/new-case/abstract-new-case.component.js +230 -0
  477. package/esm2015/lib/side-menu/content-components/new-case/model/new-case-injection-data.js +2 -0
  478. package/esm2015/lib/side-menu/content-components/option-selector/abstract-option-selector.component.js +28 -0
  479. package/esm2015/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.js +2 -0
  480. package/esm2015/lib/side-menu/content-components/public-api.js +20 -0
  481. package/esm2015/lib/side-menu/content-components/save-filter/abstract-save-filter.component.js +38 -0
  482. package/esm2015/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.js +2 -0
  483. package/esm2015/lib/side-menu/content-components/user-assign/abstract-user-assign.component.js +60 -0
  484. package/esm2015/lib/side-menu/content-components/user-assign/model/user-list-injected-data.js +2 -0
  485. package/esm2015/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.js +102 -0
  486. package/esm2015/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.js +13 -0
  487. package/esm2015/lib/side-menu/models/portal-wrapper.js +13 -0
  488. package/esm2015/lib/side-menu/models/side-menu-control.js +36 -0
  489. package/esm2015/lib/side-menu/models/side-menu-event.js +2 -0
  490. package/esm2015/lib/side-menu/models/side-menu-injection-data.js +2 -0
  491. package/esm2015/lib/side-menu/models/side-menu-ref.js +16 -0
  492. package/esm2015/lib/side-menu/models/side-menu-size.js +7 -0
  493. package/esm2015/lib/side-menu/net-version-visible-injection-token.js +4 -0
  494. package/esm2015/lib/side-menu/public-api.js +15 -0
  495. package/esm2015/lib/side-menu/services/side-menu.service.js +86 -0
  496. package/esm2015/lib/side-menu/side-menu-container/abstract-side-menu-container.component.js +34 -0
  497. package/esm2015/lib/side-menu/side-menu-injection-token.js +3 -0
  498. package/esm2015/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.js +26 -0
  499. package/esm2015/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.js +26 -0
  500. package/esm2015/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.js +26 -0
  501. package/esm2015/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.js +26 -0
  502. package/esm2015/lib/snack-bar/models/abstract-snack-bar.js +18 -0
  503. package/esm2015/lib/snack-bar/models/injection-token-snackbar.js +4 -0
  504. package/esm2015/lib/snack-bar/models/snack-bar-enums.js +12 -0
  505. package/esm2015/lib/snack-bar/models/snack-bar-injection-data.js +2 -0
  506. package/esm2015/lib/snack-bar/public-api.js +15 -0
  507. package/esm2015/lib/snack-bar/services/snack-bar.service.js +92 -0
  508. package/esm2015/lib/snack-bar/snack-bar.module.js +33 -0
  509. package/esm2015/lib/tabs/classes/opened-tab.js +48 -0
  510. package/esm2015/lib/tabs/classes/tab-view.js +262 -0
  511. package/esm2015/lib/tabs/interfaces.js +2 -0
  512. package/esm2015/lib/tabs/public-api.js +6 -0
  513. package/esm2015/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.js +17 -0
  514. package/esm2015/lib/tabs/tab-data-injection-token/tab-data-injection-token.js +8 -0
  515. package/esm2015/lib/tabs/tab-view/abstract-tab-view.component.js +67 -0
  516. package/esm2015/lib/task/interfaces/task-operations.js +2 -0
  517. package/esm2015/lib/task/models/null-task-operations.js +26 -0
  518. package/esm2015/lib/task/models/subject-task-operations.js +58 -0
  519. package/esm2015/lib/task/models/task-operations-injection-token.js +3 -0
  520. package/esm2015/lib/task/models/task-set-data-request-context.js +2 -0
  521. package/esm2015/lib/task/public-api.js +19 -0
  522. package/esm2015/lib/task/services/assign-policy.service.js +175 -0
  523. package/esm2015/lib/task/services/assign-task.service.js +191 -0
  524. package/esm2015/lib/task/services/cancel-task.service.js +189 -0
  525. package/esm2015/lib/task/services/data-focus-policy.service.js +36 -0
  526. package/esm2015/lib/task/services/delegate-task.service.js +185 -0
  527. package/esm2015/lib/task/services/finish-policy.service.js +79 -0
  528. package/esm2015/lib/task/services/finish-task.service.js +207 -0
  529. package/esm2015/lib/task/services/selected-case.service.js +38 -0
  530. package/esm2015/lib/task/services/task-data.service.js +538 -0
  531. package/esm2015/lib/task/services/task-handling-service.js +57 -0
  532. package/esm2015/lib/task/services/task-request-state.service.js +113 -0
  533. package/esm2015/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.js +39 -0
  534. package/esm2015/lib/task-content/model/async-rendering-configuration-injection-token.js +8 -0
  535. package/esm2015/lib/task-content/model/async-rendering-configuration.js +2 -0
  536. package/esm2015/lib/task-content/model/datafield-grid-layout-element.js +2 -0
  537. package/esm2015/lib/task-content/model/field-type-resource.js +23 -0
  538. package/esm2015/lib/task-content/model/policy.js +31 -0
  539. package/esm2015/lib/task-content/model/resource-interface.js +2 -0
  540. package/esm2015/lib/task-content/model/split-data-group.js +2 -0
  541. package/esm2015/lib/task-content/model/subgrid.js +235 -0
  542. package/esm2015/lib/task-content/model/task-content-element-type.js +19 -0
  543. package/esm2015/lib/task-content/model/task-event-notification.js +15 -0
  544. package/esm2015/lib/task-content/model/task-event.js +10 -0
  545. package/esm2015/lib/task-content/public-api.js +21 -0
  546. package/esm2015/lib/task-content/services/field-converter.service.js +348 -0
  547. package/esm2015/lib/task-content/services/single-task-content.service.js +72 -0
  548. package/esm2015/lib/task-content/services/task-content.service.js +266 -0
  549. package/esm2015/lib/task-content/services/task-event.service.js +45 -0
  550. package/esm2015/lib/task-content/services/unlimited-task-content.service.js +64 -0
  551. package/esm2015/lib/task-content/task-content/abstract-task-content.component.js +656 -0
  552. package/esm2015/lib/toolbar/abstract-toolbar.component.js +22 -0
  553. package/esm2015/lib/toolbar/public-api.js +2 -0
  554. package/esm2015/lib/translate/language.service.js +85 -0
  555. package/esm2015/lib/translate/public-api.js +3 -0
  556. package/esm2015/lib/translate/translate-interceptor.js +23 -0
  557. package/esm2015/lib/translate/translate-lib.module.js +38 -0
  558. package/esm2015/lib/user/components/user-card/abstract-user-card.component.js +44 -0
  559. package/esm2015/lib/user/models/iuser.js +2 -0
  560. package/esm2015/lib/user/models/public-api.js +6 -0
  561. package/esm2015/lib/user/models/user.js +37 -0
  562. package/esm2015/lib/user/models/view-id-injection-tokens.js +4 -0
  563. package/esm2015/lib/user/profile/abstract-profile.component.js +29 -0
  564. package/esm2015/lib/user/public-api.js +12 -0
  565. package/esm2015/lib/user/services/user-comparator.service.js +26 -0
  566. package/esm2015/lib/user/services/user-list.service.js +186 -0
  567. package/esm2015/lib/user/services/user-preference.service.js +152 -0
  568. package/esm2015/lib/user/services/user.service.js +203 -0
  569. package/esm2015/lib/user/services/view-id.service.js +30 -0
  570. package/esm2015/lib/utility/array-to-observable.js +10 -0
  571. package/esm2015/lib/utility/call-chain/after-action.js +12 -0
  572. package/esm2015/lib/utility/call-chain/call-chain.service.js +34 -0
  573. package/esm2015/lib/utility/clear-time-information.js +11 -0
  574. package/esm2015/lib/utility/destroy-subscription.js +10 -0
  575. package/esm2015/lib/utility/get-field.js +48 -0
  576. package/esm2015/lib/utility/get-immediate-data.js +9 -0
  577. package/esm2015/lib/utility/grid-layout/grid-layout-helper.js +76 -0
  578. package/esm2015/lib/utility/grid-layout/model/grid-element-with-item.js +2 -0
  579. package/esm2015/lib/utility/grid-layout/model/grid-element.js +2 -0
  580. package/esm2015/lib/utility/grid-layout/model/grid-filler.js +50 -0
  581. package/esm2015/lib/utility/incrementing-counter.js +21 -0
  582. package/esm2015/lib/utility/loading-emitter.js +19 -0
  583. package/esm2015/lib/utility/loading-with-filter-emitter.js +30 -0
  584. package/esm2015/lib/utility/navigation-item-task-filter-factory.js +11 -0
  585. package/esm2015/lib/utility/navigation-item-task-search-categories-factory.js +35 -0
  586. package/esm2015/lib/utility/of-void.js +12 -0
  587. package/esm2015/lib/utility/pagination/load-all-pages.js +46 -0
  588. package/esm2015/lib/utility/pagination/page-has-content.js +8 -0
  589. package/esm2015/lib/utility/process-message-response.js +17 -0
  590. package/esm2015/lib/utility/public-api.js +47 -0
  591. package/esm2015/lib/utility/refresh-tree.js +9 -0
  592. package/esm2015/lib/utility/result-with-after-actions.js +27 -0
  593. package/esm2015/lib/utility/service/case-list-font-color.service.js +45 -0
  594. package/esm2015/lib/utility/service/spinner-overlay.service.js +48 -0
  595. package/esm2015/lib/utility/stop-propagation.js +5 -0
  596. package/esm2015/lib/utility/tests/mocks/mock-authentication-method-service.js +12 -0
  597. package/esm2015/lib/utility/tests/mocks/mock-authentication.service.js +18 -0
  598. package/esm2015/lib/utility/tests/mocks/mock-endpoint.js +44 -0
  599. package/esm2015/lib/utility/tests/mocks/mock-sign-up.service.js +29 -0
  600. package/esm2015/lib/utility/tests/mocks/mock-user-autocomplete-value.js +14 -0
  601. package/esm2015/lib/utility/tests/mocks/mock-user-preference.service.js +42 -0
  602. package/esm2015/lib/utility/tests/mocks/mock-user-resource.service.js +48 -0
  603. package/esm2015/lib/utility/tests/search-category-mock-dependencies.js +19 -0
  604. package/esm2015/lib/utility/tests/test-config.js +424 -0
  605. package/esm2015/lib/utility/tests/test-factory-methods.js +21 -0
  606. package/esm2015/lib/utility/tests/test-mock-dependencies.module.js +31 -0
  607. package/esm2015/lib/utility/tests/test-view-service.js +24 -0
  608. package/esm2015/lib/utility/tests/utility/configure-category.js +14 -0
  609. package/esm2015/lib/utility/tests/utility/create-mock-case-outcome.js +16 -0
  610. package/esm2015/lib/utility/tests/utility/create-mock-case.js +36 -0
  611. package/esm2015/lib/utility/tests/utility/create-mock-datagroup.js +35 -0
  612. package/esm2015/lib/utility/tests/utility/create-mock-field.js +41 -0
  613. package/esm2015/lib/utility/tests/utility/create-mock-get-data-outcome.js +15 -0
  614. package/esm2015/lib/utility/tests/utility/create-mock-immediate-data.js +15 -0
  615. package/esm2015/lib/utility/tests/utility/create-mock-net.js +27 -0
  616. package/esm2015/lib/utility/tests/utility/create-mock-page.js +23 -0
  617. package/esm2015/lib/utility/tests/utility/create-mock-petri-net-outcome.js +14 -0
  618. package/esm2015/lib/utility/tests/utility/create-mock-set-data-outcome.js +19 -0
  619. package/esm2015/lib/utility/tests/utility/create-mock-task-outcome.js +18 -0
  620. package/esm2015/lib/utility/tests/utility/create-mock-task.js +34 -0
  621. package/esm2015/lib/view/abstract/page-load-request-context.js +25 -0
  622. package/esm2015/lib/view/abstract/sortable-view.js +62 -0
  623. package/esm2015/lib/view/abstract/view-with-headers.js +20 -0
  624. package/esm2015/lib/view/case-view/abstract-case-view.js +40 -0
  625. package/esm2015/lib/view/case-view/components/case-list/abstract-case-list.component.js +82 -0
  626. package/esm2015/lib/view/case-view/models/case-page-load-request-result.js +2 -0
  627. package/esm2015/lib/view/case-view/models/case-view-params.js +2 -0
  628. package/esm2015/lib/view/case-view/models/new-case-configuration-injection-token.js +7 -0
  629. package/esm2015/lib/view/case-view/models/new-case-configuration.js +2 -0
  630. package/esm2015/lib/view/case-view/service/case-view-service.js +273 -0
  631. package/esm2015/lib/view/case-view/tabbed-case-view.js +66 -0
  632. package/esm2015/lib/view/public-api.js +42 -0
  633. package/esm2015/lib/view/task-view/abstract-task-view.js +13 -0
  634. package/esm2015/lib/view/task-view/models/injected-tabbed-task-view-data.js +2 -0
  635. package/esm2015/lib/view/task-view/models/injection-token-task-endpoint.js +6 -0
  636. package/esm2015/lib/view/task-view/models/task-endpoint.js +9 -0
  637. package/esm2015/lib/view/task-view/models/task-page-load-request-result.js +2 -0
  638. package/esm2015/lib/view/task-view/models/task-view-configuration-injection-token.js +20 -0
  639. package/esm2015/lib/view/task-view/models/task-view-configuration.js +2 -0
  640. package/esm2015/lib/view/task-view/models/task-view-params.js +2 -0
  641. package/esm2015/lib/view/task-view/service/task-view.service.js +292 -0
  642. package/esm2015/lib/view/task-view/tabbed-task-view.js +22 -0
  643. package/esm2015/lib/view/tree-case-view/model/tree-petriflow-identifiers.js +43 -0
  644. package/esm2015/lib/view/tree-case-view/tree-case-view.service.js +17 -0
  645. package/esm2015/lib/view/tree-case-view/tree-component/abstract-tree.component.js +141 -0
  646. package/esm2015/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.js +14 -0
  647. package/esm2015/lib/view/tree-case-view/tree-component/case-tree.service.js +843 -0
  648. package/esm2015/lib/view/tree-case-view/tree-component/model/case-tree-node.js +104 -0
  649. package/esm2015/lib/view/tree-case-view/tree-component/model/case-tree-path.js +2 -0
  650. package/esm2015/lib/view/tree-case-view/tree-component/model/expansion-tree.js +2 -0
  651. package/esm2015/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.js +14 -0
  652. package/esm2015/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.js +55 -0
  653. package/esm2015/lib/view/tree-case-view/tree-task-content/tree-task-content.service.js +288 -0
  654. package/esm2015/lib/view/workflow-view/abstract-workflow-view.component.js +68 -0
  655. package/esm2015/lib/view/workflow-view/models/injection-token-workflow-service.js +10 -0
  656. package/esm2015/lib/view/workflow-view/workflow-view.service.js +211 -0
  657. package/esm2015/netgrif-components-core.js +20 -0
  658. package/esm2015/public-api.js +45 -0
  659. package/esm5/assets/i18n/de.json +419 -0
  660. package/esm5/assets/i18n/en.json +419 -0
  661. package/esm5/assets/i18n/sk.json +419 -0
  662. package/esm5/commons/angular-cli-devkit-core-strings.js +157 -0
  663. package/esm5/commons/import-to-add.js +9 -0
  664. package/esm5/commons/schema.js +7 -0
  665. package/esm5/commons/view-class-info.js +57 -0
  666. package/esm5/lib/admin/public-api.js +9 -0
  667. package/esm5/lib/admin/role-assignment/abstract-role-assignment.js +84 -0
  668. package/esm5/lib/admin/role-assignment/services/ProcessList.js +179 -0
  669. package/esm5/lib/admin/role-assignment/services/role-assignment.service.js +50 -0
  670. package/esm5/lib/admin/user-invite/abstract-user-invite.component.js +84 -0
  671. package/esm5/lib/admin/user-invite/services/organization-list.service.js +82 -0
  672. package/esm5/lib/admin/user-invite/services/user-invite.service.js +37 -0
  673. package/esm5/lib/allowed-nets/public-api.js +4 -0
  674. package/esm5/lib/allowed-nets/services/allowed-nets.service.js +94 -0
  675. package/esm5/lib/allowed-nets/services/base-allowed-nets.service.js +65 -0
  676. package/esm5/lib/allowed-nets/services/factory/allowed-nets-service-factory.js +132 -0
  677. package/esm5/lib/authentication/anonymous/anonymous.service.js +73 -0
  678. package/esm5/lib/authentication/authentication.factory.js +16 -0
  679. package/esm5/lib/authentication/authentication.module.js +36 -0
  680. package/esm5/lib/authentication/components/abstract-authentication-overlay.js +53 -0
  681. package/esm5/lib/authentication/models/credentials.js +2 -0
  682. package/esm5/lib/authentication/models/public-api.js +5 -0
  683. package/esm5/lib/authentication/models/transformer.js +2 -0
  684. package/esm5/lib/authentication/models/user.transformer.js +23 -0
  685. package/esm5/lib/authentication/public-api.js +14 -0
  686. package/esm5/lib/authentication/services/anonymous-authentication-interceptor.js +47 -0
  687. package/esm5/lib/authentication/services/authentication/authentication.service.js +84 -0
  688. package/esm5/lib/authentication/services/authentication-interceptor.js +55 -0
  689. package/esm5/lib/authentication/services/authentication-method.service.js +7 -0
  690. package/esm5/lib/authentication/services/guard/authentication-guard.service.js +41 -0
  691. package/esm5/lib/authentication/services/methods/basic-authentication/basic-authentication.service.js +54 -0
  692. package/esm5/lib/authentication/services/methods/null-authentication/null-authentication.service.js +23 -0
  693. package/esm5/lib/authentication/services/public-api.js +7 -0
  694. package/esm5/lib/authentication/session/null-storage.js +19 -0
  695. package/esm5/lib/authentication/session/public-api.js +3 -0
  696. package/esm5/lib/authentication/session/services/session.service.js +193 -0
  697. package/esm5/lib/authentication/sign-up/models/user-invitation-request.js +2 -0
  698. package/esm5/lib/authentication/sign-up/models/user-registration-request.js +2 -0
  699. package/esm5/lib/authentication/sign-up/public-api.js +8 -0
  700. package/esm5/lib/authentication/sign-up/services/sign-up.service.js +107 -0
  701. package/esm5/lib/authentication/sign-up/sign-up.module.js +17 -0
  702. package/esm5/lib/authorization/authority/authority-guard.service.js +52 -0
  703. package/esm5/lib/authorization/group/group-guard.service.js +69 -0
  704. package/esm5/lib/authorization/permission/permission.service.js +126 -0
  705. package/esm5/lib/authorization/public-api.js +10 -0
  706. package/esm5/lib/authorization/role/role-guard.service.js +108 -0
  707. package/esm5/lib/changed-fields/public-api.js +2 -0
  708. package/esm5/lib/changed-fields/services/changed-fields.service.js +38 -0
  709. package/esm5/lib/configuration/configuration.service.js +208 -0
  710. package/esm5/lib/configuration/public-api.js +3 -0
  711. package/esm5/lib/covalent/covalent.module.js +26 -0
  712. package/esm5/lib/currency/currency.module.js +25 -0
  713. package/esm5/lib/dashboard/cards/count-card/abstract-count-card.js +42 -0
  714. package/esm5/lib/dashboard/cards/custom-card/abstract-custom-card.js +50 -0
  715. package/esm5/lib/dashboard/cards/iframe-card/abstract-iframe-card.js +16 -0
  716. package/esm5/lib/dashboard/cards/model/card-grid-element.js +2 -0
  717. package/esm5/lib/dashboard/cards/model/count-card.js +2 -0
  718. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.js +2 -0
  719. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.js +2 -0
  720. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/custom-card.js +2 -0
  721. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.js +2 -0
  722. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.js +9 -0
  723. package/esm5/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.js +9 -0
  724. package/esm5/lib/dashboard/cards/model/dashboard-card-types.js +13 -0
  725. package/esm5/lib/dashboard/cards/model/dashboard-card.js +2 -0
  726. package/esm5/lib/dashboard/cards/model/graph-card.js +2 -0
  727. package/esm5/lib/dashboard/cards/model/iframe-card.js +2 -0
  728. package/esm5/lib/dashboard/dashboard-content/abstract-dashboard-content.js +21 -0
  729. package/esm5/lib/dashboard/dashboard-content/dashboard-params.js +2 -0
  730. package/esm5/lib/dashboard/public-api.js +20 -0
  731. package/esm5/lib/data-fields/boolean-field/abstract-boolean-field.component.js +45 -0
  732. package/esm5/lib/data-fields/boolean-field/models/boolean-field.js +29 -0
  733. package/esm5/lib/data-fields/button-field/abstract-button-field.component.js +68 -0
  734. package/esm5/lib/data-fields/button-field/models/button-field.js +37 -0
  735. package/esm5/lib/data-fields/data-field-template/abstract-data-field-template.component.js +111 -0
  736. package/esm5/lib/data-fields/data-field-template/models/wrapped-boolean.js +10 -0
  737. package/esm5/lib/data-fields/data-fields.module.js +39 -0
  738. package/esm5/lib/data-fields/date-field/abstract-date-field.component.js +26 -0
  739. package/esm5/lib/data-fields/date-field/models/custom-date-adapter.js +18 -0
  740. package/esm5/lib/data-fields/date-field/models/date-field.js +14 -0
  741. package/esm5/lib/data-fields/date-time-field/abstract-date-time-field.component.js +26 -0
  742. package/esm5/lib/data-fields/date-time-field/models/date-time-field.js +14 -0
  743. package/esm5/lib/data-fields/enumeration-field/abstract-enumeration-field.component.js +22 -0
  744. package/esm5/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.js +47 -0
  745. package/esm5/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.js +57 -0
  746. package/esm5/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.js +39 -0
  747. package/esm5/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.js +15 -0
  748. package/esm5/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.js +15 -0
  749. package/esm5/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.js +43 -0
  750. package/esm5/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.js +63 -0
  751. package/esm5/lib/data-fields/enumeration-field/models/enumeration-field.js +79 -0
  752. package/esm5/lib/data-fields/file-field/abstract-file-field.component.js +405 -0
  753. package/esm5/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.js +2 -0
  754. package/esm5/lib/data-fields/file-field/models/file-field-value.js +2 -0
  755. package/esm5/lib/data-fields/file-field/models/file-field.js +128 -0
  756. package/esm5/lib/data-fields/file-list-field/abstract-file-list-field.component.js +278 -0
  757. package/esm5/lib/data-fields/file-list-field/models/file-list-field-value.js +2 -0
  758. package/esm5/lib/data-fields/file-list-field/models/file-list-field.js +105 -0
  759. package/esm5/lib/data-fields/filter-field/abstract-filter-field-content.component.js +36 -0
  760. package/esm5/lib/data-fields/filter-field/abstract-filter-field.component.js +33 -0
  761. package/esm5/lib/data-fields/filter-field/models/filter-field-injection-token.js +7 -0
  762. package/esm5/lib/data-fields/filter-field/models/filter-field.js +28 -0
  763. package/esm5/lib/data-fields/i18n-field/abstract-i18n-field.component.js +23 -0
  764. package/esm5/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.js +30 -0
  765. package/esm5/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.js +42 -0
  766. package/esm5/lib/data-fields/i18n-field/models/i18n-field-value.js +2 -0
  767. package/esm5/lib/data-fields/i18n-field/models/i18n-field.js +16 -0
  768. package/esm5/lib/data-fields/models/abstract-data-field-component.js +45 -0
  769. package/esm5/lib/data-fields/models/abstract-data-field.js +501 -0
  770. package/esm5/lib/data-fields/models/behavior.js +2 -0
  771. package/esm5/lib/data-fields/models/boolean-label-enabled-token.js +3 -0
  772. package/esm5/lib/data-fields/models/changed-fields.js +2 -0
  773. package/esm5/lib/data-fields/models/component.js +2 -0
  774. package/esm5/lib/data-fields/models/format-filter.js +2 -0
  775. package/esm5/lib/data-fields/models/icon.js +6 -0
  776. package/esm5/lib/data-fields/models/invalid-data-policy-token.js +11 -0
  777. package/esm5/lib/data-fields/models/layout.js +2 -0
  778. package/esm5/lib/data-fields/models/material-appearance.js +14 -0
  779. package/esm5/lib/data-fields/models/properties.js +2 -0
  780. package/esm5/lib/data-fields/models/template-appearance.js +15 -0
  781. package/esm5/lib/data-fields/models/validation.js +2 -0
  782. package/esm5/lib/data-fields/multichoice-field/abstract-multichoice-field.component.js +22 -0
  783. package/esm5/lib/data-fields/multichoice-field/models/multichoice-field.js +60 -0
  784. package/esm5/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.js +13 -0
  785. package/esm5/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.js +13 -0
  786. package/esm5/lib/data-fields/number-field/abstract-number-errors.component.js +49 -0
  787. package/esm5/lib/data-fields/number-field/abstract-number-field.component.js +23 -0
  788. package/esm5/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.js +54 -0
  789. package/esm5/lib/data-fields/number-field/models/number-field.js +137 -0
  790. package/esm5/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.js +11 -0
  791. package/esm5/lib/data-fields/public-api.js +73 -0
  792. package/esm5/lib/data-fields/task-ref-field/model/task-ref-field.js +11 -0
  793. package/esm5/lib/data-fields/text-field/abstract-text-errors.component.js +37 -0
  794. package/esm5/lib/data-fields/text-field/abstract-text-field.component.js +19 -0
  795. package/esm5/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.js +45 -0
  796. package/esm5/lib/data-fields/text-field/models/text-area-field.js +19 -0
  797. package/esm5/lib/data-fields/text-field/models/text-field.js +96 -0
  798. package/esm5/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.js +22 -0
  799. package/esm5/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.js +35 -0
  800. package/esm5/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.js +22 -0
  801. package/esm5/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.js +46 -0
  802. package/esm5/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.js +52 -0
  803. package/esm5/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.js +110 -0
  804. package/esm5/lib/data-fields/user-field/abstract-user-field.component.js +65 -0
  805. package/esm5/lib/data-fields/user-field/models/user-field.js +23 -0
  806. package/esm5/lib/data-fields/user-field/models/user-value.js +58 -0
  807. package/esm5/lib/dialog/components/alert-dialog/alert-dialog.component.js +43 -0
  808. package/esm5/lib/dialog/components/alert-dialog/alert-dialog.module.js +32 -0
  809. package/esm5/lib/dialog/components/confirm-dialog/confirm-dialog.component.js +57 -0
  810. package/esm5/lib/dialog/components/confirm-dialog/confirm-dialog.module.js +32 -0
  811. package/esm5/lib/dialog/components/prompt-dialog/prompt-dialog.component.js +47 -0
  812. package/esm5/lib/dialog/components/prompt-dialog/prompt-dialog.module.js +34 -0
  813. package/esm5/lib/dialog/dialog.module.js +33 -0
  814. package/esm5/lib/dialog/models/DialogData.js +2 -0
  815. package/esm5/lib/dialog/models/DialogResult.js +2 -0
  816. package/esm5/lib/dialog/models/abstract-dialog.js +23 -0
  817. package/esm5/lib/dialog/public-api.js +9 -0
  818. package/esm5/lib/dialog/services/dialog.service.js +84 -0
  819. package/esm5/lib/event/model/event-constants.js +8 -0
  820. package/esm5/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.js +2 -0
  821. package/esm5/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.js +2 -0
  822. package/esm5/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.js +2 -0
  823. package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.js +2 -0
  824. package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.js +2 -0
  825. package/esm5/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.js +2 -0
  826. package/esm5/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.js +2 -0
  827. package/esm5/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.js +2 -0
  828. package/esm5/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.js +2 -0
  829. package/esm5/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.js +2 -0
  830. package/esm5/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.js +2 -0
  831. package/esm5/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.js +2 -0
  832. package/esm5/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.js +2 -0
  833. package/esm5/lib/event/public-api.js +19 -0
  834. package/esm5/lib/event/services/event.service.js +60 -0
  835. package/esm5/lib/event/services/interfaces/changed-fields-map.js +2 -0
  836. package/esm5/lib/event-queue/model/queued-event.js +34 -0
  837. package/esm5/lib/event-queue/public-api.js +5 -0
  838. package/esm5/lib/event-queue/services/event-queue.service.js +66 -0
  839. package/esm5/lib/filter/filter.repository.js +145 -0
  840. package/esm5/lib/filter/models/case-search-request-body.js +2 -0
  841. package/esm5/lib/filter/models/filter-type.js +11 -0
  842. package/esm5/lib/filter/models/filter.js +71 -0
  843. package/esm5/lib/filter/models/filters-filter-injection-token.js +9 -0
  844. package/esm5/lib/filter/models/merge-operator.js +11 -0
  845. package/esm5/lib/filter/models/merged-filter-params.js +2 -0
  846. package/esm5/lib/filter/models/merged-filter.js +120 -0
  847. package/esm5/lib/filter/models/simple-filter.js +96 -0
  848. package/esm5/lib/filter/models/task-search-request-body.js +2 -0
  849. package/esm5/lib/filter/models/user-filter-constants.js +39 -0
  850. package/esm5/lib/filter/public-api.js +18 -0
  851. package/esm5/lib/filter/user-filters.service.js +357 -0
  852. package/esm5/lib/forms/email-submission/abstract-email-submission-form.component.js +33 -0
  853. package/esm5/lib/forms/forgotten-password/abstract-forgotten-password.component.js +37 -0
  854. package/esm5/lib/forms/has-form.js +2 -0
  855. package/esm5/lib/forms/login/abstract-login-form.component.js +61 -0
  856. package/esm5/lib/forms/models/abstract-registration.component.js +106 -0
  857. package/esm5/lib/forms/models/password.validator.js +21 -0
  858. package/esm5/lib/forms/public-api.js +7 -0
  859. package/esm5/lib/forms/registration/abstract-registration-form.component.js +42 -0
  860. package/esm5/lib/groups/public-api.js +3 -0
  861. package/esm5/lib/groups/services/active-group.service.js +107 -0
  862. package/esm5/lib/groups/services/next-group.service.js +135 -0
  863. package/esm5/lib/header/abstract-header-service.js +485 -0
  864. package/esm5/lib/header/abstract-header.component.js +171 -0
  865. package/esm5/lib/header/case-header/case-header.service.js +86 -0
  866. package/esm5/lib/header/case-header/case-menta-enum.js +9 -0
  867. package/esm5/lib/header/header-modes/abstract-header-mode.component.js +14 -0
  868. package/esm5/lib/header/header-modes/edit-mode/abstract-edit-mode.component.js +81 -0
  869. package/esm5/lib/header/header-modes/loading-mode/abstract-loading-mode.component.js +17 -0
  870. package/esm5/lib/header/header-modes/search-mode/abstract-search-mode.component.js +94 -0
  871. package/esm5/lib/header/header-modes/sort-mode/abstract-sort-mode.component.js +19 -0
  872. package/esm5/lib/header/header-state.js +53 -0
  873. package/esm5/lib/header/models/default-headers-token.js +3 -0
  874. package/esm5/lib/header/models/fields-group.js +2 -0
  875. package/esm5/lib/header/models/header-column.js +29 -0
  876. package/esm5/lib/header/models/header-mode.js +7 -0
  877. package/esm5/lib/header/models/header-type.js +7 -0
  878. package/esm5/lib/header/models/public-api.js +12 -0
  879. package/esm5/lib/header/models/user-changes/column-header-change.js +2 -0
  880. package/esm5/lib/header/models/user-changes/edit-change-description.js +2 -0
  881. package/esm5/lib/header/models/user-changes/header-change-description.js +2 -0
  882. package/esm5/lib/header/models/user-changes/header-change-type.js +20 -0
  883. package/esm5/lib/header/models/user-changes/header-change.js +2 -0
  884. package/esm5/lib/header/models/user-changes/mode-change-description.js +2 -0
  885. package/esm5/lib/header/models/user-changes/search-change-description.js +2 -0
  886. package/esm5/lib/header/models/user-changes/sort-change-description.js +2 -0
  887. package/esm5/lib/header/public-api.js +21 -0
  888. package/esm5/lib/header/services/overflow.service.js +112 -0
  889. package/esm5/lib/header/task-header/task-header.service.js +71 -0
  890. package/esm5/lib/header/task-header/task-meta-enum.js +11 -0
  891. package/esm5/lib/header/workflow-header/workflow-header.service.js +53 -0
  892. package/esm5/lib/header/workflow-header/workflow-meta-enum.js +10 -0
  893. package/esm5/lib/legal/legal-notice/abstract-legal-notice.component.js +26 -0
  894. package/esm5/lib/legal/public-api.js +2 -0
  895. package/esm5/lib/logger/models/log-entry.js +68 -0
  896. package/esm5/lib/logger/public-api.js +10 -0
  897. package/esm5/lib/logger/publishers/console-log-publisher.js +36 -0
  898. package/esm5/lib/logger/publishers/local-storage-log-publisher.js +45 -0
  899. package/esm5/lib/logger/publishers/log-publisher.js +15 -0
  900. package/esm5/lib/logger/services/log-level.js +10 -0
  901. package/esm5/lib/logger/services/log-publisher.service.js +66 -0
  902. package/esm5/lib/logger/services/logger.service.js +107 -0
  903. package/esm5/lib/material/material.module.js +112 -0
  904. package/esm5/lib/moment/public-api.js +2 -0
  905. package/esm5/lib/moment/time-formats.js +26 -0
  906. package/esm5/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.js +40 -0
  907. package/esm5/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.js +37 -0
  908. package/esm5/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.js +5 -0
  909. package/esm5/lib/navigation/model/filter-case-injection-token.js +6 -0
  910. package/esm5/lib/navigation/model/group-navigation-component-resolver-component-injection-token.js +6 -0
  911. package/esm5/lib/navigation/model/group-navigation-constants.js +59 -0
  912. package/esm5/lib/navigation/model/group-navigation-item-label.js +2 -0
  913. package/esm5/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.js +142 -0
  914. package/esm5/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.js +17 -0
  915. package/esm5/lib/navigation/navigation-rail/abstract-navigation-rail.component.js +38 -0
  916. package/esm5/lib/navigation/navigation-tree/abstract-navigation-tree.component.js +415 -0
  917. package/esm5/lib/navigation/public-api.js +19 -0
  918. package/esm5/lib/navigation/quick-panel/components/abstract-quick-panel.component.js +30 -0
  919. package/esm5/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.js +14 -0
  920. package/esm5/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.js +59 -0
  921. package/esm5/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.js +24 -0
  922. package/esm5/lib/navigation/quick-panel/components/paper-view.service.js +44 -0
  923. package/esm5/lib/navigation/quick-panel/public-api.js +8 -0
  924. package/esm5/lib/navigation/utility/filter-extraction.service.js +89 -0
  925. package/esm5/lib/navigation/utility/navigation-item-task-utility-methods.js +78 -0
  926. package/esm5/lib/panel/abstract/featured-value.js +2 -0
  927. package/esm5/lib/panel/abstract/panel-with-header-binding.js +50 -0
  928. package/esm5/lib/panel/abstract/panel-with-immediate-data.js +67 -0
  929. package/esm5/lib/panel/abstract/tabbed-virtual-scroll.component.js +35 -0
  930. package/esm5/lib/panel/abstract-panel.component.js +46 -0
  931. package/esm5/lib/panel/case-panel/abstract-case-panel.component.js +94 -0
  932. package/esm5/lib/panel/immediate/abstract-immediate-filter-text-content.component.js +45 -0
  933. package/esm5/lib/panel/immediate/abstract-immediate-filter-text.component.js +23 -0
  934. package/esm5/lib/panel/immediate/model/filter-text-injection-token.js +6 -0
  935. package/esm5/lib/panel/public-api.js +15 -0
  936. package/esm5/lib/panel/task-panel/abstract-task-panel.component.js +302 -0
  937. package/esm5/lib/panel/task-panel/models/disable-functions.js +3 -0
  938. package/esm5/lib/panel/task-panel-list/abstract-task-list.component.js +99 -0
  939. package/esm5/lib/panel/task-panel-list/task-panel-data/task-panel-data.js +2 -0
  940. package/esm5/lib/panel/workflow-panel/abstract-workflow-panel.component.js +109 -0
  941. package/esm5/lib/process/net.js +155 -0
  942. package/esm5/lib/process/netRole.js +2 -0
  943. package/esm5/lib/process/permissions.js +12 -0
  944. package/esm5/lib/process/petri-net-reference-with-permissions.js +2 -0
  945. package/esm5/lib/process/process.service.js +325 -0
  946. package/esm5/lib/process/public-api.js +8 -0
  947. package/esm5/lib/process/public-process.service.js +34 -0
  948. package/esm5/lib/process/rolesAndPermissions.js +2 -0
  949. package/esm5/lib/process/transaction.js +2 -0
  950. package/esm5/lib/process/transition.js +2 -0
  951. package/esm5/lib/public/factories/get-net-and-create-case.js +22 -0
  952. package/esm5/lib/public/factories/public-factory-resolver.js +13 -0
  953. package/esm5/lib/public/factories/public-search-factory.js +17 -0
  954. package/esm5/lib/public/public-api.js +5 -0
  955. package/esm5/lib/public/services/public-url-resolver.service.js +26 -0
  956. package/esm5/lib/resources/abstract-endpoint/abstract-resource.service.js +85 -0
  957. package/esm5/lib/resources/abstract-endpoint/count-service.js +2 -0
  958. package/esm5/lib/resources/engine-endpoint/case-resource.service.js +149 -0
  959. package/esm5/lib/resources/engine-endpoint/dashboard-resource.service.js +37 -0
  960. package/esm5/lib/resources/engine-endpoint/petri-net-resource.service.js +174 -0
  961. package/esm5/lib/resources/engine-endpoint/public/public-case-resource.service.js +52 -0
  962. package/esm5/lib/resources/engine-endpoint/public/public-petri-net-resource.service.js +120 -0
  963. package/esm5/lib/resources/engine-endpoint/public/public-task-resource.service.js +238 -0
  964. package/esm5/lib/resources/engine-endpoint/task-resource.service.js +327 -0
  965. package/esm5/lib/resources/engine-endpoint/user-resource.service.js +210 -0
  966. package/esm5/lib/resources/interface/assigned-user-policy.js +2 -0
  967. package/esm5/lib/resources/interface/author.js +2 -0
  968. package/esm5/lib/resources/interface/authority.js +2 -0
  969. package/esm5/lib/resources/interface/case-get-request-body.js +2 -0
  970. package/esm5/lib/resources/interface/case.js +2 -0
  971. package/esm5/lib/resources/interface/changed-field-container.js +2 -0
  972. package/esm5/lib/resources/interface/count.js +2 -0
  973. package/esm5/lib/resources/interface/create-case-request-body.js +2 -0
  974. package/esm5/lib/resources/interface/data-group-layout.js +59 -0
  975. package/esm5/lib/resources/interface/data-groups.js +19 -0
  976. package/esm5/lib/resources/interface/event-outcome.js +2 -0
  977. package/esm5/lib/resources/interface/field-alignment.js +10 -0
  978. package/esm5/lib/resources/interface/fields.js +2 -0
  979. package/esm5/lib/resources/interface/file-resource.js +2 -0
  980. package/esm5/lib/resources/interface/group.js +2 -0
  981. package/esm5/lib/resources/interface/immediate-data.js +2 -0
  982. package/esm5/lib/resources/interface/link.js +2 -0
  983. package/esm5/lib/resources/interface/message-resource.js +2 -0
  984. package/esm5/lib/resources/interface/page.js +2 -0
  985. package/esm5/lib/resources/interface/pagination.js +2 -0
  986. package/esm5/lib/resources/interface/petri-net-object-id.js +2 -0
  987. package/esm5/lib/resources/interface/petri-net-reference.js +2 -0
  988. package/esm5/lib/resources/interface/petri-net-request-body.js +2 -0
  989. package/esm5/lib/resources/interface/petri-net.js +2 -0
  990. package/esm5/lib/resources/interface/preferences.js +2 -0
  991. package/esm5/lib/resources/interface/process-role.js +2 -0
  992. package/esm5/lib/resources/interface/response-data.js +2 -0
  993. package/esm5/lib/resources/interface/task-layout.js +2 -0
  994. package/esm5/lib/resources/interface/task-reference.js +2 -0
  995. package/esm5/lib/resources/interface/task-set-data-request-body.js +2 -0
  996. package/esm5/lib/resources/interface/task.js +2 -0
  997. package/esm5/lib/resources/interface/user-process-role.js +2 -0
  998. package/esm5/lib/resources/interface/user-resource-small.js +2 -0
  999. package/esm5/lib/resources/interface/user-resource.js +2 -0
  1000. package/esm5/lib/resources/public-api.js +46 -0
  1001. package/esm5/lib/resources/resource-provider.service.js +174 -0
  1002. package/esm5/lib/resources/types/nae-date-type.js +5 -0
  1003. package/esm5/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.js +42 -0
  1004. package/esm5/lib/routing/public-api.js +7 -0
  1005. package/esm5/lib/routing/redirect-service/redirect.service.js +130 -0
  1006. package/esm5/lib/routing/routing-builder/routing-builder.service.js +207 -0
  1007. package/esm5/lib/routing/view-service/model/view-entry.js +2 -0
  1008. package/esm5/lib/routing/view-service/view.service.js +38 -0
  1009. package/esm5/lib/search/advanced-search-component/abstract-advanced-search.component.js +64 -0
  1010. package/esm5/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.js +40 -0
  1011. package/esm5/lib/search/category-factory/category-factory.js +96 -0
  1012. package/esm5/lib/search/category-factory/category-resolver.service.js +152 -0
  1013. package/esm5/lib/search/category-factory/category-serialisation-pair.js +2 -0
  1014. package/esm5/lib/search/category-factory/default-categories-factories.js +67 -0
  1015. package/esm5/lib/search/category-factory/default-search-categories.module.js +54 -0
  1016. package/esm5/lib/search/category-factory/optional-dependencies.js +2 -0
  1017. package/esm5/lib/search/category-factory/search-categories-injection-token.js +24 -0
  1018. package/esm5/lib/search/fulltext-search-component/abstract-fulltext-search.component.js +20 -0
  1019. package/esm5/lib/search/header-search-service/header-search.service.js +250 -0
  1020. package/esm5/lib/search/models/base-filter-injection-token.js +6 -0
  1021. package/esm5/lib/search/models/base-filter.js +2 -0
  1022. package/esm5/lib/search/models/boolean-operator.js +10 -0
  1023. package/esm5/lib/search/models/category/autocomplete-category.js +155 -0
  1024. package/esm5/lib/search/models/category/autocomplete-options.js +2 -0
  1025. package/esm5/lib/search/models/category/case/case-author.js +29 -0
  1026. package/esm5/lib/search/models/category/case/case-creation-date-time.js +51 -0
  1027. package/esm5/lib/search/models/category/case/case-creation-date.js +51 -0
  1028. package/esm5/lib/search/models/category/case/case-dataset.js +444 -0
  1029. package/esm5/lib/search/models/category/case/case-net-attribute-autocomplete-category.js +28 -0
  1030. package/esm5/lib/search/models/category/case/case-process.js +84 -0
  1031. package/esm5/lib/search/models/category/case/case-role.js +32 -0
  1032. package/esm5/lib/search/models/category/case/case-search.enum.js +15 -0
  1033. package/esm5/lib/search/models/category/case/case-simple-dataset.js +153 -0
  1034. package/esm5/lib/search/models/category/case/case-string-id.js +35 -0
  1035. package/esm5/lib/search/models/category/case/case-task.js +32 -0
  1036. package/esm5/lib/search/models/category/case/case-title.js +37 -0
  1037. package/esm5/lib/search/models/category/case/case-visual-id.js +31 -0
  1038. package/esm5/lib/search/models/category/categories.js +24 -0
  1039. package/esm5/lib/search/models/category/category.js +585 -0
  1040. package/esm5/lib/search/models/category/name-id-pair.js +2 -0
  1041. package/esm5/lib/search/models/category/net-attribute-autocomplete-category.js +66 -0
  1042. package/esm5/lib/search/models/category/net-attribute-pair.js +2 -0
  1043. package/esm5/lib/search/models/category/no-configuration-autocomplete-category.js +48 -0
  1044. package/esm5/lib/search/models/category/no-configuration-category.js +51 -0
  1045. package/esm5/lib/search/models/category/no-configuration-user-autocomplete-category.js +33 -0
  1046. package/esm5/lib/search/models/category/search-autocomplete-option.js +2 -0
  1047. package/esm5/lib/search/models/category/search-input-type.js +14 -0
  1048. package/esm5/lib/search/models/category/task/task-assignee.js +29 -0
  1049. package/esm5/lib/search/models/category/task/task-net-attribute-autocomplete-category.js +28 -0
  1050. package/esm5/lib/search/models/category/task/task-process.js +61 -0
  1051. package/esm5/lib/search/models/category/task/task-role.js +31 -0
  1052. package/esm5/lib/search/models/category/task/task-task.js +31 -0
  1053. package/esm5/lib/search/models/category/user-autocomplete.js +64 -0
  1054. package/esm5/lib/search/models/component-configuration/search-component-configuration-injection-token.js +8 -0
  1055. package/esm5/lib/search/models/component-configuration/search-component-configuration.js +2 -0
  1056. package/esm5/lib/search/models/component-configuration/search-mode.js +9 -0
  1057. package/esm5/lib/search/models/configuration-input.js +71 -0
  1058. package/esm5/lib/search/models/datafield-map-key.js +91 -0
  1059. package/esm5/lib/search/models/escape-result.js +2 -0
  1060. package/esm5/lib/search/models/operator/equals-date-time.js +31 -0
  1061. package/esm5/lib/search/models/operator/equals-date.js +31 -0
  1062. package/esm5/lib/search/models/operator/equals.js +25 -0
  1063. package/esm5/lib/search/models/operator/in-range-date-time.js +47 -0
  1064. package/esm5/lib/search/models/operator/in-range-date.js +46 -0
  1065. package/esm5/lib/search/models/operator/in-range.js +26 -0
  1066. package/esm5/lib/search/models/operator/is-null.js +75 -0
  1067. package/esm5/lib/search/models/operator/less-than-date-time.js +32 -0
  1068. package/esm5/lib/search/models/operator/less-than-date.js +32 -0
  1069. package/esm5/lib/search/models/operator/less-than-equal-date-time.js +32 -0
  1070. package/esm5/lib/search/models/operator/less-than-equal-date.js +31 -0
  1071. package/esm5/lib/search/models/operator/less-than-equal.js +21 -0
  1072. package/esm5/lib/search/models/operator/less-than.js +21 -0
  1073. package/esm5/lib/search/models/operator/like.js +33 -0
  1074. package/esm5/lib/search/models/operator/more-than-date-time.js +34 -0
  1075. package/esm5/lib/search/models/operator/more-than-date.js +34 -0
  1076. package/esm5/lib/search/models/operator/more-than-equal-date-time.js +32 -0
  1077. package/esm5/lib/search/models/operator/more-than-equal-date.js +32 -0
  1078. package/esm5/lib/search/models/operator/more-than-equal.js +21 -0
  1079. package/esm5/lib/search/models/operator/more-than.js +21 -0
  1080. package/esm5/lib/search/models/operator/not-equals-date-time.js +29 -0
  1081. package/esm5/lib/search/models/operator/not-equals-date.js +32 -0
  1082. package/esm5/lib/search/models/operator/not-equals.js +35 -0
  1083. package/esm5/lib/search/models/operator/operator.js +134 -0
  1084. package/esm5/lib/search/models/operator/operators.js +31 -0
  1085. package/esm5/lib/search/models/operator/substring.js +31 -0
  1086. package/esm5/lib/search/models/operator-template-part-type.js +15 -0
  1087. package/esm5/lib/search/models/operator-template-part.js +42 -0
  1088. package/esm5/lib/search/models/persistance/filter-metadata-allowed-nets.js +2 -0
  1089. package/esm5/lib/search/models/persistance/filter-metadata.js +2 -0
  1090. package/esm5/lib/search/models/persistance/filter-text-segment.js +2 -0
  1091. package/esm5/lib/search/models/persistance/generator-metadata.js +2 -0
  1092. package/esm5/lib/search/models/persistance/saved-filter-metadata.js +2 -0
  1093. package/esm5/lib/search/models/predicate/clause-predicate.js +95 -0
  1094. package/esm5/lib/search/models/predicate/editable-clause-predicate-with-generators.js +79 -0
  1095. package/esm5/lib/search/models/predicate/editable-clause-predicate.js +146 -0
  1096. package/esm5/lib/search/models/predicate/editable-elementary-predicate.js +30 -0
  1097. package/esm5/lib/search/models/predicate/editable-predicate-with-generator.js +47 -0
  1098. package/esm5/lib/search/models/predicate/editable-predicate.js +32 -0
  1099. package/esm5/lib/search/models/predicate/elementary-predicate.js +24 -0
  1100. package/esm5/lib/search/models/predicate/predicate-with-generator.js +114 -0
  1101. package/esm5/lib/search/models/predicate/predicate.js +110 -0
  1102. package/esm5/lib/search/models/predicate-removal-event.js +2 -0
  1103. package/esm5/lib/search/models/query/query.js +83 -0
  1104. package/esm5/lib/search/models/search-index.js +76 -0
  1105. package/esm5/lib/search/models/wrap-result.js +2 -0
  1106. package/esm5/lib/search/operator-service/operator-resolver.service.js +113 -0
  1107. package/esm5/lib/search/operator-service/operator.service.js +41 -0
  1108. package/esm5/lib/search/public-api.js +107 -0
  1109. package/esm5/lib/search/search-clause-component/abstract-search-clause.component.js +67 -0
  1110. package/esm5/lib/search/search-component/abstract-search.component.js +201 -0
  1111. package/esm5/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.js +82 -0
  1112. package/esm5/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +40 -0
  1113. package/esm5/lib/search/search-operand-input-component/abstract-search-operand-input.component.js +113 -0
  1114. package/esm5/lib/search/search-predicate-component/abstract-search-predicate.component.js +162 -0
  1115. package/esm5/lib/search/search-service/search.service.js +405 -0
  1116. package/esm5/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.js +166 -0
  1117. package/esm5/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.js +26 -0
  1118. package/esm5/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.js +2 -0
  1119. package/esm5/lib/side-menu/content-components/filter-selector/model/filtered-array.js +37 -0
  1120. package/esm5/lib/side-menu/content-components/import-net/abstract-import-net.component.js +152 -0
  1121. package/esm5/lib/side-menu/content-components/injection-tokens.js +8 -0
  1122. package/esm5/lib/side-menu/content-components/load-filter/abstract-load-filter.component.js +47 -0
  1123. package/esm5/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.js +2 -0
  1124. package/esm5/lib/side-menu/content-components/new-case/abstract-new-case.component.js +264 -0
  1125. package/esm5/lib/side-menu/content-components/new-case/model/new-case-injection-data.js +2 -0
  1126. package/esm5/lib/side-menu/content-components/option-selector/abstract-option-selector.component.js +31 -0
  1127. package/esm5/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.js +2 -0
  1128. package/esm5/lib/side-menu/content-components/public-api.js +20 -0
  1129. package/esm5/lib/side-menu/content-components/save-filter/abstract-save-filter.component.js +43 -0
  1130. package/esm5/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.js +2 -0
  1131. package/esm5/lib/side-menu/content-components/user-assign/abstract-user-assign.component.js +74 -0
  1132. package/esm5/lib/side-menu/content-components/user-assign/model/user-list-injected-data.js +2 -0
  1133. package/esm5/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.js +113 -0
  1134. package/esm5/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.js +15 -0
  1135. package/esm5/lib/side-menu/models/portal-wrapper.js +23 -0
  1136. package/esm5/lib/side-menu/models/side-menu-control.js +47 -0
  1137. package/esm5/lib/side-menu/models/side-menu-event.js +2 -0
  1138. package/esm5/lib/side-menu/models/side-menu-injection-data.js +2 -0
  1139. package/esm5/lib/side-menu/models/side-menu-ref.js +26 -0
  1140. package/esm5/lib/side-menu/models/side-menu-size.js +7 -0
  1141. package/esm5/lib/side-menu/net-version-visible-injection-token.js +4 -0
  1142. package/esm5/lib/side-menu/public-api.js +15 -0
  1143. package/esm5/lib/side-menu/services/side-menu.service.js +90 -0
  1144. package/esm5/lib/side-menu/side-menu-container/abstract-side-menu-container.component.js +36 -0
  1145. package/esm5/lib/side-menu/side-menu-injection-token.js +3 -0
  1146. package/esm5/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.js +31 -0
  1147. package/esm5/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.js +31 -0
  1148. package/esm5/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.js +31 -0
  1149. package/esm5/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.js +31 -0
  1150. package/esm5/lib/snack-bar/models/abstract-snack-bar.js +20 -0
  1151. package/esm5/lib/snack-bar/models/injection-token-snackbar.js +4 -0
  1152. package/esm5/lib/snack-bar/models/snack-bar-enums.js +12 -0
  1153. package/esm5/lib/snack-bar/models/snack-bar-injection-data.js +2 -0
  1154. package/esm5/lib/snack-bar/public-api.js +15 -0
  1155. package/esm5/lib/snack-bar/services/snack-bar.service.js +105 -0
  1156. package/esm5/lib/snack-bar/snack-bar.module.js +37 -0
  1157. package/esm5/lib/tabs/classes/opened-tab.js +50 -0
  1158. package/esm5/lib/tabs/classes/tab-view.js +283 -0
  1159. package/esm5/lib/tabs/interfaces.js +2 -0
  1160. package/esm5/lib/tabs/public-api.js +6 -0
  1161. package/esm5/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.js +21 -0
  1162. package/esm5/lib/tabs/tab-data-injection-token/tab-data-injection-token.js +8 -0
  1163. package/esm5/lib/tabs/tab-view/abstract-tab-view.component.js +71 -0
  1164. package/esm5/lib/task/interfaces/task-operations.js +2 -0
  1165. package/esm5/lib/task/models/null-task-operations.js +30 -0
  1166. package/esm5/lib/task/models/subject-task-operations.js +76 -0
  1167. package/esm5/lib/task/models/task-operations-injection-token.js +3 -0
  1168. package/esm5/lib/task/models/task-set-data-request-context.js +2 -0
  1169. package/esm5/lib/task/public-api.js +19 -0
  1170. package/esm5/lib/task/services/assign-policy.service.js +189 -0
  1171. package/esm5/lib/task/services/assign-task.service.js +200 -0
  1172. package/esm5/lib/task/services/cancel-task.service.js +198 -0
  1173. package/esm5/lib/task/services/data-focus-policy.service.js +40 -0
  1174. package/esm5/lib/task/services/delegate-task.service.js +196 -0
  1175. package/esm5/lib/task/services/finish-policy.service.js +85 -0
  1176. package/esm5/lib/task/services/finish-task.service.js +215 -0
  1177. package/esm5/lib/task/services/selected-case.service.js +48 -0
  1178. package/esm5/lib/task/services/task-data.service.js +597 -0
  1179. package/esm5/lib/task/services/task-handling-service.js +68 -0
  1180. package/esm5/lib/task/services/task-request-state.service.js +118 -0
  1181. package/esm5/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.js +41 -0
  1182. package/esm5/lib/task-content/model/async-rendering-configuration-injection-token.js +8 -0
  1183. package/esm5/lib/task-content/model/async-rendering-configuration.js +2 -0
  1184. package/esm5/lib/task-content/model/datafield-grid-layout-element.js +2 -0
  1185. package/esm5/lib/task-content/model/field-type-resource.js +23 -0
  1186. package/esm5/lib/task-content/model/policy.js +31 -0
  1187. package/esm5/lib/task-content/model/resource-interface.js +2 -0
  1188. package/esm5/lib/task-content/model/split-data-group.js +2 -0
  1189. package/esm5/lib/task-content/model/subgrid.js +247 -0
  1190. package/esm5/lib/task-content/model/task-content-element-type.js +19 -0
  1191. package/esm5/lib/task-content/model/task-event-notification.js +15 -0
  1192. package/esm5/lib/task-content/model/task-event.js +10 -0
  1193. package/esm5/lib/task-content/public-api.js +21 -0
  1194. package/esm5/lib/task-content/services/field-converter.service.js +350 -0
  1195. package/esm5/lib/task-content/services/single-task-content.service.js +85 -0
  1196. package/esm5/lib/task-content/services/task-content.service.js +314 -0
  1197. package/esm5/lib/task-content/services/task-event.service.js +54 -0
  1198. package/esm5/lib/task-content/services/unlimited-task-content.service.js +77 -0
  1199. package/esm5/lib/task-content/task-content/abstract-task-content.component.js +687 -0
  1200. package/esm5/lib/toolbar/abstract-toolbar.component.js +24 -0
  1201. package/esm5/lib/toolbar/public-api.js +2 -0
  1202. package/esm5/lib/translate/language.service.js +89 -0
  1203. package/esm5/lib/translate/public-api.js +3 -0
  1204. package/esm5/lib/translate/translate-interceptor.js +25 -0
  1205. package/esm5/lib/translate/translate-lib.module.js +42 -0
  1206. package/esm5/lib/user/components/user-card/abstract-user-card.component.js +58 -0
  1207. package/esm5/lib/user/models/iuser.js +2 -0
  1208. package/esm5/lib/user/models/public-api.js +6 -0
  1209. package/esm5/lib/user/models/user.js +51 -0
  1210. package/esm5/lib/user/models/view-id-injection-tokens.js +4 -0
  1211. package/esm5/lib/user/profile/abstract-profile.component.js +40 -0
  1212. package/esm5/lib/user/public-api.js +12 -0
  1213. package/esm5/lib/user/services/user-comparator.service.js +28 -0
  1214. package/esm5/lib/user/services/user-list.service.js +220 -0
  1215. package/esm5/lib/user/services/user-preference.service.js +164 -0
  1216. package/esm5/lib/user/services/user.service.js +224 -0
  1217. package/esm5/lib/user/services/view-id.service.js +36 -0
  1218. package/esm5/lib/utility/array-to-observable.js +10 -0
  1219. package/esm5/lib/utility/call-chain/after-action.js +19 -0
  1220. package/esm5/lib/utility/call-chain/call-chain.service.js +36 -0
  1221. package/esm5/lib/utility/clear-time-information.js +11 -0
  1222. package/esm5/lib/utility/destroy-subscription.js +10 -0
  1223. package/esm5/lib/utility/get-field.js +48 -0
  1224. package/esm5/lib/utility/get-immediate-data.js +9 -0
  1225. package/esm5/lib/utility/grid-layout/grid-layout-helper.js +105 -0
  1226. package/esm5/lib/utility/grid-layout/model/grid-element-with-item.js +2 -0
  1227. package/esm5/lib/utility/grid-layout/model/grid-element.js +2 -0
  1228. package/esm5/lib/utility/grid-layout/model/grid-filler.js +52 -0
  1229. package/esm5/lib/utility/incrementing-counter.js +23 -0
  1230. package/esm5/lib/utility/loading-emitter.js +28 -0
  1231. package/esm5/lib/utility/loading-with-filter-emitter.js +41 -0
  1232. package/esm5/lib/utility/navigation-item-task-filter-factory.js +11 -0
  1233. package/esm5/lib/utility/navigation-item-task-search-categories-factory.js +35 -0
  1234. package/esm5/lib/utility/of-void.js +12 -0
  1235. package/esm5/lib/utility/pagination/load-all-pages.js +47 -0
  1236. package/esm5/lib/utility/pagination/page-has-content.js +8 -0
  1237. package/esm5/lib/utility/process-message-response.js +17 -0
  1238. package/esm5/lib/utility/public-api.js +47 -0
  1239. package/esm5/lib/utility/refresh-tree.js +9 -0
  1240. package/esm5/lib/utility/result-with-after-actions.js +34 -0
  1241. package/esm5/lib/utility/service/case-list-font-color.service.js +47 -0
  1242. package/esm5/lib/utility/service/spinner-overlay.service.js +51 -0
  1243. package/esm5/lib/utility/stop-propagation.js +5 -0
  1244. package/esm5/lib/utility/tests/mocks/mock-authentication-method-service.js +19 -0
  1245. package/esm5/lib/utility/tests/mocks/mock-authentication.service.js +33 -0
  1246. package/esm5/lib/utility/tests/mocks/mock-endpoint.js +46 -0
  1247. package/esm5/lib/utility/tests/mocks/mock-sign-up.service.js +31 -0
  1248. package/esm5/lib/utility/tests/mocks/mock-user-autocomplete-value.js +15 -0
  1249. package/esm5/lib/utility/tests/mocks/mock-user-preference.service.js +53 -0
  1250. package/esm5/lib/utility/tests/mocks/mock-user-resource.service.js +52 -0
  1251. package/esm5/lib/utility/tests/search-category-mock-dependencies.js +21 -0
  1252. package/esm5/lib/utility/tests/test-config.js +428 -0
  1253. package/esm5/lib/utility/tests/test-factory-methods.js +21 -0
  1254. package/esm5/lib/utility/tests/test-mock-dependencies.module.js +35 -0
  1255. package/esm5/lib/utility/tests/test-view-service.js +28 -0
  1256. package/esm5/lib/utility/tests/utility/configure-category.js +14 -0
  1257. package/esm5/lib/utility/tests/utility/create-mock-case-outcome.js +19 -0
  1258. package/esm5/lib/utility/tests/utility/create-mock-case.js +40 -0
  1259. package/esm5/lib/utility/tests/utility/create-mock-datagroup.js +39 -0
  1260. package/esm5/lib/utility/tests/utility/create-mock-field.js +47 -0
  1261. package/esm5/lib/utility/tests/utility/create-mock-get-data-outcome.js +20 -0
  1262. package/esm5/lib/utility/tests/utility/create-mock-immediate-data.js +17 -0
  1263. package/esm5/lib/utility/tests/utility/create-mock-net.js +34 -0
  1264. package/esm5/lib/utility/tests/utility/create-mock-page.js +24 -0
  1265. package/esm5/lib/utility/tests/utility/create-mock-petri-net-outcome.js +16 -0
  1266. package/esm5/lib/utility/tests/utility/create-mock-set-data-outcome.js +24 -0
  1267. package/esm5/lib/utility/tests/utility/create-mock-task-outcome.js +22 -0
  1268. package/esm5/lib/utility/tests/utility/create-mock-task.js +38 -0
  1269. package/esm5/lib/view/abstract/page-load-request-context.js +34 -0
  1270. package/esm5/lib/view/abstract/sortable-view.js +65 -0
  1271. package/esm5/lib/view/abstract/view-with-headers.js +27 -0
  1272. package/esm5/lib/view/case-view/abstract-case-view.js +47 -0
  1273. package/esm5/lib/view/case-view/components/case-list/abstract-case-list.component.js +92 -0
  1274. package/esm5/lib/view/case-view/models/case-page-load-request-result.js +2 -0
  1275. package/esm5/lib/view/case-view/models/case-view-params.js +2 -0
  1276. package/esm5/lib/view/case-view/models/new-case-configuration-injection-token.js +7 -0
  1277. package/esm5/lib/view/case-view/models/new-case-configuration.js +2 -0
  1278. package/esm5/lib/view/case-view/service/case-view-service.js +300 -0
  1279. package/esm5/lib/view/case-view/tabbed-case-view.js +75 -0
  1280. package/esm5/lib/view/public-api.js +42 -0
  1281. package/esm5/lib/view/task-view/abstract-task-view.js +18 -0
  1282. package/esm5/lib/view/task-view/models/injected-tabbed-task-view-data.js +2 -0
  1283. package/esm5/lib/view/task-view/models/injection-token-task-endpoint.js +6 -0
  1284. package/esm5/lib/view/task-view/models/task-endpoint.js +9 -0
  1285. package/esm5/lib/view/task-view/models/task-page-load-request-result.js +2 -0
  1286. package/esm5/lib/view/task-view/models/task-view-configuration-injection-token.js +20 -0
  1287. package/esm5/lib/view/task-view/models/task-view-configuration.js +2 -0
  1288. package/esm5/lib/view/task-view/models/task-view-params.js +2 -0
  1289. package/esm5/lib/view/task-view/service/task-view.service.js +333 -0
  1290. package/esm5/lib/view/task-view/tabbed-task-view.js +27 -0
  1291. package/esm5/lib/view/tree-case-view/model/tree-petriflow-identifiers.js +43 -0
  1292. package/esm5/lib/view/tree-case-view/tree-case-view.service.js +19 -0
  1293. package/esm5/lib/view/tree-case-view/tree-component/abstract-tree.component.js +165 -0
  1294. package/esm5/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.js +16 -0
  1295. package/esm5/lib/view/tree-case-view/tree-component/case-tree.service.js +899 -0
  1296. package/esm5/lib/view/tree-case-view/tree-component/model/case-tree-node.js +106 -0
  1297. package/esm5/lib/view/tree-case-view/tree-component/model/case-tree-path.js +2 -0
  1298. package/esm5/lib/view/tree-case-view/tree-component/model/expansion-tree.js +2 -0
  1299. package/esm5/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.js +16 -0
  1300. package/esm5/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.js +66 -0
  1301. package/esm5/lib/view/tree-case-view/tree-task-content/tree-task-content.service.js +308 -0
  1302. package/esm5/lib/view/workflow-view/abstract-workflow-view.component.js +74 -0
  1303. package/esm5/lib/view/workflow-view/models/injection-token-workflow-service.js +10 -0
  1304. package/esm5/lib/view/workflow-view/workflow-view.service.js +232 -0
  1305. package/esm5/netgrif-components-core.js +20 -0
  1306. package/esm5/public-api.js +45 -0
  1307. package/fesm2015/netgrif-components-core.js +28627 -0
  1308. package/fesm2015/netgrif-components-core.js.map +1 -0
  1309. package/fesm5/netgrif-components-core.js +31716 -0
  1310. package/fesm5/netgrif-components-core.js.map +1 -0
  1311. package/lib/admin/public-api.d.ts +6 -0
  1312. package/lib/admin/role-assignment/abstract-role-assignment.d.ts +31 -0
  1313. package/lib/admin/role-assignment/services/ProcessList.d.ts +43 -0
  1314. package/lib/admin/role-assignment/services/role-assignment.service.d.ts +16 -0
  1315. package/lib/admin/user-invite/abstract-user-invite.component.d.ts +30 -0
  1316. package/lib/admin/user-invite/services/organization-list.service.d.ts +16 -0
  1317. package/lib/admin/user-invite/services/user-invite.service.d.ts +9 -0
  1318. package/lib/allowed-nets/public-api.d.ts +3 -0
  1319. package/lib/allowed-nets/services/allowed-nets.service.d.ts +45 -0
  1320. package/lib/allowed-nets/services/base-allowed-nets.service.d.ts +27 -0
  1321. package/lib/allowed-nets/services/factory/allowed-nets-service-factory.d.ts +59 -0
  1322. package/lib/authentication/anonymous/anonymous.service.d.ts +18 -0
  1323. package/lib/authentication/authentication.factory.d.ts +5 -0
  1324. package/lib/authentication/authentication.module.d.ts +2 -0
  1325. package/lib/authentication/components/abstract-authentication-overlay.d.ts +21 -0
  1326. package/lib/authentication/models/credentials.d.ts +4 -0
  1327. package/lib/authentication/models/public-api.d.ts +3 -0
  1328. package/lib/authentication/models/transformer.d.ts +3 -0
  1329. package/lib/authentication/models/user.transformer.d.ts +8 -0
  1330. package/lib/authentication/public-api.d.ts +8 -0
  1331. package/lib/authentication/services/anonymous-authentication-interceptor.d.ts +8 -0
  1332. package/lib/authentication/services/authentication/authentication.service.d.ts +23 -0
  1333. package/lib/authentication/services/authentication-interceptor.d.ts +12 -0
  1334. package/lib/authentication/services/authentication-method.service.d.ts +8 -0
  1335. package/lib/authentication/services/guard/authentication-guard.service.d.ts +11 -0
  1336. package/lib/authentication/services/methods/basic-authentication/basic-authentication.service.d.ts +13 -0
  1337. package/lib/authentication/services/methods/null-authentication/null-authentication.service.d.ts +9 -0
  1338. package/lib/authentication/services/public-api.d.ts +5 -0
  1339. package/lib/authentication/session/null-storage.d.ts +9 -0
  1340. package/lib/authentication/session/public-api.d.ts +1 -0
  1341. package/lib/authentication/session/services/session.service.d.ts +35 -0
  1342. package/lib/authentication/sign-up/models/user-invitation-request.d.ts +5 -0
  1343. package/lib/authentication/sign-up/models/user-registration-request.d.ts +6 -0
  1344. package/lib/authentication/sign-up/public-api.d.ts +4 -0
  1345. package/lib/authentication/sign-up/services/sign-up.service.d.ts +29 -0
  1346. package/lib/authentication/sign-up/sign-up.module.d.ts +2 -0
  1347. package/lib/authorization/authority/authority-guard.service.d.ts +16 -0
  1348. package/lib/authorization/group/group-guard.service.d.ts +19 -0
  1349. package/lib/authorization/permission/permission.service.d.ts +22 -0
  1350. package/lib/authorization/public-api.d.ts +4 -0
  1351. package/lib/authorization/role/role-guard.service.d.ts +29 -0
  1352. package/lib/changed-fields/public-api.d.ts +1 -0
  1353. package/lib/changed-fields/services/changed-fields.service.d.ts +12 -0
  1354. package/lib/configuration/configuration.service.d.ts +69 -0
  1355. package/lib/configuration/public-api.d.ts +1 -0
  1356. package/lib/covalent/covalent.module.d.ts +2 -0
  1357. package/lib/currency/currency.module.d.ts +3 -0
  1358. package/lib/dashboard/cards/count-card/abstract-count-card.d.ts +19 -0
  1359. package/lib/dashboard/cards/custom-card/abstract-custom-card.d.ts +39 -0
  1360. package/lib/dashboard/cards/iframe-card/abstract-iframe-card.d.ts +10 -0
  1361. package/lib/dashboard/cards/model/card-grid-element.d.ts +4 -0
  1362. package/lib/dashboard/cards/model/count-card.d.ts +11 -0
  1363. package/lib/dashboard/cards/model/custom-dashboard-model/aggregation-query.d.ts +9 -0
  1364. package/lib/dashboard/cards/model/custom-dashboard-model/aggregation-result.d.ts +18 -0
  1365. package/lib/dashboard/cards/model/custom-dashboard-model/custom-card.d.ts +14 -0
  1366. package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-event-content.d.ts +5 -0
  1367. package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-multi-data.d.ts +6 -0
  1368. package/lib/dashboard/cards/model/custom-dashboard-model/dashboard-single-data.d.ts +5 -0
  1369. package/lib/dashboard/cards/model/dashboard-card-types.d.ts +11 -0
  1370. package/lib/dashboard/cards/model/dashboard-card.d.ts +7 -0
  1371. package/lib/dashboard/cards/model/graph-card.d.ts +5 -0
  1372. package/lib/dashboard/cards/model/iframe-card.d.ts +6 -0
  1373. package/lib/dashboard/dashboard-content/abstract-dashboard-content.d.ts +15 -0
  1374. package/lib/dashboard/dashboard-content/dashboard-params.d.ts +8 -0
  1375. package/lib/dashboard/public-api.d.ts +16 -0
  1376. package/lib/data-fields/boolean-field/abstract-boolean-field.component.d.ts +11 -0
  1377. package/lib/data-fields/boolean-field/models/boolean-field.d.ts +15 -0
  1378. package/lib/data-fields/button-field/abstract-button-field.component.d.ts +25 -0
  1379. package/lib/data-fields/button-field/models/button-field.d.ts +22 -0
  1380. package/lib/data-fields/data-field-template/abstract-data-field-template.component.d.ts +65 -0
  1381. package/lib/data-fields/data-field-template/models/wrapped-boolean.d.ts +6 -0
  1382. package/lib/data-fields/data-fields.module.d.ts +2 -0
  1383. package/lib/data-fields/date-field/abstract-date-field.component.d.ts +9 -0
  1384. package/lib/data-fields/date-field/models/custom-date-adapter.d.ts +4 -0
  1385. package/lib/data-fields/date-field/models/date-field.d.ts +10 -0
  1386. package/lib/data-fields/date-time-field/abstract-date-time-field.component.d.ts +9 -0
  1387. package/lib/data-fields/date-time-field/models/date-time-field.d.ts +10 -0
  1388. package/lib/data-fields/enumeration-field/abstract-enumeration-field.component.d.ts +6 -0
  1389. package/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.d.ts +21 -0
  1390. package/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.d.ts +26 -0
  1391. package/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.d.ts +17 -0
  1392. package/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.d.ts +10 -0
  1393. package/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.d.ts +10 -0
  1394. package/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.d.ts +18 -0
  1395. package/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.d.ts +25 -0
  1396. package/lib/data-fields/enumeration-field/models/enumeration-field.d.ts +35 -0
  1397. package/lib/data-fields/file-field/abstract-file-field.component.d.ts +147 -0
  1398. package/lib/data-fields/file-field/abstract-preview-dialog/preview-dialog-data.d.ts +9 -0
  1399. package/lib/data-fields/file-field/models/file-field-value.d.ts +4 -0
  1400. package/lib/data-fields/file-field/models/file-field.d.ts +73 -0
  1401. package/lib/data-fields/file-list-field/abstract-file-list-field.component.d.ts +73 -0
  1402. package/lib/data-fields/file-list-field/models/file-list-field-value.d.ts +4 -0
  1403. package/lib/data-fields/file-list-field/models/file-list-field.d.ts +41 -0
  1404. package/lib/data-fields/filter-field/abstract-filter-field-content.component.d.ts +12 -0
  1405. package/lib/data-fields/filter-field/abstract-filter-field.component.d.ts +14 -0
  1406. package/lib/data-fields/filter-field/models/filter-field-injection-token.d.ts +7 -0
  1407. package/lib/data-fields/filter-field/models/filter-field.d.ts +13 -0
  1408. package/lib/data-fields/i18n-field/abstract-i18n-field.component.d.ts +7 -0
  1409. package/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.d.ts +13 -0
  1410. package/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.d.ts +18 -0
  1411. package/lib/data-fields/i18n-field/models/i18n-field-value.d.ts +5 -0
  1412. package/lib/data-fields/i18n-field/models/i18n-field.d.ts +9 -0
  1413. package/lib/data-fields/models/abstract-data-field-component.d.ts +32 -0
  1414. package/lib/data-fields/models/abstract-data-field.d.ts +220 -0
  1415. package/lib/data-fields/models/behavior.d.ts +40 -0
  1416. package/lib/data-fields/models/boolean-label-enabled-token.d.ts +2 -0
  1417. package/lib/data-fields/models/changed-fields.d.ts +44 -0
  1418. package/lib/data-fields/models/component.d.ts +7 -0
  1419. package/lib/data-fields/models/format-filter.d.ts +5 -0
  1420. package/lib/data-fields/models/icon.d.ts +9 -0
  1421. package/lib/data-fields/models/invalid-data-policy-token.d.ts +10 -0
  1422. package/lib/data-fields/models/layout.d.ts +22 -0
  1423. package/lib/data-fields/models/material-appearance.d.ts +12 -0
  1424. package/lib/data-fields/models/properties.d.ts +3 -0
  1425. package/lib/data-fields/models/template-appearance.d.ts +13 -0
  1426. package/lib/data-fields/models/validation.d.ts +15 -0
  1427. package/lib/data-fields/multichoice-field/abstract-multichoice-field.component.d.ts +6 -0
  1428. package/lib/data-fields/multichoice-field/models/multichoice-field.d.ts +26 -0
  1429. package/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.d.ts +10 -0
  1430. package/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.d.ts +8 -0
  1431. package/lib/data-fields/number-field/abstract-number-errors.component.d.ts +13 -0
  1432. package/lib/data-fields/number-field/abstract-number-field.component.d.ts +8 -0
  1433. package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +15 -0
  1434. package/lib/data-fields/number-field/models/number-field.d.ts +36 -0
  1435. package/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.d.ts +5 -0
  1436. package/lib/data-fields/public-api.d.ts +67 -0
  1437. package/lib/data-fields/task-ref-field/model/task-ref-field.d.ts +8 -0
  1438. package/lib/data-fields/text-field/abstract-text-errors.component.d.ts +10 -0
  1439. package/lib/data-fields/text-field/abstract-text-field.component.d.ts +6 -0
  1440. package/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.d.ts +39 -0
  1441. package/lib/data-fields/text-field/models/text-area-field.d.ts +12 -0
  1442. package/lib/data-fields/text-field/models/text-field.d.ts +36 -0
  1443. package/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.d.ts +13 -0
  1444. package/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.d.ts +16 -0
  1445. package/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.d.ts +13 -0
  1446. package/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.d.ts +22 -0
  1447. package/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.d.ts +9 -0
  1448. package/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.d.ts +41 -0
  1449. package/lib/data-fields/user-field/abstract-user-field.component.d.ts +36 -0
  1450. package/lib/data-fields/user-field/models/user-field.d.ts +13 -0
  1451. package/lib/data-fields/user-field/models/user-value.d.ts +24 -0
  1452. package/lib/dialog/components/alert-dialog/alert-dialog.component.d.ts +19 -0
  1453. package/lib/dialog/components/alert-dialog/alert-dialog.module.d.ts +2 -0
  1454. package/lib/dialog/components/confirm-dialog/confirm-dialog.component.d.ts +24 -0
  1455. package/lib/dialog/components/confirm-dialog/confirm-dialog.module.d.ts +2 -0
  1456. package/lib/dialog/components/prompt-dialog/prompt-dialog.component.d.ts +23 -0
  1457. package/lib/dialog/components/prompt-dialog/prompt-dialog.module.d.ts +2 -0
  1458. package/lib/dialog/dialog.module.d.ts +2 -0
  1459. package/lib/dialog/models/DialogData.d.ts +8 -0
  1460. package/lib/dialog/models/DialogResult.d.ts +5 -0
  1461. package/lib/dialog/models/abstract-dialog.d.ts +18 -0
  1462. package/lib/dialog/public-api.d.ts +5 -0
  1463. package/lib/dialog/services/dialog.service.d.ts +43 -0
  1464. package/lib/event/model/event-constants.d.ts +6 -0
  1465. package/lib/event/model/event-outcomes/case-outcomes/case-event-outcome.d.ts +5 -0
  1466. package/lib/event/model/event-outcomes/case-outcomes/create-case-event-outcome.d.ts +3 -0
  1467. package/lib/event/model/event-outcomes/case-outcomes/delete-case-event-outcome.d.ts +3 -0
  1468. package/lib/event/model/event-outcomes/data-outcomes/get-data-event-outcome.d.ts +5 -0
  1469. package/lib/event/model/event-outcomes/data-outcomes/get-data-groups-event-outcome.d.ts +5 -0
  1470. package/lib/event/model/event-outcomes/data-outcomes/get-data-localised-event-outcome.d.ts +5 -0
  1471. package/lib/event/model/event-outcomes/data-outcomes/set-data-event-outcome.d.ts +5 -0
  1472. package/lib/event/model/event-outcomes/petrinet-outcomes/petri-net-event-outcome.d.ts +5 -0
  1473. package/lib/event/model/event-outcomes/task-outcomes/assign-task-event-outcome.d.ts +3 -0
  1474. package/lib/event/model/event-outcomes/task-outcomes/cancel-task-event-outcome.d.ts +3 -0
  1475. package/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.d.ts +3 -0
  1476. package/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.d.ts +3 -0
  1477. package/lib/event/model/event-outcomes/task-outcomes/task-event-outcome.d.ts +5 -0
  1478. package/lib/event/public-api.d.ts +15 -0
  1479. package/lib/event/services/event.service.d.ts +7 -0
  1480. package/lib/event/services/interfaces/changed-fields-map.d.ts +6 -0
  1481. package/lib/event-queue/model/queued-event.d.ts +21 -0
  1482. package/lib/event-queue/public-api.d.ts +2 -0
  1483. package/lib/event-queue/services/event-queue.service.d.ts +21 -0
  1484. package/lib/filter/filter.repository.d.ts +59 -0
  1485. package/lib/filter/models/case-search-request-body.d.ts +88 -0
  1486. package/lib/filter/models/filter-type.d.ts +9 -0
  1487. package/lib/filter/models/filter.d.ts +68 -0
  1488. package/lib/filter/models/filters-filter-injection-token.d.ts +9 -0
  1489. package/lib/filter/models/merge-operator.d.ts +9 -0
  1490. package/lib/filter/models/merged-filter-params.d.ts +13 -0
  1491. package/lib/filter/models/merged-filter.d.ts +75 -0
  1492. package/lib/filter/models/simple-filter.d.ts +74 -0
  1493. package/lib/filter/models/task-search-request-body.d.ts +83 -0
  1494. package/lib/filter/models/user-filter-constants.d.ts +37 -0
  1495. package/lib/filter/public-api.d.ts +12 -0
  1496. package/lib/filter/user-filters.service.d.ts +116 -0
  1497. package/lib/forms/email-submission/abstract-email-submission-form.component.d.ts +13 -0
  1498. package/lib/forms/forgotten-password/abstract-forgotten-password.component.d.ts +16 -0
  1499. package/lib/forms/has-form.d.ts +10 -0
  1500. package/lib/forms/login/abstract-login-form.component.d.ts +24 -0
  1501. package/lib/forms/models/abstract-registration.component.d.ts +42 -0
  1502. package/lib/forms/models/password.validator.d.ts +7 -0
  1503. package/lib/forms/public-api.d.ts +6 -0
  1504. package/lib/forms/registration/abstract-registration-form.component.d.ts +19 -0
  1505. package/lib/groups/public-api.d.ts +2 -0
  1506. package/lib/groups/services/active-group.service.d.ts +49 -0
  1507. package/lib/groups/services/next-group.service.d.ts +52 -0
  1508. package/lib/header/abstract-header-service.d.ts +133 -0
  1509. package/lib/header/abstract-header.component.d.ts +52 -0
  1510. package/lib/header/case-header/case-header.service.d.ts +21 -0
  1511. package/lib/header/case-header/case-menta-enum.d.ts +7 -0
  1512. package/lib/header/header-modes/abstract-header-mode.component.d.ts +5 -0
  1513. package/lib/header/header-modes/edit-mode/abstract-edit-mode.component.d.ts +28 -0
  1514. package/lib/header/header-modes/loading-mode/abstract-loading-mode.component.d.ts +8 -0
  1515. package/lib/header/header-modes/search-mode/abstract-search-mode.component.d.ts +48 -0
  1516. package/lib/header/header-modes/sort-mode/abstract-sort-mode.component.d.ts +8 -0
  1517. package/lib/header/header-state.d.ts +28 -0
  1518. package/lib/header/models/default-headers-token.d.ts +2 -0
  1519. package/lib/header/models/fields-group.d.ts +9 -0
  1520. package/lib/header/models/header-column.d.ts +17 -0
  1521. package/lib/header/models/header-mode.d.ts +5 -0
  1522. package/lib/header/models/header-type.d.ts +5 -0
  1523. package/lib/header/models/public-api.d.ts +11 -0
  1524. package/lib/header/models/user-changes/column-header-change.d.ts +6 -0
  1525. package/lib/header/models/user-changes/edit-change-description.d.ts +7 -0
  1526. package/lib/header/models/user-changes/header-change-description.d.ts +5 -0
  1527. package/lib/header/models/user-changes/header-change-type.d.ts +18 -0
  1528. package/lib/header/models/user-changes/header-change.d.ts +17 -0
  1529. package/lib/header/models/user-changes/mode-change-description.d.ts +5 -0
  1530. package/lib/header/models/user-changes/search-change-description.d.ts +13 -0
  1531. package/lib/header/models/user-changes/sort-change-description.d.ts +13 -0
  1532. package/lib/header/public-api.d.ts +14 -0
  1533. package/lib/header/services/overflow.service.d.ts +28 -0
  1534. package/lib/header/task-header/task-header.service.d.ts +18 -0
  1535. package/lib/header/task-header/task-meta-enum.d.ts +9 -0
  1536. package/lib/header/workflow-header/workflow-header.service.d.ts +14 -0
  1537. package/lib/header/workflow-header/workflow-meta-enum.d.ts +8 -0
  1538. package/lib/legal/legal-notice/abstract-legal-notice.component.d.ts +13 -0
  1539. package/lib/legal/public-api.d.ts +1 -0
  1540. package/lib/logger/models/log-entry.d.ts +38 -0
  1541. package/lib/logger/public-api.d.ts +7 -0
  1542. package/lib/logger/publishers/console-log-publisher.d.ts +8 -0
  1543. package/lib/logger/publishers/local-storage-log-publisher.d.ts +9 -0
  1544. package/lib/logger/publishers/log-publisher.d.ts +8 -0
  1545. package/lib/logger/services/log-level.d.ts +8 -0
  1546. package/lib/logger/services/log-publisher.service.d.ts +22 -0
  1547. package/lib/logger/services/logger.service.d.ts +25 -0
  1548. package/lib/material/material.module.d.ts +2 -0
  1549. package/lib/moment/public-api.d.ts +1 -0
  1550. package/lib/moment/time-formats.d.ts +24 -0
  1551. package/lib/navigation/group-navigation-component-resolver/abstract-group-navigation-component-resolver.component.d.ts +21 -0
  1552. package/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.d.ts +14 -0
  1553. package/lib/navigation/group-navigation-component-resolver/group-navigation-view-id-segment-factory.d.ts +2 -0
  1554. package/lib/navigation/model/filter-case-injection-token.d.ts +6 -0
  1555. package/lib/navigation/model/group-navigation-component-resolver-component-injection-token.d.ts +6 -0
  1556. package/lib/navigation/model/group-navigation-constants.d.ts +57 -0
  1557. package/lib/navigation/model/group-navigation-item-label.d.ts +4 -0
  1558. package/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.d.ts +49 -0
  1559. package/lib/navigation/navigation-drawer/abstract-navigation-resizable-drawer.component.d.ts +8 -0
  1560. package/lib/navigation/navigation-rail/abstract-navigation-rail.component.d.ts +14 -0
  1561. package/lib/navigation/navigation-tree/abstract-navigation-tree.component.d.ts +131 -0
  1562. package/lib/navigation/public-api.d.ts +13 -0
  1563. package/lib/navigation/quick-panel/components/abstract-quick-panel.component.d.ts +15 -0
  1564. package/lib/navigation/quick-panel/components/internal-link/abstract-internal-link.component.d.ts +7 -0
  1565. package/lib/navigation/quick-panel/components/language-selector/abstract-language-selector.component.d.ts +24 -0
  1566. package/lib/navigation/quick-panel/components/logout-shortcut/abstract-logout-shortcut.component.d.ts +14 -0
  1567. package/lib/navigation/quick-panel/components/paper-view.service.d.ts +6 -0
  1568. package/lib/navigation/quick-panel/public-api.d.ts +5 -0
  1569. package/lib/navigation/utility/filter-extraction.service.d.ts +18 -0
  1570. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +33 -0
  1571. package/lib/panel/abstract/featured-value.d.ts +13 -0
  1572. package/lib/panel/abstract/panel-with-header-binding.d.ts +23 -0
  1573. package/lib/panel/abstract/panel-with-immediate-data.d.ts +18 -0
  1574. package/lib/panel/abstract/tabbed-virtual-scroll.component.d.ts +10 -0
  1575. package/lib/panel/abstract-panel.component.d.ts +23 -0
  1576. package/lib/panel/case-panel/abstract-case-panel.component.d.ts +41 -0
  1577. package/lib/panel/immediate/abstract-immediate-filter-text-content.component.d.ts +16 -0
  1578. package/lib/panel/immediate/abstract-immediate-filter-text.component.d.ts +14 -0
  1579. package/lib/panel/immediate/model/filter-text-injection-token.d.ts +10 -0
  1580. package/lib/panel/public-api.d.ts +12 -0
  1581. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +109 -0
  1582. package/lib/panel/task-panel/models/disable-functions.d.ts +10 -0
  1583. package/lib/panel/task-panel-list/abstract-task-list.component.d.ts +46 -0
  1584. package/lib/panel/task-panel-list/task-panel-data/task-panel-data.d.ts +8 -0
  1585. package/lib/panel/workflow-panel/abstract-workflow-panel.component.d.ts +57 -0
  1586. package/lib/process/net.d.ts +95 -0
  1587. package/lib/process/netRole.d.ts +4 -0
  1588. package/lib/process/permissions.d.ts +30 -0
  1589. package/lib/process/petri-net-reference-with-permissions.d.ts +7 -0
  1590. package/lib/process/process.service.d.ts +94 -0
  1591. package/lib/process/public-api.d.ts +7 -0
  1592. package/lib/process/public-process.service.d.ts +8 -0
  1593. package/lib/process/rolesAndPermissions.d.ts +6 -0
  1594. package/lib/process/transaction.d.ts +5 -0
  1595. package/lib/process/transition.d.ts +7 -0
  1596. package/lib/public/factories/get-net-and-create-case.d.ts +6 -0
  1597. package/lib/public/factories/public-factory-resolver.d.ts +6 -0
  1598. package/lib/public/factories/public-search-factory.d.ts +9 -0
  1599. package/lib/public/public-api.d.ts +4 -0
  1600. package/lib/public/services/public-url-resolver.service.d.ts +6 -0
  1601. package/lib/resources/abstract-endpoint/abstract-resource.service.d.ts +38 -0
  1602. package/lib/resources/abstract-endpoint/count-service.d.ts +6 -0
  1603. package/lib/resources/engine-endpoint/case-resource.service.d.ts +86 -0
  1604. package/lib/resources/engine-endpoint/dashboard-resource.service.d.ts +10 -0
  1605. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +105 -0
  1606. package/lib/resources/engine-endpoint/public/public-case-resource.service.d.ts +20 -0
  1607. package/lib/resources/engine-endpoint/public/public-petri-net-resource.service.d.ts +72 -0
  1608. package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +95 -0
  1609. package/lib/resources/engine-endpoint/task-resource.service.d.ts +134 -0
  1610. package/lib/resources/engine-endpoint/user-resource.service.d.ts +133 -0
  1611. package/lib/resources/interface/assigned-user-policy.d.ts +4 -0
  1612. package/lib/resources/interface/author.d.ts +15 -0
  1613. package/lib/resources/interface/authority.d.ts +13 -0
  1614. package/lib/resources/interface/case-get-request-body.d.ts +79 -0
  1615. package/lib/resources/interface/case.d.ts +124 -0
  1616. package/lib/resources/interface/changed-field-container.d.ts +4 -0
  1617. package/lib/resources/interface/count.d.ts +15 -0
  1618. package/lib/resources/interface/create-case-request-body.d.ts +11 -0
  1619. package/lib/resources/interface/data-group-layout.d.ts +62 -0
  1620. package/lib/resources/interface/data-groups.d.ts +60 -0
  1621. package/lib/resources/interface/event-outcome.d.ts +10 -0
  1622. package/lib/resources/interface/field-alignment.d.ts +8 -0
  1623. package/lib/resources/interface/fields.d.ts +218 -0
  1624. package/lib/resources/interface/file-resource.d.ts +22 -0
  1625. package/lib/resources/interface/group.d.ts +18 -0
  1626. package/lib/resources/interface/immediate-data.d.ts +44 -0
  1627. package/lib/resources/interface/link.d.ts +18 -0
  1628. package/lib/resources/interface/message-resource.d.ts +24 -0
  1629. package/lib/resources/interface/page.d.ts +14 -0
  1630. package/lib/resources/interface/pagination.d.ts +21 -0
  1631. package/lib/resources/interface/petri-net-object-id.d.ts +12 -0
  1632. package/lib/resources/interface/petri-net-reference.d.ts +46 -0
  1633. package/lib/resources/interface/petri-net-request-body.d.ts +14 -0
  1634. package/lib/resources/interface/petri-net.d.ts +10 -0
  1635. package/lib/resources/interface/preferences.d.ts +16 -0
  1636. package/lib/resources/interface/process-role.d.ts +9 -0
  1637. package/lib/resources/interface/response-data.d.ts +19 -0
  1638. package/lib/resources/interface/task-layout.d.ts +11 -0
  1639. package/lib/resources/interface/task-reference.d.ts +17 -0
  1640. package/lib/resources/interface/task-set-data-request-body.d.ts +35 -0
  1641. package/lib/resources/interface/task.d.ts +72 -0
  1642. package/lib/resources/interface/user-process-role.d.ts +13 -0
  1643. package/lib/resources/interface/user-resource-small.d.ts +11 -0
  1644. package/lib/resources/interface/user-resource.d.ts +16 -0
  1645. package/lib/resources/public-api.d.ts +42 -0
  1646. package/lib/resources/resource-provider.service.d.ts +53 -0
  1647. package/lib/resources/types/nae-date-type.d.ts +7 -0
  1648. package/lib/routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service.d.ts +12 -0
  1649. package/lib/routing/public-api.d.ts +5 -0
  1650. package/lib/routing/redirect-service/redirect.service.d.ts +22 -0
  1651. package/lib/routing/routing-builder/routing-builder.service.d.ts +23 -0
  1652. package/lib/routing/view-service/model/view-entry.d.ts +14 -0
  1653. package/lib/routing/view-service/view.service.d.ts +29 -0
  1654. package/lib/search/advanced-search-component/abstract-advanced-search.component.d.ts +25 -0
  1655. package/lib/search/advanced-search-component-initialization-service/advanced-search-component-initialization.service.d.ts +22 -0
  1656. package/lib/search/category-factory/category-factory.d.ts +55 -0
  1657. package/lib/search/category-factory/category-resolver.service.d.ts +48 -0
  1658. package/lib/search/category-factory/category-serialisation-pair.d.ts +10 -0
  1659. package/lib/search/category-factory/default-categories-factories.d.ts +32 -0
  1660. package/lib/search/category-factory/default-search-categories.module.d.ts +2 -0
  1661. package/lib/search/category-factory/optional-dependencies.d.ts +22 -0
  1662. package/lib/search/category-factory/search-categories-injection-token.d.ts +24 -0
  1663. package/lib/search/fulltext-search-component/abstract-fulltext-search.component.d.ts +7 -0
  1664. package/lib/search/header-search-service/header-search.service.d.ts +112 -0
  1665. package/lib/search/models/base-filter-injection-token.d.ts +6 -0
  1666. package/lib/search/models/base-filter.d.ts +18 -0
  1667. package/lib/search/models/boolean-operator.d.ts +7 -0
  1668. package/lib/search/models/category/autocomplete-category.d.ts +94 -0
  1669. package/lib/search/models/category/autocomplete-options.d.ts +17 -0
  1670. package/lib/search/models/category/case/case-author.d.ts +12 -0
  1671. package/lib/search/models/category/case/case-creation-date-time.d.ts +16 -0
  1672. package/lib/search/models/category/case/case-creation-date.d.ts +16 -0
  1673. package/lib/search/models/category/case/case-dataset.d.ts +94 -0
  1674. package/lib/search/models/category/case/case-net-attribute-autocomplete-category.d.ts +18 -0
  1675. package/lib/search/models/category/case/case-process.d.ts +27 -0
  1676. package/lib/search/models/category/case/case-role.d.ts +15 -0
  1677. package/lib/search/models/category/case/case-search.enum.d.ts +13 -0
  1678. package/lib/search/models/category/case/case-simple-dataset.d.ts +58 -0
  1679. package/lib/search/models/category/case/case-string-id.d.ts +11 -0
  1680. package/lib/search/models/category/case/case-task.d.ts +15 -0
  1681. package/lib/search/models/category/case/case-title.d.ts +11 -0
  1682. package/lib/search/models/category/case/case-visual-id.d.ts +11 -0
  1683. package/lib/search/models/category/categories.d.ts +20 -0
  1684. package/lib/search/models/category/category.d.ts +363 -0
  1685. package/lib/search/models/category/name-id-pair.d.ts +13 -0
  1686. package/lib/search/models/category/net-attribute-autocomplete-category.d.ts +55 -0
  1687. package/lib/search/models/category/net-attribute-pair.d.ts +17 -0
  1688. package/lib/search/models/category/no-configuration-autocomplete-category.d.ts +28 -0
  1689. package/lib/search/models/category/no-configuration-category.d.ts +30 -0
  1690. package/lib/search/models/category/no-configuration-user-autocomplete-category.d.ts +20 -0
  1691. package/lib/search/models/category/search-autocomplete-option.d.ts +21 -0
  1692. package/lib/search/models/category/search-input-type.d.ts +12 -0
  1693. package/lib/search/models/category/task/task-assignee.d.ts +12 -0
  1694. package/lib/search/models/category/task/task-net-attribute-autocomplete-category.d.ts +18 -0
  1695. package/lib/search/models/category/task/task-process.d.ts +19 -0
  1696. package/lib/search/models/category/task/task-role.d.ts +15 -0
  1697. package/lib/search/models/category/task/task-task.d.ts +15 -0
  1698. package/lib/search/models/category/user-autocomplete.d.ts +28 -0
  1699. package/lib/search/models/component-configuration/search-component-configuration-injection-token.d.ts +8 -0
  1700. package/lib/search/models/component-configuration/search-component-configuration.d.ts +21 -0
  1701. package/lib/search/models/component-configuration/search-mode.d.ts +7 -0
  1702. package/lib/search/models/configuration-input.d.ts +38 -0
  1703. package/lib/search/models/datafield-map-key.d.ts +28 -0
  1704. package/lib/search/models/escape-result.d.ts +13 -0
  1705. package/lib/search/models/operator/equals-date-time.d.ts +19 -0
  1706. package/lib/search/models/operator/equals-date.d.ts +19 -0
  1707. package/lib/search/models/operator/equals.d.ts +13 -0
  1708. package/lib/search/models/operator/in-range-date-time.d.ts +24 -0
  1709. package/lib/search/models/operator/in-range-date.d.ts +24 -0
  1710. package/lib/search/models/operator/in-range.d.ts +12 -0
  1711. package/lib/search/models/operator/is-null.d.ts +51 -0
  1712. package/lib/search/models/operator/less-than-date-time.d.ts +16 -0
  1713. package/lib/search/models/operator/less-than-date.d.ts +16 -0
  1714. package/lib/search/models/operator/less-than-equal-date-time.d.ts +16 -0
  1715. package/lib/search/models/operator/less-than-equal-date.d.ts +16 -0
  1716. package/lib/search/models/operator/less-than-equal.d.ts +10 -0
  1717. package/lib/search/models/operator/less-than.d.ts +10 -0
  1718. package/lib/search/models/operator/like.d.ts +18 -0
  1719. package/lib/search/models/operator/more-than-date-time.d.ts +16 -0
  1720. package/lib/search/models/operator/more-than-date.d.ts +16 -0
  1721. package/lib/search/models/operator/more-than-equal-date-time.d.ts +16 -0
  1722. package/lib/search/models/operator/more-than-equal-date.d.ts +16 -0
  1723. package/lib/search/models/operator/more-than-equal.d.ts +10 -0
  1724. package/lib/search/models/operator/more-than.d.ts +10 -0
  1725. package/lib/search/models/operator/not-equals-date-time.d.ts +13 -0
  1726. package/lib/search/models/operator/not-equals-date.d.ts +16 -0
  1727. package/lib/search/models/operator/not-equals.d.ts +18 -0
  1728. package/lib/search/models/operator/operator.d.ts +98 -0
  1729. package/lib/search/models/operator/operators.d.ts +29 -0
  1730. package/lib/search/models/operator/substring.d.ts +13 -0
  1731. package/lib/search/models/operator-template-part-type.d.ts +13 -0
  1732. package/lib/search/models/operator-template-part.d.ts +26 -0
  1733. package/lib/search/models/persistance/filter-metadata-allowed-nets.d.ts +14 -0
  1734. package/lib/search/models/persistance/filter-metadata.d.ts +29 -0
  1735. package/lib/search/models/persistance/filter-text-segment.d.ts +19 -0
  1736. package/lib/search/models/persistance/generator-metadata.d.ts +44 -0
  1737. package/lib/search/models/persistance/saved-filter-metadata.d.ts +26 -0
  1738. package/lib/search/models/predicate/clause-predicate.d.ts +56 -0
  1739. package/lib/search/models/predicate/editable-clause-predicate-with-generators.d.ts +24 -0
  1740. package/lib/search/models/predicate/editable-clause-predicate.d.ts +67 -0
  1741. package/lib/search/models/predicate/editable-elementary-predicate.d.ts +13 -0
  1742. package/lib/search/models/predicate/editable-predicate-with-generator.d.ts +28 -0
  1743. package/lib/search/models/predicate/editable-predicate.d.ts +14 -0
  1744. package/lib/search/models/predicate/elementary-predicate.d.ts +10 -0
  1745. package/lib/search/models/predicate/predicate-with-generator.d.ts +45 -0
  1746. package/lib/search/models/predicate/predicate.d.ts +52 -0
  1747. package/lib/search/models/predicate-removal-event.d.ts +13 -0
  1748. package/lib/search/models/query/query.d.ts +44 -0
  1749. package/lib/search/models/search-index.d.ts +74 -0
  1750. package/lib/search/models/wrap-result.d.ts +13 -0
  1751. package/lib/search/operator-service/operator-resolver.service.d.ts +23 -0
  1752. package/lib/search/operator-service/operator.service.d.ts +16 -0
  1753. package/lib/search/public-api.d.ts +98 -0
  1754. package/lib/search/search-clause-component/abstract-search-clause.component.d.ts +28 -0
  1755. package/lib/search/search-component/abstract-search.component.d.ts +86 -0
  1756. package/lib/search/search-configuration-input-component/abstract-search-configuration-input.component.d.ts +42 -0
  1757. package/lib/search/search-keyword-resolver-service/search-index-resolver.service.d.ts +25 -0
  1758. package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +38 -0
  1759. package/lib/search/search-predicate-component/abstract-search-predicate.component.d.ts +64 -0
  1760. package/lib/search/search-service/search.service.d.ts +182 -0
  1761. package/lib/side-menu/content-components/filter-selector/abstract-filter-selector.component.d.ts +105 -0
  1762. package/lib/side-menu/content-components/filter-selector/filter-selector-list-item/abstract-filter-selector-list-item.component.d.ts +20 -0
  1763. package/lib/side-menu/content-components/filter-selector/model/filter-selector-injection-data.d.ts +20 -0
  1764. package/lib/side-menu/content-components/filter-selector/model/filtered-array.d.ts +25 -0
  1765. package/lib/side-menu/content-components/import-net/abstract-import-net.component.d.ts +50 -0
  1766. package/lib/side-menu/content-components/injection-tokens.d.ts +8 -0
  1767. package/lib/side-menu/content-components/load-filter/abstract-load-filter.component.d.ts +13 -0
  1768. package/lib/side-menu/content-components/load-filter/model/load-filter-injection-data.d.ts +8 -0
  1769. package/lib/side-menu/content-components/new-case/abstract-new-case.component.d.ts +62 -0
  1770. package/lib/side-menu/content-components/new-case/model/new-case-injection-data.d.ts +13 -0
  1771. package/lib/side-menu/content-components/option-selector/abstract-option-selector.component.d.ts +14 -0
  1772. package/lib/side-menu/content-components/option-selector/model/option-selector-injection-data.d.ts +24 -0
  1773. package/lib/side-menu/content-components/public-api.d.ts +17 -0
  1774. package/lib/side-menu/content-components/save-filter/abstract-save-filter.component.d.ts +15 -0
  1775. package/lib/side-menu/content-components/save-filter/model/save-filter-injection-data.d.ts +4 -0
  1776. package/lib/side-menu/content-components/user-assign/abstract-user-assign.component.d.ts +46 -0
  1777. package/lib/side-menu/content-components/user-assign/model/user-list-injected-data.d.ts +11 -0
  1778. package/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.d.ts +83 -0
  1779. package/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/abstract-user-assign-item.component.d.ts +16 -0
  1780. package/lib/side-menu/models/portal-wrapper.d.ts +9 -0
  1781. package/lib/side-menu/models/side-menu-control.d.ts +15 -0
  1782. package/lib/side-menu/models/side-menu-event.d.ts +6 -0
  1783. package/lib/side-menu/models/side-menu-injection-data.d.ts +3 -0
  1784. package/lib/side-menu/models/side-menu-ref.d.ts +8 -0
  1785. package/lib/side-menu/models/side-menu-size.d.ts +5 -0
  1786. package/lib/side-menu/net-version-visible-injection-token.d.ts +3 -0
  1787. package/lib/side-menu/public-api.d.ts +10 -0
  1788. package/lib/side-menu/services/side-menu.service.d.ts +35 -0
  1789. package/lib/side-menu/side-menu-container/abstract-side-menu-container.component.d.ts +16 -0
  1790. package/lib/side-menu/side-menu-injection-token.d.ts +3 -0
  1791. package/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.d.ts +8 -0
  1792. package/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.d.ts +8 -0
  1793. package/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.d.ts +8 -0
  1794. package/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.d.ts +8 -0
  1795. package/lib/snack-bar/models/abstract-snack-bar.d.ts +10 -0
  1796. package/lib/snack-bar/models/injection-token-snackbar.d.ts +4 -0
  1797. package/lib/snack-bar/models/snack-bar-enums.d.ts +9 -0
  1798. package/lib/snack-bar/models/snack-bar-injection-data.d.ts +5 -0
  1799. package/lib/snack-bar/public-api.d.ts +10 -0
  1800. package/lib/snack-bar/services/snack-bar.service.d.ts +18 -0
  1801. package/lib/snack-bar/snack-bar.module.d.ts +2 -0
  1802. package/lib/tabs/classes/opened-tab.d.ts +67 -0
  1803. package/lib/tabs/classes/tab-view.d.ts +123 -0
  1804. package/lib/tabs/interfaces.d.ts +135 -0
  1805. package/lib/tabs/public-api.d.ts +5 -0
  1806. package/lib/tabs/tab-creation-detector/abstract-tab-creation-detector.component.d.ts +18 -0
  1807. package/lib/tabs/tab-data-injection-token/tab-data-injection-token.d.ts +8 -0
  1808. package/lib/tabs/tab-view/abstract-tab-view.component.d.ts +38 -0
  1809. package/lib/task/interfaces/task-operations.d.ts +35 -0
  1810. package/lib/task/models/null-task-operations.d.ts +22 -0
  1811. package/lib/task/models/subject-task-operations.d.ts +37 -0
  1812. package/lib/task/models/task-operations-injection-token.d.ts +3 -0
  1813. package/lib/task/models/task-set-data-request-context.d.ts +11 -0
  1814. package/lib/task/public-api.d.ts +15 -0
  1815. package/lib/task/services/assign-policy.service.d.ts +81 -0
  1816. package/lib/task/services/assign-task.service.d.ts +78 -0
  1817. package/lib/task/services/cancel-task.service.d.ts +79 -0
  1818. package/lib/task/services/data-focus-policy.service.d.ts +16 -0
  1819. package/lib/task/services/delegate-task.service.d.ts +70 -0
  1820. package/lib/task/services/finish-policy.service.d.ts +38 -0
  1821. package/lib/task/services/finish-task.service.d.ts +76 -0
  1822. package/lib/task/services/selected-case.service.d.ts +35 -0
  1823. package/lib/task/services/task-data.service.d.ts +177 -0
  1824. package/lib/task/services/task-handling-service.d.ts +41 -0
  1825. package/lib/task/services/task-request-state.service.d.ts +64 -0
  1826. package/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.d.ts +22 -0
  1827. package/lib/task-content/model/async-rendering-configuration-injection-token.d.ts +8 -0
  1828. package/lib/task-content/model/async-rendering-configuration.d.ts +22 -0
  1829. package/lib/task-content/model/datafield-grid-layout-element.d.ts +9 -0
  1830. package/lib/task-content/model/field-type-resource.d.ts +21 -0
  1831. package/lib/task-content/model/policy.d.ts +27 -0
  1832. package/lib/task-content/model/resource-interface.d.ts +37 -0
  1833. package/lib/task-content/model/split-data-group.d.ts +7 -0
  1834. package/lib/task-content/model/subgrid.d.ts +145 -0
  1835. package/lib/task-content/model/task-content-element-type.d.ts +19 -0
  1836. package/lib/task-content/model/task-event-notification.d.ts +32 -0
  1837. package/lib/task-content/model/task-event.d.ts +8 -0
  1838. package/lib/task-content/public-api.d.ts +17 -0
  1839. package/lib/task-content/services/field-converter.service.d.ts +58 -0
  1840. package/lib/task-content/services/single-task-content.service.d.ts +42 -0
  1841. package/lib/task-content/services/task-content.service.d.ts +125 -0
  1842. package/lib/task-content/services/task-event.service.d.ts +28 -0
  1843. package/lib/task-content/services/unlimited-task-content.service.d.ts +42 -0
  1844. package/lib/task-content/task-content/abstract-task-content.component.d.ts +263 -0
  1845. package/lib/toolbar/abstract-toolbar.component.d.ts +15 -0
  1846. package/lib/toolbar/public-api.d.ts +1 -0
  1847. package/lib/translate/language.service.d.ts +20 -0
  1848. package/lib/translate/public-api.d.ts +2 -0
  1849. package/lib/translate/translate-interceptor.d.ts +8 -0
  1850. package/lib/translate/translate-lib.module.d.ts +5 -0
  1851. package/lib/user/components/user-card/abstract-user-card.component.d.ts +22 -0
  1852. package/lib/user/models/iuser.d.ts +19 -0
  1853. package/lib/user/models/public-api.d.ts +3 -0
  1854. package/lib/user/models/user.d.ts +29 -0
  1855. package/lib/user/models/view-id-injection-tokens.d.ts +3 -0
  1856. package/lib/user/profile/abstract-profile.component.d.ts +14 -0
  1857. package/lib/user/public-api.d.ts +8 -0
  1858. package/lib/user/services/user-comparator.service.d.ts +7 -0
  1859. package/lib/user/services/user-list.service.d.ts +111 -0
  1860. package/lib/user/services/user-preference.service.d.ts +37 -0
  1861. package/lib/user/services/user.service.d.ts +65 -0
  1862. package/lib/user/services/view-id.service.d.ts +7 -0
  1863. package/lib/utility/array-to-observable.d.ts +6 -0
  1864. package/lib/utility/call-chain/after-action.d.ts +8 -0
  1865. package/lib/utility/call-chain/call-chain.service.d.ts +16 -0
  1866. package/lib/utility/clear-time-information.d.ts +6 -0
  1867. package/lib/utility/destroy-subscription.d.ts +6 -0
  1868. package/lib/utility/get-field.d.ts +34 -0
  1869. package/lib/utility/get-immediate-data.d.ts +8 -0
  1870. package/lib/utility/grid-layout/grid-layout-helper.d.ts +10 -0
  1871. package/lib/utility/grid-layout/model/grid-element-with-item.d.ts +4 -0
  1872. package/lib/utility/grid-layout/model/grid-element.d.ts +12 -0
  1873. package/lib/utility/grid-layout/model/grid-filler.d.ts +10 -0
  1874. package/lib/utility/incrementing-counter.d.ts +14 -0
  1875. package/lib/utility/loading-emitter.d.ts +8 -0
  1876. package/lib/utility/loading-with-filter-emitter.d.ts +12 -0
  1877. package/lib/utility/navigation-item-task-filter-factory.d.ts +9 -0
  1878. package/lib/utility/navigation-item-task-search-categories-factory.d.ts +15 -0
  1879. package/lib/utility/of-void.d.ts +6 -0
  1880. package/lib/utility/pagination/load-all-pages.d.ts +13 -0
  1881. package/lib/utility/pagination/page-has-content.d.ts +6 -0
  1882. package/lib/utility/process-message-response.d.ts +10 -0
  1883. package/lib/utility/public-api.d.ts +45 -0
  1884. package/lib/utility/refresh-tree.d.ts +5 -0
  1885. package/lib/utility/result-with-after-actions.d.ts +21 -0
  1886. package/lib/utility/service/case-list-font-color.service.d.ts +15 -0
  1887. package/lib/utility/service/spinner-overlay.service.d.ts +13 -0
  1888. package/lib/utility/stop-propagation.d.ts +1 -0
  1889. package/lib/utility/tests/mocks/mock-authentication-method-service.d.ts +8 -0
  1890. package/lib/utility/tests/mocks/mock-authentication.service.d.ts +10 -0
  1891. package/lib/utility/tests/mocks/mock-endpoint.d.ts +25 -0
  1892. package/lib/utility/tests/mocks/mock-sign-up.service.d.ts +20 -0
  1893. package/lib/utility/tests/mocks/mock-user-autocomplete-value.d.ts +7 -0
  1894. package/lib/utility/tests/mocks/mock-user-preference.service.d.ts +15 -0
  1895. package/lib/utility/tests/mocks/mock-user-resource.service.d.ts +17 -0
  1896. package/lib/utility/tests/search-category-mock-dependencies.d.ts +6 -0
  1897. package/lib/utility/tests/test-config.d.ts +4 -0
  1898. package/lib/utility/tests/test-factory-methods.d.ts +7 -0
  1899. package/lib/utility/tests/test-mock-dependencies.module.d.ts +12 -0
  1900. package/lib/utility/tests/test-view-service.d.ts +7 -0
  1901. package/lib/utility/tests/utility/configure-category.d.ts +13 -0
  1902. package/lib/utility/tests/utility/create-mock-case-outcome.d.ts +10 -0
  1903. package/lib/utility/tests/utility/create-mock-case.d.ts +8 -0
  1904. package/lib/utility/tests/utility/create-mock-datagroup.d.ts +18 -0
  1905. package/lib/utility/tests/utility/create-mock-field.d.ts +19 -0
  1906. package/lib/utility/tests/utility/create-mock-get-data-outcome.d.ts +7 -0
  1907. package/lib/utility/tests/utility/create-mock-immediate-data.d.ts +8 -0
  1908. package/lib/utility/tests/utility/create-mock-net.d.ts +17 -0
  1909. package/lib/utility/tests/utility/create-mock-page.d.ts +7 -0
  1910. package/lib/utility/tests/utility/create-mock-petri-net-outcome.d.ts +9 -0
  1911. package/lib/utility/tests/utility/create-mock-set-data-outcome.d.ts +12 -0
  1912. package/lib/utility/tests/utility/create-mock-task-outcome.d.ts +11 -0
  1913. package/lib/utility/tests/utility/create-mock-task.d.ts +8 -0
  1914. package/lib/view/abstract/page-load-request-context.d.ts +40 -0
  1915. package/lib/view/abstract/sortable-view.d.ts +19 -0
  1916. package/lib/view/abstract/view-with-headers.d.ts +13 -0
  1917. package/lib/view/case-view/abstract-case-view.d.ts +25 -0
  1918. package/lib/view/case-view/components/case-list/abstract-case-list.component.d.ts +35 -0
  1919. package/lib/view/case-view/models/case-page-load-request-result.d.ts +14 -0
  1920. package/lib/view/case-view/models/case-view-params.d.ts +3 -0
  1921. package/lib/view/case-view/models/new-case-configuration-injection-token.d.ts +7 -0
  1922. package/lib/view/case-view/models/new-case-configuration.d.ts +9 -0
  1923. package/lib/view/case-view/service/case-view-service.d.ts +73 -0
  1924. package/lib/view/case-view/tabbed-case-view.d.ts +26 -0
  1925. package/lib/view/public-api.d.ts +35 -0
  1926. package/lib/view/task-view/abstract-task-view.d.ts +12 -0
  1927. package/lib/view/task-view/models/injected-tabbed-task-view-data.d.ts +12 -0
  1928. package/lib/view/task-view/models/injection-token-task-endpoint.d.ts +6 -0
  1929. package/lib/view/task-view/models/task-endpoint.d.ts +7 -0
  1930. package/lib/view/task-view/models/task-page-load-request-result.d.ts +14 -0
  1931. package/lib/view/task-view/models/task-view-configuration-injection-token.d.ts +13 -0
  1932. package/lib/view/task-view/models/task-view-configuration.d.ts +19 -0
  1933. package/lib/view/task-view/models/task-view-params.d.ts +3 -0
  1934. package/lib/view/task-view/service/task-view.service.d.ts +68 -0
  1935. package/lib/view/task-view/tabbed-task-view.d.ts +11 -0
  1936. package/lib/view/tree-case-view/model/tree-petriflow-identifiers.d.ts +41 -0
  1937. package/lib/view/tree-case-view/tree-case-view.service.d.ts +9 -0
  1938. package/lib/view/tree-case-view/tree-component/abstract-tree.component.d.ts +99 -0
  1939. package/lib/view/tree-case-view/tree-component/add-child-node/abstract-add-child-node.component.d.ts +8 -0
  1940. package/lib/view/tree-case-view/tree-component/case-tree.service.d.ts +300 -0
  1941. package/lib/view/tree-case-view/tree-component/model/case-tree-node.d.ts +57 -0
  1942. package/lib/view/tree-case-view/tree-component/model/case-tree-path.d.ts +8 -0
  1943. package/lib/view/tree-case-view/tree-component/model/expansion-tree.d.ts +6 -0
  1944. package/lib/view/tree-case-view/tree-component/remove-node/abstract-remove-node.component.d.ts +8 -0
  1945. package/lib/view/tree-case-view/tree-task-content/abstract-tree-task-content.component.d.ts +32 -0
  1946. package/lib/view/tree-case-view/tree-task-content/tree-task-content.service.d.ts +112 -0
  1947. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +30 -0
  1948. package/lib/view/workflow-view/models/injection-token-workflow-service.d.ts +10 -0
  1949. package/lib/view/workflow-view/workflow-view.service.d.ts +52 -0
  1950. package/netgrif-components-core.d.ts +25 -0
  1951. package/netgrif-components-core.metadata.json +1 -0
  1952. package/package.json +79 -0
  1953. package/public-api.d.ts +39 -0
  1954. package/schematics/_commons/angular-cli-devkit-core-strings.d.ts +93 -0
  1955. package/schematics/_commons/angular-cli-devkit-core-strings.js +167 -0
  1956. package/schematics/_commons/angular-cli-devkit-core-strings.js.map +1 -0
  1957. package/schematics/_commons/import-to-add.d.ts +5 -0
  1958. package/schematics/_commons/import-to-add.js +11 -0
  1959. package/schematics/_commons/import-to-add.js.map +1 -0
  1960. package/schematics/_commons/view-class-info.d.ts +22 -0
  1961. package/schematics/_commons/view-class-info.js +58 -0
  1962. package/schematics/_commons/view-class-info.js.map +1 -0
  1963. package/schematics/_utility/models/file-data.d.ts +6 -0
  1964. package/schematics/_utility/models/file-data.js +3 -0
  1965. package/schematics/_utility/models/file-data.js.map +1 -0
  1966. package/schematics/_utility/models/file-system-node.d.ts +6 -0
  1967. package/schematics/_utility/models/file-system-node.js +12 -0
  1968. package/schematics/_utility/models/file-system-node.js.map +1 -0
  1969. package/schematics/_utility/models/project-info.d.ts +13 -0
  1970. package/schematics/_utility/models/project-info.js +20 -0
  1971. package/schematics/_utility/models/project-info.js.map +1 -0
  1972. package/schematics/_utility/modified-library-functions.d.ts +24 -0
  1973. package/schematics/_utility/modified-library-functions.js +150 -0
  1974. package/schematics/_utility/modified-library-functions.js.map +1 -0
  1975. package/schematics/_utility/utility-functions.d.ts +60 -0
  1976. package/schematics/_utility/utility-functions.js +221 -0
  1977. package/schematics/_utility/utility-functions.js.map +1 -0
  1978. package/schematics/add/add/index.d.ts +2 -0
  1979. package/schematics/add/add/index.js +27 -0
  1980. package/schematics/add/add/index.js.map +1 -0
  1981. package/schematics/add/create-nae-files/files/app-routing.module.ts.template +13 -0
  1982. package/schematics/add/create-nae-files/index.d.ts +2 -0
  1983. package/schematics/add/create-nae-files/index.js +154 -0
  1984. package/schematics/add/create-nae-files/index.js.map +1 -0
  1985. package/schematics/add/create-nae-files/schema.json +7 -0
  1986. package/schematics/collection.json +30 -0
  1987. package/schematics/configuration-service/files/__project@dasherize__-configuration.service.ts.template +13 -0
  1988. package/schematics/configuration-service/schema.json +7 -0
  1989. package/schematics/configuration-service/schematic-create-configuration-service.d.ts +2 -0
  1990. package/schematics/configuration-service/schematic-create-configuration-service.js +41 -0
  1991. package/schematics/configuration-service/schematic-create-configuration-service.js.map +1 -0
  1992. package/schematics/migrations/4.1/migration-4.1.d.ts +5 -0
  1993. package/schematics/migrations/4.1/migration-4.1.js +37 -0
  1994. package/schematics/migrations/4.1/migration-4.1.js.map +1 -0
  1995. package/schematics/migrations.json +10 -0
  1996. package/schematics/view/_utility/view-service-functions.d.ts +9 -0
  1997. package/schematics/view/_utility/view-service-functions.js +59 -0
  1998. package/schematics/view/_utility/view-service-functions.js.map +1 -0
  1999. package/schematics/view/_utility/view-utility-functions.d.ts +7 -0
  2000. package/schematics/view/_utility/view-utility-functions.js +53 -0
  2001. package/schematics/view/_utility/view-utility-functions.js.map +1 -0
  2002. package/schematics/view-service/files/__project@dasherize__-view.service.ts.template +14 -0
  2003. package/schematics/view-service/schema.json +7 -0
  2004. package/schematics/view-service/schematic-create-view-service.d.ts +2 -0
  2005. package/schematics/view-service/schematic-create-view-service.js +25 -0
  2006. package/schematics/view-service/schematic-create-view-service.js.map +1 -0
  2007. package/src/assets/i18n/de.json +419 -0
  2008. package/src/assets/i18n/en.json +419 -0
  2009. package/src/assets/i18n/sk.json +419 -0
  2010. package/src/schema/nae-schema.json +770 -0
@@ -0,0 +1,687 @@
1
+ import { __assign } from "tslib";
2
+ import { EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
3
+ import { FieldConverterService } from '../services/field-converter.service';
4
+ import { TaskContentService } from '../services/task-content.service';
5
+ import { PaperViewService } from '../../navigation/quick-panel/components/paper-view.service';
6
+ import { LoggerService } from '../../logger/services/logger.service';
7
+ import { TaskEventService } from '../services/task-event.service';
8
+ import { DataGroupAlignment } from '../../resources/interface/data-groups';
9
+ import { TaskElementType } from '../model/task-content-element-type';
10
+ import { DataGroupCompact, DataGroupHideEmptyRows, DataGroupLayoutType } from '../../resources/interface/data-group-layout';
11
+ import { FieldAlignment } from '../../resources/interface/field-alignment';
12
+ import { FieldTypeResource } from '../model/field-type-resource';
13
+ import { LoadingEmitter } from '../../utility/loading-emitter';
14
+ import { BehaviorSubject } from 'rxjs';
15
+ import { map } from 'rxjs/operators';
16
+ import { NAE_ASYNC_RENDERING_CONFIGURATION } from '../model/async-rendering-configuration-injection-token';
17
+ import { TaskRefField } from '../../data-fields/task-ref-field/model/task-ref-field';
18
+ import { Subgrid } from '../model/subgrid';
19
+ import { IncrementingCounter } from '../../utility/incrementing-counter';
20
+ var AbstractTaskContentComponent = /** @class */ (function () {
21
+ function AbstractTaskContentComponent(_fieldConverter, taskContentService, _paperView, _logger, _taskEventService, asyncRenderingConfiguration) {
22
+ var _this = this;
23
+ if (_taskEventService === void 0) { _taskEventService = null; }
24
+ if (asyncRenderingConfiguration === void 0) { asyncRenderingConfiguration = null; }
25
+ this._fieldConverter = _fieldConverter;
26
+ this.taskContentService = taskContentService;
27
+ this._paperView = _paperView;
28
+ this._logger = _logger;
29
+ this._taskEventService = _taskEventService;
30
+ this.DEFAULT_LAYOUT_TYPE = DataGroupLayoutType.LEGACY;
31
+ this.DEFAULT_FIELD_ALIGNMENT = FieldAlignment.CENTER;
32
+ this.DEFAULT_ASYNC_RENDERING_CONFIGURATION = {
33
+ batchSize: 4,
34
+ batchDelay: 200,
35
+ numberOfPlaceholders: 4,
36
+ enableAsyncRenderingForNewFields: true,
37
+ enableAsyncRenderingOnTaskExpand: true
38
+ };
39
+ this.DEFAULT_COMPACT_DIRECTION = DataGroupCompact.NONE;
40
+ this.DEFAULT_HIDE_EMPTY_ROWS = DataGroupHideEmptyRows.ALL;
41
+ /**
42
+ * Exists to allow references to the enum in the HTML
43
+ */
44
+ this.fieldTypeResource = FieldTypeResource;
45
+ /**
46
+ * Whether an icon should be displayed when the no data message is shown.
47
+ *
48
+ * An icon is displayed by default
49
+ */
50
+ this.displayNoDataIcon = true;
51
+ /**
52
+ * Defines the row height of one row in task content
53
+ */
54
+ this.rowHeight = 105;
55
+ this.trackBySubgridFn = function (index, subgrid) { return subgrid.subgridId; };
56
+ this.trackByFn = function (index, element) { return _this.trackByDatafields(index, element); };
57
+ this._asyncRenderingConfig = __assign({}, this.DEFAULT_ASYNC_RENDERING_CONFIGURATION);
58
+ if (asyncRenderingConfiguration !== null) {
59
+ Object.assign(this._asyncRenderingConfig, asyncRenderingConfiguration);
60
+ }
61
+ this.loading$ = new LoadingEmitter(true);
62
+ this._dataSource$ = new BehaviorSubject([]);
63
+ this.hasDataToDisplay$ = this._dataSource$.pipe(map(function (data) {
64
+ return data.length !== 0;
65
+ }));
66
+ this._subTaskContent = this.taskContentService.$shouldCreate.subscribe(function (data) {
67
+ if (data.length !== 0) {
68
+ _this.computeDefaultLayoutConfiguration();
69
+ _this.computeLayoutData(data);
70
+ }
71
+ else {
72
+ _this.renderContent();
73
+ }
74
+ _this.loading$.off();
75
+ });
76
+ if (this._taskEventService !== null) {
77
+ this.taskEvent = new EventEmitter();
78
+ this._subTaskEvent = _taskEventService.taskEventNotifications$.subscribe(function (event) {
79
+ _this.taskEvent.emit(event);
80
+ });
81
+ }
82
+ }
83
+ AbstractTaskContentComponent.prototype.ngOnDestroy = function () {
84
+ this.loading$.complete();
85
+ this._dataSource$.complete();
86
+ this._subTaskContent.unsubscribe();
87
+ if (this.taskEvent) {
88
+ this.taskEvent.complete();
89
+ }
90
+ if (this._subTaskEvent) {
91
+ this._subTaskEvent.unsubscribe();
92
+ }
93
+ if (this._asyncRenderTimeout !== undefined) {
94
+ window.clearTimeout(this._asyncRenderTimeout);
95
+ }
96
+ };
97
+ Object.defineProperty(AbstractTaskContentComponent.prototype, "taskId", {
98
+ get: function () {
99
+ return this.taskContentService.task.stringId;
100
+ },
101
+ enumerable: false,
102
+ configurable: true
103
+ });
104
+ Object.defineProperty(AbstractTaskContentComponent.prototype, "dataSource", {
105
+ get: function () {
106
+ return this._dataSource$.getValue();
107
+ },
108
+ enumerable: false,
109
+ configurable: true
110
+ });
111
+ /**
112
+ * @returns the number of columns as specified by the tasks layout property, or 4 if no value is specified.
113
+ */
114
+ AbstractTaskContentComponent.prototype.getNumberOfFormColumns = function () {
115
+ if (!this.taskContentService.task
116
+ || !this.taskContentService.task.layout
117
+ || this.taskContentService.task.layout.cols === undefined) {
118
+ return 4;
119
+ }
120
+ else {
121
+ return this.taskContentService.task.layout.cols;
122
+ }
123
+ };
124
+ AbstractTaskContentComponent.prototype.isPaperView = function () {
125
+ return this._paperView.paperView;
126
+ };
127
+ /**
128
+ * @param item an object containing grid element information
129
+ * @returns the Angular flex layouts alignment property for individual data fields based on
130
+ * the layout configuration specified by the process
131
+ */
132
+ AbstractTaskContentComponent.prototype.getItemAlignment = function (item) {
133
+ var _a, _b, _c;
134
+ if (item.alignment) {
135
+ return item.alignment;
136
+ }
137
+ var fieldAlignment = (_c = (_b = (_a = item.item) === null || _a === void 0 ? void 0 : _a.localLayout) === null || _b === void 0 ? void 0 : _b.alignment) !== null && _c !== void 0 ? _c : this._defaultAlignment;
138
+ var alignment;
139
+ switch (fieldAlignment) {
140
+ case FieldAlignment.TOP:
141
+ alignment = 'start';
142
+ break;
143
+ case FieldAlignment.CENTER:
144
+ alignment = 'center';
145
+ break;
146
+ case FieldAlignment.BOTTOM:
147
+ alignment = 'end';
148
+ break;
149
+ }
150
+ item.alignment = 'space-between ' + alignment;
151
+ return item.alignment;
152
+ };
153
+ /**
154
+ * Computes component height if the rows attribute of task layout is set.
155
+ */
156
+ AbstractTaskContentComponent.prototype.resolveContentHeightCss = function () {
157
+ if (this.scrollingNeeded()) {
158
+ return this.taskContentService.task.layout.rows * this.rowHeight + 'px';
159
+ }
160
+ else {
161
+ return '100%';
162
+ }
163
+ };
164
+ /**
165
+ * Decides whether there is a fixed number of rows and it need-s scrolling
166
+ */
167
+ AbstractTaskContentComponent.prototype.scrollingNeeded = function () {
168
+ return this.taskContentService.task
169
+ && !!this.taskContentService.task.layout
170
+ && !!this.taskContentService.task.layout.rows
171
+ && this.taskContentService.task.layout.rows > 0;
172
+ };
173
+ /**
174
+ * @returns the default alignment for the displayed task that can be overridden by fields individual property.
175
+ * If te task specifies no default value the [global default]{@link AbstractTaskContentComponent#DEFAULT_FIELD_ALIGNMENT}
176
+ * value is returned.
177
+ */
178
+ AbstractTaskContentComponent.prototype.computeDefaultLayoutConfiguration = function () {
179
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
180
+ this._defaultAlignment = (_c = (_b = (_a = this.taskContentService.task) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.fieldAlignment) !== null && _c !== void 0 ? _c : this.DEFAULT_FIELD_ALIGNMENT;
181
+ this._defaultCompactDirection = (_f = (_e = (_d = this.taskContentService.task) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.compactDirection) !== null && _f !== void 0 ? _f : this.DEFAULT_COMPACT_DIRECTION;
182
+ this._defaultHideEmptyRows = (_j = (_h = (_g = this.taskContentService.task) === null || _g === void 0 ? void 0 : _g.layout) === null || _h === void 0 ? void 0 : _h.hideEmptyRows) !== null && _j !== void 0 ? _j : this.DEFAULT_HIDE_EMPTY_ROWS;
183
+ this._defaultNumberOfCols = this.getNumberOfFormColumns();
184
+ };
185
+ /**
186
+ * Computes the layout data for the tasks grid layout and sets the result to the public properties
187
+ * of this class that are then bound to HTML.
188
+ * @param dataGroups the data groups that should be laid out
189
+ */
190
+ AbstractTaskContentComponent.prototype.computeLayoutData = function (dataGroups) {
191
+ var _this = this;
192
+ if (!this.taskContentService.task) {
193
+ this.renderContent();
194
+ return;
195
+ }
196
+ this._subgridIdCounter = new IncrementingCounter();
197
+ this._existingSubgridIds = new Set();
198
+ var result = new Map();
199
+ dataGroups = this.preprocessDataGroups(dataGroups);
200
+ var defaultLayout = this.taskContentService.task.layout && this.taskContentService.task.layout.type
201
+ ? this.taskContentService.task.layout.type
202
+ : this.DEFAULT_LAYOUT_TYPE;
203
+ dataGroups.forEach(function (group) {
204
+ var _a;
205
+ if (!group.layout) {
206
+ group.layout = { rows: undefined, cols: undefined, type: defaultLayout };
207
+ }
208
+ if (!group.layout.type) {
209
+ group.layout.type = defaultLayout;
210
+ }
211
+ var subgrid = new Subgrid(_this.createSubgridId(group), (_a = group.layout.cols) !== null && _a !== void 0 ? _a : _this._defaultNumberOfCols, _this._asyncRenderingConfig);
212
+ if (group.title !== undefined) {
213
+ var title = subgrid.addTitle(group);
214
+ subgrid.addRow(_this.newGridRow(subgrid.cols, title.gridAreaId));
215
+ }
216
+ switch (group.layout.type) {
217
+ case DataGroupLayoutType.GRID:
218
+ _this.computeGridLayout(group, subgrid);
219
+ break;
220
+ case DataGroupLayoutType.FLOW:
221
+ _this.computeFlowLayout(group, subgrid);
222
+ break;
223
+ case DataGroupLayoutType.LEGACY:
224
+ _this.computeLegacyLayout(group, subgrid);
225
+ break;
226
+ default:
227
+ throw new Error("Unknown task layout type '" + _this.taskContentService.task.layout.type + "'");
228
+ }
229
+ subgrid.finalize();
230
+ result.set(subgrid.subgridId, subgrid);
231
+ });
232
+ this.renderFields(result);
233
+ };
234
+ AbstractTaskContentComponent.prototype.renderFields = function (subgrids) {
235
+ var subgridsArray = Array.from(subgrids.values());
236
+ if (!this._asyncRenderingConfig.enableAsyncRenderingForNewFields
237
+ && !(this._asyncRenderingConfig.enableAsyncRenderingOnTaskExpand && this.taskContentService.isExpanding)) {
238
+ subgridsArray.forEach(function (subgrid) {
239
+ subgrid.displayAllFields();
240
+ });
241
+ this.renderContent(subgridsArray);
242
+ return;
243
+ }
244
+ if (!(this.taskContentService.isExpanding && this._asyncRenderingConfig.enableAsyncRenderingOnTaskExpand)) {
245
+ this._dataSource$.value.forEach(function (oldSubgrid) {
246
+ if (subgrids.has(oldSubgrid.subgridId)) {
247
+ subgrids.get(oldSubgrid.subgridId).determineKeptFields(oldSubgrid);
248
+ }
249
+ });
250
+ }
251
+ this.renderContent(subgridsArray);
252
+ this.spreadFieldRenderingOverTime(subgridsArray);
253
+ };
254
+ AbstractTaskContentComponent.prototype.spreadFieldRenderingOverTime = function (subgrids, iteration) {
255
+ var _this = this;
256
+ if (iteration === void 0) { iteration = 0; }
257
+ this._asyncRenderTimeout = undefined;
258
+ if (iteration < subgrids.length) {
259
+ this._asyncRenderTimeout = window.setTimeout(function () {
260
+ subgrids[iteration].renderContentOverTime(function () {
261
+ _this.spreadFieldRenderingOverTime(subgrids, iteration + 1);
262
+ }, iteration === 0);
263
+ });
264
+ }
265
+ };
266
+ /**
267
+ * Clones the content of the data groups to prevent unintentional memory accesses to source data.
268
+ * Rearranges the data groups to accommodate taskrefs. Filters out hidden and forbidden fields.
269
+ * @param dataGroups
270
+ * @returns the preprocesses data groups
271
+ */
272
+ AbstractTaskContentComponent.prototype.preprocessDataGroups = function (dataGroups) {
273
+ var _this = this;
274
+ dataGroups = this.cloneAndFilterHidden(dataGroups);
275
+ var result = [];
276
+ for (var i = 0; i < dataGroups.length; i++) {
277
+ var group = dataGroups[i];
278
+ if (!group.fields.some(function (f) { return _this.isTaskRef(f); })) {
279
+ result.push(group);
280
+ continue;
281
+ }
282
+ var split = this.splitDataGroupOnTaskRef(group);
283
+ if (split.startGroup !== undefined) {
284
+ result.push(split.startGroup);
285
+ }
286
+ if (split.taskRef.value.length === 0 || split.endGroup === undefined) {
287
+ if (split.endGroup !== undefined) {
288
+ dataGroups.splice(i + 1, 0, split.endGroup);
289
+ }
290
+ continue;
291
+ }
292
+ var directChild = dataGroups[i + 1]; // the data group that immediately follows IS ALWAYS a direct child
293
+ var firstNonDescendantIndex = i + 2;
294
+ var _loop_1 = function () {
295
+ var nextGroup = dataGroups[firstNonDescendantIndex];
296
+ if (nextGroup.nestingLevel === undefined || nextGroup.nestingLevel < directChild.nestingLevel) {
297
+ return "break";
298
+ }
299
+ if (nextGroup.nestingLevel === directChild.nestingLevel
300
+ && (nextGroup.parentTaskRefId !== split.taskRef.stringId
301
+ || !split.taskRef.value.some(function (reffedTaskId) { return reffedTaskId === nextGroup.parentTaskId; }))) {
302
+ return "break";
303
+ }
304
+ };
305
+ for (; firstNonDescendantIndex < dataGroups.length; firstNonDescendantIndex++) {
306
+ var state_1 = _loop_1();
307
+ if (state_1 === "break")
308
+ break;
309
+ }
310
+ dataGroups.splice(firstNonDescendantIndex, 0, split.endGroup);
311
+ }
312
+ return result;
313
+ };
314
+ /**
315
+ * Creates a duplicate of the provided data group array and filters away any fields and data groups that are marked as hidden.
316
+ * Because of the duplication the filtering doesn't affect the original instances and they remain unchanged.
317
+ * @param dataGroups the data groups that should be filtered
318
+ * @returns the filtered duplicated data groups
319
+ */
320
+ AbstractTaskContentComponent.prototype.cloneAndFilterHidden = function (dataGroups) {
321
+ var result = dataGroups.map(function (group) {
322
+ var g = __assign({}, group);
323
+ g.fields = g.fields.filter(function (field) { return !field.behavior.hidden && !field.behavior.forbidden; }).map(function (field) {
324
+ field.resetLocalLayout();
325
+ return field;
326
+ });
327
+ return g;
328
+ });
329
+ return result.filter(function (group) { return group.fields.length > 0; });
330
+ };
331
+ AbstractTaskContentComponent.prototype.isTaskRef = function (field) {
332
+ return field instanceof TaskRefField;
333
+ };
334
+ /**
335
+ * Sorts the input data group based on the Y coordinate of the fields and splits it into parts on the first task ref.
336
+ * If some fields appear before the first task ref they are extracted into a new [startGroup]{@link SplitDataGroup#startGroup}.
337
+ * If some fields appear after the first task ref they are extracted into a new [endGroup]{@link SplitDataGroup#endGroup}.
338
+ * @param dataGroup
339
+ * @protected
340
+ */
341
+ AbstractTaskContentComponent.prototype.splitDataGroupOnTaskRef = function (dataGroup) {
342
+ var _this = this;
343
+ dataGroup.fields.sort(function (a, b) { return a.localLayout.y - b.localLayout.y; });
344
+ var taskRefPosition = dataGroup.fields.findIndex(function (f) { return _this.isTaskRef(f); });
345
+ var result = {
346
+ taskRef: dataGroup.fields[taskRefPosition]
347
+ };
348
+ if (taskRefPosition !== 0) {
349
+ result.startGroup = {
350
+ title: dataGroup.title,
351
+ alignment: dataGroup.alignment,
352
+ layout: dataGroup.layout,
353
+ stretch: dataGroup.stretch,
354
+ fields: dataGroup.fields.slice(0, taskRefPosition),
355
+ };
356
+ }
357
+ if (taskRefPosition !== dataGroup.fields.length - 1) {
358
+ result.endGroup = {
359
+ title: undefined,
360
+ alignment: dataGroup.alignment,
361
+ layout: dataGroup.layout,
362
+ stretch: dataGroup.stretch,
363
+ fields: dataGroup.fields.slice(taskRefPosition + 1),
364
+ };
365
+ result.endGroup.fields.forEach(function (f) {
366
+ f.localLayout.y = f.localLayout.y - result.taskRef.localLayout.y - 1;
367
+ });
368
+ }
369
+ return result;
370
+ };
371
+ /**
372
+ * Computes the layout data for a single data group with grid layout. The resulting layout is saved into the input objects.
373
+ * @param dataGroup the data group that should be laid out into a grid
374
+ * @param subgrid the object that holds the context of the computed layouting unit
375
+ */
376
+ AbstractTaskContentComponent.prototype.computeGridLayout = function (dataGroup, subgrid) {
377
+ var _this = this;
378
+ var localGrid = [];
379
+ dataGroup.fields.forEach(function (dataField) {
380
+ if (!dataField.localLayout
381
+ || dataField.localLayout.x === undefined
382
+ || dataField.localLayout.y === undefined
383
+ || !dataField.localLayout.rows
384
+ || !dataField.localLayout.cols) {
385
+ throw new Error("You cannot use 'grid' layout without specifying the layout of the data fields (field ID: " + dataField.stringId + ")");
386
+ }
387
+ while (localGrid.length < dataField.localLayout.y + dataField.localLayout.rows) {
388
+ localGrid.push(_this.newGridRow(subgrid.cols));
389
+ }
390
+ var fieldElement = subgrid.addField(dataField, _this._fieldConverter.resolveType(dataField));
391
+ _this.occupySpace(localGrid, dataField.localLayout.y, dataField.localLayout.x, dataField.localLayout.cols, fieldElement.gridAreaId, dataField.localLayout.rows);
392
+ });
393
+ this.collapseGridEmptySpace(localGrid, dataGroup.layout, subgrid);
394
+ localGrid.forEach(function (localGridRow) { return subgrid.addRow(localGridRow); });
395
+ };
396
+ /**
397
+ * Applies the empty row removal and field compacting rules based on the provided layout configuration.
398
+ *
399
+ * The input grid is modified in place.
400
+ * @param grid the state of the grid that should be modified
401
+ * @param layout configuration of the applied compacting rules
402
+ * @param subgrid the object that holds the context of the computed layouting unit
403
+ */
404
+ AbstractTaskContentComponent.prototype.collapseGridEmptySpace = function (grid, layout, subgrid) {
405
+ var _a, _b;
406
+ var hideRows = (_a = layout.hideEmptyRows) !== null && _a !== void 0 ? _a : this._defaultHideEmptyRows;
407
+ if (hideRows === DataGroupHideEmptyRows.ALL) {
408
+ this.removeEmptyRows(grid);
409
+ }
410
+ switch ((_b = layout.compactDirection) !== null && _b !== void 0 ? _b : this._defaultCompactDirection) {
411
+ case DataGroupCompact.UP:
412
+ this.compactFieldsUp(grid, hideRows, subgrid);
413
+ break;
414
+ }
415
+ };
416
+ /**
417
+ * Moves any element as far UP as it can go. Elements that were originally declared in the same row might end up in different rows.
418
+ * Resulting trailing empty rows are removed.
419
+ *
420
+ * The input grid is modified in place.
421
+ * @param grid the state of the grid that should be modified
422
+ * @param hideRows configuration for empty row removal during the compacting process
423
+ * @param subgrid the object that holds the context of the computed layouting unit
424
+ */
425
+ AbstractTaskContentComponent.prototype.compactFieldsUp = function (grid, hideRows, subgrid) {
426
+ for (var rowIndex = 0; rowIndex < grid.length; rowIndex++) {
427
+ var row = grid[rowIndex];
428
+ for (var columnIndex = 0; columnIndex < row.length; columnIndex++) {
429
+ if (row[columnIndex] !== '') {
430
+ continue;
431
+ }
432
+ var foundElement = false;
433
+ var foundElementRowIndex = rowIndex + 1;
434
+ for (; foundElementRowIndex < grid.length; foundElementRowIndex++) {
435
+ if (grid[foundElementRowIndex][columnIndex] !== '') {
436
+ foundElement = true;
437
+ break;
438
+ }
439
+ }
440
+ if (!foundElement) {
441
+ continue;
442
+ }
443
+ if (columnIndex > 0 && grid[foundElementRowIndex][columnIndex - 1] === grid[foundElementRowIndex][columnIndex]) {
444
+ continue;
445
+ }
446
+ var elementDimensions = this.getElementDimensions(grid, columnIndex, foundElementRowIndex, subgrid);
447
+ if (this.isAreaEmpty(grid, columnIndex, rowIndex, elementDimensions.width, foundElementRowIndex - rowIndex)) {
448
+ var element = grid[foundElementRowIndex][columnIndex];
449
+ this.occupySpace(grid, foundElementRowIndex, columnIndex, elementDimensions.width, '', elementDimensions.height, false);
450
+ this.occupySpace(grid, rowIndex, columnIndex, elementDimensions.width, element, elementDimensions.height, false);
451
+ if (hideRows !== DataGroupHideEmptyRows.NONE) {
452
+ // we only check the rows potentially cleared by moving the grid element up
453
+ this.removeEmptyRows(grid, foundElementRowIndex, foundElementRowIndex + elementDimensions.height);
454
+ }
455
+ }
456
+ }
457
+ }
458
+ };
459
+ /**
460
+ * Removes rows from the grid that only contain empty elements (are empty). The grid is modified in place.
461
+ * @param grid the grid that should have it's empty rows removed
462
+ * @param firstRow the 0 based index of the first row that should be checked. Use 0 to start from the beginning of the grid.
463
+ *
464
+ * If no value is provided, the grid will be checked from the first row.
465
+ *
466
+ * @param lastRow the 0 based index of the row where the checking should end. The row with this index is not checked.
467
+ *
468
+ * If no value is provided the entire grid from the `firstRow` will be checked.
469
+ *
470
+ * If a value that is smaller or equal to the `firstRow` is provided no checks will be preformed.
471
+ */
472
+ AbstractTaskContentComponent.prototype.removeEmptyRows = function (grid, firstRow, lastRow) {
473
+ if (firstRow === void 0) { firstRow = 0; }
474
+ if (lastRow === void 0) { lastRow = Number.POSITIVE_INFINITY; }
475
+ var i = firstRow;
476
+ while (i < grid.length && i < lastRow) {
477
+ if (grid[i].every(function (element) { return element === ''; })) {
478
+ grid.splice(i, 1);
479
+ }
480
+ else {
481
+ i++;
482
+ }
483
+ }
484
+ };
485
+ /**
486
+ * Determines the dimensions of the element in the grid with its top-left corner at the specified position
487
+ * @param grid the grid of elements
488
+ * @param x the X coordinate of the desired elements top-left corner
489
+ * @param y the Y coordinate of the desired elements top-left corner
490
+ * @param subgrid the object that holds the context of the computed layouting unit
491
+ * @returns the width and height of the specified element
492
+ */
493
+ AbstractTaskContentComponent.prototype.getElementDimensions = function (grid, x, y, subgrid) {
494
+ var element = grid[y][x];
495
+ var width = 1;
496
+ while (x + width < subgrid.cols && grid[y][x + width] === element) {
497
+ width++;
498
+ }
499
+ var height = 1;
500
+ while (y + height < grid.length && grid[y + height][x] === element) {
501
+ height++;
502
+ }
503
+ return { width: width, height: height };
504
+ };
505
+ /**
506
+ * Determines whether the specified area in the grid contains no elements, or not
507
+ * @param grid the grid of elements
508
+ * @param x the X coordinate of the tested areas top-left corner
509
+ * @param y the Y coordinate of the tested areas top-left corner
510
+ * @param width the width of the tested area
511
+ * @param height the height of the tested area
512
+ */
513
+ AbstractTaskContentComponent.prototype.isAreaEmpty = function (grid, x, y, width, height) {
514
+ for (var i = y; i < y + height; i++) {
515
+ for (var j = x; j < x + width; j++) {
516
+ if (grid[i][j] !== '') {
517
+ return false;
518
+ }
519
+ }
520
+ }
521
+ return true;
522
+ };
523
+ /**
524
+ * Computes the layout data for a single data group with flow layout. The resulting layout is saved into the input objects.
525
+ * @param dataGroup the data group that should be laid out into a grid using the flow algorithm
526
+ * @param subgrid the object that holds the context of the computed layouting unit
527
+ */
528
+ AbstractTaskContentComponent.prototype.computeFlowLayout = function (dataGroup, subgrid) {
529
+ this.flowFields(dataGroup, subgrid, 1);
530
+ };
531
+ /**
532
+ * Computes the layout data for a single data group with legacy layout. The resulting layout is saved into the input objects.
533
+ *
534
+ * The legacy layout forces the number of columns to be 4 and logs a warning if this was not the case.
535
+ * @param dataGroup the data group that should be laid out into a grid using the legacy algorithm used in NAE versions < 4.0.0
536
+ * @param subgrid the object that holds the context of the computed layouting unit
537
+ */
538
+ AbstractTaskContentComponent.prototype.computeLegacyLayout = function (dataGroup, subgrid) {
539
+ if (subgrid.cols !== 4) {
540
+ subgrid.cols = 4;
541
+ this._logger.warn("Task with id '" + this.taskContentService.task.stringId + "' has a data group with legacy layout with a "
542
+ + "non-default number of columns. If you want to use a layout with different number of columns than 2 use a different "
543
+ + "layout type instead.");
544
+ }
545
+ this.flowFields(dataGroup, subgrid, 2);
546
+ };
547
+ /**
548
+ * Lays out the fields from left to right, from top to bottom. If the width is greater than 1 and the block of flowed fields doesn't fit
549
+ * neatly into the columns (if the width of a single field is not a divisor of column count), then the entire block of fields is
550
+ * left aligned. The last row of fields is aligned to the left, center or right based on the data groups property.
551
+ * If the last row cannot be aligned to the exact center it is offset one grid tile to the left.
552
+ * @param dataGroup the data group that should be laid out into a grid
553
+ * @param subgrid the object that holds the context of the computed layouting unit
554
+ * @param fieldWidth the number of grid tiles, that should be occupied by each field
555
+ */
556
+ AbstractTaskContentComponent.prototype.flowFields = function (dataGroup, subgrid, fieldWidth) {
557
+ var _this = this;
558
+ var fieldsPerRow = Math.floor(subgrid.cols / fieldWidth);
559
+ var maxXPosition = fieldWidth * (fieldsPerRow - 1);
560
+ var xPosition = 0;
561
+ var localGrid = [];
562
+ dataGroup.fields.forEach(function (dataField, dataFieldCount) {
563
+ var fieldElement = subgrid.addField(dataField, _this._fieldConverter.resolveType(dataField));
564
+ if (dataGroup.stretch) {
565
+ subgrid.addRow(_this.newGridRow(subgrid.cols, fieldElement.gridAreaId));
566
+ return; // continue
567
+ }
568
+ // else
569
+ if (xPosition === 0) {
570
+ localGrid.push(_this.newGridRow(subgrid.cols));
571
+ }
572
+ if (xPosition === 0 && _this.isLastRow(dataFieldCount, dataGroup, fieldsPerRow)) {
573
+ var fieldsInLastRow = dataGroup.fields.length % fieldsPerRow;
574
+ var rowWidth = maxXPosition + fieldWidth;
575
+ if (dataGroup.alignment === DataGroupAlignment.END) {
576
+ xPosition = rowWidth - fieldWidth * fieldsInLastRow;
577
+ }
578
+ else if (dataGroup.alignment === DataGroupAlignment.CENTER) {
579
+ xPosition = Math.floor((rowWidth - fieldsInLastRow * fieldWidth) / 2);
580
+ }
581
+ }
582
+ _this.occupySpace(localGrid, localGrid.length - 1, xPosition, fieldWidth, fieldElement.gridAreaId);
583
+ xPosition += fieldWidth;
584
+ if (xPosition > maxXPosition) {
585
+ xPosition = 0;
586
+ }
587
+ });
588
+ localGrid.forEach(function (row) { return subgrid.addRow(row); });
589
+ };
590
+ /**
591
+ * @param width width of the row
592
+ * @param content the value that should be used to fill all elements in the row
593
+ */
594
+ AbstractTaskContentComponent.prototype.newGridRow = function (width, content) {
595
+ if (content === void 0) { content = ''; }
596
+ return Array(width).fill(content);
597
+ };
598
+ /**
599
+ * Fills the specified rectangular area with the specified value in the provided grid.
600
+ *
601
+ * If the specified area contains values other than the empty string an error will be thrown.
602
+ * @param grid the grid that should be modified
603
+ * @param y the 0 based row index of the top-left corner of the filled area
604
+ * @param x the 0 based column index of the top-left corner of the filled area
605
+ * @param width the width of the filled area
606
+ * @param value the value that is set into every cell of the grid inside the specified area
607
+ * @param height the height of the filled area
608
+ * @param checkOccupants whether the filled area should be checked for other elements.
609
+ * If a check is performed an error will be thrown if elements are found.
610
+ */
611
+ AbstractTaskContentComponent.prototype.occupySpace = function (grid, y, x, width, value, height, checkOccupants) {
612
+ if (height === void 0) { height = 1; }
613
+ if (checkOccupants === void 0) { checkOccupants = true; }
614
+ for (var j = y; j < y + height; j++) {
615
+ for (var i = x; i < x + width; i++) {
616
+ if (checkOccupants && grid[j][i] !== '') {
617
+ throw new Error("Cannot place element " + value + " into the grid layout, because it's space (x: " + i + ", y: " + j + ")" +
618
+ (" is already occupied by another element (" + grid[j][i] + ")"));
619
+ }
620
+ grid[j][i] = value;
621
+ }
622
+ }
623
+ };
624
+ /**
625
+ * @param index the index of the checked element within its data group
626
+ * @param dataGroup the checked data group
627
+ * @param fieldsPerRow the number of fields that is required to fill an entire row
628
+ * @returns whether the field at the given index is within the last row of elements of the provided data group.
629
+ * Note that if the last row contains enough elements to be completely filled this method returns `false`.
630
+ */
631
+ AbstractTaskContentComponent.prototype.isLastRow = function (index, dataGroup, fieldsPerRow) {
632
+ return index + fieldsPerRow >= dataGroup.fields.length;
633
+ };
634
+ /**
635
+ * Destroys the previous content and pushes the new content into the stream
636
+ * @param content the new content
637
+ */
638
+ AbstractTaskContentComponent.prototype.renderContent = function (content) {
639
+ if (content === void 0) { content = []; }
640
+ this._dataSource$.value.forEach(function (subgrid) { return subgrid.destroy(); });
641
+ this._dataSource$.next(content);
642
+ };
643
+ AbstractTaskContentComponent.prototype.createSubgridId = function (dataGroup) {
644
+ var idBase;
645
+ if (dataGroup.parentTaskId !== undefined) {
646
+ idBase = [dataGroup.parentTaskId, dataGroup.parentTaskRefId, dataGroup.nestingLevel].join('#');
647
+ }
648
+ else {
649
+ idBase = 'root';
650
+ }
651
+ var id = idBase;
652
+ while (this._existingSubgridIds.has(id)) {
653
+ id = idBase + this._subgridIdCounter.next();
654
+ }
655
+ this._existingSubgridIds.add(id);
656
+ return id;
657
+ };
658
+ AbstractTaskContentComponent.prototype.trackByDatafields = function (index, element) {
659
+ switch (element.type) {
660
+ case TaskElementType.BLANK:
661
+ return element.gridAreaId + '-' + this.taskContentService.$shouldCreateCounter.getValue();
662
+ case TaskElementType.LOADER:
663
+ return element.gridAreaId + '-L-' + this.taskContentService.$shouldCreateCounter.getValue();
664
+ case TaskElementType.DATA_GROUP_TITLE:
665
+ return element.title + '-' + this.taskContentService.$shouldCreateCounter.getValue();
666
+ default:
667
+ return element.item.stringId + '-' + this.taskContentService.$shouldCreateCounter.getValue();
668
+ }
669
+ };
670
+ AbstractTaskContentComponent.ctorParameters = function () { return [
671
+ { type: FieldConverterService },
672
+ { type: TaskContentService },
673
+ { type: PaperViewService },
674
+ { type: LoggerService },
675
+ { type: TaskEventService, decorators: [{ type: Optional }] },
676
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_ASYNC_RENDERING_CONFIGURATION,] }] }
677
+ ]; };
678
+ AbstractTaskContentComponent.propDecorators = {
679
+ noDataText: [{ type: Input }],
680
+ noDataIcon: [{ type: Input }],
681
+ displayNoDataIcon: [{ type: Input }],
682
+ taskEvent: [{ type: Output }]
683
+ };
684
+ return AbstractTaskContentComponent;
685
+ }());
686
+ export { AbstractTaskContentComponent };
687
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFzay1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi90YXNrLWNvbnRlbnQvdGFzay1jb250ZW50L2Fic3RyYWN0LXRhc2stY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQVksa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFtQixtQkFBbUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzNJLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxp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O1lBQ3pGO2dCQUNJLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNwRztJQUNMLENBQUM7O2dCQTF2QkcscUJBQXFCO2dCQUNyQixrQkFBa0I7Z0JBQ2xCLGdCQUFnQjtnQkFDaEIsYUFBYTtnQkFFYixnQkFBZ0IsdUJBNEZHLFFBQVE7Z0RBQ1IsUUFBUSxZQUFJLE1BQU0sU0FBQyxpQ0FBaUM7Ozs2QkE1QzFFLEtBQUs7NkJBTUwsS0FBSztvQ0FNTCxLQUFLOzRCQUlMLE1BQU07O0lBcXJCWCxtQ0FBQztDQUFBLEFBcnVCRCxJQXF1QkM7U0FydUJxQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnR9IGZyb20gJy4uL21vZGVsL2RhdGFmaWVsZC1ncmlkLWxheW91dC1lbGVtZW50JztcbmltcG9ydCB7RmllbGRDb252ZXJ0ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtQYXBlclZpZXdTZXJ2aWNlfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uL3F1aWNrLXBhbmVsL2NvbXBvbmVudHMvcGFwZXItdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza0V2ZW50Tm90aWZpY2F0aW9ufSBmcm9tICcuLi9tb2RlbC90YXNrLWV2ZW50LW5vdGlmaWNhdGlvbic7XG5pbXBvcnQge1Rhc2tFdmVudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3Rhc2stZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0RhdGFHcm91cCwgRGF0YUdyb3VwQWxpZ25tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7VGFza0VsZW1lbnRUeXBlfSBmcm9tICcuLi9tb2RlbC90YXNrLWNvbnRlbnQtZWxlbWVudC10eXBlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0RhdGFHcm91cENvbXBhY3QsIERhdGFHcm91cEhpZGVFbXB0eVJvd3MsIERhdGFHcm91cExheW91dCwgRGF0YUdyb3VwTGF5b3V0VHlwZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9kYXRhLWdyb3VwLWxheW91dCc7XG5pbXBvcnQge0ZpZWxkQWxpZ25tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2ZpZWxkLWFsaWdubWVudCc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi9tb2RlbC9maWVsZC10eXBlLXJlc291cmNlJztcbmltcG9ydCB7TG9hZGluZ0VtaXR0ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TkFFX0FTWU5DX1JFTkRFUklOR19DT05GSUdVUkFUSU9OfSBmcm9tICcuLi9tb2RlbC9hc3luYy1yZW5kZXJpbmctY29uZmlndXJhdGlvbi1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL21vZGVsL2FzeW5jLXJlbmRlcmluZy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7VGFza1JlZkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC9tb2RlbC90YXNrLXJlZi1maWVsZCc7XG5pbXBvcnQge1NwbGl0RGF0YUdyb3VwfSBmcm9tICcuLi9tb2RlbC9zcGxpdC1kYXRhLWdyb3VwJztcbmltcG9ydCB7U3ViZ3JpZH0gZnJvbSAnLi4vbW9kZWwvc3ViZ3JpZCc7XG5pbXBvcnQge0luY3JlbWVudGluZ0NvdW50ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvaW5jcmVtZW50aW5nLWNvdW50ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUYXNrQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcmVhZG9ubHkgREVGQVVMVF9MQVlPVVRfVFlQRSA9IERhdGFHcm91cExheW91dFR5cGUuTEVHQUNZO1xuICAgIHJlYWRvbmx5IERFRkFVTFRfRklFTERfQUxJR05NRU5UID0gRmllbGRBbGlnbm1lbnQuQ0VOVEVSO1xuICAgIHJlYWRvbmx5IERFRkFVTFRfQVNZTkNfUkVOREVSSU5HX0NPTkZJR1VSQVRJT046IEFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgYmF0Y2hTaXplOiA0LFxuICAgICAgICBiYXRjaERlbGF5OiAyMDAsXG4gICAgICAgIG51bWJlck9mUGxhY2Vob2xkZXJzOiA0LFxuICAgICAgICBlbmFibGVBc3luY1JlbmRlcmluZ0Zvck5ld0ZpZWxkczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQXN5bmNSZW5kZXJpbmdPblRhc2tFeHBhbmQ6IHRydWVcbiAgICB9O1xuICAgIHJlYWRvbmx5IERFRkFVTFRfQ09NUEFDVF9ESVJFQ1RJT04gPSBEYXRhR3JvdXBDb21wYWN0Lk5PTkU7XG4gICAgcmVhZG9ubHkgREVGQVVMVF9ISURFX0VNUFRZX1JPV1MgPSBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzLkFMTDtcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGRhdGEgaXMgYmVpbmcgbG9hZGVkIGZyb20gYmFja2VuZCwgb3IgaWYgaXQgaXMgYmVpbmcgcHJvY2Vzc2VkLlxuICAgICAqL1xuICAgIGxvYWRpbmckOiBMb2FkaW5nRW1pdHRlcjtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBgdHJ1ZWAgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRhdGEgZmllbGQsIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC4gRW1pdHMgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaGFzRGF0YVRvRGlzcGxheSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiBFeGlzdHMgdG8gYWxsb3cgcmVmZXJlbmNlcyB0byB0aGUgZW51bSBpbiB0aGUgSFRNTFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWVsZFR5cGVSZXNvdXJjZSA9IEZpZWxkVHlwZVJlc291cmNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRyYW5zbGF0ZSB0ZXh0IHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCB3aGVuIHRoZSB0YXNrIGNvbnRhaW5zIG5vIGRhdGEuXG4gICAgICpcbiAgICAgKiBJZiBhIGZhbHN5IHZhbHVlIGlzIHByb3ZpZGVkIHRoZSBkZWZhdWx0IHRleHQgaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgQElucHV0KCkgbm9EYXRhVGV4dDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCB3aGVuIHRoZSB0YXNrIGNvbnRhaW5zIG5vIGRhdGEuXG4gICAgICpcbiAgICAgKiBJZiBhIGZhbHN5IHZhbHVlIGlzIHByb3ZpZGVkIHRoZSBkZWZhdWx0IGljb24gaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgQElucHV0KCkgbm9EYXRhSWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYW4gaWNvbiBzaG91bGQgYmUgZGlzcGxheWVkIHdoZW4gdGhlIG5vIGRhdGEgbWVzc2FnZSBpcyBzaG93bi5cbiAgICAgKlxuICAgICAqIEFuIGljb24gaXMgZGlzcGxheWVkIGJ5IGRlZmF1bHRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNwbGF5Tm9EYXRhSWNvbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogRW1pdHMgbm90aWZpY2F0aW9ucyBhYm91dCB0YXNrIGV2ZW50c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0YXNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxUYXNrRXZlbnROb3RpZmljYXRpb24+O1xuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIGZpZWxkcyB0aGF0IGFyZSBjdXJyZW50bHkgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9kYXRhU291cmNlJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PFN1YmdyaWQ+PjtcbiAgICBwcm90ZWN0ZWQgX3N1YlRhc2tDb250ZW50OiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJUYXNrRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX2FzeW5jUmVuZGVyaW5nQ29uZmlnOiBBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb247XG4gICAgcHJvdGVjdGVkIF9hc3luY1JlbmRlclRpbWVvdXQ6IG51bWJlcjtcblxuICAgIHByb3RlY3RlZCBfZGVmYXVsdEFsaWdubWVudDogRmllbGRBbGlnbm1lbnQ7XG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0Q29tcGFjdERpcmVjdGlvbjogRGF0YUdyb3VwQ29tcGFjdDtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRIaWRlRW1wdHlSb3dzOiBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE51bWJlck9mQ29sczogbnVtYmVyO1xuXG4gICAgcHJvdGVjdGVkIF9zdWJncmlkSWRDb3VudGVyOiBJbmNyZW1lbnRpbmdDb3VudGVyO1xuICAgIHByb3RlY3RlZCBfZXhpc3RpbmdTdWJncmlkSWRzOiBTZXQ8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHJvdyBoZWlnaHQgb2Ygb25lIHJvdyBpbiB0YXNrIGNvbnRlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcm93SGVpZ2h0ID0gMTA1O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZmllbGRDb252ZXJ0ZXI6IEZpZWxkQ29udmVydGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRhc2tDb250ZW50U2VydmljZTogVGFza0NvbnRlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3BhcGVyVmlldzogUGFwZXJWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdGFza0V2ZW50U2VydmljZTogVGFza0V2ZW50U2VydmljZSA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0FTWU5DX1JFTkRFUklOR19DT05GSUdVUkFUSU9OKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNSZW5kZXJpbmdDb25maWd1cmF0aW9uOiBBc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb24gPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnID0gey4uLnRoaXMuREVGQVVMVF9BU1lOQ19SRU5ERVJJTkdfQ09ORklHVVJBVElPTn07XG4gICAgICAgIGlmIChhc3luY1JlbmRlcmluZ0NvbmZpZ3VyYXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcsIGFzeW5jUmVuZGVyaW5nQ29uZmlndXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKHRydWUpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8U3ViZ3JpZD4+KFtdKTtcbiAgICAgICAgdGhpcy5oYXNEYXRhVG9EaXNwbGF5JCA9IHRoaXMuX2RhdGFTb3VyY2UkLnBpcGUobWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoICE9PSAwO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fc3ViVGFza0NvbnRlbnQgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS4kc2hvdWxkQ3JlYXRlLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZURlZmF1bHRMYXlvdXRDb25maWd1cmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlTGF5b3V0RGF0YShkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmckLm9mZigpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2tFdmVudFNlcnZpY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRXZlbnROb3RpZmljYXRpb24+KCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJUYXNrRXZlbnQgPSBfdGFza0V2ZW50U2VydmljZS50YXNrRXZlbnROb3RpZmljYXRpb25zJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFza0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJUYXNrQ29udGVudC51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAodGhpcy50YXNrRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0V2ZW50LmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3N1YlRhc2tFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5fc3ViVGFza0V2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5zdHJpbmdJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQXJyYXk8U3ViZ3JpZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSB0YXNrcyBsYXlvdXQgcHJvcGVydHksIG9yIDQgaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROdW1iZXJPZkZvcm1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFza1xuICAgICAgICAgICAgfHwgIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0XG4gICAgICAgICAgICB8fCB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC5jb2xzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LmNvbHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQYXBlclZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXBlclZpZXcucGFwZXJWaWV3O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpdGVtIGFuIG9iamVjdCBjb250YWluaW5nIGdyaWQgZWxlbWVudCBpbmZvcm1hdGlvblxuICAgICAqIEByZXR1cm5zIHRoZSBBbmd1bGFyIGZsZXggbGF5b3V0cyBhbGlnbm1lbnQgcHJvcGVydHkgZm9yIGluZGl2aWR1YWwgZGF0YSBmaWVsZHMgYmFzZWQgb25cbiAgICAgKiB0aGUgbGF5b3V0IGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBwcm9jZXNzXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1BbGlnbm1lbnQoaXRlbTogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaXRlbS5hbGlnbm1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmFsaWdubWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkQWxpZ25tZW50ID0gaXRlbS5pdGVtPy5sb2NhbExheW91dD8uYWxpZ25tZW50ID8/IHRoaXMuX2RlZmF1bHRBbGlnbm1lbnQ7XG5cbiAgICAgICAgbGV0IGFsaWdubWVudDtcbiAgICAgICAgc3dpdGNoIChmaWVsZEFsaWdubWVudCkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZEFsaWdubWVudC5UT1A6XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50ID0gJ3N0YXJ0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRBbGlnbm1lbnQuQ0VOVEVSOlxuICAgICAgICAgICAgICAgIGFsaWdubWVudCA9ICdjZW50ZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZEFsaWdubWVudC5CT1RUT006XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50ID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLmFsaWdubWVudCA9ICdzcGFjZS1iZXR3ZWVuICcgKyBhbGlnbm1lbnQ7XG4gICAgICAgIHJldHVybiBpdGVtLmFsaWdubWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBjb21wb25lbnQgaGVpZ2h0IGlmIHRoZSByb3dzIGF0dHJpYnV0ZSBvZiB0YXNrIGxheW91dCBpcyBzZXQuXG4gICAgICovXG4gICAgcHVibGljIHJlc29sdmVDb250ZW50SGVpZ2h0Q3NzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbGluZ05lZWRlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQucm93cyAqIHRoaXMucm93SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNpZGVzIHdoZXRoZXIgdGhlcmUgaXMgYSBmaXhlZCBudW1iZXIgb2Ygcm93cyBhbmQgaXQgbmVlZC1zIHNjcm9sbGluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBzY3JvbGxpbmdOZWVkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0XG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnJvd3NcbiAgICAgICAgICAgICYmIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnJvd3MgPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBkZWZhdWx0IGFsaWdubWVudCBmb3IgdGhlIGRpc3BsYXllZCB0YXNrIHRoYXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZmllbGRzIGluZGl2aWR1YWwgcHJvcGVydHkuXG4gICAgICogSWYgdGUgdGFzayBzcGVjaWZpZXMgbm8gZGVmYXVsdCB2YWx1ZSB0aGUgW2dsb2JhbCBkZWZhdWx0XXtAbGluayBBYnN0cmFjdFRhc2tDb250ZW50Q29tcG9uZW50I0RFRkFVTFRfRklFTERfQUxJR05NRU5UfVxuICAgICAqIHZhbHVlIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlRGVmYXVsdExheW91dENvbmZpZ3VyYXRpb24oKSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRBbGlnbm1lbnQgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrPy5sYXlvdXQ/LmZpZWxkQWxpZ25tZW50ID8/IHRoaXMuREVGQVVMVF9GSUVMRF9BTElHTk1FTlQ7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRDb21wYWN0RGlyZWN0aW9uID0gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzaz8ubGF5b3V0Py5jb21wYWN0RGlyZWN0aW9uID8/IHRoaXMuREVGQVVMVF9DT01QQUNUX0RJUkVDVElPTjtcbiAgICAgICAgdGhpcy5fZGVmYXVsdEhpZGVFbXB0eVJvd3MgPSB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrPy5sYXlvdXQ/LmhpZGVFbXB0eVJvd3MgPz8gdGhpcy5ERUZBVUxUX0hJREVfRU1QVFlfUk9XUztcbiAgICAgICAgdGhpcy5fZGVmYXVsdE51bWJlck9mQ29scyA9IHRoaXMuZ2V0TnVtYmVyT2ZGb3JtQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBsYXlvdXQgZGF0YSBmb3IgdGhlIHRhc2tzIGdyaWQgbGF5b3V0IGFuZCBzZXRzIHRoZSByZXN1bHQgdG8gdGhlIHB1YmxpYyBwcm9wZXJ0aWVzXG4gICAgICogb2YgdGhpcyBjbGFzcyB0aGF0IGFyZSB0aGVuIGJvdW5kIHRvIEhUTUwuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHMgdGhlIGRhdGEgZ3JvdXBzIHRoYXQgc2hvdWxkIGJlIGxhaWQgb3V0XG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVMYXlvdXREYXRhKGRhdGFHcm91cHM6IEFycmF5PERhdGFHcm91cD4pIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbnRlbnQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N1YmdyaWRJZENvdW50ZXIgPSBuZXcgSW5jcmVtZW50aW5nQ291bnRlcigpO1xuICAgICAgICB0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgU3ViZ3JpZD4oKTtcblxuICAgICAgICBkYXRhR3JvdXBzID0gdGhpcy5wcmVwcm9jZXNzRGF0YUdyb3VwcyhkYXRhR3JvdXBzKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQgJiYgdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQudHlwZVxuICAgICAgICAgICAgPyB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC50eXBlXG4gICAgICAgICAgICA6IHRoaXMuREVGQVVMVF9MQVlPVVRfVFlQRTtcblxuICAgICAgICBkYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgaWYgKCFncm91cC5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBncm91cC5sYXlvdXQgPSB7cm93czogdW5kZWZpbmVkLCBjb2xzOiB1bmRlZmluZWQsIHR5cGU6IGRlZmF1bHRMYXlvdXR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFncm91cC5sYXlvdXQudHlwZSkge1xuICAgICAgICAgICAgICAgIGdyb3VwLmxheW91dC50eXBlID0gZGVmYXVsdExheW91dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3ViZ3JpZCA9IG5ldyBTdWJncmlkKFxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlU3ViZ3JpZElkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICBncm91cC5sYXlvdXQuY29scyA/PyB0aGlzLl9kZWZhdWx0TnVtYmVyT2ZDb2xzLFxuICAgICAgICAgICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyaW5nQ29uZmlnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gc3ViZ3JpZC5hZGRUaXRsZShncm91cCk7XG4gICAgICAgICAgICAgICAgc3ViZ3JpZC5hZGRSb3codGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scywgdGl0bGUuZ3JpZEFyZWFJZCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGdyb3VwLmxheW91dC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRhR3JvdXBMYXlvdXRUeXBlLkdSSUQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUdyaWRMYXlvdXQoZ3JvdXAsIHN1YmdyaWQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERhdGFHcm91cExheW91dFR5cGUuRkxPVzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRmxvd0xheW91dChncm91cCwgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0YUdyb3VwTGF5b3V0VHlwZS5MRUdBQ1k6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUxlZ2FjeUxheW91dChncm91cCwgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0YXNrIGxheW91dCB0eXBlICcke3RoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0LnR5cGV9J2ApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJncmlkLmZpbmFsaXplKCk7XG4gICAgICAgICAgICByZXN1bHQuc2V0KHN1YmdyaWQuc3ViZ3JpZElkLCBzdWJncmlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJGaWVsZHMocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVuZGVyRmllbGRzKHN1YmdyaWRzOiBNYXA8c3RyaW5nLCBTdWJncmlkPikge1xuICAgICAgICBjb25zdCBzdWJncmlkc0FycmF5ID0gQXJyYXkuZnJvbShzdWJncmlkcy52YWx1ZXMoKSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5lbmFibGVBc3luY1JlbmRlcmluZ0Zvck5ld0ZpZWxkc1xuICAgICAgICAgICAgJiYgISh0aGlzLl9hc3luY1JlbmRlcmluZ0NvbmZpZy5lbmFibGVBc3luY1JlbmRlcmluZ09uVGFza0V4cGFuZCAmJiB0aGlzLnRhc2tDb250ZW50U2VydmljZS5pc0V4cGFuZGluZykpIHtcbiAgICAgICAgICAgIHN1YmdyaWRzQXJyYXkuZm9yRWFjaChzdWJncmlkID0+IHtcbiAgICAgICAgICAgICAgICBzdWJncmlkLmRpc3BsYXlBbGxGaWVsZHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250ZW50KHN1YmdyaWRzQXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy50YXNrQ29udGVudFNlcnZpY2UuaXNFeHBhbmRpbmcgJiYgdGhpcy5fYXN5bmNSZW5kZXJpbmdDb25maWcuZW5hYmxlQXN5bmNSZW5kZXJpbmdPblRhc2tFeHBhbmQpKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlJC52YWx1ZS5mb3JFYWNoKG9sZFN1YmdyaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJncmlkcy5oYXMob2xkU3ViZ3JpZC5zdWJncmlkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YmdyaWRzLmdldChvbGRTdWJncmlkLnN1YmdyaWRJZCkuZGV0ZXJtaW5lS2VwdEZpZWxkcyhvbGRTdWJncmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVuZGVyQ29udGVudChzdWJncmlkc0FycmF5KTtcbiAgICAgICAgdGhpcy5zcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKHN1YmdyaWRzQXJyYXkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzcHJlYWRGaWVsZFJlbmRlcmluZ092ZXJUaW1lKHN1YmdyaWRzOiBBcnJheTxTdWJncmlkPiwgaXRlcmF0aW9uID0gMCkge1xuICAgICAgICB0aGlzLl9hc3luY1JlbmRlclRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpdGVyYXRpb24gPCBzdWJncmlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2FzeW5jUmVuZGVyVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJncmlkc1tpdGVyYXRpb25dLnJlbmRlckNvbnRlbnRPdmVyVGltZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3ByZWFkRmllbGRSZW5kZXJpbmdPdmVyVGltZShzdWJncmlkcywgaXRlcmF0aW9uICsgMSk7XG4gICAgICAgICAgICAgICAgfSwgaXRlcmF0aW9uID09PSAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvbmVzIHRoZSBjb250ZW50IG9mIHRoZSBkYXRhIGdyb3VwcyB0byBwcmV2ZW50IHVuaW50ZW50aW9uYWwgbWVtb3J5IGFjY2Vzc2VzIHRvIHNvdXJjZSBkYXRhLlxuICAgICAqIFJlYXJyYW5nZXMgdGhlIGRhdGEgZ3JvdXBzIHRvIGFjY29tbW9kYXRlIHRhc2tyZWZzLiBGaWx0ZXJzIG91dCBoaWRkZW4gYW5kIGZvcmJpZGRlbiBmaWVsZHMuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHNcbiAgICAgKiBAcmV0dXJucyB0aGUgcHJlcHJvY2Vzc2VzIGRhdGEgZ3JvdXBzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByZXByb2Nlc3NEYXRhR3JvdXBzKGRhdGFHcm91cHM6IEFycmF5PERhdGFHcm91cD4pOiBBcnJheTxEYXRhR3JvdXA+IHtcbiAgICAgICAgZGF0YUdyb3VwcyA9IHRoaXMuY2xvbmVBbmRGaWx0ZXJIaWRkZW4oZGF0YUdyb3Vwcyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBkYXRhR3JvdXBzW2ldO1xuICAgICAgICAgICAgaWYgKCFncm91cC5maWVsZHMuc29tZShmID0+IHRoaXMuaXNUYXNrUmVmKGYpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0gdGhpcy5zcGxpdERhdGFHcm91cE9uVGFza1JlZihncm91cCk7XG4gICAgICAgICAgICBpZiAoc3BsaXQuc3RhcnRHcm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3BsaXQuc3RhcnRHcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzcGxpdC50YXNrUmVmLnZhbHVlLmxlbmd0aCA9PT0gMCB8fCBzcGxpdC5lbmRHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0LmVuZEdyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUdyb3Vwcy5zcGxpY2UoaSArIDEsIDAsIHNwbGl0LmVuZEdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdENoaWxkID0gZGF0YUdyb3Vwc1tpICsgMV07IC8vIHRoZSBkYXRhIGdyb3VwIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cyBJUyBBTFdBWVMgYSBkaXJlY3QgY2hpbGRcbiAgICAgICAgICAgIGxldCBmaXJzdE5vbkRlc2NlbmRhbnRJbmRleCA9IGkgKyAyO1xuICAgICAgICAgICAgZm9yICg7IGZpcnN0Tm9uRGVzY2VuZGFudEluZGV4IDwgZGF0YUdyb3Vwcy5sZW5ndGg7IGZpcnN0Tm9uRGVzY2VuZGFudEluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0R3JvdXAgPSBkYXRhR3JvdXBzW2ZpcnN0Tm9uRGVzY2VuZGFudEluZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEdyb3VwLm5lc3RpbmdMZXZlbCA9PT0gdW5kZWZpbmVkIHx8IG5leHRHcm91cC5uZXN0aW5nTGV2ZWwgPCBkaXJlY3RDaGlsZC5uZXN0aW5nTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBibG9jayBvZiBuZXN0ZWQgZGF0YSBncm91cHNcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0R3JvdXAubmVzdGluZ0xldmVsID09PSBkaXJlY3RDaGlsZC5uZXN0aW5nTGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgJiYgKG5leHRHcm91cC5wYXJlbnRUYXNrUmVmSWQgIT09IHNwbGl0LnRhc2tSZWYuc3RyaW5nSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFzcGxpdC50YXNrUmVmLnZhbHVlLnNvbWUocmVmZmVkVGFza0lkID0+IHJlZmZlZFRhc2tJZCA9PT0gbmV4dEdyb3VwLnBhcmVudFRhc2tJZCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YUdyb3Vwcy5zcGxpY2UoZmlyc3ROb25EZXNjZW5kYW50SW5kZXgsIDAsIHNwbGl0LmVuZEdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZSBvZiB0aGUgcHJvdmlkZWQgZGF0YSBncm91cCBhcnJheSBhbmQgZmlsdGVycyBhd2F5IGFueSBmaWVsZHMgYW5kIGRhdGEgZ3JvdXBzIHRoYXQgYXJlIG1hcmtlZCBhcyBoaWRkZW4uXG4gICAgICogQmVjYXVzZSBvZiB0aGUgZHVwbGljYXRpb24gdGhlIGZpbHRlcmluZyBkb2Vzbid0IGFmZmVjdCB0aGUgb3JpZ2luYWwgaW5zdGFuY2VzIGFuZCB0aGV5IHJlbWFpbiB1bmNoYW5nZWQuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cHMgdGhlIGRhdGEgZ3JvdXBzIHRoYXQgc2hvdWxkIGJlIGZpbHRlcmVkXG4gICAgICogQHJldHVybnMgdGhlIGZpbHRlcmVkIGR1cGxpY2F0ZWQgZGF0YSBncm91cHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvbmVBbmRGaWx0ZXJIaWRkZW4oZGF0YUdyb3VwczogQXJyYXk8RGF0YUdyb3VwPik6IEFycmF5PERhdGFHcm91cD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkYXRhR3JvdXBzLm1hcChncm91cCA9PiB7XG4gICAgICAgICAgICBjb25zdCBnID0gey4uLmdyb3VwfTtcbiAgICAgICAgICAgIGcuZmllbGRzID0gZy5maWVsZHMuZmlsdGVyKGZpZWxkID0+ICFmaWVsZC5iZWhhdmlvci5oaWRkZW4gJiYgIWZpZWxkLmJlaGF2aW9yLmZvcmJpZGRlbikubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5yZXNldExvY2FsTGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1Rhc2tSZWYoZmllbGQ6IERhdGFGaWVsZDx1bmtub3duPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmllbGQgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU29ydHMgdGhlIGlucHV0IGRhdGEgZ3JvdXAgYmFzZWQgb24gdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgZmllbGRzIGFuZCBzcGxpdHMgaXQgaW50byBwYXJ0cyBvbiB0aGUgZmlyc3QgdGFzayByZWYuXG4gICAgICogSWYgc29tZSBmaWVsZHMgYXBwZWFyIGJlZm9yZSB0aGUgZmlyc3QgdGFzayByZWYgdGhleSBhcmUgZXh0cmFjdGVkIGludG8gYSBuZXcgW3N0YXJ0R3JvdXBde0BsaW5rIFNwbGl0RGF0YUdyb3VwI3N0YXJ0R3JvdXB9LlxuICAgICAqIElmIHNvbWUgZmllbGRzIGFwcGVhciBhZnRlciB0aGUgZmlyc3QgdGFzayByZWYgdGhleSBhcmUgZXh0cmFjdGVkIGludG8gYSBuZXcgW2VuZEdyb3VwXXtAbGluayBTcGxpdERhdGFHcm91cCNlbmRHcm91cH0uXG4gICAgICogQHBhcmFtIGRhdGFHcm91cFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3BsaXREYXRhR3JvdXBPblRhc2tSZWYoZGF0YUdyb3VwOiBEYXRhR3JvdXApOiBTcGxpdERhdGFHcm91cCB7XG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuc29ydCgoYSwgYikgPT4gYS5sb2NhbExheW91dC55IC0gYi5sb2NhbExheW91dC55KTtcbiAgICAgICAgY29uc3QgdGFza1JlZlBvc2l0aW9uID0gZGF0YUdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiB0aGlzLmlzVGFza1JlZihmKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU3BsaXREYXRhR3JvdXAgPSB7XG4gICAgICAgICAgICB0YXNrUmVmOiBkYXRhR3JvdXAuZmllbGRzW3Rhc2tSZWZQb3NpdGlvbl1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGFza1JlZlBvc2l0aW9uICE9PSAwKSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhcnRHcm91cCA9IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YUdyb3VwLnRpdGxlLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogZGF0YUdyb3VwLmFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IGRhdGFHcm91cC5sYXlvdXQsXG4gICAgICAgICAgICAgICAgc3RyZXRjaDogZGF0YUdyb3VwLnN0cmV0Y2gsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBkYXRhR3JvdXAuZmllbGRzLnNsaWNlKDAsIHRhc2tSZWZQb3NpdGlvbiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhc2tSZWZQb3NpdGlvbiAhPT0gZGF0YUdyb3VwLmZpZWxkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXN1bHQuZW5kR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGRhdGFHcm91cC5hbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgbGF5b3V0OiBkYXRhR3JvdXAubGF5b3V0LFxuICAgICAgICAgICAgICAgIHN0cmV0Y2g6IGRhdGFHcm91cC5zdHJldGNoLFxuICAgICAgICAgICAgICAgIGZpZWxkczogZGF0YUdyb3VwLmZpZWxkcy5zbGljZSh0YXNrUmVmUG9zaXRpb24gKyAxKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXN1bHQuZW5kR3JvdXAuZmllbGRzLmZvckVhY2goZiA9PiB7XG4gICAgICAgICAgICAgICAgZi5sb2NhbExheW91dC55ID0gZi5sb2NhbExheW91dC55IC0gcmVzdWx0LnRhc2tSZWYubG9jYWxMYXlvdXQueSAtIDE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIGxheW91dCBkYXRhIGZvciBhIHNpbmdsZSBkYXRhIGdyb3VwIHdpdGggZ3JpZCBsYXlvdXQuIFRoZSByZXN1bHRpbmcgbGF5b3V0IGlzIHNhdmVkIGludG8gdGhlIGlucHV0IG9iamVjdHMuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cCB0aGUgZGF0YSBncm91cCB0aGF0IHNob3VsZCBiZSBsYWlkIG91dCBpbnRvIGEgZ3JpZFxuICAgICAqIEBwYXJhbSBzdWJncmlkIHRoZSBvYmplY3QgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiB0aGUgY29tcHV0ZWQgbGF5b3V0aW5nIHVuaXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29tcHV0ZUdyaWRMYXlvdXQoZGF0YUdyb3VwOiBEYXRhR3JvdXAsIHN1YmdyaWQ6IFN1YmdyaWQpIHtcbiAgICAgICAgY29uc3QgbG9jYWxHcmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuXG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuZm9yRWFjaChkYXRhRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhRmllbGQubG9jYWxMYXlvdXRcbiAgICAgICAgICAgICAgICB8fCBkYXRhRmllbGQubG9jYWxMYXlvdXQueCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfHwgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LnkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHx8ICFkYXRhRmllbGQubG9jYWxMYXlvdXQucm93c1xuICAgICAgICAgICAgICAgIHx8ICFkYXRhRmllbGQubG9jYWxMYXlvdXQuY29scykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFlvdSBjYW5ub3QgdXNlICdncmlkJyBsYXlvdXQgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBsYXlvdXQgb2YgdGhlIGRhdGEgZmllbGRzIChmaWVsZCBJRDogJHtkYXRhRmllbGQuc3RyaW5nSWR9KWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAobG9jYWxHcmlkLmxlbmd0aCA8IGRhdGFGaWVsZC5sb2NhbExheW91dC55ICsgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LnJvd3MpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEdyaWQucHVzaCh0aGlzLm5ld0dyaWRSb3coc3ViZ3JpZC5jb2xzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRWxlbWVudCA9IHN1YmdyaWQuYWRkRmllbGQoZGF0YUZpZWxkLCB0aGlzLl9maWVsZENvbnZlcnRlci5yZXNvbHZlVHlwZShkYXRhRmllbGQpKTtcbiAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UobG9jYWxHcmlkLCBkYXRhRmllbGQubG9jYWxMYXlvdXQueSwgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LngsXG4gICAgICAgICAgICAgICAgZGF0YUZpZWxkLmxvY2FsTGF5b3V0LmNvbHMsIGZpZWxkRWxlbWVudC5ncmlkQXJlYUlkLCBkYXRhRmllbGQubG9jYWxMYXlvdXQucm93cyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29sbGFwc2VHcmlkRW1wdHlTcGFjZShsb2NhbEdyaWQsIGRhdGFHcm91cC5sYXlvdXQsIHN1YmdyaWQpO1xuXG4gICAgICAgIGxvY2FsR3JpZC5mb3JFYWNoKGxvY2FsR3JpZFJvdyA9PiBzdWJncmlkLmFkZFJvdyhsb2NhbEdyaWRSb3cpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBlbXB0eSByb3cgcmVtb3ZhbCBhbmQgZmllbGQgY29tcGFjdGluZyBydWxlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbGF5b3V0IGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgaW5wdXQgZ3JpZCBpcyBtb2RpZmllZCBpbiBwbGFjZS5cbiAgICAgKiBAcGFyYW0gZ3JpZCB0aGUgc3RhdGUgb2YgdGhlIGdyaWQgdGhhdCBzaG91bGQgYmUgbW9kaWZpZWRcbiAgICAgKiBAcGFyYW0gbGF5b3V0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpZWQgY29tcGFjdGluZyBydWxlc1xuICAgICAqIEBwYXJhbSBzdWJncmlkIHRoZSBvYmplY3QgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiB0aGUgY29tcHV0ZWQgbGF5b3V0aW5nIHVuaXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VHcmlkRW1wdHlTcGFjZShncmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiwgbGF5b3V0OiBEYXRhR3JvdXBMYXlvdXQsIHN1YmdyaWQ6IFN1YmdyaWQpIHtcbiAgICAgICAgY29uc3QgaGlkZVJvd3MgPSBsYXlvdXQuaGlkZUVtcHR5Um93cyA/PyB0aGlzLl9kZWZhdWx0SGlkZUVtcHR5Um93cztcblxuICAgICAgICBpZiAoaGlkZVJvd3MgPT09IERhdGFHcm91cEhpZGVFbXB0eVJvd3MuQUxMKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5Um93cyhncmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAobGF5b3V0LmNvbXBhY3REaXJlY3Rpb24gPz8gdGhpcy5fZGVmYXVsdENvbXBhY3REaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgRGF0YUdyb3VwQ29tcGFjdC5VUDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBhY3RGaWVsZHNVcChncmlkLCBoaWRlUm93cywgc3ViZ3JpZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBhbnkgZWxlbWVudCBhcyBmYXIgVVAgYXMgaXQgY2FuIGdvLiBFbGVtZW50cyB0aGF0IHdlcmUgb3JpZ2luYWxseSBkZWNsYXJlZCBpbiB0aGUgc2FtZSByb3cgbWlnaHQgZW5kIHVwIGluIGRpZmZlcmVudCByb3dzLlxuICAgICAqIFJlc3VsdGluZyB0cmFpbGluZyBlbXB0eSByb3dzIGFyZSByZW1vdmVkLlxuICAgICAqXG4gICAgICogVGhlIGlucHV0IGdyaWQgaXMgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIHN0YXRlIG9mIHRoZSBncmlkIHRoYXQgc2hvdWxkIGJlIG1vZGlmaWVkXG4gICAgICogQHBhcmFtIGhpZGVSb3dzIGNvbmZpZ3VyYXRpb24gZm9yIGVtcHR5IHJvdyByZW1vdmFsIGR1cmluZyB0aGUgY29tcGFjdGluZyBwcm9jZXNzXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wYWN0RmllbGRzVXAoZ3JpZDogQXJyYXk8QXJyYXk8c3RyaW5nPj4sIGhpZGVSb3dzOiBEYXRhR3JvdXBIaWRlRW1wdHlSb3dzLCBzdWJncmlkOiBTdWJncmlkKSB7XG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBncmlkLmxlbmd0aDsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gZ3JpZFtyb3dJbmRleF07XG5cbiAgICAgICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCByb3cubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd1tjb2x1bW5JbmRleF0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBmb3VuZEVsZW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgZm91bmRFbGVtZW50Um93SW5kZXggPSByb3dJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgZm9yICg7IGZvdW5kRWxlbWVudFJvd0luZGV4IDwgZ3JpZC5sZW5ndGg7IGZvdW5kRWxlbWVudFJvd0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4XSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAwICYmIGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4IC0gMV0gPT09IGdyaWRbZm91bmRFbGVtZW50Um93SW5kZXhdW2NvbHVtbkluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50RGltZW5zaW9ucyA9IHRoaXMuZ2V0RWxlbWVudERpbWVuc2lvbnMoZ3JpZCwgY29sdW1uSW5kZXgsIGZvdW5kRWxlbWVudFJvd0luZGV4LCBzdWJncmlkKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXJlYUVtcHR5KGdyaWQsIGNvbHVtbkluZGV4LCByb3dJbmRleCwgZWxlbWVudERpbWVuc2lvbnMud2lkdGgsIGZvdW5kRWxlbWVudFJvd0luZGV4IC0gcm93SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBncmlkW2ZvdW5kRWxlbWVudFJvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UoZ3JpZCwgZm91bmRFbGVtZW50Um93SW5kZXgsIGNvbHVtbkluZGV4LCBlbGVtZW50RGltZW5zaW9ucy53aWR0aCwgJycsIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9jY3VweVNwYWNlKGdyaWQsIHJvd0luZGV4LCBjb2x1bW5JbmRleCwgZWxlbWVudERpbWVuc2lvbnMud2lkdGgsIGVsZW1lbnQsIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChoaWRlUm93cyAhPT0gRGF0YUdyb3VwSGlkZUVtcHR5Um93cy5OT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBvbmx5IGNoZWNrIHRoZSByb3dzIHBvdGVudGlhbGx5IGNsZWFyZWQgYnkgbW92aW5nIHRoZSBncmlkIGVsZW1lbnQgdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlSb3dzKGdyaWQsIGZvdW5kRWxlbWVudFJvd0luZGV4LCBmb3VuZEVsZW1lbnRSb3dJbmRleCArIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHJvd3MgZnJvbSB0aGUgZ3JpZCB0aGF0IG9ubHkgY29udGFpbiBlbXB0eSBlbGVtZW50cyAoYXJlIGVtcHR5KS4gVGhlIGdyaWQgaXMgbW9kaWZpZWQgaW4gcGxhY2UuXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIGdyaWQgdGhhdCBzaG91bGQgaGF2ZSBpdCdzIGVtcHR5IHJvd3MgcmVtb3ZlZFxuICAgICAqIEBwYXJhbSBmaXJzdFJvdyB0aGUgMCBiYXNlZCBpbmRleCBvZiB0aGUgZmlyc3Qgcm93IHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQuIFVzZSAwIHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZ3JpZC5cbiAgICAgKlxuICAgICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZ3JpZCB3aWxsIGJlIGNoZWNrZWQgZnJvbSB0aGUgZmlyc3Qgcm93LlxuICAgICAqXG4gICAgICogQHBhcmFtIGxhc3RSb3cgdGhlIDAgYmFzZWQgaW5kZXggb2YgdGhlIHJvdyB3aGVyZSB0aGUgY2hlY2tpbmcgc2hvdWxkIGVuZC4gVGhlIHJvdyB3aXRoIHRoaXMgaW5kZXggaXMgbm90IGNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCB0aGUgZW50aXJlIGdyaWQgZnJvbSB0aGUgYGZpcnN0Um93YCB3aWxsIGJlIGNoZWNrZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIHZhbHVlIHRoYXQgaXMgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYGZpcnN0Um93YCBpcyBwcm92aWRlZCBubyBjaGVja3Mgd2lsbCBiZSBwcmVmb3JtZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbW92ZUVtcHR5Um93cyhncmlkOiBBcnJheTxBcnJheTxzdHJpbmc+PiwgZmlyc3RSb3cgPSAwLCBsYXN0Um93ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICAgIGxldCBpID0gZmlyc3RSb3c7XG4gICAgICAgIHdoaWxlIChpIDwgZ3JpZC5sZW5ndGggJiYgaSA8IGxhc3RSb3cpIHtcbiAgICAgICAgICAgIGlmIChncmlkW2ldLmV2ZXJ5KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGVsZW1lbnQgaW4gdGhlIGdyaWQgd2l0aCBpdHMgdG9wLWxlZnQgY29ybmVyIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gZ3JpZCB0aGUgZ3JpZCBvZiBlbGVtZW50c1xuICAgICAqIEBwYXJhbSB4IHRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIGRlc2lyZWQgZWxlbWVudHMgdG9wLWxlZnQgY29ybmVyXG4gICAgICogQHBhcmFtIHkgdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgZGVzaXJlZCBlbGVtZW50cyB0b3AtbGVmdCBjb3JuZXJcbiAgICAgKiBAcGFyYW0gc3ViZ3JpZCB0aGUgb2JqZWN0IHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2YgdGhlIGNvbXB1dGVkIGxheW91dGluZyB1bml0XG4gICAgICogQHJldHVybnMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNwZWNpZmllZCBlbGVtZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEVsZW1lbnREaW1lbnNpb25zKGdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+LCB4OiBudW1iZXIsIHk6IG51bWJlciwgc3ViZ3JpZDogU3ViZ3JpZCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBncmlkW3ldW3hdO1xuICAgICAgICBsZXQgd2lkdGggPSAxO1xuICAgICAgICB3aGlsZSAoeCArIHdpZHRoIDwgc3ViZ3JpZC5jb2xzICYmIGdyaWRbeV1beCArIHdpZHRoXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgd2lkdGgrKztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaGVpZ2h0ID0gMTtcbiAgICAgICAgd2hpbGUgKHkgKyBoZWlnaHQgPCBncmlkLmxlbmd0aCAmJiBncmlkW3kgKyBoZWlnaHRdW3hdID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICBoZWlnaHQrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge3dpZHRoLCBoZWlnaHR9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGFyZWEgaW4gdGhlIGdyaWQgY29udGFpbnMgbm8gZWxlbWVudHMsIG9yIG5vdFxuICAgICAqIEBwYXJhbSBncmlkIHRoZSBncmlkIG9mIGVsZW1lbnRzXG4gICAgICogQHBhcmFtIHggdGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgdGVzdGVkIGFyZWFzIHRvcC1sZWZ0IGNvcm5lclxuICAgICAqIEBwYXJhbSB5IHRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHRlc3RlZCBhcmVhcyB0b3AtbGVmdCBjb3JuZXJcbiAgICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIG9mIHRoZSB0ZXN0ZWQgYXJlYVxuICAgICAqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCBvZiB0aGUgdGVzdGVkIGFyZWFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNBcmVhRW1wdHkoZ3JpZDogQXJyYXk8QXJyYXk8c3RyaW5nPj4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGxldCBpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IHg7IGogPCB4ICsgd2lkdGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChncmlkW2ldW2pdICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBsYXlvdXQgZGF0YSBmb3IgYSBzaW5nbGUgZGF0YSBncm91cCB3aXRoIGZsb3cgbGF5b3V0LiBUaGUgcmVzdWx0aW5nIGxheW91dCBpcyBzYXZlZCBpbnRvIHRoZSBpbnB1dCBvYmplY3RzLlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgdGhhdCBzaG91bGQgYmUgbGFpZCBvdXQgaW50byBhIGdyaWQgdXNpbmcgdGhlIGZsb3cgYWxnb3JpdGhtXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlRmxvd0xheW91dChkYXRhR3JvdXA6IERhdGFHcm91cCwgc3ViZ3JpZDogU3ViZ3JpZCkge1xuICAgICAgICB0aGlzLmZsb3dGaWVsZHMoZGF0YUdyb3VwLCBzdWJncmlkLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbGF5b3V0IGRhdGEgZm9yIGEgc2luZ2xlIGRhdGEgZ3JvdXAgd2l0aCBsZWdhY3kgbGF5b3V0LiBUaGUgcmVzdWx0aW5nIGxheW91dCBpcyBzYXZlZCBpbnRvIHRoZSBpbnB1dCBvYmplY3RzLlxuICAgICAqXG4gICAgICogVGhlIGxlZ2FjeSBsYXlvdXQgZm9yY2VzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBiZSA0IGFuZCBsb2dzIGEgd2FybmluZyBpZiB0aGlzIHdhcyBub3QgdGhlIGNhc2UuXG4gICAgICogQHBhcmFtIGRhdGFHcm91cCB0aGUgZGF0YSBncm91cCB0aGF0IHNob3VsZCBiZSBsYWlkIG91dCBpbnRvIGEgZ3JpZCB1c2luZyB0aGUgbGVnYWN5IGFsZ29yaXRobSB1c2VkIGluIE5BRSB2ZXJzaW9ucyA8IDQuMC4wXG4gICAgICogQHBhcmFtIHN1YmdyaWQgdGhlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBjb250ZXh0IG9mIHRoZSBjb21wdXRlZCBsYXlvdXRpbmcgdW5pdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb21wdXRlTGVnYWN5TGF5b3V0KGRhdGFHcm91cDogRGF0YUdyb3VwLCBzdWJncmlkOiBTdWJncmlkKSB7XG4gICAgICAgIGlmIChzdWJncmlkLmNvbHMgIT09IDQpIHtcbiAgICAgICAgICAgIHN1YmdyaWQuY29scyA9IDQ7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybihgVGFzayB3aXRoIGlkICcke3RoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2suc3RyaW5nSWR9JyBoYXMgYSBkYXRhIGdyb3VwIHdpdGggbGVnYWN5IGxheW91dCB3aXRoIGEgYFxuICAgICAgICAgICAgICAgICsgYG5vbi1kZWZhdWx0IG51bWJlciBvZiBjb2x1bW5zLiBJZiB5b3Ugd2FudCB0byB1c2UgYSBsYXlvdXQgd2l0aCBkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbHVtbnMgdGhhbiAyIHVzZSBhIGRpZmZlcmVudCBgXG4gICAgICAgICAgICAgICAgKyBgbGF5b3V0IHR5cGUgaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmxvd0ZpZWxkcyhkYXRhR3JvdXAsIHN1YmdyaWQsIDIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExheXMgb3V0IHRoZSBmaWVsZHMgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBmcm9tIHRvcCB0byBib3R0b20uIElmIHRoZSB3aWR0aCBpcyBncmVhdGVyIHRoYW4gMSBhbmQgdGhlIGJsb2NrIG9mIGZsb3dlZCBmaWVsZHMgZG9lc24ndCBmaXRcbiAgICAgKiBuZWF0bHkgaW50byB0aGUgY29sdW1ucyAoaWYgdGhlIHdpZHRoIG9mIGEgc2luZ2xlIGZpZWxkIGlzIG5vdCBhIGRpdmlzb3Igb2YgY29sdW1uIGNvdW50KSwgdGhlbiB0aGUgZW50aXJlIGJsb2NrIG9mIGZpZWxkcyBpc1xuICAgICAqIGxlZnQgYWxpZ25lZC4gVGhlIGxhc3Qgcm93IG9mIGZpZWxkcyBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0LCBjZW50ZXIgb3IgcmlnaHQgYmFzZWQgb24gdGhlIGRhdGEgZ3JvdXBzIHByb3BlcnR5LlxuICAgICAqIElmIHRoZSBsYXN0IHJvdyBjYW5ub3QgYmUgYWxpZ25lZCB0byB0aGUgZXhhY3QgY2VudGVyIGl0IGlzIG9mZnNldCBvbmUgZ3JpZCB0aWxlIHRvIHRoZSBsZWZ0LlxuICAgICAqIEBwYXJhbSBkYXRhR3JvdXAgdGhlIGRhdGEgZ3JvdXAgdGhhdCBzaG91bGQgYmUgbGFpZCBvdXQgaW50byBhIGdyaWRcbiAgICAgKiBAcGFyYW0gc3ViZ3JpZCB0aGUgb2JqZWN0IHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2YgdGhlIGNvbXB1dGVkIGxheW91dGluZyB1bml0XG4gICAgICogQHBhcmFtIGZpZWxkV2lkdGggdGhlIG51bWJlciBvZiBncmlkIHRpbGVzLCB0aGF0IHNob3VsZCBiZSBvY2N1cGllZCBieSBlYWNoIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZsb3dGaWVsZHMoZGF0YUdyb3VwOiBEYXRhR3JvdXAsIHN1YmdyaWQ6IFN1YmdyaWQsIGZpZWxkV2lkdGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBmaWVsZHNQZXJSb3cgPSBNYXRoLmZsb29yKHN1YmdyaWQuY29scyAvIGZpZWxkV2lkdGgpO1xuICAgICAgICBjb25zdCBtYXhYUG9zaXRpb24gPSBmaWVsZFdpZHRoICogKGZpZWxkc1BlclJvdyAtIDEpO1xuXG4gICAgICAgIGxldCB4UG9zaXRpb24gPSAwO1xuICAgICAgICBjb25zdCBsb2NhbEdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgICAgIGRhdGFHcm91cC5maWVsZHMuZm9yRWFjaCgoZGF0YUZpZWxkLCBkYXRhRmllbGRDb3VudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGRFbGVtZW50ID0gc3ViZ3JpZC5hZGRGaWVsZChkYXRhRmllbGQsIHRoaXMuX2ZpZWxkQ29udmVydGVyLnJlc29sdmVUeXBlKGRhdGFGaWVsZCkpO1xuICAgICAgICAgICAgaWYgKGRhdGFHcm91cC5zdHJldGNoKSB7XG4gICAgICAgICAgICAgICAgc3ViZ3JpZC5hZGRSb3codGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scywgZmllbGRFbGVtZW50LmdyaWRBcmVhSWQpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgICBpZiAoeFBvc2l0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxHcmlkLnB1c2godGhpcy5uZXdHcmlkUm93KHN1YmdyaWQuY29scykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHhQb3NpdGlvbiA9PT0gMCAmJiB0aGlzLmlzTGFzdFJvdyhkYXRhRmllbGRDb3VudCwgZGF0YUdyb3VwLCBmaWVsZHNQZXJSb3cpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzSW5MYXN0Um93ID0gZGF0YUdyb3VwLmZpZWxkcy5sZW5ndGggJSBmaWVsZHNQZXJSb3c7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93V2lkdGggPSBtYXhYUG9zaXRpb24gKyBmaWVsZFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhR3JvdXAuYWxpZ25tZW50ID09PSBEYXRhR3JvdXBBbGlnbm1lbnQuRU5EKSB7XG4gICAgICAgICAgICAgICAgICAgIHhQb3NpdGlvbiA9IHJvd1dpZHRoIC0gZmllbGRXaWR0aCAqIGZpZWxkc0luTGFzdFJvdztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFHcm91cC5hbGlnbm1lbnQgPT09IERhdGFHcm91cEFsaWdubWVudC5DRU5URVIpIHtcbiAgICAgICAgICAgICAgICAgICAgeFBvc2l0aW9uID0gTWF0aC5mbG9vcigocm93V2lkdGggLSBmaWVsZHNJbkxhc3RSb3cgKiBmaWVsZFdpZHRoKSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub2NjdXB5U3BhY2UobG9jYWxHcmlkLCBsb2NhbEdyaWQubGVuZ3RoIC0gMSwgeFBvc2l0aW9uLCBmaWVsZFdpZHRoLCBmaWVsZEVsZW1lbnQuZ3JpZEFyZWFJZCk7XG5cbiAgICAgICAgICAgIHhQb3NpdGlvbiArPSBmaWVsZFdpZHRoO1xuICAgICAgICAgICAgaWYgKHhQb3NpdGlvbiA+IG1heFhQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHhQb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NhbEdyaWQuZm9yRWFjaChyb3cgPT4gc3ViZ3JpZC5hZGRSb3cocm93KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpZHRoIHdpZHRoIG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gY29udGVudCB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmaWxsIGFsbCBlbGVtZW50cyBpbiB0aGUgcm93XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG5ld0dyaWRSb3cod2lkdGg6IG51bWJlciwgY29udGVudCA9ICcnKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBBcnJheSh3aWR0aCkuZmlsbChjb250ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyB0aGUgc3BlY2lmaWVkIHJlY3Rhbmd1bGFyIGFyZWEgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBwcm92aWRlZCBncmlkLlxuICAgICAqXG4gICAgICogSWYgdGhlIHNwZWNpZmllZCBhcmVhIGNvbnRhaW5zIHZhbHVlcyBvdGhlciB0aGFuIHRoZSBlbXB0eSBzdHJpbmcgYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gICAgICogQHBhcmFtIGdyaWQgdGhlIGdyaWQgdGhhdCBzaG91bGQgYmUgbW9kaWZpZWRcbiAgICAgKiBAcGFyYW0geSB0aGUgMCBiYXNlZCByb3cgaW5kZXggb2YgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZmlsbGVkIGFyZWFcbiAgICAgKiBAcGFyYW0geCB0aGUgMCBiYXNlZCBjb2x1bW4gaW5kZXggb2YgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZmlsbGVkIGFyZWFcbiAgICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIG9mIHRoZSBmaWxsZWQgYXJlYVxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBpcyBzZXQgaW50byBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGluc2lkZSB0aGUgc3BlY2lmaWVkIGFyZWFcbiAgICAgKiBAcGFyYW0gaGVpZ2h0IHRoZSBoZWlnaHQgb2YgdGhlIGZpbGxlZCBhcmVhXG4gICAgICogQHBhcmFtIGNoZWNrT2NjdXBhbnRzIHdoZXRoZXIgdGhlIGZpbGxlZCBhcmVhIHNob3VsZCBiZSBjaGVja2VkIGZvciBvdGhlciBlbGVtZW50cy5cbiAgICAgKiBJZiBhIGNoZWNrIGlzIHBlcmZvcm1lZCBhbiBlcnJvciB3aWxsIGJlIHRocm93biBpZiBlbGVtZW50cyBhcmUgZm91bmQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9jY3VweVNwYWNlKGdyaWQ6IEFycmF5PEFycmF5PHN0cmluZz4+LCB5OiBudW1iZXIsIHg6IG51bWJlciwgd2lkdGg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZywgaGVpZ2h0ID0gMSwgY2hlY2tPY2N1cGFudHMgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGogPSB5OyBqIDwgeSArIGhlaWdodDsgaisrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0geDsgaSA8IHggKyB3aWR0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrT2NjdXBhbnRzICYmIGdyaWRbal1baV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBsYWNlIGVsZW1lbnQgJHt2YWx1ZX0gaW50byB0aGUgZ3JpZCBsYXlvdXQsIGJlY2F1c2UgaXQncyBzcGFjZSAoeDogJHtpfSwgeTogJHtqfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAgaXMgYWxyZWFkeSBvY2N1cGllZCBieSBhbm90aGVyIGVsZW1lbnQgKCR7Z3JpZFtqXVtpXX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdyaWRbal1baV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIGNoZWNrZWQgZWxlbWVudCB3aXRoaW4gaXRzIGRhdGEgZ3JvdXBcbiAgICAgKiBAcGFyYW0gZGF0YUdyb3VwIHRoZSBjaGVja2VkIGRhdGEgZ3JvdXBcbiAgICAgKiBAcGFyYW0gZmllbGRzUGVyUm93IHRoZSBudW1iZXIgb2YgZmllbGRzIHRoYXQgaXMgcmVxdWlyZWQgdG8gZmlsbCBhbiBlbnRpcmUgcm93XG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgZmllbGQgYXQgdGhlIGdpdmVuIGluZGV4IGlzIHdpdGhpbiB0aGUgbGFzdCByb3cgb2YgZWxlbWVudHMgb2YgdGhlIHByb3ZpZGVkIGRhdGEgZ3JvdXAuXG4gICAgICogTm90ZSB0aGF0IGlmIHRoZSBsYXN0IHJvdyBjb250YWlucyBlbm91Z2ggZWxlbWVudHMgdG8gYmUgY29tcGxldGVseSBmaWxsZWQgdGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0xhc3RSb3coaW5kZXg6IG51bWJlciwgZGF0YUdyb3VwOiBEYXRhR3JvdXAsIGZpZWxkc1BlclJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCArIGZpZWxkc1BlclJvdyA+PSBkYXRhR3JvdXAuZmllbGRzLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95cyB0aGUgcHJldmlvdXMgY29udGVudCBhbmQgcHVzaGVzIHRoZSBuZXcgY29udGVudCBpbnRvIHRoZSBzdHJlYW1cbiAgICAgKiBAcGFyYW0gY29udGVudCB0aGUgbmV3IGNvbnRlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVyQ29udGVudChjb250ZW50OiBBcnJheTxTdWJncmlkPiA9IFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UkLnZhbHVlLmZvckVhY2goc3ViZ3JpZCA9PiBzdWJncmlkLmRlc3Ryb3koKSk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UkLm5leHQoY29udGVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVN1YmdyaWRJZChkYXRhR3JvdXA6IERhdGFHcm91cCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBpZEJhc2U6IHN0cmluZztcbiAgICAgICAgaWYgKGRhdGFHcm91cC5wYXJlbnRUYXNrSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWRCYXNlID0gW2RhdGFHcm91cC5wYXJlbnRUYXNrSWQsIGRhdGFHcm91cC5wYXJlbnRUYXNrUmVmSWQsIGRhdGFHcm91cC5uZXN0aW5nTGV2ZWxdLmpvaW4oJyMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlkQmFzZSA9ICdyb290JztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBpZEJhc2U7XG4gICAgICAgIHdoaWxlICh0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMuaGFzKGlkKSkge1xuICAgICAgICAgICAgaWQgPSBpZEJhc2UgKyB0aGlzLl9zdWJncmlkSWRDb3VudGVyLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9leGlzdGluZ1N1YmdyaWRJZHMuYWRkKGlkKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5U3ViZ3JpZEZuID0gKGluZGV4OiBudW1iZXIsIHN1YmdyaWQ6IFN1YmdyaWQpID0+IHN1YmdyaWQuc3ViZ3JpZElkO1xuXG4gICAgcHVibGljIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudCkgPT4gdGhpcy50cmFja0J5RGF0YWZpZWxkcyhpbmRleCwgZWxlbWVudCk7XG5cbiAgICBwcm90ZWN0ZWQgdHJhY2tCeURhdGFmaWVsZHMoaW5kZXg6IG51bWJlciwgZWxlbWVudDogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQpIHtcbiAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza0VsZW1lbnRUeXBlLkJMQU5LOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdyaWRBcmVhSWQgKyAnLScgKyB0aGlzLnRhc2tDb250ZW50U2VydmljZS4kc2hvdWxkQ3JlYXRlQ291bnRlci5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgY2FzZSBUYXNrRWxlbWVudFR5cGUuTE9BREVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdyaWRBcmVhSWQgKyAnLUwtJyArIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLiRzaG91bGRDcmVhdGVDb3VudGVyLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjYXNlIFRhc2tFbGVtZW50VHlwZS5EQVRBX0dST1VQX1RJVExFOlxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpdGxlICsgJy0nICsgdGhpcy50YXNrQ29udGVudFNlcnZpY2UuJHNob3VsZENyZWF0ZUNvdW50ZXIuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaXRlbS5zdHJpbmdJZCArICctJyArIHRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLiRzaG91bGRDcmVhdGVDb3VudGVyLmdldFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=