@pega/angular-sdk-components 0.242.7 → 0.242.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +3 -3
  3. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
  4. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +3 -3
  5. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
  6. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +3 -3
  7. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  8. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +4 -5
  9. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +9 -5
  11. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
  12. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
  13. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
  14. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +3 -3
  15. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -7
  16. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +3 -3
  17. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
  18. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  19. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +3 -3
  20. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +3 -3
  22. package/esm2022/lib/_components/field/currency/currency.component.mjs +23 -18
  23. package/esm2022/lib/_components/field/date/date.component.mjs +3 -3
  24. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +21 -8
  25. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +38 -20
  26. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +15 -7
  27. package/esm2022/lib/_components/field/email/email.component.mjs +3 -3
  28. package/esm2022/lib/_components/field/group/group.component.mjs +3 -3
  29. package/esm2022/lib/_components/field/integer/integer.component.mjs +3 -3
  30. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +5 -5
  31. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +3 -3
  32. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +31 -23
  33. package/esm2022/lib/_components/field/phone/phone.component.mjs +10 -15
  34. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +3 -3
  35. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +14 -7
  36. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +3 -3
  37. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
  38. package/esm2022/lib/_components/field/text/text.component.mjs +6 -6
  39. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +3 -3
  40. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
  41. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +4 -4
  42. package/esm2022/lib/_components/field/time/time.component.mjs +23 -11
  43. package/esm2022/lib/_components/field/url/url.component.mjs +3 -3
  44. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +66 -12
  45. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +11 -6
  46. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +2 -2
  47. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  48. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -6
  49. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +3 -3
  50. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +3 -3
  51. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +5 -5
  52. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +4 -7
  53. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +10 -30
  54. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
  55. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +7 -5
  56. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  57. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +3 -3
  59. package/esm2022/lib/_components/infra/reference/reference.component.mjs +68 -78
  60. package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
  61. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +24 -19
  62. package/esm2022/lib/_components/infra/stages/stages.component.mjs +3 -3
  63. package/esm2022/lib/_components/infra/view/view.component.mjs +3 -3
  64. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +3 -3
  65. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
  66. package/esm2022/lib/_components/template/base/details-template-base.mjs +3 -3
  67. package/esm2022/lib/_components/template/base/form-template-base.mjs +3 -3
  68. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +3 -3
  69. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +3 -3
  70. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +3 -3
  71. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +3 -3
  72. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +6 -7
  73. package/esm2022/lib/_components/template/details/details.component.mjs +3 -3
  74. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +3 -3
  75. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +3 -3
  76. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +3 -3
  77. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +3 -3
  78. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +3 -3
  79. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +3 -3
  80. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +3 -3
  81. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
  82. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +47 -38
  83. package/esm2022/lib/_components/template/field-group-template/utils.mjs +11 -0
  84. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
  85. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
  86. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +3 -3
  87. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
  88. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +5 -5
  89. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
  90. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +3 -3
  91. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +3 -3
  92. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
  93. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +3 -3
  94. package/esm2022/lib/_components/template/page/page.component.mjs +3 -3
  95. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +3 -3
  96. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +3 -3
  97. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
  98. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +19 -3
  99. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +58 -24
  100. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +3 -3
  101. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
  102. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +3 -3
  103. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +3 -3
  104. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
  105. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +3 -3
  106. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
  107. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +3 -3
  108. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +3 -3
  109. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +3 -3
  110. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +3 -3
  111. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
  112. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +3 -3
  113. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
  114. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +3 -3
  115. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +3 -3
  116. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
  117. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
  118. package/esm2022/lib/_components/widget/todo/todo.component.mjs +5 -5
  119. package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
  120. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +3 -3
  121. package/esm2022/lib/_helpers/formatters/boolean.mjs +2 -2
  122. package/esm2022/lib/_helpers/formatters/common.mjs +6 -3
  123. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  124. package/esm2022/lib/_helpers/formatters/date.mjs +2 -2
  125. package/esm2022/lib/_helpers/formatters/format-utils.mjs +10 -2
  126. package/esm2022/lib/_helpers/formatters/index.mjs +16 -16
  127. package/esm2022/lib/_helpers/template-utils.mjs +3 -3
  128. package/esm2022/lib/_helpers/utils.mjs +40 -18
  129. package/esm2022/lib/_messages/error-messages.service.mjs +3 -3
  130. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  131. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  132. package/esm2022/lib/_services/banner.service.mjs +3 -3
  133. package/esm2022/lib/_services/case.service.mjs +3 -3
  134. package/esm2022/lib/_services/datapage.service.mjs +3 -3
  135. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  136. package/esm2022/public-api.mjs +5 -3
  137. package/fesm2022/pega-angular-sdk-components.mjs +919 -739
  138. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  139. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  140. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  141. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  142. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -0
  143. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  144. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +0 -1
  145. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +0 -1
  146. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
  147. package/lib/_components/field/check-box/check-box.component.d.ts +0 -1
  148. package/lib/_components/field/currency/currency.component.d.ts +0 -1
  149. package/lib/_components/field/date/date.component.d.ts +0 -1
  150. package/lib/_components/field/date-time/date-time.component.d.ts +1 -1
  151. package/lib/_components/field/decimal/decimal.component.d.ts +1 -1
  152. package/lib/_components/field/dropdown/dropdown.component.d.ts +1 -1
  153. package/lib/_components/field/email/email.component.d.ts +0 -1
  154. package/lib/_components/field/group/group.component.d.ts +0 -1
  155. package/lib/_components/field/integer/integer.component.d.ts +0 -1
  156. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  157. package/lib/_components/field/multiselect/multiselect.component.d.ts +0 -1
  158. package/lib/_components/field/percentage/percentage.component.d.ts +1 -2
  159. package/lib/_components/field/phone/phone.component.d.ts +0 -7
  160. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +0 -1
  161. package/lib/_components/field/rich-text/rich-text.component.d.ts +1 -2
  162. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
  163. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
  164. package/lib/_components/field/text/text.component.d.ts +0 -1
  165. package/lib/_components/field/text-area/text-area.component.d.ts +0 -1
  166. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  167. package/lib/_components/field/text-input/text-input.component.d.ts +0 -1
  168. package/lib/_components/field/time/time.component.d.ts +1 -2
  169. package/lib/_components/field/url/url.component.d.ts +0 -1
  170. package/lib/_components/field/user-reference/user-reference.component.d.ts +0 -1
  171. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -1
  172. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  173. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +0 -2
  174. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  175. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  176. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  177. package/lib/_components/infra/assignment/assignment.component.d.ts +0 -1
  178. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +2 -11
  179. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  180. package/lib/_components/infra/defer-load/defer-load.component.d.ts +1 -1
  181. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  182. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  183. package/lib/_components/infra/navbar/navbar.component.d.ts +0 -1
  184. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  185. package/lib/_components/infra/region/region.component.d.ts +0 -1
  186. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -1
  187. package/lib/_components/infra/stages/stages.component.d.ts +0 -1
  188. package/lib/_components/infra/view/view.component.d.ts +0 -1
  189. package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
  190. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  191. package/lib/_components/template/base/details-template-base.d.ts +0 -1
  192. package/lib/_components/template/case-summary/case-summary.component.d.ts +0 -1
  193. package/lib/_components/template/case-view/case-view.component.d.ts +0 -1
  194. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  195. package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
  196. package/lib/_components/template/default-form/default-form.component.d.ts +2 -3
  197. package/lib/_components/template/details/details.component.d.ts +0 -1
  198. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +0 -1
  199. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +0 -1
  200. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +0 -1
  201. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +0 -1
  202. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +0 -1
  203. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +0 -1
  204. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +0 -1
  205. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  206. package/lib/_components/template/field-group-template/utils.d.ts +1 -0
  207. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  208. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  209. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  210. package/lib/_components/template/list-view/list-view.component.d.ts +1 -2
  211. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  212. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  213. package/lib/_components/template/one-column/one-column.component.d.ts +0 -1
  214. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  215. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  216. package/lib/_components/template/page/page.component.d.ts +0 -1
  217. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  218. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  219. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  220. package/lib/_components/template/simple-table-manual/helpers.d.ts +9 -2
  221. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +8 -3
  222. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  223. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
  224. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  225. package/lib/_components/template/three-column/three-column.component.d.ts +0 -1
  226. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  227. package/lib/_components/template/two-column/two-column.component.d.ts +0 -1
  228. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  229. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  230. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +0 -1
  231. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +0 -1
  232. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +1 -2
  233. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  234. package/lib/_components/widget/attachment/attachment.component.d.ts +1 -2
  235. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  236. package/lib/_components/widget/feed-container/feed-container.component.d.ts +0 -1
  237. package/lib/_components/widget/file-utility/file-utility.component.d.ts +0 -1
  238. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  239. package/lib/_components/widget/todo/todo.component.d.ts +1 -2
  240. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  241. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  242. package/lib/_helpers/formatters/common.d.ts +1 -1
  243. package/lib/_helpers/formatters/currency.d.ts +1 -2
  244. package/lib/_helpers/formatters/date.d.ts +1 -2
  245. package/lib/_helpers/formatters/index.d.ts +1 -2
  246. package/lib/_helpers/utils.d.ts +8 -0
  247. package/package.json +1 -1
  248. package/public-api.d.ts +4 -2
  249. package/esm2022/lib/_services/idle-detection.service.mjs +0 -26
  250. package/lib/_services/idle-detection.service.d.ts +0 -9
@@ -55,7 +55,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
55
55
  }, 'cancelPressed');
56
56
  PCore.getPubSubUtils().subscribe('clearBannerMessages', () => {
57
57
  this.banners = [];
58
- }, 'CLEAR_BANNER_MESSAGES');
58
+ }, 'clearBannerMessages');
59
59
  }
60
60
  ngOnDestroy() {
61
61
  if (this.angularPConnectData.unsubscribeFn) {
@@ -63,7 +63,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
63
63
  }
64
64
  PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, 'cancelAssignment');
65
65
  PCore.getPubSubUtils().unsubscribe('cancelPressed', 'cancelPressed');
66
- PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'CLEAR_BANNER_MESSAGES');
66
+ PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'clearBannerMessages');
67
67
  }
68
68
  handleCancel() {
69
69
  // cancel happened, so ok to initialize the flow container
@@ -309,6 +309,11 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
309
309
  this.bHasCaseMessages$ = true;
310
310
  this.bShowConfirm = true;
311
311
  this.checkSvg$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
312
+ // Temp fix for 8.7 change: confirmationNote no longer coming through in caseMessages$.
313
+ // So, if we get here and caseMessages$ is empty, use default value in DX API response
314
+ if (!this.caseMessages$) {
315
+ this.caseMessages$ = this.localizedVal('Thank you! The next step in this case has been routed appropriately.', this.localeCategory);
316
+ }
312
317
  this.psService.sendMessage(false);
313
318
  }
314
319
  else {
@@ -444,13 +449,13 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
444
449
  data: pConnect.getDataObject(contextName)
445
450
  });
446
451
  }
447
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FlowContainerComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.ProgressSpinnerService }, { token: i2.FormBuilder }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
448
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: FlowContainerComponent, isStandalone: true, selector: "app-flow-container", inputs: { pConn$: "pConn$" }, providers: [Utils], usesInheritance: true, ngImport: i0, template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm && confirm_pconn\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatCardModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
452
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowContainerComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.ProgressSpinnerService }, { token: i2.FormBuilder }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
453
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlowContainerComponent, isStandalone: true, selector: "app-flow-container", inputs: { pConn$: "pConn$" }, providers: [Utils], usesInheritance: true, ngImport: i0, template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm && confirm_pconn\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatCardModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
449
454
  }
450
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FlowContainerComponent, decorators: [{
455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowContainerComponent, decorators: [{
451
456
  type: Component,
452
457
  args: [{ selector: 'app-flow-container', providers: [Utils], standalone: true, imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm && confirm_pconn\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n" }]
453
458
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.ProgressSpinnerService }, { type: i2.FormBuilder }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
454
459
  type: Input
455
460
  }] } });
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQTZCLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDM0csT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7QUF3QjlGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUF3Q3BFLFlBQ0UsUUFBa0IsRUFDVixLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxFQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQVk7UUFFcEIsS0FBSyxDQUFDLFFB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R0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUV4RyxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RCLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsR0FBRztZQUNILFFBQVE7WUFDUixZQUFZLEVBQUUsU0FBUztZQUN2QixZQUFZLEVBQUUsWUFBWTtZQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0ExakJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtGQUp0QixDQUFDLEtBQUssQ0FBQyxpREM5QnBCLHFsREE0Q0EsNkVEWlksWUFBWSw0S0FBRSxhQUFhLHVMQUFtQix3QkFBd0I7OzRGQUVyRSxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGFBR25CLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztxTkFHekUsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IHB1YmxpY0NvbnN0YW50cyB9IGZyb20gJ0BwZWdhL3Bjb3JlLXBjb25uZWN0LXR5cGVkZWZzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFRvRG9Bc3NpZ25tZW50cywgaGFzQXNzaWdubWVudHMsIHNob3dCYW5uZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dDb250YWluZXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnRzL2Zsb3ctY29udGFpbmVyLWJhc2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuaW50ZXJmYWNlIEZsb3dDb250YWluZXJQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgY2hpbGRyZW4/OiBhbnlbXTtcbiAgbmFtZT86IHN0cmluZztcbiAgcm91dGluZ0luZm8/OiBhbnk7XG4gIHBhZ2VNZXNzYWdlczogYW55W107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mbG93LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mbG93LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3ctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1V0aWxzXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBGbG93Q29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgRmxvd0NvbnRhaW5lckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIHBDb3JlQ29uc3RhbnRzOiB0eXBlb2YgcHVibGljQ29uc3RhbnRzO1xuICBjb25maWdQcm9wcyQ6IEZsb3dDb250YWluZXJQcm9wcztcblxuICBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgaXRlbUtleSQgPSAnJztcbiAgY29udGFpbmVyTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuXG4gIC8vIHRvZG9cbiAgdG9kb19zaG93VG9kbyQgPSBmYWxzZTtcbiAgdG9kb19jYXNlSW5mb0lEJDogc3RyaW5nO1xuICB0b2RvX3Nob3dUb2RvTGlzdCQgPSBmYWxzZTtcbiAgdG9kb19kYXRhc291cmNlJDogYW55O1xuICB0b2RvX2hlYWRlclRleHQkID0gJ1RvIGRvJztcbiAgdG9kb190eXBlJDogc3RyaW5nO1xuICB0b2RvX2NvbnRleHQkOiBzdHJpbmc7XG4gIHRvZG9fcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgYkhhc0NhbmNlbCA9IGZhbHNlO1xuXG4gIC8vIG1lc3NhZ2VzXG4gIGNhc2VNZXNzYWdlcyQ6IHN0cmluZztcbiAgYkhhc0Nhc2VNZXNzYWdlcyQgPSBmYWxzZTtcbiAgY2hlY2tTdmckOiBzdHJpbmc7XG4gIFRPRE86IGFueTtcbiAgYlNob3dDb25maXJtID0gZmFsc2U7XG4gIGJTaG93QmFubmVyOiBib29sZWFuO1xuICBjb25maXJtX3Bjb25uOiBhbnk7XG4gIGxvY2FsaXplZFZhbDogYW55O1xuICBsb2NhbGVDYXRlZ29yeSA9ICdNZXNzYWdlcyc7XG4gIGxvY2FsZVJlZmVyZW5jZTogYW55O1xuICBiYW5uZXJzOiBhbnlbXTtcbiAgLy8gaXRlbUtleTogc3RyaW5nID0gXCJcIjsgICAvLyBKQSAtIHRoaXMgaXMgd2hhdCBOZWJ1bGEvQ29uc3RlbGxhdGlvbiB1c2VzIHRvIHBhc3MgdG8gZmluaXNoQXNzaWdubWVudCwgbmF2aWdhdGVUb1N0ZXBcblxuICBwQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgLy8gY3JlYXRlIHRoZSBmb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCQgPSB0aGlzLmZiLmdyb3VwKHsgaGlkZVJlcXVpcmVkOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICAgIGNvbnN0IGNhc2VJbmZvID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKTtcbiAgICB0aGlzLmxvY2FsZVJlZmVyZW5jZSA9IGAke2Nhc2VJbmZvPy5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke2Nhc2VJbmZvLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyBnZXQgdGhlIFBDb3JlIGNvbnN0YW50c1xuICAgIHRoaXMucENvcmVDb25zdGFudHMgPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgICBjb25zdCB7IFRPRE8gfSA9IHRoaXMucENvcmVDb25zdGFudHM7XG4gICAgdGhpcy5UT0RPID0gVE9ETztcbiAgICAvLyB3aXRoIGluaXQsIGZvcmNlIGNoaWxkcmVuIHRvIGJlIGxvYWRlZCBvZiBnbG9iYWwgcENvbm5cbiAgICB0aGlzLmluaXRDb21wb25lbnQodHJ1ZSk7XG5cbiAgICB0aGlzLmluaXRDb250YWluZXIoKTtcblxuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuRVZFTlRfQ0FOQ0VMLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbmNlbCgpO1xuICAgICAgfSxcbiAgICAgICdjYW5jZWxBc3NpZ25tZW50J1xuICAgICk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgICdjYW5jZWxQcmVzc2VkJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVDYW5jZWxQcmVzc2VkKCk7XG4gICAgICB9LFxuICAgICAgJ2NhbmNlbFByZXNzZWQnXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgJ2NsZWFyQmFubmVyTWVzc2FnZXMnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmJhbm5lcnMgPSBbXTtcbiAgICAgIH0sXG4gICAgICAnQ0xFQVJfQkFOTkVSX01FU1NBR0VTJ1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICdjYW5jZWxBc3NpZ25tZW50Jyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKCdjYW5jZWxQcmVzc2VkJywgJ2NhbmNlbFByZXNzZWQnKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoJ2NsZWFyQmFubmVyTWVzc2FnZXMnLCAnQ0xFQVJfQkFOTkVSX01FU1NBR0VTJyk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWwoKSB7XG4gICAgLy8gY2FuY2VsIGhhcHBlbmVkLCBzbyBvayB0byBpbml0aWFsaXplIHRoZSBmbG93IGNvbnRhaW5lclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicsICd0cnVlJyk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxQcmVzc2VkKCkge1xuICAgIHRoaXMuYkhhc0NhbmNlbCA9IHRydWU7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIGNvbnN0IHBDb25uID0gdGhpcy5wQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSB8fCB0aGlzLnBDb25uJDtcbiAgICBjb25zdCBjYXNlVmlld01vZGVGcm9tUHJvcHMgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdjYXNlVmlld01vZGUnKTtcbiAgICBjb25zdCBjYXNlVmlld01vZGVGcm9tUmVkdXggPSBwQ29ubi5nZXRWYWx1ZSgnY29udGV4dF9kYXRhLmNhc2VWaWV3TW9kZScsICcnKTtcblxuICAgIGNvbnN0IGNvbXBsZXRlUHJvcHMgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDdXJyZW50Q29tcGxldGVQcm9wcyh0aGlzKSBhcyBGbG93Q29udGFpbmVyUHJvcHM7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIC8vICAgIEFORCByZW1vdmluZyB0aGUgXCJnYXRlXCIgdGhhdCB3YXMgcHV0IHRoZXJlIHNpbmNlIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICAgIC8vICAgICAgc2hvdWxkIGJlIHRoZSByZWFsIFwiZ2F0ZVwiXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tY29sbGFwc2libGUtaWZcbiAgICBpZiAoYlVwZGF0ZVNlbGYgfHwgY2FzZVZpZXdNb2RlRnJvbVByb3BzICE9PSBjYXNlVmlld01vZGVGcm9tUmVkdXgpIHtcbiAgICAgIC8vIGRvbid0IHdhbnQgdG8gcmVkcmF3IHRoZSBmbG93IGNvbnRhaW5lciB3aGVuIHRoZXJlIGFyZSBwYWdlIG1lc3NhZ2VzLCBiZWNhdXNlXG4gICAgICAvLyB0aGUgcmVkcmF3IGNhdXNlcyB1cyB0byBsb29zZSB0aGUgZXJyb3JzIG9uIHRoZSBlbGVtZW50c1xuICAgICAgaWYgKCFjb21wbGV0ZVByb3BzLnBhZ2VNZXNzYWdlcyB8fCBjb21wbGV0ZVByb3BzLnBhZ2VNZXNzYWdlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAvLyB3aXRoIGEgY2FuY2VsLCBuZWVkIHRvIHRpbWVvdXQgc28gdG9kbyB3aWxsIHVwZGF0ZSBjb3JyZWN0bHlcbiAgICAgICAgaWYgKHRoaXMuYkhhc0NhbmNlbCkge1xuICAgICAgICAgIHRoaXMuYkhhc0NhbmNlbCA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2hvd1BhZ2VNZXNzYWdlcyhjb21wbGV0ZVByb3BzKTtcbiAgfVxuXG4gIHNob3dQYWdlTWVzc2FnZXMoY29tcGxldGVQcm9wczogRmxvd0NvbnRhaW5lclByb3BzKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHBhZ2VNZXNzYWdlcyA9IGNvbXBsZXRlUHJvcHMucGFnZU1lc3NhZ2VzO1xuICAgICAgdGhpcy5iYW5uZXJzID0gW3sgbWVzc2FnZXM6IHBhZ2VNZXNzYWdlcz8ubWFwKG1zZyA9PiB0aGlzLmxvY2FsaXplZFZhbChtc2cubWVzc2FnZSwgJ01lc3NhZ2VzJykpLCB2YXJpYW50OiAndXJnZW50JyB9XTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFRvZG9WaXNpYmlsdHkoKSB7XG4gICAgY29uc3QgY2FzZVZpZXdNb2RlID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgICBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PT0gJ3JldmlldycpIHtcbiAgICAgIGNvbnN0IGtpZCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKClbMF07XG4gICAgICBjb25zdCB0b2RvS2lkID0ga2lkLmdldFBDb25uZWN0KCkuZ2V0Q2hpbGRyZW4oKVswXTtcblxuICAgICAgdGhpcy50b2RvX3BDb25uJCA9IHRvZG9LaWQuZ2V0UENvbm5lY3QoKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICEoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PT0gJ3BlcmZvcm0nKTtcbiAgfVxuXG4gIGluaXRDb250YWluZXIoKSB7XG4gICAgY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBjb250YWluZXJOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclR5cGUgPSAnc2luZ2xlJztcblxuICAgIGNvbnN0IGZsb3dDb250YWluZXJUYXJnZXQgPSBgJHtiYXNlQ29udGV4dH0vJHtjb250YWluZXJOYW1lfWA7XG4gICAgY29uc3QgaXNDb250YWluZXJJdGVtQXZhaWxhYmxlID0gUENvcmUuZ2V0Q29udGFpbmVyVXRpbHMoKS5nZXRBY3RpdmVDb250YWluZXJJdGVtTmFtZShmbG93Q29udGFpbmVyVGFyZ2V0KTtcblxuICAgIC8vIGNsZWFyIG91dCBzaW5jZSB3ZSBhcmUgaW5pdGlhbGl6aW5nXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJywgJ2ZhbHNlJyk7XG5cbiAgICBpZiAoIWlzQ29udGFpbmVySXRlbUF2YWlsYWJsZSkge1xuICAgICAgY29udGFpbmVyTWdyLmluaXRpYWxpemVDb250YWluZXJzKHtcbiAgICAgICAgdHlwZTogY29udGFpbmVyVHlwZVxuICAgICAgfSk7XG5cbiAgICAgIC8qIHJlbW92ZSBjb21tZW50ZWQgb3V0IGNvZGUgd2hlbiB1cGRhdGUgUmVhY3QvV0NcbiAgICAgICAqKiogaW5zdGVhZCBvZiBnZXR0aW5nIHZhbHVlcyBoZXJlIHRvIHBhc3MgdG8gYWRkQ29udGFpbmVySXRlbSwgd2UgY2FsbCB0aGUgZnVuY3Rpb24gYmVsb3cgXCJhZGRDb250YWluZXJJdGVtXCJcbiAgICAgICAqKiogd2hpY2ggY29tZXMgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXJzIGluIE5lYnVsYVxuICAgICAgICovXG4gICAgICAvLyBjb250YWluZXJNZ3IuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICAvLyAgIHNlbWFudGljVVJMOiBcIlwiLFxuICAgICAgLy8gICBrZXk6IHRoaXMucENvbm4kLmdldFZhbHVlKFwia2V5XCIpLFxuICAgICAgLy8gICBmbG93TmFtZTogdGhpcy5wQ29ubiQuZ2V0VmFsdWUoXCJmbG93TmFtZVwiKSxcbiAgICAgIC8vICAgY2FzZVZpZXdNb2RlOiBcInBlcmZvcm1cIixcbiAgICAgIC8vICAgZGF0YTogdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdChiYXNlQ29udGV4dCksXG4gICAgICAvLyAgIGNvbnRhaW5lclR5cGVcbiAgICAgIC8vIH0pO1xuXG4gICAgICB0aGlzLmFkZENvbnRhaW5lckl0ZW0odGhpcy5wQ29ubiQpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRDb21wb25lbnQoYkxvYWRDaGlsZHJlbjogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEZsb3dDb250YWluZXJQcm9wcztcbiAgICB0aGlzLnNob3dQYWdlTWVzc2FnZXModGhpcy5jb25maWdQcm9wcyQpO1xuXG4gICAgLy8gd2hlbiB0cnVlLCB1cGRhdGUgYXJDaGlsZHJlbiBmcm9tIHBDb25uLCBvdGhlcndpc2UsIGFyQ2hpbHJlbiB3aWxsIGJlIHVwZGF0ZWQgaW4gdXBkYXRlU2VsZigpXG4gICAgaWYgKGJMb2FkQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIC8vIGNvbnN0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gY29uc3QgYWN0aXZlQWN0aW9uTGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIC8vIGNvbnN0IHsgZ2V0UENvbm5lY3QgfSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIHRoaXMudG9kb19zaG93VG9kbyQgPSB0aGlzLmdldFRvZG9WaXNpYmlsdHkoKTtcblxuICAgIC8vIGNyZWF0ZSBwb2ludGVycyB0byBmdW5jdGlvbnNcbiAgICAvLyBjb25zdCBjb250YWluZXJNZ3IgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG4gICAgLy8gY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcblxuICAgIC8vIGluc2lkZVxuICAgIC8vIGdldCBmaXN0IGtpZCwgZ2V0IHRoZSBuYW1lIGFuZCBkaXNwbGF5XG4gICAgLy8gcGFzcyBmaXJzdCBraWQgdG8gYSB2aWV3IGNvbnRhaW5lciwgd2hpY2ggd2lsbCBkaXNwZXJzZSBpdCB0byBhIHZpZXcgd2hpY2ggd2lsbCB1c2Ugb25lIGNvbHVtbiwgdHdvIGNvbHVtbiwgZXRjLlxuICAgIGNvbnN0IG9Xb3JrSXRlbSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcbiAgICAvLyBjb25zdCBvV29ya01ldGEgPSBvV29ya0l0ZW0uZ2V0UmF3TWV0YWRhdGEoKTtcbiAgICBjb25zdCBvV29ya0RhdGEgPSBvV29ya0l0ZW0uZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrTWV0YVtcIm5hbWVcIl07XG4gICAgaWYgKGJMb2FkQ2hpbGRyZW4gJiYgb1dvcmtEYXRhKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lck5hbWUkID0gdGhpcy5sb2NhbGl6ZWRWYWwodGhpcy5nZXRBY3RpdmVWaWV3TGFiZWwoKSB8fCBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHNbMF0ubmFtZSwgdW5kZWZpbmVkLCB0aGlzLmxvY2FsZVJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLy8gdHVybiBvZmYgc3Bpbm5lclxuICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgfVxuXG4gIGlzQ2FzZVdpZGVMb2NhbEFjdGlvbigpIHtcbiAgICBjb25zdCBhY3Rpb25JRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKHRoaXMucENvcmVDb25zdGFudHMuQ0FTRV9JTkZPLkFDVElWRV9BQ1RJT05fSUQpO1xuICAgIGNvbnN0IGNhc2VBY3Rpb25zID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUodGhpcy5wQ29yZUNvbnN0YW50cy5DQVNFX0lORk8uQVZBSUxBQkxFQUNUSU9OUyk7XG4gICAgbGV0IGJDYXNlV2lkZUFjdGlvbiA9IGZhbHNlO1xuICAgIGlmIChjYXNlQWN0aW9ucyAmJiBhY3Rpb25JRCkge1xuICAgICAgY29uc3QgYWN0aW9uT2JqID0gY2FzZUFjdGlvbnMuZmluZChjYXNlQWN0aW9uID0+IGNhc2VBY3Rpb24uSUQgPT09IGFjdGlvbklEKTtcbiAgICAgIGlmIChhY3Rpb25PYmopIHtcbiAgICAgICAgYkNhc2VXaWRlQWN0aW9uID0gYWN0aW9uT2JqLnR5cGUgPT09ICdDYXNlJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJDYXNlV2lkZUFjdGlvbjtcbiAgfVxuXG4gIGhhc0NoaWxkQ2FzZUFzc2lnbm1lbnRzKCkge1xuICAgIGNvbnN0IGNoaWxkQ2FzZXMgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSh0aGlzLnBDb3JlQ29uc3RhbnRzLkNBU0VfSU5GTy5DSElMRF9BU1NJR05NRU5UUyk7XG5cbiAgICByZXR1cm4gY2hpbGRDYXNlcyAmJiBjaGlsZENhc2VzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXRBY3RpdmVWaWV3TGFiZWwoKSB7XG4gICAgbGV0IGFjdGl2ZUFjdGlvbkxhYmVsID0gJyc7XG5cbiAgICBjb25zdCB7IENBU0VfSU5GTzogQ0FTRV9DT05TVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuXG4gICAgY29uc3QgY2FzZUFjdGlvbnMgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShDQVNFX0NPTlNUUy5DQVNFX0lORk9fQUNUSU9OUykgYXMgYW55W107XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShDQVNFX0NPTlNUUy5BQ1RJVkVfQUNUSU9OX0lEKTtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucz8uZmluZChhY3Rpb24gPT4gYWN0aW9uLklEID09PSBhY3RpdmVBY3Rpb25JRCk7XG4gICAgaWYgKGFjdGl2ZUFjdGlvbikge1xuICAgICAgYWN0aXZlQWN0aW9uTGFiZWwgPSBhY3RpdmVBY3Rpb24ubmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2ZUFjdGlvbkxhYmVsO1xuICB9XG5cbiAgZmluZEN1cnJlbnRJbmRpY2llcyhhclN0ZXBwZXJTdGVwczogYW55W10sIGFySW5kaWNpZXM6IG51bWJlcltdLCBkZXB0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgYXJTdGVwcGVyU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdjdXJyZW50Jykge1xuICAgICAgICBhckluZGljaWVzW2RlcHRoXSA9IGNvdW50O1xuXG4gICAgICAgIC8vIGFkZCBpblxuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcbiAgICAgICAgYXJJbmRpY2llcyA9IHRoaXMuZmluZEN1cnJlbnRJbmRpY2llcyhzdGVwLnN0ZXBzLCBhckluZGljaWVzLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFySW5kaWNpZXM7XG4gIH1cblxuICAvLyBDYWxsZWQgd2hlbiBicmlkZ2Ugc2hvdWxkQ29tcG9uZW50VXBkYXRlIGluZGljYXRlcyB0aGF0IHRoaXMgY29tcG9uZW50XG4gIC8vIHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgLy8gZm9yIG5vd1xuICAgIC8vIGNvbnN0IHsgZ2V0UENvbm5lY3QgfSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcbiAgICBjb25zdCBsb2NhbFBDb25uID0gdGhpcy5hckNoaWxkcmVuJFswXS5nZXRQQ29ubmVjdCgpO1xuXG4gICAgdGhpcy5wQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSA9IHRoaXMuZ2V0UENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0odGhpcy5wQ29ubiQpIHx8IHRoaXMucENvbm4kO1xuXG4gICAgY29uc3QgY2FzZVZpZXdNb2RlID0gdGhpcy5wQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbS5nZXRWYWx1ZSgnY29udGV4dF9kYXRhLmNhc2VWaWV3TW9kZScpO1xuICAgIHRoaXMuYlNob3dCYW5uZXIgPSBzaG93QmFubmVyKHRoaXMucENvbm4kKTtcblxuICAgIGlmIChjYXNlVmlld01vZGUgJiYgY2FzZVZpZXdNb2RlID09ICdyZXZpZXcnKSB7XG4gICAgICB0aGlzLmxvYWRSZXZpZXdQYWdlKGxvY2FsUENvbm4pO1xuXG4gICAgICAvLyBpbiBOZWJ1bGEvQ29uc3RlbGxhdGlvbiwgd2hlbiBjYW5jZWwgaXMgY2FsbGVkLCBzb21laG93IHRoZSBjb25zdHJ1Y3RvciBmb3IgZmxvd0NvbnRhaW5lciBpcyBjYWxsZWQgd2hpY2hcbiAgICAgIC8vIGRvZXMgaW5pdC9hZGQgb2YgY29udGFpbmVycy4gIFRoaXMgbWltaWNzIHRoYXRcbiAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdva1RvSW5pdEZsb3dDb250YWluZXInKSA9PSAndHJ1ZScpIHtcbiAgICAgICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYXNlVmlld01vZGUgJiYgY2FzZVZpZXdNb2RlID09PSAncGVyZm9ybScpIHtcbiAgICAgIC8vIHBlcmZvcm1cbiAgICAgIHRoaXMudG9kb19zaG93VG9kbyQgPSBmYWxzZTtcblxuICAgICAgLy8gdGhpcyBpcyBkaWZmZXJlbnQgdGhhbiBBbmd1bGFyIFNESywgYXMgd2UgbmVlZCB0byBpbml0Q29udGFpbmVyIGlmIHJvb3QgY29udGFpbmVyIHJlbG9hZGVkXG4gICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJykgPT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGhhdmUgY2FzZU1lc3NhZ2Ugc2hvdyBtZXNzYWdlIGFuZCBlbmRcbiAgICB0aGlzLnNob3dDYXNlTWVzc2FnZXMoKTtcblxuICAgIHRoaXMudXBkYXRlRmxvd0NvbnRhaW5lckNoaWxkcmVuKCk7XG4gIH1cblxuICBsb2FkUmV2aWV3UGFnZShsb2NhbFBDb25uKSB7XG4gICAgY29uc3QgeyBDQVNFX0lORk86IENBU0VfQ09OU1RTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgLypcbiAgICAgICAgICAqKiogcmVub3ZlIHRoaXMgY29tbW1lbnRlZCBvdXQgY29kZSB3aGVuIFJlYWN0L1dDIGlzIHVwZGF0ZWRcbiAgICAgICAgICAqKiogdGhpcyBjb2RlIGlzIHJlcGxhY2Ugd2l0aCB0aGUgY2FsbCB0byBcImdldFRvRG9Bc3NpZ21lbnRzXCIgZnVuY3Rpb24gYmVsb3dcblxuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnRzTGlzdCA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoXG4gICAgICAgICAgICBDQVNFX0NPTlNUUy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUU1xuICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAvLyBhZGQgc3RhdHVzXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gbG9jYWxQQ29ubi5nZXRWYWx1ZShcImNhc2VJbmZvLnN0YXR1c1wiKTtcblxuICAgICAgICAgIGxldCBsb2NhbEFzc2lnbm1lbnQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGFzc2lnbm1lbnRzTGlzdFswXSkpO1xuICAgICAgICAgIGxvY2FsQXNzaWdubWVudC5zdGF0dXMgPSBzdGF0dXM7XG4gICAgICAgICAgbGV0IGxvY2FBc3NpZ25tZW50c0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgICAgICBsb2NhQXNzaWdubWVudHNMaXN0LnB1c2gobG9jYWxBc3NpZ25tZW50KTtcblxuICAgICAgICAgIGNvbnN0IGNhc2VBY3Rpb25zID0gbG9jYWxQQ29ubi5nZXRWYWx1ZShDQVNFX0NPTlNUUy5DQVNFX0lORk9fQUNUSU9OUyk7XG4gICAgICAgICAgKi9cblxuICAgICAgICBjb25zdCB0b2RvQXNzaWdubWVudHMgPSBnZXRUb0RvQXNzaWdubWVudHModGhpcy5wQ29ubiQpO1xuXG4gICAgICAgIGlmICh0b2RvQXNzaWdubWVudHMgJiYgdG9kb0Fzc2lnbm1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnRvZG9fY2FzZUluZm9JRCQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShDQVNFX0NPTlNUUy5DQVNFX0lORk9fSUQpO1xuICAgICAgICAgIHRoaXMudG9kb19kYXRhc291cmNlJCA9IHsgc291cmNlOiB0b2RvQXNzaWdubWVudHMgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIHJlbW92ZSB0aGlzIGNvbW1lbnRlZCBvdXQgY29kZSB3aGVuIHVwZGF0ZSBSZWFjdC9XQyAqL1xuICAgICAgICAvLyBsZXQga2lkID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKVswXTtcblxuICAgICAgICAvLyBraWQuZ2V0UENvbm5lY3QoKSBjYW4gYmUgYSBSZWZlcmVuY2UgY29tcG9uZW50LiBTbyBub3JtYWxpemUgaXQganVzdCBpbiBjYXNlXG4gICAgICAgIC8vICAgICAgICBsZXQgdG9kb0tpZCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihraWQuZ2V0UENvbm5lY3QoKSkuZ2V0Q2hpbGRyZW4oKVswXTtcblxuICAgICAgICAvLyAgICAgICAgdGhpcy50b2RvX3BDb25uJCA9IHRvZG9LaWQuZ2V0UENvbm5lY3QoKTtcblxuICAgICAgICAvKiBjb2RlIGNoYW5nZSBoZXJlIHRvIG5vdGUgZm9yIFJlYWN0L1dDICAqL1xuICAgICAgICAvLyB0b2RvIG5vdyBuZWVkcyBwQ29ubiB0byBvcGVuIHRoZSB3b3JrIGl0ZW0gb24gY2xpY2sgXCJnb1wiXG4gICAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0aGlzLnBDb25uJDtcblxuICAgICAgICAvLyBzdGlsbCBuZWVkcyB0aGUgY29udGV4dCBvZiB0aGUgb3JpZ2luYWwgd29yayBpdGVtXG4gICAgICAgIHRoaXMudG9kb19jb250ZXh0JCA9IGxvY2FsUENvbm4uZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgICAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dDYXNlTWVzc2FnZXMoKSB7XG4gICAgdGhpcy5jYXNlTWVzc2FnZXMkID0gdGhpcy5sb2NhbGl6ZWRWYWwodGhpcy5wQ29ubiQuZ2V0VmFsdWUoJ2Nhc2VNZXNzYWdlcycpLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgICAvLyBjYXNlTWVzc2FnZXMncyBiZWhhdmlvciBoYXMgY2hhbmdlZCBpbiAyNC4yLCBhbmQgaGVuY2UgaXQgZG9lc24ndCBsZXQgT3B0aW9uYWwgQWN0aW9uIHdvcmsuXG4gICAgLy8gQ2hhbmdpbmcgdGhlIGJlbG93IGNvbmRpdGlvbiBmb3Igbm93LiBXYXM6ICh0aGVDYXNlTWVzc2FnZXMgfHwgIWhhc0Fzc2lnbm1lbnRzKCkpXG4gICAgaWYgKCFoYXNBc3NpZ25tZW50cyh0aGlzLnBDb25uJCkpIHtcbiAgICAgIHRoaXMuYkhhc0Nhc2VNZXNzYWdlcyQgPSB0cnVlO1xuICAgICAgdGhpcy5iU2hvd0NvbmZpcm0gPSB0cnVlO1xuICAgICAgdGhpcy5jaGVja1N2ZyQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdjaGVjaycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gZmFsc2U7XG4gICAgICB0aGlzLmJTaG93Q29uZmlybSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG4gICAgdGhpcy5jb25maXJtX3Bjb25uID0gbnVsbDtcblxuICAgIGxldCBsb2FkaW5nSW5mbzogYW55O1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG5cbiAgICAvLyB0aGlzIGNoZWNrIGluIHJvdXRpbmdJbmZvLCBtaW1pYyBOZWJ1bGEvQ29uc3RlbGxhdGlvbiAoUmVhY3QpIHRvIGNoZWNrIGFuZCBnZXQgdGhlIGludGVybmFscyBvZiB0aGVcbiAgICAvLyBmbG93Q29udGFpbmVyIGFuZCBmb3JjZSB1cGRhdGVzIHRvIHBDb25uZWN0L3JlZHV4XG4gICAgaWYgKHJvdXRpbmdJbmZvICYmIGxvYWRpbmdJbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlciA9IHJvdXRpbmdJbmZvLmFjY2Vzc2VkT3JkZXI7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSByb3V0aW5nSW5mby5pdGVtcztcbiAgICAgIGNvbnN0IHR5cGUgPSByb3V0aW5nSW5mby50eXBlO1xuICAgICAgaWYgKGN1cnJlbnRPcmRlciAmJiBjdXJyZW50SXRlbXMpIHtcbiAgICAgICAgLy8gSkEgLSBtYWtpbmcgbW9yZSBzaW1pbGFyIHRvIE5lYnVsYS9Db25zdGVsbGF0aW9uXG4gICAgICAgIGNvbnN0IGtleSA9IGN1cnJlbnRPcmRlcltjdXJyZW50T3JkZXIubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gc2F2ZSBvZmYgaXRlbUtleSB0byBiZSB1c2VkIGZvciBmaW5pc2hBc3NpZ25tZW50LCBldGMuXG4gICAgICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoa2V5ICYmIGtleSAhPSAnJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tY29sbGFwc2libGUtaWZcbiAgICAgICAgaWYgKGN1cnJlbnRPcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRJdGVtc1trZXldICYmIGN1cnJlbnRJdGVtc1trZXldLnZpZXcgJiYgdHlwZSA9PT0gJ3NpbmdsZScgJiYgT2JqZWN0LmtleXMoY3VycmVudEl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gd2hlbiB3ZSBnZXQgaGVyZSwgaXQgaXQgYmVjYXVzZSB0aGUgZmxvdyBhY3Rpb24gZGF0YSBoYXMgY2hhbmdlZFxuICAgICAgICAgICAgLy8gZnJvbSB0aGUgc2VydmVyLCBhbmQgbmVlZCB0byBhZGQgdG8gcENvbm5lY3QgYW5kIHVwZGF0ZSBjaGlsZHJlblxuXG4gICAgICAgICAgICB0aGlzLmFkZFBDb25uZWN0QW5kVXBkYXRlQ2hpbGRyZW4oY3VycmVudEl0ZW1zW2tleV0sIGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkUENvbm5lY3RBbmRVcGRhdGVDaGlsZHJlbihjdXJyZW50SXRlbSwga2V5KSB7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIGNvbnN0IHJvb3RWaWV3ID0gY3VycmVudEl0ZW0udmlldztcbiAgICBjb25zdCB7IGNvbnRleHQsIG5hbWU6IFZpZXdOYW1lIH0gPSByb290Vmlldy5jb25maWc7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG5cbiAgICAvLyBEb24ndCBnbyBhaGVhZCBpZiBWaWV3IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIVZpZXdOYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2RvX2NvbnRleHQkID0gY3VycmVudEl0ZW0uY29udGV4dDtcblxuICAgIGNvbmZpZy5vcHRpb25zID0ge1xuICAgICAgY29udGV4dDogY3VycmVudEl0ZW0uY29udGV4dCxcbiAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgaXNGbG93Q29udGFpbmVyOiB0cnVlLFxuICAgICAgY29udGFpbmVyTmFtZTogbG9jYWxQQ29ubi5nZXRDb250YWluZXJOYW1lKCksXG4gICAgICBjb250YWluZXJJdGVtTmFtZToga2V5LFxuICAgICAgcGFyZW50UGFnZVJlZmVyZW5jZTogbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKClcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpcm1fcGNvbm4gPSBjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKTtcbiAgICAvLyA4LjcgLSBjb25maWcgbWlnaHQgYmUgYSBSZWZlcmVuY2UgY29tcG9uZW50IHNvLCBuZWVkIHRvIG5vcm1hbGl6ZSBpdCB0byBnZXRcbiAgICAvLyAgdGhlIFZpZXcgaWYgaXQgaXMgYSBSZWZlcmVuY2UgY29tcG9uZW50LiBBbmQgbmVlZCB0byBwYXNzIGluIHRoZSBnZXRQQ29ubmVjdFxuICAgIC8vICB0byBoYXZlIG5vcm1hbGl6ZSBkbyBhIGMxMUVudiBjcmVhdGVDb21wb25lbnQgKHRoYXQgbWFrZXMgc3VyZSBvcHRpb25zLmhhc0Zvcm1cbiAgICAvLyAgaXMgcGFzc2VkIGFsb25nIHRvIGFsbCB0aGUgY29tcG9uZW50J3MgY2hpbGRyZW4pXG4gICAgY29uc3Qgbm9ybWFsaXplZENvbmZpZ09iamVjdCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKSk7XG4gICAgLy8gV2Ugd2FudCB0aGUgY2hpbGRyZW4gdG8gYmUgdGhlIFBDb25uZWN0IGl0c2VsZiwgbm90IHRoZSByZXN1bHQgb2YgY2FsbGluZyBnZXRQQ29ubmVjdCgpLFxuICAgIC8vICBTbyBuZWVkIHRvIGdldCB0aGUgUENvbm5lY3Qgb2YgdGhlIG5vcm1hbGl6ZWQgY29tcG9uZW50IHdlIGp1c3QgY3JlYXRlZC4uLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRDb25maWdPYmplY3RBc1BDb25uZWN0ID0gbm9ybWFsaXplZENvbmZpZ09iamVjdC5nZXRDb21wb25lbnQoKTtcblxuICAgIC8vIG1ha2VzIHN1cmUgQW5ndWxhciB0cmFja3MgdGhlc2UgY2hhbmdlc1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJ1aWxkTmFtZSQgPSB0aGlzLmdldEJ1aWxkTmFtZSgpO1xuICAgICAgLy8gd2hhdCBjb21lcyBiYWNrIG5vdyBpbiBjb25maWdPYmplY3QgaXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBmbG93Q29udGFpbmVyXG5cbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBbXTtcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQucHVzaChub3JtYWxpemVkQ29uZmlnT2JqZWN0QXNQQ29ubmVjdCk7XG5cbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgY29uc3Qgb1dvcmtJdGVtID0gY29uZmlnT2JqZWN0LmdldFBDb25uZWN0KCk7XG4gICAgICBjb25zdCBvV29ya0RhdGE6IGFueSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyTmFtZSQgPSB0aGlzLmxvY2FsaXplZFZhbCh0aGlzLmdldEFjdGl2ZVZpZXdMYWJlbCgpIHx8IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0QnVpbGROYW1lKCk6IHN0cmluZyB7XG4gICAgLy8gbGV0IHsgZ2V0UENvbm5lY3QsIG5hbWUgfSA9IHRoaXMucENvbm4kLnByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCB2aWV3Q29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIGlmICghdmlld0NvbnRhaW5lck5hbWUpIHZpZXdDb250YWluZXJOYW1lID0gJyc7XG4gICAgcmV0dXJuIGAke2NvbnRleHQudG9VcHBlckNhc2UoKX0vJHt2aWV3Q29udGFpbmVyTmFtZS50b1VwcGVyQ2FzZSgpfWA7XG4gIH1cblxuICBmb3JtVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgdGhpcy50b3VjaEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cCQudmFsaWQ7XG4gIH1cblxuICB0b3VjaEFsbCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9wVmlld1JlZnJlc2goKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhlbHBlcnMgLSBjb3B5aWVkIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycy5qc1xuXG4gIGFkZENvbnRhaW5lckl0ZW0ocENvbm5lY3QpIHtcbiAgICAvLyBjb3BpZWQgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXIuanNcbiAgICBjb25zdCBjb250YWluZXJNYW5hZ2VyID0gcENvbm5lY3QuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTsgLy8gaGVyZSB3ZSB3aWxsIGdldCBwYXJlbnQgY29udGV4dCBuYW1lLCBhcyBmbG93IGNvbnRhaW5lciBpcyBjaGlsZCBvZiB2aWV3IGNvbnRhaW5lclxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHBDb25uZWN0LmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG5cbiAgICBsZXQga2V5O1xuICAgIGxldCBmbG93TmFtZTtcblxuICAgIGlmIChjYXNlVmlld01vZGUgIT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBjb250ZXh0TmFtZS5zdWJzdHJpbmcoMCwgY29udGV4dE5hbWUubGFzdEluZGV4T2YoJ18nKSk7XG4gICAgICBjb25zdCBhY3RpdmVDb250YWluZXJJdGVtSUQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldEFjdGl2ZUNvbnRhaW5lckl0ZW1OYW1lKHRhcmdldCk7XG4gICAgICBjb25zdCBjb250YWluZXJJdGVtRGF0YSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGFyZ2V0LCBhY3RpdmVDb250YWluZXJJdGVtSUQpO1xuXG4gICAgICBpZiAoY29udGFpbmVySXRlbURhdGEpIHtcbiAgICAgICAgKHsga2V5LCBmbG93TmFtZSB9ID0gY29udGFpbmVySXRlbURhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICBzZW1hbnRpY1VSTDogJycsXG4gICAgICBrZXksXG4gICAgICBmbG93TmFtZSxcbiAgICAgIGNhc2VWaWV3TW9kZTogJ3BlcmZvcm0nLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQVNTSUdOTUVOVCcsXG4gICAgICBkYXRhOiBwQ29ubmVjdC5nZXREYXRhT2JqZWN0KGNvbnRleHROYW1lKVxuICAgIH0pO1xuICB9XG4gIC8vIGhlbHBlcnMgZW5kXG59XG4iLCI8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiIGNsYXNzPVwicHNkay1mbG93LWNvbnRhaW5lci10b3BcIj5cbiAgPGRpdiAqbmdJZj1cIiFiU2hvd0NvbmZpcm1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRvZG9fc2hvd1RvZG8kXCI+XG4gICAgICA8aDI+e3sgY29udGFpbmVyTmFtZSQgfX08L2gyPlxuICAgICAgPGRpdiAqbmdJZj1cImJhbm5lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiVG9kb1wiXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgcENvbm4kOiBwQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSxcbiAgICAgICAgICBjYXNlSW5mb0lEJDogdG9kb19jYXNlSW5mb0lEJCxcbiAgICAgICAgICBkYXRhc291cmNlJDogdG9kb19kYXRhc291cmNlJCxcbiAgICAgICAgICBzaG93VG9kb0xpc3QkOiB0b2RvX3Nob3dUb2RvTGlzdCQsXG4gICAgICAgICAgaGVhZGVyVGV4dCQ6IHRvZG9faGVhZGVyVGV4dCQsXG4gICAgICAgICAgdHlwZSQ6ICdUT0RPJyxcbiAgICAgICAgICBjb250ZXh0JDogdG9kb19jb250ZXh0JCxcbiAgICAgICAgICBpc0NvbmZpcm06IHRydWVcbiAgICAgICAgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogcENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0sIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Nhc2VNZXNzYWdlcyRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJwc2RrLW1lc3NhZ2UtY2FyZFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIj5cbiAgICAgICAgPGRpdj48aW1nIGNsYXNzPVwicHNkay1pY29uXCIgc3JjPVwie3sgY2hlY2tTdmckIH19XCIgLz48L2Rpdj5cbiAgICAgICAgPGRpdj57eyBjYXNlTWVzc2FnZXMkIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93QmFubmVyICYmIGJTaG93Q29uZmlybSAmJiBjb25maXJtX3Bjb25uXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBmb3JtR3JvdXAkLCBwQ29ubiQ6IGNvbmZpcm1fcGNvbm4gfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQTZCLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDM0csT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7QUF3QjlGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUF3Q3BFLFlBQ0UsUUFBa0IsRUFDVixLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxFQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQVk7UUFFcEIsS0FBSyxDQUFDLFFB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LENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBRXhHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7WUFDaEMsV0FBVyxFQUFFLEVBQUU7WUFDZixHQUFHO1lBQ0gsUUFBUTtZQUNSLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9qQlUsc0JBQXNCO21HQUF0QixzQkFBc0IsK0ZBSnRCLENBQUMsS0FBSyxDQUFDLGlEQzlCcEIscWxEQTRDQSw2RURaWSxZQUFZLDRLQUFFLGFBQWEsdUxBQW1CLHdCQUF3Qjs7NEZBRXJFLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxvQkFBb0IsYUFHbkIsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3FOQUd6RSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgcHVibGljQ29uc3RhbnRzIH0gZnJvbSAnQHBlZ2EvcGNvcmUtcGNvbm5lY3QtdHlwZWRlZnMvY29uc3RhbnRzJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0VG9Eb0Fzc2lnbm1lbnRzLCBoYXNBc3NpZ25tZW50cywgc2hvd0Jhbm5lciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd0NvbnRhaW5lckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWNvbXBvbmVudHMvZmxvdy1jb250YWluZXItYmFzZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFdBUk5JTkc6ICBJdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCB0aGlzIGZpbGUgc2hvdWxkIGJlIG1vZGlmaWVkLiAgSXQgaXMgcGFydCBvZiBpbmZyYXN0cnVjdHVyZSBjb2RlIHRoYXQgd29ya3Mgd2l0aFxuICogUmVkdXggYW5kIGNyZWF0aW9uL3VwZGF0ZSBvZiBSZWR1eCBjb250YWluZXJzIGFuZCBQQ29ubmVjdC4gIE1vZGlmeWluZyB0aGlzIGNvZGUgY291bGQgaGF2ZSB1bmRlc2lyZWFibGUgcmVzdWx0cyBhbmRcbiAqIGlzIHRvdGFsbHkgYXQgeW91ciBvd24gcmlzay5cbiAqL1xuXG5pbnRlcmZhY2UgRmxvd0NvbnRhaW5lclByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBjaGlsZHJlbj86IGFueVtdO1xuICBuYW1lPzogc3RyaW5nO1xuICByb3V0aW5nSW5mbz86IGFueTtcbiAgcGFnZU1lc3NhZ2VzOiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZsb3ctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBGbG93Q29udGFpbmVyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgcENvcmVDb25zdGFudHM6IHR5cGVvZiBwdWJsaWNDb25zdGFudHM7XG4gIGNvbmZpZ1Byb3BzJDogRmxvd0NvbnRhaW5lclByb3BzO1xuXG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBpdGVtS2V5JCA9ICcnO1xuICBjb250YWluZXJOYW1lJDogc3RyaW5nO1xuICBidWlsZE5hbWUkOiBzdHJpbmc7XG5cbiAgLy8gdG9kb1xuICB0b2RvX3Nob3dUb2RvJCA9IGZhbHNlO1xuICB0b2RvX2Nhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIHRvZG9fc2hvd1RvZG9MaXN0JCA9IGZhbHNlO1xuICB0b2RvX2RhdGFzb3VyY2UkOiBhbnk7XG4gIHRvZG9faGVhZGVyVGV4dCQgPSAnVG8gZG8nO1xuICB0b2RvX3R5cGUkOiBzdHJpbmc7XG4gIHRvZG9fY29udGV4dCQ6IHN0cmluZztcbiAgdG9kb19wQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBiSGFzQ2FuY2VsID0gZmFsc2U7XG5cbiAgLy8gbWVzc2FnZXNcbiAgY2FzZU1lc3NhZ2VzJDogc3RyaW5nO1xuICBiSGFzQ2FzZU1lc3NhZ2VzJCA9IGZhbHNlO1xuICBjaGVja1N2ZyQ6IHN0cmluZztcbiAgVE9ETzogYW55O1xuICBiU2hvd0NvbmZpcm0gPSBmYWxzZTtcbiAgYlNob3dCYW5uZXI6IGJvb2xlYW47XG4gIGNvbmZpcm1fcGNvbm46IGFueTtcbiAgbG9jYWxpemVkVmFsOiBhbnk7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ01lc3NhZ2VzJztcbiAgbG9jYWxlUmVmZXJlbmNlOiBhbnk7XG4gIGJhbm5lcnM6IGFueVtdO1xuICAvLyBpdGVtS2V5OiBzdHJpbmcgPSBcIlwiOyAgIC8vIEpBIC0gdGhpcyBpcyB3aGF0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgdG8gcGFzcyB0byBmaW5pc2hBc3NpZ25tZW50LCBuYXZpZ2F0ZVRvU3RlcFxuXG4gIHBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAvLyBjcmVhdGUgdGhlIGZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwJCA9IHRoaXMuZmIuZ3JvdXAoeyBoaWRlUmVxdWlyZWQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gICAgY29uc3QgY2FzZUluZm8gPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpO1xuICAgIHRoaXMubG9jYWxlUmVmZXJlbmNlID0gYCR7Y2FzZUluZm8/LmdldENsYXNzTmFtZSgpfSFDQVNFISR7Y2FzZUluZm8uZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGdldCB0aGUgUENvcmUgY29uc3RhbnRzXG4gICAgdGhpcy5wQ29yZUNvbnN0YW50cyA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgVE9ETyB9ID0gdGhpcy5wQ29yZUNvbnN0YW50cztcbiAgICB0aGlzLlRPRE8gPSBUT0RPO1xuICAgIC8vIHdpdGggaW5pdCwgZm9yY2UgY2hpbGRyZW4gdG8gYmUgbG9hZGVkIG9mIGdsb2JhbCBwQ29ublxuICAgIHRoaXMuaW5pdENvbXBvbmVudCh0cnVlKTtcblxuICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuXG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9LFxuICAgICAgJ2NhbmNlbEFzc2lnbm1lbnQnXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgJ2NhbmNlbFByZXNzZWQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbmNlbFByZXNzZWQoKTtcbiAgICAgIH0sXG4gICAgICAnY2FuY2VsUHJlc3NlZCdcbiAgICApO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAnY2xlYXJCYW5uZXJNZXNzYWdlcycsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmFubmVycyA9IFtdO1xuICAgICAgfSxcbiAgICAgICdjbGVhckJhbm5lck1lc3NhZ2VzJ1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICdjYW5jZWxBc3NpZ25tZW50Jyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKCdjYW5jZWxQcmVzc2VkJywgJ2NhbmNlbFByZXNzZWQnKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoJ2NsZWFyQmFubmVyTWVzc2FnZXMnLCAnY2xlYXJCYW5uZXJNZXNzYWdlcycpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsKCkge1xuICAgIC8vIGNhbmNlbCBoYXBwZW5lZCwgc28gb2sgdG8gaW5pdGlhbGl6ZSB0aGUgZmxvdyBjb250YWluZXJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdva1RvSW5pdEZsb3dDb250YWluZXInLCAndHJ1ZScpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsUHJlc3NlZCgpIHtcbiAgICB0aGlzLmJIYXNDYW5jZWwgPSB0cnVlO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICBjb25zdCBwQ29ubiA9IHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0gfHwgdGhpcy5wQ29ubiQ7XG4gICAgY29uc3QgY2FzZVZpZXdNb2RlRnJvbVByb3BzID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50UHJvcCh0aGlzLCAnY2FzZVZpZXdNb2RlJyk7XG4gICAgY29uc3QgY2FzZVZpZXdNb2RlRnJvbVJlZHV4ID0gcENvbm4uZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnLCAnJyk7XG5cbiAgICBjb25zdCBjb21wbGV0ZVByb3BzID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q3VycmVudENvbXBsZXRlUHJvcHModGhpcykgYXMgRmxvd0NvbnRhaW5lclByb3BzO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLWNvbGxhcHNpYmxlLWlmXG4gICAgaWYgKGJVcGRhdGVTZWxmIHx8IGNhc2VWaWV3TW9kZUZyb21Qcm9wcyAhPT0gY2FzZVZpZXdNb2RlRnJvbVJlZHV4KSB7XG4gICAgICAvLyBkb24ndCB3YW50IHRvIHJlZHJhdyB0aGUgZmxvdyBjb250YWluZXIgd2hlbiB0aGVyZSBhcmUgcGFnZSBtZXNzYWdlcywgYmVjYXVzZVxuICAgICAgLy8gdGhlIHJlZHJhdyBjYXVzZXMgdXMgdG8gbG9vc2UgdGhlIGVycm9ycyBvbiB0aGUgZWxlbWVudHNcbiAgICAgIGlmICghY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMgfHwgY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgLy8gd2l0aCBhIGNhbmNlbCwgbmVlZCB0byB0aW1lb3V0IHNvIHRvZG8gd2lsbCB1cGRhdGUgY29ycmVjdGx5XG4gICAgICAgIGlmICh0aGlzLmJIYXNDYW5jZWwpIHtcbiAgICAgICAgICB0aGlzLmJIYXNDYW5jZWwgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNob3dQYWdlTWVzc2FnZXMoY29tcGxldGVQcm9wcyk7XG4gIH1cblxuICBzaG93UGFnZU1lc3NhZ2VzKGNvbXBsZXRlUHJvcHM6IEZsb3dDb250YWluZXJQcm9wcykge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBwYWdlTWVzc2FnZXMgPSBjb21wbGV0ZVByb3BzLnBhZ2VNZXNzYWdlcztcbiAgICAgIHRoaXMuYmFubmVycyA9IFt7IG1lc3NhZ2VzOiBwYWdlTWVzc2FnZXM/Lm1hcChtc2cgPT4gdGhpcy5sb2NhbGl6ZWRWYWwobXNnLm1lc3NhZ2UsICdNZXNzYWdlcycpKSwgdmFyaWFudDogJ3VyZ2VudCcgfV07XG4gICAgfSk7XG4gIH1cblxuICBnZXRUb2RvVmlzaWJpbHR5KCkge1xuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm4kLmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG4gICAgaWYgKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCBraWQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpWzBdO1xuICAgICAgY29uc3QgdG9kb0tpZCA9IGtpZC5nZXRQQ29ubmVjdCgpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdwZXJmb3JtJyk7XG4gIH1cblxuICBpbml0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck1nciA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgY29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBjb25zdCBjb250YWluZXJUeXBlID0gJ3NpbmdsZSc7XG5cbiAgICBjb25zdCBmbG93Q29udGFpbmVyVGFyZ2V0ID0gYCR7YmFzZUNvbnRleHR9LyR7Y29udGFpbmVyTmFtZX1gO1xuICAgIGNvbnN0IGlzQ29udGFpbmVySXRlbUF2YWlsYWJsZSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0QWN0aXZlQ29udGFpbmVySXRlbU5hbWUoZmxvd0NvbnRhaW5lclRhcmdldCk7XG5cbiAgICAvLyBjbGVhciBvdXQgc2luY2Ugd2UgYXJlIGluaXRpYWxpemluZ1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicsICdmYWxzZScpO1xuXG4gICAgaWYgKCFpc0NvbnRhaW5lckl0ZW1BdmFpbGFibGUpIHtcbiAgICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICAgIHR5cGU6IGNvbnRhaW5lclR5cGVcbiAgICAgIH0pO1xuXG4gICAgICAvKiByZW1vdmUgY29tbWVudGVkIG91dCBjb2RlIHdoZW4gdXBkYXRlIFJlYWN0L1dDXG4gICAgICAgKioqIGluc3RlYWQgb2YgZ2V0dGluZyB2YWx1ZXMgaGVyZSB0byBwYXNzIHRvIGFkZENvbnRhaW5lckl0ZW0sIHdlIGNhbGwgdGhlIGZ1bmN0aW9uIGJlbG93IFwiYWRkQ29udGFpbmVySXRlbVwiXG4gICAgICAgKioqIHdoaWNoIGNvbWVzIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycyBpbiBOZWJ1bGFcbiAgICAgICAqL1xuICAgICAgLy8gY29udGFpbmVyTWdyLmFkZENvbnRhaW5lckl0ZW0oe1xuICAgICAgLy8gICBzZW1hbnRpY1VSTDogXCJcIixcbiAgICAgIC8vICAga2V5OiB0aGlzLnBDb25uJC5nZXRWYWx1ZShcImtleVwiKSxcbiAgICAgIC8vICAgZmxvd05hbWU6IHRoaXMucENvbm4kLmdldFZhbHVlKFwiZmxvd05hbWVcIiksXG4gICAgICAvLyAgIGNhc2VWaWV3TW9kZTogXCJwZXJmb3JtXCIsXG4gICAgICAvLyAgIGRhdGE6IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoYmFzZUNvbnRleHQpLFxuICAgICAgLy8gICBjb250YWluZXJUeXBlXG4gICAgICAvLyB9KTtcblxuICAgICAgdGhpcy5hZGRDb250YWluZXJJdGVtKHRoaXMucENvbm4kKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q29tcG9uZW50KGJMb2FkQ2hpbGRyZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBGbG93Q29udGFpbmVyUHJvcHM7XG4gICAgdGhpcy5zaG93UGFnZU1lc3NhZ2VzKHRoaXMuY29uZmlnUHJvcHMkKTtcblxuICAgIC8vIHdoZW4gdHJ1ZSwgdXBkYXRlIGFyQ2hpbGRyZW4gZnJvbSBwQ29ubiwgb3RoZXJ3aXNlLCBhckNoaWxyZW4gd2lsbCBiZSB1cGRhdGVkIGluIHVwZGF0ZVNlbGYoKVxuICAgIGlmIChiTG9hZENoaWxkcmVuKSB7XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvLyBjb25zdCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIGNvbnN0IGFjdGl2ZUFjdGlvbkxhYmVsOiBzdHJpbmcgPSAnJztcbiAgICAvLyBjb25zdCB7IGdldFBDb25uZWN0IH0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG5cbiAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gdGhpcy5nZXRUb2RvVmlzaWJpbHR5KCk7XG5cbiAgICAvLyBjcmVhdGUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zXG4gICAgLy8gY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIC8vIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIGlmICh0aGlzLml0ZW1LZXkkID09PSAnJykge1xuICAgICAgdGhpcy5pdGVtS2V5JCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG5cbiAgICAvLyBpbnNpZGVcbiAgICAvLyBnZXQgZmlzdCBraWQsIGdldCB0aGUgbmFtZSBhbmQgZGlzcGxheVxuICAgIC8vIHBhc3MgZmlyc3Qga2lkIHRvIGEgdmlldyBjb250YWluZXIsIHdoaWNoIHdpbGwgZGlzcGVyc2UgaXQgdG8gYSB2aWV3IHdoaWNoIHdpbGwgdXNlIG9uZSBjb2x1bW4sIHR3byBjb2x1bW4sIGV0Yy5cbiAgICBjb25zdCBvV29ya0l0ZW0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgLy8gY29uc3Qgb1dvcmtNZXRhID0gb1dvcmtJdGVtLmdldFJhd01ldGFkYXRhKCk7XG4gICAgY29uc3Qgb1dvcmtEYXRhID0gb1dvcmtJdGVtLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIHRoaXMuY29udGFpbmVyTmFtZSQgPSBvV29ya01ldGFbXCJuYW1lXCJdO1xuICAgIGlmIChiTG9hZENoaWxkcmVuICYmIG9Xb3JrRGF0YSkge1xuICAgICAgdGhpcy5jb250YWluZXJOYW1lJCA9IHRoaXMubG9jYWxpemVkVmFsKHRoaXMuZ2V0QWN0aXZlVmlld0xhYmVsKCkgfHwgb1dvcmtEYXRhLmNhc2VJbmZvLmFzc2lnbm1lbnRzWzBdLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8vIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gIH1cblxuICBpc0Nhc2VXaWRlTG9jYWxBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSh0aGlzLnBDb3JlQ29uc3RhbnRzLkNBU0VfSU5GTy5BQ1RJVkVfQUNUSU9OX0lEKTtcbiAgICBjb25zdCBjYXNlQWN0aW9ucyA9IHRoaXMucENvbm4kLmdldFZhbHVlKHRoaXMucENvcmVDb25zdGFudHMuQ0FTRV9JTkZPLkFWQUlMQUJMRUFDVElPTlMpO1xuICAgIGxldCBiQ2FzZVdpZGVBY3Rpb24gPSBmYWxzZTtcbiAgICBpZiAoY2FzZUFjdGlvbnMgJiYgYWN0aW9uSUQpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk9iaiA9IGNhc2VBY3Rpb25zLmZpbmQoY2FzZUFjdGlvbiA9PiBjYXNlQWN0aW9uLklEID09PSBhY3Rpb25JRCk7XG4gICAgICBpZiAoYWN0aW9uT2JqKSB7XG4gICAgICAgIGJDYXNlV2lkZUFjdGlvbiA9IGFjdGlvbk9iai50eXBlID09PSAnQ2FzZSc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiQ2FzZVdpZGVBY3Rpb247XG4gIH1cblxuICBoYXNDaGlsZENhc2VBc3NpZ25tZW50cygpIHtcbiAgICBjb25zdCBjaGlsZENhc2VzID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUodGhpcy5wQ29yZUNvbnN0YW50cy5DQVNFX0lORk8uQ0hJTERfQVNTSUdOTUVOVFMpO1xuXG4gICAgcmV0dXJuIGNoaWxkQ2FzZXMgJiYgY2hpbGRDYXNlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0QWN0aXZlVmlld0xhYmVsKCkge1xuICAgIGxldCBhY3RpdmVBY3Rpb25MYWJlbCA9ICcnO1xuXG4gICAgY29uc3QgeyBDQVNFX0lORk86IENBU0VfQ09OU1RTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIGNvbnN0IGNhc2VBY3Rpb25zID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpIGFzIGFueVtdO1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQUNUSVZFX0FDVElPTl9JRCk7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnM/LmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gYWN0aXZlQWN0aW9uSUQpO1xuICAgIGlmIChhY3RpdmVBY3Rpb24pIHtcbiAgICAgIGFjdGl2ZUFjdGlvbkxhYmVsID0gYWN0aXZlQWN0aW9uLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVBY3Rpb25MYWJlbDtcbiAgfVxuXG4gIGZpbmRDdXJyZW50SW5kaWNpZXMoYXJTdGVwcGVyU3RlcHM6IGFueVtdLCBhckluZGljaWVzOiBudW1iZXJbXSwgZGVwdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGFyU3RlcHBlclN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnY3VycmVudCcpIHtcbiAgICAgICAgYXJJbmRpY2llc1tkZXB0aF0gPSBjb3VudDtcblxuICAgICAgICAvLyBhZGQgaW5cbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdzdWNjZXNzJykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwLnN0ZXBzKSB7XG4gICAgICAgIGFySW5kaWNpZXMgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXMoc3RlcC5zdGVwcywgYXJJbmRpY2llcywgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckluZGljaWVzO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gYnJpZGdlIHNob3VsZENvbXBvbmVudFVwZGF0ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNvbXBvbmVudFxuICAvLyBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICB1cGRhdGVTZWxmKCkge1xuICAgIC8vIGZvciBub3dcbiAgICAvLyBjb25zdCB7IGdldFBDb25uZWN0IH0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0gPSB0aGlzLmdldFBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtKHRoaXMucENvbm4kKSB8fCB0aGlzLnBDb25uJDtcblxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0uZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgICB0aGlzLmJTaG93QmFubmVyID0gc2hvd0Jhbm5lcih0aGlzLnBDb25uJCk7XG5cbiAgICBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PSAncmV2aWV3Jykge1xuICAgICAgdGhpcy5sb2FkUmV2aWV3UGFnZShsb2NhbFBDb25uKTtcblxuICAgICAgLy8gaW4gTmVidWxhL0NvbnN0ZWxsYXRpb24sIHdoZW4gY2FuY2VsIGlzIGNhbGxlZCwgc29tZWhvdyB0aGUgY29uc3RydWN0b3IgZm9yIGZsb3dDb250YWluZXIgaXMgY2FsbGVkIHdoaWNoXG4gICAgICAvLyBkb2VzIGluaXQvYWRkIG9mIGNvbnRhaW5lcnMuICBUaGlzIG1pbWljcyB0aGF0XG4gICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJykgPT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PT0gJ3BlcmZvcm0nKSB7XG4gICAgICAvLyBwZXJmb3JtXG4gICAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gZmFsc2U7XG5cbiAgICAgIC8vIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gQW5ndWxhciBTREssIGFzIHdlIG5lZWQgdG8gaW5pdENvbnRhaW5lciBpZiByb290IGNvbnRhaW5lciByZWxvYWRlZFxuICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicpID09ICd0cnVlJykge1xuICAgICAgICB0aGlzLmluaXRDb250YWluZXIoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiBoYXZlIGNhc2VNZXNzYWdlIHNob3cgbWVzc2FnZSBhbmQgZW5kXG4gICAgdGhpcy5zaG93Q2FzZU1lc3NhZ2VzKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpO1xuICB9XG5cbiAgbG9hZFJldmlld1BhZ2UobG9jYWxQQ29ubikge1xuICAgIGNvbnN0IHsgQ0FTRV9JTkZPOiBDQVNFX0NPTlNUUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgKioqIHJlbm92ZSB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgd2hlbiBSZWFjdC9XQyBpcyB1cGRhdGVkXG4gICAgICAgICAgKioqIHRoaXMgY29kZSBpcyByZXBsYWNlIHdpdGggdGhlIGNhbGwgdG8gXCJnZXRUb0RvQXNzaWdtZW50c1wiIGZ1bmN0aW9uIGJlbG93XG5cbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50c0xpc3QgPSBsb2NhbFBDb25uLmdldFZhbHVlKFxuICAgICAgICAgICAgQ0FTRV9DT05TVFMuRF9DQVNFX0FTU0lHTk1FTlRTX1JFU1VMVFNcbiAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gYWRkIHN0YXR1c1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoXCJjYXNlSW5mby5zdGF0dXNcIik7XG5cbiAgICAgICAgICBsZXQgbG9jYWxBc3NpZ25tZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50c0xpc3RbMF0pKTtcbiAgICAgICAgICBsb2NhbEFzc2lnbm1lbnQuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgIGxldCBsb2NhQXNzaWdubWVudHNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgICAgbG9jYUFzc2lnbm1lbnRzTGlzdC5wdXNoKGxvY2FsQXNzaWdubWVudCk7XG5cbiAgICAgICAgICBjb25zdCBjYXNlQWN0aW9ucyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpO1xuICAgICAgICAgICovXG5cbiAgICAgICAgY29uc3QgdG9kb0Fzc2lnbm1lbnRzID0gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHRoaXMucENvbm4kKTtcblxuICAgICAgICBpZiAodG9kb0Fzc2lnbm1lbnRzICYmIHRvZG9Bc3NpZ25tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50b2RvX2Nhc2VJbmZvSUQkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0lEKTtcbiAgICAgICAgICB0aGlzLnRvZG9fZGF0YXNvdXJjZSQgPSB7IHNvdXJjZTogdG9kb0Fzc2lnbm1lbnRzIH07XG4gICAgICAgIH1cblxuICAgICAgICAvKiByZW1vdmUgdGhpcyBjb21tZW50ZWQgb3V0IGNvZGUgd2hlbiB1cGRhdGUgUmVhY3QvV0MgKi9cbiAgICAgICAgLy8gbGV0IGtpZCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8ga2lkLmdldFBDb25uZWN0KCkgY2FuIGJlIGEgUmVmZXJlbmNlIGNvbXBvbmVudC4gU28gbm9ybWFsaXplIGl0IGp1c3QgaW4gY2FzZVxuICAgICAgICAvLyAgICAgICAgbGV0IHRvZG9LaWQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4oa2lkLmdldFBDb25uZWN0KCkpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8gICAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgICAgLyogY29kZSBjaGFuZ2UgaGVyZSB0byBub3RlIGZvciBSZWFjdC9XQyAgKi9cbiAgICAgICAgLy8gdG9kbyBub3cgbmVlZHMgcENvbm4gdG8gb3BlbiB0aGUgd29yayBpdGVtIG9uIGNsaWNrIFwiZ29cIlxuICAgICAgICB0aGlzLnRvZG9fcENvbm4kID0gdGhpcy5wQ29ubiQ7XG5cbiAgICAgICAgLy8gc3RpbGwgbmVlZHMgdGhlIGNvbnRleHQgb2YgdGhlIG9yaWdpbmFsIHdvcmsgaXRlbVxuICAgICAgICB0aGlzLnRvZG9fY29udGV4dCQgPSBsb2NhbFBDb25uLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgICAgdGhpcy50b2RvX3Nob3dUb2RvJCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzaG93Q2FzZU1lc3NhZ2VzKCkge1xuICAgIHRoaXMuY2FzZU1lc3NhZ2VzJCA9IHRoaXMubG9jYWxpemVkVmFsKHRoaXMucENvbm4kLmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgLy8gY2FzZU1lc3NhZ2VzJ3MgYmVoYXZpb3IgaGFzIGNoYW5nZWQgaW4gMjQuMiwgYW5kIGhlbmNlIGl0IGRvZXNuJ3QgbGV0IE9wdGlvbmFsIEFjdGlvbiB3b3JrLlxuICAgIC8vIENoYW5naW5nIHRoZSBiZWxvdyBjb25kaXRpb24gZm9yIG5vdy4gV2FzOiAodGhlQ2FzZU1lc3NhZ2VzIHx8ICFoYXNBc3NpZ25tZW50cygpKVxuICAgIGlmICghaGFzQXNzaWdubWVudHModGhpcy5wQ29ubiQpKSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYlNob3dDb25maXJtID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hlY2tTdmckID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnY2hlY2snLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICAvLyBUZW1wIGZpeCBmb3IgOC43IGNoYW5nZTogY29uZmlybWF0aW9uTm90ZSBubyBsb25nZXIgY29taW5nIHRocm91Z2ggaW4gY2FzZU1lc3NhZ2VzJC5cbiAgICAgIC8vIFNvLCBpZiB3ZSBnZXQgaGVyZSBhbmQgY2FzZU1lc3NhZ2VzJCBpcyBlbXB0eSwgdXNlIGRlZmF1bHQgdmFsdWUgaW4gRFggQVBJIHJlc3BvbnNlXG4gICAgICBpZiAoIXRoaXMuY2FzZU1lc3NhZ2VzJCkge1xuICAgICAgICB0aGlzLmNhc2VNZXNzYWdlcyQgPSB0aGlzLmxvY2FsaXplZFZhbCgnVGhhbmsgeW91ISBUaGUgbmV4dCBzdGVwIGluIHRoaXMgY2FzZSBoYXMgYmVlbiByb3V0ZWQgYXBwcm9wcmlhdGVseS4nLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gZmFsc2U7XG4gICAgICB0aGlzLmJTaG93Q29uZmlybSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG4gICAgdGhpcy5jb25maXJtX3Bjb25uID0gbnVsbDtcblxuICAgIGxldCBsb2FkaW5nSW5mbzogYW55O1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG5cbiAgICAvLyB0aGlzIGNoZWNrIGluIHJvdXRpbmdJbmZvLCBtaW1pYyBOZWJ1bGEvQ29uc3RlbGxhdGlvbiAoUmVhY3QpIHRvIGNoZWNrIGFuZCBnZXQgdGhlIGludGVybmFscyBvZiB0aGVcbiAgICAvLyBmbG93Q29udGFpbmVyIGFuZCBmb3JjZSB1cGRhdGVzIHRvIHBDb25uZWN0L3JlZHV4XG4gICAgaWYgKHJvdXRpbmdJbmZvICYmIGxvYWRpbmdJbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlciA9IHJvdXRpbmdJbmZvLmFjY2Vzc2VkT3JkZXI7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSByb3V0aW5nSW5mby5pdGVtcztcbiAgICAgIGNvbnN0IHR5cGUgPSByb3V0aW5nSW5mby50eXBlO1xuICAgICAgaWYgKGN1cnJlbnRPcmRlciAmJiBjdXJyZW50SXRlbXMpIHtcbiAgICAgICAgLy8gSkEgLSBtYWtpbmcgbW9yZSBzaW1pbGFyIHRvIE5lYnVsYS9Db25zdGVsbGF0aW9uXG4gICAgICAgIGNvbnN0IGtleSA9IGN1cnJlbnRPcmRlcltjdXJyZW50T3JkZXIubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gc2F2ZSBvZmYgaXRlbUtleSB0byBiZSB1c2VkIGZvciBmaW5pc2hBc3NpZ25tZW50LCBldGMuXG4gICAgICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoa2V5ICYmIGtleSAhPSAnJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tY29sbGFwc2libGUtaWZcbiAgICAgICAgaWYgKGN1cnJlbnRPcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRJdGVtc1trZXldICYmIGN1cnJlbnRJdGVtc1trZXldLnZpZXcgJiYgdHlwZSA9PT0gJ3NpbmdsZScgJiYgT2JqZWN0LmtleXMoY3VycmVudEl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gd2hlbiB3ZSBnZXQgaGVyZSwgaXQgaXQgYmVjYXVzZSB0aGUgZmxvdyBhY3Rpb24gZGF0YSBoYXMgY2hhbmdlZFxuICAgICAgICAgICAgLy8gZnJvbSB0aGUgc2VydmVyLCBhbmQgbmVlZCB0byBhZGQgdG8gcENvbm5lY3QgYW5kIHVwZGF0ZSBjaGlsZHJlblxuXG4gICAgICAgICAgICB0aGlzLmFkZFBDb25uZWN0QW5kVXBkYXRlQ2hpbGRyZW4oY3VycmVudEl0ZW1zW2tleV0sIGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkUENvbm5lY3RBbmRVcGRhdGVDaGlsZHJlbihjdXJyZW50SXRlbSwga2V5KSB7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIGNvbnN0IHJvb3RWaWV3ID0gY3VycmVudEl0ZW0udmlldztcbiAgICBjb25zdCB7IGNvbnRleHQsIG5hbWU6IFZpZXdOYW1lIH0gPSByb290Vmlldy5jb25maWc7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG5cbiAgICAvLyBEb24ndCBnbyBhaGVhZCBpZiBWaWV3IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIVZpZXdOYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2RvX2NvbnRleHQkID0gY3VycmVudEl0ZW0uY29udGV4dDtcblxuICAgIGNvbmZpZy5vcHRpb25zID0ge1xuICAgICAgY29udGV4dDogY3VycmVudEl0ZW0uY29udGV4dCxcbiAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgaXNGbG93Q29udGFpbmVyOiB0cnVlLFxuICAgICAgY29udGFpbmVyTmFtZTogbG9jYWxQQ29ubi5nZXRDb250YWluZXJOYW1lKCksXG4gICAgICBjb250YWluZXJJdGVtTmFtZToga2V5LFxuICAgICAgcGFyZW50UGFnZVJlZmVyZW5jZTogbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKClcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpcm1fcGNvbm4gPSBjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKTtcbiAgICAvLyA4LjcgLSBjb25maWcgbWlnaHQgYmUgYSBSZWZlcmVuY2UgY29tcG9uZW50IHNvLCBuZWVkIHRvIG5vcm1hbGl6ZSBpdCB0byBnZXRcbiAgICAvLyAgdGhlIFZpZXcgaWYgaXQgaXMgYSBSZWZlcmVuY2UgY29tcG9uZW50LiBBbmQgbmVlZCB0byBwYXNzIGluIHRoZSBnZXRQQ29ubmVjdFxuICAgIC8vICB0byBoYXZlIG5vcm1hbGl6ZSBkbyBhIGMxMUVudiBjcmVhdGVDb21wb25lbnQgKHRoYXQgbWFrZXMgc3VyZSBvcHRpb25zLmhhc0Zvcm1cbiAgICAvLyAgaXMgcGFzc2VkIGFsb25nIHRvIGFsbCB0aGUgY29tcG9uZW50J3MgY2hpbGRyZW4pXG4gICAgY29uc3Qgbm9ybWFsaXplZENvbmZpZ09iamVjdCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKSk7XG4gICAgLy8gV2Ugd2FudCB0aGUgY2hpbGRyZW4gdG8gYmUgdGhlIFBDb25uZWN0IGl0c2VsZiwgbm90IHRoZSByZXN1bHQgb2YgY2FsbGluZyBnZXRQQ29ubmVjdCgpLFxuICAgIC8vICBTbyBuZWVkIHRvIGdldCB0aGUgUENvbm5lY3Qgb2YgdGhlIG5vcm1hbGl6ZWQgY29tcG9uZW50IHdlIGp1c3QgY3JlYXRlZC4uLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRDb25maWdPYmplY3RBc1BDb25uZWN0ID0gbm9ybWFsaXplZENvbmZpZ09iamVjdC5nZXRDb21wb25lbnQoKTtcblxuICAgIC8vIG1ha2VzIHN1cmUgQW5ndWxhciB0cmFja3MgdGhlc2UgY2hhbmdlc1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJ1aWxkTmFtZSQgPSB0aGlzLmdldEJ1aWxkTmFtZSgpO1xuICAgICAgLy8gd2hhdCBjb21lcyBiYWNrIG5vdyBpbiBjb25maWdPYmplY3QgaXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBmbG93Q29udGFpbmVyXG5cbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBbXTtcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQucHVzaChub3JtYWxpemVkQ29uZmlnT2JqZWN0QXNQQ29ubmVjdCk7XG5cbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgY29uc3Qgb1dvcmtJdGVtID0gY29uZmlnT2JqZWN0LmdldFBDb25uZWN0KCk7XG4gICAgICBjb25zdCBvV29ya0RhdGE6IGFueSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyTmFtZSQgPSB0aGlzLmxvY2FsaXplZFZhbCh0aGlzLmdldEFjdGl2ZVZpZXdMYWJlbCgpIHx8IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0QnVpbGROYW1lKCk6IHN0cmluZyB7XG4gICAgLy8gbGV0IHsgZ2V0UENvbm5lY3QsIG5hbWUgfSA9IHRoaXMucENvbm4kLnByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCB2aWV3Q29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIGlmICghdmlld0NvbnRhaW5lck5hbWUpIHZpZXdDb250YWluZXJOYW1lID0gJyc7XG4gICAgcmV0dXJuIGAke2NvbnRleHQudG9VcHBlckNhc2UoKX0vJHt2aWV3Q29udGFpbmVyTmFtZS50b1VwcGVyQ2FzZSgpfWA7XG4gIH1cblxuICBmb3JtVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgdGhpcy50b3VjaEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cCQudmFsaWQ7XG4gIH1cblxuICB0b3VjaEFsbCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9wVmlld1JlZnJlc2goKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhlbHBlcnMgLSBjb3B5aWVkIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycy5qc1xuXG4gIGFkZENvbnRhaW5lckl0ZW0ocENvbm5lY3QpIHtcbiAgICAvLyBjb3BpZWQgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXIuanNcbiAgICBjb25zdCBjb250YWluZXJNYW5hZ2VyID0gcENvbm5lY3QuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTsgLy8gaGVyZSB3ZSB3aWxsIGdldCBwYXJlbnQgY29udGV4dCBuYW1lLCBhcyBmbG93IGNvbnRhaW5lciBpcyBjaGlsZCBvZiB2aWV3IGNvbnRhaW5lclxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHBDb25uZWN0LmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG5cbiAgICBsZXQga2V5O1xuICAgIGxldCBmbG93TmFtZTtcblxuICAgIGlmIChjYXNlVmlld01vZGUgIT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBjb250ZXh0TmFtZS5zdWJzdHJpbmcoMCwgY29udGV4dE5hbWUubGFzdEluZGV4T2YoJ18nKSk7XG4gICAgICBjb25zdCBhY3RpdmVDb250YWluZXJJdGVtSUQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldEFjdGl2ZUNvbnRhaW5lckl0ZW1OYW1lKHRhcmdldCk7XG4gICAgICBjb25zdCBjb250YWluZXJJdGVtRGF0YSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGFyZ2V0LCBhY3RpdmVDb250YWluZXJJdGVtSUQpO1xuXG4gICAgICBpZiAoY29udGFpbmVySXRlbURhdGEpIHtcbiAgICAgICAgKHsga2V5LCBmbG93TmFtZSB9ID0gY29udGFpbmVySXRlbURhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICBzZW1hbnRpY1VSTDogJycsXG4gICAgICBrZXksXG4gICAgICBmbG93TmFtZSxcbiAgICAgIGNhc2VWaWV3TW9kZTogJ3BlcmZvcm0nLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQVNTSUdOTUVOVCcsXG4gICAgICBkYXRhOiBwQ29ubmVjdC5nZXREYXRhT2JqZWN0KGNvbnRleHROYW1lKVxuICAgIH0pO1xuICB9XG4gIC8vIGhlbHBlcnMgZW5kXG59XG4iLCI8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiIGNsYXNzPVwicHNkay1mbG93LWNvbnRhaW5lci10b3BcIj5cbiAgPGRpdiAqbmdJZj1cIiFiU2hvd0NvbmZpcm1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRvZG9fc2hvd1RvZG8kXCI+XG4gICAgICA8aDI+e3sgY29udGFpbmVyTmFtZSQgfX08L2gyPlxuICAgICAgPGRpdiAqbmdJZj1cImJhbm5lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiVG9kb1wiXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgcENvbm4kOiBwQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSxcbiAgICAgICAgICBjYXNlSW5mb0lEJDogdG9kb19jYXNlSW5mb0lEJCxcbiAgICAgICAgICBkYXRhc291cmNlJDogdG9kb19kYXRhc291cmNlJCxcbiAgICAgICAgICBzaG93VG9kb0xpc3QkOiB0b2RvX3Nob3dUb2RvTGlzdCQsXG4gICAgICAgICAgaGVhZGVyVGV4dCQ6IHRvZG9faGVhZGVyVGV4dCQsXG4gICAgICAgICAgdHlwZSQ6ICdUT0RPJyxcbiAgICAgICAgICBjb250ZXh0JDogdG9kb19jb250ZXh0JCxcbiAgICAgICAgICBpc0NvbmZpcm06IHRydWVcbiAgICAgICAgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogcENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0sIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Nhc2VNZXNzYWdlcyRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJwc2RrLW1lc3NhZ2UtY2FyZFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIj5cbiAgICAgICAgPGRpdj48aW1nIGNsYXNzPVwicHNkay1pY29uXCIgc3JjPVwie3sgY2hlY2tTdmckIH19XCIgLz48L2Rpdj5cbiAgICAgICAgPGRpdj57eyBjYXNlTWVzc2FnZXMkIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93QmFubmVyICYmIGJTaG93Q29uZmlybSAmJiBjb25maXJtX3Bjb25uXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBmb3JtR3JvdXAkLCBwQ29ubiQ6IGNvbmZpcm1fcGNvbm4gfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -29,7 +29,7 @@ export function hasAssignments(pConnect) {
29
29
  const { CASE_INFO } = PCore.getConstants();
30
30
  const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
31
31
  const childCasesAssignments = getChildCaseAssignments(pConnect);
32
- return assignments || childCasesAssignments || isCaseWideLocalAction(pConnect);
32
+ return assignments || childCasesAssignments?.length || isCaseWideLocalAction(pConnect);
33
33
  }
34
34
  export const showBanner = getPConnect => {
35
35
  const pConnect = getPConnect;
@@ -65,4 +65,4 @@ export function getToDoAssignments(pConnect) {
65
65
  }
66
66
  return todoAssignmentsCopy;
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9Db250YWluZXJzL2Zsb3ctY29udGFpbmVyL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsUUFBUTtJQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoRixPQUFPLFlBQVksRUFBRSxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLFFBQVE7SUFDdkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkYsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO0lBQy9CLElBQUksVUFBVSxJ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RTtRQUNyRSxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUMxQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFFdEUsSUFBSSxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDekQsVUFBVSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxlQUFlLENBQUM7WUFDdkUsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaGFzTm90aWZpY2F0aW9uTWVzc2FnZXMocENvbm5lY3QpIHtcbiAgcmV0dXJuICEhcENvbm5lY3QuZ2V0VmFsdWUoJ2Nhc2VNZXNzYWdlcycpO1xufVxuXG5mdW5jdGlvbiBpc0Nhc2VXaWRlTG9jYWxBY3Rpb24ocENvbm5lY3QpIHtcbiAgY29uc3QgeyBDQVNFX0lORk8gfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICBjb25zdCBhY3Rpb25JRCA9IHBDb25uZWN0LmdldFZhbHVlKENBU0VfSU5GTy5BQ1RJVkVfQUNUSU9OX0lEKTtcbiAgY29uc3QgY2FzZUFjdGlvbnMgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uQ0FTRV9JTkZPX0FDVElPTlMpO1xuICBpZiAoY2FzZUFjdGlvbnMgJiYgYWN0aW9uSUQpIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucy5maW5kKGNhc2VBY3Rpb24gPT4gY2FzZUFjdGlvbi5JRCA9PT0gYWN0aW9uSUQpO1xuICAgIHJldHVybiBhY3RpdmVBY3Rpb24/LnR5cGUgPT09ICdDYXNlJztcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IGNoaWxkQ2FzZXMgPSBwQ29ubmVjdC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0hJTERfQVNTSUdOTUVOVFMpO1xuICBsZXQgYWxsQXNzaWdubWVudHM6IGFueVtdID0gW107XG4gIGlmIChjaGlsZENhc2VzICYmIGNoaWxkQ2FzZXMubGVuZ3RoID4gMCkge1xuICAgIGNoaWxkQ2FzZXMuZm9yRWFjaCgoeyBhc3NpZ25tZW50cyA9IFtdLCBOYW1lIH0pID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkQ2FzZUFzc2lnbm1lbnRzID0gYXNzaWdubWVudHMubWFwKChhc3NpZ25tZW50OiBhbnkpID0+ICh7XG4gICAgICAgIC4uLmFzc2lnbm1lbnQsXG4gICAgICAgIGNhc2VOYW1lOiBOYW1lXG4gICAgICB9KSk7XG4gICAgICBhbGxBc3NpZ25tZW50cyA9IGFsbEFzc2lnbm1lbnRzLmNvbmNhdChjaGlsZENhc2VBc3NpZ25tZW50cyk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGFsbEFzc2lnbm1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQXNzaWdubWVudHMocENvbm5lY3QpIHtcbiAgY29uc3QgeyBDQVNFX0lORk8gfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKENBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUyk7XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KTtcblxuICByZXR1cm4gYXNzaWdubWVudHMgfHwgY2hpbGRDYXNlc0Fzc2lnbm1lbnRzIHx8IGlzQ2FzZVdpZGVMb2NhbEFjdGlvbihwQ29ubmVjdCk7XG59XG5cbmV4cG9ydCBjb25zdCBzaG93QmFubmVyID0gZ2V0UENvbm5lY3QgPT4ge1xuICBjb25zdCBwQ29ubmVjdCA9IGdldFBDb25uZWN0O1xuICByZXR1cm4gaGFzTm90aWZpY2F0aW9uTWVzc2FnZXMocENvbm5lY3QpIHx8ICFoYXNBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG59O1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkge1xuICBjb25zdCBjYXNlQWN0aW9ucyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fQUNUSU9OUyk7XG4gIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFDVElWRV9BQ1RJT05fSUQpO1xuICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucy5maW5kKGFjdGlvbiA9PiBhY3Rpb24uSUQgPT09IGFjdGl2ZUFjdGlvbklEKTtcbiAgcmV0dXJuIGFjdGl2ZUFjdGlvbj8ubmFtZSB8fCAnJztcbn1cblxuZnVuY3Rpb24gc2hvd1RvZG8ocENvbm5lY3QpIHtcbiAgY29uc3QgY2FzZVZpZXdNb2RlID0gcENvbm5lY3QuZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgcmV0dXJuIGNhc2VWaWV3TW9kZSAhPT0gJ3BlcmZvcm0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgY29uc3QgYXNzaWdubWVudExhYmVsID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFTU0lHTk1FTlRfTEFCRUwpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUykgfHwgW107XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KSB8fCBbXTtcbiAgbGV0IGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNoaWxkQ2FzZXNBc3NpZ25tZW50cykpO1xuXG4gIGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBjaGlsZENhc2VzQXNzaWdubWVudHNDb3B5Lm1hcChhc3NpZ25tZW50ID0+IHtcbiAgICBhc3NpZ25tZW50LmlzQ2hpbGQgPSB0cnVlO1xuICAgIHJldHVybiBhc3NpZ25tZW50O1xuICB9KTtcblxuICBjb25zdCB0b2RvQXNzaWdubWVudHMgPSBbLi4uYXNzaWdubWVudHMsIC4uLmNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHldO1xuICBsZXQgdG9kb0Fzc2lnbm1lbnRzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9kb0Fzc2lnbm1lbnRzKSk7XG5cbiAgaWYgKGNhc2VBY3Rpb25zICYmICFzaG93VG9kbyhwQ29ubmVjdCkpIHtcbiAgICB0b2RvQXNzaWdubWVudHNDb3B5ID0gdG9kb0Fzc2lnbm1lbnRzQ29weS5tYXAoYXNzaWdubWVudCA9PiB7XG4gICAgICBhc3NpZ25tZW50Lm5hbWUgPSBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkgfHwgYXNzaWdubWVudExhYmVsO1xuICAgICAgcmV0dXJuIGFzc2lnbm1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdG9kb0Fzc2lnbm1lbnRzQ29weTtcbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9Db250YWluZXJzL2Zsb3ctY29udGFpbmVyL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsUUFBUTtJQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoRixPQUFPLFlBQVksRUFBRSxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLFFBQVE7SUFDdkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkYsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO0lBQy9CLElBQUksVUFBVSxJ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VSxDQUFDLEVBQUU7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcseUJBQXlCLENBQUMsQ0FBQztJQUN2RSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXRFLElBQUksV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdkMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELFVBQVUsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDO1lBQ3ZFLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGhhc05vdGlmaWNhdGlvbk1lc3NhZ2VzKHBDb25uZWN0KSB7XG4gIHJldHVybiAhIXBDb25uZWN0LmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKTtcbn1cblxuZnVuY3Rpb24gaXNDYXNlV2lkZUxvY2FsQWN0aW9uKHBDb25uZWN0KSB7XG4gIGNvbnN0IHsgQ0FTRV9JTkZPIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgY29uc3QgYWN0aW9uSUQgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uQUNUSVZFX0FDVElPTl9JRCk7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgaWYgKGNhc2VBY3Rpb25zICYmIGFjdGlvbklEKSB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnMuZmluZChjYXNlQWN0aW9uID0+IGNhc2VBY3Rpb24uSUQgPT09IGFjdGlvbklEKTtcbiAgICByZXR1cm4gYWN0aXZlQWN0aW9uPy50eXBlID09PSAnQ2FzZSc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZENhc2VBc3NpZ25tZW50cyhwQ29ubmVjdCkge1xuICBjb25zdCBjaGlsZENhc2VzID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNISUxEX0FTU0lHTk1FTlRTKTtcbiAgbGV0IGFsbEFzc2lnbm1lbnRzOiBhbnlbXSA9IFtdO1xuICBpZiAoY2hpbGRDYXNlcyAmJiBjaGlsZENhc2VzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZENhc2VzLmZvckVhY2goKHsgYXNzaWdubWVudHMgPSBbXSwgTmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBjaGlsZENhc2VBc3NpZ25tZW50cyA9IGFzc2lnbm1lbnRzLm1hcCgoYXNzaWdubWVudDogYW55KSA9PiAoe1xuICAgICAgICAuLi5hc3NpZ25tZW50LFxuICAgICAgICBjYXNlTmFtZTogTmFtZVxuICAgICAgfSkpO1xuICAgICAgYWxsQXNzaWdubWVudHMgPSBhbGxBc3NpZ25tZW50cy5jb25jYXQoY2hpbGRDYXNlQXNzaWdubWVudHMpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBhbGxBc3NpZ25tZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IHsgQ0FTRV9JTkZPIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgY29uc3QgYXNzaWdubWVudHMgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uRF9DQVNFX0FTU0lHTk1FTlRTX1JFU1VMVFMpO1xuICBjb25zdCBjaGlsZENhc2VzQXNzaWdubWVudHMgPSBnZXRDaGlsZENhc2VBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnRzIHx8IGNoaWxkQ2FzZXNBc3NpZ25tZW50cz8ubGVuZ3RoIHx8IGlzQ2FzZVdpZGVMb2NhbEFjdGlvbihwQ29ubmVjdCk7XG59XG5cbmV4cG9ydCBjb25zdCBzaG93QmFubmVyID0gZ2V0UENvbm5lY3QgPT4ge1xuICBjb25zdCBwQ29ubmVjdCA9IGdldFBDb25uZWN0O1xuICByZXR1cm4gaGFzTm90aWZpY2F0aW9uTWVzc2FnZXMocENvbm5lY3QpIHx8ICFoYXNBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG59O1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkge1xuICBjb25zdCBjYXNlQWN0aW9ucyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fQUNUSU9OUyk7XG4gIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFDVElWRV9BQ1RJT05fSUQpO1xuICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucy5maW5kKGFjdGlvbiA9PiBhY3Rpb24uSUQgPT09IGFjdGl2ZUFjdGlvbklEKTtcbiAgcmV0dXJuIGFjdGl2ZUFjdGlvbj8ubmFtZSB8fCAnJztcbn1cblxuZnVuY3Rpb24gc2hvd1RvZG8ocENvbm5lY3QpIHtcbiAgY29uc3QgY2FzZVZpZXdNb2RlID0gcENvbm5lY3QuZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgcmV0dXJuIGNhc2VWaWV3TW9kZSAhPT0gJ3BlcmZvcm0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgY29uc3QgYXNzaWdubWVudExhYmVsID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFTU0lHTk1FTlRfTEFCRUwpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUykgfHwgW107XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KSB8fCBbXTtcbiAgbGV0IGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNoaWxkQ2FzZXNBc3NpZ25tZW50cykpO1xuXG4gIGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBjaGlsZENhc2VzQXNzaWdubWVudHNDb3B5Lm1hcChhc3NpZ25tZW50ID0+IHtcbiAgICBhc3NpZ25tZW50LmlzQ2hpbGQgPSB0cnVlO1xuICAgIHJldHVybiBhc3NpZ25tZW50O1xuICB9KTtcblxuICBjb25zdCB0b2RvQXNzaWdubWVudHMgPSBbLi4uYXNzaWdubWVudHMsIC4uLmNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHldO1xuICBsZXQgdG9kb0Fzc2lnbm1lbnRzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9kb0Fzc2lnbm1lbnRzKSk7XG5cbiAgaWYgKGNhc2VBY3Rpb25zICYmICFzaG93VG9kbyhwQ29ubmVjdCkpIHtcbiAgICB0b2RvQXNzaWdubWVudHNDb3B5ID0gdG9kb0Fzc2lnbm1lbnRzQ29weS5tYXAoYXNzaWdubWVudCA9PiB7XG4gICAgICBhc3NpZ25tZW50Lm5hbWUgPSBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkgfHwgYXNzaWdubWVudExhYmVsO1xuICAgICAgcmV0dXJuIGFzc2lnbm1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdG9kb0Fzc2lnbm1lbnRzQ29weTtcbn1cbiJdfQ==
@@ -8,10 +8,10 @@ import * as i0 from "@angular/core";
8
8
  */
9
9
  // Right this is a skeleton, as Hybrid ViewContainer hasn't been implemented
10
10
  export class HybridViewContainerComponent {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: HybridViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: HybridViewContainerComponent, isStandalone: true, selector: "app-hybrid-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<p>hybrid-view-container works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HybridViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HybridViewContainerComponent, isStandalone: true, selector: "app-hybrid-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<p>hybrid-view-container works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: HybridViewContainerComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HybridViewContainerComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'app-hybrid-view-container', standalone: true, imports: [CommonModule], template: "<p>hybrid-view-container works!</p>\n" }]
17
17
  }], propDecorators: { pConn$: [{
@@ -26,7 +26,6 @@ export class ModalViewContainerComponent {
26
26
  this.angularPConnectData = {};
27
27
  this.title$ = '';
28
28
  this.bShowModal$ = false;
29
- this.bShowAsModal$ = true;
30
29
  this.oCaseInfo = {};
31
30
  // for causing a change on assignment
32
31
  this.updateToken$ = 0;
@@ -322,15 +321,15 @@ export class ModalViewContainerComponent {
322
321
  }
323
322
  return `${this.localizedVal('Create', this.localeCategory)} ${this.localizedVal(caseTypeName, undefined, caseLocaleRef)} (${ID})`;
324
323
  }
325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ModalViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.NgZone }, { token: i2.ProgressSpinnerService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
326
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.NgZone }, { token: i2.ProgressSpinnerService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
325
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
327
326
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ModalViewContainerComponent, decorators: [{
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalViewContainerComponent, decorators: [{
329
328
  type: Component,
330
- args: [{ selector: 'app-modal-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n" }]
329
+ args: [{ selector: 'app-modal-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div id=\"dialog\" *ngIf=\"bShowModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n" }]
331
330
  }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.NgZone }, { type: i2.ProgressSpinnerService }, { type: i3.FormBuilder }], propDecorators: { pConn$: [{
332
331
  type: Input
333
332
  }], modalVisibleChange: [{
334
333
  type: Output
335
334
  }] } });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBRXpFOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBd0N0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBekN6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RUFBRSxHQUFHLENBQUM7SUFDcEksQ0FBQzsrR0EvWFUsMkJBQTJCO21HQUEzQiwyQkFBMkIseUtDdkJ4QyxrMENBbUNBLDZFRGRZLFlBQVksNktBQW1CLHdCQUF3Qjs7NEZBRXRELDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOytLQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBR0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGdldEJhbm5lcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9faGVscGVycy9jYXNlLXV0aWxzJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vZGFsLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIC8vIGZvciB3aGVuIG5vbiBtb2RhbFxuICBAT3V0cHV0KCkgbW9kYWxWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgc3RhdGVQcm9wcyQ6IE9iamVjdDtcbiAgYmFubmVyczogYW55O1xuICB0ZW1wbGF0ZU5hbWUkOiBzdHJpbmc7XG4gIGJ1aWxkTmFtZSQ6IHN0cmluZztcbiAgY29udGV4dCQ6IHN0cmluZztcbiAgdGl0bGUkID0gJyc7XG4gIGJTaG93TW9kYWwkID0gZmFsc2U7XG4gIGJTaG93QXNNb2RhbCQgPSB0cnVlO1xuICBpdGVtS2V5JDogc3RyaW5nO1xuICBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIG9DYXNlSW5mbzogT2JqZWN0ID0ge307XG5cbiAgLy8gZm9yIGNhdXNpbmcgYSBjaGFuZ2Ugb24gYXNzaWdubWVudFxuICB1cGRhdGVUb2tlbiQgPSAwO1xuXG4gIHJvdXRpbmdJbmZvUmVmOiBhbnkgPSB7fTtcblxuICAvLyBjcmVhdGVkIG9iamVjdCBpcyBub3cgYSBWaWV3IHdpdGggYSBUZW1wbGF0ZVxuICAvLyAgVXNlIGl0cyBQQ29ubmVjdCB0byByZW5kZXIgdGhlIENhc2VWaWV3OyBET04nVCByZXBsYWNlIHRoaXMucENvbm4kXG4gIGNyZWF0ZWRWaWV3UENvbm4kOiBhbnk7XG5cbiAgYlN1YnNjcmliZWQgPSBmYWxzZTtcbiAgY2FuY2VsUENvbm4kPzogdHlwZW9mIFBDb25uZWN0O1xuICBiU2hvd0NhbmNlbEFsZXJ0JCA9IGZhbHNlO1xuICBiQWxlcnRTdGF0ZTogYm9vbGVhbjtcbiAgbG9jYWxpemVkVmFsOiBGdW5jdGlvbjtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnRGF0YSBPYmplY3QnO1xuICBpc011bHRpUmVjb3JkID0gZmFsc2U7XG4gIGFjdGlvbnNEaWFsb2cgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIC8vIGNyZWF0ZSB0aGUgZm9ybUdyb3VwXG4gICAgdGhpcy5mb3JtR3JvdXAkID0gZmIuZ3JvdXAoeyBoaWRlUmVxdWlyZWQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgLy8gZm9yIG5vdywgaW4gZ2VuZXJhbCB0aGlzIHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IHVwZGF0ZVNlbGYoKSwgYW5kIG5vdCBiZSBibGFua1xuICAgIGlmICh0aGlzLml0ZW1LZXkkID09PSAnJykge1xuICAgICAgdGhpcy5pdGVtS2V5JCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lck1nciA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcblxuICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICB0eXBlOiAnbXVsdGlwbGUnXG4gICAgfSk7XG5cbiAgICAvLyBjb25zdCB7IENPTlRBSU5FUl9UWVBFLCBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShcbiAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJULFxuICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQgLyogU2hvdWxkIGJlIHNhbWUgdW5pcXVlIHN0cmluZyBwYXNzZWQgZHVyaW5nIHN1YnNjcmlwdGlvbiAqL1xuICAgICk7XG4gICAgdGhpcy5iU3Vic2NyaWJlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYlNob3dNb2RhbCQpIHtcbiAgICAgIC8vIHJpZ2h0IG5vdyBvbmx1IGdldCBvbmUgdXBkYXRlZCB3aGVuIGluaXRpYWwgZGlhcGxheS4gIFNvLCBvbmNlIG1vZGFsIGlzIHVwXG4gICAgICAvLyBsZXQgZmFsbCB0aHJvdWdoIGFuZCBkbyBhIGNoZWNrIHdpdGggXCJjb21wYXJlQ2FzZUluZm9Jc0RpZmZlcmVudFwiIHVudGlsIGZpeGVkXG4gICAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1cGRhdGVTZWxmXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgLy8gcm91dGluZ0luZm8gd2FzIGFkZGVkIGFzIGNvbXBvbmVudCBwcm9wIGluIHBvcHVsYXRlQWRkaXRpb25hbFByb3BzXG4gICAgY29uc3Qgcm91dGluZ0luZm8gPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdyb3V0aW5nSW5mbycpO1xuICAgIHRoaXMucm91dGluZ0luZm9SZWYuY3VycmVudCA9IHJvdXRpbmdJbmZvO1xuXG4gICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG4gICAgLy8gY29uc3QgY29uZmlnUHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG4gICAgdGhpcy5zdGF0ZVByb3BzJCA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKTtcbiAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmdldEJhbm5lcnMoKTtcblxuICAgIGlmICghbG9hZGluZ0luZm8pIHtcbiAgICAgIC8vIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICAgIC8vIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGluZ0luZm8gJiYgIWxvYWRpbmdJbmZvIC8qICYmIHRoaXMuYlVwZGF0ZSAqLykge1xuICAgICAgY29uc3QgY3VycmVudE9yZGVyID0gcm91dGluZ0luZm8uYWNjZXNzZWRPcmRlcjtcblxuICAgICAgaWYgKHVuZGVmaW5lZCA9PSBjdXJyZW50T3JkZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSByb3V0aW5nSW5mby5pdGVtcztcblxuICAgICAgY29uc3QgeyBrZXksIGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbShyb3V0aW5nSW5mbyk7XG5cbiAgICAgIGlmIChjdXJyZW50T3JkZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoY3VycmVudEl0ZW1zW2tleV0gJiYgY3VycmVudEl0ZW1zW2tleV0udmlldyAmJiBPYmplY3Qua2V5cyhjdXJyZW50SXRlbXNba2V5XS52aWV3KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBjdXJyZW50SXRlbXNba2V5XTtcbiAgICAgICAgICBjb25zdCByb290VmlldyA9IGN1cnJlbnRJdGVtLnZpZXc7XG4gICAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSByb290Vmlldy5jb25maWc7XG4gICAgICAgICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG4gICAgICAgICAgY29uZmlnLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjb250ZXh0OiBjdXJyZW50SXRlbS5jb250ZXh0LFxuICAgICAgICAgICAgaGFzRm9ybTogdHJ1ZSxcbiAgICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICghdGhpcy5iU3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgdGhpcy5iU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCB7IFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCxcbiAgICAgICAgICAgICAgcGF5bG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnQocGF5bG9hZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJUXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGxldCBjb25maWdPYmplY3QgPSBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuXG4gICAgICAgICAgLy8gVEhJUyBpcyB3aGVyZSB0aGUgVmlld0NvbnRhaW5lciBjcmVhdGVzIGEgVmlld1xuICAgICAgICAgIC8vIFRoZSBjb25maWcgaGFzIG1ldGEuY29uZmlnLnR5cGUgPSBcInZpZXdcIlxuICAgICAgICAgIHRoaXMuY3JlYXRlVmlldyhyb3V0aW5nSW5mbywgY3VycmVudEl0ZW0sIGxhdGVzdEl0ZW0sIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVmlldyhyb3V0aW5nSW5mbywgY3VycmVudEl0ZW0sIGxhdGVzdEl0ZW0sIGtleSkge1xuICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IHRoaXMuZ2V0Q29uZmlnT2JqZWN0KGN1cnJlbnRJdGVtLCBudWxsLCBmYWxzZSk7XG4gICAgY29uc3QgbmV3Q29tcCA9IGNvbmZpZ09iamVjdD8uZ2V0UENvbm5lY3QoKTtcbiAgICAvLyBjb25zdCBuZXdDb21wTmFtZSA9IG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpO1xuICAgIGNvbnN0IGNhc2VJbmZvID0gbmV3Q29tcCAmJiBuZXdDb21wLmdldERhdGFPYmplY3QoKSAmJiBuZXdDb21wLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbyA/IG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvIDogbnVsbDtcbiAgICAvLyBUaGUgbWV0YWRhdGEgZm9yIHB5RGV0YWlscyBjaGFuZ2VkIHN1Y2ggdGhhdCB0aGUgXCJ0ZW1wbGF0ZVwiOiBcIkNhc2VWaWV3XCJcbiAgICAvLyAgaXMgbm8gbG9uZ2VyIGEgY2hpbGQgb2YgdGhlIGNyZWF0ZWQgVmlldyBidXQgaXMgaW4gdGhlIGNyZWF0ZWQgVmlldydzXG4gICAgLy8gIGNvbmZpZy4gU28sIHdlIERPTidUIHdhbnQgdG8gcmVwbGFjZSB0aGlzLnBDb25uJCBzaW5jZSB0aGUgY3JlYXRlZFxuICAgIC8vICBjb21wb25lbnQgaXMgYSBWaWV3IChhbmQgbm90IGEgVmlld0NvbnRhaW5lcikuIFdlIG5vdyBsb29rIGZvciB0aGVcbiAgICAvLyAgXCJ0ZW1wbGF0ZVwiIHR5cGUgZGlyZWN0bHkgaW4gdGhlIGNyZWF0ZWQgY29tcG9uZW50IChuZXdDb21wKSBhbmQgTk9UXG4gICAgLy8gIGFzIGEgY2hpbGQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LlxuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE1vZGFsVmlld0NvbnRhaW5lciBjcmVhdGVkIG5ldyAke25ld0NvbXBOYW1lfWApO1xuXG4gICAgLy8gVXNlIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCAoVmlldykgaW5mbyBidXQgRE8gTk9UIHJlcGxhY2VcbiAgICAvLyAgdGhpcyBNb2RhbFZpZXdDb250YWluZXIncyBwQ29ubiQsIGV0Yy5cbiAgICAvLyAgTm90ZSB0aGF0IHdlJ3JlIG5vdyB1c2luZyB0aGUgbmV3bHkgY3JlYXRlZCBWaWV3J3MgUENvbm5lY3QgaW4gdGhlXG4gICAgLy8gIFZpZXdDb250YWluZXIgSFRNTCB0ZW1wbGF0ZSB0byBndWlkZSB3aGF0J3MgcmVuZGVyZWQgc2ltaWxhciB0byB3aGF0XG4gICAgLy8gIHRoZSBOZWJ1bGEvQ29uc3RlbGxhdGlvbiByZXR1cm4gb2YgUmVhY3QuRnJhZ21lbnQgZG9lc1xuXG4gICAgLy8gcmlnaHQgbm93IG5lZWQgdG8gY2hlY2sgY2FzZUluZm8gZm9yIGNoYW5nZXMsIHRvIHRyaWdnZXIgcmVkcmF3LCBub3QgZ2V0dGluZ1xuICAgIC8vIGNoYW5nZXMgZnJvbSBhbmd1bGFyUGNvbm5lY3QgZXhjZXB0IGZvciBmaXJzdCBkcmF3XG4gICAgaWYgKG5ld0NvbXAgJiYgY2FzZUluZm8gJiYgdGhpcy5jb21wYXJlQ2FzZUluZm9Jc0RpZmZlcmVudChjYXNlSW5mbykpIHtcbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IG5ld0NvbXA7XG4gICAgICAgIGNvbnN0IG5ld0NvbmZpZ1Byb3BzID0gbmV3Q29tcC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSAndGVtcGxhdGUnIGluIG5ld0NvbmZpZ1Byb3BzID8gKG5ld0NvbmZpZ1Byb3BzLnRlbXBsYXRlIGFzIHN0cmluZykgOiAnJztcblxuICAgICAgICBjb25zdCB7IGFjdGlvbk5hbWUgfSA9IGxhdGVzdEl0ZW07XG4gICAgICAgIGNvbnN0IHRoZU5ld0Nhc2VJbmZvID0gbmV3Q29tcC5nZXRDYXNlSW5mbygpO1xuICAgICAgICAvLyBjb25zdCBjYXNlTmFtZSA9IHRoZU5ld0Nhc2VJbmZvLmdldE5hbWUoKTtcbiAgICAgICAgY29uc3QgSUQgPSB0aGVOZXdDYXNlSW5mby5nZXRCdXNpbmVzc0lEKCkgfHwgdGhlTmV3Q2FzZUluZm8uZ2V0SUQoKTtcblxuICAgICAgICBjb25zdCBjYXNlVHlwZU5hbWUgPSB0aGVOZXdDYXNlSW5mby5nZXRDYXNlVHlwZU5hbWUoKTtcbiAgICAgICAgY29uc3QgaXNEYXRhT2JqZWN0ID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5yZXNvdXJjZVR5cGUgPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1RZUEVTLkRBVEE7XG4gICAgICAgIGNvbnN0IGRhdGFPYmplY3RBY3Rpb24gPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLnJlc291cmNlU3RhdHVzO1xuICAgICAgICB0aGlzLmlzTXVsdGlSZWNvcmQgPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLmlzTXVsdGlSZWNvcmREYXRhO1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gbGF0ZXN0SXRlbS5jb250ZXh0O1xuICAgICAgICB0aGlzLnRpdGxlJCA9XG4gICAgICAgICAgaXNEYXRhT2JqZWN0IHx8IHRoaXMuaXNNdWx0aVJlY29yZFxuICAgICAgICAgICAgPyB0aGlzLmdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKVxuICAgICAgICAgICAgOiB0aGlzLmRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oXG4gICAgICAgICAgICAgICAgYWN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBjYXNlVHlwZU5hbWUsXG4gICAgICAgICAgICAgICAgSUQsXG4gICAgICAgICAgICAgICAgYCR7dGhlTmV3Q2FzZUluZm8/LmdldENsYXNzTmFtZSgpfSFDQVNFISR7dGhlTmV3Q2FzZUluZm8uZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGJJc1JlZkNvbXBvbmVudCA9IHRoaXMuY2hlY2tJZlJlZkNvbXBvbmVudChuZXdDb21wKTtcblxuICAgICAgICBpZiAoYklzUmVmQ29tcG9uZW50KSB7XG4gICAgICAgICAgY29uc3QgbmV3UENvbm4gPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4obmV3Q29tcCk7XG4gICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KG5ld1BDb25uLmdldENoaWxkcmVuKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZSBjaGlsZHJlbiB3aXRoIG5ldyB2aWV3J3MgY2hpbGRyZW5cbiAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gbmV3Q29tcC5nZXRDaGlsZHJlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IHRydWU7XG5cbiAgICAgICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgICAgLy8gc2F2ZSBvZmYgaXRlbUtleSB0byBiZSB1c2VkIGZvciBmaW5pc2hBc3NpZ25tZW50LCBldGMuXG4gICAgICAgIHRoaXMuaXRlbUtleSQgPSBrZXk7XG5cbiAgICAgICAgLy8gY2F1c2UgYSBjaGFuZ2UgZm9yIGFzc2lnbm1lbnRcbiAgICAgICAgdGhpcy51cGRhdGVUb2tlbiQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVNb2RhbCgpIHtcbiAgICBpZiAodGhpcy5iU2hvd01vZGFsJCkge1xuICAgICAgLy8gb3RoZXIgY29kZSBpbiBOZWJ1bGEvQ29uc3RlbGxhdGlvbiBub3QgbmVlZGVkIGN1cnJlbnRseSwgYnV0IGlmIHNvIGxhdGVyLFxuICAgICAgLy8gc2hvdWxkIHB1dCBoZXJlXG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuYlNob3dNb2RhbCQgPSBmYWxzZTtcblxuICAgICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgICB0aGlzLm1vZGFsVmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuYlNob3dNb2RhbCQpO1xuXG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IHt9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlnT2JqZWN0KGl0ZW0sIHBDb25uZWN0LCBpc1JldmVyc2VDb2V4aXN0ZW5jZSA9IGZhbHNlKSB7XG4gICAgbGV0IGNvbmZpZztcbiAgICBpZiAoaXNSZXZlcnNlQ29leGlzdGVuY2UpIHtcbiAgICAgIGNvbmZpZyA9IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IHBDb25uZWN0Py5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgaGFzRm9ybTogdHJ1ZSxcbiAgICAgICAgICBjb250YWluZXJOYW1lOiBwQ29ubmVjdD8uZ2V0Q29udGFpbmVyTmFtZSgpIHx8IFBDb3JlLmdldENvbnN0YW50cygpLk1PREFMXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGNvbnN0IHsgY29udGV4dCwgdmlldywgaXNCdWxrQWN0aW9uIH0gPSBpdGVtO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gUENvcmUuZ2V0Q29udGFpbmVyVXRpbHMoKS5nZXRUYXJnZXRGcm9tQ29udGFpbmVySXRlbUlEKGNvbnRleHQpO1xuICAgICAgY29uZmlnID0ge1xuICAgICAgICBtZXRhOiB2aWV3LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB2aWV3LmNvbmZpZy5jb250ZXh0IHx8IHBDb25uZWN0LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIC4uLihpc0J1bGtBY3Rpb24gJiYgeyBpc0J1bGtBY3Rpb24gfSksXG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcENvbm5lY3Q/LmdldENvbnRhaW5lck5hbWUoKSB8fCBQQ29yZS5nZXRDb25zdGFudHMoKS5NT0RBTCxcbiAgICAgICAgICB0YXJnZXRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNoZWNrSWZSZWZDb21wb25lbnQodGhlUENvbm46IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0dXJuID0gZmFsc2U7XG4gICAgaWYgKHRoZVBDb25uICYmIHRoZVBDb25uLmdldENvbXBvbmVudE5hbWUoKSA9PSAncmVmZXJlbmNlJykge1xuICAgICAgYlJldHVybiA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJSZXR1cm47XG4gIH1cblxuICBvbkFsZXJ0U3RhdGUoYkRhdGE6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmJBbGVydFN0YXRlID0gYkRhdGE7XG4gICAgdGhpcy5iU2hvd0NhbmNlbEFsZXJ0JCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmJBbGVydFN0YXRlKSB7XG4gICAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dBbGVydChwYXlsb2FkKSB7XG4gICAgY29uc3QgeyBsYXRlc3RJdGVtIH0gPSB0aGlzLmdldEtleUFuZExhdGVzdEl0ZW0odGhpcy5yb3V0aW5nSW5mb1JlZi5jdXJyZW50KTtcbiAgICBjb25zdCB7IGlzTW9kYWxBY3Rpb24gfSA9IHBheWxvYWQ7XG5cbiAgICAvKlxuICAgICAgSWYgd2UgYXJlIGluIGNyZWF0ZSBzdGFnZSBmdWxsIHBhZ2UgbW9kZSwgY3JlYXRlZCBhIG5ldyBjYXNlIGFuZCB0cnlpbmcgdG8gY2xpY2sgb24gY2FuY2VsIGJ1dHRvblxuICAgICAgaXQgd2lsbCBzaG93IHR3byBhbGVydCBkaWFsb2dzIHdoaWNoIGlzIG5vdCBleHBlY3RlZC4gSGVuY2UgaXNNb2RhbEFjdGlvbiBmbGFnIHRvIGF2b2lkIHRoYXQuXG4gICAgKi9cbiAgICBpZiAobGF0ZXN0SXRlbSAmJiBpc01vZGFsQWN0aW9uICYmICF0aGlzLmFjdGlvbnNEaWFsb2cpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IHRoaXMuZ2V0Q29uZmlnT2JqZWN0KGxhdGVzdEl0ZW0sIHRoaXMucENvbm4kKTtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsUENvbm4kID0gY29uZmlnT2JqZWN0Py5nZXRQQ29ubmVjdCgpO1xuICAgICAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhc0NvbnRhaW5lckl0ZW1zKHJvdXRpbmdJbmZvKSB7XG4gICAgaWYgKHJvdXRpbmdJbmZvKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5nSW5mbztcbiAgICAgIHJldHVybiBhY2Nlc3NlZE9yZGVyICYmIGFjY2Vzc2VkT3JkZXIubGVuZ3RoID4gMCAmJiBpdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0S2V5QW5kTGF0ZXN0SXRlbShyb3V0aW5naW5mbykge1xuICAgIGlmICh0aGlzLmhhc0NvbnRhaW5lckl0ZW1zKHJvdXRpbmdpbmZvKSkge1xuICAgICAgY29uc3QgeyBhY2Nlc3NlZE9yZGVyLCBpdGVtcyB9ID0gcm91dGluZ2luZm87XG4gICAgICBjb25zdCBrZXkgPSBhY2Nlc3NlZE9yZGVyW2FjY2Vzc2VkT3JkZXIubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBsYXRlc3RJdGVtID0gaXRlbXNba2V5XTtcbiAgICAgIHJldHVybiB7IGtleSwgbGF0ZXN0SXRlbSB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb21wYXJlQ2FzZUluZm9Jc0RpZmZlcmVudChvQ3VycmVudENhc2VJbmZvOiBPYmplY3QpOiBib29sZWFuIHtcbiAgICBsZXQgYlJldCA9IGZhbHNlO1xuXG4gICAgLy8gZmFzdC1kZWVwLWVxdWFsIHZlcnNpb25cbiAgICBpZiAoaXNFcXVhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBiUmV0ID0gIWlzRXF1YWwodGhpcy5vQ2FzZUluZm8sIG9DdXJyZW50Q2FzZUluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzQ3Vycm5lbnRDYXNlSW5mbyA9IEpTT04uc3RyaW5naWZ5KG9DdXJyZW50Q2FzZUluZm8pO1xuICAgICAgY29uc3Qgc09sZENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkodGhpcy5vQ2FzZUluZm8pO1xuICAgICAgLy8gc3RyaW5naWZ5IGNvbXBhcmUgdmVyc2lvblxuICAgICAgaWYgKHNDdXJybmVudENhc2VJbmZvICE9IHNPbGRDYXNlSW5mbykge1xuICAgICAgICBiUmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiBkaWZmZXJlbnQsIHNhdmUgb2ZmIG5ldyBjYXNlIGluZm9cbiAgICBpZiAoYlJldCkge1xuICAgICAgdGhpcy5vQ2FzZUluZm8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9DdXJyZW50Q2FzZUluZm8pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldDtcbiAgfVxuXG4gIGdldEJhbm5lcnMoKSB7XG4gICAgcmV0dXJuIGdldEJhbm5lcnMoeyB0YXJnZXQ6IHRoaXMuaXRlbUtleSQsIC4uLnRoaXMuc3RhdGVQcm9wcyQgfSk7XG4gIH1cblxuICBnZXRNb2RhbEhlYWRpbmcoZGF0YU9iamVjdEFjdGlvbikge1xuICAgIHJldHVybiBkYXRhT2JqZWN0QWN0aW9uID09PSBQQ29yZS5nZXRDb25zdGFudHMoKS5SRVNPVVJDRV9TVEFUVVMuQ1JFQVRFXG4gICAgICA/IHRoaXMubG9jYWxpemVkVmFsKCdBZGQgUmVjb3JkJywgdGhpcy5sb2NhbGVDYXRlZ29yeSlcbiAgICAgIDogdGhpcy5sb2NhbGl6ZWRWYWwoJ0VkaXQgUmVjb3JkJywgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gIH1cblxuICBkZXRlcm1pbmVNb2RhbEhlYWRlckJ5QWN0aW9uKGFjdGlvbk5hbWUsIGNhc2VUeXBlTmFtZSwgSUQsIGNhc2VMb2NhbGVSZWYpIHtcbiAgICBpZiAoYWN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVkVmFsKGFjdGlvbk5hbWUsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ0NyZWF0ZScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfSAke3RoaXMubG9jYWxpemVkVmFsKGNhc2VUeXBlTmFtZSwgdW5kZWZpbmVkLCBjYXNlTG9jYWxlUmVmKX0gKCR7SUR9KWA7XG4gIH1cblxuICBjbG9zZUFjdGlvbnNEaWFsb2cgPSAoKSA9PiB7XG4gICAgdGhpcy5hY3Rpb25zRGlhbG9nID0gdHJ1ZTtcbiAgICAvLyB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgIHRoaXMuYlNob3dNb2RhbCQgPSBmYWxzZTtcblxuICAgIC8vIGZvciB3aGVuIG5vbiBtb2RhbFxuICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICB0aGlzLm9DYXNlSW5mbyA9IHt9O1xuICAgIC8vIH0pO1xuICB9O1xufVxuIiwiPGRpdiBpZD1cImRpYWxvZ1wiICpuZ0lmPVwiYlNob3dNb2RhbCQgJiYgYlNob3dBc01vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC12aWV3LWNvbnRhaW5lci10b3BcIiBpZD1cInt7IGJ1aWxkTmFtZSQgfX1cIj5cbiAgICA8aDMgKm5nSWY9XCJ0aXRsZSQgIT0gJydcIj57eyB0aXRsZSQgfX08L2gzPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICBbcHJvcHNdPVwieyBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgaXRlbUtleSQsIGlzQ3JlYXRlU3RhZ2UkOiB0cnVlLCB1cGRhdGVUb2tlbiQsIGlzSW5Nb2RhbCQ6IHRydWUsIGJhbm5lcnMgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNNdWx0aVJlY29yZFwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIkxpc3RWaWV3QWN0aW9uQnV0dG9uc1wiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGNvbnRleHQkIH1cIlxuICAgICAgICBbb3V0cHV0RXZlbnRzXT1cInsgY2xvc2VBY3Rpb25zRGlhbG9nOiBjbG9zZUFjdGlvbnNEaWFsb2cgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dNb2RhbCQgJiYgIWJTaG93QXNNb2RhbCRcIj5cbiAgPGRpdiBpZD1cInt7IGJ1aWxkTmFtZSQgfX1cIj5cbiAgICA8aDMgKm5nSWY9XCJ0aXRsZSQgIT0gJydcIj57eyB0aXRsZSQgfX08L2gzPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICBbcHJvcHNdPVwieyBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgaXRlbUtleSQsIGlzQ3JlYXRlU3RhZ2UkOiB0cnVlLCB1cGRhdGVUb2tlbiQgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93Q2FuY2VsQWxlcnQkXCI+XG4gIDxjb21wb25lbnQtbWFwcGVyXG4gICAgbmFtZT1cIkNhbmNlbEFsZXJ0XCJcbiAgICBbcHJvcHNdPVwieyBiU2hvd0FsZXJ0JDogYlNob3dDYW5jZWxBbGVydCQsIHBDb25uJDogY2FuY2VsUENvbm4kIH1cIlxuICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgW291dHB1dEV2ZW50c109XCJ7IG9uQWxlcnRTdGF0ZSQ6IG9uQWxlcnRTdGF0ZSB9XCJcbiAgPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuIl19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBRXpFOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBdUN0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBeEN6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R0E5WFUsMkJBQTJCO21HQUEzQiwyQkFBMkIseUtDdkJ4Qyx1OUJBeUJBLDZFREpZLFlBQVksNktBQW1CLHdCQUF3Qjs7NEZBRXRELDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOytLQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBR0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGdldEJhbm5lcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9faGVscGVycy9jYXNlLXV0aWxzJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vZGFsLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIC8vIGZvciB3aGVuIG5vbiBtb2RhbFxuICBAT3V0cHV0KCkgbW9kYWxWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgc3RhdGVQcm9wcyQ6IE9iamVjdDtcbiAgYmFubmVyczogYW55O1xuICB0ZW1wbGF0ZU5hbWUkOiBzdHJpbmc7XG4gIGJ1aWxkTmFtZSQ6IHN0cmluZztcbiAgY29udGV4dCQ6IHN0cmluZztcbiAgdGl0bGUkID0gJyc7XG4gIGJTaG93TW9kYWwkID0gZmFsc2U7XG4gIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgb0Nhc2VJbmZvOiBPYmplY3QgPSB7fTtcblxuICAvLyBmb3IgY2F1c2luZyBhIGNoYW5nZSBvbiBhc3NpZ25tZW50XG4gIHVwZGF0ZVRva2VuJCA9IDA7XG5cbiAgcm91dGluZ0luZm9SZWY6IGFueSA9IHt9O1xuXG4gIC8vIGNyZWF0ZWQgb2JqZWN0IGlzIG5vdyBhIFZpZXcgd2l0aCBhIFRlbXBsYXRlXG4gIC8vICBVc2UgaXRzIFBDb25uZWN0IHRvIHJlbmRlciB0aGUgQ2FzZVZpZXc7IERPTidUIHJlcGxhY2UgdGhpcy5wQ29ubiRcbiAgY3JlYXRlZFZpZXdQQ29ubiQ6IGFueTtcblxuICBiU3Vic2NyaWJlZCA9IGZhbHNlO1xuICBjYW5jZWxQQ29ubiQ/OiB0eXBlb2YgUENvbm5lY3Q7XG4gIGJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gIGJBbGVydFN0YXRlOiBib29sZWFuO1xuICBsb2NhbGl6ZWRWYWw6IEZ1bmN0aW9uO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdEYXRhIE9iamVjdCc7XG4gIGlzTXVsdGlSZWNvcmQgPSBmYWxzZTtcbiAgYWN0aW9uc0RpYWxvZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBmb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCQgPSBmYi5ncm91cCh7IGhpZGVSZXF1aXJlZDogZmFsc2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuXG4gICAgY29udGFpbmVyTWdyLmluaXRpYWxpemVDb250YWluZXJzKHtcbiAgICAgIHR5cGU6ICdtdWx0aXBsZSdcbiAgICB9KTtcblxuICAgIC8vIGNvbnN0IHsgQ09OVEFJTkVSX1RZUEUsIFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFxuICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQsXG4gICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCAvKiBTaG91bGQgYmUgc2FtZSB1bmlxdWUgc3RyaW5nIHBhc3NlZCBkdXJpbmcgc3Vic2NyaXB0aW9uICovXG4gICAgKTtcbiAgICB0aGlzLmJTdWJzY3JpYmVkID0gZmFsc2U7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5iU2hvd01vZGFsJCkge1xuICAgICAgLy8gcmlnaHQgbm93IG9ubHUgZ2V0IG9uZSB1cGRhdGVkIHdoZW4gaW5pdGlhbCBkaWFwbGF5LiAgU28sIG9uY2UgbW9kYWwgaXMgdXBcbiAgICAgIC8vIGxldCBmYWxsIHRocm91Z2ggYW5kIGRvIGEgY2hlY2sgd2l0aCBcImNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50XCIgdW50aWwgZml4ZWRcbiAgICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZVNlbGZcbiAgdXBkYXRlU2VsZigpOiB2b2lkIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG4gICAgdGhpcy5yb3V0aW5nSW5mb1JlZi5jdXJyZW50ID0gcm91dGluZ0luZm87XG5cbiAgICBsZXQgbG9hZGluZ0luZm87XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBQcm9wZXJ0eSAnZ2V0TG9hZGluZ1N0YXR1cycgaXMgcHJpdmF0ZSBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiBjbGFzcyAnQzExbkVudidcbiAgICAgIGxvYWRpbmdJbmZvID0gdGhpcy5wQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICAvLyBjb25zdCBjb25maWdQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLnN0YXRlUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpO1xuICAgIHRoaXMuYmFubmVycyA9IHRoaXMuZ2V0QmFubmVycygpO1xuXG4gICAgaWYgKCFsb2FkaW5nSW5mbykge1xuICAgICAgLy8gdHVybiBvZmYgc3Bpbm5lclxuICAgICAgLy8gdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChyb3V0aW5nSW5mbyAmJiAhbG9hZGluZ0luZm8gLyogJiYgdGhpcy5iVXBkYXRlICovKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3JkZXIgPSByb3V0aW5nSW5mby5hY2Nlc3NlZE9yZGVyO1xuXG4gICAgICBpZiAodW5kZWZpbmVkID09IGN1cnJlbnRPcmRlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHJvdXRpbmdJbmZvLml0ZW1zO1xuXG4gICAgICBjb25zdCB7IGtleSwgbGF0ZXN0SXRlbSB9ID0gdGhpcy5nZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdJbmZvKTtcblxuICAgICAgaWYgKGN1cnJlbnRPcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChjdXJyZW50SXRlbXNba2V5XSAmJiBjdXJyZW50SXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGN1cnJlbnRJdGVtc1trZXldLnZpZXcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGN1cnJlbnRJdGVtc1trZXldO1xuICAgICAgICAgIGNvbnN0IHJvb3RWaWV3ID0gY3VycmVudEl0ZW0udmlldztcbiAgICAgICAgICBjb25zdCB7IGNvbnRleHQgfSA9IHJvb3RWaWV3LmNvbmZpZztcbiAgICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHsgbWV0YTogcm9vdFZpZXcgfTtcbiAgICAgICAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGN1cnJlbnRJdGVtLmNvbnRleHQsXG4gICAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgICAgcGFnZVJlZmVyZW5jZTogY29udGV4dCB8fCB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKCF0aGlzLmJTdWJzY3JpYmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHsgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJULFxuICAgICAgICAgICAgICBwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gbGV0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgICAgICAgICAvLyBUSElTIGlzIHdoZXJlIHRoZSBWaWV3Q29udGFpbmVyIGNyZWF0ZXMgYSBWaWV3XG4gICAgICAgICAgLy8gVGhlIGNvbmZpZyBoYXMgbWV0YS5jb25maWcudHlwZSA9IFwidmlld1wiXG4gICAgICAgICAgdGhpcy5jcmVhdGVWaWV3KHJvdXRpbmdJbmZvLCBjdXJyZW50SXRlbSwgbGF0ZXN0SXRlbSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVWaWV3KHJvdXRpbmdJbmZvLCBjdXJyZW50SXRlbSwgbGF0ZXN0SXRlbSwga2V5KSB7XG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QoY3VycmVudEl0ZW0sIG51bGwsIGZhbHNlKTtcbiAgICBjb25zdCBuZXdDb21wID0gY29uZmlnT2JqZWN0Py5nZXRQQ29ubmVjdCgpO1xuICAgIC8vIGNvbnN0IG5ld0NvbXBOYW1lID0gbmV3Q29tcC5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgY29uc3QgY2FzZUluZm8gPSBuZXdDb21wICYmIG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpICYmIG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvID8gbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8gOiBudWxsO1xuICAgIC8vIFRoZSBtZXRhZGF0YSBmb3IgcHlEZXRhaWxzIGNoYW5nZWQgc3VjaCB0aGF0IHRoZSBcInRlbXBsYXRlXCI6IFwiQ2FzZVZpZXdcIlxuICAgIC8vICBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiB0aGUgY3JlYXRlZCBWaWV3IGJ1dCBpcyBpbiB0aGUgY3JlYXRlZCBWaWV3J3NcbiAgICAvLyAgY29uZmlnLiBTbywgd2UgRE9OJ1Qgd2FudCB0byByZXBsYWNlIHRoaXMucENvbm4kIHNpbmNlIHRoZSBjcmVhdGVkXG4gICAgLy8gIGNvbXBvbmVudCBpcyBhIFZpZXcgKGFuZCBub3QgYSBWaWV3Q29udGFpbmVyKS4gV2Ugbm93IGxvb2sgZm9yIHRoZVxuICAgIC8vICBcInRlbXBsYXRlXCIgdHlwZSBkaXJlY3RseSBpbiB0aGUgY3JlYXRlZCBjb21wb25lbnQgKG5ld0NvbXApIGFuZCBOT1RcbiAgICAvLyAgYXMgYSBjaGlsZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQuXG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gTW9kYWxWaWV3Q29udGFpbmVyIGNyZWF0ZWQgbmV3ICR7bmV3Q29tcE5hbWV9YCk7XG5cbiAgICAvLyBVc2UgdGhlIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50IChWaWV3KSBpbmZvIGJ1dCBETyBOT1QgcmVwbGFjZVxuICAgIC8vICB0aGlzIE1vZGFsVmlld0NvbnRhaW5lcidzIHBDb25uJCwgZXRjLlxuICAgIC8vICBOb3RlIHRoYXQgd2UncmUgbm93IHVzaW5nIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcncyBQQ29ubmVjdCBpbiB0aGVcbiAgICAvLyAgVmlld0NvbnRhaW5lciBIVE1MIHRlbXBsYXRlIHRvIGd1aWRlIHdoYXQncyByZW5kZXJlZCBzaW1pbGFyIHRvIHdoYXRcbiAgICAvLyAgdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHJldHVybiBvZiBSZWFjdC5GcmFnbWVudCBkb2VzXG5cbiAgICAvLyByaWdodCBub3cgbmVlZCB0byBjaGVjayBjYXNlSW5mbyBmb3IgY2hhbmdlcywgdG8gdHJpZ2dlciByZWRyYXcsIG5vdCBnZXR0aW5nXG4gICAgLy8gY2hhbmdlcyBmcm9tIGFuZ3VsYXJQY29ubmVjdCBleGNlcHQgZm9yIGZpcnN0IGRyYXdcbiAgICBpZiAobmV3Q29tcCAmJiBjYXNlSW5mbyAmJiB0aGlzLmNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KGNhc2VJbmZvKSkge1xuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZWRWaWV3UENvbm4kID0gbmV3Q29tcDtcbiAgICAgICAgY29uc3QgbmV3Q29uZmlnUHJvcHMgPSBuZXdDb21wLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9ICd0ZW1wbGF0ZScgaW4gbmV3Q29uZmlnUHJvcHMgPyAobmV3Q29uZmlnUHJvcHMudGVtcGxhdGUgYXMgc3RyaW5nKSA6ICcnO1xuXG4gICAgICAgIGNvbnN0IHsgYWN0aW9uTmFtZSB9ID0gbGF0ZXN0SXRlbTtcbiAgICAgICAgY29uc3QgdGhlTmV3Q2FzZUluZm8gPSBuZXdDb21wLmdldENhc2VJbmZvKCk7XG4gICAgICAgIC8vIGNvbnN0IGNhc2VOYW1lID0gdGhlTmV3Q2FzZUluZm8uZ2V0TmFtZSgpO1xuICAgICAgICBjb25zdCBJRCA9IHRoZU5ld0Nhc2VJbmZvLmdldEJ1c2luZXNzSUQoKSB8fCB0aGVOZXdDYXNlSW5mby5nZXRJRCgpO1xuXG4gICAgICAgIGNvbnN0IGNhc2VUeXBlTmFtZSA9IHRoZU5ld0Nhc2VJbmZvLmdldENhc2VUeXBlTmFtZSgpO1xuICAgICAgICBjb25zdCBpc0RhdGFPYmplY3QgPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLnJlc291cmNlVHlwZSA9PT0gUENvcmUuZ2V0Q29uc3RhbnRzKCkuUkVTT1VSQ0VfVFlQRVMuREFUQTtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdEFjdGlvbiA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0ucmVzb3VyY2VTdGF0dXM7XG4gICAgICAgIHRoaXMuaXNNdWx0aVJlY29yZCA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0uaXNNdWx0aVJlY29yZERhdGE7XG4gICAgICAgIHRoaXMuY29udGV4dCQgPSBsYXRlc3RJdGVtLmNvbnRleHQ7XG4gICAgICAgIHRoaXMudGl0bGUkID1cbiAgICAgICAgICBpc0RhdGFPYmplY3QgfHwgdGhpcy5pc011bHRpUmVjb3JkXG4gICAgICAgICAgICA/IHRoaXMuZ2V0TW9kYWxIZWFkaW5nKGRhdGFPYmplY3RBY3Rpb24pXG4gICAgICAgICAgICA6IHRoaXMuZGV0ZXJtaW5lTW9kYWxIZWFkZXJCeUFjdGlvbihcbiAgICAgICAgICAgICAgICBhY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIGNhc2VUeXBlTmFtZSxcbiAgICAgICAgICAgICAgICBJRCxcbiAgICAgICAgICAgICAgICBgJHt0aGVOZXdDYXNlSW5mbz8uZ2V0Q2xhc3NOYW1lKCl9IUNBU0UhJHt0aGVOZXdDYXNlSW5mby5nZXROYW1lKCl9YC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYklzUmVmQ29tcG9uZW50ID0gdGhpcy5jaGVja0lmUmVmQ29tcG9uZW50KG5ld0NvbXApO1xuXG4gICAgICAgIGlmIChiSXNSZWZDb21wb25lbnQpIHtcbiAgICAgICAgICBjb25zdCBuZXdQQ29ubiA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihuZXdDb21wKTtcbiAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkobmV3UENvbm4uZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBuZXdDb21wLmdldENoaWxkcmVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJTaG93TW9kYWwkID0gdHJ1ZTtcblxuICAgICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgICAgICAvLyBzYXZlIG9mZiBpdGVtS2V5IHRvIGJlIHVzZWQgZm9yIGZpbmlzaEFzc2lnbm1lbnQsIGV0Yy5cbiAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcblxuICAgICAgICAvLyBjYXVzZSBhIGNoYW5nZSBmb3IgYXNzaWdubWVudFxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuJCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCkge1xuICAgIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyBvdGhlciBjb2RlIGluIE5lYnVsYS9Db25zdGVsbGF0aW9uIG5vdCBuZWVkZWQgY3VycmVudGx5LCBidXQgaWYgc28gbGF0ZXIsXG4gICAgICAvLyBzaG91bGQgcHV0IGhlcmVcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWdPYmplY3QoaXRlbSwgcENvbm5lY3QsIGlzUmV2ZXJzZUNvZXhpc3RlbmNlID0gZmFsc2UpIHtcbiAgICBsZXQgY29uZmlnO1xuICAgIGlmIChpc1JldmVyc2VDb2V4aXN0ZW5jZSkge1xuICAgICAgY29uZmlnID0ge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnZVJlZmVyZW5jZTogcENvbm5lY3Q/LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHBDb25uZWN0Py5nZXRDb250YWluZXJOYW1lKCkgfHwgUENvcmUuZ2V0Q29uc3RhbnRzKCkuTU9EQUxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgeyBjb250ZXh0LCB2aWV3LCBpc0J1bGtBY3Rpb24gfSA9IGl0ZW07XG4gICAgICBjb25zdCB0YXJnZXQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldFRhcmdldEZyb21Db250YWluZXJJdGVtSUQoY29udGV4dCk7XG4gICAgICBjb25maWcgPSB7XG4gICAgICAgIG1ldGE6IHZpZXcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IHZpZXcuY29uZmlnLmNvbnRleHQgfHwgcENvbm5lY3QuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgIGhhc0Zvcm06IHRydWUsXG4gICAgICAgICAgLi4uKGlzQnVsa0FjdGlvbiAmJiB7IGlzQnVsa0FjdGlvbiB9KSxcbiAgICAgICAgICBjb250YWluZXJOYW1lOiBwQ29ubmVjdD8uZ2V0Q29udGFpbmVyTmFtZSgpIHx8IFBDb3JlLmdldENvbnN0YW50cygpLk1PREFMLFxuICAgICAgICAgIHRhcmdldFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2hlY2tJZlJlZkNvbXBvbmVudCh0aGVQQ29ubjogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGJSZXR1cm4gPSBmYWxzZTtcbiAgICBpZiAodGhlUENvbm4gJiYgdGhlUENvbm4uZ2V0Q29tcG9uZW50TmFtZSgpID09ICdyZWZlcmVuY2UnKSB7XG4gICAgICBiUmV0dXJuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldHVybjtcbiAgfVxuXG4gIG9uQWxlcnRTdGF0ZShiRGF0YTogYm9vbGVhbikge1xuICAgIHRoaXMuYkFsZXJ0U3RhdGUgPSBiRGF0YTtcbiAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuYkFsZXJ0U3RhdGUpIHtcbiAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0FsZXJ0KHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbSh0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHsgaXNNb2RhbEFjdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8qXG4gICAgICBJZiB3ZSBhcmUgaW4gY3JlYXRlIHN0YWdlIGZ1bGwgcGFnZSBtb2RlLCBjcmVhdGVkIGEgbmV3IGNhc2UgYW5kIHRyeWluZyB0byBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAgICBpdCB3aWxsIHNob3cgdHdvIGFsZXJ0IGRpYWxvZ3Mgd2hpY2ggaXMgbm90IGV4cGVjdGVkLiBIZW5jZSBpc01vZGFsQWN0aW9uIGZsYWcgdG8gYXZvaWQgdGhhdC5cbiAgICAqL1xuICAgIGlmIChsYXRlc3RJdGVtICYmIGlzTW9kYWxBY3Rpb24gJiYgIXRoaXMuYWN0aW9uc0RpYWxvZykge1xuICAgICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QobGF0ZXN0SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxQQ29ubiQgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgICAgIHRoaXMuYlNob3dDYW5jZWxBbGVydCQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29udGFpbmVySXRlbXMocm91dGluZ0luZm8pIHtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgcmV0dXJuIGFjY2Vzc2VkT3JkZXIgJiYgYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwICYmIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdpbmZvKSB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGFpbmVySXRlbXMocm91dGluZ2luZm8pKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5naW5mbztcbiAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgcmV0dXJuIHsga2V5LCBsYXRlc3RJdGVtIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KG9DdXJyZW50Q2FzZUluZm86IE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG5cbiAgICAvLyBmYXN0LWRlZXAtZXF1YWwgdmVyc2lvblxuICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSAhaXNFcXVhbCh0aGlzLm9DYXNlSW5mbywgb0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNDdXJybmVudENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgICBjb25zdCBzT2xkQ2FzZUluZm8gPSBKU09OLnN0cmluZ2lmeSh0aGlzLm9DYXNlSW5mbyk7XG4gICAgICAvLyBzdHJpbmdpZnkgY29tcGFyZSB2ZXJzaW9uXG4gICAgICBpZiAoc0N1cnJuZW50Q2FzZUluZm8gIT0gc09sZENhc2VJbmZvKSB7XG4gICAgICAgIGJSZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGRpZmZlcmVudCwgc2F2ZSBvZmYgbmV3IGNhc2UgaW5mb1xuICAgIGlmIChiUmV0KSB7XG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbykpO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0O1xuICB9XG5cbiAgZ2V0QmFubmVycygpIHtcbiAgICByZXR1cm4gZ2V0QmFubmVycyh7IHRhcmdldDogdGhpcy5pdGVtS2V5JCwgLi4udGhpcy5zdGF0ZVByb3BzJCB9KTtcbiAgfVxuXG4gIGdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RBY3Rpb24gPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEVcbiAgICAgID8gdGhpcy5sb2NhbGl6ZWRWYWwoJ0FkZCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KVxuICAgICAgOiB0aGlzLmxvY2FsaXplZFZhbCgnRWRpdCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgfVxuXG4gIGRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oYWN0aW9uTmFtZSwgY2FzZVR5cGVOYW1lLCBJRCwgY2FzZUxvY2FsZVJlZikge1xuICAgIGlmIChhY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRWYWwoYWN0aW9uTmFtZSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ3JlYXRlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9ICR7dGhpcy5sb2NhbGl6ZWRWYWwoY2FzZVR5cGVOYW1lLCB1bmRlZmluZWQsIGNhc2VMb2NhbGVSZWYpfSAoJHtJRH0pYDtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uc0RpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLmFjdGlvbnNEaWFsb2cgPSB0cnVlO1xuICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgLy8gfSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwiZGlhbG9nXCIgKm5nSWY9XCJiU2hvd01vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC12aWV3LWNvbnRhaW5lci10b3BcIiBpZD1cInt7IGJ1aWxkTmFtZSQgfX1cIj5cbiAgICA8aDMgKm5nSWY9XCJ0aXRsZSQgIT0gJydcIj57eyB0aXRsZSQgfX08L2gzPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICBbcHJvcHNdPVwieyBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgaXRlbUtleSQsIGlzQ3JlYXRlU3RhZ2UkOiB0cnVlLCB1cGRhdGVUb2tlbiQsIGlzSW5Nb2RhbCQ6IHRydWUsIGJhbm5lcnMgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNNdWx0aVJlY29yZFwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIkxpc3RWaWV3QWN0aW9uQnV0dG9uc1wiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGNvbnRleHQkIH1cIlxuICAgICAgICBbb3V0cHV0RXZlbnRzXT1cInsgY2xvc2VBY3Rpb25zRGlhbG9nOiBjbG9zZUFjdGlvbnNEaWFsb2cgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dDYW5jZWxBbGVydCRcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQ2FuY2VsQWxlcnRcIlxuICAgIFtwcm9wc109XCJ7IGJTaG93QWxlcnQkOiBiU2hvd0NhbmNlbEFsZXJ0JCwgcENvbm4kOiBjYW5jZWxQQ29ubiQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgb25BbGVydFN0YXRlJDogb25BbGVydFN0YXRlIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG4iXX0=