@hmcts/ccd-case-ui-toolkit 7.0.39-task-event-completion-fix → 7.0.40-rc1

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 (1177) hide show
  1. package/esm2022/lib/app.config.mjs +96 -0
  2. package/esm2022/lib/components/banners/alert/alert-icon-class.pipe.mjs +25 -0
  3. package/esm2022/lib/components/banners/alert/alert.component.mjs +92 -0
  4. package/esm2022/lib/components/banners/alert/alert.module.mjs +32 -0
  5. package/esm2022/lib/components/banners/banners.module.mjs +32 -0
  6. package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +116 -0
  7. package/esm2022/lib/components/banners/notification-banner/notification-banner.module.mjs +19 -0
  8. package/esm2022/lib/components/body/body.component.mjs +21 -0
  9. package/esm2022/lib/components/body/body.module.mjs +20 -0
  10. package/esm2022/lib/components/footer/footer.component.mjs +109 -0
  11. package/esm2022/lib/components/footer/footers.module.mjs +25 -0
  12. package/esm2022/lib/components/form/date-input/date-input.component.mjs +341 -0
  13. package/esm2022/lib/components/form/form.module.mjs +29 -0
  14. package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +98 -0
  15. package/esm2022/lib/components/header/headers.module.mjs +25 -0
  16. package/esm2022/lib/components/header/navigation/navigation-item.component.mjs +45 -0
  17. package/esm2022/lib/components/header/navigation/navigation.component.mjs +26 -0
  18. package/esm2022/lib/components/header/phase/phase.component.mjs +49 -0
  19. package/esm2022/lib/components/tabs/tab.component.mjs +32 -0
  20. package/esm2022/lib/components/tabs/tabs.component.mjs +83 -0
  21. package/esm2022/lib/components/tabs/tabs.module.mjs +38 -0
  22. package/esm2022/lib/shared/commons/address-validation-constants.mjs +13 -0
  23. package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +19 -0
  24. package/esm2022/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +46 -0
  25. package/esm2022/lib/shared/commons/constants.mjs +13 -0
  26. package/esm2022/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +43 -0
  27. package/esm2022/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +36 -0
  28. package/esm2022/lib/shared/components/activity/activity.component.mjs +156 -0
  29. package/esm2022/lib/shared/components/activity/activity.module.mjs +55 -0
  30. package/esm2022/lib/shared/components/case-editor/case-access-utils/index.mjs +105 -0
  31. package/esm2022/lib/shared/components/case-editor/case-create/case-create.component.mjs +96 -0
  32. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +464 -0
  33. package/esm2022/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +130 -0
  34. package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +140 -0
  35. package/esm2022/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +70 -0
  36. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +806 -0
  37. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +603 -0
  38. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +214 -0
  39. package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +97 -0
  40. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +83 -0
  41. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +167 -0
  42. package/esm2022/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +85 -0
  43. package/esm2022/lib/shared/components/case-editor/domain/confirmation.model.mjs +25 -0
  44. package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +9 -0
  45. package/esm2022/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +7 -0
  46. package/esm2022/lib/shared/components/case-editor/domain/wizard-page.model.mjs +33 -0
  47. package/esm2022/lib/shared/components/case-editor/domain/wizard.model.mjs +55 -0
  48. package/esm2022/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +98 -0
  49. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
  50. package/esm2022/lib/shared/components/case-editor/services/case-worker.service.mjs +35 -0
  51. package/esm2022/lib/shared/components/case-editor/services/case.notifier.mjs +53 -0
  52. package/esm2022/lib/shared/components/case-editor/services/cases.service.mjs +300 -0
  53. package/esm2022/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +42 -0
  54. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +153 -0
  55. package/esm2022/lib/shared/components/case-editor/services/event-trigger.service.mjs +18 -0
  56. package/esm2022/lib/shared/components/case-editor/services/judicial-worker.service.mjs +35 -0
  57. package/esm2022/lib/shared/components/case-editor/services/page-validation.service.mjs +59 -0
  58. package/esm2022/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +40 -0
  59. package/esm2022/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +117 -0
  60. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +220 -0
  61. package/esm2022/lib/shared/components/case-header/case-header.component.mjs +64 -0
  62. package/esm2022/lib/shared/components/case-header/case-header.module.mjs +33 -0
  63. package/esm2022/lib/shared/components/case-history/case-history.component.mjs +252 -0
  64. package/esm2022/lib/shared/components/case-history/case-history.module.mjs +64 -0
  65. package/esm2022/lib/shared/components/case-history/domain/case-history.model.mjs +37 -0
  66. package/esm2022/lib/shared/components/case-history/services/case-history.service.mjs +43 -0
  67. package/esm2022/lib/shared/components/case-list/case-list.component.mjs +368 -0
  68. package/esm2022/lib/shared/components/case-list/case-list.module.mjs +47 -0
  69. package/esm2022/lib/shared/components/case-list-filters/case-list-filters.component.mjs +57 -0
  70. package/esm2022/lib/shared/components/case-list-filters/case-list-filters.module.mjs +64 -0
  71. package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +115 -0
  72. package/esm2022/lib/shared/components/case-timeline/case-timeline.module.mjs +52 -0
  73. package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +246 -0
  74. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +311 -0
  75. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +75 -0
  76. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +156 -0
  77. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +703 -0
  78. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +61 -0
  79. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +256 -0
  80. package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +211 -0
  81. package/esm2022/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +50 -0
  82. package/esm2022/lib/shared/components/case-viewer/case-view/case-view.component.mjs +107 -0
  83. package/esm2022/lib/shared/components/case-viewer/case-viewer.component.mjs +133 -0
  84. package/esm2022/lib/shared/components/case-viewer/case-viewer.module.mjs +191 -0
  85. package/esm2022/lib/shared/components/case-viewer/printer/case-printer.component.mjs +117 -0
  86. package/esm2022/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +61 -0
  87. package/esm2022/lib/shared/components/case-viewer/services/case.resolver.mjs +138 -0
  88. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +86 -0
  89. package/esm2022/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +11 -0
  90. package/esm2022/lib/shared/components/create-case-filters/create-case-filters.component.mjs +289 -0
  91. package/esm2022/lib/shared/components/create-case-filters/create-case-filters.module.mjs +44 -0
  92. package/esm2022/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +60 -0
  93. package/esm2022/lib/shared/components/dialogs/dialogs.module.mjs +51 -0
  94. package/esm2022/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +62 -0
  95. package/esm2022/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +60 -0
  96. package/esm2022/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +64 -0
  97. package/esm2022/lib/shared/components/error/callback-errors.component.mjs +147 -0
  98. package/esm2022/lib/shared/components/error/domain/error-context.mjs +6 -0
  99. package/esm2022/lib/shared/components/error/errors.module.mjs +33 -0
  100. package/esm2022/lib/shared/components/error-message/error-message.component.mjs +45 -0
  101. package/esm2022/lib/shared/components/error-message/error-message.module.mjs +41 -0
  102. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +62 -0
  103. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +56 -0
  104. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +112 -0
  105. package/esm2022/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +70 -0
  106. package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +61 -0
  107. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +56 -0
  108. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +104 -0
  109. package/esm2022/lib/shared/components/event-start/event-start.component.mjs +56 -0
  110. package/esm2022/lib/shared/components/event-start/event-start.module.mjs +71 -0
  111. package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +31 -0
  112. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +179 -0
  113. package/esm2022/lib/shared/components/event-trigger/event-trigger.component.mjs +129 -0
  114. package/esm2022/lib/shared/components/event-trigger/event-trigger.module.mjs +37 -0
  115. package/esm2022/lib/shared/components/loading-spinner/loading-spinner.component.mjs +26 -0
  116. package/esm2022/lib/shared/components/loading-spinner/loading-spinner.module.mjs +29 -0
  117. package/esm2022/lib/shared/components/pagination/pagination.component.mjs +260 -0
  118. package/esm2022/lib/shared/components/pagination/pagination.module.mjs +35 -0
  119. package/esm2022/lib/shared/components/palette/address/address-option.model.mjs +23 -0
  120. package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +286 -0
  121. package/esm2022/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +30 -0
  122. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +44 -0
  123. package/esm2022/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +84 -0
  124. package/esm2022/lib/shared/components/palette/base-field/field-read-label.component.mjs +85 -0
  125. package/esm2022/lib/shared/components/palette/base-field/field-read.component.mjs +90 -0
  126. package/esm2022/lib/shared/components/palette/base-field/field-write.component.mjs +78 -0
  127. package/esm2022/lib/shared/components/palette/base-field/payment-field.component.mjs +37 -0
  128. package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +196 -0
  129. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +50 -0
  130. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +51 -0
  131. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +358 -0
  132. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +158 -0
  133. package/esm2022/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +94 -0
  134. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +190 -0
  135. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +301 -0
  136. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +206 -0
  137. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +169 -0
  138. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +225 -0
  139. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +311 -0
  140. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +202 -0
  141. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +353 -0
  142. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +269 -0
  143. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +510 -0
  144. package/esm2022/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +43 -0
  145. package/esm2022/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +43 -0
  146. package/esm2022/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +111 -0
  147. package/esm2022/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +79 -0
  148. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +253 -0
  149. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +697 -0
  150. package/esm2022/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +33 -0
  151. package/esm2022/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +125 -0
  152. package/esm2022/lib/shared/components/palette/collection/collection-create-checker.service.mjs +42 -0
  153. package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +78 -0
  154. package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +447 -0
  155. package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +378 -0
  156. package/esm2022/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +51 -0
  157. package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +76 -0
  158. package/esm2022/lib/shared/components/palette/complex/read-complex-field.component.mjs +71 -0
  159. package/esm2022/lib/shared/components/palette/complex/write-complex-field.component.mjs +173 -0
  160. package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +26 -0
  161. package/esm2022/lib/shared/components/palette/date/write-date-container-field.component.mjs +33 -0
  162. package/esm2022/lib/shared/components/palette/date/write-date-field.component.mjs +77 -0
  163. package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +312 -0
  164. package/esm2022/lib/shared/components/palette/document/document-url.pipe.mjs +25 -0
  165. package/esm2022/lib/shared/components/palette/document/file-upload-progress.guard.mjs +31 -0
  166. package/esm2022/lib/shared/components/palette/document/file-upload-state.service.mjs +17 -0
  167. package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +88 -0
  168. package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +430 -0
  169. package/esm2022/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +18 -0
  170. package/esm2022/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +37 -0
  171. package/esm2022/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +124 -0
  172. package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +44 -0
  173. package/esm2022/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +146 -0
  174. package/esm2022/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +25 -0
  175. package/esm2022/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +43 -0
  176. package/esm2022/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +123 -0
  177. package/esm2022/lib/shared/components/palette/email/read-email-field.component.mjs +36 -0
  178. package/esm2022/lib/shared/components/palette/email/write-email-field.component.mjs +74 -0
  179. package/esm2022/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +23 -0
  180. package/esm2022/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +27 -0
  181. package/esm2022/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +107 -0
  182. package/esm2022/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +18 -0
  183. package/esm2022/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +27 -0
  184. package/esm2022/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +96 -0
  185. package/esm2022/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +17 -0
  186. package/esm2022/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +99 -0
  187. package/esm2022/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +224 -0
  188. package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +72 -0
  189. package/esm2022/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +49 -0
  190. package/esm2022/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +253 -0
  191. package/esm2022/lib/shared/components/palette/label/label-field.component.mjs +50 -0
  192. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +111 -0
  193. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +191 -0
  194. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +543 -0
  195. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +213 -0
  196. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +287 -0
  197. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +69 -0
  198. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +209 -0
  199. package/esm2022/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +67 -0
  200. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +168 -0
  201. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +138 -0
  202. package/esm2022/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +27 -0
  203. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +234 -0
  204. package/esm2022/lib/shared/components/palette/markdown/markdown-component.module.mjs +48 -0
  205. package/esm2022/lib/shared/components/palette/markdown/markdown.component.mjs +81 -0
  206. package/esm2022/lib/shared/components/palette/markdown/routerlink.component.mjs +25 -0
  207. package/esm2022/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +128 -0
  208. package/esm2022/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +50 -0
  209. package/esm2022/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +79 -0
  210. package/esm2022/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +46 -0
  211. package/esm2022/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +126 -0
  212. package/esm2022/lib/shared/components/palette/number/read-number-field.component.mjs +25 -0
  213. package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +74 -0
  214. package/esm2022/lib/shared/components/palette/order-summary/fee-value.model.mjs +4 -0
  215. package/esm2022/lib/shared/components/palette/order-summary/fee.model.mjs +8 -0
  216. package/esm2022/lib/shared/components/palette/order-summary/order-summary.model.mjs +6 -0
  217. package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +74 -0
  218. package/esm2022/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +45 -0
  219. package/esm2022/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +45 -0
  220. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +88 -0
  221. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +92 -0
  222. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +52 -0
  223. package/esm2022/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +35 -0
  224. package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +397 -0
  225. package/esm2022/lib/shared/components/palette/palette.module.mjs +736 -0
  226. package/esm2022/lib/shared/components/palette/palette.service.mjs +153 -0
  227. package/esm2022/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +25 -0
  228. package/esm2022/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +23 -0
  229. package/esm2022/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +74 -0
  230. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +44 -0
  231. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +150 -0
  232. package/esm2022/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +67 -0
  233. package/esm2022/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +61 -0
  234. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +292 -0
  235. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +330 -0
  236. package/esm2022/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +24 -0
  237. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +165 -0
  238. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +78 -0
  239. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +121 -0
  240. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +202 -0
  241. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +107 -0
  242. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +24 -0
  243. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +45 -0
  244. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +124 -0
  245. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
  246. package/esm2022/lib/shared/components/palette/text/read-text-field.component.mjs +25 -0
  247. package/esm2022/lib/shared/components/palette/text/write-text-field.component.mjs +78 -0
  248. package/esm2022/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +25 -0
  249. package/esm2022/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +89 -0
  250. package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +18 -0
  251. package/esm2022/lib/shared/components/palette/utils/dash.pipe.mjs +16 -0
  252. package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +133 -0
  253. package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +30 -0
  254. package/esm2022/lib/shared/components/palette/utils/first-error.pipe.mjs +65 -0
  255. package/esm2022/lib/shared/components/palette/utils/is-compound.pipe.mjs +43 -0
  256. package/esm2022/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +22 -0
  257. package/esm2022/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +32 -0
  258. package/esm2022/lib/shared/components/palette/utils/is-read-only.pipe.mjs +22 -0
  259. package/esm2022/lib/shared/components/palette/utils/utils.module.mjs +71 -0
  260. package/esm2022/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +35 -0
  261. package/esm2022/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +37 -0
  262. package/esm2022/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +102 -0
  263. package/esm2022/lib/shared/components/palette/yes-no/yes-no.service.mjs +50 -0
  264. package/esm2022/lib/shared/components/search-filters/domain/search-input.model.mjs +15 -0
  265. package/esm2022/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +63 -0
  266. package/esm2022/lib/shared/components/search-filters/search-filters.component.mjs +341 -0
  267. package/esm2022/lib/shared/components/search-filters/search-filters.module.mjs +71 -0
  268. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +822 -0
  269. package/esm2022/lib/shared/components/search-result/search-result.module.mjs +82 -0
  270. package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +497 -0
  271. package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +67 -0
  272. package/esm2022/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +169 -0
  273. package/esm2022/lib/shared/directives/conditional-show/conditional-show.module.mjs +33 -0
  274. package/esm2022/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +201 -0
  275. package/esm2022/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +200 -0
  276. package/esm2022/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +17 -0
  277. package/esm2022/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +48 -0
  278. package/esm2022/lib/shared/directives/focus-element/focus-element.directive.mjs +38 -0
  279. package/esm2022/lib/shared/directives/focus-element/focus-element.module.mjs +21 -0
  280. package/esm2022/lib/shared/directives/substitutor/label-substitutor.directive.mjs +88 -0
  281. package/esm2022/lib/shared/directives/substitutor/label-substitutor.module.mjs +30 -0
  282. package/esm2022/lib/shared/directives/substitutor/services/placeholder.service.mjs +209 -0
  283. package/esm2022/lib/shared/domain/activity/activity.model.mjs +17 -0
  284. package/esm2022/lib/shared/domain/addresses/address.model.mjs +11 -0
  285. package/esm2022/lib/shared/domain/alert/alert.model.mjs +5 -0
  286. package/esm2022/lib/shared/domain/case-details.model.mjs +13 -0
  287. package/esm2022/lib/shared/domain/case-event-data.model.mjs +11 -0
  288. package/esm2022/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +8 -0
  289. package/esm2022/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +10 -0
  290. package/esm2022/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +10 -0
  291. package/esm2022/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +125 -0
  292. package/esm2022/lib/shared/domain/case-flag/flag-type.model.mjs +37 -0
  293. package/esm2022/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +18 -0
  294. package/esm2022/lib/shared/domain/case-view/case-event-trigger.model.mjs +34 -0
  295. package/esm2022/lib/shared/domain/case-view/case-print-document.model.mjs +6 -0
  296. package/esm2022/lib/shared/domain/case-view/case-tab.model.mjs +17 -0
  297. package/esm2022/lib/shared/domain/case-view/case-view-event.model.mjs +16 -0
  298. package/esm2022/lib/shared/domain/case-view/case-view-trigger.model.mjs +7 -0
  299. package/esm2022/lib/shared/domain/case-view/case-view.model.mjs +27 -0
  300. package/esm2022/lib/shared/domain/definition/access-control-list.model.mjs +8 -0
  301. package/esm2022/lib/shared/domain/definition/banner.model.mjs +8 -0
  302. package/esm2022/lib/shared/domain/definition/case-event.model.mjs +11 -0
  303. package/esm2022/lib/shared/domain/definition/case-field.model.mjs +218 -0
  304. package/esm2022/lib/shared/domain/definition/case-state.model.mjs +7 -0
  305. package/esm2022/lib/shared/domain/definition/case-type-lite.model.mjs +10 -0
  306. package/esm2022/lib/shared/domain/definition/case-type.model.mjs +20 -0
  307. package/esm2022/lib/shared/domain/definition/event-case-field.model.mjs +6 -0
  308. package/esm2022/lib/shared/domain/definition/field-type.model.mjs +30 -0
  309. package/esm2022/lib/shared/domain/definition/fixed-list-item.model.mjs +6 -0
  310. package/esm2022/lib/shared/domain/definition/jurisdiction.model.mjs +8 -0
  311. package/esm2022/lib/shared/domain/document/document-data.model.mjs +28 -0
  312. package/esm2022/lib/shared/domain/draft.model.mjs +16 -0
  313. package/esm2022/lib/shared/domain/http/http-error.model.mjs +49 -0
  314. package/esm2022/lib/shared/domain/organisation/organisation-converter.mjs +42 -0
  315. package/esm2022/lib/shared/domain/pagination-metadata.model.mjs +5 -0
  316. package/esm2022/lib/shared/domain/profile/profile.model.mjs +33 -0
  317. package/esm2022/lib/shared/domain/search/field.model.mjs +17 -0
  318. package/esm2022/lib/shared/domain/search/search-result-view-column.model.mjs +9 -0
  319. package/esm2022/lib/shared/domain/search/search-result-view-item.model.mjs +18 -0
  320. package/esm2022/lib/shared/domain/search/search-result-view.model.mjs +26 -0
  321. package/esm2022/lib/shared/domain/search/sorting/sort-parameters.mjs +9 -0
  322. package/esm2022/lib/shared/domain/workbasket/workbasket-input.model.mjs +11 -0
  323. package/esm2022/lib/shared/fixture/case-field-builder.mjs +67 -0
  324. package/esm2022/lib/shared/pipes/case-reference/case-reference.pipe.mjs +33 -0
  325. package/esm2022/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +31 -0
  326. package/esm2022/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +32 -0
  327. package/esm2022/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +27 -0
  328. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +39 -0
  329. package/esm2022/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +173 -0
  330. package/esm2022/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +31 -0
  331. package/esm2022/lib/shared/pipes/complex/fields-filter.pipe.mjs +105 -0
  332. package/esm2022/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
  333. package/esm2022/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +28 -0
  334. package/esm2022/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +28 -0
  335. package/esm2022/lib/shared/pipes/pipes.module.mjs +64 -0
  336. package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +24 -0
  337. package/esm2022/lib/shared/services/activity/activity.polling.service.mjs +122 -0
  338. package/esm2022/lib/shared/services/activity/activity.service.mjs +85 -0
  339. package/esm2022/lib/shared/services/addresses/address-parser.mjs +76 -0
  340. package/esm2022/lib/shared/services/addresses/addresses.service.mjs +65 -0
  341. package/esm2022/lib/shared/services/alert/alert.service.mjs +157 -0
  342. package/esm2022/lib/shared/services/auth/auth.service.mjs +35 -0
  343. package/esm2022/lib/shared/services/banners/banners.service.mjs +35 -0
  344. package/esm2022/lib/shared/services/browser/browser.service.mjs +24 -0
  345. package/esm2022/lib/shared/services/case-fields/case-field.service.mjs +34 -0
  346. package/esm2022/lib/shared/services/case-fields/format-translator.service.mjs +242 -0
  347. package/esm2022/lib/shared/services/case-file-view/case-file-view.service.mjs +48 -0
  348. package/esm2022/lib/shared/services/case-flag/case-flag-refdata.service.mjs +104 -0
  349. package/esm2022/lib/shared/services/common-data-service/common-data-service.mjs +29 -0
  350. package/esm2022/lib/shared/services/definitions/definitions.module.mjs +19 -0
  351. package/esm2022/lib/shared/services/definitions/definitions.service.mjs +32 -0
  352. package/esm2022/lib/shared/services/document-management/document-management.service.mjs +114 -0
  353. package/esm2022/lib/shared/services/draft/draft.service.mjs +89 -0
  354. package/esm2022/lib/shared/services/error/error-notifier.service.mjs +16 -0
  355. package/esm2022/lib/shared/services/eventStatusService/event-status.service.mjs +21 -0
  356. package/esm2022/lib/shared/services/fields/fields.purger.mjs +305 -0
  357. package/esm2022/lib/shared/services/fields/fields.utils.mjs +615 -0
  358. package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +102 -0
  359. package/esm2022/lib/shared/services/form/form-error.service.mjs +46 -0
  360. package/esm2022/lib/shared/services/form/form-validators.service.mjs +82 -0
  361. package/esm2022/lib/shared/services/form/form-value.service.mjs +552 -0
  362. package/esm2022/lib/shared/services/http/http-error.service.mjs +67 -0
  363. package/esm2022/lib/shared/services/http/http.service.mjs +95 -0
  364. package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +35 -0
  365. package/esm2022/lib/shared/services/loading/loading.module.mjs +22 -0
  366. package/esm2022/lib/shared/services/loading/loading.service.mjs +31 -0
  367. package/esm2022/lib/shared/services/navigation/navigation-notifier.service.mjs +16 -0
  368. package/esm2022/lib/shared/services/order/order.service.mjs +37 -0
  369. package/esm2022/lib/shared/services/organisation/organisation.service.mjs +57 -0
  370. package/esm2022/lib/shared/services/profile/profile.notifier.mjs +17 -0
  371. package/esm2022/lib/shared/services/profile/profile.service.mjs +36 -0
  372. package/esm2022/lib/shared/services/request/request.options.builder.mjs +61 -0
  373. package/esm2022/lib/shared/services/router/router-helper.service.mjs +20 -0
  374. package/esm2022/lib/shared/services/search/search.service.mjs +96 -0
  375. package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +71 -0
  376. package/esm2022/lib/shared/services/session/session-storage.service.mjs +34 -0
  377. package/esm2022/lib/shared/services/utils/retry/retry.service.mjs +87 -0
  378. package/esm2022/lib/shared/services/window/window.service.mjs +40 -0
  379. package/esm2022/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +57 -0
  380. package/esm2022/lib/shared/test/test-route-snapshot-builder.mjs +38 -0
  381. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +37136 -0
  382. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -0
  383. package/lib/app.config.d.ts +4 -0
  384. package/lib/app.config.d.ts.map +1 -1
  385. package/lib/components/banners/alert/alert.component.d.ts +1 -1
  386. package/lib/components/banners/notification-banner/notification-banner.component.d.ts +1 -1
  387. package/lib/components/footer/footer.component.d.ts +1 -1
  388. package/lib/components/form/date-input/date-input.component.d.ts +1 -1
  389. package/lib/components/header/header-bar/header-bar.component.d.ts +1 -1
  390. package/lib/components/header/navigation/navigation-item.component.d.ts +1 -1
  391. package/lib/components/header/navigation/navigation.component.d.ts +1 -1
  392. package/lib/components/header/phase/phase.component.d.ts +1 -1
  393. package/lib/components/tabs/tab.component.d.ts +1 -1
  394. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts +1 -1
  395. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts.map +1 -1
  396. package/lib/shared/components/activity/activity-banner/activity-banner.component.d.ts +1 -1
  397. package/lib/shared/components/activity/activity-icon/activity-icon.component.d.ts +1 -1
  398. package/lib/shared/components/activity/activity.component.d.ts +1 -1
  399. package/lib/shared/components/case-editor/case-create/case-create.component.d.ts +1 -1
  400. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +1 -2
  401. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  402. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +1 -1
  403. package/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.d.ts +1 -1
  404. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  405. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +1 -1
  406. package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts +1 -1
  407. package/lib/shared/components/case-header/case-header.component.d.ts +1 -1
  408. package/lib/shared/components/case-history/case-history.component.d.ts +1 -1
  409. package/lib/shared/components/case-list/case-list.component.d.ts +1 -1
  410. package/lib/shared/components/case-list-filters/case-list-filters.component.d.ts +1 -1
  411. package/lib/shared/components/case-timeline/case-timeline.component.d.ts +1 -1
  412. package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts +1 -1
  413. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +2 -1
  414. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  415. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +1 -1
  416. package/lib/shared/components/case-viewer/case-viewer.component.d.ts +1 -1
  417. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts +1 -1
  418. package/lib/shared/components/error/callback-errors.component.d.ts +1 -1
  419. package/lib/shared/components/error-message/error-message.component.d.ts +1 -1
  420. package/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.d.ts +1 -1
  421. package/lib/shared/components/event-start/components/task-conflict/task-conflict.component.d.ts +1 -1
  422. package/lib/shared/components/event-trigger/event-trigger.component.d.ts +1 -1
  423. package/lib/shared/components/loading-spinner/loading-spinner.component.d.ts +1 -1
  424. package/lib/shared/components/pagination/pagination.component.d.ts +1 -1
  425. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  426. package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts +1 -1
  427. package/lib/shared/components/palette/base-field/abstract-field-write.component.d.ts +1 -1
  428. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts +2 -2
  429. package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
  430. package/lib/shared/components/palette/base-field/field-read-label.component.d.ts +1 -1
  431. package/lib/shared/components/palette/base-field/field-read.component.d.ts +1 -1
  432. package/lib/shared/components/palette/base-field/field-write.component.d.ts +1 -1
  433. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +8 -1
  434. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
  435. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.d.ts +1 -1
  436. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +1 -1
  437. package/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.d.ts +1 -1
  438. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +1 -1
  439. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +1 -1
  440. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +1 -1
  441. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +1 -1
  442. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +1 -1
  443. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +1 -1
  444. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +1 -1
  445. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +1 -1
  446. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +1 -1
  447. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +1 -1
  448. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +2 -2
  449. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  450. package/lib/shared/components/palette/complex/read-complex-field-raw.component.d.ts +1 -1
  451. package/lib/shared/components/palette/complex/read-complex-field-table.component.d.ts +1 -1
  452. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts +1 -1
  453. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +1 -1
  454. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +1 -1
  455. package/lib/shared/components/palette/history/event-log/event-log-details.component.d.ts +1 -1
  456. package/lib/shared/components/palette/history/event-log/event-log-table.component.d.ts +1 -1
  457. package/lib/shared/components/palette/history/event-log/event-log.component.d.ts +1 -1
  458. package/lib/shared/components/palette/label/label-field.component.d.ts +1 -1
  459. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts +1 -1
  460. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.d.ts +1 -1
  461. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +1 -1
  462. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  463. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +2 -2
  464. package/lib/shared/components/palette/markdown/markdown.component.d.ts +2 -4
  465. package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
  466. package/lib/shared/components/palette/money-gbp/money-gbp-input.component.d.ts +1 -1
  467. package/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.d.ts +1 -1
  468. package/lib/shared/components/palette/order-summary/read-order-summary-row.component.d.ts +1 -1
  469. package/lib/shared/components/palette/organisation/read-organisation-field-raw.component.d.ts +1 -1
  470. package/lib/shared/components/palette/organisation/read-organisation-field-table.component.d.ts +1 -1
  471. package/lib/shared/components/palette/organisation/read-organisation-field.component.d.ts +1 -1
  472. package/lib/shared/components/palette/organisation/write-organisation-complex-field.component.d.ts +1 -1
  473. package/lib/shared/components/palette/palette.module.d.ts +2 -2
  474. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  475. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts +1 -1
  476. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +1 -1
  477. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts +1 -1
  478. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +1 -1
  479. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +1 -1
  480. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts +1 -1
  481. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +1 -1
  482. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts +1 -1
  483. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts +1 -1
  484. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +1 -1
  485. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +1 -1
  486. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts +1 -1
  487. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts.map +1 -1
  488. package/lib/shared/components/search-filters/search-filters-wrapper.component.d.ts +1 -1
  489. package/lib/shared/components/search-filters/search-filters.component.d.ts +1 -1
  490. package/lib/shared/components/search-result/search-result.component.d.ts +1 -1
  491. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +1 -1
  492. package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts +1 -1
  493. package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts +1 -1
  494. package/lib/shared/domain/alert/alert-level.model.d.ts +1 -1
  495. package/lib/shared/domain/alert/alert-level.model.d.ts.map +1 -1
  496. package/lib/shared/domain/case-view/access-types.model.d.ts +1 -1
  497. package/lib/shared/domain/case-view/access-types.model.d.ts.map +1 -1
  498. package/lib/shared/domain/case-view/role-request.model.d.ts +4 -4
  499. package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
  500. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  501. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  502. package/lib/shared/domain/predicate.model.d.ts +1 -1
  503. package/lib/shared/domain/predicate.model.d.ts.map +1 -1
  504. package/lib/shared/pipes/complex/fields-filter.pipe.d.ts.map +1 -1
  505. package/lib/shared/services/order/order.service.d.ts +2 -2
  506. package/lib/shared/services/order/order.service.d.ts.map +1 -1
  507. package/lib/shared/services/request/request.options.builder.d.ts +1 -1
  508. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  509. package/package.json +6 -12
  510. package/esm2020/lib/app.config.mjs +0 -45
  511. package/esm2020/lib/components/banners/alert/alert-icon-class.pipe.mjs +0 -25
  512. package/esm2020/lib/components/banners/alert/alert.component.mjs +0 -95
  513. package/esm2020/lib/components/banners/alert/alert.module.mjs +0 -32
  514. package/esm2020/lib/components/banners/banners.module.mjs +0 -32
  515. package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +0 -120
  516. package/esm2020/lib/components/banners/notification-banner/notification-banner.module.mjs +0 -19
  517. package/esm2020/lib/components/body/body.component.mjs +0 -20
  518. package/esm2020/lib/components/body/body.module.mjs +0 -20
  519. package/esm2020/lib/components/footer/footer.component.mjs +0 -105
  520. package/esm2020/lib/components/footer/footers.module.mjs +0 -25
  521. package/esm2020/lib/components/form/date-input/date-input.component.mjs +0 -331
  522. package/esm2020/lib/components/form/form.module.mjs +0 -29
  523. package/esm2020/lib/components/header/header-bar/header-bar.component.mjs +0 -97
  524. package/esm2020/lib/components/header/headers.module.mjs +0 -25
  525. package/esm2020/lib/components/header/navigation/navigation-item.component.mjs +0 -41
  526. package/esm2020/lib/components/header/navigation/navigation.component.mjs +0 -24
  527. package/esm2020/lib/components/header/phase/phase.component.mjs +0 -45
  528. package/esm2020/lib/components/tabs/tab.component.mjs +0 -28
  529. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -79
  530. package/esm2020/lib/components/tabs/tabs.module.mjs +0 -38
  531. package/esm2020/lib/shared/commons/address-validation-constants.mjs +0 -13
  532. package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.module.mjs +0 -19
  533. package/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +0 -47
  534. package/esm2020/lib/shared/commons/constants.mjs +0 -13
  535. package/esm2020/lib/shared/components/activity/activity-banner/activity-banner.component.mjs +0 -39
  536. package/esm2020/lib/shared/components/activity/activity-icon/activity-icon.component.mjs +0 -33
  537. package/esm2020/lib/shared/components/activity/activity.component.mjs +0 -151
  538. package/esm2020/lib/shared/components/activity/activity.module.mjs +0 -55
  539. package/esm2020/lib/shared/components/case-editor/case-access-utils/index.mjs +0 -105
  540. package/esm2020/lib/shared/components/case-editor/case-create/case-create.component.mjs +0 -87
  541. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +0 -463
  542. package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +0 -125
  543. package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +0 -135
  544. package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +0 -69
  545. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +0 -779
  546. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +0 -587
  547. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +0 -214
  548. package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +0 -86
  549. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +0 -80
  550. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +0 -153
  551. package/esm2020/lib/shared/components/case-editor/case-progress/case-progress.component.mjs +0 -77
  552. package/esm2020/lib/shared/components/case-editor/domain/confirmation.model.mjs +0 -21
  553. package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.mjs +0 -4
  554. package/esm2020/lib/shared/components/case-editor/domain/wizard-page-field.model.mjs +0 -3
  555. package/esm2020/lib/shared/components/case-editor/domain/wizard-page.model.mjs +0 -26
  556. package/esm2020/lib/shared/components/case-editor/domain/wizard.model.mjs +0 -54
  557. package/esm2020/lib/shared/components/case-editor/services/case-edit-wizard.guard.mjs +0 -93
  558. package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +0 -19
  559. package/esm2020/lib/shared/components/case-editor/services/case-worker.service.mjs +0 -32
  560. package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +0 -51
  561. package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +0 -292
  562. package/esm2020/lib/shared/components/case-editor/services/convert-href-to-router.service.mjs +0 -41
  563. package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +0 -143
  564. package/esm2020/lib/shared/components/case-editor/services/event-trigger.service.mjs +0 -20
  565. package/esm2020/lib/shared/components/case-editor/services/judicial-worker.service.mjs +0 -32
  566. package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +0 -58
  567. package/esm2020/lib/shared/components/case-editor/services/valid-page-list-caseFields.service.mjs +0 -39
  568. package/esm2020/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.mjs +0 -117
  569. package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +0 -214
  570. package/esm2020/lib/shared/components/case-header/case-header.component.mjs +0 -61
  571. package/esm2020/lib/shared/components/case-header/case-header.module.mjs +0 -33
  572. package/esm2020/lib/shared/components/case-history/case-history.component.mjs +0 -242
  573. package/esm2020/lib/shared/components/case-history/case-history.module.mjs +0 -64
  574. package/esm2020/lib/shared/components/case-history/domain/case-history.model.mjs +0 -29
  575. package/esm2020/lib/shared/components/case-history/services/case-history.service.mjs +0 -40
  576. package/esm2020/lib/shared/components/case-list/case-list.component.mjs +0 -362
  577. package/esm2020/lib/shared/components/case-list/case-list.module.mjs +0 -47
  578. package/esm2020/lib/shared/components/case-list-filters/case-list-filters.component.mjs +0 -52
  579. package/esm2020/lib/shared/components/case-list-filters/case-list-filters.module.mjs +0 -64
  580. package/esm2020/lib/shared/components/case-timeline/case-timeline.component.mjs +0 -109
  581. package/esm2020/lib/shared/components/case-timeline/case-timeline.module.mjs +0 -52
  582. package/esm2020/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +0 -247
  583. package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +0 -298
  584. package/esm2020/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +0 -72
  585. package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +0 -141
  586. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +0 -670
  587. package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +0 -58
  588. package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +0 -241
  589. package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +0 -199
  590. package/esm2020/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.mjs +0 -47
  591. package/esm2020/lib/shared/components/case-viewer/case-view/case-view.component.mjs +0 -98
  592. package/esm2020/lib/shared/components/case-viewer/case-viewer.component.mjs +0 -125
  593. package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +0 -191
  594. package/esm2020/lib/shared/components/case-viewer/printer/case-printer.component.mjs +0 -110
  595. package/esm2020/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.mjs +0 -60
  596. package/esm2020/lib/shared/components/case-viewer/services/case.resolver.mjs +0 -128
  597. package/esm2020/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +0 -77
  598. package/esm2020/lib/shared/components/create-case-filters/create-case-filters-selection.model.mjs +0 -8
  599. package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +0 -275
  600. package/esm2020/lib/shared/components/create-case-filters/create-case-filters.module.mjs +0 -44
  601. package/esm2020/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.mjs +0 -57
  602. package/esm2020/lib/shared/components/dialogs/dialogs.module.mjs +0 -51
  603. package/esm2020/lib/shared/components/dialogs/document-dialog/document-dialog.component.mjs +0 -59
  604. package/esm2020/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.mjs +0 -57
  605. package/esm2020/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.mjs +0 -61
  606. package/esm2020/lib/shared/components/error/callback-errors.component.mjs +0 -149
  607. package/esm2020/lib/shared/components/error/domain/error-context.mjs +0 -3
  608. package/esm2020/lib/shared/components/error/errors.module.mjs +0 -33
  609. package/esm2020/lib/shared/components/error-message/error-message.component.mjs +0 -43
  610. package/esm2020/lib/shared/components/error-message/error-message.module.mjs +0 -41
  611. package/esm2020/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +0 -59
  612. package/esm2020/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +0 -53
  613. package/esm2020/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +0 -104
  614. package/esm2020/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.mjs +0 -68
  615. package/esm2020/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +0 -58
  616. package/esm2020/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +0 -53
  617. package/esm2020/lib/shared/components/event-start/event-guard/event-start.guard.mjs +0 -101
  618. package/esm2020/lib/shared/components/event-start/event-start.component.mjs +0 -49
  619. package/esm2020/lib/shared/components/event-start/event-start.module.mjs +0 -71
  620. package/esm2020/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +0 -29
  621. package/esm2020/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +0 -170
  622. package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +0 -123
  623. package/esm2020/lib/shared/components/event-trigger/event-trigger.module.mjs +0 -37
  624. package/esm2020/lib/shared/components/loading-spinner/loading-spinner.component.mjs +0 -27
  625. package/esm2020/lib/shared/components/loading-spinner/loading-spinner.module.mjs +0 -29
  626. package/esm2020/lib/shared/components/pagination/pagination.component.mjs +0 -262
  627. package/esm2020/lib/shared/components/pagination/pagination.module.mjs +0 -35
  628. package/esm2020/lib/shared/components/palette/address/address-option.model.mjs +0 -21
  629. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +0 -280
  630. package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +0 -31
  631. package/esm2020/lib/shared/components/palette/base-field/abstract-field-write.component.mjs +0 -44
  632. package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +0 -83
  633. package/esm2020/lib/shared/components/palette/base-field/field-read-label.component.mjs +0 -86
  634. package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +0 -85
  635. package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +0 -74
  636. package/esm2020/lib/shared/components/palette/base-field/payment-field.component.mjs +0 -35
  637. package/esm2020/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +0 -171
  638. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-document-actions/case-file-view-folder-document-actions.component.mjs +0 -48
  639. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder-sort/case-file-view-folder-sort.component.mjs +0 -48
  640. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +0 -342
  641. package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +0 -154
  642. package/esm2020/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.mjs +0 -94
  643. package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +0 -190
  644. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +0 -288
  645. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +0 -207
  646. package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +0 -165
  647. package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +0 -219
  648. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +0 -306
  649. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +0 -200
  650. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +0 -343
  651. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +0 -267
  652. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +0 -510
  653. package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +0 -41
  654. package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +0 -41
  655. package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +0 -109
  656. package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +0 -77
  657. package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +0 -246
  658. package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +0 -686
  659. package/esm2020/lib/shared/components/palette/case-link/read-case-link-field.component.mjs +0 -32
  660. package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +0 -122
  661. package/esm2020/lib/shared/components/palette/collection/collection-create-checker.service.mjs +0 -42
  662. package/esm2020/lib/shared/components/palette/collection/read-collection-field.component.mjs +0 -81
  663. package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +0 -441
  664. package/esm2020/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +0 -379
  665. package/esm2020/lib/shared/components/palette/complex/read-complex-field-raw.component.mjs +0 -53
  666. package/esm2020/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +0 -78
  667. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +0 -75
  668. package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +0 -169
  669. package/esm2020/lib/shared/components/palette/date/read-date-field.component.mjs +0 -28
  670. package/esm2020/lib/shared/components/palette/date/write-date-container-field.component.mjs +0 -33
  671. package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +0 -76
  672. package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +0 -309
  673. package/esm2020/lib/shared/components/palette/document/document-url.pipe.mjs +0 -24
  674. package/esm2020/lib/shared/components/palette/document/file-upload-progress.guard.mjs +0 -29
  675. package/esm2020/lib/shared/components/palette/document/file-upload-state.service.mjs +0 -16
  676. package/esm2020/lib/shared/components/palette/document/read-document-field.component.mjs +0 -81
  677. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +0 -408
  678. package/esm2020/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.mjs +0 -18
  679. package/esm2020/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.mjs +0 -36
  680. package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +0 -124
  681. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.mjs +0 -43
  682. package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +0 -145
  683. package/esm2020/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.mjs +0 -25
  684. package/esm2020/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.mjs +0 -42
  685. package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +0 -124
  686. package/esm2020/lib/shared/components/palette/email/read-email-field.component.mjs +0 -35
  687. package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +0 -73
  688. package/esm2020/lib/shared/components/palette/fixed-list/fixed-list.pipe.mjs +0 -23
  689. package/esm2020/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.mjs +0 -26
  690. package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +0 -106
  691. package/esm2020/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.mjs +0 -18
  692. package/esm2020/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.mjs +0 -26
  693. package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +0 -95
  694. package/esm2020/lib/shared/components/palette/history/case-history-viewer-field.component.mjs +0 -16
  695. package/esm2020/lib/shared/components/palette/history/event-log/event-log-details.component.mjs +0 -97
  696. package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +0 -225
  697. package/esm2020/lib/shared/components/palette/history/event-log/event-log.component.mjs +0 -72
  698. package/esm2020/lib/shared/components/palette/judicial-user/read-judicial-user-field.component.mjs +0 -45
  699. package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +0 -242
  700. package/esm2020/lib/shared/components/palette/label/label-field.component.mjs +0 -50
  701. package/esm2020/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +0 -108
  702. package/esm2020/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +0 -189
  703. package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +0 -530
  704. package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +0 -204
  705. package/esm2020/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +0 -280
  706. package/esm2020/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +0 -66
  707. package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +0 -201
  708. package/esm2020/lib/shared/components/palette/linked-cases/domain/linked-cases.model.mjs +0 -22
  709. package/esm2020/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +0 -163
  710. package/esm2020/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +0 -132
  711. package/esm2020/lib/shared/components/palette/linked-cases/utils/validators.utils.mjs +0 -27
  712. package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +0 -229
  713. package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +0 -49
  714. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +0 -78
  715. package/esm2020/lib/shared/components/palette/markdown/routerlink.component.mjs +0 -23
  716. package/esm2020/lib/shared/components/palette/money-gbp/money-gbp-input.component.mjs +0 -123
  717. package/esm2020/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.mjs +0 -47
  718. package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +0 -78
  719. package/esm2020/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.mjs +0 -45
  720. package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +0 -126
  721. package/esm2020/lib/shared/components/palette/number/read-number-field.component.mjs +0 -24
  722. package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +0 -73
  723. package/esm2020/lib/shared/components/palette/order-summary/fee-value.model.mjs +0 -3
  724. package/esm2020/lib/shared/components/palette/order-summary/fee.model.mjs +0 -4
  725. package/esm2020/lib/shared/components/palette/order-summary/order-summary.model.mjs +0 -3
  726. package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-field.component.mjs +0 -73
  727. package/esm2020/lib/shared/components/palette/order-summary/read-order-summary-row.component.mjs +0 -43
  728. package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +0 -44
  729. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +0 -83
  730. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +0 -87
  731. package/esm2020/lib/shared/components/palette/organisation/read-organisation-field.component.mjs +0 -56
  732. package/esm2020/lib/shared/components/palette/organisation/write-organisation-complex-field.component.mjs +0 -33
  733. package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +0 -384
  734. package/esm2020/lib/shared/components/palette/palette.module.mjs +0 -738
  735. package/esm2020/lib/shared/components/palette/palette.service.mjs +0 -155
  736. package/esm2020/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.mjs +0 -24
  737. package/esm2020/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.mjs +0 -22
  738. package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +0 -73
  739. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +0 -42
  740. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +0 -144
  741. package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +0 -64
  742. package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +0 -60
  743. package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +0 -281
  744. package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +0 -327
  745. package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +0 -22
  746. package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +0 -164
  747. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +0 -74
  748. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +0 -107
  749. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +0 -201
  750. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +0 -101
  751. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +0 -21
  752. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +0 -38
  753. package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +0 -121
  754. package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +0 -22
  755. package/esm2020/lib/shared/components/palette/text/read-text-field.component.mjs +0 -24
  756. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +0 -77
  757. package/esm2020/lib/shared/components/palette/text-area/read-text-area-field.component.mjs +0 -24
  758. package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +0 -87
  759. package/esm2020/lib/shared/components/palette/unsupported-field.component.mjs +0 -17
  760. package/esm2020/lib/shared/components/palette/utils/dash.pipe.mjs +0 -16
  761. package/esm2020/lib/shared/components/palette/utils/date.pipe.mjs +0 -132
  762. package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +0 -29
  763. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +0 -62
  764. package/esm2020/lib/shared/components/palette/utils/is-compound.pipe.mjs +0 -43
  765. package/esm2020/lib/shared/components/palette/utils/is-mandatory.pipe.mjs +0 -21
  766. package/esm2020/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.mjs +0 -31
  767. package/esm2020/lib/shared/components/palette/utils/is-read-only.pipe.mjs +0 -21
  768. package/esm2020/lib/shared/components/palette/utils/utils.module.mjs +0 -71
  769. package/esm2020/lib/shared/components/palette/waystopay/waystopay-field.component.mjs +0 -34
  770. package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +0 -34
  771. package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +0 -100
  772. package/esm2020/lib/shared/components/palette/yes-no/yes-no.service.mjs +0 -50
  773. package/esm2020/lib/shared/components/search-filters/domain/search-input.model.mjs +0 -10
  774. package/esm2020/lib/shared/components/search-filters/search-filters-wrapper.component.mjs +0 -58
  775. package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +0 -326
  776. package/esm2020/lib/shared/components/search-filters/search-filters.module.mjs +0 -71
  777. package/esm2020/lib/shared/components/search-result/search-result.component.mjs +0 -815
  778. package/esm2020/lib/shared/components/search-result/search-result.module.mjs +0 -82
  779. package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +0 -479
  780. package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.module.mjs +0 -67
  781. package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +0 -164
  782. package/esm2020/lib/shared/directives/conditional-show/conditional-show.module.mjs +0 -33
  783. package/esm2020/lib/shared/directives/conditional-show/domain/conditional-show.model.mjs +0 -200
  784. package/esm2020/lib/shared/directives/conditional-show/services/condition-parser.service.mjs +0 -200
  785. package/esm2020/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.mjs +0 -19
  786. package/esm2020/lib/shared/directives/conditional-show/services/grey-bar.service.mjs +0 -47
  787. package/esm2020/lib/shared/directives/focus-element/focus-element.directive.mjs +0 -36
  788. package/esm2020/lib/shared/directives/focus-element/focus-element.module.mjs +0 -21
  789. package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +0 -82
  790. package/esm2020/lib/shared/directives/substitutor/label-substitutor.module.mjs +0 -30
  791. package/esm2020/lib/shared/directives/substitutor/services/placeholder.service.mjs +0 -200
  792. package/esm2020/lib/shared/domain/activity/activity.model.mjs +0 -10
  793. package/esm2020/lib/shared/domain/addresses/address.model.mjs +0 -13
  794. package/esm2020/lib/shared/domain/alert/alert.model.mjs +0 -3
  795. package/esm2020/lib/shared/domain/case-details.model.mjs +0 -4
  796. package/esm2020/lib/shared/domain/case-event-data.model.mjs +0 -4
  797. package/esm2020/lib/shared/domain/case-file-view/case-file-view-category.model.mjs +0 -3
  798. package/esm2020/lib/shared/domain/case-file-view/case-file-view-document.model.mjs +0 -4
  799. package/esm2020/lib/shared/domain/case-file-view/categories-and-documents.model.mjs +0 -7
  800. package/esm2020/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.mjs +0 -117
  801. package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +0 -28
  802. package/esm2020/lib/shared/domain/case-flag/hmcts-service-detail.model.mjs +0 -10
  803. package/esm2020/lib/shared/domain/case-view/case-event-trigger.model.mjs +0 -23
  804. package/esm2020/lib/shared/domain/case-view/case-print-document.model.mjs +0 -3
  805. package/esm2020/lib/shared/domain/case-view/case-tab.model.mjs +0 -12
  806. package/esm2020/lib/shared/domain/case-view/case-view-event.model.mjs +0 -4
  807. package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +0 -3
  808. package/esm2020/lib/shared/domain/case-view/case-view.model.mjs +0 -17
  809. package/esm2020/lib/shared/domain/definition/access-control-list.model.mjs +0 -3
  810. package/esm2020/lib/shared/domain/definition/banner.model.mjs +0 -3
  811. package/esm2020/lib/shared/domain/definition/case-event.model.mjs +0 -3
  812. package/esm2020/lib/shared/domain/definition/case-field.model.mjs +0 -200
  813. package/esm2020/lib/shared/domain/definition/case-state.model.mjs +0 -3
  814. package/esm2020/lib/shared/domain/definition/case-type-lite.model.mjs +0 -5
  815. package/esm2020/lib/shared/domain/definition/case-type.model.mjs +0 -12
  816. package/esm2020/lib/shared/domain/definition/event-case-field.model.mjs +0 -4
  817. package/esm2020/lib/shared/domain/definition/field-type.model.mjs +0 -22
  818. package/esm2020/lib/shared/domain/definition/fixed-list-item.model.mjs +0 -3
  819. package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +0 -3
  820. package/esm2020/lib/shared/domain/document/document-data.model.mjs +0 -14
  821. package/esm2020/lib/shared/domain/draft.model.mjs +0 -11
  822. package/esm2020/lib/shared/domain/http/http-error.model.mjs +0 -40
  823. package/esm2020/lib/shared/domain/organisation/organisation-converter.mjs +0 -42
  824. package/esm2020/lib/shared/domain/pagination-metadata.model.mjs +0 -3
  825. package/esm2020/lib/shared/domain/profile/profile.model.mjs +0 -29
  826. package/esm2020/lib/shared/domain/search/field.model.mjs +0 -11
  827. package/esm2020/lib/shared/domain/search/search-result-view-column.model.mjs +0 -3
  828. package/esm2020/lib/shared/domain/search/search-result-view-item.model.mjs +0 -12
  829. package/esm2020/lib/shared/domain/search/search-result-view.model.mjs +0 -23
  830. package/esm2020/lib/shared/domain/search/sorting/sort-parameters.mjs +0 -7
  831. package/esm2020/lib/shared/domain/workbasket/workbasket-input.model.mjs +0 -5
  832. package/esm2020/lib/shared/fixture/case-field-builder.mjs +0 -69
  833. package/esm2020/lib/shared/pipes/case-reference/case-reference.pipe.mjs +0 -33
  834. package/esm2020/lib/shared/pipes/case-title/ccd-case-title.pipe.mjs +0 -29
  835. package/esm2020/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.mjs +0 -32
  836. package/esm2020/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.mjs +0 -29
  837. package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +0 -39
  838. package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +0 -173
  839. package/esm2020/lib/shared/pipes/complex/ccd-tab-fields.pipe.mjs +0 -31
  840. package/esm2020/lib/shared/pipes/complex/fields-filter.pipe.mjs +0 -105
  841. package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +0 -16
  842. package/esm2020/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.mjs +0 -27
  843. package/esm2020/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.mjs +0 -27
  844. package/esm2020/lib/shared/pipes/pipes.module.mjs +0 -64
  845. package/esm2020/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +0 -24
  846. package/esm2020/lib/shared/services/activity/activity.polling.service.mjs +0 -114
  847. package/esm2020/lib/shared/services/activity/activity.service.mjs +0 -82
  848. package/esm2020/lib/shared/services/addresses/address-parser.mjs +0 -76
  849. package/esm2020/lib/shared/services/addresses/addresses.service.mjs +0 -63
  850. package/esm2020/lib/shared/services/alert/alert.service.mjs +0 -142
  851. package/esm2020/lib/shared/services/auth/auth.service.mjs +0 -33
  852. package/esm2020/lib/shared/services/banners/banners.service.mjs +0 -33
  853. package/esm2020/lib/shared/services/browser/browser.service.mjs +0 -24
  854. package/esm2020/lib/shared/services/case-fields/case-field.service.mjs +0 -34
  855. package/esm2020/lib/shared/services/case-fields/format-translator.service.mjs +0 -242
  856. package/esm2020/lib/shared/services/case-file-view/case-file-view.service.mjs +0 -46
  857. package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +0 -102
  858. package/esm2020/lib/shared/services/common-data-service/common-data-service.mjs +0 -28
  859. package/esm2020/lib/shared/services/definitions/definitions.module.mjs +0 -19
  860. package/esm2020/lib/shared/services/definitions/definitions.service.mjs +0 -30
  861. package/esm2020/lib/shared/services/document-management/document-management.service.mjs +0 -112
  862. package/esm2020/lib/shared/services/draft/draft.service.mjs +0 -86
  863. package/esm2020/lib/shared/services/error/error-notifier.service.mjs +0 -18
  864. package/esm2020/lib/shared/services/eventStatusService/event-status.service.mjs +0 -21
  865. package/esm2020/lib/shared/services/fields/fields.purger.mjs +0 -304
  866. package/esm2020/lib/shared/services/fields/fields.utils.mjs +0 -615
  867. package/esm2020/lib/shared/services/form/field-type-sanitiser.mjs +0 -102
  868. package/esm2020/lib/shared/services/form/form-error.service.mjs +0 -46
  869. package/esm2020/lib/shared/services/form/form-validators.service.mjs +0 -82
  870. package/esm2020/lib/shared/services/form/form-value.service.mjs +0 -551
  871. package/esm2020/lib/shared/services/http/http-error.service.mjs +0 -65
  872. package/esm2020/lib/shared/services/http/http.service.mjs +0 -93
  873. package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +0 -33
  874. package/esm2020/lib/shared/services/loading/loading.module.mjs +0 -22
  875. package/esm2020/lib/shared/services/loading/loading.service.mjs +0 -33
  876. package/esm2020/lib/shared/services/navigation/navigation-notifier.service.mjs +0 -18
  877. package/esm2020/lib/shared/services/order/order.service.mjs +0 -39
  878. package/esm2020/lib/shared/services/organisation/organisation.service.mjs +0 -54
  879. package/esm2020/lib/shared/services/profile/profile.notifier.mjs +0 -19
  880. package/esm2020/lib/shared/services/profile/profile.service.mjs +0 -34
  881. package/esm2020/lib/shared/services/request/request.options.builder.mjs +0 -61
  882. package/esm2020/lib/shared/services/router/router-helper.service.mjs +0 -20
  883. package/esm2020/lib/shared/services/search/search.service.mjs +0 -89
  884. package/esm2020/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +0 -71
  885. package/esm2020/lib/shared/services/session/session-storage.service.mjs +0 -34
  886. package/esm2020/lib/shared/services/utils/retry/retry.service.mjs +0 -86
  887. package/esm2020/lib/shared/services/window/window.service.mjs +0 -40
  888. package/esm2020/lib/shared/services/workbasket/workbasket-input-filter.service.mjs +0 -53
  889. package/esm2020/lib/shared/test/test-route-snapshot-builder.mjs +0 -40
  890. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +0 -38812
  891. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
  892. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +0 -35830
  893. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +0 -1
  894. /package/{esm2020 → esm2022}/hmcts-ccd-case-ui-toolkit.mjs +0 -0
  895. /package/{esm2020 → esm2022}/lib/components/banners/alert/index.mjs +0 -0
  896. /package/{esm2020 → esm2022}/lib/components/banners/index.mjs +0 -0
  897. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/index.mjs +0 -0
  898. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +0 -0
  899. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/index.mjs +0 -0
  900. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-style.enum.mjs +0 -0
  901. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/enums/notification-banner-type.enum.mjs +0 -0
  902. /package/{esm2020 → esm2022}/lib/components/banners/notification-banner/index.mjs +0 -0
  903. /package/{esm2020 → esm2022}/lib/components/body/index.mjs +0 -0
  904. /package/{esm2020 → esm2022}/lib/components/footer/index.mjs +0 -0
  905. /package/{esm2020 → esm2022}/lib/components/form/date-input/index.mjs +0 -0
  906. /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
  907. /package/{esm2020 → esm2022}/lib/components/header/header-bar/index.mjs +0 -0
  908. /package/{esm2020 → esm2022}/lib/components/header/index.mjs +0 -0
  909. /package/{esm2020 → esm2022}/lib/components/header/navigation/index.mjs +0 -0
  910. /package/{esm2020 → esm2022}/lib/components/header/phase/index.mjs +0 -0
  911. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  912. /package/{esm2020 → esm2022}/lib/components/tabs/index.mjs +0 -0
  913. /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/case-edit-validation.model.mjs +0 -0
  914. /package/{esm2020 → esm2022}/lib/shared/commons/case-edit-data/index.mjs +0 -0
  915. /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-banner/index.mjs +0 -0
  916. /package/{esm2020 → esm2022}/lib/shared/components/activity/activity-icon/index.mjs +0 -0
  917. /package/{esm2020 → esm2022}/lib/shared/components/activity/index.mjs +0 -0
  918. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-create/index.mjs +0 -0
  919. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit/index.mjs +0 -0
  920. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-confirm/index.mjs +0 -0
  921. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-form/index.mjs +0 -0
  922. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-page/index.mjs +0 -0
  923. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +0 -0
  924. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-edit-submit/index.mjs +0 -0
  925. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-event-completion/index.mjs +0 -0
  926. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/case-progress/index.mjs +0 -0
  927. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-params.model.mjs +0 -0
  928. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -0
  929. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.mjs +0 -0
  930. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +0 -0
  931. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/event-completion-states.enum.model.mjs +0 -0
  932. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/domain/index.mjs +0 -0
  933. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/editor.routing.mjs +0 -0
  934. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/index.mjs +0 -0
  935. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/index.mjs +0 -0
  936. /package/{esm2020 → esm2022}/lib/shared/components/case-editor/services/wizard-factory.service.mjs +0 -0
  937. /package/{esm2020 → esm2022}/lib/shared/components/case-header/index.mjs +0 -0
  938. /package/{esm2020 → esm2022}/lib/shared/components/case-history/index.mjs +0 -0
  939. /package/{esm2020 → esm2022}/lib/shared/components/case-list/index.mjs +0 -0
  940. /package/{esm2020 → esm2022}/lib/shared/components/case-list-filters/index.mjs +0 -0
  941. /package/{esm2020 → esm2022}/lib/shared/components/case-timeline/index.mjs +0 -0
  942. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-basic-access-view/index.mjs +0 -0
  943. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/index.mjs +0 -0
  944. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.mjs +0 -0
  945. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-request/models/index.mjs +0 -0
  946. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-challenged-access-success/index.mjs +0 -0
  947. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-event-trigger/index.mjs +0 -0
  948. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-full-access-view/index.mjs +0 -0
  949. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-reject/index.mjs +0 -0
  950. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/index.mjs +0 -0
  951. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.mjs +0 -0
  952. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.mjs +0 -0
  953. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/index.mjs +0 -0
  954. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.mjs +0 -0
  955. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-request/models/index.mjs +0 -0
  956. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-specific-access-success/index.mjs +0 -0
  957. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/case-view/index.mjs +0 -0
  958. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/index.mjs +0 -0
  959. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/index.mjs +0 -0
  960. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/printer/pipes/index.mjs +0 -0
  961. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/services/index.mjs +0 -0
  962. /package/{esm2020 → esm2022}/lib/shared/components/case-viewer/viewer.routing.mjs +0 -0
  963. /package/{esm2020 → esm2022}/lib/shared/components/create-case-filters/index.mjs +0 -0
  964. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/delete-or-cancel-dialog/index.mjs +0 -0
  965. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/document-dialog/index.mjs +0 -0
  966. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/index.mjs +0 -0
  967. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/remove-dialog/index.mjs +0 -0
  968. /package/{esm2020 → esm2022}/lib/shared/components/dialogs/save-or-discard-dialog/index.mjs +0 -0
  969. /package/{esm2020 → esm2022}/lib/shared/components/error/domain/index.mjs +0 -0
  970. /package/{esm2020 → esm2022}/lib/shared/components/error/index.mjs +0 -0
  971. /package/{esm2020 → esm2022}/lib/shared/components/error-message/index.mjs +0 -0
  972. /package/{esm2020 → esm2022}/lib/shared/components/event-start/index.mjs +0 -0
  973. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-state-machine-context.model.mjs +0 -0
  974. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/event-start-states-enum.model.mjs +0 -0
  975. /package/{esm2020 → esm2022}/lib/shared/components/event-start/models/index.mjs +0 -0
  976. /package/{esm2020 → esm2022}/lib/shared/components/event-start/services/index.mjs +0 -0
  977. /package/{esm2020 → esm2022}/lib/shared/components/event-trigger/index.mjs +0 -0
  978. /package/{esm2020 → esm2022}/lib/shared/components/helpers/index.mjs +0 -0
  979. /package/{esm2020 → esm2022}/lib/shared/components/helpers/init-dialog-helper.mjs +0 -0
  980. /package/{esm2020 → esm2022}/lib/shared/components/index.mjs +0 -0
  981. /package/{esm2020 → esm2022}/lib/shared/components/loading-spinner/index.mjs +0 -0
  982. /package/{esm2020 → esm2022}/lib/shared/components/pagination/index.mjs +0 -0
  983. /package/{esm2020 → esm2022}/lib/shared/components/palette/address/index.mjs +0 -0
  984. /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/index.mjs +0 -0
  985. /package/{esm2020 → esm2022}/lib/shared/components/palette/base-field/palette-context.enum.mjs +0 -0
  986. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/index.mjs +0 -0
  987. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu-item.model.mjs +0 -0
  988. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/components/shared/index.mjs +0 -0
  989. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/index.mjs +0 -0
  990. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +0 -0
  991. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/index.mjs +0 -0
  992. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +0 -0
  993. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +0 -0
  994. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +0 -0
  995. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/index.mjs +0 -0
  996. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/domain/language.model.mjs +0 -0
  997. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +0 -0
  998. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +0 -0
  999. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +0 -0
  1000. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +0 -0
  1001. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +0 -0
  1002. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +0 -0
  1003. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-summary-list-display-mode.enum.mjs +0 -0
  1004. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +0 -0
  1005. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +0 -0
  1006. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +0 -0
  1007. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/index.mjs +0 -0
  1008. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-error-message.enum.mjs +0 -0
  1009. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/search-language-interpreter-step.enum.mjs +0 -0
  1010. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +0 -0
  1011. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-location-error-message.enum.mjs +0 -0
  1012. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +0 -0
  1013. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +0 -0
  1014. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +0 -0
  1015. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +0 -0
  1016. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +0 -0
  1017. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +0 -0
  1018. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/index.mjs +0 -0
  1019. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-flag/pipes/index.mjs +0 -0
  1020. /package/{esm2020 → esm2022}/lib/shared/components/palette/case-link/index.mjs +0 -0
  1021. /package/{esm2020 → esm2022}/lib/shared/components/palette/collection/index.mjs +0 -0
  1022. /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/index.mjs +0 -0
  1023. /package/{esm2020 → esm2022}/lib/shared/components/palette/complex/sort-order.mjs +0 -0
  1024. /package/{esm2020 → esm2022}/lib/shared/components/palette/date/index.mjs +0 -0
  1025. /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/datetime-picker-utils.mjs +0 -0
  1026. /package/{esm2020 → esm2022}/lib/shared/components/palette/datetime-picker/index.mjs +0 -0
  1027. /package/{esm2020 → esm2022}/lib/shared/components/palette/document/index.mjs +0 -0
  1028. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-list/index.mjs +0 -0
  1029. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-multi-select-list/index.mjs +0 -0
  1030. /package/{esm2020 → esm2022}/lib/shared/components/palette/dynamic-radio-list/index.mjs +0 -0
  1031. /package/{esm2020 → esm2022}/lib/shared/components/palette/email/index.mjs +0 -0
  1032. /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-list/index.mjs +0 -0
  1033. /package/{esm2020 → esm2022}/lib/shared/components/palette/fixed-radio-list/index.mjs +0 -0
  1034. /package/{esm2020 → esm2022}/lib/shared/components/palette/history/event-log/index.mjs +0 -0
  1035. /package/{esm2020 → esm2022}/lib/shared/components/palette/history/index.mjs +0 -0
  1036. /package/{esm2020 → esm2022}/lib/shared/components/palette/index.mjs +0 -0
  1037. /package/{esm2020 → esm2022}/lib/shared/components/palette/judicial-user/index.mjs +0 -0
  1038. /package/{esm2020 → esm2022}/lib/shared/components/palette/label/index.mjs +0 -0
  1039. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/components/index.mjs +0 -0
  1040. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/index.mjs +0 -0
  1041. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.mjs +0 -0
  1042. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/index.mjs +0 -0
  1043. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.mjs +0 -0
  1044. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/index.mjs +0 -0
  1045. /package/{esm2020 → esm2022}/lib/shared/components/palette/linked-cases/services/index.mjs +0 -0
  1046. /package/{esm2020 → esm2022}/lib/shared/components/palette/markdown/index.mjs +0 -0
  1047. /package/{esm2020 → esm2022}/lib/shared/components/palette/money-gbp/index.mjs +0 -0
  1048. /package/{esm2020 → esm2022}/lib/shared/components/palette/multi-select-list/index.mjs +0 -0
  1049. /package/{esm2020 → esm2022}/lib/shared/components/palette/number/index.mjs +0 -0
  1050. /package/{esm2020 → esm2022}/lib/shared/components/palette/order-summary/index.mjs +0 -0
  1051. /package/{esm2020 → esm2022}/lib/shared/components/palette/organisation/index.mjs +0 -0
  1052. /package/{esm2020 → esm2022}/lib/shared/components/palette/payment/index.mjs +0 -0
  1053. /package/{esm2020 → esm2022}/lib/shared/components/palette/phone-uk/index.mjs +0 -0
  1054. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/__mocks__/index.mjs +0 -0
  1055. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/components/index.mjs +0 -0
  1056. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/index.mjs +0 -0
  1057. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +0 -0
  1058. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +0 -0
  1059. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +0 -0
  1060. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +0 -0
  1061. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/index.mjs +0 -0
  1062. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +0 -0
  1063. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/index.mjs +0 -0
  1064. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +0 -0
  1065. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +0 -0
  1066. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +0 -0
  1067. /package/{esm2020 → esm2022}/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +0 -0
  1068. /package/{esm2020 → esm2022}/lib/shared/components/palette/text/index.mjs +0 -0
  1069. /package/{esm2020 → esm2022}/lib/shared/components/palette/text-area/index.mjs +0 -0
  1070. /package/{esm2020 → esm2022}/lib/shared/components/palette/utils/index.mjs +0 -0
  1071. /package/{esm2020 → esm2022}/lib/shared/components/palette/waystopay/index.mjs +0 -0
  1072. /package/{esm2020 → esm2022}/lib/shared/components/palette/yes-no/index.mjs +0 -0
  1073. /package/{esm2020 → esm2022}/lib/shared/components/search-filters/domain/index.mjs +0 -0
  1074. /package/{esm2020 → esm2022}/lib/shared/components/search-filters/index.mjs +0 -0
  1075. /package/{esm2020 → esm2022}/lib/shared/components/search-result/index.mjs +0 -0
  1076. /package/{esm2020 → esm2022}/lib/shared/components/workbasket-filters/index.mjs +0 -0
  1077. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/domain/index.mjs +0 -0
  1078. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/index.mjs +0 -0
  1079. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/condition.peg.mjs +0 -0
  1080. /package/{esm2020 → esm2022}/lib/shared/directives/conditional-show/services/index.mjs +0 -0
  1081. /package/{esm2020 → esm2022}/lib/shared/directives/focus-element/index.mjs +0 -0
  1082. /package/{esm2020 → esm2022}/lib/shared/directives/index.mjs +0 -0
  1083. /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/index.mjs +0 -0
  1084. /package/{esm2020 → esm2022}/lib/shared/directives/substitutor/services/index.mjs +0 -0
  1085. /package/{esm2020 → esm2022}/lib/shared/domain/activity/index.mjs +0 -0
  1086. /package/{esm2020 → esm2022}/lib/shared/domain/addresses/index.mjs +0 -0
  1087. /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-level.model.mjs +0 -0
  1088. /package/{esm2020 → esm2022}/lib/shared/domain/alert/alert-status-params.model.mjs +0 -0
  1089. /package/{esm2020 → esm2022}/lib/shared/domain/alert/index.mjs +0 -0
  1090. /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/case-edit.model.mjs +0 -0
  1091. /package/{esm2020 → esm2022}/lib/shared/domain/case-edit/index.mjs +0 -0
  1092. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/case-file-view-sort-columns.enum.mjs +0 -0
  1093. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/document-tree-node/document-tree-node-type.model.mjs +0 -0
  1094. /package/{esm2020 → esm2022}/lib/shared/domain/case-file-view/index.mjs +0 -0
  1095. /package/{esm2020 → esm2022}/lib/shared/domain/case-flag/index.mjs +0 -0
  1096. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/access-types.model.mjs +0 -0
  1097. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +0 -0
  1098. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/challenged-access-request.model.mjs +0 -0
  1099. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/index.mjs +0 -0
  1100. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/review-specific-access-request.model.mjs +0 -0
  1101. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-assignment-response.model.mjs +0 -0
  1102. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/role-request.model.mjs +0 -0
  1103. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/service-org-response.model.mjs +0 -0
  1104. /package/{esm2020 → esm2022}/lib/shared/domain/case-view/specific-access-request.model.mjs +0 -0
  1105. /package/{esm2020 → esm2022}/lib/shared/domain/definition/display-context-enum.model.mjs +0 -0
  1106. /package/{esm2020 → esm2022}/lib/shared/domain/definition/field-type-enum.model.mjs +0 -0
  1107. /package/{esm2020 → esm2022}/lib/shared/domain/definition/index.mjs +0 -0
  1108. /package/{esm2020 → esm2022}/lib/shared/domain/document/index.mjs +0 -0
  1109. /package/{esm2020 → esm2022}/lib/shared/domain/error-message.model.mjs +0 -0
  1110. /package/{esm2020 → esm2022}/lib/shared/domain/http/index.mjs +0 -0
  1111. /package/{esm2020 → esm2022}/lib/shared/domain/index.mjs +0 -0
  1112. /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/index.mjs +0 -0
  1113. /package/{esm2020 → esm2022}/lib/shared/domain/jurisdiction/judicial-user.model.mjs +0 -0
  1114. /package/{esm2020 → esm2022}/lib/shared/domain/order/index.mjs +0 -0
  1115. /package/{esm2020 → esm2022}/lib/shared/domain/order/orderable.model.mjs +0 -0
  1116. /package/{esm2020 → esm2022}/lib/shared/domain/organisation/index.mjs +0 -0
  1117. /package/{esm2020 → esm2022}/lib/shared/domain/organisation/simple-organisation.model.mjs +0 -0
  1118. /package/{esm2020 → esm2022}/lib/shared/domain/predicate.model.mjs +0 -0
  1119. /package/{esm2020 → esm2022}/lib/shared/domain/profile/index.mjs +0 -0
  1120. /package/{esm2020 → esm2022}/lib/shared/domain/search/index.mjs +0 -0
  1121. /package/{esm2020 → esm2022}/lib/shared/domain/search/sorting/search-result-view-item-comparator.mjs +0 -0
  1122. /package/{esm2020 → esm2022}/lib/shared/domain/sort-order.enum.mjs +0 -0
  1123. /package/{esm2020 → esm2022}/lib/shared/domain/user/user-details.model.mjs +0 -0
  1124. /package/{esm2020 → esm2022}/lib/shared/domain/user/user-info.model.mjs +0 -0
  1125. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/Task.mjs +0 -0
  1126. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/TaskPayload.mjs +0 -0
  1127. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/case-worker.model.mjs +0 -0
  1128. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/index.mjs +0 -0
  1129. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/judicial-worker.model.mjs +0 -0
  1130. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-response.model.mjs +0 -0
  1131. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/task-search-parameter.model.mjs +0 -0
  1132. /package/{esm2020 → esm2022}/lib/shared/domain/work-allocation/wa-service-config.model.mjs +0 -0
  1133. /package/{esm2020 → esm2022}/lib/shared/domain/workbasket/index.mjs +0 -0
  1134. /package/{esm2020 → esm2022}/lib/shared/fixture/shared.test.fixture.mjs +0 -0
  1135. /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
  1136. /package/{esm2020 → esm2022}/lib/shared/pipes/case-reference/index.mjs +0 -0
  1137. /package/{esm2020 → esm2022}/lib/shared/pipes/case-title/index.mjs +0 -0
  1138. /package/{esm2020 → esm2022}/lib/shared/pipes/complex/index.mjs +0 -0
  1139. /package/{esm2020 → esm2022}/lib/shared/pipes/generic/index.mjs +0 -0
  1140. /package/{esm2020 → esm2022}/lib/shared/pipes/index.mjs +0 -0
  1141. /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-from-reason-code/index.mjs +0 -0
  1142. /package/{esm2020 → esm2022}/lib/shared/pipes/link-cases-reason-code/index.mjs +0 -0
  1143. /package/{esm2020 → esm2022}/lib/shared/services/activity/index.mjs +0 -0
  1144. /package/{esm2020 → esm2022}/lib/shared/services/addresses/address-type.enum.mjs +0 -0
  1145. /package/{esm2020 → esm2022}/lib/shared/services/addresses/index.mjs +0 -0
  1146. /package/{esm2020 → esm2022}/lib/shared/services/alert/index.mjs +0 -0
  1147. /package/{esm2020 → esm2022}/lib/shared/services/auth/index.mjs +0 -0
  1148. /package/{esm2020 → esm2022}/lib/shared/services/banners/index.mjs +0 -0
  1149. /package/{esm2020 → esm2022}/lib/shared/services/browser/index.mjs +0 -0
  1150. /package/{esm2020 → esm2022}/lib/shared/services/case-fields/index.mjs +0 -0
  1151. /package/{esm2020 → esm2022}/lib/shared/services/case-file-view/index.mjs +0 -0
  1152. /package/{esm2020 → esm2022}/lib/shared/services/case-flag/index.mjs +0 -0
  1153. /package/{esm2020 → esm2022}/lib/shared/services/case-flag/refdata-case-flag-type.enum.mjs +0 -0
  1154. /package/{esm2020 → esm2022}/lib/shared/services/definitions/index.mjs +0 -0
  1155. /package/{esm2020 → esm2022}/lib/shared/services/document-management/index.mjs +0 -0
  1156. /package/{esm2020 → esm2022}/lib/shared/services/draft/index.mjs +0 -0
  1157. /package/{esm2020 → esm2022}/lib/shared/services/error/index.mjs +0 -0
  1158. /package/{esm2020 → esm2022}/lib/shared/services/eventStatusService/index.mjs +0 -0
  1159. /package/{esm2020 → esm2022}/lib/shared/services/fields/index.mjs +0 -0
  1160. /package/{esm2020 → esm2022}/lib/shared/services/form/index.mjs +0 -0
  1161. /package/{esm2020 → esm2022}/lib/shared/services/http/index.mjs +0 -0
  1162. /package/{esm2020 → esm2022}/lib/shared/services/index.mjs +0 -0
  1163. /package/{esm2020 → esm2022}/lib/shared/services/jurisdiction/index.mjs +0 -0
  1164. /package/{esm2020 → esm2022}/lib/shared/services/loading/index.mjs +0 -0
  1165. /package/{esm2020 → esm2022}/lib/shared/services/navigation/index.mjs +0 -0
  1166. /package/{esm2020 → esm2022}/lib/shared/services/navigation/navigation-origin.model.mjs +0 -0
  1167. /package/{esm2020 → esm2022}/lib/shared/services/order/index.mjs +0 -0
  1168. /package/{esm2020 → esm2022}/lib/shared/services/organisation/index.mjs +0 -0
  1169. /package/{esm2020 → esm2022}/lib/shared/services/profile/index.mjs +0 -0
  1170. /package/{esm2020 → esm2022}/lib/shared/services/request/index.mjs +0 -0
  1171. /package/{esm2020 → esm2022}/lib/shared/services/router/index.mjs +0 -0
  1172. /package/{esm2020 → esm2022}/lib/shared/services/search/index.mjs +0 -0
  1173. /package/{esm2020 → esm2022}/lib/shared/services/session/index.mjs +0 -0
  1174. /package/{esm2020 → esm2022}/lib/shared/services/utils/retry/index.mjs +0 -0
  1175. /package/{esm2020 → esm2022}/lib/shared/services/window/index.mjs +0 -0
  1176. /package/{esm2020 → esm2022}/lib/shared/services/workbasket/index.mjs +0 -0
  1177. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,615 @@
1
+ import { CurrencyPipe } from '@angular/common';
2
+ import { Injectable } from '@angular/core';
3
+ import { FormArray, FormControl, FormGroup } from '@angular/forms';
4
+ import { plainToClassFromExist } from 'class-transformer';
5
+ import { CaseFlagDisplayContextParameter, CaseFlagStatus } from '../../components/palette/case-flag/enums';
6
+ import { DatePipe } from '../../components/palette/utils';
7
+ import { CaseField } from '../../domain';
8
+ import { FormatTranslatorService } from '../case-fields/format-translator.service';
9
+ import * as i0 from "@angular/core";
10
+ // @dynamic
11
+ export class FieldsUtils {
12
+ static caseLevelCaseFlagsFieldId = 'caseFlags';
13
+ static currencyPipe = new CurrencyPipe('en-GB');
14
+ static datePipe = new DatePipe(new FormatTranslatorService());
15
+ // EUI-4244. 3 dashes instead of 1 to make this less likely to clash with a real field.
16
+ static LABEL_SUFFIX = '---LABEL';
17
+ // Handling of Dynamic Lists in Complex Types
18
+ static SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';
19
+ static SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';
20
+ static SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList'];
21
+ static isValidDisplayContext(ctx) {
22
+ return (ctx === 'MANDATORY' || ctx === 'READONLY'
23
+ || ctx === 'OPTIONAL' || ctx === 'HIDDEN'
24
+ || ctx === 'COMPLEX');
25
+ }
26
+ static convertToCaseField(obj) {
27
+ if (!(obj instanceof CaseField)) {
28
+ return plainToClassFromExist(new CaseField(), obj);
29
+ }
30
+ return obj;
31
+ }
32
+ static toValuesMap(caseFields) {
33
+ const valueMap = {};
34
+ caseFields.forEach(field => {
35
+ valueMap[field.id] = FieldsUtils.prepareValue(field);
36
+ });
37
+ return valueMap;
38
+ }
39
+ // public static getType(elem: any): string {
40
+ // return Object.prototype.toString.call(elem).slice(8, -1);
41
+ // }
42
+ static isObject(elem) {
43
+ return typeof elem === 'object' && elem !== null;
44
+ }
45
+ static isNonEmptyObject(elem) {
46
+ return this.isObject(elem) && Object.keys(elem).length !== 0;
47
+ }
48
+ static isArray(elem) {
49
+ return Array.isArray(elem);
50
+ }
51
+ static areCollectionValuesSimpleFields(fieldValue) {
52
+ return !this.isObject(fieldValue[0]['value']) && !Array.isArray(fieldValue[0]['value']) && fieldValue[0]['value'] !== undefined;
53
+ }
54
+ static isCollectionOfSimpleTypes(fieldValue) {
55
+ return this.isCollection(fieldValue) && this.areCollectionValuesSimpleFields(fieldValue);
56
+ }
57
+ static isMultiSelectValue(form) {
58
+ return this.isNonEmptyArray(form) && !this.isCollectionWithValue(form);
59
+ }
60
+ static isNonEmptyArray(pageFormFields) {
61
+ return Array.isArray(pageFormFields) && pageFormFields[0] !== undefined;
62
+ }
63
+ static isCollection(pageFormFields) {
64
+ return this.isNonEmptyArray(pageFormFields) && this.isCollectionWithValue(pageFormFields);
65
+ }
66
+ static isCollectionWithValue(pageFormFields) {
67
+ return pageFormFields[0]['value'] !== undefined;
68
+ }
69
+ static cloneObject(obj) {
70
+ return Object.assign({}, obj);
71
+ }
72
+ // temporary function until this can be moved to CaseView class (RDM-2681)
73
+ static getCaseFields(caseView) {
74
+ const caseDataFields = caseView.tabs.reduce((acc, tab) => {
75
+ return acc.concat(tab.fields);
76
+ }, []);
77
+ const metadataFields = caseView.metadataFields;
78
+ return metadataFields.concat(caseDataFields.filter((caseField) => {
79
+ return metadataFields.findIndex(metadataField => metadataField.id === caseField.id) < 0;
80
+ }));
81
+ }
82
+ static addCaseFieldAndComponentReferences(c, cf, comp) {
83
+ c['caseField'] = cf;
84
+ c['component'] = comp;
85
+ }
86
+ /**
87
+ * Recursive check of an array or object and its descendants for the presence of any non-empty values.
88
+ *
89
+ * @param object The array or object to check
90
+ * @returns `true` if the array or object (or a descendant) contains at least one non-empty value; `false` otherwise
91
+ */
92
+ static containsNonEmptyValues(object) {
93
+ if (!object) {
94
+ return false;
95
+ }
96
+ const values = Object.keys(object).map(key => object[key]);
97
+ const objectRefs = [];
98
+ // Also test for numeric values, and length > 0 for non-numeric values because this covers both strings and arrays.
99
+ // Note: Deliberate use of non-equality (!=) operator for null check, to handle both null and undefined values.
100
+ // tslint:disable-next-line: triple-equals
101
+ const hasNonNullPrimitive = values.some(x => (x != null &&
102
+ ((typeof x === 'object' && x.constructor === Object) || Array.isArray(x)
103
+ ? !objectRefs.push(x)
104
+ : typeof x === 'number' || x.length > 0)));
105
+ return !hasNonNullPrimitive ? objectRefs.some(y => this.containsNonEmptyValues(y)) : hasNonNullPrimitive;
106
+ }
107
+ /**
108
+ * handleNestedDynamicLists()
109
+ * Reassigns list_item and value data to DynamicList children
110
+ * down the tree. Server response returns data only in
111
+ * the `value` object of parent complex type
112
+ *
113
+ * EUI-2530 Dynamic Lists for Elements in a Complex Type
114
+ *
115
+ * @param jsonBody - { case_fields: [ CaseField, CaseField ] }
116
+ */
117
+ static handleNestedDynamicLists(jsonBody) {
118
+ if (jsonBody.case_fields) {
119
+ jsonBody.case_fields.forEach(caseField => {
120
+ if (caseField.field_type) {
121
+ this.setDynamicListDefinition(caseField, caseField.field_type, caseField);
122
+ }
123
+ });
124
+ }
125
+ return jsonBody;
126
+ }
127
+ static prepareValue(field) {
128
+ if (field.value) {
129
+ return field.value;
130
+ }
131
+ else if (field.isComplex()) {
132
+ const valueMap = {};
133
+ field.field_type.complex_fields.forEach(complexField => {
134
+ valueMap[complexField.id] = FieldsUtils.prepareValue(complexField);
135
+ });
136
+ return valueMap;
137
+ }
138
+ }
139
+ static DEFAULT_MERGE_FUNCTION = function mergeFunction(field, result) {
140
+ if (!result.hasOwnProperty(field.id)) {
141
+ result[field.id] = field.value;
142
+ }
143
+ };
144
+ static LABEL_MERGE_FUNCTION = function mergeFunction(field, result) {
145
+ if (!result) {
146
+ result = {};
147
+ }
148
+ if (!result.hasOwnProperty(field.id)) {
149
+ result[field.id] = field.value;
150
+ }
151
+ // tslint:disable-next-line: switch-default
152
+ switch (field.field_type.type) {
153
+ case 'FixedList':
154
+ case 'FixedRadioList': {
155
+ result[field.id] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, result[field.id] || field.value);
156
+ break;
157
+ }
158
+ case 'MultiSelectList': {
159
+ const fieldValue = result[field.id] || [];
160
+ result[field.id + FieldsUtils.LABEL_SUFFIX] = [];
161
+ fieldValue.forEach((code, idx) => {
162
+ result[field.id + FieldsUtils.LABEL_SUFFIX][idx] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, code);
163
+ });
164
+ break;
165
+ }
166
+ case 'Label': {
167
+ result[field.id] = FieldsUtils.getLabel(field);
168
+ break;
169
+ }
170
+ case 'MoneyGBP': {
171
+ const fieldValue = (result[field.id] || field.value);
172
+ result[field.id] = FieldsUtils.getMoneyGBP(fieldValue);
173
+ break;
174
+ }
175
+ case 'Date': {
176
+ const fieldValue = (result[field.id] || field.value);
177
+ result[field.id] = FieldsUtils.getDate(fieldValue);
178
+ break;
179
+ }
180
+ case 'Complex': {
181
+ if (result[field.id] && field.field_type.complex_fields) {
182
+ field.field_type.complex_fields.forEach((f) => {
183
+ if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {
184
+ FieldsUtils.LABEL_MERGE_FUNCTION(f, result[field.id]);
185
+ }
186
+ });
187
+ }
188
+ break;
189
+ }
190
+ case 'Collection': {
191
+ const elements = (result[field.id] || field.value);
192
+ if (elements) {
193
+ elements.forEach((elem) => {
194
+ // tslint:disable-next-line:switch-default
195
+ switch (field.field_type.collection_field_type.type) {
196
+ case 'MoneyGBP': {
197
+ elem.value = FieldsUtils.getMoneyGBP(elem.value);
198
+ break;
199
+ }
200
+ case 'Date': {
201
+ elem.value = FieldsUtils.getDate(elem.value);
202
+ break;
203
+ }
204
+ case 'Complex': {
205
+ if (field.field_type.collection_field_type.complex_fields) {
206
+ field.field_type.collection_field_type.complex_fields.forEach((f) => {
207
+ if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {
208
+ FieldsUtils.LABEL_MERGE_FUNCTION(f, elem.value);
209
+ }
210
+ });
211
+ }
212
+ break;
213
+ }
214
+ }
215
+ });
216
+ }
217
+ break;
218
+ }
219
+ }
220
+ };
221
+ /**
222
+ * Formats a `MoneyGBP` value to include currency units.
223
+ * @param fieldValue The CurrencyPipe expects an `any` parameter so this must also be `any`,
224
+ * but it should be "number-like" (e.g., '1234')
225
+ * @returns A formatted string (e.g., £12.34)
226
+ */
227
+ static getMoneyGBP(fieldValue) {
228
+ return fieldValue ? FieldsUtils.currencyPipe.transform(fieldValue / 100, 'GBP', 'symbol') : fieldValue;
229
+ }
230
+ static getLabel(fieldValue) {
231
+ return fieldValue ? fieldValue.label : '';
232
+ }
233
+ static getDate(fieldValue) {
234
+ try {
235
+ // Format specified here wasn't previously working and lots of tests depend on it not working
236
+ // Now that formats work correctly many test would break - and this could affect services which may depend on
237
+ // the orginal behaviour of returning dates in "d MMM yyyy"
238
+ // Note - replaced 'd' with 'D' as datepipe using moment to avoid timezone discrepancies
239
+ return FieldsUtils.datePipe.transform(fieldValue, null, 'D MMM yyyy');
240
+ }
241
+ catch (e) {
242
+ return this.textForInvalidField('Date', fieldValue);
243
+ }
244
+ }
245
+ static getFixedListLabelByCodeOrEmpty(field, code) {
246
+ const relevantItem = code ? field.field_type.fixed_list_items.find(item => item.code === code) : null;
247
+ return relevantItem ? relevantItem.label : '';
248
+ }
249
+ static textForInvalidField(type, invalidValue) {
250
+ return `{ Invalid ${type}: ${invalidValue} }`;
251
+ }
252
+ static setDynamicListDefinition(caseField, caseFieldType, rootCaseField) {
253
+ if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {
254
+ caseFieldType.complex_fields.forEach(field => {
255
+ try {
256
+ const isDynamicField = FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;
257
+ if (isDynamicField) {
258
+ const dynamicListValue = this.getDynamicListValue(rootCaseField.value, field.id);
259
+ if (dynamicListValue) {
260
+ const list_items = dynamicListValue[0].list_items;
261
+ const complexValue = dynamicListValue.map(data => data.value);
262
+ const value = {
263
+ list_items,
264
+ value: complexValue.length > 0 ? complexValue : undefined
265
+ };
266
+ field.value = {
267
+ ...value
268
+ };
269
+ field.formatted_value = {
270
+ ...field.formatted_value,
271
+ ...value
272
+ };
273
+ }
274
+ }
275
+ else {
276
+ this.setDynamicListDefinition(field, field.field_type, rootCaseField);
277
+ }
278
+ }
279
+ catch (error) {
280
+ console.log(error);
281
+ }
282
+ });
283
+ }
284
+ else if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {
285
+ if (caseFieldType.collection_field_type) {
286
+ this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);
287
+ }
288
+ }
289
+ }
290
+ static getDynamicListValue(jsonBlock, key) {
291
+ const data = jsonBlock ? this.getNestedFieldValues(jsonBlock, key, []) : [];
292
+ return data.length > 0 ? data : null;
293
+ }
294
+ static getNestedFieldValues(jsonData, key, output = []) {
295
+ if (jsonData && jsonData[key]) {
296
+ output.push(jsonData[key]);
297
+ }
298
+ else {
299
+ for (const elementKey in jsonData) {
300
+ if (typeof jsonData === 'object' && jsonData.hasOwnProperty(elementKey)) {
301
+ this.getNestedFieldValues(jsonData[elementKey], key, output);
302
+ }
303
+ }
304
+ }
305
+ return output;
306
+ }
307
+ static isFlagsCaseField(caseField) {
308
+ if (!caseField) {
309
+ return false;
310
+ }
311
+ return this.isFlagsFieldType(caseField.field_type);
312
+ }
313
+ /**
314
+ * @deprecated Use {@link isCaseFieldOfType} instead, passing 'FlagLauncher' as the single type in the `types` array
315
+ */
316
+ static isFlagLauncherCaseField(caseField) {
317
+ if (!caseField) {
318
+ return false;
319
+ }
320
+ return caseField.field_type.type === 'FlagLauncher';
321
+ }
322
+ /**
323
+ * @deprecated Use {@link isCaseFieldOfType} instead, passing 'ComponentLauncher' as the single type in the `types`
324
+ * array
325
+ */
326
+ static isComponentLauncherCaseField(caseField) {
327
+ if (!caseField) {
328
+ return false;
329
+ }
330
+ return caseField.field_type.type === 'ComponentLauncher';
331
+ }
332
+ /**
333
+ * Checks if a {@link CaseField} is of one of the given field types.
334
+ *
335
+ * @param caseField The `CaseField` to check
336
+ * @param types An array of one or more field types
337
+ * @returns `true` if the `CaseField` type is one of those in the array of types to check against; `false`
338
+ * otherwise or if `caseField` or `types` are falsy
339
+ */
340
+ static isCaseFieldOfType(caseField, types) {
341
+ if (!caseField || !types) {
342
+ return false;
343
+ }
344
+ return types.some(type => type === caseField.field_type?.type || type === caseField.field_type?.id);
345
+ }
346
+ static isLinkedCasesCaseField(caseField) {
347
+ return FieldsUtils.isComponentLauncherCaseField(caseField) &&
348
+ caseField.id === 'LinkedCasesComponentLauncher';
349
+ }
350
+ static containsLinkedCasesCaseField(caseFields) {
351
+ return caseFields?.some(caseField => FieldsUtils.isLinkedCasesCaseField(caseField));
352
+ }
353
+ static isFlagsFieldType(fieldType) {
354
+ if (!fieldType) {
355
+ return false;
356
+ }
357
+ // Note: This implementation supports the dummy field type ID of "CaseFlag" for testing and the real field type
358
+ // ID of "Flags"
359
+ return (fieldType.type === 'Complex' && (fieldType.id === 'CaseFlag' || fieldType.id === 'Flags'));
360
+ }
361
+ /**
362
+ * Extract flags data from a `CaseField` instance, recursing and iterating through sub-fields of a Complex field or
363
+ * each field in a Collection field.
364
+ *
365
+ * @param flags An array for accumulating extracted flags data and derived `FormGroup` paths
366
+ * @param caseField A `CaseField` instance from which to extract the flags data
367
+ * @param pathToFlagsFormGroup A (dot-delimited) string for concatenating the name of each control that forms the path
368
+ * to the `FormGroup` for the `Flags` instance
369
+ * @param topLevelCaseField The top-level `CaseField` that contains the value property. This is required because _only
370
+ * top-level_ `CaseField`s contain actual values and a reference needs to be maintained to such a field
371
+ * @param currentValue The current value object of a `CaseField` that is a sub-field of a non root-level Complex field.
372
+ * Required for mapping the `CaseField` value to a `Flags` object if it is a "Flags" `CaseField`. (For Complex types,
373
+ * only the _root-level_ `CaseField` contains a value property - all sub-fields, including any nested Complex fields,
374
+ * do *not* contain any values themselves.)
375
+ * @returns An array of `FlagsWithFormGroupPath`, each instance comprising a `Flags` object derived from a `CaseField`
376
+ * of type "Flags", and the dot-delimited path string to the corresponding `FormGroup`
377
+ */
378
+ static extractFlagsDataFromCaseField(flags, caseField, pathToFlagsFormGroup, topLevelCaseField, currentValue) {
379
+ const fieldType = caseField.field_type;
380
+ switch (fieldType.type) {
381
+ case 'Complex':
382
+ // If the field is a Flags CaseField (these are implemented as Complex types), it can be mapped to a Flags
383
+ // object immediately
384
+ if (FieldsUtils.isFlagsCaseField(caseField)) {
385
+ // If the Flags CaseField has a value, it is a root-level Complex field; if it does not, it is a Flags
386
+ // CaseField that is a sub-field within another Complex field, so use the currentValue value (if any)
387
+ // instead. The exception to this is the "caseFlags" Flags CaseField, which will have an empty object value
388
+ // initially, because no party name is required
389
+ if (caseField.value && FieldsUtils.isNonEmptyObject(caseField.value) ||
390
+ caseField.id === this.caseLevelCaseFlagsFieldId) {
391
+ flags.push(this.mapCaseFieldToFlagsWithFormGroupPathObject(caseField, pathToFlagsFormGroup));
392
+ }
393
+ else if (currentValue && FieldsUtils.isNonEmptyObject(currentValue)) {
394
+ pathToFlagsFormGroup += `.${caseField.id}`;
395
+ flags.push(this.mapValueToFlagsWithFormGroupPathObject(caseField.id, currentValue, pathToFlagsFormGroup, topLevelCaseField));
396
+ }
397
+ }
398
+ else if (fieldType.complex_fields) {
399
+ const value = caseField.value ? caseField.value : currentValue;
400
+ if (value && FieldsUtils.isNonEmptyObject(value)) {
401
+ flags = fieldType.complex_fields.reduce((flagsOfComplexField, subField) => {
402
+ return this.extractFlagsDataFromCaseField(flagsOfComplexField, subField, pathToFlagsFormGroup, topLevelCaseField, value[subField.id]);
403
+ }, flags);
404
+ }
405
+ }
406
+ break;
407
+ // For a Collection field, the values are stored directly as key-value pairs in the CaseField's value property
408
+ // as an array, unless the collection is a sub-field of a Complex type - sub-fields never contain values
409
+ case 'Collection':
410
+ // If this is a collection of Flags CaseFields, these can be mapped to Flags objects immediately
411
+ if (FieldsUtils.isFlagsFieldType(fieldType.collection_field_type)) {
412
+ // If the Collection CaseField has a value (an array), it is a root-level Collection field; if it does not,
413
+ // it is a Collection CaseField that is a sub-field within a Complex field, so use the currentValue value
414
+ // (if any) instead
415
+ const pathFragment = pathToFlagsFormGroup += '.index.value';
416
+ if (caseField.value) {
417
+ caseField.value.forEach((item, index) => {
418
+ // At each iteration, replace the "index" placeholder with the actual index
419
+ pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
420
+ flags.push(this.mapValueToFlagsWithFormGroupPathObject(item.id, item.value, pathToFlagsFormGroup, caseField));
421
+ });
422
+ }
423
+ else if (currentValue) {
424
+ currentValue.forEach((item, index) => {
425
+ pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
426
+ flags.push(this.mapValueToFlagsWithFormGroupPathObject(item.id, item.value, pathToFlagsFormGroup, topLevelCaseField));
427
+ });
428
+ }
429
+ }
430
+ else if (fieldType.collection_field_type.type === 'Complex' && fieldType.collection_field_type.complex_fields) {
431
+ if (caseField.value) {
432
+ // Perform a reduction over each Complex field's sub-fields (similar to what is done above for non-Flags
433
+ // Complex fields)
434
+ // (Cannot just call this function recursively for each Complex field in the collection because the CaseField
435
+ // for each one is not part of the collection)
436
+ const pathFragment = pathToFlagsFormGroup += '.index.value';
437
+ caseField.value.forEach((item, index) => {
438
+ // At each iteration, replace the "index" placeholder with the actual index
439
+ pathToFlagsFormGroup = pathFragment.replace('index', index.toString(10));
440
+ flags = fieldType.collection_field_type.complex_fields.reduce((flagsOfComplexField, subField) => {
441
+ return this.extractFlagsDataFromCaseField(flagsOfComplexField, subField, pathToFlagsFormGroup, topLevelCaseField, item.value[subField.id]);
442
+ }, flags);
443
+ });
444
+ }
445
+ }
446
+ break;
447
+ default:
448
+ // Ignore all other field types
449
+ }
450
+ return flags;
451
+ }
452
+ static mapCaseFieldToFlagsWithFormGroupPathObject(caseField, pathToFlagsFormGroup) {
453
+ return this.mapValueToFlagsWithFormGroupPathObject(caseField.id, caseField.value, pathToFlagsFormGroup, caseField);
454
+ }
455
+ static mapValueToFlagsWithFormGroupPathObject(id, value, pathToFlagsFormGroup, caseField) {
456
+ return {
457
+ flags: {
458
+ flagsCaseFieldId: id,
459
+ partyName: value ? value['partyName'] : null,
460
+ roleOnCase: value ? value['roleOnCase'] : null,
461
+ details: value && value['details'] && value['details'].length > 0
462
+ ? value['details'].map(detail => {
463
+ return Object.assign({}, ...Object.keys(detail.value).map((k) => {
464
+ // The id property set below will be null for a new case flag, and a unique id returned from CCD when
465
+ // updating an existing flag
466
+ switch (k) {
467
+ // These two fields are date-time fields
468
+ case 'dateTimeModified':
469
+ case 'dateTimeCreated':
470
+ return { [k]: detail.value[k] ? new Date(detail.value[k]) : null, id: detail.id };
471
+ // This field is a "yes/no" field
472
+ case 'hearingRelevant':
473
+ return detail.value[k].toUpperCase() === 'YES' ? { [k]: true, id: detail.id } : { [k]: false, id: detail.id };
474
+ default:
475
+ return { [k]: detail.value[k], id: detail.id };
476
+ }
477
+ }));
478
+ })
479
+ : null,
480
+ visibility: value ? value['visibility'] : null,
481
+ groupId: value ? value['groupId'] : null
482
+ },
483
+ pathToFlagsFormGroup,
484
+ caseField
485
+ };
486
+ }
487
+ /**
488
+ * Count active flags in a `CaseField` instance, recursing and iterating through sub-fields of a Complex field or each
489
+ * field in a Collection field.
490
+ *
491
+ * @param activeCount An accumulation of the total number of active flags
492
+ * @param caseField A `CaseField` instance for which to count the active flags
493
+ * @param currentValue The current value object of a `CaseField` that is a sub-field of a non root-level Complex field.
494
+ * (For Complex types, only the _root-level_ `CaseField` contains a value property - all sub-fields, including any
495
+ * nested Complex fields, do *not* contain any values themselves.)
496
+ * @returns The count of active flags
497
+ */
498
+ static countActiveFlagsInCaseField(activeCount, caseField, currentValue) {
499
+ const fieldType = caseField.field_type;
500
+ switch (fieldType.type) {
501
+ case 'Complex':
502
+ if (FieldsUtils.isFlagsCaseField(caseField)) {
503
+ // If the Flags CaseField has a value, it is a root-level Complex field; if it does not, it is a Flags
504
+ // CaseField that is a sub-field within another Complex field, so use the currentValue value (if any) instead
505
+ const value = caseField.value ? caseField.value : currentValue;
506
+ if (value && FieldsUtils.isNonEmptyObject(value) && value.details) {
507
+ activeCount = value.details.reduce((count, detail) => detail.value.status === CaseFlagStatus.ACTIVE ? count + 1 : count, activeCount);
508
+ }
509
+ }
510
+ else if (fieldType.complex_fields) {
511
+ const value = caseField.value ? caseField.value : currentValue;
512
+ if (value && FieldsUtils.isNonEmptyObject(value)) {
513
+ activeCount = fieldType.complex_fields.reduce((activeFlagsCountOfComplexField, subField) => {
514
+ return this.countActiveFlagsInCaseField(activeFlagsCountOfComplexField, subField, value[subField.id]);
515
+ }, activeCount);
516
+ }
517
+ }
518
+ break;
519
+ // For a Collection field, the values are stored directly as key-value pairs in the CaseField's value property
520
+ // as an array, unless the collection is a sub-field of a Complex type - sub-fields never contain values
521
+ case 'Collection':
522
+ if (FieldsUtils.isFlagsFieldType(fieldType.collection_field_type)) {
523
+ // If the Collection CaseField has a value (an array), it is a root-level Collection field; if it does not,
524
+ // it is a Collection CaseField that is a sub-field within a Complex field, so use the currentValue value
525
+ // (if any) instead
526
+ const value = caseField.value ? caseField.value : currentValue;
527
+ if (value) {
528
+ value.forEach((item) => {
529
+ if (item.value['details']) {
530
+ activeCount = item.value['details'].reduce((count, detail) => detail.value.status === CaseFlagStatus.ACTIVE ? count + 1 : count, activeCount);
531
+ }
532
+ });
533
+ }
534
+ }
535
+ else if (fieldType.collection_field_type.type === 'Complex' && fieldType.collection_field_type.complex_fields) {
536
+ if (caseField.value) {
537
+ // Perform a reduction over each Complex field's sub-fields (similar to what is done above for non-Flags
538
+ // Complex fields)
539
+ // (Cannot just call this function recursively for each Complex field in the collection because the CaseField
540
+ // for each one is not part of the collection)
541
+ caseField.value.forEach((item) => {
542
+ activeCount = fieldType.collection_field_type.complex_fields.reduce((activeFlagsCountOfComplexField, subField) => {
543
+ return this.countActiveFlagsInCaseField(activeFlagsCountOfComplexField, subField, item.value[subField.id]);
544
+ }, activeCount);
545
+ });
546
+ }
547
+ }
548
+ break;
549
+ default:
550
+ // Ignore all other field types
551
+ }
552
+ return activeCount;
553
+ }
554
+ static getValidationErrorMessageForFlagLauncherCaseField(caseField) {
555
+ switch (caseField.display_context_parameter) {
556
+ case CaseFlagDisplayContextParameter.CREATE:
557
+ case CaseFlagDisplayContextParameter.CREATE_2_POINT_1:
558
+ return 'Please select Next to complete the creation of the case flag';
559
+ case CaseFlagDisplayContextParameter.CREATE_EXTERNAL:
560
+ return 'Please select Next to complete the creation of the support request';
561
+ case CaseFlagDisplayContextParameter.UPDATE:
562
+ case CaseFlagDisplayContextParameter.UPDATE_2_POINT_1:
563
+ return 'Please select Next to complete the update of the selected case flag';
564
+ case CaseFlagDisplayContextParameter.UPDATE_EXTERNAL:
565
+ return 'Please select Next to complete the update of the selected support request';
566
+ default:
567
+ return '';
568
+ }
569
+ }
570
+ buildCanShowPredicate(eventTrigger, form) {
571
+ const currentState = this.getCurrentEventState(eventTrigger, form);
572
+ return (page) => {
573
+ return page.parsedShowCondition.match(currentState);
574
+ };
575
+ }
576
+ getCurrentEventState(eventTrigger, form) {
577
+ return this.mergeCaseFieldsAndFormFields(eventTrigger.case_fields, form.controls['data'].value);
578
+ }
579
+ cloneCaseField(obj) {
580
+ return Object.assign(new CaseField(), obj);
581
+ }
582
+ mergeCaseFieldsAndFormFields(caseFields, formFields) {
583
+ return this.mergeFields(caseFields, formFields, FieldsUtils.DEFAULT_MERGE_FUNCTION);
584
+ }
585
+ mergeLabelCaseFieldsAndFormFields(caseFields, formFields) {
586
+ return this.mergeFields(caseFields, formFields, FieldsUtils.LABEL_MERGE_FUNCTION);
587
+ }
588
+ controlIterator(aControl, formArrayFn, formGroupFn, controlFn) {
589
+ if (aControl instanceof FormArray) { // We're in a collection
590
+ formArrayFn(aControl);
591
+ }
592
+ else if (aControl instanceof FormGroup) { // We're in a complex type.
593
+ formGroupFn(aControl);
594
+ }
595
+ else if (aControl instanceof FormControl) { // FormControl
596
+ controlFn(aControl);
597
+ }
598
+ }
599
+ mergeFields(caseFields, formFields, mergeFunction) {
600
+ const result = FieldsUtils.cloneObject(formFields);
601
+ caseFields.forEach(field => {
602
+ mergeFunction(field, result);
603
+ if (field.field_type && field.field_type.complex_fields && field.field_type.complex_fields.length > 0) {
604
+ result[field.id] = this.mergeFields(field.field_type.complex_fields, result[field.id], mergeFunction);
605
+ }
606
+ });
607
+ return result;
608
+ }
609
+ static ɵfac = function FieldsUtils_Factory(t) { return new (t || FieldsUtils)(); };
610
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FieldsUtils, factory: FieldsUtils.ɵfac });
611
+ }
612
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldsUtils, [{
613
+ type: Injectable
614
+ }], null, null); })();
615
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFELE9BQU8sRUFBb0IsU0FBUyxFQUF5RSxNQUFNLGNBQWMsQ0FBQztBQUNsSSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFbkYsV0FBVztBQUVYLE1BQU0sT0FBTyxXQUFXO0lBQ2QsTUFBTSxDQUFVLHlCQUF5QixHQUFHLFdBQVcsQ0FBQztJQUN4RCxNQUFNLENBQVUsWUFBWSxHQUFpQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQVUsUUFBUSxHQUFhLElBQUksUUFBUSxDQUFDLElBQUksdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLHVGQUF1RjtJQUNoRixNQUFNLENBQVUsWUFBWSxHQUFHLFVBQVUsQ0FBQztJQUNqRCw2Q0FBNkM7SUFDdEMsTUFBTSxDQUFVLHFDQUFxQyxHQUFHLFlBQVksQ0FBQztJQUNyRSxNQUFNLENBQVUsa0NBQWtDLEdBQUcsU0FBUyxDQUFDO0lB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LEVBQUUsVUFBa0IsRUFBRSxhQUF5RDtRQUN4SCxNQUFNLE1BQU0sR0FBVyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3QixJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN4RyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3FFQTdwQlUsV0FBVztnRUFBWCxXQUFXLFdBQVgsV0FBVzs7aUZBQVgsV0FBVztjQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgV2l6YXJkUGFnZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvZG9tYWluJztcbmltcG9ydCB7IEFic3RyYWN0Rm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wYWxldHRlL2Jhc2UtZmllbGQvYWJzdHJhY3QtZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxhZ0RldGFpbCwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvZG9tYWluL2Nhc2UtZmxhZy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLCBDYXNlRmxhZ1N0YXR1cyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvZW51bXMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3BhbGV0dGUvdXRpbHMnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgRmllbGRUeXBlLCBGaWVsZFR5cGVFbnVtLCBGaXhlZExpc3RJdGVtLCBQcmVkaWNhdGUgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRm9ybWF0VHJhbnNsYXRvclNlcnZpY2UgfSBmcm9tICcuLi9jYXNlLWZpZWxkcy9mb3JtYXQtdHJhbnNsYXRvci5zZXJ2aWNlJztcblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWVsZHNVdGlscyB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUgPSBuZXcgQ3VycmVuY3lQaXBlKCdlbi1HQicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkYXRlUGlwZTogRGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUobmV3IEZvcm1hdFRyYW5zbGF0b3JTZXJ2aWNlKCkpO1xuICAvLyBFVUktNDI0NC4gMyBkYXNoZXMgaW5zdGVhZCBvZiAxIHRvIG1ha2UgdGhpcyBsZXNzIGxpa2VseSB0byBjbGFzaCB3aXRoIGEgcmVhbCBmaWVsZC5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMQUJFTF9TVUZGSVggPSAnLS0tTEFCRUwnO1xuICAvLyBIYW5kbGluZyBvZiBEeW5hbWljIExpc3RzIGluIENvbXBsZXggVHlwZXNcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVJWRVJfUkVTUE9OU0VfRklFTERfVFlQRV9DT0xMRUNUSU9OID0gJ0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFUlZFUl9SRVNQT05TRV9GSUVMRF9UWVBFX0NPTVBMRVggPSAnQ29tcGxleCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfRFlOQU1JQ19MSVNUX1RZUEU6IEZpZWxkVHlwZUVudW1bXSA9IFsnRHluYW1pY0xpc3QnLCAnRHluYW1pY1JhZGlvTGlzdCddO1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZERpc3BsYXlDb250ZXh0KGN0eDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjdHggPT09ICdNQU5EQVRPUlknIHx8IGN0eCA9PT0gJ1JFQURPTkxZJ1xuICAgICAgfHwgY3R4ID09PSAnT1BUSU9OQUwnIHx8IGN0eCA9PT0gJ0hJRERFTidcbiAgICAgIHx8IGN0eCA9PT0gJ0NPTVBMRVgnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvQ2FzZUZpZWxkKG9iajogYW55KTogQ2FzZUZpZWxkIHtcbiAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBDYXNlRmllbGQpKSB7XG4gICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9WYWx1ZXNNYXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBhbnkge1xuICAgIGNvbnN0IHZhbHVlTWFwID0ge307XG4gICAgY2FzZUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIHZhbHVlTWFwW2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLnByZXBhcmVWYWx1ZShmaWVsZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlTWFwO1xuICB9XG5cbiAgLy8gcHVibGljIHN0YXRpYyBnZXRUeXBlKGVsZW06IGFueSk6IHN0cmluZyB7XG4gIC8vICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbGVtKS5zbGljZSg4LCAtMSk7XG4gIC8vIH1cblxuICBwdWJsaWMgc3RhdGljIGlzT2JqZWN0KGVsZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcgJiYgZWxlbSAhPT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNOb25FbXB0eU9iamVjdChlbGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc09iamVjdChlbGVtKSAmJiBPYmplY3Qua2V5cyhlbGVtKS5sZW5ndGggIT09IDA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzQXJyYXkoZWxlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZWxlbSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFyZUNvbGxlY3Rpb25WYWx1ZXNTaW1wbGVGaWVsZHMoZmllbGRWYWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNPYmplY3QoZmllbGRWYWx1ZVswXVsndmFsdWUnXSkgJiYgIUFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZVswXVsndmFsdWUnXSkgJiYgZmllbGRWYWx1ZVswXVsndmFsdWUnXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb25PZlNpbXBsZVR5cGVzKGZpZWxkVmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQ29sbGVjdGlvbihmaWVsZFZhbHVlKSAmJiB0aGlzLmFyZUNvbGxlY3Rpb25WYWx1ZXNTaW1wbGVGaWVsZHMoZmllbGRWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzTXVsdGlTZWxlY3RWYWx1ZShmb3JtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc05vbkVtcHR5QXJyYXkoZm9ybSkgJiYgIXRoaXMuaXNDb2xsZWN0aW9uV2l0aFZhbHVlKGZvcm0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc05vbkVtcHR5QXJyYXkocGFnZUZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhZ2VGb3JtRmllbGRzKSAmJiBwYWdlRm9ybUZpZWxkc1swXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb24ocGFnZUZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTm9uRW1wdHlBcnJheShwYWdlRm9ybUZpZWxkcykgJiYgdGhpcy5pc0NvbGxlY3Rpb25XaXRoVmFsdWUocGFnZUZvcm1GaWVsZHMpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0NvbGxlY3Rpb25XaXRoVmFsdWUocGFnZUZvcm1GaWVsZHM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2VGb3JtRmllbGRzWzBdWyd2YWx1ZSddICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNsb25lT2JqZWN0KG9iajogYW55KTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgfVxuXG4gIC8vIHRlbXBvcmFyeSBmdW5jdGlvbiB1bnRpbCB0aGlzIGNhbiBiZSBtb3ZlZCB0byBDYXNlVmlldyBjbGFzcyAoUkRNLTI2ODEpXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Q2FzZUZpZWxkcyhjYXNlVmlldzogQ2FzZVZpZXcpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHM6IENhc2VGaWVsZFtdID0gY2FzZVZpZXcudGFicy5yZWR1Y2UoKGFjYzogQ2FzZUZpZWxkW10sIHRhYjogQ2FzZVRhYikgPT4ge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGFiLmZpZWxkcyk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgbWV0YWRhdGFGaWVsZHM6IENhc2VGaWVsZFtdID0gY2FzZVZpZXcubWV0YWRhdGFGaWVsZHM7XG4gICAgcmV0dXJuIG1ldGFkYXRhRmllbGRzLmNvbmNhdChjYXNlRGF0YUZpZWxkcy5maWx0ZXIoKGNhc2VGaWVsZDogQ2FzZUZpZWxkKSA9PiB7XG4gICAgICByZXR1cm4gbWV0YWRhdGFGaWVsZHMuZmluZEluZGV4KG1ldGFkYXRhRmllbGQgPT4gbWV0YWRhdGFGaWVsZC5pZCA9PT0gY2FzZUZpZWxkLmlkKSA8IDA7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZGRDYXNlRmllbGRBbmRDb21wb25lbnRSZWZlcmVuY2VzKGM6IEFic3RyYWN0Q29udHJvbCwgY2Y6IENhc2VGaWVsZCwgY29tcDogQWJzdHJhY3RGb3JtRmllbGRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjWydjYXNlRmllbGQnXSA9IGNmO1xuICAgIGNbJ2NvbXBvbmVudCddID0gY29tcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmUgY2hlY2sgb2YgYW4gYXJyYXkgb3Igb2JqZWN0IGFuZCBpdHMgZGVzY2VuZGFudHMgZm9yIHRoZSBwcmVzZW5jZSBvZiBhbnkgbm9uLWVtcHR5IHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdCBUaGUgYXJyYXkgb3Igb2JqZWN0IHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXkgb3Igb2JqZWN0IChvciBhIGRlc2NlbmRhbnQpIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBub24tZW1wdHkgdmFsdWU7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMob2JqZWN0OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChrZXkgPT4gb2JqZWN0W2tleV0pO1xuICAgIGNvbnN0IG9iamVjdFJlZnMgPSBbXTtcbiAgICAvLyBBbHNvIHRlc3QgZm9yIG51bWVyaWMgdmFsdWVzLCBhbmQgbGVuZ3RoID4gMCBmb3Igbm9uLW51bWVyaWMgdmFsdWVzIGJlY2F1c2UgdGhpcyBjb3ZlcnMgYm90aCBzdHJpbmdzIGFuZCBhcnJheXMuXG4gICAgLy8gTm90ZTogRGVsaWJlcmF0ZSB1c2Ugb2Ygbm9uLWVxdWFsaXR5ICghPSkgb3BlcmF0b3IgZm9yIG51bGwgY2hlY2ssIHRvIGhhbmRsZSBib3RoIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0cmlwbGUtZXF1YWxzXG4gICAgY29uc3QgaGFzTm9uTnVsbFByaW1pdGl2ZSA9IHZhbHVlcy5zb21lKHggPT4gKHggIT0gbnVsbCAmJlxuICAgICAgKCh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB8fCBBcnJheS5pc0FycmF5KHgpXG4gICAgICAgID8gIW9iamVjdFJlZnMucHVzaCh4KVxuICAgICAgICA6IHR5cGVvZiB4ID09PSAnbnVtYmVyJyB8fCB4Lmxlbmd0aCA+IDApXG4gICAgKSk7XG4gICAgcmV0dXJuICFoYXNOb25OdWxsUHJpbWl0aXZlID8gb2JqZWN0UmVmcy5zb21lKHkgPT4gdGhpcy5jb250YWluc05vbkVtcHR5VmFsdWVzKHkpKSA6IGhhc05vbk51bGxQcmltaXRpdmU7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlTmVzdGVkRHluYW1pY0xpc3RzKClcbiAgICogUmVhc3NpZ25zIGxpc3RfaXRlbSBhbmQgdmFsdWUgZGF0YSB0byBEeW5hbWljTGlzdCBjaGlsZHJlblxuICAgKiBkb3duIHRoZSB0cmVlLiBTZXJ2ZXIgcmVzcG9uc2UgcmV0dXJucyBkYXRhIG9ubHkgaW5cbiAgICogdGhlIGB2YWx1ZWAgb2JqZWN0IG9mIHBhcmVudCBjb21wbGV4IHR5cGVcbiAgICpcbiAgICogRVVJLTI1MzAgRHluYW1pYyBMaXN0cyBmb3IgRWxlbWVudHMgaW4gYSBDb21wbGV4IFR5cGVcbiAgICpcbiAgICogQHBhcmFtIGpzb25Cb2R5IC0geyBjYXNlX2ZpZWxkczogWyBDYXNlRmllbGQsIENhc2VGaWVsZCBdIH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlTmVzdGVkRHluYW1pY0xpc3RzKGpzb25Cb2R5OiB7IGNhc2VfZmllbGRzOiBDYXNlRmllbGRbXSB9KTogYW55IHtcbiAgICBpZiAoanNvbkJvZHkuY2FzZV9maWVsZHMpIHtcbiAgICAgIGpzb25Cb2R5LmNhc2VfZmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlKSB7XG4gICAgICAgICAgdGhpcy5zZXREeW5hbWljTGlzdERlZmluaXRpb24oY2FzZUZpZWxkLCBjYXNlRmllbGQuZmllbGRfdHlwZSwgY2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb25Cb2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZVZhbHVlKGZpZWxkOiBDYXNlRmllbGQpOiBhbnkge1xuICAgIGlmIChmaWVsZC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGZpZWxkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQuaXNDb21wbGV4KCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlTWFwID0ge307XG4gICAgICBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goY29tcGxleEZpZWxkID0+IHtcbiAgICAgICAgdmFsdWVNYXBbY29tcGxleEZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLnByZXBhcmVWYWx1ZShjb21wbGV4RmllbGQpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdmFsdWVNYXA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NRVJHRV9GVU5DVElPTiA9IGZ1bmN0aW9uIG1lcmdlRnVuY3Rpb24oZmllbGQ6IENhc2VGaWVsZCwgcmVzdWx0OiBvYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZCkpIHtcbiAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBmaWVsZC52YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTEFCRUxfTUVSR0VfRlVOQ1RJT04gPSBmdW5jdGlvbiBtZXJnZUZ1bmN0aW9uKGZpZWxkOiBDYXNlRmllbGQsIHJlc3VsdDogb2JqZWN0KTogdm9pZCB7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHJlc3VsdCA9IHt9O1xuICAgIH1cbiAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZCkpIHtcbiAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBmaWVsZC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHN3aXRjaC1kZWZhdWx0XG4gICAgc3dpdGNoIChmaWVsZC5maWVsZF90eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZpeGVkTGlzdCc6XG4gICAgICBjYXNlICdGaXhlZFJhZGlvTGlzdCc6IHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldEZpeGVkTGlzdExhYmVsQnlDb2RlT3JFbXB0eShmaWVsZCwgcmVzdWx0W2ZpZWxkLmlkXSB8fCBmaWVsZC52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnTXVsdGlTZWxlY3RMaXN0Jzoge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcmVzdWx0W2ZpZWxkLmlkXSB8fCBbXTtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkICsgRmllbGRzVXRpbHMuTEFCRUxfU1VGRklYXSA9IFtdO1xuICAgICAgICBmaWVsZFZhbHVlLmZvckVhY2goKGNvZGU6IGFueSwgaWR4OiBhbnkpID0+IHtcbiAgICAgICAgICByZXN1bHRbZmllbGQuaWQgKyBGaWVsZHNVdGlscy5MQUJFTF9TVUZGSVhdW2lkeF0gPSBGaWVsZHNVdGlscy5nZXRGaXhlZExpc3RMYWJlbEJ5Q29kZU9yRW1wdHkoZmllbGQsIGNvZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdMYWJlbCc6IHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldExhYmVsKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdNb25leUdCUCc6IHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IChyZXN1bHRbZmllbGQuaWRdIHx8IGZpZWxkLnZhbHVlKTtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLmlkXSA9IEZpZWxkc1V0aWxzLmdldE1vbmV5R0JQKGZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RhdGUnOiB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSAocmVzdWx0W2ZpZWxkLmlkXSB8fCBmaWVsZC52YWx1ZSk7XG4gICAgICAgIHJlc3VsdFtmaWVsZC5pZF0gPSBGaWVsZHNVdGlscy5nZXREYXRlKGZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NvbXBsZXgnOiB7XG4gICAgICAgIGlmIChyZXN1bHRbZmllbGQuaWRdICYmIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goKGY6IENhc2VGaWVsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKFsnQ29sbGVjdGlvbicsICdDb21wbGV4JywgJ011bHRpU2VsZWN0TGlzdCddLmluZGV4T2YoZi5maWVsZF90eXBlLnR5cGUpID4gLTEpIHtcbiAgICAgICAgICAgICAgRmllbGRzVXRpbHMuTEFCRUxfTUVSR0VfRlVOQ1RJT04oZiwgcmVzdWx0W2ZpZWxkLmlkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDb2xsZWN0aW9uJzoge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IChyZXN1bHRbZmllbGQuaWRdIHx8IGZpZWxkLnZhbHVlKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHRcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdNb25leUdCUCc6IHtcbiAgICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gRmllbGRzVXRpbHMuZ2V0TW9uZXlHQlAoZWxlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSAnRGF0ZSc6IHtcbiAgICAgICAgICAgICAgICBlbGVtLnZhbHVlID0gRmllbGRzVXRpbHMuZ2V0RGF0ZShlbGVtLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlICdDb21wbGV4Jzoge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMuZm9yRWFjaCgoZjogQ2FzZUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ0NvbGxlY3Rpb24nLCAnQ29tcGxleCcsICdNdWx0aVNlbGVjdExpc3QnXS5pbmRleE9mKGYuZmllbGRfdHlwZS50eXBlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgRmllbGRzVXRpbHMuTEFCRUxfTUVSR0VfRlVOQ1RJT04oZiwgZWxlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRm9ybWF0cyBhIGBNb25leUdCUGAgdmFsdWUgdG8gaW5jbHVkZSBjdXJyZW5jeSB1bml0cy5cbiAgICogQHBhcmFtIGZpZWxkVmFsdWUgVGhlIEN1cnJlbmN5UGlwZSBleHBlY3RzIGFuIGBhbnlgIHBhcmFtZXRlciBzbyB0aGlzIG11c3QgYWxzbyBiZSBgYW55YCxcbiAgICogYnV0IGl0IHNob3VsZCBiZSBcIm51bWJlci1saWtlXCIgKGUuZy4sICcxMjM0JylcbiAgICogQHJldHVybnMgQSBmb3JtYXR0ZWQgc3RyaW5nIChlLmcuLCDCozEyLjM0KVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9uZXlHQlAoZmllbGRWYWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGRWYWx1ZSA/IEZpZWxkc1V0aWxzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oZmllbGRWYWx1ZSAvIDEwMCwgJ0dCUCcsICdzeW1ib2wnKSA6IGZpZWxkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRMYWJlbChmaWVsZFZhbHVlOiBDYXNlRmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZFZhbHVlID8gZmllbGRWYWx1ZS5sYWJlbCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RGF0ZShmaWVsZFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQgc3BlY2lmaWVkIGhlcmUgd2Fzbid0IHByZXZpb3VzbHkgd29ya2luZyBhbmQgbG90cyBvZiB0ZXN0cyBkZXBlbmQgb24gaXQgbm90IHdvcmtpbmdcbiAgICAgIC8vIE5vdyB0aGF0IGZvcm1hdHMgd29yayBjb3JyZWN0bHkgbWFueSB0ZXN0IHdvdWxkIGJyZWFrIC0gYW5kIHRoaXMgY291bGQgYWZmZWN0IHNlcnZpY2VzIHdoaWNoIG1heSBkZXBlbmQgb25cbiAgICAgIC8vIHRoZSBvcmdpbmFsIGJlaGF2aW91ciBvZiByZXR1cm5pbmcgZGF0ZXMgaW4gXCJkIE1NTSB5eXl5XCJcbiAgICAgIC8vIE5vdGUgLSByZXBsYWNlZCAnZCcgd2l0aCAnRCcgYXMgZGF0ZXBpcGUgdXNpbmcgbW9tZW50IHRvIGF2b2lkIHRpbWV6b25lIGRpc2NyZXBhbmNpZXNcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5kYXRlUGlwZS50cmFuc2Zvcm0oZmllbGRWYWx1ZSwgbnVsbCwgJ0QgTU1NIHl5eXknKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0Rm9ySW52YWxpZEZpZWxkKCdEYXRlJywgZmllbGRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Rml4ZWRMaXN0TGFiZWxCeUNvZGVPckVtcHR5KGZpZWxkOiBDYXNlRmllbGQsIGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVsZXZhbnRJdGVtOiBGaXhlZExpc3RJdGVtID0gY29kZSA/IGZpZWxkLmZpZWxkX3R5cGUuZml4ZWRfbGlzdF9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5jb2RlID09PSBjb2RlKSA6IG51bGw7XG4gICAgcmV0dXJuIHJlbGV2YW50SXRlbSA/IHJlbGV2YW50SXRlbS5sYWJlbCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdGV4dEZvckludmFsaWRGaWVsZCh0eXBlOiBzdHJpbmcsIGludmFsaWRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHsgSW52YWxpZCAke3R5cGV9OiAke2ludmFsaWRWYWx1ZX0gfWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXREeW5hbWljTGlzdERlZmluaXRpb24oY2FzZUZpZWxkOiBDYXNlRmllbGQsIGNhc2VGaWVsZFR5cGU6IEZpZWxkVHlwZSwgcm9vdENhc2VGaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgaWYgKGNhc2VGaWVsZFR5cGUudHlwZSA9PT0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfQ09NUExFWCkge1xuXG4gICAgICBjYXNlRmllbGRUeXBlLmNvbXBsZXhfZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGlzRHluYW1pY0ZpZWxkID0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfRFlOQU1JQ19MSVNUX1RZUEUuaW5kZXhPZihmaWVsZC5maWVsZF90eXBlLnR5cGUpICE9PSAtMTtcblxuICAgICAgICAgIGlmIChpc0R5bmFtaWNGaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZHluYW1pY0xpc3RWYWx1ZSA9IHRoaXMuZ2V0RHluYW1pY0xpc3RWYWx1ZShyb290Q2FzZUZpZWxkLnZhbHVlLCBmaWVsZC5pZCk7XG4gICAgICAgICAgICBpZiAoZHluYW1pY0xpc3RWYWx1ZSkge1xuICAgICAgICAgICAgICBjb25zdCBsaXN0X2l0ZW1zID0gZHluYW1pY0xpc3RWYWx1ZVswXS5saXN0X2l0ZW1zO1xuICAgICAgICAgICAgICBjb25zdCBjb21wbGV4VmFsdWUgPSBkeW5hbWljTGlzdFZhbHVlLm1hcChkYXRhID0+IGRhdGEudmFsdWUpO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb21wbGV4VmFsdWUubGVuZ3RoID4gMCA/IGNvbXBsZXhWYWx1ZSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmaWVsZC5mb3JtYXR0ZWRfdmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgLi4uZmllbGQuZm9ybWF0dGVkX3ZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLnZhbHVlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHluYW1pY0xpc3REZWZpbml0aW9uKGZpZWxkLCBmaWVsZC5maWVsZF90eXBlLCByb290Q2FzZUZpZWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGNhc2VGaWVsZFR5cGUudHlwZSA9PT0gRmllbGRzVXRpbHMuU0VSVkVSX1JFU1BPTlNFX0ZJRUxEX1RZUEVfQ09MTEVDVElPTikge1xuICAgICAgaWYgKGNhc2VGaWVsZFR5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlKSB7XG4gICAgICAgIHRoaXMuc2V0RHluYW1pY0xpc3REZWZpbml0aW9uKGNhc2VGaWVsZCwgY2FzZUZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUsIHJvb3RDYXNlRmllbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldER5bmFtaWNMaXN0VmFsdWUoanNvbkJsb2NrOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IGpzb25CbG9jayA/IHRoaXMuZ2V0TmVzdGVkRmllbGRWYWx1ZXMoanNvbkJsb2NrLCBrZXksIFtdKSA6IFtdO1xuXG4gICAgcmV0dXJuIGRhdGEubGVuZ3RoID4gMCA/IGRhdGEgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TmVzdGVkRmllbGRWYWx1ZXMoanNvbkRhdGE6IGFueSwga2V5OiBzdHJpbmcsIG91dHB1dDogYW55W10gPSBbXSkge1xuICAgIGlmIChqc29uRGF0YSAmJiBqc29uRGF0YVtrZXldKSB7XG4gICAgICBvdXRwdXQucHVzaChqc29uRGF0YVtrZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50S2V5IGluIGpzb25EYXRhKSB7XG4gICAgICAgIGlmICh0eXBlb2YganNvbkRhdGEgPT09ICdvYmplY3QnICYmIGpzb25EYXRhLmhhc093blByb3BlcnR5KGVsZW1lbnRLZXkpKSB7XG4gICAgICAgICAgdGhpcy5nZXROZXN0ZWRGaWVsZFZhbHVlcyhqc29uRGF0YVtlbGVtZW50S2V5XSwga2V5LCBvdXRwdXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzRmxhZ3NDYXNlRmllbGQoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICBpZiAoIWNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzRmxhZ3NGaWVsZFR5cGUoY2FzZUZpZWxkLmZpZWxkX3R5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgaXNDYXNlRmllbGRPZlR5cGV9IGluc3RlYWQsIHBhc3NpbmcgJ0ZsYWdMYXVuY2hlcicgYXMgdGhlIHNpbmdsZSB0eXBlIGluIHRoZSBgdHlwZXNgIGFycmF5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0ZsYWdMYXVuY2hlcic7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBpc0Nhc2VGaWVsZE9mVHlwZX0gaW5zdGVhZCwgcGFzc2luZyAnQ29tcG9uZW50TGF1bmNoZXInIGFzIHRoZSBzaW5nbGUgdHlwZSBpbiB0aGUgYHR5cGVzYFxuICAgKiBhcnJheVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbXBvbmVudExhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB7QGxpbmsgQ2FzZUZpZWxkfSBpcyBvZiBvbmUgb2YgdGhlIGdpdmVuIGZpZWxkIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCB0byBjaGVja1xuICAgKiBAcGFyYW0gdHlwZXMgQW4gYXJyYXkgb2Ygb25lIG9yIG1vcmUgZmllbGQgdHlwZXNcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBgQ2FzZUZpZWxkYCB0eXBlIGlzIG9uZSBvZiB0aG9zZSBpbiB0aGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgYWdhaW5zdDsgYGZhbHNlYFxuICAgKiBvdGhlcndpc2Ugb3IgaWYgYGNhc2VGaWVsZGAgb3IgYHR5cGVzYCBhcmUgZmFsc3lcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkOiBDYXNlRmllbGQsIHR5cGVzOiBGaWVsZFR5cGVFbnVtW10pOiBib29sZWFuIHtcbiAgICBpZiAoIWNhc2VGaWVsZCB8fCAhdHlwZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09IGNhc2VGaWVsZC5maWVsZF90eXBlPy50eXBlIHx8IHR5cGUgPT09IGNhc2VGaWVsZC5maWVsZF90eXBlPy5pZCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzTGlua2VkQ2FzZXNDYXNlRmllbGQoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmllbGRzVXRpbHMuaXNDb21wb25lbnRMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpICYmXG4gICAgICBjYXNlRmllbGQuaWQgPT09ICdMaW5rZWRDYXNlc0NvbXBvbmVudExhdW5jaGVyJztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udGFpbnNMaW5rZWRDYXNlc0Nhc2VGaWVsZChjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGRzPy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0xpbmtlZENhc2VzQ2FzZUZpZWxkKGNhc2VGaWVsZCkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0ZsYWdzRmllbGRUeXBlKGZpZWxkVHlwZTogRmllbGRUeXBlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFmaWVsZFR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBUaGlzIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHRoZSBkdW1teSBmaWVsZCB0eXBlIElEIG9mIFwiQ2FzZUZsYWdcIiBmb3IgdGVzdGluZyBhbmQgdGhlIHJlYWwgZmllbGQgdHlwZVxuICAgIC8vIElEIG9mIFwiRmxhZ3NcIlxuICAgIHJldHVybiAoZmllbGRUeXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiAoZmllbGRUeXBlLmlkID09PSAnQ2FzZUZsYWcnIHx8IGZpZWxkVHlwZS5pZCA9PT0gJ0ZsYWdzJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgZmxhZ3MgZGF0YSBmcm9tIGEgYENhc2VGaWVsZGAgaW5zdGFuY2UsIHJlY3Vyc2luZyBhbmQgaXRlcmF0aW5nIHRocm91Z2ggc3ViLWZpZWxkcyBvZiBhIENvbXBsZXggZmllbGQgb3JcbiAgICogZWFjaCBmaWVsZCBpbiBhIENvbGxlY3Rpb24gZmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSBmbGFncyBBbiBhcnJheSBmb3IgYWNjdW11bGF0aW5nIGV4dHJhY3RlZCBmbGFncyBkYXRhIGFuZCBkZXJpdmVkIGBGb3JtR3JvdXBgIHBhdGhzXG4gICAqIEBwYXJhbSBjYXNlRmllbGQgQSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZsYWdzIGRhdGFcbiAgICogQHBhcmFtIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIEEgKGRvdC1kZWxpbWl0ZWQpIHN0cmluZyBmb3IgY29uY2F0ZW5hdGluZyB0aGUgbmFtZSBvZiBlYWNoIGNvbnRyb2wgdGhhdCBmb3JtcyB0aGUgcGF0aFxuICAgKiB0byB0aGUgYEZvcm1Hcm91cGAgZm9yIHRoZSBgRmxhZ3NgIGluc3RhbmNlXG4gICAqIEBwYXJhbSB0b3BMZXZlbENhc2VGaWVsZCBUaGUgdG9wLWxldmVsIGBDYXNlRmllbGRgIHRoYXQgY29udGFpbnMgdGhlIHZhbHVlIHByb3BlcnR5LiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgX29ubHlcbiAgICogdG9wLWxldmVsXyBgQ2FzZUZpZWxkYHMgY29udGFpbiBhY3R1YWwgdmFsdWVzIGFuZCBhIHJlZmVyZW5jZSBuZWVkcyB0byBiZSBtYWludGFpbmVkIHRvIHN1Y2ggYSBmaWVsZFxuICAgKiBAcGFyYW0gY3VycmVudFZhbHVlIFRoZSBjdXJyZW50IHZhbHVlIG9iamVjdCBvZiBhIGBDYXNlRmllbGRgIHRoYXQgaXMgYSBzdWItZmllbGQgb2YgYSBub24gcm9vdC1sZXZlbCBDb21wbGV4IGZpZWxkLlxuICAgKiBSZXF1aXJlZCBmb3IgbWFwcGluZyB0aGUgYENhc2VGaWVsZGAgdmFsdWUgdG8gYSBgRmxhZ3NgIG9iamVjdCBpZiBpdCBpcyBhIFwiRmxhZ3NcIiBgQ2FzZUZpZWxkYC4gKEZvciBDb21wbGV4IHR5cGVzLFxuICAgKiBvbmx5IHRoZSBfcm9vdC1sZXZlbF8gYENhc2VGaWVsZGAgY29udGFpbnMgYSB2YWx1ZSBwcm9wZXJ0eSAtIGFsbCBzdWItZmllbGRzLCBpbmNsdWRpbmcgYW55IG5lc3RlZCBDb21wbGV4IGZpZWxkcyxcbiAgICogZG8gKm5vdCogY29udGFpbiBhbnkgdmFsdWVzIHRoZW1zZWx2ZXMuKVxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aGAsIGVhY2ggaW5zdGFuY2UgY29tcHJpc2luZyBhIGBGbGFnc2Agb2JqZWN0IGRlcml2ZWQgZnJvbSBhIGBDYXNlRmllbGRgXG4gICAqIG9mIHR5cGUgXCJGbGFnc1wiLCBhbmQgdGhlIGRvdC1kZWxpbWl0ZWQgcGF0aCBzdHJpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYEZvcm1Hcm91cGBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoZmxhZ3M6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXSwgY2FzZUZpZWxkOiBDYXNlRmllbGQsXG4gICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXA6IHN0cmluZywgdG9wTGV2ZWxDYXNlRmllbGQ6IENhc2VGaWVsZCwgY3VycmVudFZhbHVlPzogb2JqZWN0KTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdIHtcbiAgICBjb25zdCBmaWVsZFR5cGUgPSBjYXNlRmllbGQuZmllbGRfdHlwZTtcbiAgICBzd2l0Y2ggKGZpZWxkVHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgLy8gSWYgdGhlIGZpZWxkIGlzIGEgRmxhZ3MgQ2FzZUZpZWxkICh0aGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgQ29tcGxleCB0eXBlcyksIGl0IGNhbiBiZSBtYXBwZWQgdG8gYSBGbGFnc1xuICAgICAgICAvLyBvYmplY3QgaW1tZWRpYXRlbHlcbiAgICAgICAgaWYgKEZpZWxkc1V0aWxzLmlzRmxhZ3NDYXNlRmllbGQoY2FzZUZpZWxkKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBGbGFncyBDYXNlRmllbGQgaGFzIGEgdmFsdWUsIGl0IGlzIGEgcm9vdC1sZXZlbCBDb21wbGV4IGZpZWxkOyBpZiBpdCBkb2VzIG5vdCwgaXQgaXMgYSBGbGFnc1xuICAgICAgICAgIC8vIENhc2VGaWVsZCB0aGF0IGlzIGEgc3ViLWZpZWxkIHdpdGhpbiBhbm90aGVyIENvbXBsZXggZmllbGQsIHNvIHVzZSB0aGUgY3VycmVudFZhbHVlIHZhbHVlIChpZiBhbnkpXG4gICAgICAgICAgLy8gaW5zdGVhZC4gVGhlIGV4Y2VwdGlvbiB0byB0aGlzIGlzIHRoZSBcImNhc2VGbGFnc1wiIEZsYWdzIENhc2VGaWVsZCwgd2hpY2ggd2lsbCBoYXZlIGFuIGVtcHR5IG9iamVjdCB2YWx1ZVxuICAgICAgICAgIC8vIGluaXRpYWxseSwgYmVjYXVzZSBubyBwYXJ0eSBuYW1lIGlzIHJlcXVpcmVkXG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGNhc2VGaWVsZC52YWx1ZSkgfHxcbiAgICAgICAgICAgIGNhc2VGaWVsZC5pZCA9PT0gdGhpcy5jYXNlTGV2ZWxDYXNlRmxhZ3NGaWVsZElkKSB7XG4gICAgICAgICAgICBmbGFncy5wdXNoKHRoaXMubWFwQ2FzZUZpZWxkVG9GbGFnc1dpdGhGb3JtR3JvdXBQYXRoT2JqZWN0KGNhc2VGaWVsZCwgcGF0aFRvRmxhZ3NGb3JtR3JvdXApKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwICs9IGAuJHtjYXNlRmllbGQuaWR9YDtcbiAgICAgICAgICAgIGZsYWdzLnB1c2godGhpcy5tYXBWYWx1ZVRvRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aE9iamVjdChcbiAgICAgICAgICAgICAgY2FzZUZpZWxkLmlkLCBjdXJyZW50VmFsdWUsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCB0b3BMZXZlbENhc2VGaWVsZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNhc2VGaWVsZC52YWx1ZSA/IGNhc2VGaWVsZC52YWx1ZSA6IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZsYWdzID0gZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzLnJlZHVjZSgoZmxhZ3NPZkNvbXBsZXhGaWVsZCwgc3ViRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoXG4gICAgICAgICAgICAgICAgZmxhZ3NPZkNvbXBsZXhGaWVsZCwgc3ViRmllbGQsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCB0b3BMZXZlbENhc2VGaWVsZCwgdmFsdWVbc3ViRmllbGQuaWRdKTtcbiAgICAgICAgICAgIH0sIGZsYWdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBGb3IgYSBDb2xsZWN0aW9uIGZpZWxkLCB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgZGlyZWN0bHkgYXMga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBDYXNlRmllbGQncyB2YWx1ZSBwcm9wZXJ0eVxuICAgICAgLy8gYXMgYW4gYXJyYXksIHVubGVzcyB0aGUgY29sbGVjdGlvbiBpcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggdHlwZSAtIHN1Yi1maWVsZHMgbmV2ZXIgY29udGFpbiB2YWx1ZXNcbiAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY29sbGVjdGlvbiBvZiBGbGFncyBDYXNlRmllbGRzLCB0aGVzZSBjYW4gYmUgbWFwcGVkIHRvIEZsYWdzIG9iamVjdHMgaW1tZWRpYXRlbHlcbiAgICAgICAgaWYgKEZpZWxkc1V0aWxzLmlzRmxhZ3NGaWVsZFR5cGUoZmllbGRUeXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgQ29sbGVjdGlvbiBDYXNlRmllbGQgaGFzIGEgdmFsdWUgKGFuIGFycmF5KSwgaXQgaXMgYSByb290LWxldmVsIENvbGxlY3Rpb24gZmllbGQ7IGlmIGl0IGRvZXMgbm90LFxuICAgICAgICAgIC8vIGl0IGlzIGEgQ29sbGVjdGlvbiBDYXNlRmllbGQgdGhhdCBpcyBhIHN1Yi1maWVsZCB3aXRoaW4gYSBDb21wbGV4IGZpZWxkLCBzbyB1c2UgdGhlIGN1cnJlbnRWYWx1ZSB2YWx1ZVxuICAgICAgICAgIC8vIChpZiBhbnkpIGluc3RlYWRcbiAgICAgICAgICBjb25zdCBwYXRoRnJhZ21lbnQgPSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCArPSAnLmluZGV4LnZhbHVlJztcbiAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlRmllbGQudmFsdWUuZm9yRWFjaCgoaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogb2JqZWN0OyB9LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEF0IGVhY2ggaXRlcmF0aW9uLCByZXBsYWNlIHRoZSBcImluZGV4XCIgcGxhY2Vob2xkZXIgd2l0aCB0aGUgYWN0dWFsIGluZGV4XG4gICAgICAgICAgICAgIHBhdGhUb0ZsYWdzRm9ybUdyb3VwID0gcGF0aEZyYWdtZW50LnJlcGxhY2UoJ2luZGV4JywgaW5kZXgudG9TdHJpbmcoMTApKTtcbiAgICAgICAgICAgICAgZmxhZ3MucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm1hcFZhbHVlVG9GbGFnc1dpdGhGb3JtR3JvdXBQYXRoT2JqZWN0KGl0ZW0uaWQsIGl0ZW0udmFsdWUsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCBjYXNlRmllbGQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAoY3VycmVudFZhbHVlIGFzIFtdKS5mb3JFYWNoKChpdGVtOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBvYmplY3Q7IH0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgPSBwYXRoRnJhZ21lbnQucmVwbGFjZSgnaW5kZXgnLCBpbmRleC50b1N0cmluZygxMCkpO1xuICAgICAgICAgICAgICBmbGFncy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubWFwVmFsdWVUb0ZsYWdzV2l0aEZvcm1Hcm91cFBhdGhPYmplY3QoaXRlbS5pZCwgaXRlbS52YWx1ZSwgcGF0aFRvRmxhZ3NGb3JtR3JvdXAsIHRvcExldmVsQ2FzZUZpZWxkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGRUeXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcgJiYgZmllbGRUeXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgIGlmIChjYXNlRmllbGQudmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFBlcmZvcm0gYSByZWR1Y3Rpb24gb3ZlciBlYWNoIENvbXBsZXggZmllbGQncyBzdWItZmllbGRzIChzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBhYm92ZSBmb3Igbm9uLUZsYWdzXG4gICAgICAgICAgICAvLyBDb21wbGV4IGZpZWxkcylcbiAgICAgICAgICAgIC8vIChDYW5ub3QganVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gcmVjdXJzaXZlbHkgZm9yIGVhY2ggQ29tcGxleCBmaWVsZCBpbiB0aGUgY29sbGVjdGlvbiBiZWNhdXNlIHRoZSBDYXNlRmllbGRcbiAgICAgICAgICAgIC8vIGZvciBlYWNoIG9uZSBpcyBub3QgcGFydCBvZiB0aGUgY29sbGVjdGlvbilcbiAgICAgICAgICAgIGNvbnN0IHBhdGhGcmFnbWVudCA9IHBhdGhUb0ZsYWdzRm9ybUdyb3VwICs9ICcuaW5kZXgudmFsdWUnO1xuICAgICAgICAgICAgY2FzZUZpZWxkLnZhbHVlLmZvckVhY2goKGl0ZW06IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG9iamVjdDsgfSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAvLyBBdCBlYWNoIGl0ZXJhdGlvbiwgcmVwbGFjZSB0aGUgXCJpbmRleFwiIHBsYWNlaG9sZGVyIHdpdGggdGhlIGFjdHVhbCBpbmRleFxuICAgICAgICAgICAgICBwYXRoVG9GbGFnc0Zvcm1Hcm91cCA9IHBhdGhGcmFnbWVudC5yZXBsYWNlKCdpbmRleCcsIGluZGV4LnRvU3RyaW5nKDEwKSk7XG4gICAgICAgICAgICAgIGZsYWdzID0gZmllbGRUeXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5yZWR1Y2UoKGZsYWdzT2ZDb21wbGV4RmllbGQsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoXG4gICAgICAgICAgICAgICAgICBmbGFnc09mQ29tcGxleEZpZWxkLCBzdWJGaWVsZCwgcGF0aFRvRmxhZ3NGb3JtR3JvdXAsIHRvcExldmVsQ2FzZUZpZWxkLCBpdGVtLnZhbHVlW3N1YkZpZWxkLmlkXSk7XG4gICAgICAgICAgICAgIH0sIGZsYWdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAvLyBJZ25vcmUgYWxsIG90aGVyIGZpZWxkIHR5cGVzXG4gICAgfVxuICAgIHJldHVybiBmbGFncztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1hcENhc2VGaWVsZFRvRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aE9iamVjdChjYXNlRmllbGQ6IENhc2VGaWVsZCxcbiAgICBwYXRoVG9GbGFnc0Zvcm1Hcm91cDogc3RyaW5nKTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB7XG4gICAgcmV0dXJuIHRoaXMubWFwVmFsdWVUb0ZsYWdzV2l0aEZvcm1Hcm91cFBhdGhPYmplY3QoY2FzZUZpZWxkLmlkLCBjYXNlRmllbGQudmFsdWUsIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCBjYXNlRmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWFwVmFsdWVUb0ZsYWdzV2l0aEZvcm1Hcm91cFBhdGhPYmplY3QoaWQ6IHN0cmluZywgdmFsdWU6IG9iamVjdCxcbiAgICBwYXRoVG9GbGFnc0Zvcm1Hcm91cDogc3RyaW5nLCBjYXNlRmllbGQ6IENhc2VGaWVsZCk6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGgge1xuICAgIHJldHVybiB7XG4gICAgICBmbGFnczoge1xuICAgICAgICBmbGFnc0Nhc2VGaWVsZElkOiBpZCxcbiAgICAgICAgcGFydHlOYW1lOiB2YWx1ZSA/IHZhbHVlWydwYXJ0eU5hbWUnXSA6IG51bGwsXG4gICAgICAgIHJvbGVPbkNhc2U6IHZhbHVlID8gdmFsdWVbJ3JvbGVPbkNhc2UnXSA6IG51bGwsXG4gICAgICAgIGRldGFpbHM6IHZhbHVlICYmIHZhbHVlWydkZXRhaWxzJ10gJiYgdmFsdWVbJ2RldGFpbHMnXS5sZW5ndGggPiAwXG4gICAgICAgICAgPyAodmFsdWVbJ2RldGFpbHMnXSBhcyBhbnlbXSkubWFwKGRldGFpbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4uT2JqZWN0LmtleXMoZGV0YWlsLnZhbHVlKS5tYXAoKGspID0+IHtcbiAgICAgICAgICAgICAgLy8gVGhlIGlkIHByb3BlcnR5IHNldCBiZWxvdyB3aWxsIGJlIG51bGwgZm9yIGEgbmV3IGNhc2UgZmxhZywgYW5kIGEgdW5pcXVlIGlkIHJldHVybmVkIGZyb20gQ0NEIHdoZW5cbiAgICAgICAgICAgICAgLy8gdXBkYXRpbmcgYW4gZXhpc3RpbmcgZmxhZ1xuICAgICAgICAgICAgICBzd2l0Y2ggKGspIHtcbiAgICAgICAgICAgICAgICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSBkYXRlLXRpbWUgZmllbGRzXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWVNb2RpZmllZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWVDcmVhdGVkJzpcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7IFtrXTogZGV0YWlsLnZhbHVlW2tdID8gbmV3IERhdGUoZGV0YWlsLnZhbHVlW2tdKSA6IG51bGwsIGlkOiBkZXRhaWwuaWQgfTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGZpZWxkIGlzIGEgXCJ5ZXMvbm9cIiBmaWVsZFxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYXJpbmdSZWxldmFudCc6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsLnZhbHVlW2tdLnRvVXBwZXJDYXNlKCkgPT09ICdZRVMnID8geyBba106IHRydWUsIGlkOiBkZXRhaWwuaWQgfSA6IHsgW2tdOiBmYWxzZSwgaWQ6IGRldGFpbC5pZCB9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICByZXR1cm4geyBba106IGRldGFpbC52YWx1ZVtrXSwgaWQ6IGRldGFpbC5pZCB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSkgYXMgRmxhZ0RldGFpbFtdXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgICB2aXNpYmlsaXR5OiB2YWx1ZSA/IHZhbHVlWyd2aXNpYmlsaXR5J10gOiBudWxsLFxuICAgICAgICBncm91cElkOiB2YWx1ZSA/IHZhbHVlWydncm91cElkJ10gOiBudWxsXG4gICAgICB9LFxuICAgICAgcGF0aFRvRmxhZ3NGb3JtR3JvdXAsXG4gICAgICBjYXNlRmllbGRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IGFjdGl2ZSBmbGFncyBpbiBhIGBDYXNlRmllbGRgIGluc3RhbmNlLCByZWN1cnNpbmcgYW5kIGl0ZXJhdGluZyB0aHJvdWdoIHN1Yi1maWVsZHMgb2YgYSBDb21wbGV4IGZpZWxkIG9yIGVhY2hcbiAgICogZmllbGQgaW4gYSBDb2xsZWN0aW9uIGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aXZlQ291bnQgQW4gYWNjdW11bGF0aW9uIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgYWN0aXZlIGZsYWdzXG4gICAqIEBwYXJhbSBjYXNlRmllbGQgQSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSBmb3Igd2hpY2ggdG8gY291bnQgdGhlIGFjdGl2ZSBmbGFnc1xuICAgKiBAcGFyYW0gY3VycmVudFZhbHVlIFRoZSBjdXJyZW50IHZhbHVlIG9iamVjdCBvZiBhIGBDYXNlRmllbGRgIHRoYXQgaXMgYSBzdWItZmllbGQgb2YgYSBub24gcm9vdC1sZXZlbCBDb21wbGV4IGZpZWxkLlxuICAgKiAoRm9yIENvbXBsZXggdHlwZXMsIG9ubHkgdGhlIF9yb290LWxldmVsXyBgQ2FzZUZpZWxkYCBjb250YWlucyBhIHZhbHVlIHByb3BlcnR5IC0gYWxsIHN1Yi1maWVsZHMsIGluY2x1ZGluZyBhbnlcbiAgICogbmVzdGVkIENvbXBsZXggZmllbGRzLCBkbyAqbm90KiBjb250YWluIGFueSB2YWx1ZXMgdGhlbXNlbHZlcy4pXG4gICAqIEByZXR1cm5zIFRoZSBjb3VudCBvZiBhY3RpdmUgZmxhZ3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKGFjdGl2ZUNvdW50OiBudW1iZXIsIGNhc2VGaWVsZDogQ2FzZUZpZWxkLCBjdXJyZW50VmFsdWU/OiBvYmplY3QpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpZWxkVHlwZSA9IGNhc2VGaWVsZC5maWVsZF90eXBlO1xuICAgIHN3aXRjaCAoZmllbGRUeXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICBpZiAoRmllbGRzVXRpbHMuaXNGbGFnc0Nhc2VGaWVsZChjYXNlRmllbGQpKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIEZsYWdzIENhc2VGaWVsZCBoYXMgYSB2YWx1ZSwgaXQgaXMgYSByb290LWxldmVsIENvbXBsZXggZmllbGQ7IGlmIGl0IGRvZXMgbm90LCBpdCBpcyBhIEZsYWdzXG4gICAgICAgICAgLy8gQ2FzZUZpZWxkIHRoYXQgaXMgYSBzdWItZmllbGQgd2l0aGluIGFub3RoZXIgQ29tcGxleCBmaWVsZCwgc28gdXNlIHRoZSBjdXJyZW50VmFsdWUgdmFsdWUgKGlmIGFueSkgaW5zdGVhZFxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2FzZUZpZWxkLnZhbHVlID8gY2FzZUZpZWxkLnZhbHVlIDogY3VycmVudFZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KHZhbHVlKSAmJiB2YWx1ZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBhY3RpdmVDb3VudCA9IHZhbHVlLmRldGFpbHMucmVkdWNlKFxuICAgICAgICAgICAgICAoY291bnQsIGRldGFpbCkgPT4gZGV0YWlsLnZhbHVlLnN0YXR1cyA9PT0gQ2FzZUZsYWdTdGF0dXMuQUNUSVZFID8gY291bnQgKyAxIDogY291bnQsXG4gICAgICAgICAgICAgIGFjdGl2ZUNvdW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNhc2VGaWVsZC52YWx1ZSA/IGNhc2VGaWVsZC52YWx1ZSA6IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGFjdGl2ZUNvdW50ID0gZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzLnJlZHVjZSgoYWN0aXZlRmxhZ3NDb3VudE9mQ29tcGxleEZpZWxkLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb3VudEFjdGl2ZUZsYWdzSW5DYXNlRmllbGQoXG4gICAgICAgICAgICAgICAgYWN0aXZlRmxhZ3NDb3VudE9mQ29tcGxleEZpZWxkLFxuICAgICAgICAgICAgICAgIHN1YkZpZWxkLFxuICAgICAgICAgICAgICAgIHZhbHVlW3N1YkZpZWxkLmlkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSwgYWN0aXZlQ291bnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIC8vIEZvciBhIENvbGxlY3Rpb24gZmllbGQsIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBkaXJlY3RseSBhcyBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIENhc2VGaWVsZCdzIHZhbHVlIHByb3BlcnR5XG4gICAgICAvLyBhcyBhbiBhcnJheSwgdW5sZXNzIHRoZSBjb2xsZWN0aW9uIGlzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCB0eXBlIC0gc3ViLWZpZWxkcyBuZXZlciBjb250YWluIHZhbHVlc1xuICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgIGlmIChGaWVsZHNVdGlscy5pc0ZsYWdzRmllbGRUeXBlKGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUpKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIENvbGxlY3Rpb24gQ2FzZUZpZWxkIGhhcyBhIHZhbHVlIChhbiBhcnJheSksIGl0IGlzIGEgcm9vdC1sZXZlbCBDb2xsZWN0aW9uIGZpZWxkOyBpZiBpdCBkb2VzIG5vdCxcbiAgICAgICAgICAvLyBpdCBpcyBhIENvbGxlY3Rpb24gQ2FzZUZpZWxkIHRoYXQgaXMgYSBzdWItZmllbGQgd2l0aGluIGEgQ29tcGxleCBmaWVsZCwgc28gdXNlIHRoZSBjdXJyZW50VmFsdWUgdmFsdWVcbiAgICAgICAgICAvLyAoaWYgYW55KSBpbnN0ZWFkXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBjYXNlRmllbGQudmFsdWUgPyBjYXNlRmllbGQudmFsdWUgOiBjdXJyZW50VmFsdWU7XG4gICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBvYmplY3Q7IH0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWVbJ2RldGFpbHMnXSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUNvdW50ID0gaXRlbS52YWx1ZVsnZGV0YWlscyddLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChjb3VudCwgZGV0YWlsKSA9PiBkZXRhaWwudmFsdWUuc3RhdHVzID09PSBDYXNlRmxhZ1N0YXR1cy5BQ1RJVkUgPyBjb3VudCArIDEgOiBjb3VudCxcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZUNvdW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnICYmIGZpZWxkVHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBQZXJmb3JtIGEgcmVkdWN0aW9uIG92ZXIgZWFjaCBDb21wbGV4IGZpZWxkJ3Mgc3ViLWZpZWxkcyAoc2ltaWxhciB0byB3aGF0IGlzIGRvbmUgYWJvdmUgZm9yIG5vbi1GbGFnc1xuICAgICAgICAgICAgLy8gQ29tcGxleCBmaWVsZHMpXG4gICAgICAgICAgICAvLyAoQ2Fubm90IGp1c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IGZvciBlYWNoIENvbXBsZXggZmllbGQgaW4gdGhlIGNvbGxlY3Rpb24gYmVjYXVzZSB0aGUgQ2FzZUZpZWxkXG4gICAgICAgICAgICAvLyBmb3IgZWFjaCBvbmUgaXMgbm90IHBhcnQgb2YgdGhlIGNvbGxlY3Rpb24pXG4gICAgICAgICAgICBjYXNlRmllbGQudmFsdWUuZm9yRWFjaCgoaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogb2JqZWN0OyB9KSA9PiB7XG4gICAgICAgICAgICAgIGFjdGl2ZUNvdW50ID0gZmllbGRUeXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGFjdGl2ZUZsYWdzQ291bnRPZkNvbXBsZXhGaWVsZCwgc3ViRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmVGbGFnc0NvdW50T2ZDb21wbGV4RmllbGQsIHN1YkZpZWxkLCBpdGVtLnZhbHVlW3N1YkZpZWxkLmlkXSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhY3RpdmVDb3VudFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIElnbm9yZSBhbGwgb3RoZXIgZmllbGQgdHlwZXNcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2ZUNvdW50O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlRm9yRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogc3RyaW5nIHtcbiAgICBzd2l0Y2goY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5DUkVBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuQ1JFQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IE5leHQgdG8gY29tcGxldGUgdGhlIGNyZWF0aW9uIG9mIHRoZSBjYXNlIGZsYWcnO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLkNSRUFURV9FWFRFUk5BTDpcbiAgICAgICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IE5leHQgdG8gY29tcGxldGUgdGhlIGNyZWF0aW9uIG9mIHRoZSBzdXBwb3J0IHJlcXVlc3QnO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURTpcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfMl9QT0lOVF8xOlxuICAgICAgICByZXR1cm4gJ1BsZWFzZSBzZWxlY3QgTmV4dCB0byBjb21wbGV0ZSB0aGUgdXBkYXRlIG9mIHRoZSBzZWxlY3RlZCBjYXNlIGZsYWcnO1xuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDpcbiAgICAgICAgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IE5leHQgdG8gY29tcGxldGUgdGhlIHVwZGF0ZSBvZiB0aGUgc2VsZWN0ZWQgc3VwcG9ydCByZXF1ZXN0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDYW5TaG93UHJlZGljYXRlKGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlciwgZm9ybTogYW55KTogUHJlZGljYXRlPFdpemFyZFBhZ2U+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLmdldEN1cnJlbnRFdmVudFN0YXRlKGV2ZW50VHJpZ2dlciwgZm9ybSk7XG4gICAgcmV0dXJuIChwYWdlOiBXaXphcmRQYWdlKTogYm9vbGVhbiA9PiB7XG4gICAgICByZXR1cm4gcGFnZS5wYXJzZWRTaG93Q29uZGl0aW9uLm1hdGNoKGN1cnJlbnRTdGF0ZSk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50RXZlbnRTdGF0ZShldmVudFRyaWdnZXI6IHsgY2FzZV9maWVsZHM6IENhc2VGaWVsZFtdIH0sIGZvcm06IEZvcm1Hcm91cCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyhldmVudFRyaWdnZXIuY2FzZV9maWVsZHMsIGZvcm0uY29udHJvbHNbJ2RhdGEnXS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvbmVDYXNlRmllbGQob2JqOiBhbnkpOiBDYXNlRmllbGQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBDYXNlRmllbGQoKSwgb2JqKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBmb3JtRmllbGRzOiBvYmplY3QpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlRmllbGRzKGNhc2VGaWVsZHMsIGZvcm1GaWVsZHMsIEZpZWxkc1V0aWxzLkRFRkFVTFRfTUVSR0VfRlVOQ1RJT04pO1xuICB9XG5cbiAgcHVibGljIG1lcmdlTGFiZWxDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyhjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybUZpZWxkczogb2JqZWN0KTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZUZpZWxkcyhjYXNlRmllbGRzLCBmb3JtRmllbGRzLCBGaWVsZHNVdGlscy5MQUJFTF9NRVJHRV9GVU5DVElPTik7XG4gIH1cblxuICBwdWJsaWMgY29udHJvbEl0ZXJhdG9yKFxuICAgIGFDb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgZm9ybUFycmF5Rm46IChhcnJheTogRm9ybUFycmF5KSA9PiB2b2lkLFxuICAgIGZvcm1Hcm91cEZuOiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4gdm9pZCxcbiAgICBjb250cm9sRm46IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4gdm9pZFxuICApOiB2b2lkIHtcbiAgICBpZiAoYUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHsgLy8gV2UncmUgaW4gYSBjb2xsZWN0aW9uXG4gICAgICBmb3JtQXJyYXlGbihhQ29udHJvbCk7XG4gICAgfSBlbHNlIGlmIChhQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgeyAvLyBXZSdyZSBpbiBhIGNvbXBsZXggdHlwZS5cbiAgICAgIGZvcm1Hcm91cEZuKGFDb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKGFDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHsgLy8gRm9ybUNvbnRyb2xcbiAgICAgIGNvbnRyb2xGbihhQ29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUZpZWxkcyhjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybUZpZWxkczogb2JqZWN0LCBtZXJnZUZ1bmN0aW9uOiAoZmllbGQ6IENhc2VGaWVsZCwgcmVzdWx0OiBvYmplY3QpID0+IHZvaWQpOiBvYmplY3Qge1xuICAgIGNvbnN0IHJlc3VsdDogb2JqZWN0ID0gRmllbGRzVXRpbHMuY2xvbmVPYmplY3QoZm9ybUZpZWxkcyk7XG4gICAgY2FzZUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIG1lcmdlRnVuY3Rpb24oZmllbGQsIHJlc3VsdCk7XG4gICAgICBpZiAoZmllbGQuZmllbGRfdHlwZSAmJiBmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzICYmIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRbZmllbGQuaWRdID0gdGhpcy5tZXJnZUZpZWxkcyhmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCByZXN1bHRbZmllbGQuaWRdLCBtZXJnZUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=