@hmcts/ccd-case-ui-toolkit 6.11.0-case-file-view-move-document → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +8547 -4496
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -1
  6. package/esm2015/lib/components/banners/alert/alert.component.js +7 -5
  7. package/esm2015/lib/components/banners/alert/alert.module.js +12 -4
  8. package/esm2015/lib/components/footer/footer.component.js +55 -30
  9. package/esm2015/lib/components/footer/footers.module.js +12 -4
  10. package/esm2015/lib/components/form/date-input/date-input.component.js +63 -44
  11. package/esm2015/lib/components/form/form.module.js +8 -4
  12. package/esm2015/lib/components/header/header-bar/header-bar.component.js +33 -21
  13. package/esm2015/lib/components/header/headers.module.js +6 -4
  14. package/esm2015/lib/components/header/navigation/navigation-item.component.js +9 -7
  15. package/esm2015/lib/components/header/phase/phase.component.js +20 -9
  16. package/esm2015/lib/components/tabs/tabs.component.js +8 -5
  17. package/esm2015/lib/components/tabs/tabs.module.js +6 -2
  18. package/esm2015/lib/shared/commons/case-edit-data/case-edit-data.module.js +1 -1
  19. package/esm2015/lib/shared/commons/case-edit-data/case-edit-data.service.js +5 -8
  20. package/esm2015/lib/shared/commons/case-edit-data/case-edit-validation.model.js +1 -1
  21. package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +12 -9
  22. package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +11 -8
  23. package/esm2015/lib/shared/components/activity/activity.component.js +19 -14
  24. package/esm2015/lib/shared/components/activity/activity.module.js +6 -2
  25. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +2 -2
  26. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +2 -2
  27. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +30 -26
  28. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +98 -53
  29. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.js +7 -0
  30. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +216 -148
  31. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +35 -28
  32. package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +2 -1
  33. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +51 -26
  34. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +53 -30
  35. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +2 -2
  36. package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.js +2 -1
  37. package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field.model.js +1 -1
  38. package/esm2015/lib/shared/components/case-editor/domain/wizard-page.model.js +2 -1
  39. package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +3 -2
  40. package/esm2015/lib/shared/components/case-editor/services/case-flag-state.service.js +19 -0
  41. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +11 -22
  42. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +2 -2
  43. package/esm2015/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.js +12 -12
  44. package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +2 -2
  45. package/esm2015/lib/shared/components/case-history/case-history.component.js +89 -63
  46. package/esm2015/lib/shared/components/case-history/case-history.module.js +18 -14
  47. package/esm2015/lib/shared/components/case-history/domain/case-history.model.js +2 -1
  48. package/esm2015/lib/shared/components/case-list/case-list.component.js +56 -49
  49. package/esm2015/lib/shared/components/case-list/case-list.module.js +8 -4
  50. package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +11 -7
  51. package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +9 -6
  52. package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +12 -8
  53. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +106 -61
  54. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +93 -73
  55. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +45 -23
  56. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +18 -17
  57. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +158 -95
  58. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +32 -20
  59. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +107 -79
  60. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +82 -52
  61. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +1 -1
  62. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +13 -15
  63. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +37 -27
  64. package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +36 -22
  65. package/esm2015/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.js +3 -3
  66. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +2 -2
  67. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +63 -40
  68. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +6 -2
  69. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +28 -14
  70. package/esm2015/lib/shared/components/dialogs/dialogs.module.js +6 -2
  71. package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +28 -14
  72. package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +28 -14
  73. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +28 -14
  74. package/esm2015/lib/shared/components/error/callback-errors.component.js +38 -27
  75. package/esm2015/lib/shared/components/error/domain/error-context.js +1 -1
  76. package/esm2015/lib/shared/components/error/errors.module.js +6 -2
  77. package/esm2015/lib/shared/components/error-message/error-message.component.js +14 -11
  78. package/esm2015/lib/shared/components/error-message/error-message.module.js +8 -4
  79. package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +39 -20
  80. package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +34 -18
  81. package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +34 -19
  82. package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +50 -25
  83. package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +39 -20
  84. package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +34 -18
  85. package/esm2015/lib/shared/components/event-start/event-guard/event-start.guard.js +2 -2
  86. package/esm2015/lib/shared/components/event-start/event-start.module.js +8 -4
  87. package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +27 -17
  88. package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +6 -2
  89. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +7 -5
  90. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.module.js +6 -2
  91. package/esm2015/lib/shared/components/pagination/pagination.component.js +93 -76
  92. package/esm2015/lib/shared/components/pagination/pagination.module.js +8 -4
  93. package/esm2015/lib/shared/components/palette/address/address-option.model.js +4 -7
  94. package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +53 -34
  95. package/esm2015/lib/shared/components/palette/base-field/field-read-label.component.js +10 -8
  96. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +6 -2
  97. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +3 -3
  98. package/esm2015/lib/shared/components/palette/base-field/payment-field.component.js +4 -1
  99. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +32 -46
  100. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.js +1 -1
  101. package/esm2015/lib/shared/components/palette/case-file-view/index.js +1 -2
  102. package/esm2015/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.js +62 -37
  103. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +244 -42
  104. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.js +145 -69
  105. package/esm2015/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.js +181 -0
  106. package/esm2015/lib/shared/components/palette/case-flag/components/index.js +3 -1
  107. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +62 -87
  108. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.js +6 -0
  109. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.js +133 -101
  110. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +55 -35
  111. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.js +208 -124
  112. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.js +292 -0
  113. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.js +286 -99
  114. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag-state.model.js +1 -1
  115. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag.model.js +1 -1
  116. package/esm2015/lib/shared/components/palette/case-flag/domain/language.model.js +1 -1
  117. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.js +9 -0
  118. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.js +12 -0
  119. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.js +3 -2
  120. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.js +8 -3
  121. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.js +6 -0
  122. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.js +6 -0
  123. package/esm2015/lib/shared/components/palette/case-flag/enums/index.js +8 -2
  124. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.js +3 -2
  125. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.js +2 -1
  126. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.js +6 -0
  127. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.js +6 -0
  128. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.js +3 -1
  129. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.js +3 -2
  130. package/esm2015/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.js +8 -4
  131. package/esm2015/lib/shared/components/palette/case-flag/index.js +2 -1
  132. package/esm2015/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.js +41 -0
  133. package/esm2015/lib/shared/components/palette/case-flag/pipes/index.js +5 -0
  134. package/esm2015/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.js +41 -0
  135. package/esm2015/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.js +109 -0
  136. package/esm2015/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.js +77 -0
  137. package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +121 -50
  138. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +274 -154
  139. package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +16 -12
  140. package/esm2015/lib/shared/components/palette/collection/collection-create-checker.service.js +5 -5
  141. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +63 -39
  142. package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +53 -48
  143. package/esm2015/lib/shared/components/palette/complex/read-complex-field-raw.component.js +7 -6
  144. package/esm2015/lib/shared/components/palette/complex/read-complex-field-table.component.js +22 -20
  145. package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +5 -4
  146. package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +16 -12
  147. package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +38 -19
  148. package/esm2015/lib/shared/components/palette/document/write-document-field.component.js +31 -25
  149. package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
  150. package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +32 -20
  151. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/index.js +3 -0
  152. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.js +47 -0
  153. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.js +153 -0
  154. package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
  155. package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +26 -20
  156. package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +16 -12
  157. package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
  158. package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +19 -14
  159. package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
  160. package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +20 -15
  161. package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +87 -65
  162. package/esm2015/lib/shared/components/palette/history/event-log/event-log-table.component.js +60 -46
  163. package/esm2015/lib/shared/components/palette/index.js +3 -1
  164. package/esm2015/lib/shared/components/palette/label/label-field.component.js +24 -5
  165. package/esm2015/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.js +2 -4
  166. package/esm2015/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.js +31 -9
  167. package/esm2015/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.js +152 -77
  168. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.js +21 -19
  169. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.js +32 -8
  170. package/esm2015/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.js +2 -4
  171. package/esm2015/lib/shared/components/palette/linked-cases/domain/linked-cases.model.js +4 -1
  172. package/esm2015/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.js +3 -1
  173. package/esm2015/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.js +3 -5
  174. package/esm2015/lib/shared/components/palette/linked-cases/services/linked-cases.service.js +5 -6
  175. package/esm2015/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.js +43 -90
  176. package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +16 -12
  177. package/esm2015/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.js +15 -11
  178. package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +19 -14
  179. package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +16 -12
  180. package/esm2015/lib/shared/components/palette/order-summary/fee.model.js +2 -1
  181. package/esm2015/lib/shared/components/palette/order-summary/order-summary.model.js +1 -1
  182. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-field.component.js +43 -25
  183. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-row.component.js +7 -6
  184. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-raw.component.js +41 -29
  185. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-table.component.js +48 -35
  186. package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +88 -50
  187. package/esm2015/lib/shared/components/palette/palette.module.js +168 -77
  188. package/esm2015/lib/shared/components/palette/palette.service.js +9 -4
  189. package/esm2015/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.js +3 -3
  190. package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +16 -12
  191. package/esm2015/lib/shared/components/palette/query-management/__mocks__/index.js +112 -0
  192. package/esm2015/lib/shared/components/palette/query-management/components/index.js +4 -0
  193. package/esm2015/lib/shared/components/palette/query-management/components/query-create/query-create.component.js +18 -0
  194. package/esm2015/lib/shared/components/palette/query-management/components/query-detail/query-detail.component.js +18 -0
  195. package/esm2015/lib/shared/components/palette/query-management/components/query-list/query-list.component.js +185 -0
  196. package/esm2015/lib/shared/components/palette/query-management/domain/index.js +7 -0
  197. package/esm2015/lib/shared/components/palette/query-management/domain/party-messages/party-message.model.js +2 -0
  198. package/esm2015/lib/shared/components/palette/query-management/domain/party-messages/party-messages-group.model.js +2 -0
  199. package/esm2015/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.js +18 -0
  200. package/esm2015/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.js +35 -0
  201. package/esm2015/lib/shared/components/palette/query-management/domain/query-list/query-list-response-status.enum.js +6 -0
  202. package/esm2015/lib/shared/components/palette/query-management/domain/query-list-column/query-list-column.model.js +2 -0
  203. package/esm2015/lib/shared/components/palette/query-management/index.js +6 -0
  204. package/esm2015/lib/shared/components/palette/query-management/read-query-management-field.component.js +53 -0
  205. package/esm2015/lib/shared/components/palette/query-management/utils/query-management.utils.js +12 -0
  206. package/esm2015/lib/shared/components/palette/query-management/write-query-management-field.component.js +20 -0
  207. package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
  208. package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +16 -12
  209. package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
  210. package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +17 -13
  211. package/esm2015/lib/shared/components/palette/utils/date.pipe.js +4 -4
  212. package/esm2015/lib/shared/components/palette/waystopay/waystopay-field.component.js +4 -4
  213. package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +7 -5
  214. package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +20 -15
  215. package/esm2015/lib/shared/components/palette/yes-no/yes-no.service.js +3 -1
  216. package/esm2015/lib/shared/components/search-filters/domain/search-input.model.js +1 -1
  217. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +61 -36
  218. package/esm2015/lib/shared/components/search-filters/search-filters.module.js +14 -10
  219. package/esm2015/lib/shared/components/search-result/search-result.component.js +110 -92
  220. package/esm2015/lib/shared/components/search-result/search-result.module.js +16 -13
  221. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +92 -54
  222. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +13 -9
  223. package/esm2015/lib/shared/directives/conditional-show/conditional-show-form.directive.js +2 -2
  224. package/esm2015/lib/shared/directives/conditional-show/domain/conditional-show.model.js +104 -200
  225. package/esm2015/lib/shared/directives/conditional-show/services/condition-parser.service.js +197 -0
  226. package/esm2015/lib/shared/directives/conditional-show/services/condition.peg.js +103 -0
  227. package/esm2015/lib/shared/domain/addresses/address.model.js +2 -1
  228. package/esm2015/lib/shared/domain/alert/alert-status-params.model.js +2 -0
  229. package/esm2015/lib/shared/domain/case-details.model.js +2 -1
  230. package/esm2015/lib/shared/domain/case-event-data.model.js +2 -1
  231. package/esm2015/lib/shared/domain/case-file-view/case-file-view-category.model.js +1 -1
  232. package/esm2015/lib/shared/domain/case-file-view/case-file-view-document.model.js +2 -1
  233. package/esm2015/lib/shared/domain/case-file-view/categories-and-documents.model.js +1 -1
  234. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +2 -1
  235. package/esm2015/lib/shared/domain/case-flag/flag-type.model.js +18 -2
  236. package/esm2015/lib/shared/domain/case-flag/hmcts-service-detail.model.js +2 -1
  237. package/esm2015/lib/shared/domain/case-view/case-event-trigger.model.js +2 -1
  238. package/esm2015/lib/shared/domain/case-view/case-tab.model.js +2 -1
  239. package/esm2015/lib/shared/domain/case-view/case-view-event.model.js +2 -1
  240. package/esm2015/lib/shared/domain/case-view/case-view.model.js +2 -1
  241. package/esm2015/lib/shared/domain/case-view/role-assignment-response.model.js +1 -1
  242. package/esm2015/lib/shared/domain/case-view/role-request.model.js +1 -1
  243. package/esm2015/lib/shared/domain/definition/case-event.model.js +1 -1
  244. package/esm2015/lib/shared/domain/definition/case-field.model.js +7 -3
  245. package/esm2015/lib/shared/domain/definition/case-type.model.js +2 -1
  246. package/esm2015/lib/shared/domain/definition/display-context-enum.model.js +3 -1
  247. package/esm2015/lib/shared/domain/definition/event-case-field.model.js +2 -1
  248. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  249. package/esm2015/lib/shared/domain/definition/field-type.model.js +2 -1
  250. package/esm2015/lib/shared/domain/document/document-data.model.js +2 -1
  251. package/esm2015/lib/shared/domain/organisation/organisation-converter.js +8 -8
  252. package/esm2015/lib/shared/domain/pagination-metadata.model.js +1 -1
  253. package/esm2015/lib/shared/domain/search/field.model.js +1 -1
  254. package/esm2015/lib/shared/domain/search/search-result-view-column.model.js +1 -1
  255. package/esm2015/lib/shared/domain/search/search-result-view-item.model.js +2 -1
  256. package/esm2015/lib/shared/domain/search/search-result-view.model.js +2 -1
  257. package/esm2015/lib/shared/domain/user/user-info.model.js +1 -1
  258. package/esm2015/lib/shared/domain/workbasket/workbasket-input.model.js +1 -8
  259. package/esm2015/lib/shared/fixture/case-field-builder.js +13 -13
  260. package/esm2015/lib/shared/fixture/shared.test.fixture.js +28 -27
  261. package/esm2015/lib/shared/pipes/complex/{cdd-page-fields.pipe.js → ccd-page-fields.pipe.js} +3 -3
  262. package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +14 -11
  263. package/esm2015/lib/shared/pipes/complex/index.js +2 -2
  264. package/esm2015/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.js +16 -0
  265. package/esm2015/lib/shared/pipes/generic/index.js +2 -0
  266. package/esm2015/lib/shared/pipes/index.js +5 -1
  267. package/esm2015/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.js +28 -0
  268. package/esm2015/lib/shared/pipes/link-cases-from-reason-code/index.js +2 -0
  269. package/esm2015/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.js +10 -5
  270. package/esm2015/lib/shared/pipes/pipes.module.js +13 -5
  271. package/esm2015/lib/shared/services/activity/activity.polling.service.js +2 -2
  272. package/esm2015/lib/shared/services/activity/activity.service.js +9 -18
  273. package/esm2015/lib/shared/services/addresses/address-parser.js +5 -5
  274. package/esm2015/lib/shared/services/alert/alert.service.js +28 -8
  275. package/esm2015/lib/shared/services/case-fields/format-translator.service.js +2 -2
  276. package/esm2015/lib/shared/services/case-flag/case-flag-refdata.service.js +35 -8
  277. package/esm2015/lib/shared/services/common-data-service/common-data-service.js +2 -2
  278. package/esm2015/lib/shared/services/definitions/definitions.service.js +3 -8
  279. package/esm2015/lib/shared/services/fields/fields.purger.js +15 -15
  280. package/esm2015/lib/shared/services/fields/fields.utils.js +12 -4
  281. package/esm2015/lib/shared/services/form/field-type-sanitiser.js +17 -1
  282. package/esm2015/lib/shared/services/form/form-value.service.js +1 -2
  283. package/esm2015/lib/shared/services/loading/loading.service.js +2 -7
  284. package/esm2015/lib/shared/services/request/request.options.builder.js +7 -1
  285. package/esm2015/lib/shared/services/search/search.service.js +5 -10
  286. package/esm2015/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.js +5 -5
  287. package/esm2015/lib/shared/services/window/window.service.js +1 -1
  288. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +7979 -4216
  289. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  290. package/lib/app.config.d.ts +2 -0
  291. package/lib/app.config.d.ts.map +1 -1
  292. package/lib/components/banners/alert/alert.module.d.ts +2 -1
  293. package/lib/components/banners/alert/alert.module.d.ts.map +1 -1
  294. package/lib/components/footer/footers.module.d.ts +2 -1
  295. package/lib/components/footer/footers.module.d.ts.map +1 -1
  296. package/lib/components/form/form.module.d.ts +2 -1
  297. package/lib/components/form/form.module.d.ts.map +1 -1
  298. package/lib/components/header/header-bar/header-bar.component.d.ts.map +1 -1
  299. package/lib/components/header/headers.module.d.ts +2 -1
  300. package/lib/components/header/headers.module.d.ts.map +1 -1
  301. package/lib/components/tabs/tabs.component.d.ts.map +1 -1
  302. package/lib/components/tabs/tabs.module.d.ts +2 -1
  303. package/lib/components/tabs/tabs.module.d.ts.map +1 -1
  304. package/lib/shared/commons/case-edit-data/case-edit-data.module.d.ts.map +1 -1
  305. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts +3 -5
  306. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts.map +1 -1
  307. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts.map +1 -1
  308. package/lib/shared/components/activity/activity.module.d.ts +2 -1
  309. package/lib/shared/components/activity/activity.module.d.ts.map +1 -1
  310. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +3 -3
  311. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  312. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +2 -0
  313. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  314. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts +6 -0
  315. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts.map +1 -0
  316. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +1 -2
  317. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  318. package/lib/shared/components/case-editor/case-editor.module.d.ts +3 -2
  319. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  320. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -1
  321. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -2
  322. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  323. package/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.d.ts.map +1 -1
  324. package/lib/shared/components/case-editor/domain/wizard-page-field.model.d.ts.map +1 -1
  325. package/lib/shared/components/case-editor/domain/wizard-page.model.d.ts.map +1 -1
  326. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -1
  327. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +11 -0
  328. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -0
  329. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -3
  330. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  331. package/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.d.ts.map +1 -1
  332. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  333. package/lib/shared/components/case-history/case-history.module.d.ts +2 -1
  334. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
  335. package/lib/shared/components/case-history/domain/case-history.model.d.ts.map +1 -1
  336. package/lib/shared/components/case-list/case-list.module.d.ts +2 -1
  337. package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
  338. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +2 -1
  339. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
  340. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +2 -1
  341. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
  342. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -1
  343. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  344. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +9 -2
  345. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  346. package/lib/shared/components/case-viewer/case-viewer.component.d.ts +2 -2
  347. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  348. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +6 -4
  349. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  350. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts.map +1 -1
  351. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  352. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +2 -1
  353. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -1
  354. package/lib/shared/components/dialogs/dialogs.module.d.ts +2 -1
  355. package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -1
  356. package/lib/shared/components/error/domain/error-context.d.ts +2 -2
  357. package/lib/shared/components/error/domain/error-context.d.ts.map +1 -1
  358. package/lib/shared/components/error/errors.module.d.ts +2 -1
  359. package/lib/shared/components/error/errors.module.d.ts.map +1 -1
  360. package/lib/shared/components/error-message/error-message.module.d.ts +2 -1
  361. package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -1
  362. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +1 -1
  363. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  364. package/lib/shared/components/event-start/event-start.module.d.ts +2 -1
  365. package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -1
  366. package/lib/shared/components/event-trigger/event-trigger.module.d.ts +2 -1
  367. package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -1
  368. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts +2 -1
  369. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts.map +1 -1
  370. package/lib/shared/components/pagination/pagination.component.d.ts +3 -3
  371. package/lib/shared/components/pagination/pagination.module.d.ts +2 -1
  372. package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
  373. package/lib/shared/components/palette/address/address-option.model.d.ts.map +1 -1
  374. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  375. package/lib/shared/components/palette/base-field/field-read.component.d.ts +1 -0
  376. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  377. package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
  378. package/lib/shared/components/palette/base-field/payment-field.component.d.ts +1 -0
  379. package/lib/shared/components/palette/base-field/payment-field.component.d.ts.map +1 -1
  380. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +5 -3
  381. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
  382. package/lib/shared/components/palette/case-file-view/index.d.ts +0 -1
  383. package/lib/shared/components/palette/case-file-view/index.d.ts.map +1 -1
  384. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +2 -1
  385. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  386. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +20 -5
  387. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts.map +1 -1
  388. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +2 -1
  389. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts.map +1 -1
  390. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +28 -0
  391. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -0
  392. package/lib/shared/components/palette/case-flag/components/index.d.ts +2 -0
  393. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  394. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -8
  395. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  396. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts +5 -0
  397. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts.map +1 -0
  398. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +10 -8
  399. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  400. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -1
  401. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  402. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +14 -8
  403. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  404. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +27 -0
  405. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -0
  406. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +19 -9
  407. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  408. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts +1 -10
  409. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts.map +1 -1
  410. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +6 -0
  411. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts.map +1 -1
  412. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts +1 -0
  413. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts.map +1 -1
  414. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts +8 -0
  415. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts.map +1 -0
  416. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts +11 -0
  417. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts.map +1 -0
  418. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts +2 -1
  419. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts.map +1 -1
  420. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts +8 -3
  421. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts.map +1 -1
  422. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts +5 -0
  423. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts.map +1 -0
  424. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts +5 -0
  425. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts.map +1 -0
  426. package/lib/shared/components/palette/case-flag/enums/index.d.ts +7 -1
  427. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  428. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts +2 -1
  429. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts.map +1 -1
  430. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts +1 -0
  431. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts.map +1 -1
  432. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts +5 -0
  433. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts.map +1 -0
  434. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts +5 -0
  435. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts.map +1 -0
  436. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts +3 -1
  437. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts.map +1 -1
  438. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts +3 -2
  439. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts.map +1 -1
  440. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts +7 -3
  441. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts.map +1 -1
  442. package/lib/shared/components/palette/case-flag/index.d.ts +1 -0
  443. package/lib/shared/components/palette/case-flag/index.d.ts.map +1 -1
  444. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts +19 -0
  445. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts.map +1 -0
  446. package/lib/shared/components/palette/case-flag/pipes/index.d.ts +5 -0
  447. package/lib/shared/components/palette/case-flag/pipes/index.d.ts.map +1 -0
  448. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts +18 -0
  449. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts.map +1 -0
  450. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts +25 -0
  451. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts.map +1 -0
  452. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts +21 -0
  453. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts.map +1 -0
  454. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +11 -8
  455. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  456. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +25 -24
  457. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  458. package/lib/shared/components/palette/collection/collection-create-checker.service.d.ts.map +1 -1
  459. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +1 -0
  460. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  461. package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts +1 -1
  462. package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts.map +1 -1
  463. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  464. package/lib/shared/components/palette/dynamic-multi-select-list/index.d.ts +3 -0
  465. package/lib/shared/components/palette/dynamic-multi-select-list/index.d.ts.map +1 -0
  466. package/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.d.ts +9 -0
  467. package/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.d.ts.map +1 -0
  468. package/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.d.ts +17 -0
  469. package/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.d.ts.map +1 -0
  470. package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts +1 -1
  471. package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts.map +1 -1
  472. package/lib/shared/components/palette/index.d.ts +2 -0
  473. package/lib/shared/components/palette/index.d.ts.map +1 -1
  474. package/lib/shared/components/palette/label/label-field.component.d.ts +2 -1
  475. package/lib/shared/components/palette/label/label-field.component.d.ts.map +1 -1
  476. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  477. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +4 -0
  478. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  479. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts +4 -4
  480. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts.map +1 -1
  481. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.d.ts +2 -0
  482. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.d.ts.map +1 -1
  483. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
  484. package/lib/shared/components/palette/linked-cases/domain/linked-cases.model.d.ts +6 -3
  485. package/lib/shared/components/palette/linked-cases/domain/linked-cases.model.d.ts.map +1 -1
  486. package/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.d.ts +3 -1
  487. package/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.d.ts.map +1 -1
  488. package/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.d.ts.map +1 -1
  489. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  490. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +0 -4
  491. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  492. package/lib/shared/components/palette/order-summary/fee.model.d.ts.map +1 -1
  493. package/lib/shared/components/palette/order-summary/order-summary.model.d.ts.map +1 -1
  494. package/lib/shared/components/palette/palette.module.d.ts +129 -116
  495. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  496. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  497. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts +3 -0
  498. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts.map +1 -0
  499. package/lib/shared/components/palette/query-management/components/index.d.ts +4 -0
  500. package/lib/shared/components/palette/query-management/components/index.d.ts.map +1 -0
  501. package/lib/shared/components/palette/query-management/components/query-create/query-create.component.d.ts +9 -0
  502. package/lib/shared/components/palette/query-management/components/query-create/query-create.component.d.ts.map +1 -0
  503. package/lib/shared/components/palette/query-management/components/query-detail/query-detail.component.d.ts +9 -0
  504. package/lib/shared/components/palette/query-management/components/query-detail/query-detail.component.d.ts.map +1 -0
  505. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +16 -0
  506. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +1 -0
  507. package/lib/shared/components/palette/query-management/domain/index.d.ts +7 -0
  508. package/lib/shared/components/palette/query-management/domain/index.d.ts.map +1 -0
  509. package/lib/shared/components/palette/query-management/domain/party-messages/party-message.model.d.ts +14 -0
  510. package/lib/shared/components/palette/query-management/domain/party-messages/party-message.model.d.ts.map +1 -0
  511. package/lib/shared/components/palette/query-management/domain/party-messages/party-messages-group.model.d.ts +7 -0
  512. package/lib/shared/components/palette/query-management/domain/party-messages/party-messages-group.model.d.ts.map +1 -0
  513. package/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.d.ts +10 -0
  514. package/lib/shared/components/palette/query-management/domain/query-list/query-list-data/query-list-data.model.d.ts.map +1 -0
  515. package/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.d.ts +21 -0
  516. package/lib/shared/components/palette/query-management/domain/query-list/query-list-item/query-list-item.model.d.ts.map +1 -0
  517. package/lib/shared/components/palette/query-management/domain/query-list/query-list-response-status.enum.d.ts +5 -0
  518. package/lib/shared/components/palette/query-management/domain/query-list/query-list-response-status.enum.d.ts.map +1 -0
  519. package/lib/shared/components/palette/query-management/domain/query-list-column/query-list-column.model.d.ts +7 -0
  520. package/lib/shared/components/palette/query-management/domain/query-list-column/query-list-column.model.d.ts.map +1 -0
  521. package/lib/shared/components/palette/query-management/index.d.ts +6 -0
  522. package/lib/shared/components/palette/query-management/index.d.ts.map +1 -0
  523. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +14 -0
  524. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -0
  525. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +7 -0
  526. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -0
  527. package/lib/shared/components/palette/query-management/write-query-management-field.component.d.ts +10 -0
  528. package/lib/shared/components/palette/query-management/write-query-management-field.component.d.ts.map +1 -0
  529. package/lib/shared/components/palette/text-area/write-text-area-field.component.d.ts.map +1 -1
  530. package/lib/shared/components/palette/utils/date.pipe.d.ts.map +1 -1
  531. package/lib/shared/components/palette/yes-no/yes-no.service.d.ts.map +1 -1
  532. package/lib/shared/components/search-filters/domain/search-input.model.d.ts.map +1 -1
  533. package/lib/shared/components/search-filters/search-filters.module.d.ts +2 -1
  534. package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
  535. package/lib/shared/components/search-result/search-result.module.d.ts +3 -2
  536. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
  537. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -1
  538. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +2 -1
  539. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
  540. package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts +13 -30
  541. package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts.map +1 -1
  542. package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts +30 -0
  543. package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts.map +1 -0
  544. package/lib/shared/directives/conditional-show/services/condition.peg.d.ts +3 -0
  545. package/lib/shared/directives/conditional-show/services/condition.peg.d.ts.map +1 -0
  546. package/lib/shared/domain/addresses/address.model.d.ts.map +1 -1
  547. package/lib/shared/domain/alert/alert-status-params.model.d.ts +6 -0
  548. package/lib/shared/domain/alert/alert-status-params.model.d.ts.map +1 -0
  549. package/lib/shared/domain/case-details.model.d.ts.map +1 -1
  550. package/lib/shared/domain/case-event-data.model.d.ts.map +1 -1
  551. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts.map +1 -1
  552. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts.map +1 -1
  553. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts.map +1 -1
  554. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +1 -1
  555. package/lib/shared/domain/case-flag/flag-type.model.d.ts +6 -1
  556. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  557. package/lib/shared/domain/case-flag/hmcts-service-detail.model.d.ts.map +1 -1
  558. package/lib/shared/domain/case-view/case-event-trigger.model.d.ts.map +1 -1
  559. package/lib/shared/domain/case-view/case-tab.model.d.ts.map +1 -1
  560. package/lib/shared/domain/case-view/case-view-event.model.d.ts.map +1 -1
  561. package/lib/shared/domain/case-view/case-view.model.d.ts.map +1 -1
  562. package/lib/shared/domain/case-view/role-assignment-response.model.d.ts +1 -2
  563. package/lib/shared/domain/case-view/role-assignment-response.model.d.ts.map +1 -1
  564. package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
  565. package/lib/shared/domain/definition/case-event.model.d.ts.map +1 -1
  566. package/lib/shared/domain/definition/case-field.model.d.ts.map +1 -1
  567. package/lib/shared/domain/definition/case-type.model.d.ts.map +1 -1
  568. package/lib/shared/domain/definition/display-context-enum.model.d.ts +3 -1
  569. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -1
  570. package/lib/shared/domain/definition/event-case-field.model.d.ts.map +1 -1
  571. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  572. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  573. package/lib/shared/domain/definition/field-type.model.d.ts.map +1 -1
  574. package/lib/shared/domain/document/document-data.model.d.ts.map +1 -1
  575. package/lib/shared/domain/organisation/organisation-converter.d.ts.map +1 -1
  576. package/lib/shared/domain/pagination-metadata.model.d.ts +2 -2
  577. package/lib/shared/domain/pagination-metadata.model.d.ts.map +1 -1
  578. package/lib/shared/domain/search/field.model.d.ts.map +1 -1
  579. package/lib/shared/domain/search/search-result-view-column.model.d.ts.map +1 -1
  580. package/lib/shared/domain/search/search-result-view-item.model.d.ts.map +1 -1
  581. package/lib/shared/domain/search/search-result-view.model.d.ts.map +1 -1
  582. package/lib/shared/domain/user/user-info.model.d.ts.map +1 -1
  583. package/lib/shared/domain/workbasket/workbasket-input.model.d.ts +0 -1
  584. package/lib/shared/domain/workbasket/workbasket-input.model.d.ts.map +1 -1
  585. package/lib/shared/fixture/case-field-builder.d.ts +6 -6
  586. package/lib/shared/fixture/case-field-builder.d.ts.map +1 -1
  587. package/lib/shared/fixture/shared.test.fixture.d.ts +6 -6
  588. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  589. package/lib/shared/pipes/complex/{cdd-page-fields.pipe.d.ts → ccd-page-fields.pipe.d.ts} +1 -1
  590. package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts.map +1 -0
  591. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
  592. package/lib/shared/pipes/complex/index.d.ts +1 -1
  593. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts +8 -0
  594. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts.map +1 -0
  595. package/lib/shared/pipes/generic/index.d.ts +2 -0
  596. package/lib/shared/pipes/generic/index.d.ts.map +1 -0
  597. package/lib/shared/pipes/index.d.ts +4 -0
  598. package/lib/shared/pipes/index.d.ts.map +1 -1
  599. package/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.d.ts +12 -0
  600. package/lib/shared/pipes/link-cases-from-reason-code/ccd-link-cases-from-reason-code.pipe.d.ts.map +1 -0
  601. package/lib/shared/pipes/link-cases-from-reason-code/index.d.ts +2 -0
  602. package/lib/shared/pipes/link-cases-from-reason-code/index.d.ts.map +1 -0
  603. package/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.d.ts +2 -1
  604. package/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.d.ts.map +1 -1
  605. package/lib/shared/pipes/pipes.module.d.ts +5 -3
  606. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  607. package/lib/shared/services/activity/activity.polling.service.d.ts.map +1 -1
  608. package/lib/shared/services/activity/activity.service.d.ts.map +1 -1
  609. package/lib/shared/services/addresses/address-parser.d.ts.map +1 -1
  610. package/lib/shared/services/alert/alert.service.d.ts +8 -4
  611. package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
  612. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +17 -5
  613. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  614. package/lib/shared/services/common-data-service/common-data-service.d.ts.map +1 -1
  615. package/lib/shared/services/definitions/definitions.service.d.ts.map +1 -1
  616. package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
  617. package/lib/shared/services/fields/fields.utils.d.ts +2 -1
  618. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  619. package/lib/shared/services/form/field-type-sanitiser.d.ts +2 -0
  620. package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
  621. package/lib/shared/services/loading/loading.service.d.ts +1 -4
  622. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  623. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  624. package/lib/shared/services/search/search.service.d.ts +0 -2
  625. package/lib/shared/services/search/search.service.d.ts.map +1 -1
  626. package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts.map +1 -1
  627. package/lib/shared/services/window/window.service.d.ts.map +1 -1
  628. package/package.json +2 -2
  629. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.js +0 -85
  630. package/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.d.ts +0 -8
  631. package/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.d.ts.map +0 -1
  632. package/lib/shared/pipes/complex/cdd-page-fields.pipe.d.ts.map +0 -1
@@ -9,22 +9,23 @@ import { CaseEditPageComponent } from '../case-edit-page/case-edit-page.componen
9
9
  import { CaseEditComponent } from '../case-edit/case-edit.component';
10
10
  import { Confirmation } from '../domain';
11
11
  import { CaseNotifier } from '../services';
12
+ import { CaseEditSubmitTitles } from './case-edit-submit-titles.enum';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "../case-edit/case-edit.component";
14
15
  import * as i2 from "../../../services";
15
16
  import * as i3 from "@angular/router";
16
17
  import * as i4 from "../services";
17
- function CaseEditSubmitComponent_div_0_div_3_Template(rf, ctx) { if (rf & 1) {
18
+ function CaseEditSubmitComponent_div_0_div_4_Template(rf, ctx) { if (rf & 1) {
18
19
  i0.ɵɵelement(0, "div");
19
20
  } }
20
- function CaseEditSubmitComponent_div_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
21
+ function CaseEditSubmitComponent_div_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
21
22
  i0.ɵɵelement(0, "ccd-markdown", 14);
22
23
  i0.ɵɵpipe(1, "ccdCaseTitle");
23
24
  } if (rf & 2) {
24
25
  const ctx_r4 = i0.ɵɵnextContext(2);
25
26
  i0.ɵɵproperty("content", i0.ɵɵpipeBind3(1, 1, ctx_r4.getCaseTitle(), ctx_r4.contextFields, ctx_r4.editForm.controls["data"]));
26
27
  } }
27
- function CaseEditSubmitComponent_div_0_ng_template_6_h2_0_Template(rf, ctx) { if (rf & 1) {
28
+ function CaseEditSubmitComponent_div_0_ng_template_7_h2_0_Template(rf, ctx) { if (rf & 1) {
28
29
  i0.ɵɵelementStart(0, "h2", 16);
29
30
  i0.ɵɵtext(1);
30
31
  i0.ɵɵpipe(2, "ccdCaseReference");
@@ -34,104 +35,142 @@ function CaseEditSubmitComponent_div_0_ng_template_6_h2_0_Template(rf, ctx) { if
34
35
  i0.ɵɵadvance(1);
35
36
  i0.ɵɵtextInterpolate1("#", i0.ɵɵpipeBind1(2, 1, ctx_r12.getCaseId()), "");
36
37
  } }
37
- function CaseEditSubmitComponent_div_0_ng_template_6_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_ng_template_6_h2_0_Template, 3, 3, "h2", 15);
38
+ function CaseEditSubmitComponent_div_0_ng_template_7_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_ng_template_7_h2_0_Template, 3, 3, "h2", 15);
39
40
  } if (rf & 2) {
40
41
  const ctx_r6 = i0.ɵɵnextContext(2);
41
42
  i0.ɵɵproperty("ngIf", ctx_r6.getCaseId());
42
43
  } }
43
- function CaseEditSubmitComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {
44
+ function CaseEditSubmitComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {
44
45
  i0.ɵɵelementStart(0, "div", 17);
45
46
  i0.ɵɵelementStart(1, "h1", 18);
46
- i0.ɵɵtext(2, " Something went wrong ");
47
+ i0.ɵɵtext(2);
48
+ i0.ɵɵpipe(3, "rpxTranslate");
47
49
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(3, "div", 19);
49
- i0.ɵɵelementStart(4, "p");
50
- i0.ɵɵtext(5, "We're working to fix the problem. Try again shortly.");
50
+ i0.ɵɵelementStart(4, "div", 19);
51
+ i0.ɵɵelementStart(5, "p");
52
+ i0.ɵɵtext(6);
53
+ i0.ɵɵpipe(7, "rpxTranslate");
51
54
  i0.ɵɵelementEnd();
52
- i0.ɵɵelementStart(6, "p");
53
- i0.ɵɵelementStart(7, "a", 20);
54
- i0.ɵɵtext(8, "Contact us");
55
+ i0.ɵɵelementStart(8, "p");
56
+ i0.ɵɵelementStart(9, "a", 20);
57
+ i0.ɵɵtext(10);
58
+ i0.ɵɵpipe(11, "rpxTranslate");
55
59
  i0.ɵɵelementEnd();
56
- i0.ɵɵtext(9, " if you're still having problems.");
60
+ i0.ɵɵtext(12);
61
+ i0.ɵɵpipe(13, "rpxTranslate");
57
62
  i0.ɵɵelementEnd();
58
63
  i0.ɵɵelementEnd();
59
64
  i0.ɵɵelementEnd();
65
+ } if (rf & 2) {
66
+ i0.ɵɵadvance(2);
67
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "Something went wrong"), " ");
68
+ i0.ɵɵadvance(4);
69
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 6, "We're working to fix the problem. Try again shortly."));
70
+ i0.ɵɵadvance(4);
71
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 8, "Contact us"));
72
+ i0.ɵɵadvance(2);
73
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "if you're still having problems"), ".");
60
74
  } }
61
- function CaseEditSubmitComponent_div_0_div_9_ul_5_li_1_Template(rf, ctx) { if (rf & 1) {
75
+ function CaseEditSubmitComponent_div_0_div_10_ul_6_li_1_Template(rf, ctx) { if (rf & 1) {
62
76
  i0.ɵɵelementStart(0, "li", 25);
63
77
  i0.ɵɵtext(1);
78
+ i0.ɵɵpipe(2, "rpxTranslate");
64
79
  i0.ɵɵelementEnd();
65
80
  } if (rf & 2) {
66
81
  const fieldError_r15 = ctx.$implicit;
67
82
  i0.ɵɵadvance(1);
68
- i0.ɵɵtextInterpolate(fieldError_r15.message);
83
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, fieldError_r15.message));
69
84
  } }
70
- function CaseEditSubmitComponent_div_0_div_9_ul_5_Template(rf, ctx) { if (rf & 1) {
85
+ function CaseEditSubmitComponent_div_0_div_10_ul_6_Template(rf, ctx) { if (rf & 1) {
71
86
  i0.ɵɵelementStart(0, "ul", 23);
72
- i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_div_9_ul_5_li_1_Template, 2, 1, "li", 24);
87
+ i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_div_10_ul_6_li_1_Template, 3, 3, "li", 24);
73
88
  i0.ɵɵelementEnd();
74
89
  } if (rf & 2) {
75
90
  const ctx_r13 = i0.ɵɵnextContext(3);
76
91
  i0.ɵɵadvance(1);
77
92
  i0.ɵɵproperty("ngForOf", ctx_r13.error.details.field_errors);
78
93
  } }
79
- function CaseEditSubmitComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {
94
+ function CaseEditSubmitComponent_div_0_div_10_Template(rf, ctx) { if (rf & 1) {
80
95
  i0.ɵɵelementStart(0, "div", 17);
81
96
  i0.ɵɵelementStart(1, "h3", 21);
82
- i0.ɵɵtext(2, " The event could not be created ");
97
+ i0.ɵɵtext(2);
98
+ i0.ɵɵpipe(3, "rpxTranslate");
83
99
  i0.ɵɵelementEnd();
84
- i0.ɵɵelementStart(3, "p");
85
- i0.ɵɵtext(4);
100
+ i0.ɵɵelementStart(4, "p");
101
+ i0.ɵɵtext(5);
86
102
  i0.ɵɵelementEnd();
87
- i0.ɵɵtemplate(5, CaseEditSubmitComponent_div_0_div_9_ul_5_Template, 2, 1, "ul", 22);
103
+ i0.ɵɵtemplate(6, CaseEditSubmitComponent_div_0_div_10_ul_6_Template, 2, 1, "ul", 22);
88
104
  i0.ɵɵelementEnd();
89
105
  } if (rf & 2) {
90
106
  const ctx_r8 = i0.ɵɵnextContext(2);
91
- i0.ɵɵadvance(4);
107
+ i0.ɵɵadvance(2);
108
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 3, "The event could not be created"), " ");
109
+ i0.ɵɵadvance(3);
92
110
  i0.ɵɵtextInterpolate(ctx_r8.error.message);
93
111
  i0.ɵɵadvance(1);
94
112
  i0.ɵɵproperty("ngIf", ctx_r8.error.details == null ? null : ctx_r8.error.details.field_errors);
95
113
  } }
96
- function CaseEditSubmitComponent_div_0_ng_container_12_span_3_Template(rf, ctx) { if (rf & 1) {
114
+ function CaseEditSubmitComponent_div_0_ng_container_13_span_4_Template(rf, ctx) { if (rf & 1) {
97
115
  i0.ɵɵelementStart(0, "span", 29);
98
- i0.ɵɵtext(1, "Check the information below carefully.");
116
+ i0.ɵɵtext(1);
117
+ i0.ɵɵpipe(2, "rpxTranslate");
99
118
  i0.ɵɵelementEnd();
119
+ } if (rf & 2) {
120
+ i0.ɵɵadvance(1);
121
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "Check the information below carefully."));
100
122
  } }
101
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_th_2_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelementStart(0, "th", 36);
123
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_th_2_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelementStart(0, "th", 34);
103
125
  i0.ɵɵelementStart(1, "span", 29);
104
126
  i0.ɵɵtext(2);
127
+ i0.ɵɵpipe(3, "rpxTranslate");
105
128
  i0.ɵɵelementEnd();
106
129
  i0.ɵɵelementEnd();
107
130
  } if (rf & 2) {
108
131
  const field_r21 = i0.ɵɵnextContext(2).$implicit;
109
132
  i0.ɵɵadvance(2);
110
- i0.ɵɵtextInterpolate(field_r21.label);
133
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, field_r21.label));
111
134
  } }
112
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_a_6_Template(rf, ctx) { if (rf & 1) {
113
- const _r28 = i0.ɵɵgetCurrentView();
135
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_ng_container_5_a_2_Template(rf, ctx) { if (rf & 1) {
136
+ const _r29 = i0.ɵɵgetCurrentView();
114
137
  i0.ɵɵelementStart(0, "a", 13);
115
- i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r28); const page_r18 = i0.ɵɵnextContext(4).$implicit; const ctx_r26 = i0.ɵɵnextContext(3); return ctx_r26.navigateToPage(page_r18.id); });
138
+ i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_ng_container_5_a_2_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r29); const page_r18 = i0.ɵɵnextContext(5).$implicit; const ctx_r27 = i0.ɵɵnextContext(3); return ctx_r27.navigateToPage(page_r18.id); });
116
139
  i0.ɵɵelementStart(1, "span", 29);
117
- i0.ɵɵtext(2, "Change");
140
+ i0.ɵɵpipe(2, "rpxTranslate");
141
+ i0.ɵɵpipe(3, "rpxTranslate");
142
+ i0.ɵɵtext(4);
143
+ i0.ɵɵpipe(5, "rpxTranslate");
118
144
  i0.ɵɵelementEnd();
119
145
  i0.ɵɵelementEnd();
120
146
  } if (rf & 2) {
121
- const field_r21 = i0.ɵɵnextContext(2).$implicit;
147
+ const field_r21 = i0.ɵɵnextContext(3).$implicit;
122
148
  i0.ɵɵadvance(1);
123
- i0.ɵɵattributeInterpolate1("aria-label", "Change ", field_r21.label, "");
149
+ i0.ɵɵattributeInterpolate2("aria-label", "", i0.ɵɵpipeBind1(2, 3, "Change"), " ", i0.ɵɵpipeBind1(3, 5, field_r21.label), "");
150
+ i0.ɵɵadvance(3);
151
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 7, "Change"), " ");
152
+ } }
153
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementContainerStart(0);
155
+ i0.ɵɵelementStart(1, "td", 35);
156
+ i0.ɵɵtemplate(2, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_ng_container_5_a_2_Template, 6, 9, "a", 36);
157
+ i0.ɵɵelementEnd();
158
+ i0.ɵɵelementContainerEnd();
159
+ } if (rf & 2) {
160
+ const field_r21 = i0.ɵɵnextContext(2).$implicit;
161
+ const ctx_r24 = i0.ɵɵnextContext(5);
162
+ i0.ɵɵadvance(2);
163
+ i0.ɵɵproperty("ngIf", ctx_r24.isChangeAllowed(field_r21));
124
164
  } }
125
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
165
+ const _c0 = function (a0) { return { "no-bottom-border": a0 }; };
166
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
126
167
  i0.ɵɵelementContainerStart(0);
127
168
  i0.ɵɵelementStart(1, "tr", 30);
128
- i0.ɵɵtemplate(2, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_th_2_Template, 3, 1, "th", 31);
169
+ i0.ɵɵtemplate(2, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_th_2_Template, 4, 3, "th", 31);
129
170
  i0.ɵɵelementStart(3, "td", 32);
130
171
  i0.ɵɵelement(4, "ccd-field-read", 33);
131
172
  i0.ɵɵelementEnd();
132
- i0.ɵɵelementStart(5, "td", 34);
133
- i0.ɵɵtemplate(6, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_a_6_Template, 3, 1, "a", 35);
134
- i0.ɵɵelementEnd();
173
+ i0.ɵɵtemplate(5, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_ng_container_5_Template, 3, 1, "ng-container", 0);
135
174
  i0.ɵɵelementEnd();
136
175
  i0.ɵɵelementContainerEnd();
137
176
  } if (rf & 2) {
@@ -140,17 +179,18 @@ function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_contain
140
179
  i0.ɵɵadvance(1);
141
180
  i0.ɵɵproperty("caseField", field_r21)("hidden", field_r21.hidden)("formGroup", ctx_r22.editForm.controls["data"])("contextFields", ctx_r22.contextFields);
142
181
  i0.ɵɵadvance(1);
143
- i0.ɵɵproperty("ngIf", !ctx_r22.isLabel(field_r21) && !ctx_r22.isCaseFlagSubmission);
182
+ i0.ɵɵproperty("ngIf", !ctx_r22.isLabel(field_r21) && !ctx_r22.caseFlagField);
144
183
  i0.ɵɵadvance(1);
184
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c0, ctx_r22.caseFlagField));
145
185
  i0.ɵɵattribute("colspan", ctx_r22.isLabel(field_r21) ? "2" : "1");
146
186
  i0.ɵɵadvance(1);
147
187
  i0.ɵɵproperty("formGroup", ctx_r22.editForm.controls["data"])("topLevelFormGroup", ctx_r22.editForm.controls["data"])("caseField", ctx_r22.summaryCaseField(field_r21))("context", ctx_r22.paletteContext)("caseFields", ctx_r22.contextFields);
148
- i0.ɵɵadvance(2);
149
- i0.ɵɵproperty("ngIf", ctx_r22.isChangeAllowed(field_r21));
188
+ i0.ɵɵadvance(1);
189
+ i0.ɵɵproperty("ngIf", !ctx_r22.caseFlagField);
150
190
  } }
151
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
191
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
152
192
  i0.ɵɵelementContainerStart(0);
153
- i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_ng_container_1_Template, 7, 12, "ng-container", 0);
193
+ i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_ng_container_1_Template, 6, 15, "ng-container", 0);
154
194
  i0.ɵɵelementContainerEnd();
155
195
  } if (rf & 2) {
156
196
  const field_r21 = ctx.$implicit;
@@ -158,10 +198,10 @@ function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_contain
158
198
  i0.ɵɵadvance(1);
159
199
  i0.ɵɵproperty("ngIf", ctx_r20.canShowFieldInCYA(field_r21));
160
200
  } }
161
- const _c0 = function (a0, a4) { return [a0, false, undefined, true, a4]; };
162
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
201
+ const _c1 = function (a0, a4) { return [a0, false, undefined, true, a4]; };
202
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_Template(rf, ctx) { if (rf & 1) {
163
203
  i0.ɵɵelementContainerStart(0);
164
- i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_ng_container_1_Template, 2, 1, "ng-container", 28);
204
+ i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_ng_container_1_Template, 2, 1, "ng-container", 28);
165
205
  i0.ɵɵpipe(2, "ccdCYAPageLabelFilter");
166
206
  i0.ɵɵpipe(3, "ccdReadFieldsFilter");
167
207
  i0.ɵɵpipe(4, "ccdPageFields");
@@ -170,11 +210,11 @@ function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_contain
170
210
  const page_r18 = i0.ɵɵnextContext().$implicit;
171
211
  const ctx_r19 = i0.ɵɵnextContext(3);
172
212
  i0.ɵɵadvance(1);
173
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBindV(3, 3, i0.ɵɵpureFunction2(12, _c0, i0.ɵɵpipeBind2(4, 9, page_r18, ctx_r19.editForm), ctx_r19.editForm.controls["data"]))));
213
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBindV(3, 3, i0.ɵɵpureFunction2(12, _c1, i0.ɵɵpipeBind2(4, 9, page_r18, ctx_r19.editForm), ctx_r19.editForm.controls["data"]))));
174
214
  } }
175
- function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
215
+ function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_Template(rf, ctx) { if (rf & 1) {
176
216
  i0.ɵɵelementContainerStart(0);
177
- i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_ng_container_1_Template, 5, 15, "ng-container", 0);
217
+ i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_ng_container_1_Template, 5, 15, "ng-container", 0);
178
218
  i0.ɵɵelementContainerEnd();
179
219
  } if (rf & 2) {
180
220
  const page_r18 = ctx.$implicit;
@@ -182,160 +222,177 @@ function CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_Template(r
182
222
  i0.ɵɵadvance(1);
183
223
  i0.ɵɵproperty("ngIf", ctx_r17.isShown(page_r18));
184
224
  } }
185
- function CaseEditSubmitComponent_div_0_ng_container_12_Template(rf, ctx) { if (rf & 1) {
225
+ function CaseEditSubmitComponent_div_0_ng_container_13_Template(rf, ctx) { if (rf & 1) {
186
226
  i0.ɵɵelementContainerStart(0);
187
227
  i0.ɵɵelementStart(1, "h2", 16);
188
228
  i0.ɵɵtext(2);
229
+ i0.ɵɵpipe(3, "rpxTranslate");
189
230
  i0.ɵɵelementEnd();
190
- i0.ɵɵtemplate(3, CaseEditSubmitComponent_div_0_ng_container_12_span_3_Template, 2, 0, "span", 26);
191
- i0.ɵɵelementStart(4, "table", 27);
192
- i0.ɵɵelementStart(5, "tbody");
193
- i0.ɵɵtemplate(6, CaseEditSubmitComponent_div_0_ng_container_12_ng_container_6_Template, 2, 1, "ng-container", 28);
231
+ i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_ng_container_13_span_4_Template, 3, 3, "span", 26);
232
+ i0.ɵɵelementStart(5, "table", 27);
233
+ i0.ɵɵpipe(6, "rpxTranslate");
234
+ i0.ɵɵelementStart(7, "tbody");
235
+ i0.ɵɵtemplate(8, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_8_Template, 2, 1, "ng-container", 28);
194
236
  i0.ɵɵelementEnd();
195
237
  i0.ɵɵelementEnd();
196
238
  i0.ɵɵelementContainerEnd();
197
239
  } if (rf & 2) {
198
240
  const ctx_r9 = i0.ɵɵnextContext(2);
199
241
  i0.ɵɵadvance(2);
200
- i0.ɵɵtextInterpolate(ctx_r9.pageTitle);
242
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, ctx_r9.pageTitle));
243
+ i0.ɵɵadvance(2);
244
+ i0.ɵɵproperty("ngIf", !ctx_r9.caseFlagField);
201
245
  i0.ɵɵadvance(1);
202
- i0.ɵɵproperty("ngIf", !ctx_r9.isCaseFlagSubmission);
246
+ i0.ɵɵattribute("aria-describedby", i0.ɵɵpipeBind1(6, 6, "check your answers table"));
203
247
  i0.ɵɵadvance(3);
204
248
  i0.ɵɵproperty("ngForOf", ctx_r9.wizard.pages);
205
249
  } }
206
- function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_tr_3_Template(rf, ctx) { if (rf & 1) {
250
+ function CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_tr_3_Template(rf, ctx) { if (rf & 1) {
207
251
  i0.ɵɵelementStart(0, "tr", 41);
208
252
  i0.ɵɵelementStart(1, "th", 42);
209
253
  i0.ɵɵtext(2);
254
+ i0.ɵɵpipe(3, "rpxTranslate");
210
255
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(3, "td", 43);
212
- i0.ɵɵelement(4, "ccd-field-read", 44);
256
+ i0.ɵɵelementStart(4, "td", 43);
257
+ i0.ɵɵelement(5, "ccd-field-read", 44);
213
258
  i0.ɵɵelementEnd();
214
259
  i0.ɵɵelementEnd();
215
260
  } if (rf & 2) {
216
- const field_r33 = i0.ɵɵnextContext().$implicit;
217
- const ctx_r34 = i0.ɵɵnextContext(3);
218
- i0.ɵɵproperty("caseField", field_r33)("formGroup", ctx_r34.editForm.controls["data"])("contextFields", ctx_r34.contextFields);
219
- i0.ɵɵadvance(2);
220
- i0.ɵɵtextInterpolate(field_r33.label);
261
+ const field_r35 = i0.ɵɵnextContext().$implicit;
262
+ const ctx_r36 = i0.ɵɵnextContext(3);
263
+ i0.ɵɵproperty("caseField", field_r35)("formGroup", ctx_r36.editForm.controls["data"])("contextFields", ctx_r36.contextFields);
221
264
  i0.ɵɵadvance(2);
222
- i0.ɵɵproperty("formGroup", ctx_r34.editForm.controls["data"])("caseField", ctx_r34.summaryCaseField(field_r33));
265
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, field_r35.label));
266
+ i0.ɵɵadvance(3);
267
+ i0.ɵɵproperty("formGroup", ctx_r36.editForm.controls["data"])("caseField", ctx_r36.summaryCaseField(field_r35));
223
268
  } }
224
- function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_tr_4_Template(rf, ctx) { if (rf & 1) {
269
+ function CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_tr_4_Template(rf, ctx) { if (rf & 1) {
225
270
  i0.ɵɵelementStart(0, "tr", 45);
226
271
  i0.ɵɵelementStart(1, "td", 46);
227
272
  i0.ɵɵelement(2, "ccd-field-read", 47);
228
273
  i0.ɵɵelementEnd();
229
274
  i0.ɵɵelementEnd();
230
275
  } if (rf & 2) {
231
- const field_r33 = i0.ɵɵnextContext().$implicit;
232
- const ctx_r35 = i0.ɵɵnextContext(3);
233
- i0.ɵɵproperty("caseField", field_r33)("formGroup", ctx_r35.editForm.controls["data"])("contextFields", ctx_r35.contextFields);
276
+ const field_r35 = i0.ɵɵnextContext().$implicit;
277
+ const ctx_r37 = i0.ɵɵnextContext(3);
278
+ i0.ɵɵproperty("caseField", field_r35)("formGroup", ctx_r37.editForm.controls["data"])("contextFields", ctx_r37.contextFields);
234
279
  i0.ɵɵadvance(2);
235
- i0.ɵɵproperty("formGroup", ctx_r35.editForm.controls["data"])("caseField", ctx_r35.summaryCaseField(field_r33))("caseFields", ctx_r35.contextFields);
280
+ i0.ɵɵproperty("formGroup", ctx_r37.editForm.controls["data"])("caseField", ctx_r37.summaryCaseField(field_r35))("caseFields", ctx_r37.contextFields);
236
281
  } }
237
- function CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_Template(rf, ctx) { if (rf & 1) {
282
+ function CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_Template(rf, ctx) { if (rf & 1) {
238
283
  i0.ɵɵelementContainerStart(0);
239
284
  i0.ɵɵelementContainerStart(1, 38);
240
285
  i0.ɵɵpipe(2, "ccdIsCompound");
241
- i0.ɵɵtemplate(3, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_tr_3_Template, 5, 6, "tr", 39);
242
- i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_tr_4_Template, 3, 6, "tr", 40);
286
+ i0.ɵɵtemplate(3, CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_tr_3_Template, 6, 8, "tr", 39);
287
+ i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_tr_4_Template, 3, 6, "tr", 40);
243
288
  i0.ɵɵelementContainerEnd();
244
289
  i0.ɵɵelementContainerEnd();
245
290
  } if (rf & 2) {
246
- const field_r33 = ctx.$implicit;
291
+ const field_r35 = ctx.$implicit;
247
292
  i0.ɵɵadvance(1);
248
- i0.ɵɵproperty("ngSwitch", !i0.ɵɵpipeBind1(2, 3, field_r33));
293
+ i0.ɵɵproperty("ngSwitch", !i0.ɵɵpipeBind1(2, 3, field_r35));
249
294
  i0.ɵɵadvance(2);
250
295
  i0.ɵɵproperty("ngSwitchCase", true);
251
296
  i0.ɵɵadvance(1);
252
297
  i0.ɵɵproperty("ngSwitchCase", false);
253
298
  } }
254
- function CaseEditSubmitComponent_div_0_ng_container_13_Template(rf, ctx) { if (rf & 1) {
299
+ function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) { if (rf & 1) {
255
300
  i0.ɵɵelementContainerStart(0);
256
301
  i0.ɵɵelementStart(1, "table", 37);
257
- i0.ɵɵelementStart(2, "tbody");
258
- i0.ɵɵtemplate(3, CaseEditSubmitComponent_div_0_ng_container_13_ng_container_3_Template, 5, 5, "ng-container", 28);
302
+ i0.ɵɵpipe(2, "rpxTranslate");
303
+ i0.ɵɵelementStart(3, "tbody");
304
+ i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_ng_container_14_ng_container_4_Template, 5, 5, "ng-container", 28);
259
305
  i0.ɵɵelementEnd();
260
306
  i0.ɵɵelementEnd();
261
307
  i0.ɵɵelementContainerEnd();
262
308
  } if (rf & 2) {
263
309
  const ctx_r10 = i0.ɵɵnextContext(2);
310
+ i0.ɵɵadvance(1);
311
+ i0.ɵɵattribute("aria-describedby", i0.ɵɵpipeBind1(2, 2, "summary fields table"));
264
312
  i0.ɵɵadvance(3);
265
313
  i0.ɵɵproperty("ngForOf", ctx_r10.showSummaryFields);
266
314
  } }
267
- function CaseEditSubmitComponent_div_0_ng_container_14_fieldset_1_Template(rf, ctx) { if (rf & 1) {
268
- i0.ɵɵelementStart(0, "fieldset", 49);
269
- i0.ɵɵelement(1, "legend", 50);
270
- i0.ɵɵelementStart(2, "div", 51);
271
- i0.ɵɵelementStart(3, "label", 52);
272
- i0.ɵɵtext(4, " Event summary (optional) ");
273
- i0.ɵɵelementStart(5, "span", 53);
274
- i0.ɵɵtext(6, "A few words describing the purpose of the event.");
315
+ function CaseEditSubmitComponent_div_0_ng_container_15_Template(rf, ctx) { if (rf & 1) {
316
+ i0.ɵɵelementContainerStart(0);
317
+ i0.ɵɵelementStart(1, "fieldset", 48);
318
+ i0.ɵɵelement(2, "legend", 49);
319
+ i0.ɵɵelementStart(3, "div", 50);
320
+ i0.ɵɵelementStart(4, "label", 51);
321
+ i0.ɵɵtext(5);
322
+ i0.ɵɵpipe(6, "rpxTranslate");
323
+ i0.ɵɵelementStart(7, "span", 52);
324
+ i0.ɵɵtext(8);
325
+ i0.ɵɵpipe(9, "rpxTranslate");
275
326
  i0.ɵɵelementEnd();
276
327
  i0.ɵɵelementEnd();
277
- i0.ɵɵelement(7, "input", 54);
328
+ i0.ɵɵelement(10, "input", 53);
278
329
  i0.ɵɵelementEnd();
279
- i0.ɵɵelementStart(8, "div", 51);
280
- i0.ɵɵelementStart(9, "label", 55);
281
- i0.ɵɵtext(10, "Event description (optional)");
330
+ i0.ɵɵelementStart(11, "div", 50);
331
+ i0.ɵɵelementStart(12, "label", 54);
332
+ i0.ɵɵtext(13);
333
+ i0.ɵɵpipe(14, "rpxTranslate");
334
+ i0.ɵɵelementEnd();
335
+ i0.ɵɵelementStart(15, "textarea", 55);
336
+ i0.ɵɵtext(16, " ");
282
337
  i0.ɵɵelementEnd();
283
- i0.ɵɵelement(11, "textarea", 56);
284
338
  i0.ɵɵelementEnd();
285
339
  i0.ɵɵelementEnd();
286
- } }
287
- function CaseEditSubmitComponent_div_0_ng_container_14_Template(rf, ctx) { if (rf & 1) {
288
- i0.ɵɵelementContainerStart(0);
289
- i0.ɵɵtemplate(1, CaseEditSubmitComponent_div_0_ng_container_14_fieldset_1_Template, 12, 0, "fieldset", 48);
290
340
  i0.ɵɵelementContainerEnd();
291
341
  } if (rf & 2) {
292
- const ctx_r11 = i0.ɵɵnextContext(2);
293
- i0.ɵɵadvance(1);
294
- i0.ɵɵproperty("ngIf", ctx_r11.profile && !ctx_r11.isSolicitor());
342
+ i0.ɵɵadvance(5);
343
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 3, "Event summary (optional)"), " ");
344
+ i0.ɵɵadvance(3);
345
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 5, "A few words describing the purpose of the event."));
346
+ i0.ɵɵadvance(5);
347
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 7, "Event description(optional)"));
295
348
  } }
296
349
  function CaseEditSubmitComponent_div_0_Template(rf, ctx) { if (rf & 1) {
297
- const _r40 = i0.ɵɵgetCurrentView();
350
+ const _r41 = i0.ɵɵgetCurrentView();
298
351
  i0.ɵɵelementStart(0, "div");
299
352
  i0.ɵɵelementStart(1, "h1", 2);
300
353
  i0.ɵɵtext(2);
354
+ i0.ɵɵpipe(3, "rpxTranslate");
301
355
  i0.ɵɵelementEnd();
302
- i0.ɵɵtemplate(3, CaseEditSubmitComponent_div_0_div_3_Template, 1, 0, "div", 3);
303
- i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_ng_template_4_Template, 2, 5, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
304
- i0.ɵɵtemplate(6, CaseEditSubmitComponent_div_0_ng_template_6_Template, 1, 1, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
305
- i0.ɵɵtemplate(8, CaseEditSubmitComponent_div_0_div_8_Template, 10, 0, "div", 6);
306
- i0.ɵɵtemplate(9, CaseEditSubmitComponent_div_0_div_9_Template, 6, 2, "div", 6);
307
- i0.ɵɵelementStart(10, "ccd-callback-errors", 7);
308
- i0.ɵɵlistener("callbackErrorsContext", function CaseEditSubmitComponent_div_0_Template_ccd_callback_errors_callbackErrorsContext_10_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.callbackErrorsNotify($event); });
356
+ i0.ɵɵtemplate(4, CaseEditSubmitComponent_div_0_div_4_Template, 1, 0, "div", 3);
357
+ i0.ɵɵtemplate(5, CaseEditSubmitComponent_div_0_ng_template_5_Template, 2, 5, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
358
+ i0.ɵɵtemplate(7, CaseEditSubmitComponent_div_0_ng_template_7_Template, 1, 1, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
359
+ i0.ɵɵtemplate(9, CaseEditSubmitComponent_div_0_div_9_Template, 14, 12, "div", 6);
360
+ i0.ɵɵtemplate(10, CaseEditSubmitComponent_div_0_div_10_Template, 7, 5, "div", 6);
361
+ i0.ɵɵelementStart(11, "ccd-callback-errors", 7);
362
+ i0.ɵɵlistener("callbackErrorsContext", function CaseEditSubmitComponent_div_0_Template_ccd_callback_errors_callbackErrorsContext_11_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.callbackErrorsNotify($event); });
309
363
  i0.ɵɵelementEnd();
310
- i0.ɵɵelementStart(11, "form", 8);
311
- i0.ɵɵlistener("submit", function CaseEditSubmitComponent_div_0_Template_form_submit_11_listener() { i0.ɵɵrestoreView(_r40); const ctx_r41 = i0.ɵɵnextContext(); return ctx_r41.submit(); });
312
- i0.ɵɵtemplate(12, CaseEditSubmitComponent_div_0_ng_container_12_Template, 7, 3, "ng-container", 0);
313
- i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_13_Template, 4, 1, "ng-container", 0);
314
- i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 2, 1, "ng-container", 0);
315
- i0.ɵɵelementStart(15, "div", 9);
316
- i0.ɵɵelementStart(16, "button", 10);
317
- i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r40); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.previous(); });
318
- i0.ɵɵtext(17, "Previous");
364
+ i0.ɵɵelementStart(12, "form", 8);
365
+ i0.ɵɵlistener("submit", function CaseEditSubmitComponent_div_0_Template_form_submit_12_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.submit(); });
366
+ i0.ɵɵtemplate(13, CaseEditSubmitComponent_div_0_ng_container_13_Template, 9, 8, "ng-container", 0);
367
+ i0.ɵɵtemplate(14, CaseEditSubmitComponent_div_0_ng_container_14_Template, 5, 4, "ng-container", 0);
368
+ i0.ɵɵtemplate(15, CaseEditSubmitComponent_div_0_ng_container_15_Template, 17, 9, "ng-container", 0);
369
+ i0.ɵɵelementStart(16, "div", 9);
370
+ i0.ɵɵelementStart(17, "button", 10);
371
+ i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r41); const ctx_r43 = i0.ɵɵnextContext(); return ctx_r43.previous(); });
372
+ i0.ɵɵtext(18);
373
+ i0.ɵɵpipe(19, "rpxTranslate");
319
374
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(18, "button", 11);
321
- i0.ɵɵtext(19);
375
+ i0.ɵɵelementStart(20, "button", 11);
376
+ i0.ɵɵtext(21);
377
+ i0.ɵɵpipe(22, "rpxTranslate");
322
378
  i0.ɵɵelementEnd();
323
379
  i0.ɵɵelementEnd();
324
- i0.ɵɵelementStart(20, "p", 12);
325
- i0.ɵɵelementStart(21, "a", 13);
326
- i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_a_click_21_listener() { i0.ɵɵrestoreView(_r40); const ctx_r43 = i0.ɵɵnextContext(); return ctx_r43.cancel(); });
327
- i0.ɵɵtext(22);
380
+ i0.ɵɵelementStart(23, "p", 12);
381
+ i0.ɵɵelementStart(24, "a", 13);
382
+ i0.ɵɵlistener("click", function CaseEditSubmitComponent_div_0_Template_a_click_24_listener() { i0.ɵɵrestoreView(_r41); const ctx_r44 = i0.ɵɵnextContext(); return ctx_r44.cancel(); });
383
+ i0.ɵɵtext(25);
384
+ i0.ɵɵpipe(26, "rpxTranslate");
328
385
  i0.ɵɵelementEnd();
329
386
  i0.ɵɵelementEnd();
330
387
  i0.ɵɵelementEnd();
331
388
  i0.ɵɵelementEnd();
332
389
  } if (rf & 2) {
333
- const _r3 = i0.ɵɵreference(5);
334
- const _r5 = i0.ɵɵreference(7);
390
+ const _r3 = i0.ɵɵreference(6);
391
+ const _r5 = i0.ɵɵreference(8);
335
392
  const ctx_r0 = i0.ɵɵnextContext();
336
393
  i0.ɵɵadvance(2);
337
- i0.ɵɵtextInterpolate(ctx_r0.eventTrigger.name);
338
- i0.ɵɵadvance(1);
394
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 18, ctx_r0.eventTrigger.name));
395
+ i0.ɵɵadvance(2);
339
396
  i0.ɵɵproperty("ngIf", ctx_r0.getCaseTitle())("ngIfThen", _r3)("ngIfElse", _r5);
340
397
  i0.ɵɵadvance(5);
341
398
  i0.ɵɵproperty("ngIf", ctx_r0.error && (!(ctx_r0.error.callbackErrors || ctx_r0.error.callbackWarnings || ctx_r0.error.details) && !ctx_r0.error.message));
@@ -353,19 +410,21 @@ function CaseEditSubmitComponent_div_0_Template(rf, ctx) { if (rf & 1) {
353
410
  i0.ɵɵproperty("ngIf", ctx_r0.showEventNotes());
354
411
  i0.ɵɵadvance(2);
355
412
  i0.ɵɵproperty("disabled", !ctx_r0.hasPrevious() || ctx_r0.isSubmitting);
413
+ i0.ɵɵadvance(1);
414
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 20, "Previous"), " ");
356
415
  i0.ɵɵadvance(2);
357
416
  i0.ɵɵproperty("disabled", ctx_r0.isDisabled);
358
417
  i0.ɵɵadvance(1);
359
- i0.ɵɵtextInterpolate(ctx_r0.triggerText);
360
- i0.ɵɵadvance(2);
418
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(22, 22, ctx_r0.triggerText), " ");
419
+ i0.ɵɵadvance(3);
361
420
  i0.ɵɵclassProp("disabled", ctx_r0.isSubmitting);
362
421
  i0.ɵɵadvance(1);
363
- i0.ɵɵtextInterpolate(ctx_r0.getCancelText());
422
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 24, ctx_r0.getCancelText()), " ");
364
423
  } }
365
424
  function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) { if (rf & 1) {
366
- const _r45 = i0.ɵɵgetCurrentView();
367
- i0.ɵɵelementStart(0, "ccd-case-event-completion", 57);
368
- i0.ɵɵlistener("eventCanBeCompleted", function CaseEditSubmitComponent_ccd_case_event_completion_1_Template_ccd_case_event_completion_eventCanBeCompleted_0_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(); return ctx_r44.onEventCanBeCompleted($event); });
425
+ const _r46 = i0.ɵɵgetCurrentView();
426
+ i0.ɵɵelementStart(0, "ccd-case-event-completion", 56);
427
+ i0.ɵɵlistener("eventCanBeCompleted", function CaseEditSubmitComponent_ccd_case_event_completion_1_Template_ccd_case_event_completion_eventCanBeCompleted_0_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(); return ctx_r45.onEventCanBeCompleted($event); });
369
428
  i0.ɵɵelementEnd();
370
429
  } if (rf & 2) {
371
430
  const ctx_r1 = i0.ɵɵnextContext();
@@ -389,7 +448,6 @@ export class CaseEditSubmitComponent {
389
448
  this.ignoreWarning = false;
390
449
  this.paletteContext = PaletteContext.CHECK_YOUR_ANSWER;
391
450
  this.eventCompletionChecksRequired = false;
392
- this.isCaseFlagSubmission = false;
393
451
  this.isLinkedCasesSubmission = false;
394
452
  }
395
453
  get isDisabled() {
@@ -400,6 +458,7 @@ export class CaseEditSubmitComponent {
400
458
  return this.isSubmitting || this.hasErrors;
401
459
  }
402
460
  ngOnInit() {
461
+ var _a, _b;
403
462
  this.profileSubscription = this.profileNotifier.profile.subscribe(_ => this.profile = _);
404
463
  this.eventTrigger = this.caseEdit.eventTrigger;
405
464
  this.triggerText = this.eventTrigger.end_button_label || CallbackErrorsComponent.TRIGGER_TEXT_SUBMIT;
@@ -410,8 +469,11 @@ export class CaseEditSubmitComponent {
410
469
  this.contextFields = this.getCaseFields();
411
470
  // Indicates if the submission is for a Case Flag, as opposed to a "regular" form submission, by the presence of
412
471
  // a FlagLauncher field in the event trigger
413
- this.isCaseFlagSubmission = this.eventTrigger.case_fields.some(caseField => FieldsUtils.isFlagLauncherCaseField(caseField));
414
- this.pageTitle = this.isCaseFlagSubmission ? 'Review flag details' : 'Check your answers';
472
+ this.caseFlagField = this.eventTrigger.case_fields.find(caseField => FieldsUtils.isFlagLauncherCaseField(caseField));
473
+ const isCaseFlagExternalMode = ((_a = this.caseFlagField) === null || _a === void 0 ? void 0 : _a.display_context_parameter) === '#ARGUMENT(UPDATE,EXTERNAL)' ||
474
+ ((_b = this.caseFlagField) === null || _b === void 0 ? void 0 : _b.display_context_parameter) === '#ARGUMENT(CREATE,EXTERNAL)';
475
+ this.pageTitle = this.caseFlagField ? (isCaseFlagExternalMode ? CaseEditSubmitTitles.REVIEW_SUPPORT_REQUEST : CaseEditSubmitTitles.REVIEW_FLAG_DETAILS)
476
+ : CaseEditSubmitTitles.CHECK_YOUR_ANSWERS;
415
477
  this.isLinkedCasesSubmission = this.eventTrigger.case_fields.some(caseField => FieldsUtils.isComponentLauncherCaseField(caseField));
416
478
  }
417
479
  ngOnDestroy() {
@@ -467,7 +529,7 @@ export class CaseEditSubmitComponent {
467
529
  this.formValueService.removeEmptyCollectionsWithMinValidation(caseEventData.data, this.eventTrigger.case_fields);
468
530
  // If this is a Case Flag submission (and thus a FlagLauncher field is present in the event trigger), the flag
469
531
  // details data needs populating for each Flags field, then the FlagLauncher field needs removing
470
- if (this.isCaseFlagSubmission) {
532
+ if (this.caseFlagField) {
471
533
  this.formValueService.populateFlagDetailsFromCaseFields(caseEventData.data, this.eventTrigger.case_fields);
472
534
  this.formValueService.removeFlagLauncherField(caseEventData.data, this.eventTrigger.case_fields);
473
535
  }
@@ -556,7 +618,7 @@ export class CaseEditSubmitComponent {
556
618
  if (caseField.field_type.type === 'Complex') {
557
619
  // Note: Deliberate use of equality (==) and non-equality (!=) operators for null checks throughout, to
558
620
  // handle both null and undefined values
559
- if (caseField.value != null) {
621
+ if (caseField.value !== null) {
560
622
  // Call this function recursively to replace the Complex field's sub-fields as necessary, passing the
561
623
  // CaseField itself (the sub-fields do not contain any values, so these need to be obtained from the
562
624
  // parent)
@@ -618,8 +680,8 @@ export class CaseEditSubmitComponent {
618
680
  this.caseEdit.navigateToPage(pageId);
619
681
  }
620
682
  callbackErrorsNotify(errorContext) {
621
- this.ignoreWarning = errorContext.ignore_warning;
622
- this.triggerText = errorContext.trigger_text;
683
+ this.ignoreWarning = errorContext.ignoreWarning;
684
+ this.triggerText = errorContext.triggerText;
623
685
  }
624
686
  summaryCaseField(field) {
625
687
  if (null === this.editForm.get('data').get(field.id)) {
@@ -670,7 +732,16 @@ export class CaseEditSubmitComponent {
670
732
  return this.eventTrigger.case_fields.some(field => field.show_summary_content_option >= 0);
671
733
  }
672
734
  showEventNotes() {
673
- return this.eventTrigger.show_event_notes !== false;
735
+ var _a;
736
+ // Display event notes related controls only if the following conditions are met
737
+ // 1. show_event_notes flag is set to true
738
+ // 2. profile is not a solicitor
739
+ // 3. is not a case flags journey, as it uses a custom check your answers component
740
+ if (this.eventTrigger.show_event_notes) {
741
+ return !((_a = this.profile) === null || _a === void 0 ? void 0 : _a.isSolicitor())
742
+ && !this.caseFlagField;
743
+ }
744
+ return false;
674
745
  }
675
746
  getLastPageShown() {
676
747
  let lastPage;
@@ -698,9 +769,6 @@ export class CaseEditSubmitComponent {
698
769
  canShowFieldInCYA(field) {
699
770
  return field.show_summary_change_option;
700
771
  }
701
- isSolicitor() {
702
- return this.profile.isSolicitor();
703
- }
704
772
  buildConfirmation(response) {
705
773
  if (response['after_submit_callback_response']) {
706
774
  return new Confirmation(response['id'], response['callback_response_status'], response['after_submit_callback_response']['confirmation_header'], response['after_submit_callback_response']['confirmation_body']);
@@ -751,14 +819,14 @@ CaseEditSubmitComponent.SHOW_SUMMARY_CONTENT_COMPARE_FUNCTION = (a, b) => {
751
819
  return a.show_summary_content_option - b.show_summary_content_option;
752
820
  };
753
821
  CaseEditSubmitComponent.ɵfac = function CaseEditSubmitComponent_Factory(t) { return new (t || CaseEditSubmitComponent)(i0.ɵɵdirectiveInject(i1.CaseEditComponent), i0.ɵɵdirectiveInject(i2.FormValueService), i0.ɵɵdirectiveInject(i2.FormErrorService), i0.ɵɵdirectiveInject(i2.FieldsUtils), i0.ɵɵdirectiveInject(i2.CaseFieldService), i0.ɵɵdirectiveInject(i3.ActivatedRoute), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i2.OrderService), i0.ɵɵdirectiveInject(i2.ProfileNotifier), i0.ɵɵdirectiveInject(i2.SessionStorageService), i0.ɵɵdirectiveInject(i4.CaseNotifier)); };
754
- CaseEditSubmitComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 2, vars: 2, consts: [[4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], ["class", "error-summary", "role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "callbackErrorsSubject", "callbackErrorsContext"], [1, "check-your-answers", 3, "formGroup", "submit"], [1, "form-group", "form-group-related"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h1", "error-summary-heading"], ["id", "edit-case-event_error-summary-body", 1, "govuk-error-summary__body"], ["href", "get-help", "target", "_blank"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], ["class", "text-16", 4, "ngIf"], ["aria-describedby", "check your answers table", 1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], [1, "valign-top", "case-field-label"], ["aria-describedby", "summary fields table", 1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event", 4, "ngIf"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50"], [3, "eventCompletionParams", "eventCanBeCompleted"]], template: function CaseEditSubmitComponent_Template(rf, ctx) { if (rf & 1) {
755
- i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_Template, 23, 17, "div", 0);
822
+ CaseEditSubmitComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 2, vars: 2, consts: [[4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], ["class", "error-summary", "role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "callbackErrorsSubject", "callbackErrorsContext"], [1, "check-your-answers", 3, "formGroup", "submit"], [1, "form-group", "form-group-related"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["role", "group", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h1", "error-summary-heading"], ["id", "edit-case-event_error-summary-body", 1, "govuk-error-summary__body"], ["href", "get-help", "target", "_blank"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], ["class", "text-16", 4, "ngIf"], [1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content", 3, "ngClass"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "case-field-label"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], [1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50"], [3, "eventCompletionParams", "eventCanBeCompleted"]], template: function CaseEditSubmitComponent_Template(rf, ctx) { if (rf & 1) {
823
+ i0.ɵɵtemplate(0, CaseEditSubmitComponent_div_0_Template, 27, 26, "div", 0);
756
824
  i0.ɵɵtemplate(1, CaseEditSubmitComponent_ccd_case_event_completion_1_Template, 1, 1, "ccd-case-event-completion", 1);
757
825
  } if (rf & 2) {
758
826
  i0.ɵɵproperty("ngIf", !ctx.eventCompletionChecksRequired);
759
827
  i0.ɵɵadvance(1);
760
828
  i0.ɵɵproperty("ngIf", ctx.eventCompletionChecksRequired);
761
- } }, styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:1px solid #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-bottom:0}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
829
+ } }, styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:1px solid #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-bottom:0}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.no-bottom-border[_ngcontent-%COMP%]{border-bottom:none}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
762
830
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditSubmitComponent, [{
763
831
  type: Component,
764
832
  args: [{
@@ -767,4 +835,4 @@ CaseEditSubmitComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditSubmitCom
767
835
  styleUrls: ['../case-edit.scss']
768
836
  }]
769
837
  }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.FormValueService }, { type: i2.FormErrorService }, { type: i2.FieldsUtils }, { type: i2.CaseFieldService }, { type: i3.ActivatedRoute }, { type: i3.Router }, { type: i2.OrderService }, { type: i2.ProfileNotifier }, { type: i2.SessionStorageService }, { type: i4.CaseNotifier }]; }, null); })();
770
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHN0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx1QkFBdUIsRUFBeUIsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLFdBQVcsQ0FBQztBQUU3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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhc2VFdmVudERhdGEsIENhc2VFdmVudFRyaWdnZXIsIENhc2VGaWVsZCwgSHR0cEVycm9yLCBQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHtcbiAgQ2FzZUZpZWxkU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIEZvcm1FcnJvclNlcnZpY2UsXG4gIEZvcm1WYWx1ZVNlcnZpY2UsXG4gIE9yZGVyU2VydmljZSxcbiAgUHJvZmlsZU5vdGlmaWVyLFxuICBTZXNzaW9uU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IFBhbGV0dGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vcGFsZXR0ZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb24sIFdpemFyZCwgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1zdWJtaXQnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jYXNlLWVkaXQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0U3VibWl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yOiBIdHRwRXJyb3I7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgc2hvd1N1bW1hcnlGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgcGFsZXR0ZUNvbnRleHQ6IFBhbGV0dGVDb250ZXh0ID0gUGFsZXR0ZUNvbnRleHQuQ0hFQ0tfWU9VUl9BTlNXRVI7XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHRhc2s6IFRhc2s7XG4gIHB1YmxpYyBldmVudENvbXBsZXRpb25QYXJhbXM6IEV2ZW50Q29tcGxldGlvblBhcmFtcztcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyBpc0Nhc2VGbGFnU3VibWlzc2lvbiA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0xpbmtlZENhc2VzU3VibWlzc2lvbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0hPV19TVU1NQVJZX0NPTlRFTlRfQ09NUEFSRV9GVU5DVElPTiA9IChhOiBDYXNlRmllbGQsIGI6IENhc2VGaWVsZCk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYUNhc2VGaWVsZCA9IGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID09PSAwIHx8IGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuICAgIGNvbnN0IGJDYXNlRmllbGQgPSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcblxuICAgIGlmICghYUNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuICFiQ2FzZUZpZWxkID8gMCA6IDE7XG4gICAgfVxuXG4gICAgaWYgKCFiQ2FzZUZpZWxkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiAtIGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEVVSS0zNDUyLlxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBlZGl0Rm9ybSBhcyBpdCBpcyByZWFkb25seS5cbiAgICAvLyBUaGlzIHdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIGhpZGRlbiBmaWVsZHMgdGhhdCBhcmVuJ3Qgd2FudGVkIGJ1dCBoYXZlXG4gICAgLy8gbm90IGJlZW4gZGlzYWJsZWQuXG4gICAgcmV0dXJuIHRoaXMuaXNTdWJtaXR0aW5nIHx8IHRoaXMuaGFzRXJyb3JzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdDogQ2FzZUVkaXRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtVmFsdWVTZXJ2aWNlOiBGb3JtVmFsdWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUVycm9yU2VydmljZTogRm9ybUVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpZWxkc1V0aWxzOiBGaWVsZHNVdGlscyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VOb3RpZmllcjogQ2FzZU5vdGlmaWVyLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24gPSB0aGlzLnByb2ZpbGVOb3RpZmllci5wcm9maWxlLnN1YnNjcmliZShfID0+IHRoaXMucHJvZmlsZSA9IF8pO1xuICAgIHRoaXMuZXZlbnRUcmlnZ2VyID0gdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXI7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IHRoaXMuZXZlbnRUcmlnZ2VyLmVuZF9idXR0b25fbGFiZWwgfHwgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQuVFJJR0dFUl9URVhUX1NVQk1JVDtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMud2l6YXJkID0gdGhpcy5jYXNlRWRpdC53aXphcmQ7XG4gICAgdGhpcy5zaG93U3VtbWFyeUZpZWxkcyA9IHRoaXMuc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY29udGV4dEZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgIC8vIEluZGljYXRlcyBpZiB0aGUgc3VibWlzc2lvbiBpcyBmb3IgYSBDYXNlIEZsYWcsIGFzIG9wcG9zZWQgdG8gYSBcInJlZ3VsYXJcIiBmb3JtIHN1Ym1pc3Npb24sIGJ5IHRoZSBwcmVzZW5jZSBvZlxuICAgIC8vIGEgRmxhZ0xhdW5jaGVyIGZpZWxkIGluIHRoZSBldmVudCB0cmlnZ2VyXG4gICAgdGhpcy5pc0Nhc2VGbGFnU3VibWlzc2lvbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoXG4gICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSk7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLmlzQ2FzZUZsYWdTdWJtaXNzaW9uID8gJ1JldmlldyBmbGFnIGRldGFpbHMnIDogJ0NoZWNrIHlvdXIgYW5zd2Vycyc7XG4gICAgdGhpcy5pc0xpbmtlZENhc2VzU3VibWlzc2lvbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoXG4gICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNDb21wb25lbnRMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcblxuICAgIC8vIFdlIGhhdmUgdG8gcnVuIHRoZSBldmVudCBjb21wbGV0aW9uIGNoZWNrcyBpZiB0YXNrIGluIHNlc3Npb24gc3RvcmFnZVxuICAgIC8vIGFuZCBpZiB0aGUgdGFzayBpcyBpbiBzZXNzaW9uIHN0b3JhZ2UsIHRoZW4gaXMgaXQgYXNzb2NpYXRlZCB0byB0aGUgY2FzZVxuICAgIGxldCB0YXNrSW5TZXNzaW9uU3RvcmFnZTogVGFzaztcbiAgICBjb25zdCB0YXNrU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndGFza1RvQ29tcGxldGUnKTtcbiAgICBpZiAodGFza1N0cikge1xuICAgICAgdGFza0luU2Vzc2lvblN0b3JhZ2UgPSBKU09OLnBhcnNlKHRhc2tTdHIpO1xuICAgIH1cblxuICAgIGlmICh0YXNrSW5TZXNzaW9uU3RvcmFnZSAmJiB0YXNrSW5TZXNzaW9uU3RvcmFnZS5jYXNlX2lkID09PSB0aGlzLmdldENhc2VJZCgpKSB7XG4gICAgICAvLyBTaG93IGV2ZW50IGNvbXBsZXRpb24gY29tcG9uZW50IHRvIHBlcmZvcm0gZXZlbnQgY29tcGxldGlvbiBjaGVja3NcbiAgICAgIHRoaXMuZXZlbnRDb21wbGV0aW9uUGFyYW1zID0ge1xuICAgICAgICBjYXNlSWQ6IHRoaXMuZ2V0Q2FzZUlkKCksXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZ2V0RXZlbnRJZCgpLFxuICAgICAgICB0YXNrOiB0YXNrSW5TZXNzaW9uU3RvcmFnZVxuICAgICAgfTtcbiAgICAgIHRoaXMuZXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUYXNrIG5vdCBpbiBzZXNzaW9uIHN0b3JhZ2UsIHByb2NlZWQgdG8gc3VibWl0XG4gICAgICBjb25zdCBjYXNlRXZlbnREYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuY2FzZVN1Ym1pdChjYXNlRXZlbnREYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnRDYW5CZUNvbXBsZXRlZCkge1xuICAgICAgLy8gU3VibWl0XG4gICAgICBjb25zdCBjYXNlRXZlbnREYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuY2FzZVN1Ym1pdChjYXNlRXZlbnREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmF2aWdhdGUgdG8gdGFza3MgdGFiIG9uIGNhc2UgZGV0YWlscyBwYWdlXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHt0aGlzLmdldENhc2VJZCgpfS90YXNrc2BdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhc2VFdmVudERhdGEoKTogQ2FzZUV2ZW50RGF0YSB7XG4gICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHtcbiAgICAgIGRhdGE6IHRoaXMucmVwbGFjZUVtcHR5Q29tcGxleEZpZWxkVmFsdWVzKFxuICAgICAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UoXG4gICAgICAgICAgdGhpcy5yZXBsYWNlSGlkZGVuRm9ybVZhbHVlc1dpdGhPcmlnaW5hbENhc2VEYXRhKFxuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKSBhcyBGb3JtR3JvdXAsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSkpLFxuICAgICAgZXZlbnQ6IHRoaXMuZWRpdEZvcm0udmFsdWUuZXZlbnRcbiAgICB9IGFzIENhc2VFdmVudERhdGE7XG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLmNsZWFyTm9uQ2FzZUZpZWxkcyhjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlTnVsbExhYmVscyhjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlRW1wdHlEb2N1bWVudHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgLy8gUmVtb3ZlIGNvbGxlY3Rpb24gZmllbGRzIHRoYXQgaGF2ZSBcIm1pblwiIHZhbGlkYXRpb24gb2YgZ3JlYXRlciB0aGFuIHplcm8gc2V0IG9uIHRoZSBGaWVsZFR5cGUgYnV0IGFyZSBlbXB0eTtcbiAgICAvLyB0aGVzZSB3aWxsIGZhaWwgdmFsaWRhdGlvblxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVFbXB0eUNvbGxlY3Rpb25zV2l0aE1pblZhbGlkYXRpb24oY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgLy8gSWYgdGhpcyBpcyBhIENhc2UgRmxhZyBzdWJtaXNzaW9uIChhbmQgdGh1cyBhIEZsYWdMYXVuY2hlciBmaWVsZCBpcyBwcmVzZW50IGluIHRoZSBldmVudCB0cmlnZ2VyKSwgdGhlIGZsYWdcbiAgICAvLyBkZXRhaWxzIGRhdGEgbmVlZHMgcG9wdWxhdGluZyBmb3IgZWFjaCBGbGFncyBmaWVsZCwgdGhlbiB0aGUgRmxhZ0xhdW5jaGVyIGZpZWxkIG5lZWRzIHJlbW92aW5nXG4gICAgaWYgKHRoaXMuaXNDYXNlRmxhZ1N1Ym1pc3Npb24pIHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5wb3B1bGF0ZUZsYWdEZXRhaWxzRnJvbUNhc2VGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlRmxhZ0xhdW5jaGVyRmllbGQoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uKSB7XG4gICAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucG9wdWxhdGVMaW5rZWRDYXNlc0RldGFpbHNGcm9tQ2FzZUZpZWxkcyhjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVDb21wb25lbnRMYXVuY2hlckZpZWxkKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIH1cbiAgICBjYXNlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgY2FzZUV2ZW50RGF0YS5pZ25vcmVfd2FybmluZyA9IHRoaXMuaWdub3JlV2FybmluZztcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jb25maXJtYXRpb24pIHtcbiAgICAgIGNhc2VFdmVudERhdGEuZGF0YSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBjYXNlRXZlbnREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXNlU3VibWl0KGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdChjYXNlRXZlbnREYXRhKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCdldmVudFVybCcpO1xuICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uID0gdGhpcy5idWlsZENvbmZpcm1hdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgaWYgKGNvbmZpcm1hdGlvbiAmJiAoY29uZmlybWF0aW9uLmdldEhlYWRlcigpIHx8IGNvbmZpcm1hdGlvbi5nZXRCb2R5KCkpKSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0LmNvbmZpcm0oY29uZmlybWF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5zdWJtaXR0ZWQuZW1pdCh7Y2FzZUlkOiByZXNwb25zZVsnaWQnXSwgc3RhdHVzOiB0aGlzLmdldFN0YXR1cyhyZXNwb25zZSl9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dCh0aGlzLmVycm9yKTtcbiAgICAgICAgICBpZiAodGhpcy5lcnJvci5kZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1FcnJvclNlcnZpY2VcbiAgICAgICAgICAgICAgLm1hcEZpZWxkRXJyb3JzKHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXSBhcyBGb3JtR3JvdXAsICd2YWxpZGF0aW9uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2UgKmFsbCogdmFsdWVzIG9mIGEge0BsaW5rIEZvcm1Hcm91cH0sIGluY2x1ZGluZyB0aG9zZSBmb3IgZGlzYWJsZWQgZmllbGRzIChpLmUuIGhpZGRlbiBvbmVzKSwgcmVwbGFjaW5nIHRoZVxuICAgKiB2YWx1ZSBvZiBhbnkgdGhhdCBhcmUgaGlkZGVuIEFORCBoYXZlIGByZXRhaW5faGlkZGVuX3ZhbHVlYCBzZXQgdG8gYHRydWVgIGluIHRoZSBjb3JyZXNwb25kaW5nIGBDYXNlRmllbGRgLCB3aXRoXG4gICAqIHRoZSAqb3JpZ2luYWwqIHZhbHVlIGhlbGQgaW4gdGhlIGBDYXNlRmllbGRgIG9iamVjdC5cbiAgICpcbiAgICogVGhpcyBpcyBhcyBwZXIgZGVzaWduIGluIEVVSS0zNjIyLCB3aGVyZSBhbnkgdXNlci1kcml2ZW4gdXBkYXRlcyB0byBoaWRkZW4gZmllbGRzIHdpdGggYHJldGFpbl9oaWRkZW5fdmFsdWVgID1cbiAgICogYHRydWVgIGFyZSBpZ25vcmVkICh0aHVzIHJldGFpbmluZyB0aGUgdmFsdWUgZGlzcGxheWVkIG9yaWdpbmFsbHkpLlxuICAgKlxuICAgKiAqIEZvciBDb21wbGV4IGZpZWxkIHR5cGVzLCB0aGUgcmVwbGFjZW1lbnQgYWJvdmUgaXMgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5IGZvciBhbGwgaGlkZGVuIHN1Yi1maWVsZHMgd2l0aFxuICAgKiBgcmV0YWluX2hpZGRlbl92YWx1ZWAgPSBgdHJ1ZWAuXG4gICAqXG4gICAqICogRm9yIENvbGxlY3Rpb24gZmllbGQgdHlwZXMsIGluY2x1ZGluZyBjb2xsZWN0aW9ucyBvZiBDb21wbGV4IGFuZCBEb2N1bWVudCBmaWVsZCB0eXBlcywgdGhlIHJlcGxhY2VtZW50IGlzXG4gICAqIHBlcmZvcm1lZCBmb3IgYWxsIGZpZWxkcyBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGZvcm1Hcm91cCBUaGUgYEZvcm1Hcm91cGAgaW5zdGFuY2Ugd2hvc2UgcmF3IHZhbHVlcyBhcmUgdG8gYmUgdHJhdmVyc2VkXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBhcnJheSBvZiB7QGxpbmsgQ2FzZUZpZWxkfSBkb21haW4gbW9kZWwgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIGZpZWxkcyBpbiBgZm9ybUdyb3VwYFxuICAgKiBAcGFyYW0gcGFyZW50RmllbGQgUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgYENhc2VGaWVsZGAuIFVzZWQgZm9yIHJldHJpZXZpbmcgdGhlIHN1Yi1maWVsZCB2YWx1ZXMgb2YgYSBDb21wbGV4IGZpZWxkXG4gICAqIHRvIHBlcmZvcm0gcmVjdXJzaXZlIHJlcGxhY2VtZW50IC0gdGhlIHN1Yi1maWVsZCBgQ2FzZUZpZWxkYHMgdGhlbXNlbHZlcyBkbyAqbm90KiBjb250YWluIGFueSB2YWx1ZXNcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlICpyYXcqIGZvcm0gdmFsdWUgZGF0YSAoYXMga2V5LXZhbHVlIHBhaXJzKSwgd2l0aCBhbnkgdmFsdWUgcmVwbGFjZW1lbnRzIGFzIG5lY2Vzc2FyeVxuICAgKi9cbiAgcHJpdmF0ZSByZXBsYWNlSGlkZGVuRm9ybVZhbHVlc1dpdGhPcmlnaW5hbENhc2VEYXRhKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgcGFyZW50RmllbGQ/OiBDYXNlRmllbGQpOiBvYmplY3Qge1xuICAgIC8vIEdldCB0aGUgcmF3IGZvcm0gdmFsdWUgZGF0YSwgd2hpY2ggaW5jbHVkZXMgdGhlIHZhbHVlcyBvZiBhbnkgZGlzYWJsZWQgY29udHJvbHMsIGFzIGtleS12YWx1ZSBwYWlyc1xuICAgIGNvbnN0IHJhd0Zvcm1WYWx1ZURhdGEgPSBmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcblxuICAgIC8vIFBsYWNlIGFsbCBjYXNlIGZpZWxkcyBpbiBhIGxvb2t1cCBvYmplY3QsIHNvIHRoZXkgY2FuIGJlIHJldHJpZXZlZCBieSBpZFxuICAgIGNvbnN0IGNhc2VGaWVsZHNMb29rdXAgPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2FzZUZpZWxkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FzZUZpZWxkc0xvb2t1cFtjYXNlRmllbGRzW2ldLmlkXSA9IGNhc2VGaWVsZHNbaV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZSBhbnkgZm9ybSB2YWx1ZSB3aXRoIHRoZSBvcmlnaW5hbCwgd2hlcmUgaXRzIENhc2VGaWVsZCBpcyBoaWRkZW4gQU5EIGhhcyB0aGUgcmV0YWluX2hpZGRlbl92YWx1ZSBmbGFnIHNldFxuICAgICAqIHRvIHRydWUuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgQ2FzZUZpZWxkJ3MgYGhpZGRlbmAgYXR0cmlidXRlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVuIGNoZWNrIHRoaXMgYXR0cmlidXRlIGluIHRoZSBwYXJlbnQgQ2FzZUZpZWxkIChpZlxuICAgICAqIG9uZSBleGlzdHMpLiBUaGlzIGlzIG9jY3VycmluZyAoYW5kIGlzIHBvc3NpYmx5IGEgYnVnKSB3aGVuIGEgQ2FzZUZpZWxkIGlzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCB0eXBlLCBvciBhblxuICAgICAqIGl0ZW0gaW4gYSBDb2xsZWN0aW9uIHR5cGUuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgZmllbGQgaXMgYSBDb21wbGV4IHR5cGUgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgcGVyZm9ybSBhIHJlY3Vyc2l2ZSByZXBsYWNlbWVudCBmb3IgYWxsIChoaWRkZW4pXG4gICAgICogc3ViLWZpZWxkcyB3aXRoIHJldGFpbl9oaWRkZW5fdmFsdWUgPSB0cnVlLCB1c2luZyB0aGVpciBvcmlnaW5hbCBDYXNlRmllbGQgdmFsdWVzIChmcm9tIHRoZSBgZm9ybWF0dGVkX3ZhbHVlYFxuICAgICAqIGF0dHJpYnV0ZSkuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgZmllbGQgaXMgYSBDb2xsZWN0aW9uIHR5cGUgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgdGhlIGVudGlyZSBjb2xsZWN0aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlXG4gICAgICogb3JpZ2luYWwgZnJvbSBgZm9ybWF0dGVkX3ZhbHVlYC4gVGhpcyBhcHBsaWVzIHRvICphbGwqIHR5cGVzIG9mIENvbGxlY3Rpb25zLlxuICAgICAqL1xuICAgIE9iamVjdC5rZXlzKHJhd0Zvcm1WYWx1ZURhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSBjYXNlRmllbGRzTG9va3VwW2tleV07XG4gICAgICAvLyBJZiBjYXNlRmllbGQuaGlkZGVuIGlzIE5PVCB0cnV0aHkgYW5kIGFsc28gTk9UIGVxdWFsIHRvIGZhbHNlLCB0aGVuIGl0IG11c3QgYmUgbnVsbC91bmRlZmluZWQgKHJlbWVtYmVyIHRoYXRcbiAgICAgIC8vIGJvdGggbnVsbCBhbmQgdW5kZWZpbmVkIGFyZSBlcXVhbCB0byAqbmVpdGhlciBmYWxzZSBub3IgdHJ1ZSopXG4gICAgICBpZiAoY2FzZUZpZWxkICYmIGNhc2VGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlICYmXG4gICAgICAgIChjYXNlRmllbGQuaGlkZGVuIHx8IChjYXNlRmllbGQuaGlkZGVuICE9PSBmYWxzZSAmJiBwYXJlbnRGaWVsZCAmJiBwYXJlbnRGaWVsZC5oaWRkZW4pKSkge1xuICAgICAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgLy8gTm90ZTogRGVsaWJlcmF0ZSB1c2Ugb2YgZXF1YWxpdHkgKD09KSBhbmQgbm9uLWVxdWFsaXR5ICghPSkgb3BlcmF0b3JzIGZvciBudWxsIGNoZWNrcyB0aHJvdWdob3V0LCB0b1xuICAgICAgICAgIC8vIGhhbmRsZSBib3RoIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXNcbiAgICAgICAgICBpZiAoY2FzZUZpZWxkLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIENhbGwgdGhpcyBmdW5jdGlvbiByZWN1cnNpdmVseSB0byByZXBsYWNlIHRoZSBDb21wbGV4IGZpZWxkJ3Mgc3ViLWZpZWxkcyBhcyBuZWNlc3NhcnksIHBhc3NpbmcgdGhlXG4gICAgICAgICAgICAvLyBDYXNlRmllbGQgaXRzZWxmICh0aGUgc3ViLWZpZWxkcyBkbyBub3QgY29udGFpbiBhbnkgdmFsdWVzLCBzbyB0aGVzZSBuZWVkIHRvIGJlIG9idGFpbmVkIGZyb20gdGhlXG4gICAgICAgICAgICAvLyBwYXJlbnQpXG4gICAgICAgICAgICAvLyBVcGRhdGUgcmF3Rm9ybVZhbHVlRGF0YSBmb3IgdGhpcyBmaWVsZFxuICAgICAgICAgICAgLy8gY3JlYXRpbmcgZm9ybSBncm91cCBhbmQgYWRkaW5nIGNvbnRyb2wgaW50byBpdCBpbiBjYXNlIGNhc2VGaWVsZCBpcyBvZiBjb21wbGV4dCB0eXBlIGFuZCBhbmQgcGFydCBvZiBmb3JtR3JvdXBcbiAgICAgICAgICAgIGNvbnN0IGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9sc1trZXldLnZhbHVlKSB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9sc1trZXldLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybS5hZGRDb250cm9sKGl0ZW0sIG5ldyBGb3JtQ29udHJvbChmb3JtR3JvdXAuY29udHJvbHNba2V5XS52YWx1ZVtpdGVtXSkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJhd0Zvcm1WYWx1ZURhdGFba2V5XSA9IHRoaXMucmVwbGFjZUhpZGRlbkZvcm1WYWx1ZXNXaXRoT3JpZ2luYWxDYXNlRGF0YShcbiAgICAgICAgICAgICAgZm9ybSwgY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNhc2VGaWVsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIERlZmF1bHQgY2FzZSBhbHNvIGhhbmRsZXMgY29sbGVjdGlvbnMgb2YgKmFsbCogdHlwZXM7IHRoZSBlbnRpcmUgY29sbGVjdGlvbiBpbiByYXdGb3JtVmFsdWVEYXRhIHdpbGwgYmVcbiAgICAgICAgICAvLyByZXBsYWNlZCB3aXRoIHRoZSBvcmlnaW5hbCBmcm9tIGZvcm1hdHRlZF92YWx1ZVxuICAgICAgICAgIC8vIFVzZSB0aGUgQ2FzZUZpZWxkJ3MgZXhpc3RpbmcgKmZvcm1hdHRlZF92YWx1ZSogZnJvbSB0aGUgcGFyZW50LCBpZiBhdmFpbGFibGUuIChUaGlzIGlzIG5lY2Vzc2FyeSBmb3JcbiAgICAgICAgICAvLyBDb21wbGV4IGZpZWxkcywgd2hvc2Ugc3ViLWZpZWxkcyBkbyBub3QgaG9sZCBhbnkgdmFsdWVzIGluIHRoZSBtb2RlbC4pIE90aGVyd2lzZSwgdXNlIGZvcm1hdHRlZF92YWx1ZVxuICAgICAgICAgIC8vIGZyb20gdGhlIENhc2VGaWVsZCBpdHNlbGYuXG4gICAgICAgICAgaWYgKHBhcmVudEZpZWxkICYmIHBhcmVudEZpZWxkLmZvcm1hdHRlZF92YWx1ZSkge1xuICAgICAgICAgICAgcmF3Rm9ybVZhbHVlRGF0YVtrZXldID0gcGFyZW50RmllbGQuZm9ybWF0dGVkX3ZhbHVlW2Nhc2VGaWVsZC5pZF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJhd0Zvcm1WYWx1ZURhdGFba2V5XSA9IGNhc2VGaWVsZC5mb3JtYXR0ZWRfdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmF3Rm9ybVZhbHVlRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBub24tYXJyYXkgdmFsdWUgb2JqZWN0cyB3aXRoIGBudWxsYCBmb3IgYW55IENvbXBsZXgtdHlwZSBmaWVsZHMgd2hvc2UgdmFsdWUgaXMgZWZmZWN0aXZlbHkgZW1wdHksIGkuZS5cbiAgICogYWxsIGl0cyBzdWItZmllbGRzIGFuZCBkZXNjZW5kYW50cyBhcmUgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgb2JqZWN0IHRyZWUgcmVwcmVzZW50aW5nIGFsbCB0aGUgZm9ybSBmaWVsZCBkYXRhXG4gICAqIEByZXR1cm5zIFRoZSBmb3JtIGZpZWxkIGRhdGEgbW9kaWZpZWQgYWNjb3JkaW5nbHlcbiAgICovXG4gIHByaXZhdGUgcmVwbGFjZUVtcHR5Q29tcGxleEZpZWxkVmFsdWVzKGRhdGE6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YVtrZXldKSAmJiB0eXBlb2YgZGF0YVtrZXldID09PSAnb2JqZWN0JyAmJiAhRmllbGRzVXRpbHMuY29udGFpbnNOb25FbXB0eVZhbHVlcyhkYXRhW2tleV0pKSB7XG4gICAgICAgIGRhdGFba2V5XSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdHVzKHJlc3BvbnNlOiBvYmplY3QpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmhhc0NhbGxiYWNrRmFpbGVkKHJlc3BvbnNlKSA/IHJlc3BvbnNlWydjYWxsYmFja19yZXNwb25zZV9zdGF0dXMnXSA6IHJlc3BvbnNlWydkZWxldGVfZHJhZnRfcmVzcG9uc2Vfc3RhdHVzJ107XG4gIH1cblxuICBwcml2YXRlIGhhc0NhbGxiYWNrRmFpbGVkKHJlc3BvbnNlOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVzcG9uc2VbJ2NhbGxiYWNrX3Jlc3BvbnNlX3N0YXR1cyddICE9PSAnQ0FMTEJBQ0tfQ09NUExFVEVEJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclxuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9yc1xuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9ycy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1BhZ2UocGFnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm5hdmlnYXRlVG9QYWdlKHBhZ2VJZCk7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoZXJyb3JDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBlcnJvckNvbnRleHQuaWdub3JlX3dhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGVycm9yQ29udGV4dC50cmlnZ2VyX3RleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICBpZiAobnVsbCA9PT0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpKSB7XG4gICAgICAvLyBJZiBub3QgaW4gZm9ybSwgcmV0dXJuIGZpZWxkIGl0c2VsZlxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIGNvbnN0IGNsb25lRmllbGQ6IENhc2VGaWVsZCA9IHRoaXMuZmllbGRzVXRpbHMuY2xvbmVDYXNlRmllbGQoZmllbGQpO1xuICAgIGNsb25lRmllbGQudmFsdWUgPSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkudmFsdWU7XG5cbiAgICByZXR1cm4gY2xvbmVGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHtzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7c3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuTkVXX0ZPUk1fRElTQ0FSRH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50VHJpZ2dlci5zaG93X3N1bW1hcnkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy53aXphcmQucGFnZXMpIHtcbiAgICAgIGlmICh0aGlzLmlzU2hvd24ocGFnZSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwYWdlLmNhc2VfZmllbGRzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpKSB7XG4gICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoZmllbGQgPT4gZmllbGQuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID49IDAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXZlbnROb3RlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuc2hvd19ldmVudF9ub3RlcyAhPT0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RQYWdlU2hvd24oKTogV2l6YXJkUGFnZSB7XG4gICAgbGV0IGxhc3RQYWdlOiBXaXphcmRQYWdlO1xuICAgIHRoaXMud2l6YXJkLnJldmVyc2UoKS5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgaWYgKCFsYXN0UGFnZSAmJiB0aGlzLmlzU2hvd24ocGFnZSkpIHtcbiAgICAgICAgbGFzdFBhZ2UgPSBwYWdlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEFzc2lnbm1lbnRcbiAgICByZXR1cm4gbGFzdFBhZ2U7XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMoKSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFnZSh0aGlzLmdldExhc3RQYWdlU2hvd24oKS5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpO1xuICB9XG5cbiAgcHVibGljIGlzU2hvd24ocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzVXRpbHNcbiAgICAgIC5tZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuICAgIHJldHVybiBwYWdlLnBhcnNlZFNob3dDb25kaXRpb24ubWF0Y2goZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5TaG93RmllbGRJbkNZQShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLnNob3dfc3VtbWFyeV9jaGFuZ2Vfb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIGlzU29saWNpdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUuaXNTb2xpY2l0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb25maXJtYXRpb24ocmVzcG9uc2U6IG9iamVjdCk6IENvbmZpcm1hdGlvbiB7XG4gICAgaWYgKHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXSkge1xuICAgICAgcmV0dXJuIG5ldyBDb25maXJtYXRpb24oXG4gICAgICAgIHJlc3BvbnNlWydpZCddLFxuICAgICAgICByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10sXG4gICAgICAgIHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXVsnY29uZmlybWF0aW9uX2hlYWRlciddLFxuICAgICAgICByZXNwb25zZVsnYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlJ11bJ2NvbmZpcm1hdGlvbl9ib2R5J11cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KGZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJTZXJ2aWNlXG4gICAgICAuc29ydChmaWVsZHMsIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LlNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04pXG4gICAgICAuZmlsdGVyKGNmID0+IGNmLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzID8gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkIDogJycpO1xuICB9XG5cbiAgcHVibGljIGdldEV2ZW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0Rm9ybS52YWx1ZS5ldmVudC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgJiYgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZSAmJlxuICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICByZXR1cm4gJ1JldHVybiB0byBjYXNlIGxpc3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0NhbmNlbCc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCI+XG4gIDwhLS0gRXZlbnQgdHJpZ2dlciBuYW1lIC0tPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57eyBldmVudFRyaWdnZXIubmFtZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmICghKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscykgJiYgIWVycm9yLm1lc3NhZ2UpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAgU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgICA8cD5XZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuPC9wPlxuICAgICAgPHA+PGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q29udGFjdCB1czwvYT4gaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy48L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIEV2ZW50IGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgKGVycm9yLmRldGFpbHMgfHwgZXJyb3IubWVzc2FnZSlcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxoMyBjbGFzcz1cImhlYWRpbmctaDMgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICBUaGUgZXZlbnQgY291bGQgbm90IGJlIGNyZWF0ZWRcbiAgICA8L2gzPlxuICAgIDxwPnt7ZXJyb3IubWVzc2FnZX19PC9wPlxuICAgIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImNjZC1lcnJvci1zdW1tYXJ5LWxpXCI+e3tmaWVsZEVycm9yLm1lc3NhZ2V9fTwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+e3twYWdlVGl0bGV9fTwvaDI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiAqbmdJZj1cIiFpc0Nhc2VGbGFnU3VibWlzc2lvblwiPkNoZWNrIHRoZSBpbmZvcm1hdGlvbiBiZWxvdyBjYXJlZnVsbHkuPC9zcGFuPlxuXG4gICAgICA8dGFibGUgY2xhc3M9XCJmb3JtLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNoZWNrIHlvdXIgYW5zd2VycyB0YWJsZVwiPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2Ygd2l6YXJkLnBhZ2VzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2hvd24ocGFnZSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHBhZ2VcbiAgICAgICAgICAgIHwgY2NkUGFnZUZpZWxkczogZWRpdEZvcm1cbiAgICAgICAgICAgIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjogZmFsc2UgOnVuZGVmaW5lZCA6dHJ1ZSA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cbiAgICAgICAgICAgIHwgY2NkQ1lBUGFnZUxhYmVsRmlsdGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5TaG93RmllbGRJbkNZQShmaWVsZClcIj5cbiAgICAgICAgICAgICAgICA8dHIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY29udGV4dEZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNMYWJlbChmaWVsZCkgJiYgIWlzQ2FzZUZsYWdTdWJtaXNzaW9uXCIgY2xhc3M9XCJ2YWxpZ24tdG9wIGNhc2UtZmllbGQtbGFiZWxcIj48c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e2ZpZWxkLmxhYmVsfX08L3NwYW4+PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbCBjYXNlLWZpZWxkLWNvbnRlbnRcIiBbYXR0ci5jb2xzcGFuXT1cImlzTGFiZWwoZmllbGQpID8gJzInIDogJzEnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2NvbnRleHRdPVwicGFsZXR0ZUNvbnRleHRcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ2YWxpZ24tdG9wIGNoZWNrLXlvdXItYW5zd2Vyc19fY2hhbmdlIGNhc2UtZmllbGQtY2hhbmdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiaXNDaGFuZ2VBbGxvd2VkKGZpZWxkKVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZShwYWdlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiIGF0dHIuYXJpYS1sYWJlbD1cIkNoYW5nZSB7eyBmaWVsZC5sYWJlbCB9fVwiPkNoYW5nZTwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZE9ubHlTdW1tYXJ5RmllbGRzVG9EaXNwbGF5RXhpc3RzKClcIj5cblxuICAgICAgPHRhYmxlIGNsYXNzPVwic3VtbWFyeS1maWVsZHNcIiBhcmlhLWRlc2NyaWJlZGJ5PVwic3VtbWFyeSBmaWVsZHMgdGFibGVcIj5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNob3dTdW1tYXJ5RmllbGRzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCBpZD1cInN1bW1hcnktZmllbGQtbGFiZWxcIj57e2ZpZWxkLmxhYmVsfX08L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjYXNlRmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0V2ZW50Tm90ZXMoKVwiPlxuICAgICAgPGZpZWxkc2V0IGlkPVwiZmllbGRzZXQtZXZlbnRcIiBmb3JtR3JvdXBOYW1lPVwiZXZlbnRcIiAqbmdJZj1cInByb2ZpbGUgJiYgIWlzU29saWNpdG9yKClcIj5cbiAgICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItc3VtbWFyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxuICAgICAgICAgICAgRXZlbnQgc3VtbWFyeSAob3B0aW9uYWwpXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiPkEgZmV3IHdvcmRzIGRlc2NyaWJpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGV2ZW50Ljwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCIgZm9ybUNvbnRyb2xOYW1lPVwic3VtbWFyeVwiIG1heGxlbmd0aD1cIjEwMjRcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FdmVudCBkZXNjcmlwdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJmaWVsZC10cmlnZ2VyLWRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NTUzNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9maWVsZHNldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXJlbGF0ZWRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWhhc1ByZXZpb3VzKCkgfHwgaXNTdWJtaXR0aW5nXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIj5QcmV2aW91czwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBjbGFzcz1cImJ1dHRvblwiPnt7dHJpZ2dlclRleHR9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiY2FuY2VsXCI+PGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKX19PC9hPjwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCJcbiAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAoZXZlbnRDYW5CZUNvbXBsZXRlZCk9XCJvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoJGV2ZW50KVwiPlxuPC9jY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uPlxuIl19
838
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHN0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx1QkFBdUIsRUFBeUIsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFzQixNQUFNLFdBQVcsQ0FBQztBQUU3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cEMsT0FBTyxxQkFBcUIsQ0FBQztTQUM5QjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDOztBQS9hc0IsNkRBQXFDLEdBQUcsQ0FBQyxDQUFZLEVBQUUsQ0FBWSxFQUFVLEVBQUU7SUFDcEcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsMkJBQTJCLENBQUM7SUFDeEYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLDJCQUEyQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsMkJBQTJCLENBQUM7SUFFeEYsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNmLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzVCO0lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDWDtJQUNELE9BQU8sQ0FBQyxDQUFDLDJCQUEyQixHQUFHLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztBQUN2RSxDQUFDLENBQUE7OEZBakNVLHVCQUF1Qjs0REFBdkIsdUJBQXVCO1FDOUJwQywwRUFxSU07UUFDTixvSEFHNEI7O1FBekl0Qix5REFBb0M7UUFzSWQsZUFBbUM7UUFBbkMsd0RBQW1DOzt1RkR4R2xELHVCQUF1QjtjQUxuQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsV0FBVyxFQUFFLHVCQUF1QjtnQkFDcEMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhc2VFdmVudERhdGEsIENhc2VFdmVudFRyaWdnZXIsIENhc2VGaWVsZCwgSHR0cEVycm9yLCBQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHtcbiAgQ2FzZUZpZWxkU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIEZvcm1FcnJvclNlcnZpY2UsXG4gIEZvcm1WYWx1ZVNlcnZpY2UsXG4gIE9yZGVyU2VydmljZSxcbiAgUHJvZmlsZU5vdGlmaWVyLFxuICBTZXNzaW9uU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IFBhbGV0dGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vcGFsZXR0ZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb24sIFdpemFyZCwgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZUVkaXRTdWJtaXRUaXRsZXMgfSBmcm9tICcuL2Nhc2UtZWRpdC1zdWJtaXQtdGl0bGVzLmVudW0nO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1zdWJtaXQnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jYXNlLWVkaXQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0U3VibWl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yOiBIdHRwRXJyb3I7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgc2hvd1N1bW1hcnlGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgcGFsZXR0ZUNvbnRleHQ6IFBhbGV0dGVDb250ZXh0ID0gUGFsZXR0ZUNvbnRleHQuQ0hFQ0tfWU9VUl9BTlNXRVI7XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHRhc2s6IFRhc2s7XG4gIHB1YmxpYyBldmVudENvbXBsZXRpb25QYXJhbXM6IEV2ZW50Q29tcGxldGlvblBhcmFtcztcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyBjYXNlRmxhZ0ZpZWxkOiBDYXNlRmllbGQ7XG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uID0gZmFsc2U7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OID0gKGE6IENhc2VGaWVsZCwgYjogQ2FzZUZpZWxkKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBhQ2FzZUZpZWxkID0gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gICAgY29uc3QgYkNhc2VGaWVsZCA9IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID09PSAwIHx8IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuXG4gICAgaWYgKCFhQ2FzZUZpZWxkKSB7XG4gICAgICByZXR1cm4gIWJDYXNlRmllbGQgPyAwIDogMTtcbiAgICB9XG5cbiAgICBpZiAoIWJDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uIC0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gRVVJLTM0NTIuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGVkaXRGb3JtIGFzIGl0IGlzIHJlYWRvbmx5LlxuICAgIC8vIFRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaGlkZGVuIGZpZWxkcyB0aGF0IGFyZW4ndCB3YW50ZWQgYnV0IGhhdmVcbiAgICAvLyBub3QgYmVlbiBkaXNhYmxlZC5cbiAgICByZXR1cm4gdGhpcy5pc1N1Ym1pdHRpbmcgfHwgdGhpcy5oYXNFcnJvcnM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlTm90aWZpZXI6IFByb2ZpbGVOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKF8gPT4gdGhpcy5wcm9maWxlID0gXyk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5ldmVudFRyaWdnZXIuZW5kX2J1dHRvbl9sYWJlbCB8fCBDYWxsYmFja0Vycm9yc0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1VCTUlUO1xuICAgIHRoaXMuZWRpdEZvcm0gPSB0aGlzLmNhc2VFZGl0LmZvcm07XG4gICAgdGhpcy53aXphcmQgPSB0aGlzLmNhc2VFZGl0LndpemFyZDtcbiAgICB0aGlzLnNob3dTdW1tYXJ5RmllbGRzID0gdGhpcy5zb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQodGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb250ZXh0RmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgLy8gSW5kaWNhdGVzIGlmIHRoZSBzdWJtaXNzaW9uIGlzIGZvciBhIENhc2UgRmxhZywgYXMgb3Bwb3NlZCB0byBhIFwicmVndWxhclwiIGZvcm0gc3VibWlzc2lvbiwgYnkgdGhlIHByZXNlbmNlIG9mXG4gICAgLy8gYSBGbGFnTGF1bmNoZXIgZmllbGQgaW4gdGhlIGV2ZW50IHRyaWdnZXJcbiAgICB0aGlzLmNhc2VGbGFnRmllbGQgPSB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5maW5kKFxuICAgICAgY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpO1xuICAgIGNvbnN0IGlzQ2FzZUZsYWdFeHRlcm5hbE1vZGUgPSB0aGlzLmNhc2VGbGFnRmllbGQ/LmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoVVBEQVRFLEVYVEVSTkFMKScgfHxcbiAgICAgIHRoaXMuY2FzZUZsYWdGaWVsZD8uZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDUkVBVEUsRVhURVJOQUwpJztcbiAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMuY2FzZUZsYWdGaWVsZCA/IChpc0Nhc2VGbGFnRXh0ZXJuYWxNb2RlID8gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuUkVWSUVXX1NVUFBPUlRfUkVRVUVTVCA6IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19GTEFHX0RFVEFJTFMpXG4gICAgICA6IENhc2VFZGl0U3VibWl0VGl0bGVzLkNIRUNLX1lPVVJfQU5TV0VSUztcbiAgICB0aGlzLmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uID0gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZShcbiAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0NvbXBvbmVudExhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgLy8gV2UgaGF2ZSB0byBydW4gdGhlIGV2ZW50IGNvbXBsZXRpb24gY2hlY2tzIGlmIHRhc2sgaW4gc2Vzc2lvbiBzdG9yYWdlXG4gICAgLy8gYW5kIGlmIHRoZSB0YXNrIGlzIGluIHNlc3Npb24gc3RvcmFnZSwgdGhlbiBpcyBpdCBhc3NvY2lhdGVkIHRvIHRoZSBjYXNlXG4gICAgbGV0IHRhc2tJblNlc3Npb25TdG9yYWdlOiBUYXNrO1xuICAgIGNvbnN0IHRhc2tTdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd0YXNrVG9Db21wbGV0ZScpO1xuICAgIGlmICh0YXNrU3RyKSB7XG4gICAgICB0YXNrSW5TZXNzaW9uU3RvcmFnZSA9IEpTT04ucGFyc2UodGFza1N0cik7XG4gICAgfVxuXG4gICAgaWYgKHRhc2tJblNlc3Npb25TdG9yYWdlICYmIHRhc2tJblNlc3Npb25TdG9yYWdlLmNhc2VfaWQgPT09IHRoaXMuZ2V0Q2FzZUlkKCkpIHtcbiAgICAgIC8vIFNob3cgZXZlbnQgY29tcGxldGlvbiBjb21wb25lbnQgdG8gcGVyZm9ybSBldmVudCBjb21wbGV0aW9uIGNoZWNrc1xuICAgICAgdGhpcy5ldmVudENvbXBsZXRpb25QYXJhbXMgPSB7XG4gICAgICAgIGNhc2VJZDogdGhpcy5nZXRDYXNlSWQoKSxcbiAgICAgICAgZXZlbnRJZDogdGhpcy5nZXRFdmVudElkKCksXG4gICAgICAgIHRhc2s6IHRhc2tJblNlc3Npb25TdG9yYWdlXG4gICAgICB9O1xuICAgICAgdGhpcy5ldmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRhc2sgbm90IGluIHNlc3Npb24gc3RvcmFnZSwgcHJvY2VlZCB0byBzdWJtaXRcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5jYXNlU3VibWl0KGNhc2VFdmVudERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoZXZlbnRDYW5CZUNvbXBsZXRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChldmVudENhbkJlQ29tcGxldGVkKSB7XG4gICAgICAvLyBTdWJtaXRcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5jYXNlU3VibWl0KGNhc2VFdmVudERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0YXNrcyB0YWIgb24gY2FzZSBkZXRhaWxzIHBhZ2VcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke3RoaXMuZ2V0Q2FzZUlkKCl9L3Rhc2tzYF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZUV2ZW50RGF0YSgpOiBDYXNlRXZlbnREYXRhIHtcbiAgICBjb25zdCBjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0ge1xuICAgICAgZGF0YTogdGhpcy5yZXBsYWNlRW1wdHlDb21wbGV4RmllbGRWYWx1ZXMoXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZShcbiAgICAgICAgICB0aGlzLnJlcGxhY2VIaWRkZW5Gb3JtVmFsdWVzV2l0aE9yaWdpbmFsQ2FzZURhdGEoXG4gICAgICAgICAgICB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpIGFzIEZvcm1Hcm91cCwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpKSksXG4gICAgICBldmVudDogdGhpcy5lZGl0Rm9ybS52YWx1ZS5ldmVudFxuICAgIH0gYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UuY2xlYXJOb25DYXNlRmllbGRzKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVOdWxsTGFiZWxzKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVFbXB0eURvY3VtZW50cyhjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICAvLyBSZW1vdmUgY29sbGVjdGlvbiBmaWVsZHMgdGhhdCBoYXZlIFwibWluXCIgdmFsaWRhdGlvbiBvZiBncmVhdGVyIHRoYW4gemVybyBzZXQgb24gdGhlIEZpZWxkVHlwZSBidXQgYXJlIGVtcHR5O1xuICAgIC8vIHRoZXNlIHdpbGwgZmFpbCB2YWxpZGF0aW9uXG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZUVtcHR5Q29sbGVjdGlvbnNXaXRoTWluVmFsaWRhdGlvbihjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICAvLyBJZiB0aGlzIGlzIGEgQ2FzZSBGbGFnIHN1Ym1pc3Npb24gKGFuZCB0aHVzIGEgRmxhZ0xhdW5jaGVyIGZpZWxkIGlzIHByZXNlbnQgaW4gdGhlIGV2ZW50IHRyaWdnZXIpLCB0aGUgZmxhZ1xuICAgIC8vIGRldGFpbHMgZGF0YSBuZWVkcyBwb3B1bGF0aW5nIGZvciBlYWNoIEZsYWdzIGZpZWxkLCB0aGVuIHRoZSBGbGFnTGF1bmNoZXIgZmllbGQgbmVlZHMgcmVtb3ZpbmdcbiAgICBpZiAodGhpcy5jYXNlRmxhZ0ZpZWxkKSB7XG4gICAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucG9wdWxhdGVGbGFnRGV0YWlsc0Zyb21DYXNlRmllbGRzKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZUZsYWdMYXVuY2hlckZpZWxkKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xpbmtlZENhc2VzU3VibWlzc2lvbikge1xuICAgICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnBvcHVsYXRlTGlua2VkQ2FzZXNEZXRhaWxzRnJvbUNhc2VGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50TGF1bmNoZXJGaWVsZChjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICB9XG4gICAgY2FzZUV2ZW50RGF0YS5ldmVudF90b2tlbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmV2ZW50X3Rva2VuO1xuICAgIGNhc2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY29uZmlybWF0aW9uKSB7XG4gICAgICBjYXNlRXZlbnREYXRhLmRhdGEgPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FzZUV2ZW50RGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY2FzZVN1Ym1pdChjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5zdWJtaXQoY2FzZUV2ZW50RGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcbiAgICAgICAgICBjb25zdCBjb25maXJtYXRpb246IENvbmZpcm1hdGlvbiA9IHRoaXMuYnVpbGRDb25maXJtYXRpb24ocmVzcG9uc2UpO1xuICAgICAgICAgIGlmIChjb25maXJtYXRpb24gJiYgKGNvbmZpcm1hdGlvbi5nZXRIZWFkZXIoKSB8fCBjb25maXJtYXRpb24uZ2V0Qm9keSgpKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5jb25maXJtKGNvbmZpcm1hdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuc3VibWl0dGVkLmVtaXQoe2Nhc2VJZDogcmVzcG9uc2VbJ2lkJ10sIHN0YXR1czogdGhpcy5nZXRTdGF0dXMocmVzcG9uc2UpfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5lcnJvcik7XG4gICAgICAgICAgaWYgKHRoaXMuZXJyb3IuZGV0YWlscykge1xuICAgICAgICAgICAgdGhpcy5mb3JtRXJyb3JTZXJ2aWNlXG4gICAgICAgICAgICAgIC5tYXBGaWVsZEVycm9ycyh0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10gYXMgRm9ybUdyb3VwLCAndmFsaWRhdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlICphbGwqIHZhbHVlcyBvZiBhIHtAbGluayBGb3JtR3JvdXB9LCBpbmNsdWRpbmcgdGhvc2UgZm9yIGRpc2FibGVkIGZpZWxkcyAoaS5lLiBoaWRkZW4gb25lcyksIHJlcGxhY2luZyB0aGVcbiAgICogdmFsdWUgb2YgYW55IHRoYXQgYXJlIGhpZGRlbiBBTkQgaGF2ZSBgcmV0YWluX2hpZGRlbl92YWx1ZWAgc2V0IHRvIGB0cnVlYCBpbiB0aGUgY29ycmVzcG9uZGluZyBgQ2FzZUZpZWxkYCwgd2l0aFxuICAgKiB0aGUgKm9yaWdpbmFsKiB2YWx1ZSBoZWxkIGluIHRoZSBgQ2FzZUZpZWxkYCBvYmplY3QuXG4gICAqXG4gICAqIFRoaXMgaXMgYXMgcGVyIGRlc2lnbiBpbiBFVUktMzYyMiwgd2hlcmUgYW55IHVzZXItZHJpdmVuIHVwZGF0ZXMgdG8gaGlkZGVuIGZpZWxkcyB3aXRoIGByZXRhaW5faGlkZGVuX3ZhbHVlYCA9XG4gICAqIGB0cnVlYCBhcmUgaWdub3JlZCAodGh1cyByZXRhaW5pbmcgdGhlIHZhbHVlIGRpc3BsYXllZCBvcmlnaW5hbGx5KS5cbiAgICpcbiAgICogKiBGb3IgQ29tcGxleCBmaWVsZCB0eXBlcywgdGhlIHJlcGxhY2VtZW50IGFib3ZlIGlzIHBlcmZvcm1lZCByZWN1cnNpdmVseSBmb3IgYWxsIGhpZGRlbiBzdWItZmllbGRzIHdpdGhcbiAgICogYHJldGFpbl9oaWRkZW5fdmFsdWVgID0gYHRydWVgLlxuICAgKlxuICAgKiAqIEZvciBDb2xsZWN0aW9uIGZpZWxkIHR5cGVzLCBpbmNsdWRpbmcgY29sbGVjdGlvbnMgb2YgQ29tcGxleCBhbmQgRG9jdW1lbnQgZmllbGQgdHlwZXMsIHRoZSByZXBsYWNlbWVudCBpc1xuICAgKiBwZXJmb3JtZWQgZm9yIGFsbCBmaWVsZHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtR3JvdXAgVGhlIGBGb3JtR3JvdXBgIGluc3RhbmNlIHdob3NlIHJhdyB2YWx1ZXMgYXJlIHRvIGJlIHRyYXZlcnNlZFxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgYXJyYXkgb2Yge0BsaW5rIENhc2VGaWVsZH0gZG9tYWluIG1vZGVsIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBmaWVsZHMgaW4gYGZvcm1Hcm91cGBcbiAgICogQHBhcmFtIHBhcmVudEZpZWxkIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGBDYXNlRmllbGRgLiBVc2VkIGZvciByZXRyaWV2aW5nIHRoZSBzdWItZmllbGQgdmFsdWVzIG9mIGEgQ29tcGxleCBmaWVsZFxuICAgKiB0byBwZXJmb3JtIHJlY3Vyc2l2ZSByZXBsYWNlbWVudCAtIHRoZSBzdWItZmllbGQgYENhc2VGaWVsZGBzIHRoZW1zZWx2ZXMgZG8gKm5vdCogY29udGFpbiBhbnkgdmFsdWVzXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSAqcmF3KiBmb3JtIHZhbHVlIGRhdGEgKGFzIGtleS12YWx1ZSBwYWlycyksIHdpdGggYW55IHZhbHVlIHJlcGxhY2VtZW50cyBhcyBuZWNlc3NhcnlcbiAgICovXG4gIHByaXZhdGUgcmVwbGFjZUhpZGRlbkZvcm1WYWx1ZXNXaXRoT3JpZ2luYWxDYXNlRGF0YShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIHBhcmVudEZpZWxkPzogQ2FzZUZpZWxkKTogb2JqZWN0IHtcbiAgICAvLyBHZXQgdGhlIHJhdyBmb3JtIHZhbHVlIGRhdGEsIHdoaWNoIGluY2x1ZGVzIHRoZSB2YWx1ZXMgb2YgYW55IGRpc2FibGVkIGNvbnRyb2xzLCBhcyBrZXktdmFsdWUgcGFpcnNcbiAgICBjb25zdCByYXdGb3JtVmFsdWVEYXRhID0gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG5cbiAgICAvLyBQbGFjZSBhbGwgY2FzZSBmaWVsZHMgaW4gYSBsb29rdXAgb2JqZWN0LCBzbyB0aGV5IGNhbiBiZSByZXRyaWV2ZWQgYnkgaWRcbiAgICBjb25zdCBjYXNlRmllbGRzTG9va3VwID0ge307XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhc2VGaWVsZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhc2VGaWVsZHNMb29rdXBbY2FzZUZpZWxkc1tpXS5pZF0gPSBjYXNlRmllbGRzW2ldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2UgYW55IGZvcm0gdmFsdWUgd2l0aCB0aGUgb3JpZ2luYWwsIHdoZXJlIGl0cyBDYXNlRmllbGQgaXMgaGlkZGVuIEFORCBoYXMgdGhlIHJldGFpbl9oaWRkZW5fdmFsdWUgZmxhZyBzZXRcbiAgICAgKiB0byB0cnVlLlxuICAgICAqXG4gICAgICogSWYgdGhlIENhc2VGaWVsZCdzIGBoaWRkZW5gIGF0dHJpYnV0ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgdGhlbiBjaGVjayB0aGlzIGF0dHJpYnV0ZSBpbiB0aGUgcGFyZW50IENhc2VGaWVsZCAoaWZcbiAgICAgKiBvbmUgZXhpc3RzKS4gVGhpcyBpcyBvY2N1cnJpbmcgKGFuZCBpcyBwb3NzaWJseSBhIGJ1Zykgd2hlbiBhIENhc2VGaWVsZCBpcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggdHlwZSwgb3IgYW5cbiAgICAgKiBpdGVtIGluIGEgQ29sbGVjdGlvbiB0eXBlLlxuICAgICAqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIGEgQ29tcGxleCB0eXBlIHdpdGggcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUsIHBlcmZvcm0gYSByZWN1cnNpdmUgcmVwbGFjZW1lbnQgZm9yIGFsbCAoaGlkZGVuKVxuICAgICAqIHN1Yi1maWVsZHMgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgdXNpbmcgdGhlaXIgb3JpZ2luYWwgQ2FzZUZpZWxkIHZhbHVlcyAoZnJvbSB0aGUgYGZvcm1hdHRlZF92YWx1ZWBcbiAgICAgKiBhdHRyaWJ1dGUpLlxuICAgICAqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIGEgQ29sbGVjdGlvbiB0eXBlIHdpdGggcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUsIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBpcyByZXBsYWNlZCB3aXRoIHRoZVxuICAgICAqIG9yaWdpbmFsIGZyb20gYGZvcm1hdHRlZF92YWx1ZWAuIFRoaXMgYXBwbGllcyB0byAqYWxsKiB0eXBlcyBvZiBDb2xsZWN0aW9ucy5cbiAgICAgKi9cbiAgICBPYmplY3Qua2V5cyhyYXdGb3JtVmFsdWVEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZDogQ2FzZUZpZWxkID0gY2FzZUZpZWxkc0xvb2t1cFtrZXldO1xuICAgICAgLy8gSWYgY2FzZUZpZWxkLmhpZGRlbiBpcyBOT1QgdHJ1dGh5IGFuZCBhbHNvIE5PVCBlcXVhbCB0byBmYWxzZSwgdGhlbiBpdCBtdXN0IGJlIG51bGwvdW5kZWZpbmVkIChyZW1lbWJlciB0aGF0XG4gICAgICAvLyBib3RoIG51bGwgYW5kIHVuZGVmaW5lZCBhcmUgZXF1YWwgdG8gKm5laXRoZXIgZmFsc2Ugbm9yIHRydWUqKVxuICAgICAgaWYgKGNhc2VGaWVsZCAmJiBjYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSAmJlxuICAgICAgICAoY2FzZUZpZWxkLmhpZGRlbiB8fCAoY2FzZUZpZWxkLmhpZGRlbiAhPT0gZmFsc2UgJiYgcGFyZW50RmllbGQgJiYgcGFyZW50RmllbGQuaGlkZGVuKSkpIHtcbiAgICAgICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgIC8vIE5vdGU6IERlbGliZXJhdGUgdXNlIG9mIGVxdWFsaXR5ICg9PSkgYW5kIG5vbi1lcXVhbGl0eSAoIT0pIG9wZXJhdG9ycyBmb3IgbnVsbCBjaGVja3MgdGhyb3VnaG91dCwgdG9cbiAgICAgICAgICAvLyBoYW5kbGUgYm90aCBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHRvIHJlcGxhY2UgdGhlIENvbXBsZXggZmllbGQncyBzdWItZmllbGRzIGFzIG5lY2Vzc2FyeSwgcGFzc2luZyB0aGVcbiAgICAgICAgICAgIC8vIENhc2VGaWVsZCBpdHNlbGYgKHRoZSBzdWItZmllbGRzIGRvIG5vdCBjb250YWluIGFueSB2YWx1ZXMsIHNvIHRoZXNlIG5lZWQgdG8gYmUgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIHBhcmVudClcbiAgICAgICAgICAgIC8vIFVwZGF0ZSByYXdGb3JtVmFsdWVEYXRhIGZvciB0aGlzIGZpZWxkXG4gICAgICAgICAgICAvLyBjcmVhdGluZyBmb3JtIGdyb3VwIGFuZCBhZGRpbmcgY29udHJvbCBpbnRvIGl0IGluIGNhc2UgY2FzZUZpZWxkIGlzIG9mIGNvbXBsZXh0IHR5cGUgYW5kIGFuZCBwYXJ0IG9mIGZvcm1Hcm91cFxuICAgICAgICAgICAgY29uc3QgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBpZiAoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtLmFkZENvbnRyb2woaXRlbSwgbmV3IEZvcm1Db250cm9sKGZvcm1Hcm91cC5jb250cm9sc1trZXldLnZhbHVlW2l0ZW1dKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmF3Rm9ybVZhbHVlRGF0YVtrZXldID0gdGhpcy5yZXBsYWNlSGlkZGVuRm9ybVZhbHVlc1dpdGhPcmlnaW5hbENhc2VEYXRhKFxuICAgICAgICAgICAgICBmb3JtLCBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2FzZUZpZWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVmYXVsdCBjYXNlIGFsc28gaGFuZGxlcyBjb2xsZWN0aW9ucyBvZiAqYWxsKiB0eXBlczsgdGhlIGVudGlyZSBjb2xsZWN0aW9uIGluIHJhd0Zvcm1WYWx1ZURhdGEgd2lsbCBiZVxuICAgICAgICAgIC8vIHJlcGxhY2VkIHdpdGggdGhlIG9yaWdpbmFsIGZyb20gZm9ybWF0dGVkX3ZhbHVlXG4gICAgICAgICAgLy8gVXNlIHRoZSBDYXNlRmllbGQncyBleGlzdGluZyAqZm9ybWF0dGVkX3ZhbHVlKiBmcm9tIHRoZSBwYXJlbnQsIGlmIGF2YWlsYWJsZS4gKFRoaXMgaXMgbmVjZXNzYXJ5IGZvclxuICAgICAgICAgIC8vIENvbXBsZXggZmllbGRzLCB3aG9zZSBzdWItZmllbGRzIGRvIG5vdCBob2xkIGFueSB2YWx1ZXMgaW4gdGhlIG1vZGVsLikgT3RoZXJ3aXNlLCB1c2UgZm9ybWF0dGVkX3ZhbHVlXG4gICAgICAgICAgLy8gZnJvbSB0aGUgQ2FzZUZpZWxkIGl0c2VsZi5cbiAgICAgICAgICBpZiAocGFyZW50RmllbGQgJiYgcGFyZW50RmllbGQuZm9ybWF0dGVkX3ZhbHVlKSB7XG4gICAgICAgICAgICByYXdGb3JtVmFsdWVEYXRhW2tleV0gPSBwYXJlbnRGaWVsZC5mb3JtYXR0ZWRfdmFsdWVbY2FzZUZpZWxkLmlkXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmF3Rm9ybVZhbHVlRGF0YVtrZXldID0gY2FzZUZpZWxkLmZvcm1hdHRlZF92YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByYXdGb3JtVmFsdWVEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIG5vbi1hcnJheSB2YWx1ZSBvYmplY3RzIHdpdGggYG51bGxgIGZvciBhbnkgQ29tcGxleC10eXBlIGZpZWxkcyB3aG9zZSB2YWx1ZSBpcyBlZmZlY3RpdmVseSBlbXB0eSwgaS5lLlxuICAgKiBhbGwgaXRzIHN1Yi1maWVsZHMgYW5kIGRlc2NlbmRhbnRzIGFyZSBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvYmplY3QgdHJlZSByZXByZXNlbnRpbmcgYWxsIHRoZSBmb3JtIGZpZWxkIGRhdGFcbiAgICogQHJldHVybnMgVGhlIGZvcm0gZmllbGQgZGF0YSBtb2RpZmllZCBhY2NvcmRpbmdseVxuICAgKi9cbiAgcHJpdmF0ZSByZXBsYWNlRW1wdHlDb21wbGV4RmllbGRWYWx1ZXMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhW2tleV0pICYmIHR5cGVvZiBkYXRhW2tleV0gPT09ICdvYmplY3QnICYmICFGaWVsZHNVdGlscy5jb250YWluc05vbkVtcHR5VmFsdWVzKGRhdGFba2V5XSkpIHtcbiAgICAgICAgZGF0YVtrZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGF0dXMocmVzcG9uc2U6IG9iamVjdCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQ2FsbGJhY2tGYWlsZWQocmVzcG9uc2UpID8gcmVzcG9uc2VbJ2NhbGxiYWNrX3Jlc3BvbnNlX3N0YXR1cyddIDogcmVzcG9uc2VbJ2RlbGV0ZV9kcmFmdF9yZXNwb25zZV9zdGF0dXMnXTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzQ2FsbGJhY2tGYWlsZWQocmVzcG9uc2U6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10gIT09ICdDQUxMQkFDS19DT01QTEVURUQnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICBpZiAobnVsbCA9PT0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpKSB7XG4gICAgICAvLyBJZiBub3QgaW4gZm9ybSwgcmV0dXJuIGZpZWxkIGl0c2VsZlxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIGNvbnN0IGNsb25lRmllbGQ6IENhc2VGaWVsZCA9IHRoaXMuZmllbGRzVXRpbHMuY2xvbmVDYXNlRmllbGQoZmllbGQpO1xuICAgIGNsb25lRmllbGQudmFsdWUgPSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkudmFsdWU7XG5cbiAgICByZXR1cm4gY2xvbmVGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHtzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7c3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuTkVXX0ZPUk1fRElTQ0FSRH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50VHJpZ2dlci5zaG93X3N1bW1hcnkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy53aXphcmQucGFnZXMpIHtcbiAgICAgIGlmICh0aGlzLmlzU2hvd24ocGFnZSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwYWdlLmNhc2VfZmllbGRzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpKSB7XG4gICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoZmllbGQgPT4gZmllbGQuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID49IDAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXZlbnROb3RlcygpOiBib29sZWFuIHtcbiAgICAvLyBEaXNwbGF5IGV2ZW50IG5vdGVzIHJlbGF0ZWQgY29udHJvbHMgb25seSBpZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldFxuICAgIC8vIDEuIHNob3dfZXZlbnRfbm90ZXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZVxuICAgIC8vIDIuIHByb2ZpbGUgaXMgbm90IGEgc29saWNpdG9yXG4gICAgLy8gMy4gaXMgbm90IGEgY2FzZSBmbGFncyBqb3VybmV5LCBhcyBpdCB1c2VzIGEgY3VzdG9tIGNoZWNrIHlvdXIgYW5zd2VycyBjb21wb25lbnRcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19ldmVudF9ub3Rlcykge1xuICAgICAgcmV0dXJuICF0aGlzLnByb2ZpbGU/LmlzU29saWNpdG9yKClcbiAgICAgICAgJiYgIXRoaXMuY2FzZUZsYWdGaWVsZDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXN0UGFnZVNob3duKCk6IFdpemFyZFBhZ2Uge1xuICAgIGxldCBsYXN0UGFnZTogV2l6YXJkUGFnZTtcbiAgICB0aGlzLndpemFyZC5yZXZlcnNlKCkuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgIGlmICghbGFzdFBhZ2UgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGxhc3RQYWdlID0gcGFnZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRBc3NpZ25tZW50XG4gICAgcmV0dXJuIGxhc3RQYWdlO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb1BhZ2UodGhpcy5nZXRMYXN0UGFnZVNob3duKCkuaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldExhc3RQYWdlU2hvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Nob3duKHBhZ2U6IFdpemFyZFBhZ2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkc1V0aWxzXG4gICAgICAubWVyZ2VDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcywgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddLnZhbHVlKTtcbiAgICByZXR1cm4gcGFnZS5wYXJzZWRTaG93Q29uZGl0aW9uLm1hdGNoKGZpZWxkcyk7XG4gIH1cblxuICBwdWJsaWMgY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5zaG93X3N1bW1hcnlfY2hhbmdlX29wdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb25maXJtYXRpb24ocmVzcG9uc2U6IG9iamVjdCk6IENvbmZpcm1hdGlvbiB7XG4gICAgaWYgKHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXSkge1xuICAgICAgcmV0dXJuIG5ldyBDb25maXJtYXRpb24oXG4gICAgICAgIHJlc3BvbnNlWydpZCddLFxuICAgICAgICByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10sXG4gICAgICAgIHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXVsnY29uZmlybWF0aW9uX2hlYWRlciddLFxuICAgICAgICByZXNwb25zZVsnYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlJ11bJ2NvbmZpcm1hdGlvbl9ib2R5J11cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KGZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJTZXJ2aWNlXG4gICAgICAuc29ydChmaWVsZHMsIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LlNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04pXG4gICAgICAuZmlsdGVyKGNmID0+IGNmLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzID8gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkIDogJycpO1xuICB9XG5cbiAgcHVibGljIGdldEV2ZW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0Rm9ybS52YWx1ZS5ldmVudC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgJiYgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZSAmJlxuICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICByZXR1cm4gJ1JldHVybiB0byBjYXNlIGxpc3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ0NhbmNlbCc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCI+XG4gIDwhLS0gRXZlbnQgdHJpZ2dlciBuYW1lIC0tPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57eyBldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmICghKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscykgJiYgIWVycm9yLm1lc3NhZ2UpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAge3snU29tZXRoaW5nIHdlbnQgd3JvbmcnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgICA8cD57e1wiV2UncmUgd29ya2luZyB0byBmaXggdGhlIHByb2JsZW0uIFRyeSBhZ2FpbiBzaG9ydGx5LlwiIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICA8cD48YSBocmVmPVwiZ2V0LWhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIj57eydDb250YWN0IHVzJyB8IHJweFRyYW5zbGF0ZX19PC9hPiB7e1wiaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtc1wiIHwgcnB4VHJhbnNsYXRlfX0uPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBFdmVudCBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmIChlcnJvci5kZXRhaWxzIHx8IGVycm9yLm1lc3NhZ2UpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDMgY2xhc3M9XCJoZWFkaW5nLWgzIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAge3tcIlRoZSBldmVudCBjb3VsZCBub3QgYmUgY3JlYXRlZFwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2gzPlxuICAgIDxwPnt7ZXJyb3IubWVzc2FnZX19PC9wPlxuICAgIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImNjZC1lcnJvci1zdW1tYXJ5LWxpXCI+e3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fTwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+e3twYWdlVGl0bGUgfCBycHhUcmFuc2xhdGV9fTwvaDI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiAqbmdJZj1cIiFjYXNlRmxhZ0ZpZWxkXCI+e3snQ2hlY2sgdGhlIGluZm9ybWF0aW9uIGJlbG93IGNhcmVmdWxseS4nIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG5cbiAgICAgIDx0YWJsZSBjbGFzcz1cImZvcm0tdGFibGVcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidjaGVjayB5b3VyIGFuc3dlcnMgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiB3aXphcmQucGFnZXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93bihwYWdlKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcGFnZVxuICAgICAgICAgICAgfCBjY2RQYWdlRmllbGRzOiBlZGl0Rm9ybVxuICAgICAgICAgICAgfCBjY2RSZWFkRmllbGRzRmlsdGVyOiBmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVxuICAgICAgICAgICAgfCBjY2RDWUFQYWdlTGFiZWxGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgIDx0ciBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKSAmJiAhY2FzZUZsYWdGaWVsZFwiIGNsYXNzPVwidmFsaWduLXRvcCBjYXNlLWZpZWxkLWxhYmVsXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGwgY2FzZS1maWVsZC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogY2FzZUZsYWdGaWVsZH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImlzTGFiZWwoZmllbGQpID8gJzInIDogJzEnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2NvbnRleHRdPVwicGFsZXR0ZUNvbnRleHRcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNhc2VGbGFnRmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidmFsaWduLXRvcCBjaGVjay15b3VyLWFuc3dlcnNfX2NoYW5nZSBjYXNlLWZpZWxkLWNoYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiaXNDaGFuZ2VBbGxvd2VkKGZpZWxkKVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZShwYWdlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX0ge3sgZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3snQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8dGFibGUgY2xhc3M9XCJzdW1tYXJ5LWZpZWxkc1wiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3N1bW1hcnkgZmllbGRzIHRhYmxlJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1ldmVudFwiIGZvcm1Hcm91cE5hbWU9XCJldmVudFwiPlxuICAgICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XG4gICAgICAgICAgICB7eydFdmVudCBzdW1tYXJ5IChvcHRpb25hbCknIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+e3snQSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0V2ZW50IGRlc2NyaXB0aW9uKG9wdGlvbmFsKScgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhIGlkPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMCB3aWR0aC01MFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjU1MzZcIj5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmdcIj5cbiAgICAgICAge3tnZXRDYW5jZWxUZXh0KCkgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCJcbiAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAoZXZlbnRDYW5CZUNvbXBsZXRlZCk9XCJvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoJGV2ZW50KVwiPlxuPC9jY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uPlxuIl19