@netgrif/components-core 6.3.2 → 6.4.0-beta.10

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 (331) hide show
  1. package/esm2020/assets/i18n/de.json +15 -2
  2. package/esm2020/assets/i18n/en.json +15 -2
  3. package/esm2020/assets/i18n/sk.json +15 -2
  4. package/esm2020/lib/actions/front-action.module.mjs +28 -0
  5. package/esm2020/lib/actions/model/front-action-definition.mjs +2 -0
  6. package/esm2020/lib/actions/model/router-action-definitions.mjs +8 -0
  7. package/esm2020/lib/actions/model/task-action-definitions.mjs +16 -0
  8. package/esm2020/lib/actions/public-api.mjs +6 -0
  9. package/esm2020/lib/actions/services/front-action.service.mjs +27 -0
  10. package/esm2020/lib/data-fields/base-component/abstract-base-data-field.component.mjs +51 -0
  11. package/esm2020/lib/data-fields/boolean-field/abstract-boolean-field.component.mjs +7 -26
  12. package/esm2020/lib/data-fields/boolean-field/boolean-default-field/abstract-boolean-default-field.component.mjs +46 -0
  13. package/esm2020/lib/data-fields/boolean-field/models/boolean-field.mjs +9 -1
  14. package/esm2020/lib/data-fields/button-field/abstract-button-field.component.mjs +7 -39
  15. package/esm2020/lib/data-fields/button-field/button-default-field/abstract-button-default-field.component.mjs +58 -0
  16. package/esm2020/lib/data-fields/button-field/models/button-field.mjs +5 -1
  17. package/esm2020/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.mjs +75 -0
  18. package/esm2020/lib/data-fields/case-ref-field/model/case-ref-field.mjs +11 -0
  19. package/esm2020/lib/data-fields/case-ref-field/model/case-ref-injection-tokens.mjs +5 -0
  20. package/esm2020/lib/data-fields/data-field-template/abstract-data-field-template.component.mjs +51 -6
  21. package/esm2020/lib/data-fields/data-fields.module.mjs +1 -1
  22. package/esm2020/lib/data-fields/date-field/abstract-date-field.component.mjs +10 -21
  23. package/esm2020/lib/data-fields/date-field/date-default-field/abstract-date-default-field.component.mjs +29 -0
  24. package/esm2020/lib/data-fields/date-field/models/date-field.mjs +5 -1
  25. package/esm2020/lib/data-fields/date-time-field/abstract-date-time-field.component.mjs +10 -21
  26. package/esm2020/lib/data-fields/date-time-field/date-time-default-field/abstract-date-time-default-field.component.mjs +29 -0
  27. package/esm2020/lib/data-fields/date-time-field/models/date-time-field.mjs +5 -1
  28. package/esm2020/lib/data-fields/enumeration-field/abstract-enumeration-field.component.mjs +4 -1
  29. package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.mjs +23 -20
  30. package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.mjs +20 -21
  31. package/esm2020/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.mjs +71 -0
  32. package/esm2020/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.mjs +26 -19
  33. package/esm2020/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.mjs +16 -12
  34. package/esm2020/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.mjs +16 -12
  35. package/esm2020/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.mjs +26 -21
  36. package/esm2020/lib/data-fields/enumeration-field/models/enumeration-field.mjs +21 -1
  37. package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +11 -420
  38. package/esm2020/lib/data-fields/file-field/file-default-field/abstract-file-default-field.component.mjs +456 -0
  39. package/esm2020/lib/data-fields/file-field/models/file-field-constants.mjs +5 -0
  40. package/esm2020/lib/data-fields/file-field/models/file-field.mjs +6 -1
  41. package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +11 -278
  42. package/esm2020/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.mjs +304 -0
  43. package/esm2020/lib/data-fields/file-list-field/models/file-list-field.mjs +6 -1
  44. package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.mjs +4 -4
  45. package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.mjs +4 -4
  46. package/esm2020/lib/data-fields/filter-field/abstract-filter-field.component.mjs +8 -20
  47. package/esm2020/lib/data-fields/filter-field/filter-default-field/abstract-filter-default-field.component.mjs +38 -0
  48. package/esm2020/lib/data-fields/filter-field/models/filter-field.mjs +5 -1
  49. package/esm2020/lib/data-fields/i18n-field/abstract-i18n-errors.component.mjs +18 -16
  50. package/esm2020/lib/data-fields/i18n-field/abstract-i18n-field.component.mjs +4 -1
  51. package/esm2020/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.mjs +24 -20
  52. package/esm2020/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.mjs +35 -32
  53. package/esm2020/lib/data-fields/i18n-field/models/i18n-field.mjs +6 -2
  54. package/esm2020/lib/data-fields/models/abstract-data-field-component.mjs +4 -1
  55. package/esm2020/lib/data-fields/models/abstract-data-field.mjs +14 -2
  56. package/esm2020/lib/data-fields/models/changed-fields.mjs +1 -1
  57. package/esm2020/lib/data-fields/models/component.mjs +22 -2
  58. package/esm2020/lib/data-fields/models/data-field-portal-data-injection-token.mjs +3 -0
  59. package/esm2020/lib/data-fields/models/update-strategy.mjs +7 -0
  60. package/esm2020/lib/data-fields/multichoice-field/abstract-multichoice-field.component.mjs +4 -1
  61. package/esm2020/lib/data-fields/multichoice-field/models/multichoice-field.mjs +17 -1
  62. package/esm2020/lib/data-fields/multichoice-field/multichoice-autocomplete-field/abstract-multichoice-autocomplete-field-component.component.mjs +30 -30
  63. package/esm2020/lib/data-fields/multichoice-field/multichoice-caseref-field/abstract-multichoice-caseref-field.component.mjs +67 -0
  64. package/esm2020/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.mjs +16 -12
  65. package/esm2020/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.mjs +16 -12
  66. package/esm2020/lib/data-fields/number-field/abstract-number-errors.component.mjs +17 -15
  67. package/esm2020/lib/data-fields/number-field/abstract-number-field.component.mjs +4 -1
  68. package/esm2020/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.mjs +21 -15
  69. package/esm2020/lib/data-fields/number-field/models/number-field.mjs +5 -1
  70. package/esm2020/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.mjs +12 -6
  71. package/esm2020/lib/data-fields/public-api.mjs +21 -2
  72. package/esm2020/lib/data-fields/string-collection-field/models/string-collection-field.mjs +11 -0
  73. package/esm2020/lib/data-fields/string-collection-field/string-collection-default-field/abstract-string-collection-default-field.component.mjs +60 -0
  74. package/esm2020/lib/data-fields/task-ref-field/abstract-task-ref-field.component.mjs +10 -116
  75. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-field.mjs +5 -1
  76. package/esm2020/lib/data-fields/task-ref-field/task-ref-dashboard-field/abstract-task-ref-dashboard-field.component.mjs +130 -0
  77. package/esm2020/lib/data-fields/task-ref-field/task-ref-list-field/abstract-task-ref-list-field.component.mjs +54 -0
  78. package/esm2020/lib/data-fields/text-field/abstract-dashboard-text-field.component.mjs +14 -14
  79. package/esm2020/lib/data-fields/text-field/abstract-text-errors.component.mjs +23 -3
  80. package/esm2020/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.mjs +12 -6
  81. package/esm2020/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.mjs +12 -6
  82. package/esm2020/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.mjs +12 -6
  83. package/esm2020/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.mjs +12 -6
  84. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.mjs +12 -6
  85. package/esm2020/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.mjs +16 -16
  86. package/esm2020/lib/data-fields/text-field/models/text-field.mjs +8 -4
  87. package/esm2020/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.mjs +14 -14
  88. package/esm2020/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.mjs +14 -14
  89. package/esm2020/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.mjs +14 -14
  90. package/esm2020/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.mjs +17 -17
  91. package/esm2020/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.mjs +13 -38
  92. package/esm2020/lib/data-fields/time-instance-abstract-field/models/abstract-time-instance-field.mjs +5 -5
  93. package/esm2020/lib/data-fields/user-field/abstract-user-field.component.mjs +7 -42
  94. package/esm2020/lib/data-fields/user-field/models/user-field.mjs +5 -1
  95. package/esm2020/lib/data-fields/user-field/user-default-field/abstract-user-default-field.component.mjs +70 -0
  96. package/esm2020/lib/data-fields/user-list-field/abstract-user-list-field.component.mjs +7 -45
  97. package/esm2020/lib/data-fields/user-list-field/models/user-list-field.mjs +5 -1
  98. package/esm2020/lib/data-fields/user-list-field/user-list-default-field/abstract-user-list-default-field.component.mjs +60 -0
  99. package/esm2020/lib/dialog/injection-tokens.mjs +10 -0
  100. package/esm2020/lib/dialog/public-api.mjs +2 -1
  101. package/esm2020/lib/event/model/event-constants.mjs +5 -1
  102. package/esm2020/lib/event/services/event.service.mjs +23 -1
  103. package/esm2020/lib/filter/models/case-search-request-body.mjs +1 -1
  104. package/esm2020/lib/filter/models/task-search-request-body.mjs +1 -1
  105. package/esm2020/lib/filter/user-filters.service.mjs +22 -15
  106. package/esm2020/lib/header/abstract-header.component.mjs +28 -7
  107. package/esm2020/lib/header/header-modes/abstract-header-mode.component.mjs +10 -2
  108. package/esm2020/lib/impersonation/services/impersonation-user-select.service.mjs +24 -17
  109. package/esm2020/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.mjs +1 -10
  110. package/esm2020/lib/navigation/model/group-navigation-constants.mjs +120 -35
  111. package/esm2020/lib/navigation/model/navigation-configs.mjs +16 -0
  112. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +239 -127
  113. package/esm2020/lib/navigation/navigation-tree/abstract-navigation-tree.component.mjs +3 -126
  114. package/esm2020/lib/navigation/public-api.mjs +2 -1
  115. package/esm2020/lib/navigation/service/uri.service.mjs +24 -3
  116. package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +34 -10
  117. package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +38 -4
  118. package/esm2020/lib/panel/case-panel/abstract-case-panel.component.mjs +9 -2
  119. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +33 -4
  120. package/esm2020/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.component.mjs +18 -2
  121. package/esm2020/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.mjs +5 -3
  122. package/esm2020/lib/panel/task-panel-single/abstract-single-task.component.mjs +11 -5
  123. package/esm2020/lib/panel/workflow-panel/abstract-workflow-panel.component.mjs +6 -2
  124. package/esm2020/lib/public/factories/public-search-factory.mjs +15 -4
  125. package/esm2020/lib/registry/component-registry.service.mjs +38 -0
  126. package/esm2020/lib/registry/front-action-registry.service.mjs +34 -0
  127. package/esm2020/lib/registry/public-api.mjs +3 -0
  128. package/esm2020/lib/resources/interface/case-get-request-body.mjs +1 -1
  129. package/esm2020/lib/resources/interface/event-outcome.mjs +1 -1
  130. package/esm2020/lib/routing/routing-builder/routing-builder.service.mjs +7 -5
  131. package/esm2020/lib/search/fulltext-search-component/abstract-fulltext-search.component.mjs +14 -4
  132. package/esm2020/lib/search/search-component/abstract-search.component.mjs +5 -3
  133. package/esm2020/lib/side-menu/content-components/import-net/abstract-import-net.component.mjs +10 -7
  134. package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +2 -1
  135. package/esm2020/lib/side-menu/content-components/new-case/abstract-new-case.component.mjs +1 -6
  136. package/esm2020/lib/side-menu/content-components/new-case/model/new-case-injection-data.mjs +1 -1
  137. package/esm2020/lib/side-menu/content-components/public-api.mjs +3 -1
  138. package/esm2020/lib/side-menu/content-components/task-view/model/task-view-injection-data.mjs +2 -0
  139. package/esm2020/lib/side-menu/models/side-menu-control.mjs +2 -10
  140. package/esm2020/lib/tabs/classes/tab-view.mjs +3 -2
  141. package/esm2020/lib/task/services/task-data.service.mjs +30 -28
  142. package/esm2020/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.mjs +24 -5
  143. package/esm2020/lib/task-content/model/field-type-resource.mjs +3 -1
  144. package/esm2020/lib/task-content/services/field-converter.service.mjs +14 -2
  145. package/esm2020/lib/task-content/services/single-task-content.service.mjs +4 -4
  146. package/esm2020/lib/task-content/services/task-content.service.mjs +25 -22
  147. package/esm2020/lib/task-content/services/unlimited-task-content.service.mjs +4 -4
  148. package/esm2020/lib/task-content/task-content/abstract-task-content.component.mjs +20 -7
  149. package/esm2020/lib/utility/navigation-item-default-headers-factory.mjs +27 -0
  150. package/esm2020/lib/utility/public-api.mjs +2 -1
  151. package/esm2020/lib/view/abstract/netgrif-paginator-intl.mjs +36 -0
  152. package/esm2020/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +8 -4
  153. package/esm2020/lib/view/case-view/components/default-case-list/abstract-default-case-list.component.mjs +18 -5
  154. package/esm2020/lib/view/case-view/service/case-view-service.mjs +28 -20
  155. package/esm2020/lib/view/case-view/tabbed-case-view.mjs +1 -1
  156. package/esm2020/lib/view/public-api.mjs +2 -1
  157. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +18 -34
  158. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +20 -11
  159. package/esm2020/lib/view/workflow-view/workflow-view.service.mjs +2 -2
  160. package/esm2020/public-api.mjs +3 -2
  161. package/fesm2015/netgrif-components-core.mjs +4583 -3179
  162. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  163. package/fesm2020/netgrif-components-core.mjs +4278 -2981
  164. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  165. package/lib/actions/front-action.module.d.ts +9 -0
  166. package/lib/actions/model/front-action-definition.d.ts +5 -0
  167. package/lib/actions/model/router-action-definitions.d.ts +2 -0
  168. package/lib/actions/model/task-action-definitions.d.ts +3 -0
  169. package/lib/actions/public-api.d.ts +5 -0
  170. package/lib/actions/services/front-action.service.d.ts +15 -0
  171. package/lib/data-fields/base-component/abstract-base-data-field.component.d.ts +18 -0
  172. package/lib/data-fields/boolean-field/abstract-boolean-field.component.d.ts +5 -7
  173. package/lib/data-fields/boolean-field/boolean-default-field/abstract-boolean-default-field.component.d.ts +14 -0
  174. package/lib/data-fields/boolean-field/models/boolean-field.d.ts +3 -0
  175. package/lib/data-fields/button-field/abstract-button-field.component.d.ts +5 -16
  176. package/lib/data-fields/button-field/button-default-field/abstract-button-default-field.component.d.ts +23 -0
  177. package/lib/data-fields/button-field/models/button-field.d.ts +1 -0
  178. package/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.d.ts +19 -0
  179. package/lib/data-fields/case-ref-field/model/case-ref-field.d.ts +9 -0
  180. package/lib/data-fields/case-ref-field/model/case-ref-injection-tokens.d.ts +5 -0
  181. package/lib/data-fields/data-field-template/abstract-data-field-template.component.d.ts +22 -3
  182. package/lib/data-fields/date-field/abstract-date-field.component.d.ts +7 -12
  183. package/lib/data-fields/date-field/date-default-field/abstract-date-default-field.component.d.ts +12 -0
  184. package/lib/data-fields/date-field/models/date-field.d.ts +1 -0
  185. package/lib/data-fields/date-time-field/abstract-date-time-field.component.d.ts +7 -12
  186. package/lib/data-fields/date-time-field/date-time-default-field/abstract-date-time-default-field.component.d.ts +12 -0
  187. package/lib/data-fields/date-time-field/models/date-time-field.d.ts +1 -0
  188. package/lib/data-fields/enumeration-field/abstract-enumeration-field.component.d.ts +3 -0
  189. package/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/abstract-enumeration-autocomplete-dynamic-field.component.d.ts +8 -10
  190. package/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/abstract-enumeration-autocomplete-select-field.component.d.ts +6 -10
  191. package/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.d.ts +19 -0
  192. package/lib/data-fields/enumeration-field/enumeration-icon-field/abstract-enumeration-icon-field.component.d.ts +9 -9
  193. package/lib/data-fields/enumeration-field/enumeration-list-field/abstract-enumeration-list-field.component.d.ts +6 -8
  194. package/lib/data-fields/enumeration-field/enumeration-select-field/abstract-enumeration-select-field.component.d.ts +6 -8
  195. package/lib/data-fields/enumeration-field/enumeration-stepper-field/abstract-enumeration-stepper-field.component.d.ts +8 -9
  196. package/lib/data-fields/enumeration-field/models/enumeration-field.d.ts +8 -1
  197. package/lib/data-fields/file-field/abstract-file-field.component.d.ts +9 -147
  198. package/lib/data-fields/file-field/file-default-field/abstract-file-default-field.component.d.ts +151 -0
  199. package/lib/data-fields/file-field/models/file-field-constants.d.ts +4 -0
  200. package/lib/data-fields/file-field/models/file-field.d.ts +1 -0
  201. package/lib/data-fields/file-list-field/abstract-file-list-field.component.d.ts +8 -71
  202. package/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.d.ts +76 -0
  203. package/lib/data-fields/file-list-field/models/file-list-field.d.ts +1 -0
  204. package/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.d.ts +3 -3
  205. package/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.d.ts +3 -3
  206. package/lib/data-fields/filter-field/abstract-filter-field.component.d.ts +6 -11
  207. package/lib/data-fields/filter-field/filter-default-field/abstract-filter-default-field.component.d.ts +18 -0
  208. package/lib/data-fields/filter-field/models/filter-field.d.ts +1 -0
  209. package/lib/data-fields/i18n-field/abstract-i18n-errors.component.d.ts +6 -9
  210. package/lib/data-fields/i18n-field/abstract-i18n-field.component.d.ts +3 -0
  211. package/lib/data-fields/i18n-field/i18n-divider-field/abstract-i18n-divider-field.component.d.ts +6 -8
  212. package/lib/data-fields/i18n-field/i18n-text-field/abstract-i18n-text-field.component.d.ts +5 -8
  213. package/lib/data-fields/i18n-field/models/i18n-field.d.ts +1 -0
  214. package/lib/data-fields/models/abstract-data-field-component.d.ts +1 -0
  215. package/lib/data-fields/models/abstract-data-field.d.ts +9 -0
  216. package/lib/data-fields/models/changed-fields.d.ts +7 -6
  217. package/lib/data-fields/models/component.d.ts +20 -0
  218. package/lib/data-fields/models/data-field-portal-data-injection-token.d.ts +13 -0
  219. package/lib/data-fields/models/update-strategy.d.ts +6 -0
  220. package/lib/data-fields/multichoice-field/abstract-multichoice-field.component.d.ts +3 -0
  221. package/lib/data-fields/multichoice-field/models/multichoice-field.d.ts +7 -0
  222. package/lib/data-fields/multichoice-field/multichoice-autocomplete-field/abstract-multichoice-autocomplete-field-component.component.d.ts +6 -9
  223. package/lib/data-fields/multichoice-field/multichoice-caseref-field/abstract-multichoice-caseref-field.component.d.ts +16 -0
  224. package/lib/data-fields/multichoice-field/multichoice-list-field/abstract-multichoice-list-field.component.d.ts +6 -7
  225. package/lib/data-fields/multichoice-field/multichoice-select-field/abstract-multichoice-select-field.component.d.ts +6 -8
  226. package/lib/data-fields/number-field/abstract-number-errors.component.d.ts +6 -9
  227. package/lib/data-fields/number-field/abstract-number-field.component.d.ts +3 -0
  228. package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +4 -2
  229. package/lib/data-fields/number-field/models/number-field.d.ts +1 -0
  230. package/lib/data-fields/number-field/number-default-field/abstract-default-number-field.component.d.ts +4 -2
  231. package/lib/data-fields/public-api.d.ts +20 -1
  232. package/lib/data-fields/string-collection-field/models/string-collection-field.d.ts +9 -0
  233. package/lib/data-fields/string-collection-field/string-collection-default-field/abstract-string-collection-default-field.component.d.ts +18 -0
  234. package/lib/data-fields/task-ref-field/abstract-task-ref-field.component.d.ts +6 -13
  235. package/lib/data-fields/task-ref-field/model/task-ref-field.d.ts +1 -0
  236. package/lib/data-fields/task-ref-field/task-ref-dashboard-field/abstract-task-ref-dashboard-field.component.d.ts +20 -0
  237. package/lib/data-fields/task-ref-field/task-ref-list-field/abstract-task-ref-list-field.component.d.ts +16 -0
  238. package/lib/data-fields/text-field/abstract-dashboard-text-field.component.d.ts +7 -10
  239. package/lib/data-fields/text-field/abstract-text-errors.component.d.ts +7 -2
  240. package/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.d.ts +4 -2
  241. package/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.d.ts +4 -2
  242. package/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.d.ts +4 -2
  243. package/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.d.ts +4 -2
  244. package/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.d.ts +4 -2
  245. package/lib/data-fields/text-field/html-textarea-field/abstract-html-textarea-field.component.d.ts +5 -9
  246. package/lib/data-fields/text-field/models/text-field.d.ts +3 -2
  247. package/lib/data-fields/text-field/password-text-field/abstract-password-text-field.component.d.ts +5 -9
  248. package/lib/data-fields/text-field/rich-textarea-field/abstract-rich-textarea-field.component.d.ts +5 -9
  249. package/lib/data-fields/text-field/simple-text-field/abstract-simple-text-field.component.d.ts +5 -9
  250. package/lib/data-fields/text-field/textarea-field/abstract-textarea-field.component.d.ts +6 -9
  251. package/lib/data-fields/time-instance-abstract-field/abstract-time-instance-field.component.d.ts +6 -15
  252. package/lib/data-fields/user-field/abstract-user-field.component.d.ts +5 -28
  253. package/lib/data-fields/user-field/models/user-field.d.ts +1 -0
  254. package/lib/data-fields/user-field/user-default-field/abstract-user-default-field.component.d.ts +34 -0
  255. package/lib/data-fields/user-list-field/abstract-user-list-field.component.d.ts +5 -25
  256. package/lib/data-fields/user-list-field/models/user-list-field.d.ts +1 -0
  257. package/lib/data-fields/user-list-field/user-list-default-field/abstract-user-list-default-field.component.d.ts +24 -0
  258. package/lib/dialog/injection-tokens.d.ts +10 -0
  259. package/lib/dialog/public-api.d.ts +1 -0
  260. package/lib/event/model/event-constants.d.ts +5 -1
  261. package/lib/event/services/event.service.d.ts +3 -0
  262. package/lib/filter/models/case-search-request-body.d.ts +3 -0
  263. package/lib/filter/models/task-search-request-body.d.ts +9 -0
  264. package/lib/filter/user-filters.service.d.ts +4 -2
  265. package/lib/header/abstract-header.component.d.ts +10 -2
  266. package/lib/header/header-modes/abstract-header-mode.component.d.ts +6 -1
  267. package/lib/impersonation/services/impersonation-user-select.service.d.ts +3 -3
  268. package/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.d.ts +0 -1
  269. package/lib/navigation/model/group-navigation-constants.d.ts +119 -34
  270. package/lib/navigation/model/navigation-configs.d.ts +25 -0
  271. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +42 -39
  272. package/lib/navigation/navigation-tree/abstract-navigation-tree.component.d.ts +2 -27
  273. package/lib/navigation/public-api.d.ts +1 -0
  274. package/lib/navigation/service/uri.service.d.ts +6 -0
  275. package/lib/navigation/utility/filter-extraction.service.d.ts +9 -2
  276. package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +16 -1
  277. package/lib/panel/case-panel/abstract-case-panel.component.d.ts +5 -1
  278. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +9 -3
  279. package/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.component.d.ts +5 -2
  280. package/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.d.ts +2 -1
  281. package/lib/panel/task-panel-single/abstract-single-task.component.d.ts +5 -3
  282. package/lib/panel/workflow-panel/abstract-workflow-panel.component.d.ts +3 -1
  283. package/lib/public/factories/public-search-factory.d.ts +3 -0
  284. package/lib/{data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.d.ts → registry/component-registry.service.d.ts} +6 -5
  285. package/lib/registry/front-action-registry.service.d.ts +13 -0
  286. package/lib/registry/public-api.d.ts +2 -0
  287. package/lib/resources/interface/case-get-request-body.d.ts +3 -0
  288. package/lib/resources/interface/event-outcome.d.ts +5 -0
  289. package/lib/routing/routing-builder/routing-builder.service.d.ts +2 -0
  290. package/lib/search/fulltext-search-component/abstract-fulltext-search.component.d.ts +2 -1
  291. package/lib/search/search-component/abstract-search.component.d.ts +2 -1
  292. package/lib/side-menu/content-components/import-net/abstract-import-net.component.d.ts +3 -1
  293. package/lib/side-menu/content-components/injection-tokens.d.ts +1 -0
  294. package/lib/side-menu/content-components/new-case/model/new-case-injection-data.d.ts +2 -1
  295. package/lib/side-menu/content-components/public-api.d.ts +2 -0
  296. package/lib/side-menu/content-components/task-view/model/task-view-injection-data.d.ts +4 -0
  297. package/lib/side-menu/models/side-menu-control.d.ts +0 -2
  298. package/lib/task/services/task-data.service.d.ts +10 -8
  299. package/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.d.ts +7 -3
  300. package/lib/task-content/model/field-type-resource.d.ts +3 -1
  301. package/lib/task-content/services/single-task-content.service.d.ts +2 -2
  302. package/lib/task-content/services/task-content.service.d.ts +20 -23
  303. package/lib/task-content/services/unlimited-task-content.service.d.ts +2 -2
  304. package/lib/task-content/task-content/abstract-task-content.component.d.ts +5 -1
  305. package/lib/utility/navigation-item-default-headers-factory.d.ts +3 -0
  306. package/lib/utility/public-api.d.ts +1 -0
  307. package/lib/view/abstract/netgrif-paginator-intl.d.ts +19 -0
  308. package/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.d.ts +3 -1
  309. package/lib/view/case-view/components/default-case-list/abstract-default-case-list.component.d.ts +4 -2
  310. package/lib/view/case-view/service/case-view-service.d.ts +5 -5
  311. package/lib/view/public-api.d.ts +1 -0
  312. package/lib/view/task-view/abstract-single-task-view.component.d.ts +9 -7
  313. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +3 -3
  314. package/package.json +1 -1
  315. package/public-api.d.ts +2 -1
  316. package/src/assets/i18n/de.json +15 -2
  317. package/src/assets/i18n/en.json +15 -2
  318. package/src/assets/i18n/sk.json +15 -2
  319. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.mjs +0 -35
  320. package/esm2020/lib/providers/base-filter/base-filter-factory.provider.mjs +0 -24
  321. package/esm2020/lib/providers/case-resource/case-resource-service.provider.mjs +0 -28
  322. package/esm2020/lib/providers/petrinet-resource/petrinet-resource-service.provider.mjs +0 -28
  323. package/esm2020/lib/providers/process-service/process-service.provider.mjs +0 -30
  324. package/esm2020/lib/providers/public-api.mjs +0 -6
  325. package/esm2020/lib/providers/task-resource/task-resource-service.provider.mjs +0 -32
  326. package/lib/providers/base-filter/base-filter-factory.provider.d.ts +0 -14
  327. package/lib/providers/case-resource/case-resource-service.provider.d.ts +0 -14
  328. package/lib/providers/petrinet-resource/petrinet-resource-service.provider.d.ts +0 -14
  329. package/lib/providers/process-service/process-service.provider.d.ts +0 -15
  330. package/lib/providers/public-api.d.ts +0 -5
  331. package/lib/providers/task-resource/task-resource-service.provider.d.ts +0 -16
@@ -0,0 +1,60 @@
1
+ import { Component, Inject, Optional } from "@angular/core";
2
+ import { UserListValue } from "../models/user-list-value";
3
+ import { DATA_FIELD_PORTAL_DATA } from "../../models/data-field-portal-data-injection-token";
4
+ import { AbstractBaseDataFieldComponent } from "../../base-component/abstract-base-data-field.component";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "../../../snack-bar/services/snack-bar.service";
8
+ import * as i3 from "@ngx-translate/core";
9
+ export class AbstractUserListDefaultFieldComponent extends AbstractBaseDataFieldComponent {
10
+ constructor(_dialog, _snackbar, _translate, dataFieldPortalData) {
11
+ super(dataFieldPortalData);
12
+ this._dialog = _dialog;
13
+ this._snackbar = _snackbar;
14
+ this._translate = _translate;
15
+ }
16
+ /**
17
+ * Call after click on user field button.
18
+ *
19
+ * Open [MultiUserAssignDialogComponent]{@link MultiUserAssignDialogComponent} in side menu with data represents preselected user from backend.
20
+ *
21
+ * After close side menu, the snackbar info will be displayed either for the unselected user or the selected one.
22
+ */
23
+ selectAbstractUser(component) {
24
+ let valueReturned = false;
25
+ const dialogRef = this._dialog.open(component, {
26
+ panelClass: "dialog-responsive",
27
+ data: { roles: this.dataField.roles, value: this.dataField.value },
28
+ });
29
+ dialogRef.afterClosed().subscribe($event => {
30
+ if ($event.data) {
31
+ this.dataField.value = new UserListValue(new Map($event.data.map(v => [v.id, v])));
32
+ this._snackbar.openGenericSnackBar(this._translate.instant('dataField.snackBar.userListAssigned', { userNames: this.dataField.value.toString() }), 'how_to_reg');
33
+ valueReturned = true;
34
+ }
35
+ else if (!valueReturned) {
36
+ this._snackbar.openWarningSnackBar(this._translate.instant('dataField.snackBar.notSelectedUser'));
37
+ }
38
+ });
39
+ }
40
+ removeAbstractUser(userId) {
41
+ const existingUsers = new UserListValue(new Map(this.dataField.value.userValues));
42
+ existingUsers.removeUserValue(userId);
43
+ this.dataField.value = existingUsers;
44
+ }
45
+ }
46
+ AbstractUserListDefaultFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractUserListDefaultFieldComponent, deps: [{ token: i1.MatDialog }, { token: i2.SnackBarService }, { token: i3.TranslateService }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
47
+ AbstractUserListDefaultFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractUserListDefaultFieldComponent, selector: "ncc-abstract-user-list-default-field", usesInheritance: true, ngImport: i0, template: '', isInline: true });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractUserListDefaultFieldComponent, decorators: [{
49
+ type: Component,
50
+ args: [{
51
+ selector: 'ncc-abstract-user-list-default-field',
52
+ template: '',
53
+ }]
54
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.SnackBarService }, { type: i3.TranslateService }, { type: undefined, decorators: [{
55
+ type: Optional
56
+ }, {
57
+ type: Inject,
58
+ args: [DATA_FIELD_PORTAL_DATA]
59
+ }] }]; } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdXNlci1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvdXNlci1saXN0LWRlZmF1bHQtZmllbGQvYWJzdHJhY3QtdXNlci1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUsxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFDLHNCQUFzQixFQUFzQixNQUFNLHFEQUFxRCxDQUFDO0FBQ2hILE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHlEQUF5RCxDQUFDOzs7OztBQU92RyxNQUFNLE9BQWdCLHFDQUFzQyxTQUFRLDhCQUE2QztJQUU3RyxZQUFnQyxPQUFrQixFQUNsQixTQUEwQixFQUMxQixVQUE0QixFQUNNLG1CQUF1RDtRQUNySCxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUpDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7SUFHNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQixDQUFDLFNBQVM7UUFDL0IsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQyxVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQXlCO1NBQzNGLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksR0FBRyxDQUFxQixNQUFNLENBQUMsSUFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVILElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxFQUN6RCxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBQyxDQUFDLEVBQ2pELFlBQVksQ0FDZixDQUFDO2dCQUNGLGFBQWEsR0FBRyxJQUFJLENBQUM7YUFDeEI7aUJBQU0sSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7YUFDckc7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksR0FBRyxDQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0lBQ3pDLENBQUM7O21JQXpDaUIscUNBQXFDLDBHQUtiLHNCQUFzQjt1SEFMOUMscUNBQXFDLG1HQUY3QyxFQUFFOzRGQUVNLHFDQUFxQztrQkFKMUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBTTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1VzZXJMaXN0RmllbGR9IGZyb20gXCIuLi9tb2RlbHMvdXNlci1saXN0LWZpZWxkXCI7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZVwiO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtVc2VyTGlzdEluamVjdGVkRGF0YX0gZnJvbSBcIi4uLy4uLy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvdXNlci1hc3NpZ24vbW9kZWwvdXNlci1saXN0LWluamVjdGVkLWRhdGFcIjtcbmltcG9ydCB7VXNlckxpc3RWYWx1ZX0gZnJvbSBcIi4uL21vZGVscy91c2VyLWxpc3QtdmFsdWVcIjtcbmltcG9ydCB7VXNlclZhbHVlfSBmcm9tIFwiLi4vLi4vdXNlci1maWVsZC9tb2RlbHMvdXNlci12YWx1ZVwiO1xuaW1wb3J0IHtEQVRBX0ZJRUxEX1BPUlRBTF9EQVRBLCBEYXRhRmllbGRQb3J0YWxEYXRhfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEtZmllbGQtcG9ydGFsLWRhdGEtaW5qZWN0aW9uLXRva2VuXCI7XG5pbXBvcnQge0Fic3RyYWN0QmFzZURhdGFGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2Jhc2UtY29tcG9uZW50L2Fic3RyYWN0LWJhc2UtZGF0YS1maWVsZC5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC11c2VyLWxpc3QtZGVmYXVsdC1maWVsZCcsXG4gICAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVzZXJMaXN0RGVmYXVsdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RCYXNlRGF0YUZpZWxkQ29tcG9uZW50PFVzZXJMaXN0RmllbGQ+e1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQV9GSUVMRF9QT1JUQUxfREFUQSkgZGF0YUZpZWxkUG9ydGFsRGF0YTogRGF0YUZpZWxkUG9ydGFsRGF0YTxVc2VyTGlzdEZpZWxkPikge1xuICAgICAgICBzdXBlcihkYXRhRmllbGRQb3J0YWxEYXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIGFmdGVyIGNsaWNrIG9uIHVzZXIgZmllbGQgYnV0dG9uLlxuICAgICAqXG4gICAgICogT3BlbiBbTXVsdGlVc2VyQXNzaWduRGlhbG9nQ29tcG9uZW50XXtAbGluayBNdWx0aVVzZXJBc3NpZ25EaWFsb2dDb21wb25lbnR9IGluIHNpZGUgbWVudSB3aXRoIGRhdGEgcmVwcmVzZW50cyBwcmVzZWxlY3RlZCB1c2VyIGZyb20gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEFmdGVyIGNsb3NlIHNpZGUgbWVudSwgdGhlIHNuYWNrYmFyIGluZm8gd2lsbCBiZSBkaXNwbGF5ZWQgZWl0aGVyIGZvciB0aGUgdW5zZWxlY3RlZCB1c2VyIG9yIHRoZSBzZWxlY3RlZCBvbmUuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFic3RyYWN0VXNlcihjb21wb25lbnQpIHtcbiAgICAgICAgbGV0IHZhbHVlUmV0dXJuZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nLm9wZW4oY29tcG9uZW50LCB7XG4gICAgICAgICAgICBwYW5lbENsYXNzOiBcImRpYWxvZy1yZXNwb25zaXZlXCIsXG4gICAgICAgICAgICBkYXRhOiB7cm9sZXM6IHRoaXMuZGF0YUZpZWxkLnJvbGVzLCB2YWx1ZTogdGhpcy5kYXRhRmllbGQudmFsdWV9IGFzIFVzZXJMaXN0SW5qZWN0ZWREYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoJGV2ZW50LmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZSA9IG5ldyBVc2VyTGlzdFZhbHVlKG5ldyBNYXA8c3RyaW5nLCBVc2VyVmFsdWU+KCgkZXZlbnQuZGF0YSBhcyBBcnJheTxVc2VyVmFsdWU+KS5tYXAodiA9PiBbdi5pZCwgdl0pKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkdlbmVyaWNTbmFja0JhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci51c2VyTGlzdEFzc2lnbmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt1c2VyTmFtZXM6IHRoaXMuZGF0YUZpZWxkLnZhbHVlLnRvU3RyaW5nKCl9KSxcbiAgICAgICAgICAgICAgICAgICAgJ2hvd190b19yZWcnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB2YWx1ZVJldHVybmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlUmV0dXJuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuV2FybmluZ1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubm90U2VsZWN0ZWRVc2VyJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQWJzdHJhY3RVc2VyKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVXNlcnMgPSBuZXcgVXNlckxpc3RWYWx1ZShuZXcgTWFwPHN0cmluZywgVXNlclZhbHVlPih0aGlzLmRhdGFGaWVsZC52YWx1ZS51c2VyVmFsdWVzKSk7XG4gICAgICAgIGV4aXN0aW5nVXNlcnMucmVtb3ZlVXNlclZhbHVlKHVzZXJJZCk7XG4gICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlID0gZXhpc3RpbmdVc2VycztcbiAgICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const NAE_USER_ASSIGN_DIALOG_COMPONENT = new InjectionToken('NaeUserAssignDialogComponent');
3
+ export const NAE_FILES_UPLOAD_DIALOG_COMPONENT = new InjectionToken('NaeFilesUploadDialogComponent');
4
+ export const NAE_NEW_CASE_DIALOG_COMPONENT = new InjectionToken('NaeNewCaseDialogComponent');
5
+ export const NAE_OPTION_SELECTOR_DIALOG_COMPONENT = new InjectionToken('NaeOptionSelectorDialogComponent');
6
+ export const NAE_SAVE_FILTER_DIALOG_COMPONENT = new InjectionToken('NaeSaveFilterDialogComponent');
7
+ export const NAE_LOAD_FILTER_DIALOG_COMPONENT = new InjectionToken('NaeLoadFilterDialogComponent');
8
+ export const NAE_USER_IMPERSONATE_DIALOG_COMPONENT = new InjectionToken('NaeUserImpersonateDialogComponent');
9
+ export const NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT = new InjectionToken('NaeAdminImpersonateDialogComponent');
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL2luamVjdGlvbi10b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsOEJBQThCLENBQUMsQ0FBQztBQUMzSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsK0JBQStCLENBQUMsQ0FBQztBQUM3SCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsMkJBQTJCLENBQUMsQ0FBQztBQUNySCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsa0NBQWtDLENBQUMsQ0FBQztBQUNuSSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsOEJBQThCLENBQUMsQ0FBQztBQUMzSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsOEJBQThCLENBQUMsQ0FBQztBQUMzSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsbUNBQW1DLENBQUMsQ0FBQztBQUNySSxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsb0NBQW9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuZXhwb3J0IGNvbnN0IE5BRV9VU0VSX0FTU0lHTl9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVVc2VyQXNzaWduRGlhbG9nQ29tcG9uZW50Jyk7XG5leHBvcnQgY29uc3QgTkFFX0ZJTEVTX1VQTE9BRF9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVGaWxlc1VwbG9hZERpYWxvZ0NvbXBvbmVudCcpO1xuZXhwb3J0IGNvbnN0IE5BRV9ORVdfQ0FTRV9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVOZXdDYXNlRGlhbG9nQ29tcG9uZW50Jyk7XG5leHBvcnQgY29uc3QgTkFFX09QVElPTl9TRUxFQ1RPUl9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVPcHRpb25TZWxlY3RvckRpYWxvZ0NvbXBvbmVudCcpO1xuZXhwb3J0IGNvbnN0IE5BRV9TQVZFX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVTYXZlRmlsdGVyRGlhbG9nQ29tcG9uZW50Jyk7XG5leHBvcnQgY29uc3QgTkFFX0xPQURfRklMVEVSX0RJQUxPR19DT01QT05FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50VHlwZTx1bmtub3duPj4oJ05hZUxvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQnKTtcbmV4cG9ydCBjb25zdCBOQUVfVVNFUl9JTVBFUlNPTkFURV9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8dW5rbm93bj4+KCdOYWVVc2VySW1wZXJzb25hdGVEaWFsb2dDb21wb25lbnQnKTtcbmV4cG9ydCBjb25zdCBOQUVfQURNSU5fSU1QRVJTT05BVEVfRElBTE9HX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnRUeXBlPHVua25vd24+PignTmFlQWRtaW5JbXBlcnNvbmF0ZURpYWxvZ0NvbXBvbmVudCcpO1xuIl19
@@ -9,4 +9,5 @@ export * from './components/prompt-dialog/prompt-dialog.module';
9
9
  export * from './dialog.module';
10
10
  // SERVICES
11
11
  export * from './services/dialog.service';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLFVBQVU7QUFDVixjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLFdBQVc7QUFDWCxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ09NUE9ORU5UU1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQnO1xuXG4vLyBNT0RVTEVTXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcHJvbXB0LWRpYWxvZy9wcm9tcHQtZGlhbG9nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy5tb2R1bGUnO1xuXG4vLyBTRVJWSUNFU1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG4iXX0=
12
+ export * from './injection-tokens';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLFVBQVU7QUFDVixjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLFdBQVc7QUFDWCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDT01QT05FTlRTXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcHJvbXB0LWRpYWxvZy9wcm9tcHQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbi8vIE1PRFVMRVNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9hbGVydC1kaWFsb2cvYWxlcnQtZGlhbG9nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wcm9tcHQtZGlhbG9nL3Byb21wdC1kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nLm1vZHVsZSc7XG5cbi8vIFNFUlZJQ0VTXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5qZWN0aW9uLXRva2Vucyc7XG4iXX0=
@@ -4,5 +4,9 @@ export var EventConstants;
4
4
  * Changed fields parameter of {@link SetDataEventOutcome}
5
5
  */
6
6
  EventConstants["CHANGED_FIELDS"] = "changedFields";
7
+ /**
8
+ * Front actions parameter of {@link EventOutcome}
9
+ */
10
+ EventConstants["FRONT_ACTIONS"] = "frontActions";
7
11
  })(EventConstants || (EventConstants = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9ldmVudC9tb2RlbC9ldmVudC1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUV0Qjs7T0FFRztJQUNILGtEQUFnQyxDQUFBO0FBQ3BDLENBQUMsRUFOVyxjQUFjLEtBQWQsY0FBYyxRQU16QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEV2ZW50Q29uc3RhbnRzIHtcblxuICAgIC8qKlxuICAgICAqIENoYW5nZWQgZmllbGRzIHBhcmFtZXRlciBvZiB7QGxpbmsgU2V0RGF0YUV2ZW50T3V0Y29tZX1cbiAgICAgKi9cbiAgICBDSEFOR0VEX0ZJRUxEUyA9ICdjaGFuZ2VkRmllbGRzJ1xufVxuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9ldmVudC9tb2RlbC9ldmVudC1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksY0FVWDtBQVZELFdBQVksY0FBYztJQUV0Qjs7T0FFRztJQUNILGtEQUFnQyxDQUFBO0lBQ2hDOztPQUVHO0lBQ0gsZ0RBQThCLENBQUE7QUFDbEMsQ0FBQyxFQVZXLGNBQWMsS0FBZCxjQUFjLFFBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXZlbnRDb25zdGFudHMge1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlZCBmaWVsZHMgcGFyYW1ldGVyIG9mIHtAbGluayBTZXREYXRhRXZlbnRPdXRjb21lfVxuICAgICAqL1xuICAgIENIQU5HRURfRklFTERTID0gJ2NoYW5nZWRGaWVsZHMnLFxuICAgIC8qKlxuICAgICAqIEZyb250IGFjdGlvbnMgcGFyYW1ldGVyIG9mIHtAbGluayBFdmVudE91dGNvbWV9XG4gICAgICovXG4gICAgRlJPTlRfQUNUSU9OUyA9ICdmcm9udEFjdGlvbnMnXG59XG4iXX0=
@@ -46,6 +46,28 @@ export class EventService {
46
46
  });
47
47
  return changedFieldsMap;
48
48
  }
49
+ parseFrontActionsFromOutcomeTree(outcome) {
50
+ const frontActions = [];
51
+ if (!!outcome.outcomes && outcome.outcomes.length > 0) {
52
+ return this.parseFrontActionsFromOutcomeTreeRecursive(outcome.outcomes, frontActions);
53
+ }
54
+ else
55
+ return frontActions;
56
+ }
57
+ parseFrontActionsFromOutcomeTreeRecursive(outcomes, frontActions) {
58
+ outcomes.forEach(childOutcome => {
59
+ if (EventConstants.FRONT_ACTIONS in childOutcome) {
60
+ const childFrontActions = childOutcome.frontActions;
61
+ if (!!childFrontActions) {
62
+ frontActions.push(...childFrontActions);
63
+ }
64
+ }
65
+ if (!!childOutcome.outcomes && childOutcome.outcomes.length > 0) {
66
+ this.parseFrontActionsFromOutcomeTreeRecursive(childOutcome.outcomes, frontActions);
67
+ }
68
+ });
69
+ return frontActions;
70
+ }
49
71
  }
50
72
  EventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
73
  EventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, providedIn: 'root' });
@@ -55,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
55
77
  providedIn: 'root'
56
78
  }]
57
79
  }], ctorParameters: function () { return []; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLeEQsTUFBTSxPQUFPLFlBQVk7SUFFckI7SUFDQSxDQUFDO0lBRU0saUNBQWlDLENBQUMsT0FBcUI7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLDBDQUEwQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM5Rjs7WUFBTSxPQUFPLGdCQUFnQixDQUFDO0lBQ25DLENBQUM7SUFFTywwQ0FBMEMsQ0FBQyxRQUE2QixFQUM3QixnQkFBa0M7UUFDakYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM1QixJQUFJLGNBQWMsQ0FBQyxjQUFjLElBQUksWUFBWTttQkFDMUMsQ0FBQyxDQUFFLFlBQW9DLENBQUMsS0FBSzttQkFDN0MsQ0FBQyxDQUFFLFlBQW9DLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxNQUFNLGNBQWMsR0FBd0IsWUFBbUMsQ0FBQztnQkFDaEYsTUFBTSxvQkFBb0IsR0FBbUIsWUFBb0MsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUM5RyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2pELGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDakM7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUN6RCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRzt3QkFDL0IsTUFBTTtxQkFDVCxDQUFDO2lCQUNMO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ2hELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTs0QkFDM0QsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3BHLENBQUMsQ0FBQyxDQUFDO3FCQUNOO3lCQUFNO3dCQUNILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNuRztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO1lBQ0QsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzdELElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDNUY7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQzs7MEdBN0NRLFlBQVk7OEdBQVosWUFBWSxjQUZULE1BQU07NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFdmVudE91dGNvbWV9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHN9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkcyc7XG5pbXBvcnQge1NldERhdGFFdmVudE91dGNvbWV9IGZyb20gJy4uL21vZGVsL2V2ZW50LW91dGNvbWVzL2RhdGEtb3V0Y29tZXMvc2V0LWRhdGEtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4vaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtFdmVudENvbnN0YW50c30gZnJvbSAnLi4vbW9kZWwvZXZlbnQtY29uc3RhbnRzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlQ2hhbmdlZEZpZWxkc0Zyb21PdXRjb21lVHJlZShvdXRjb21lOiBFdmVudE91dGNvbWUpOiBDaGFuZ2VkRmllbGRzTWFwIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHt9O1xuICAgICAgICBpZiAoISFvdXRjb21lLm91dGNvbWVzICYmIG91dGNvbWUub3V0Y29tZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlUmVjdXJzaXZlKG91dGNvbWUub3V0Y29tZXMsIGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIGNoYW5nZWRGaWVsZHNNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUob3V0Y29tZXM6IEFycmF5PEV2ZW50T3V0Y29tZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCk6IENoYW5nZWRGaWVsZHNNYXAge1xuICAgICAgICBvdXRjb21lcy5mb3JFYWNoKGNoaWxkT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICBpZiAoRXZlbnRDb25zdGFudHMuQ0hBTkdFRF9GSUVMRFMgaW4gY2hpbGRPdXRjb21lXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLmFDYXNlXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLnRhc2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXREYXRhT3V0Y29tZTogU2V0RGF0YUV2ZW50T3V0Y29tZSA9IGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dGNvbWVDaGFuZ2VkRmllbGRzOiBDaGFuZ2VkRmllbGRzID0gKGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lKS5jaGFuZ2VkRmllbGRzLmNoYW5nZWRGaWVsZHM7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FzZUlkID0gc2V0RGF0YU91dGNvbWUuYUNhc2Uuc3RyaW5nSWQ7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhjaGFuZ2VkRmllbGRzTWFwKS5pbmNsdWRlcyhjYXNlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrSWQgPSBzZXREYXRhT3V0Y29tZS50YXNrLnN0cmluZ0lkO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdKS5pbmNsdWRlcyh0YXNrSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFza0lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG91dGNvbWVDaGFuZ2VkRmllbGRzKS5mb3JFYWNoKGZpZWxkSWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdW3Rhc2tJZF0pLmluY2x1ZGVzKGZpZWxkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXSkuZm9yRWFjaChhdHRyaWJ1dGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdW2ZpZWxkSWRdW2F0dHJpYnV0ZV0gPSBvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXVthdHRyaWJ1dGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzTWFwW2Nhc2VJZF1bdGFza0lkXVtmaWVsZElkXSA9IHNldERhdGFPdXRjb21lLmNoYW5nZWRGaWVsZHMuY2hhbmdlZEZpZWxkc1tmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhY2hpbGRPdXRjb21lLm91dGNvbWVzICYmIGNoaWxkT3V0Y29tZS5vdXRjb21lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUoY2hpbGRPdXRjb21lLm91dGNvbWVzLCBjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjaGFuZ2VkRmllbGRzTWFwO1xuICAgIH1cblxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLeEQsTUFBTSxPQUFPLFlBQVk7SUFFckI7SUFDQSxDQUFDO0lBRU0saUNBQWlDLENBQUMsT0FBcUI7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLDBDQUEwQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM5Rjs7WUFBTSxPQUFPLGdCQUFnQixDQUFDO0lBQ25DLENBQUM7SUFFTywwQ0FBMEMsQ0FBQyxRQUE2QixFQUM3QixnQkFBa0M7UUFDakYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM1QixJQUFJLGNBQWMsQ0FBQyxjQUFjLElBQUksWUFBWTttQkFDMUMsQ0FBQyxDQUFFLFlBQW9DLENBQUMsS0FBSzttQkFDN0MsQ0FBQyxDQUFFLFlBQW9DLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxNQUFNLGNBQWMsR0FBd0IsWUFBbUMsQ0FBQztnQkFDaEYsTUFBTSxvQkFBb0IsR0FBbUIsWUFBb0MsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUM5RyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0s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WTs4R0FBWixZQUFZLGNBRlQsTUFBTTs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9ldmVudC1vdXRjb21lJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkcywgRnJvbnRBY3Rpb259IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkcyc7XG5pbXBvcnQge1NldERhdGFFdmVudE91dGNvbWV9IGZyb20gJy4uL21vZGVsL2V2ZW50LW91dGNvbWVzL2RhdGEtb3V0Y29tZXMvc2V0LWRhdGEtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4vaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtFdmVudENvbnN0YW50c30gZnJvbSAnLi4vbW9kZWwvZXZlbnQtY29uc3RhbnRzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlQ2hhbmdlZEZpZWxkc0Zyb21PdXRjb21lVHJlZShvdXRjb21lOiBFdmVudE91dGNvbWUpOiBDaGFuZ2VkRmllbGRzTWFwIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHt9O1xuICAgICAgICBpZiAoISFvdXRjb21lLm91dGNvbWVzICYmIG91dGNvbWUub3V0Y29tZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlUmVjdXJzaXZlKG91dGNvbWUub3V0Y29tZXMsIGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIGNoYW5nZWRGaWVsZHNNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUob3V0Y29tZXM6IEFycmF5PEV2ZW50T3V0Y29tZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCk6IENoYW5nZWRGaWVsZHNNYXAge1xuICAgICAgICBvdXRjb21lcy5mb3JFYWNoKGNoaWxkT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICBpZiAoRXZlbnRDb25zdGFudHMuQ0hBTkdFRF9GSUVMRFMgaW4gY2hpbGRPdXRjb21lXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLmFDYXNlXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLnRhc2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXREYXRhT3V0Y29tZTogU2V0RGF0YUV2ZW50T3V0Y29tZSA9IGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dGNvbWVDaGFuZ2VkRmllbGRzOiBDaGFuZ2VkRmllbGRzID0gKGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lKS5jaGFuZ2VkRmllbGRzLmNoYW5nZWRGaWVsZHM7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FzZUlkID0gc2V0RGF0YU91dGNvbWUuYUNhc2Uuc3RyaW5nSWQ7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhjaGFuZ2VkRmllbGRzTWFwKS5pbmNsdWRlcyhjYXNlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrSWQgPSBzZXREYXRhT3V0Y29tZS50YXNrLnN0cmluZ0lkO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdKS5pbmNsdWRlcyh0YXNrSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFza0lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG91dGNvbWVDaGFuZ2VkRmllbGRzKS5mb3JFYWNoKGZpZWxkSWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdW3Rhc2tJZF0pLmluY2x1ZGVzKGZpZWxkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXSkuZm9yRWFjaChhdHRyaWJ1dGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdW2ZpZWxkSWRdW2F0dHJpYnV0ZV0gPSBvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXVthdHRyaWJ1dGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzTWFwW2Nhc2VJZF1bdGFza0lkXVtmaWVsZElkXSA9IHNldERhdGFPdXRjb21lLmNoYW5nZWRGaWVsZHMuY2hhbmdlZEZpZWxkc1tmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhY2hpbGRPdXRjb21lLm91dGNvbWVzICYmIGNoaWxkT3V0Y29tZS5vdXRjb21lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUoY2hpbGRPdXRjb21lLm91dGNvbWVzLCBjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjaGFuZ2VkRmllbGRzTWFwO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXJzZUZyb250QWN0aW9uc0Zyb21PdXRjb21lVHJlZShvdXRjb21lOiBFdmVudE91dGNvbWUpOiBBcnJheTxGcm9udEFjdGlvbj4ge1xuICAgICAgICBjb25zdCBmcm9udEFjdGlvbnM6IEFycmF5PEZyb250QWN0aW9uPiA9IFtdO1xuICAgICAgICBpZiAoISFvdXRjb21lLm91dGNvbWVzICYmIG91dGNvbWUub3V0Y29tZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VGcm9udEFjdGlvbnNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUob3V0Y29tZS5vdXRjb21lcywgZnJvbnRBY3Rpb25zKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBmcm9udEFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZyb250QWN0aW9uc0Zyb21PdXRjb21lVHJlZVJlY3Vyc2l2ZShvdXRjb21lczogQXJyYXk8RXZlbnRPdXRjb21lPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250QWN0aW9uczogQXJyYXk8RnJvbnRBY3Rpb24+KTogQXJyYXk8RnJvbnRBY3Rpb24+IHtcbiAgICAgICAgb3V0Y29tZXMuZm9yRWFjaChjaGlsZE91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKEV2ZW50Q29uc3RhbnRzLkZST05UX0FDVElPTlMgaW4gY2hpbGRPdXRjb21lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRGcm9udEFjdGlvbnM6IEFycmF5PEZyb250QWN0aW9uPiA9IChjaGlsZE91dGNvbWUgYXMgRXZlbnRPdXRjb21lKS5mcm9udEFjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICBpZiAoISFjaGlsZEZyb250QWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBmcm9udEFjdGlvbnMucHVzaCguLi5jaGlsZEZyb250QWN0aW9ucylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISFjaGlsZE91dGNvbWUub3V0Y29tZXMgJiYgY2hpbGRPdXRjb21lLm91dGNvbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRnJvbnRBY3Rpb25zRnJvbU91dGNvbWVUcmVlUmVjdXJzaXZlKGNoaWxkT3V0Y29tZS5vdXRjb21lcywgZnJvbnRBY3Rpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmcm9udEFjdGlvbnM7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgY2FzZXMgZnJvbSB0aGUgYmFja2VuZC4gUmV0dXJuZWQgY2FzZXMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHBhcnQgb2YgYSB7QGxpbmsgRmlsdGVyfSBvYmplY3QgZm9yIFtzZWFyY2hDYXNlcygpXXtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlI3NlYXJjaENhc2VzfVxuICogbWV0aG9kIGluIHtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlfS5cbiAqXG4gKiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB7QGxpbmsgQ2FzZUdldFJlcXVlc3RCb2R5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNlU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2YgdGhlIHNwZWNpZmllZCBQZXRyaU5ldC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIFBldHJpTmV0IGlzIHNwZWNpZmllZCwgdGhlIHJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2Ygb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcHJvY2Vzcz86IFBldHJpTmV0U2VhcmNoUmVxdWVzdCB8IEFycmF5PFBldHJpTmV0U2VhcmNoUmVxdWVzdD47XG4gICAgLy8gVE9ETyBCVUcgMTcuNC4yMDIwIC0gTmVlZHMgaW52ZXN0aWdhdGlvbiwgYmFja2VuZCBoYXMgdGhlc2UgYXR0cmlidXRlcyBkZWNsYXJlZCBpbiBDYXNlU2VhcmNoUmVxdWVzdCBjbGFzcyBidXRcbiAgICAvLyAgRWxhc3RpY0Nhc2VTZXJ2aWNlIGRvZXNuJ3QgYXBwZWFyIHRvIHVzZSB0aGVtXG4gICAgLy8gcHJvY2Vzc0lkZW50aWZpZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8vIHRpdGxlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyB3ZXJlIGNyZWF0ZWQgYnkgdGhlIHNwZWNpZmllZCBhdXRob3IuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBhdXRob3IgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgd2VyZSBjcmVhdGVkIGJ5IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIGF1dGhvcj86IEF1dGhvclNlYXJjaFJlcXVlc3QgfCBBcnJheTxBdXRob3JTZWFyY2hSZXF1ZXN0PjtcbiAgICAvKipcbiAgICAgKiBNYXBzIGZpZWxkIElEcyB0byBmaWVsZCB2YWx1ZXMuIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBkYXRhIGZpZWxkcyB3aXRoIHRoZSBwcm92aWRlZCBJRHMgdGhhdCBoYXZlIHRoZSBwcm92aWRlZCB2YWx1ZXMuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBmaWVsZC12YWx1ZSBwYWlyIGlzIHNwZWNpZmllZCwgdGhlIGRhdGEgc2V0IG9mIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IG1hdGNoIGFsbCBvZiB0aGUgcGFpcnMuXG4gICAgICovXG4gICAgZGF0YT86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBIGZ1bGwgdGV4dCBxdWVyeSBvbiBhbGwgaW5kZXhlZCBmaWVsZHMsIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZnVsbCB0ZXh0IHNlYXJjaGluZy5cbiAgICAgKlxuICAgICAqIEZ1bGwgdGV4dCBzZWFyY2ggaXMgZW5hYmxlZCBvbiBjYXNlJ3MgdGl0bGUsIGF1dGhvcidzIG5hbWUgYW5kIGF1dGhvcidzIGVtYWlsIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgZnVsbFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgY2FzZXMsIHRoYXQgaGF2ZSB0YXNrcywgdGhhdCBjb3JyZXNwb25kIHRvIHNwZWNpZmllZCB0cmFuc2l0aW9uIElELlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgdHJhbnNpdGlvbiBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGFza3MgdGhhdCBjb3JyZXNwb25kIHRvIGF0IGxlYXN0IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBhbiBhY3RpdmUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHJvbGUgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGFjdGl2ZS5cbiAgICAgKi9cbiAgICByb2xlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBxdWVyeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGhlIHNwZWNpZmllZCBzdHJpbmcgSUQuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBzdHJpbmcgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHN0cmluZ0lkPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgYXJlIGluc3RhbmNlcyBvZiBvbmUgb2YgdGhlIGdyb3Vwcy5cbiAgICAgKi9cbiAgICBncm91cD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG5cbiAgICB1cmlOb2RlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcmllcyBjYXNlcyB0aGF0IGFyZSBpbnN0YW5jZXMgb2YgYSBzcGVjaWZpYyBQZXRyaU5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBldHJpTmV0U2VhcmNoUmVxdWVzdCB7XG4gICAgLyoqXG4gICAgICogUXVlcmllZCBQZXRyaU5ldCBpZGVudGlmaWVyXG4gICAgICovXG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJpZXMgY2FzZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkgYSBzcGVjaWZpYyBhdXRob3IuIENhc2UncyBhdXRob3IgbXVzdCBtYXRjaCBhbGwgcHJvdmlkZWQgYXR0cmlidXRlcyB0byBmdWxmaWxsIHRoZSBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JTZWFyY2hSZXF1ZXN0IHtcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIElEXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQXV0aG9yJ3MgdXNlciBuYW1lXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIGVtYWlsXG4gICAgICovXG4gICAgZW1haWw/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgY2FzZXMgZnJvbSB0aGUgYmFja2VuZC4gUmV0dXJuZWQgY2FzZXMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHBhcnQgb2YgYSB7QGxpbmsgRmlsdGVyfSBvYmplY3QgZm9yIFtzZWFyY2hDYXNlcygpXXtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlI3NlYXJjaENhc2VzfVxuICogbWV0aG9kIGluIHtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlfS5cbiAqXG4gKiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB7QGxpbmsgQ2FzZUdldFJlcXVlc3RCb2R5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNlU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2YgdGhlIHNwZWNpZmllZCBQZXRyaU5ldC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIFBldHJpTmV0IGlzIHNwZWNpZmllZCwgdGhlIHJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2Ygb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcHJvY2Vzcz86IFBldHJpTmV0U2VhcmNoUmVxdWVzdCB8IEFycmF5PFBldHJpTmV0U2VhcmNoUmVxdWVzdD47XG4gICAgLy8gVE9ETyBCVUcgMTcuNC4yMDIwIC0gTmVlZHMgaW52ZXN0aWdhdGlvbiwgYmFja2VuZCBoYXMgdGhlc2UgYXR0cmlidXRlcyBkZWNsYXJlZCBpbiBDYXNlU2VhcmNoUmVxdWVzdCBjbGFzcyBidXRcbiAgICAvLyAgRWxhc3RpY0Nhc2VTZXJ2aWNlIGRvZXNuJ3QgYXBwZWFyIHRvIHVzZSB0aGVtXG4gICAgLy8gcHJvY2Vzc0lkZW50aWZpZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8vIHRpdGxlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyB3ZXJlIGNyZWF0ZWQgYnkgdGhlIHNwZWNpZmllZCBhdXRob3IuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBhdXRob3IgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgd2VyZSBjcmVhdGVkIGJ5IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIGF1dGhvcj86IEF1dGhvclNlYXJjaFJlcXVlc3QgfCBBcnJheTxBdXRob3JTZWFyY2hSZXF1ZXN0PjtcbiAgICAvKipcbiAgICAgKiBNYXBzIGZpZWxkIElEcyB0byBmaWVsZCB2YWx1ZXMuIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBkYXRhIGZpZWxkcyB3aXRoIHRoZSBwcm92aWRlZCBJRHMgdGhhdCBoYXZlIHRoZSBwcm92aWRlZCB2YWx1ZXMuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBmaWVsZC12YWx1ZSBwYWlyIGlzIHNwZWNpZmllZCwgdGhlIGRhdGEgc2V0IG9mIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IG1hdGNoIGFsbCBvZiB0aGUgcGFpcnMuXG4gICAgICovXG4gICAgZGF0YT86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBIGZ1bGwgdGV4dCBxdWVyeSBvbiBhbGwgaW5kZXhlZCBmaWVsZHMsIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZnVsbCB0ZXh0IHNlYXJjaGluZy5cbiAgICAgKlxuICAgICAqIEZ1bGwgdGV4dCBzZWFyY2ggaXMgZW5hYmxlZCBvbiBjYXNlJ3MgdGl0bGUsIGF1dGhvcidzIG5hbWUgYW5kIGF1dGhvcidzIGVtYWlsIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgZnVsbFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgY2FzZXMsIHRoYXQgaGF2ZSB0YXNrcywgdGhhdCBjb3JyZXNwb25kIHRvIHNwZWNpZmllZCB0cmFuc2l0aW9uIElELlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgdHJhbnNpdGlvbiBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGFza3MgdGhhdCBjb3JyZXNwb25kIHRvIGF0IGxlYXN0IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBhbiBhY3RpdmUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHJvbGUgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGFjdGl2ZS5cbiAgICAgKi9cbiAgICByb2xlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBxdWVyeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGhlIHNwZWNpZmllZCBzdHJpbmcgSUQuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBzdHJpbmcgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHN0cmluZ0lkPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgYXJlIGluc3RhbmNlcyBvZiBvbmUgb2YgdGhlIGdyb3Vwcy5cbiAgICAgKi9cbiAgICBncm91cD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG5cbiAgICB1cmlOb2RlSWQ/OiBzdHJpbmc7XG5cbiAgICB0YWdzPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbiAgICB9O1xufVxuXG4vKipcbiAqIFF1ZXJpZXMgY2FzZXMgdGhhdCBhcmUgaW5zdGFuY2VzIG9mIGEgc3BlY2lmaWMgUGV0cmlOZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQZXRyaU5ldFNlYXJjaFJlcXVlc3Qge1xuICAgIC8qKlxuICAgICAqIFF1ZXJpZWQgUGV0cmlOZXQgaWRlbnRpZmllclxuICAgICAqL1xuICAgIGlkZW50aWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyaWVzIGNhc2VzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5IGEgc3BlY2lmaWMgYXV0aG9yLiBDYXNlJ3MgYXV0aG9yIG11c3QgbWF0Y2ggYWxsIHByb3ZpZGVkIGF0dHJpYnV0ZXMgdG8gZnVsZmlsbCB0aGUgcXVlcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yU2VhcmNoUmVxdWVzdCB7XG4gICAgLyoqXG4gICAgICogQXV0aG9yJ3MgdXNlciBJRFxuICAgICAqL1xuICAgIGlkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEF1dGhvcidzIHVzZXIgbmFtZVxuICAgICAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQXV0aG9yJ3MgdXNlciBlbWFpbFxuICAgICAqL1xuICAgIGVtYWlsPzogc3RyaW5nO1xufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL3Rhc2stc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQZXRyaU5ldFNlYXJjaFJlcXVlc3R9IGZyb20gJy4vY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5JztcblxuLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgdGFza3MgZnJvbSBiYWNrZW5kLiBSZXR1cm5lZCB0YXNrcyBtdXN0IGZ1bGZpbGwgYWxsIHByb3ZpZGVkIGNyaXRlcmlhLlxuICpcbiAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMgcGFydCBvZiBhIHtAbGluayBGaWx0ZXJ9IG9iamVjdCBmb3IgW3NlYXJjaFRhc2soKV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNzZWFyY2hUYXNrfVxuICogbWV0aG9kIGluIHtAbGluayBUYXNrUmVzb3VyY2VTZXJ2aWNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgaGF2ZSB0aGUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgcm9sZSBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcm9sZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBmdWxmaWxsIHRoZSBxdWVyeSBkZWZpbmVkIGJ5IHRoZSBvYmplY3QuIFNlZSB7QGxpbmsgVGFza1NlYXJjaENhc2VRdWVyeX0gZm9yIGluZm9ybWF0aW9uIGFib3V0IHF1ZXJ5IGdlbmVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIG9iamVjdCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGZ1bGZpbGwgb25lIG9mIHRoZSBxdWVyaWVzLlxuICAgICAqL1xuICAgIGNhc2U/OiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGl0bGUgKGRlZmF1bHQgdmFsdWUpLlxuICAgICAqXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSB0aXRsZSBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGhhdmUgb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgYmUgYXNzaWduZWQgdG8gdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgSUQuXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHVzZXIgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgbXVzdCBiZSBhc3NpZ25lZCB0byBvbmUgb2YgdGhlIHVzZXJzLlxuICAgICAqL1xuICAgIHVzZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgYmUgb2YgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgcHJvY2VzcyBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGJlIG9mIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHByb2Nlc3M/OiBQZXRyaU5ldFNlYXJjaFJlcXVlc3QgfCBBcnJheTxQZXRyaU5ldFNlYXJjaFJlcXVlc3Q+O1xuICAgIC8qKlxuICAgICAqIEEgZnVsbCB0ZXh0IHF1ZXJ5IG9uIGFsbCBpbmRleCBmaWVsZHMsIHRoYXQgYXZhaWxhYmxlIGZvciBmdWxsIHRleHQgc2VhcmNoaW5nLlxuICAgICAqXG4gICAgICogRnVsbCB0ZXh0IHNlYXJjaCBpcyBlbmFibGVkIG9uIHRhc2sncyB0aXRsZSBhbmQgaXQncyBjYXNlJ3MgdGl0bGUgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBmdWxsVGV4dD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEZpbHRlcnMgd2l0aCB0aGlzIGZpZWxkIHNldCBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBbZ2V0VGFza3Nde0BsaW5rIFRhc2tSZXNvdXJjZVNlcnZpY2UjZ2V0VGFza3N9IG1ldGhvZFxuICAgICAqIG9mIHRoZSB7QGxpbmsgVGFza1Jlc291cmNlU2VydmljZX0uIERvaW5nIHNvIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLlxuICAgICAqL1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRyYW5zaXRpb24gSUQuXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHRyYW5zaXRpb24gSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb25JZD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBiZSBmcm9tIGNhc2VzIHRoYXQgYXJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgYXJlIGZyb20gY2FzZXMgb2Ygb25lIG9mIHRoZSBncm91cHMuXG4gICAgICovXG4gICAgZ3JvdXA/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHdheSB0YXNrcyBjYXNlIGlzIHF1ZXJpZWQuXG4gKlxuICogW2lkXXtAbGluayBUYXNrU2VhcmNoQ2FzZVF1ZXJ5I2lkfSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgW3RpdGxlXXtAbGluayBUYXNrU2VhcmNoQ2FzZVF1ZXJ5I3RpdGxlfSBpbiBjYXNlIGJvdGggYXR0cmlidXRlcyBhcmUgZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCB0YXNrcyBtdXN0IGJlIG9mIGNhc2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNhc2UgSUQuXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBiZSBvZiBjYXNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcgaW4gaXRzIHRpdGxlLlxuICAgICAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL3Rhc2stc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQZXRyaU5ldFNlYXJjaFJlcXVlc3R9IGZyb20gJy4vY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5JztcblxuLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgdGFza3MgZnJvbSBiYWNrZW5kLiBSZXR1cm5lZCB0YXNrcyBtdXN0IGZ1bGZpbGwgYWxsIHByb3ZpZGVkIGNyaXRlcmlhLlxuICpcbiAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMgcGFydCBvZiBhIHtAbGluayBGaWx0ZXJ9IG9iamVjdCBmb3IgW3NlYXJjaFRhc2soKV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNzZWFyY2hUYXNrfVxuICogbWV0aG9kIGluIHtAbGluayBUYXNrUmVzb3VyY2VTZXJ2aWNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgaGF2ZSB0aGUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgcm9sZSBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcm9sZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBmdWxmaWxsIHRoZSBxdWVyeSBkZWZpbmVkIGJ5IHRoZSBvYmplY3QuIFNlZSB7QGxpbmsgVGFza1NlYXJjaENhc2VRdWVyeX0gZm9yIGluZm9ybWF0aW9uIGFib3V0IHF1ZXJ5IGdlbmVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIG9iamVjdCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGZ1bGZpbGwgb25lIG9mIHRoZSBxdWVyaWVzLlxuICAgICAqL1xuICAgIGNhc2U/OiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGl0bGUgKGRlZmF1bHQgdmFsdWUpLlxuICAgICAqXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSB0aXRsZSBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGhhdmUgb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgdGl0bGU/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgYmUgYXNzaWduZWQgdG8gdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgSUQuXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHVzZXIgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgbXVzdCBiZSBhc3NpZ25lZCB0byBvbmUgb2YgdGhlIHVzZXJzLlxuICAgICAqL1xuICAgIHVzZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgYmUgb2YgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgcHJvY2VzcyBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCB0YXNrcyBtdXN0IGJlIG9mIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHByb2Nlc3M/OiBQZXRyaU5ldFNlYXJjaFJlcXVlc3QgfCBBcnJheTxQZXRyaU5ldFNlYXJjaFJlcXVlc3Q+O1xuICAgIC8qKlxuICAgICAqIEEgZnVsbCB0ZXh0IHF1ZXJ5IG9uIGFsbCBpbmRleCBmaWVsZHMsIHRoYXQgYXZhaWxhYmxlIGZvciBmdWxsIHRleHQgc2VhcmNoaW5nLlxuICAgICAqXG4gICAgICogRnVsbCB0ZXh0IHNlYXJjaCBpcyBlbmFibGVkIG9uIHRhc2sncyB0aXRsZSBhbmQgaXQncyBjYXNlJ3MgdGl0bGUgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBmdWxsVGV4dD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEZpbHRlcnMgd2l0aCB0aGlzIGZpZWxkIHNldCBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBbZ2V0VGFza3Nde0BsaW5rIFRhc2tSZXNvdXJjZVNlcnZpY2UjZ2V0VGFza3N9IG1ldGhvZFxuICAgICAqIG9mIHRoZSB7QGxpbmsgVGFza1Jlc291cmNlU2VydmljZX0uIERvaW5nIHNvIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLlxuICAgICAqL1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgaGF2ZSB0aGUgc3BlY2lmaWVkIHRyYW5zaXRpb24gSUQuXG4gICAgICpcbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHRyYW5zaXRpb24gSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb25JZD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBiZSBmcm9tIGNhc2VzIHRoYXQgYXJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgYXJlIGZyb20gY2FzZXMgb2Ygb25lIG9mIHRoZSBncm91cHMuXG4gICAgICovXG4gICAgZ3JvdXA/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIHRoZSBzcGVjaWZpZWQgc3RyaW5nIElELlxuICAgICAqXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBzdHJpbmcgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgdGFza3MgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHN0cmluZ0lkPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcblxuICAgIHRhZ3M/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICAgIH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgd2F5IHRhc2tzIGNhc2UgaXMgcXVlcmllZC5cbiAqXG4gKiBbaWRde0BsaW5rIFRhc2tTZWFyY2hDYXNlUXVlcnkjaWR9IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBbdGl0bGVde0BsaW5rIFRhc2tTZWFyY2hDYXNlUXVlcnkjdGl0bGV9IGluIGNhc2UgYm90aCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tTZWFyY2hDYXNlUXVlcnkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIHRhc2tzIG11c3QgYmUgb2YgY2FzZSB3aXRoIHRoZSBzcGVjaWZpZWQgY2FzZSBJRC5cbiAgICAgKi9cbiAgICBpZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCB0YXNrcyBtdXN0IGJlIG9mIGNhc2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbiBpdHMgdGl0bGUuXG4gICAgICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,15 +1,14 @@
1
1
  import { Inject, Injectable, Optional } from '@angular/core';
2
2
  import { of, ReplaySubject } from 'rxjs';
3
- import { filter, take } from 'rxjs/operators';
3
+ import { take } from 'rxjs/operators';
4
4
  import { SimpleFilter } from './models/simple-filter';
5
5
  import { hasContent } from '../utility/pagination/page-has-content';
6
6
  import { FieldTypeResource } from '../task-content/model/field-type-resource';
7
7
  import { UserFilterConstants } from './models/user-filter-constants';
8
- import { SideMenuSize } from '../side-menu/models/side-menu-size';
9
- import { NAE_LOAD_FILTER_COMPONENT, NAE_SAVE_FILTER_COMPONENT } from '../side-menu/content-components/injection-tokens';
10
8
  import { FilterType } from './models/filter-type';
11
9
  import { MergeOperator } from './models/merge-operator';
12
10
  import { getFieldFromDataGroups } from '../utility/get-field';
11
+ import { NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT } from '../dialog/injection-tokens';
13
12
  import * as i0 from "@angular/core";
14
13
  import * as i1 from "../resources/engine-endpoint/case-resource.service";
15
14
  import * as i2 from "../resources/engine-endpoint/task-resource.service";
@@ -18,11 +17,12 @@ import * as i4 from "../utility/call-chain/call-chain.service";
18
17
  import * as i5 from "../side-menu/services/side-menu.service";
19
18
  import * as i6 from "../logger/services/logger.service";
20
19
  import * as i7 from "../search/category-factory/category-resolver.service";
20
+ import * as i8 from "@angular/material/dialog";
21
21
  /**
22
22
  * Service that manages filters created by users of the application.
23
23
  */
24
24
  export class UserFiltersService {
25
- constructor(_caseService, _taskService, _processService, _callChainService, _sideMenuService, _log, _categoryResolverService, _saveFilterComponent, _loadFilterComponent) {
25
+ constructor(_caseService, _taskService, _processService, _callChainService, _sideMenuService, _log, _categoryResolverService, _dialog, _saveFilterComponent, _loadFilterComponent) {
26
26
  this._caseService = _caseService;
27
27
  this._taskService = _taskService;
28
28
  this._processService = _processService;
@@ -30,6 +30,7 @@ export class UserFiltersService {
30
30
  this._sideMenuService = _sideMenuService;
31
31
  this._log = _log;
32
32
  this._categoryResolverService = _categoryResolverService;
33
+ this._dialog = _dialog;
33
34
  this._saveFilterComponent = _saveFilterComponent;
34
35
  this._loadFilterComponent = _loadFilterComponent;
35
36
  this._initialized$ = new ReplaySubject(1);
@@ -96,10 +97,13 @@ export class UserFiltersService {
96
97
  filterCasesFilter = filterCasesFilter.merge(additionalFilter, MergeOperator.AND);
97
98
  }
98
99
  const result = new ReplaySubject(1);
99
- const ref = this._sideMenuService.open(this._loadFilterComponent, SideMenuSize.LARGE, {
100
- filter: filterCasesFilter
100
+ const ref = this._dialog.open(this._loadFilterComponent, {
101
+ panelClass: "dialog-responsive",
102
+ data: {
103
+ filter: filterCasesFilter
104
+ },
101
105
  });
102
- ref.onClose.pipe(filter(e => !e.opened), take(1)).subscribe(event => {
106
+ ref.afterClosed().subscribe(event => {
103
107
  if (event.message === 'Side menu closed unexpectedly') {
104
108
  result.next();
105
109
  }
@@ -146,10 +150,13 @@ export class UserFiltersService {
146
150
  }
147
151
  const result = new ReplaySubject(1);
148
152
  this.createFilterCaseAndSetData(searchService, allowedNets, searchCategories, viewId, additionalData, withDefaultCategories, inheritAllowedNets, navigationItemTaskData).subscribe(filterCaseId => {
149
- const ref = this._sideMenuService.open(this._saveFilterComponent, SideMenuSize.LARGE, {
150
- newFilterCaseId: filterCaseId
153
+ const ref = this._dialog.open(this._saveFilterComponent, {
154
+ panelClass: "dialog-responsive",
155
+ data: {
156
+ newFilterCaseId: filterCaseId
157
+ },
151
158
  });
152
- ref.onClose.pipe(filter(e => !e.opened), take(1)).subscribe(event => {
159
+ ref.afterClosed().subscribe(event => {
153
160
  if (event.message === 'Side menu closed unexpectedly') {
154
161
  this.delete(filterCaseId);
155
162
  result.next();
@@ -303,22 +310,22 @@ export class UserFiltersService {
303
310
  };
304
311
  }
305
312
  }
306
- UserFiltersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserFiltersService, deps: [{ token: i1.CaseResourceService }, { token: i2.TaskResourceService }, { token: i3.ProcessService }, { token: i4.CallChainService }, { token: i5.SideMenuService }, { token: i6.LoggerService }, { token: i7.CategoryResolverService }, { token: NAE_SAVE_FILTER_COMPONENT, optional: true }, { token: NAE_LOAD_FILTER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
313
+ UserFiltersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserFiltersService, deps: [{ token: i1.CaseResourceService }, { token: i2.TaskResourceService }, { token: i3.ProcessService }, { token: i4.CallChainService }, { token: i5.SideMenuService }, { token: i6.LoggerService }, { token: i7.CategoryResolverService }, { token: i8.MatDialog }, { token: NAE_SAVE_FILTER_DIALOG_COMPONENT, optional: true }, { token: NAE_LOAD_FILTER_DIALOG_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
307
314
  UserFiltersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserFiltersService, providedIn: 'root' });
308
315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserFiltersService, decorators: [{
309
316
  type: Injectable,
310
317
  args: [{
311
318
  providedIn: 'root'
312
319
  }]
313
- }], ctorParameters: function () { return [{ type: i1.CaseResourceService }, { type: i2.TaskResourceService }, { type: i3.ProcessService }, { type: i4.CallChainService }, { type: i5.SideMenuService }, { type: i6.LoggerService }, { type: i7.CategoryResolverService }, { type: undefined, decorators: [{
320
+ }], ctorParameters: function () { return [{ type: i1.CaseResourceService }, { type: i2.TaskResourceService }, { type: i3.ProcessService }, { type: i4.CallChainService }, { type: i5.SideMenuService }, { type: i6.LoggerService }, { type: i7.CategoryResolverService }, { type: i8.MatDialog }, { type: undefined, decorators: [{
314
321
  type: Optional
315
322
  }, {
316
323
  type: Inject,
317
- args: [NAE_SAVE_FILTER_COMPONENT]
324
+ args: [NAE_SAVE_FILTER_DIALOG_COMPONENT]
318
325
  }] }, { type: undefined, decorators: [{
319
326
  type: Optional
320
327
  }, {
321
328
  type: Inject,
322
- args: [NAE_LOAD_FILTER_COMPONENT]
329
+ args: [NAE_LOAD_FILTER_DIALOG_COMPONENT]
323
330
  }] }]; } });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSWxFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRzVFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUdoRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUd0SCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXRELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFHNUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzNCLFlBQXNCLFlBQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLGVBQStCLEVBQy9CLGlCQUFtQyxFQUNuQyxnQkFBaUMsRUFDakMsSUFBbUIsRUFDbkIsd0JBQWlELEVBQ0Ysb0JB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QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsdUJBQXVCLEVBQUUscUJBQXFCO1lBQzlDLGtCQUFrQjtTQUNyQixDQUFDO0lBQ04sQ0FBQzs7Z0hBcFZRLGtCQUFrQix5UEFZSyx5QkFBeUIsNkJBQ3pCLHlCQUF5QjtvSEFiaEQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFhZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUM1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoU2VydmljZX0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHksIFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkc30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge1VzZXJGaWx0ZXJDb25zdGFudHN9IGZyb20gJy4vbW9kZWxzL3VzZXItZmlsdGVyLWNvbnN0YW50cyc7XG5pbXBvcnQge1NpZGVNZW51U2l6ZX0gZnJvbSAnLi4vc2lkZS1tZW51L21vZGVscy9zaWRlLW1lbnUtc2l6ZSc7XG5pbXBvcnQge1NhdmVGaWx0ZXJJbmplY3Rpb25EYXRhfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL21vZGVsL3NhdmUtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfTE9BRF9GSUxURVJfQ09NUE9ORU5ULCBOQUVfU0FWRV9GSUxURVJfQ09NUE9ORU5UfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7TG9hZEZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvbG9hZC1maWx0ZXIvbW9kZWwvbG9hZC1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtTYXZlZEZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL3NhdmVkLWZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvY2F0ZWdvcnktZmFjdG9yeS9jYXRlZ29yeS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7Z2V0RmllbGRGcm9tRGF0YUdyb3Vwc30gZnJvbSAnLi4vdXRpbGl0eS9nZXQtZmllbGQnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgZmlsdGVycyBjcmVhdGVkIGJ5IHVzZXJzIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJOZXQ6IE5ldDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbGxDaGFpblNlcnZpY2U6IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWRlTWVudVNlcnZpY2U6IFNpZGVNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlOiBDYXRlZ29yeVJlc29sdmVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9TQVZFX0ZJTFRFUl9DT01QT05FTlQpIHByb3RlY3RlZCBfc2F2ZUZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9MT0FEX0ZJTFRFUl9DT01QT05FTlQpIHByb3RlY3RlZCBfbG9hZEZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPikge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1NlcnZpY2UuZ2V0TmV0KFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX05FVF9JREVOVElGSUVSKS5zdWJzY3JpYmUobmV0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlck5ldCA9IG5ldDtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYEZpbHRlciBuZXQgY291bGQgbm90IGJlIGxvYWRlZCB3aXRoIGVycm9yYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGZpbHRlciBjYXNlIGJ5IGl0cyBjYXNlIGlkLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJDYXNlSWQgU3RyaW5nSWQgb2YgdGhlIGZpbHRlciBjYXNlIHRoYXQgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgKiBAcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYHRydWVgIGlmIHRoZSBjYXNlIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBhbmQgYGZhbHNlYCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKGZpbHRlckNhc2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICAgICAgdGhpcy5fY2FzZVNlcnZpY2UuZGVsZXRlQ2FzZShmaWx0ZXJDYXNlSWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBzdWNjZXNzJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsdGVyIGNhc2UgZGVsZXRlIGZhaWx1cmUnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWx0ZXIgY2FzZSBkZWxldGUgZXJyb3InLCBlKTtcbiAgICAgICAgICAgIHJlc3VsdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIHNpZGUgbWVudSB3aXRoIGZpbHRlciBjYXNlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmUgb2YgdGhlbS5cbiAgICAgKlxuICAgICAqIFRoZSBkZWZhdWx0IGZpbHRlciBjb25zdHJhaW5zIHRoZSBjYXNlcyB0byBiZSBpbnN0YW5jZXMgb2YgdGhlIGZpbHRlciBwcm9jZXNzIGFuZCB0byBiZSBmaWx0ZXJzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZVxuICAgICAqIChgQ2FzZWAgb3IgYFRhc2tgKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIHdoZXRoZXIgYENhc2VgIG9yIGBUYXNrYCB1c2VyIGZpbHRlcnMgc2hvdWxkIGJlIGxvYWRlZFxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRmlsdGVyIGFkZGl0aW9uYWwgY29uc3RyYWlucyBvbiB0aGUgZGlzcGxheWVkIHVzZXIgZmlsdGVyIGNhc2VzLiBNdXN0IGJlIG9mIHR5cGUgYENhc2VgXG4gICAgICogb3RoZXJ3aXNlIHRoZSBtZXRob2QgdGhyb3dzIGFuIGVycm9yLiBJZiBpdCBpcyBhIHtAbGluayBNZXJnZWRGaWx0ZXJ9IG11c3QgdXNlIHRoZSBgQU5EYCB7QGxpbmsgTWVyZ2VPcGVyYXRvcn0gb3RoZXJ3aXNlIGFuIGVycm9yXG4gICAgICogd2lsbCBiZSB0aHJvd25cbiAgICAgKiBAcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRhdGEgbmVjZXNzYXJ5IHRvIHJlY29uc3RydWN0IHRoZSBzZWxlY3RlZCBmaWx0ZXIsIG9yIGB1bmRlZmluZWRgIGlmIG5vIGZpbHRlciB3YXMgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZChmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLCBhZGRpdGlvbmFsRmlsdGVyPzogRmlsdGVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKGFkZGl0aW9uYWxGaWx0ZXI/LnR5cGUgPT09IEZpbHRlclR5cGUuVEFTSykge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdUaGUgYWRkaXRpb25hbCBmaWx0ZXIgYXBwbGllZCB0byBVc2VyRmlsdGVyc1NlcnZpY2UubG9hZCgpIG11c3QgYmUgb2YgdHlwZSBDYXNlJywgYWRkaXRpb25hbEZpbHRlcik7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFwcGxpZWQgdG8gVXNlckZpbHRlcnNTZXJ2aWNlLmxvYWQoKSBtdXN0IGJlIG9mIHR5cGUgQ2FzZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZpbHRlckNhc2VzRmlsdGVyID0gU2ltcGxlRmlsdGVyLmZyb21DYXNlUXVlcnkoe1xuICAgICAgICAgICAgcHJvY2Vzczoge1xuICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX05FVF9JREVOVElGSUVSXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcXVlcnk6IGBkYXRhU2V0LiR7VXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRH0ua2V5VmFsdWU6JHtmaWx0ZXJUeXBlfWBcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghIWFkZGl0aW9uYWxGaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlckNhc2VzRmlsdGVyID0gZmlsdGVyQ2FzZXNGaWx0ZXIubWVyZ2UoYWRkaXRpb25hbEZpbHRlciwgTWVyZ2VPcGVyYXRvci5BTkQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2lkZU1lbnVTZXJ2aWNlLm9wZW4odGhpcy5fbG9hZEZpbHRlckNvbXBvbmVudCwgU2lkZU1lbnVTaXplLkxBUkdFLCB7XG4gICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckNhc2VzRmlsdGVyXG4gICAgICAgIH0gYXMgTG9hZEZpbHRlckluamVjdGlvbkRhdGEpO1xuICAgICAgICByZWYub25DbG9zZS5waXBlKGZpbHRlcihlID0+ICFlLm9wZW5lZCksIHRha2UoMSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQubWVzc2FnZSA9PT0gJ1NpZGUgbWVudSBjbG9zZWQgdW5leHBlY3RlZGx5Jykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIHRoZSBwcmVkaWNhdGUgZmlsdGVyIGNvbnRhaW5lZCBpbiB0aGUgcHJvdmlkZWQge0BsaW5rIFNlYXJjaFNlcnZpY2V9IGluc3RhbmNlLlxuICAgICAqXG4gICAgICogVGhlIGJhc2UgZmlsdGVyIG9mIHRoZSBzZWFyY2ggc2VydmljZSBpcyBub3Qgc2F2ZWQuXG4gICAgICpcbiAgICAgKiBBIG5ldyBmaWx0ZXIgY2FzZSBpcyBjcmVhdGVkIGFuZCB0aGUgbmVjZXNzYXJ5IGZpbHRlciBpbmZvcm1hdGlvbiBpcyBzZXQgaW50byBpdC5cbiAgICAgKlxuICAgICAqIFRoZW4gYSBzaWRlIG1lbnUgd2l0aCB0aGUgZmlsdGVyIGlzIG9wZW5lZCBmb3IgdGhlIHVzZXIgdG8gZW50ZXIgdGhlIG5hbWUgYW5kIG90aGVyIHByb3BlcnRpZXMuXG4gICAgICogVGhlIHVzZXIgY2FuIGNvbmZpcm0gb3IgY2FuY2VsIHRoZSBzYXZlIGJ5IGZpbmlzaGluZyB0aGUgdGFzayBpbiB0aGUgc2lkZSBtZW51LCBvciBieSBjYW5jZWxpbmcvY2xvc2luZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWFyY2hTZXJ2aWNlIHNlYXJjaCBzZXJ2aWNlIGNvbnRhaW5pbmcgYSBwcmVkaWNhdGUgZmlsdGVyLCB3ZSB3YW50IHRvIHNhdmVcbiAgICAgKiBAcGFyYW0gYWxsb3dlZE5ldHMgYWxsb3dlZCBuZXRzIG9mIHRoZSB2aWV3LCB0aGF0IGNvbnRhaW5zIHRoZSBzZWFyY2ggc2VydmljZVxuICAgICAqIEBwYXJhbSBzZWFyY2hDYXRlZ29yaWVzIHNlYXJjaCBjYXRlZ29yaWVzIGF2YWlsYWJsZSBpbiB0aGUgc2F2ZWQgYWR2YW5jZWQgc2VhcmNoIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSB2aWV3SWQgdGhlIHZpZXdJZCBvZiB0aGUgdmlldyB3aGljaCBjb250YWluZWQgdGhlIGZpbHRlci5cbiAgICAgKiBJZiBuZWl0aGVyIHRoZSBgdmlld0lkYCBub3IgdGhlIGBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhYCBhdHRyaWJ1dGUgaXMgc2V0IHRoZSBmaWx0ZXIgd2lsbCBiZSBjcmVhdGVkIGFzIGEgbmV3IHJvb3QgZmlsdGVyXG4gICAgICogd2l0aG91dCBhbnkgcGFyZW50IGZpbHRlciBsaW5rLiBUaGlzIHdpbGwgbW9zdCBsaWtlbHkgcmVzdWx0IGluIHRoZSBmaWx0ZXIgYmVpbmcgbGVzcyByZXN0cmljdGl2ZSB0aGFuIHdoYXRcbiAgICAgKiB0aGUgdXNlciBzZWVzIGluIHRoZSBjdXJyZW50IHZpZXcsIHNpbmNlIHRoZSBiYXNlIGZpbHRlciBvZiB0aGUgdmlldyB3aWxsIE5PVCBiZSBzYXZlZCBhbG9uZ3NpZGUgdGhlIHNhdmVkIGZpbHRlci5cbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbERhdGEgc2V0IGRhdGEgcmVxdWVzdCBib2R5LCB0aGF0IGlzIHNlbnQgdG8gdGhlIGZpbHRlciBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBib2R5LlxuICAgICAqIFRoZSBkZWZhdWx0IGJvZHkgaXMgYXBwbGllZCBmaXJzdCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhpcyBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0gd2l0aERlZmF1bHRDYXRlZ29yaWVzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgYmUgc2F2ZWQgd2l0aFxuICAgICAqIHRoZSBbZGVmYXVsdFNlYXJjaENhdGVnb3JpZXNde0BsaW5rIEZpbHRlck1ldGFkYXRhI2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzfSBmbGFnIHNldCB0byBgdHJ1ZWAsIG9yIGBmYWxzZWAuXG4gICAgICogQHBhcmFtIGluaGVyaXRBbGxvd2VkTmV0cyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIG1lcmdlIGl0cyBhbGxvd2VkIG5ldHMgd2l0aCB0aGUgYWxsb3dlZCBuZXRzIHByb3ZpZGVkIGJ5XG4gICAgICogdGhlIHtAbGluayBCYXNlQWxsb3dlZE5ldHNTZXJ2aWNlfS5cbiAgICAgKiBAcGFyYW0gbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSBpZiBwcm92aWRlZCB0aGVuIGl0IGltcGxpZXMgdGhlIGZpbHRlciBoYXMgYSBwYXJlbnQgZmlsdGVyIHRoYXQgY3JlYXRlZCBpdHMgaG9zdCBkeW5hbWljIHZpZXcuXG4gICAgICogSWYgdGhpcyBpcyB0aGUgY2FzZSB0aGUgY2FzZSBJRCBvZiB0aGUgcGFyZW50IGZpbHRlciB3aWxsIGJlIHNldCBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbHRlciBjYXNlLlxuICAgICAqIElmIG5vdCBzZXQgaXQgaW1wbGllcyB0aGlzIGlzIGEgZmlsdGVyIG9yaWdpbmF0aW5nIGluIGFuIGluLWFwcCB2aWV3IGFuZCBpdHMgdmlldyBpZCB3aWxsIGJlIHNldCBpbnRvIHRoZSBjcmVhdGVkIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGlkIG9mIHRoZSBjcmVhdGVkIEZpbHRlciBjYXNlIGluc3RhbmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBzYXZlIHByb2Nlc3MsXG4gICAgICogb3IgdGhlIGZpbHRlciBjb3VsZCBub3QgYmUgc2F2ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogUmVhZG9ubHlBcnJheTxUeXBlPENhdGVnb3J5PGFueT4+PixcbiAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkcyA9IHt9LFxuICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyA9IHRydWUsXG4gICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhOiBBcnJheTxEYXRhR3JvdXA+ID0gbnVsbCk6IE9ic2VydmFibGU8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4ge1xuICAgICAgICBpZiAoIXNlYXJjaFNlcnZpY2UuYWRkaXRpb25hbEZpbHRlcnNBcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cud2FybignVGhlIHByb3ZpZGVkIFNlYXJjaFNlcnZpY2UgY29udGFpbnMgbm8gZmlsdGVyIGJlc2lkZXMgdGhlIGJhc2UgZmlsdGVyLiBOb3RoaW5nIHRvIHNhdmUuJyk7XG4gICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFNhdmVkRmlsdGVyTWV0YWRhdGE+KDEpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlckNhc2VBbmRTZXREYXRhKFxuICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgIGFsbG93ZWROZXRzLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIHZpZXdJZCxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhLFxuICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzLFxuICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YVxuICAgICAgICApLnN1YnNjcmliZShmaWx0ZXJDYXNlSWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2lkZU1lbnVTZXJ2aWNlLm9wZW4odGhpcy5fc2F2ZUZpbHRlckNvbXBvbmVudCwgU2lkZU1lbnVTaXplLkxBUkdFLCB7XG4gICAgICAgICAgICAgICAgbmV3RmlsdGVyQ2FzZUlkOiBmaWx0ZXJDYXNlSWRcbiAgICAgICAgICAgIH0gYXMgU2F2ZUZpbHRlckluamVjdGlvbkRhdGEpO1xuICAgICAgICAgICAgcmVmLm9uQ2xvc2UucGlwZShmaWx0ZXIoZSA9PiAhZS5vcGVuZWQpLCB0YWtlKDEpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGZpbHRlckNhc2VJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQ2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFsuLi5hbGxvd2VkTmV0c10sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IHZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IFNpbXBsZUZpbHRlci5mcm9tUXVlcnkoe3F1ZXJ5OiBzZWFyY2hTZXJ2aWNlLnJvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9LCBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgcHJlZGljYXRlIGZpbHRlciBjb250YWluZWQgaW4gdGhlIHByb3ZpZGVkIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoZSBiYXNlIGZpbHRlciBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgbm90IHNhdmVkLlxuICAgICAqXG4gICAgICogQSBuZXcgZmlsdGVyIGNhc2UgaXMgY3JlYXRlZCBhbmQgdGhlIG5lY2Vzc2FyeSBmaWx0ZXIgaW5mb3JtYXRpb24gaXMgc2V0IGludG8gaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoU2VydmljZSBzZWFyY2ggc2VydmljZSBjb250YWluaW5nIGEgcHJlZGljYXRlIGZpbHRlciwgd2Ugd2FudCB0byBzYXZlXG4gICAgICogQHBhcmFtIGFsbG93ZWROZXRzIGFsbG93ZWQgbmV0cyBvZiB0aGUgdmlldywgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gc2VhcmNoQ2F0ZWdvcmllcyBzZWFyY2ggY2F0ZWdvcmllcyBhdmFpbGFibGUgaW4gdGhlIHNhdmVkIGFkdmFuY2VkIHNlYXJjaCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gdmlld0lkIHRoZSB2aWV3SWQgb2YgdGhlIHZpZXcgd2hpY2ggY29udGFpbmVkIHRoZSBmaWx0ZXIuXG4gICAgICogSWYgbmVpdGhlciB0aGUgYHZpZXdJZGAgbm9yIHRoZSBgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YWAgYXR0cmlidXRlIGlzIHNldCB0aGUgZmlsdGVyIHdpbGwgYmUgY3JlYXRlZCBhcyBhIG5ldyByb290IGZpbHRlclxuICAgICAqIHdpdGhvdXQgYW55IHBhcmVudCBmaWx0ZXIgbGluay4gVGhpcyB3aWxsIG1vc3QgbGlrZWx5IHJlc3VsdCBpbiB0aGUgZmlsdGVyIGJlaW5nIGxlc3MgcmVzdHJpY3RpdmUgdGhhbiB3aGF0XG4gICAgICogdGhlIHVzZXIgc2VlcyBpbiB0aGUgY3VycmVudCB2aWV3LCBzaW5jZSB0aGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHZpZXcgd2lsbCBOT1QgYmUgc2F2ZWQgYWxvbmdzaWRlIHRoZSBzYXZlZCBmaWx0ZXIuXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxEYXRhIHNldCBkYXRhIHJlcXVlc3QgYm9keSwgdGhhdCBpcyBzZW50IHRvIHRoZSBmaWx0ZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgYm9keS5cbiAgICAgKiBUaGUgZGVmYXVsdCBib2R5IGlzIGFwcGxpZWQgZmlyc3QgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoaXMgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIGJlIHNhdmVkIHdpdGhcbiAgICAgKiB0aGUgW2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzXXtAbGluayBGaWx0ZXJNZXRhZGF0YSNkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc30gZmxhZyBzZXQgdG8gYHRydWVgLCBvciBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBpbmhlcml0QWxsb3dlZE5ldHMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBtZXJnZSBpdHMgYWxsb3dlZCBuZXRzIHdpdGggdGhlIGFsbG93ZWQgbmV0cyBwcm92aWRlZCBieVxuICAgICAqIHRoZSB7QGxpbmsgQmFzZUFsbG93ZWROZXRzU2VydmljZX0uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgaWYgcHJvdmlkZWQgdGhlbiBpdCBpbXBsaWVzIHRoZSBmaWx0ZXIgaGFzIGEgcGFyZW50IGZpbHRlciB0aGF0IGNyZWF0ZWQgaXRzIGhvc3QgZHluYW1pYyB2aWV3LlxuICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGNhc2UgSUQgb2YgdGhlIHBhcmVudCBmaWx0ZXIgd2lsbCBiZSBzZXQgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgY2FzZS5cbiAgICAgKiBJZiBub3Qgc2V0IGl0IGltcGxpZXMgdGhpcyBpcyBhIGZpbHRlciBvcmlnaW5hdGluZyBpbiBhbiBpbi1hcHAgdmlldyBhbmQgaXRzIHZpZXcgaWQgd2lsbCBiZSBzZXQgaW50byB0aGUgY3JlYXRlZCBmaWx0ZXIuXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgY3JlYXRlZCBGaWx0ZXIgY2FzZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJDYXNlQW5kU2V0RGF0YShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RGaWVsZHMgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YTogQXJyYXk8RGF0YUdyb3VwPiA9IG51bGwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgICAgICB0aGlzLndoZW5Jbml0aWFsaXplZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fZmlsdGVyTmV0LmRlZmF1bHRDYXNlTmFtZSxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5fZmlsdGVyTmV0LnN0cmluZ0lkXG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoZmlsdGVyQ2FzZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZ2V0VGFza3MoU2ltcGxlRmlsdGVyLmZyb21UYXNrUXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICBjYXNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogKGZpbHRlckNhc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50KHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZpbHRlciBwcm9jZXNzIHRvIGNvbnRhaW4gdGFza3MsIGJ1dCBub25lIHdlcmUgZm91bmQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0VGFzayA9IHBhZ2UuY29udGVudC5maW5kKHRhc2sgPT4gdGFzay50cmFuc2l0aW9uSWQgPT09IFVzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRUYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrICcke1VzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICB9JywgYnV0IG5vbmUgd2FzIGZvdW5kIWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNZXRhZGF0YTogdGhpcy5maWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSAhPT0gbnVsbCAmJiBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZpbHRlckNhc2VJZEZpZWxkID0gZ2V0RmllbGRGcm9tRGF0YUdyb3VwcyhuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0NBU0VfSURfRklFTERfSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEZpbHRlckNhc2VJZEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuUEFSRU5UX0ZJTFRFUl9DQVNFX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRGaWx0ZXJDYXNlSWRGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3SWQgIT09IHVuZGVmaW5lZCB8fCB2aWV3SWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVtVc2VyRmlsdGVyQ29uc3RhbnRzLk9SSUdJTl9WSUVXX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2aWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblNldERhdGFGaW5pc2goaW5pdFRhc2ssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0VGFzay5zdHJpbmdJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9jYWxsQ2hhaW5TZXJ2aWNlLmNyZWF0ZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIGluc3RhbmNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCgoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgJ3NhdmVXaXRoU2lkZU1lbnUnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd2hlbkluaXRpYWxpemVkKG9uU3VjY2VzczogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmFpbHVyZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYFVzZXJGaWx0ZXJTZXJ2aWNlIGZhaWxlZCB0byBpbml0aWFsaXplIGFuZCB0aGUgY2FsbGVkIG1ldGhvZCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA/ICcgKCcgKyBtZXRob2QgKyAnKScgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2Fubm90IGJlIHBlcmZvcm1lZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5pdGlhbGl6ZWQgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPyBvblN1Y2Nlc3MoKSA6IG9uRmFpbHVyZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIDYuNC4yMDIxIElNUFJPVkVNRU5UIC0gZXh0cmFjdCBzaW1pbGFyIG1ldGhvZCBpbnRvIHNvbWUgdXRpbGl0eSBzZXJ2aWNlXG4gICAgcHJvdGVjdGVkIGFzc2lnblNldERhdGFGaW5pc2godGFzazogVGFzaywgZGF0YTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSwgY2FsbENoYWluOiBTdWJqZWN0PGJvb2xlYW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBhc3NpZ25PdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5zZXREYXRhKHRhc2suc3RyaW5nSWQsIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZmluaXNoVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoZmluaXNoT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBmaW5pc2hPdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBkYXRhLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2Uoc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllczogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHM6IGJvb2xlYW4pOiBGaWx0ZXJNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUsXG4gICAgICAgICAgICBwcmVkaWNhdGVNZXRhZGF0YTogc2VhcmNoU2VydmljZS5jcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogc2VhcmNoQ2F0ZWdvcmllcy5tYXAoYyA9PiB0aGlzLl9jYXRlZ29yeVJlc29sdmVyU2VydmljZS5zZXJpYWxpemUoYykpLFxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaENhdGVnb3JpZXM6IHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFTLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJbEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFLbkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQU10RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUU5Rzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFLM0IsWUFBc0IsWUFBaUMsRUFDakMsWUFBaUMsRUFDakMsZUFBK0IsRUFDL0IsaUJBQW1DLEVBQ25DLGdCQUFpQyxFQUNqQyxJQUFtQixFQUNuQix3QkFBaUQsRUFDakQsT0FBa0IsRUFDb0Msb0JBQTRDLEVBQzVDLG9CQUE0QztRQVRsRyxpQkFBWSxHQUFaLFlBQVks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QixrUkFhSyxnQ0FBZ0MsNkJBQ2hDLGdDQUFnQztvSEFkdkQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUNuRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoU2VydmljZX0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHksIFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkc30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge1VzZXJGaWx0ZXJDb25zdGFudHN9IGZyb20gJy4vbW9kZWxzL3VzZXItZmlsdGVyLWNvbnN0YW50cyc7XG5pbXBvcnQge1NhdmVGaWx0ZXJJbmplY3Rpb25EYXRhfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL21vZGVsL3NhdmUtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7TG9hZEZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvbG9hZC1maWx0ZXIvbW9kZWwvbG9hZC1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtTYXZlZEZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL3NhdmVkLWZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvY2F0ZWdvcnktZmFjdG9yeS9jYXRlZ29yeS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7Z2V0RmllbGRGcm9tRGF0YUdyb3Vwc30gZnJvbSAnLi4vdXRpbGl0eS9nZXQtZmllbGQnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TkFFX0xPQURfRklMVEVSX0RJQUxPR19DT01QT05FTlQsIE5BRV9TQVZFX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UfSBmcm9tICcuLi9kaWFsb2cvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgZmlsdGVycyBjcmVhdGVkIGJ5IHVzZXJzIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJOZXQ6IE5ldDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbGxDaGFpblNlcnZpY2U6IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWRlTWVudVNlcnZpY2U6IFNpZGVNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlOiBDYXRlZ29yeVJlc29sdmVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1NBVkVfRklMVEVSX0RJQUxPR19DT01QT05FTlQpIHByb3RlY3RlZCBfc2F2ZUZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9MT0FEX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UKSBwcm90ZWN0ZWQgX2xvYWRGaWx0ZXJDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTZXJ2aWNlLmdldE5ldChVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUikuc3Vic2NyaWJlKG5ldCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJOZXQgPSBuZXQ7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBGaWx0ZXIgbmV0IGNvdWxkIG5vdCBiZSBsb2FkZWQgd2l0aCBlcnJvcmAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgY2FzZSBieSBpdHMgY2FzZSBpZC5cbiAgICAgKiBAcGFyYW0gZmlsdGVyQ2FzZUlkIFN0cmluZ0lkIG9mIHRoZSBmaWx0ZXIgY2FzZSB0aGF0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGB0cnVlYCBpZiB0aGUgY2FzZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShmaWx0ZXJDYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX2Nhc2VTZXJ2aWNlLmRlbGV0ZUNhc2UoZmlsdGVyQ2FzZUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdGaWx0ZXIgY2FzZSBkZWxldGUgc3VjY2VzcycsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBmYWlsdXJlJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsdGVyIGNhc2UgZGVsZXRlIGVycm9yJywgZSk7XG4gICAgICAgICAgICByZXN1bHQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBzaWRlIG1lbnUgd2l0aCBmaWx0ZXIgY2FzZXMgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25lIG9mIHRoZW0uXG4gICAgICpcbiAgICAgKiBUaGUgZGVmYXVsdCBmaWx0ZXIgY29uc3RyYWlucyB0aGUgY2FzZXMgdG8gYmUgaW5zdGFuY2VzIG9mIHRoZSBmaWx0ZXIgcHJvY2VzcyBhbmQgdG8gYmUgZmlsdGVycyBvZiB0aGUgc3BlY2lmaWVkIHR5cGVcbiAgICAgKiAoYENhc2VgIG9yIGBUYXNrYCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyVHlwZSB3aGV0aGVyIGBDYXNlYCBvciBgVGFza2AgdXNlciBmaWx0ZXJzIHNob3VsZCBiZSBsb2FkZWRcbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbEZpbHRlciBhZGRpdGlvbmFsIGNvbnN0cmFpbnMgb24gdGhlIGRpc3BsYXllZCB1c2VyIGZpbHRlciBjYXNlcy4gTXVzdCBiZSBvZiB0eXBlIGBDYXNlYFxuICAgICAqIG90aGVyd2lzZSB0aGUgbWV0aG9kIHRocm93cyBhbiBlcnJvci4gSWYgaXQgaXMgYSB7QGxpbmsgTWVyZ2VkRmlsdGVyfSBtdXN0IHVzZSB0aGUgYEFORGAge0BsaW5rIE1lcmdlT3BlcmF0b3J9IG90aGVyd2lzZSBhbiBlcnJvclxuICAgICAqIHdpbGwgYmUgdGhyb3duXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBkYXRhIG5lY2Vzc2FyeSB0byByZWNvbnN0cnVjdCB0aGUgc2VsZWN0ZWQgZmlsdGVyLCBvciBgdW5kZWZpbmVkYCBpZiBubyBmaWx0ZXIgd2FzIHNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIGxvYWQoZmlsdGVyVHlwZTogRmlsdGVyVHlwZSwgYWRkaXRpb25hbEZpbHRlcj86IEZpbHRlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmIChhZGRpdGlvbmFsRmlsdGVyPy50eXBlID09PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFwcGxpZWQgdG8gVXNlckZpbHRlcnNTZXJ2aWNlLmxvYWQoKSBtdXN0IGJlIG9mIHR5cGUgQ2FzZScsIGFkZGl0aW9uYWxGaWx0ZXIpO1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBhZGRpdGlvbmFsIGZpbHRlciBhcHBsaWVkIHRvIFVzZXJGaWx0ZXJzU2VydmljZS5sb2FkKCkgbXVzdCBiZSBvZiB0eXBlIENhc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWx0ZXJDYXNlc0ZpbHRlciA9IFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHtcbiAgICAgICAgICAgIHByb2Nlc3M6IHtcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBgZGF0YVNldC4ke1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX1RZUEVfRklFTERfSUR9LmtleVZhbHVlOiR7ZmlsdGVyVHlwZX1gXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoISFhZGRpdGlvbmFsRmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXJDYXNlc0ZpbHRlciA9IGZpbHRlckNhc2VzRmlsdGVyLm1lcmdlKGFkZGl0aW9uYWxGaWx0ZXIsIE1lcmdlT3BlcmF0b3IuQU5EKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuX2xvYWRGaWx0ZXJDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFwiZGlhbG9nLXJlc3BvbnNpdmVcIixcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckNhc2VzRmlsdGVyXG4gICAgICAgICAgICB9IGFzIExvYWRGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIHByZWRpY2F0ZSBmaWx0ZXIgY29udGFpbmVkIGluIHRoZSBwcm92aWRlZCB7QGxpbmsgU2VhcmNoU2VydmljZX0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIG5vdCBzYXZlZC5cbiAgICAgKlxuICAgICAqIEEgbmV3IGZpbHRlciBjYXNlIGlzIGNyZWF0ZWQgYW5kIHRoZSBuZWNlc3NhcnkgZmlsdGVyIGluZm9ybWF0aW9uIGlzIHNldCBpbnRvIGl0LlxuICAgICAqXG4gICAgICogVGhlbiBhIHNpZGUgbWVudSB3aXRoIHRoZSBmaWx0ZXIgaXMgb3BlbmVkIGZvciB0aGUgdXNlciB0byBlbnRlciB0aGUgbmFtZSBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAgICAgKiBUaGUgdXNlciBjYW4gY29uZmlybSBvciBjYW5jZWwgdGhlIHNhdmUgYnkgZmluaXNoaW5nIHRoZSB0YXNrIGluIHRoZSBzaWRlIG1lbnUsIG9yIGJ5IGNhbmNlbGluZy9jbG9zaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlYXJjaFNlcnZpY2Ugc2VhcmNoIHNlcnZpY2UgY29udGFpbmluZyBhIHByZWRpY2F0ZSBmaWx0ZXIsIHdlIHdhbnQgdG8gc2F2ZVxuICAgICAqIEBwYXJhbSBhbGxvd2VkTmV0cyBhbGxvd2VkIG5ldHMgb2YgdGhlIHZpZXcsIHRoYXQgY29udGFpbnMgdGhlIHNlYXJjaCBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHNlYXJjaENhdGVnb3JpZXMgc2VhcmNoIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGluIHRoZSBzYXZlZCBhZHZhbmNlZCBzZWFyY2ggY29tcG9uZW50XG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgdmlld0lkIG9mIHRoZSB2aWV3IHdoaWNoIGNvbnRhaW5lZCB0aGUgZmlsdGVyLlxuICAgICAqIElmIG5laXRoZXIgdGhlIGB2aWV3SWRgIG5vciB0aGUgYG5hdmlnYXRpb25JdGVtVGFza0RhdGFgIGF0dHJpYnV0ZSBpcyBzZXQgdGhlIGZpbHRlciB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBuZXcgcm9vdCBmaWx0ZXJcbiAgICAgKiB3aXRob3V0IGFueSBwYXJlbnQgZmlsdGVyIGxpbmsuIFRoaXMgd2lsbCBtb3N0IGxpa2VseSByZXN1bHQgaW4gdGhlIGZpbHRlciBiZWluZyBsZXNzIHJlc3RyaWN0aXZlIHRoYW4gd2hhdFxuICAgICAqIHRoZSB1c2VyIHNlZXMgaW4gdGhlIGN1cnJlbnQgdmlldywgc2luY2UgdGhlIGJhc2UgZmlsdGVyIG9mIHRoZSB2aWV3IHdpbGwgTk9UIGJlIHNhdmVkIGFsb25nc2lkZSB0aGUgc2F2ZWQgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBzZXQgZGF0YSByZXF1ZXN0IGJvZHksIHRoYXQgaXMgc2VudCB0byB0aGUgZmlsdGVyIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGJvZHkuXG4gICAgICogVGhlIGRlZmF1bHQgYm9keSBpcyBhcHBsaWVkIGZpcnN0IGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGlzIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB3aXRoRGVmYXVsdENhdGVnb3JpZXMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBiZSBzYXZlZCB3aXRoXG4gICAgICogdGhlIFtkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc117QGxpbmsgRmlsdGVyTWV0YWRhdGEjZGVmYXVsdFNlYXJjaENhdGVnb3JpZXN9IGZsYWcgc2V0IHRvIGB0cnVlYCwgb3IgYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5oZXJpdEFsbG93ZWROZXRzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgbWVyZ2UgaXRzIGFsbG93ZWQgbmV0cyB3aXRoIHRoZSBhbGxvd2VkIG5ldHMgcHJvdmlkZWQgYnlcbiAgICAgKiB0aGUge0BsaW5rIEJhc2VBbGxvd2VkTmV0c1NlcnZpY2V9LlxuICAgICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhIGlmIHByb3ZpZGVkIHRoZW4gaXQgaW1wbGllcyB0aGUgZmlsdGVyIGhhcyBhIHBhcmVudCBmaWx0ZXIgdGhhdCBjcmVhdGVkIGl0cyBob3N0IGR5bmFtaWMgdmlldy5cbiAgICAgKiBJZiB0aGlzIGlzIHRoZSBjYXNlIHRoZSBjYXNlIElEIG9mIHRoZSBwYXJlbnQgZmlsdGVyIHdpbGwgYmUgc2V0IGludG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGNhc2UuXG4gICAgICogSWYgbm90IHNldCBpdCBpbXBsaWVzIHRoaXMgaXMgYSBmaWx0ZXIgb3JpZ2luYXRpbmcgaW4gYW4gaW4tYXBwIHZpZXcgYW5kIGl0cyB2aWV3IGlkIHdpbGwgYmUgc2V0IGludG8gdGhlIGNyZWF0ZWQgZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgRmlsdGVyIGNhc2UgaW5zdGFuY2Ugb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIHNhdmUgcHJvY2VzcyxcbiAgICAgKiBvciB0aGUgZmlsdGVyIGNvdWxkIG5vdCBiZSBzYXZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgIHZpZXdJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogVGFza1NldERhdGFSZXF1ZXN0RmllbGRzID0ge30sXG4gICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMgPSB0cnVlLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtVGFza0RhdGE6IEFycmF5PERhdGFHcm91cD4gPSBudWxsKTogT2JzZXJ2YWJsZTxTYXZlZEZpbHRlck1ldGFkYXRhPiB7XG4gICAgICAgIGlmICghc2VhcmNoU2VydmljZS5hZGRpdGlvbmFsRmlsdGVyc0FwcGxpZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKCdUaGUgcHJvdmlkZWQgU2VhcmNoU2VydmljZSBjb250YWlucyBubyBmaWx0ZXIgYmVzaWRlcyB0aGUgYmFzZSBmaWx0ZXIuIE5vdGhpbmcgdG8gc2F2ZS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4oMSk7XG4gICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyQ2FzZUFuZFNldERhdGEoXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgdmlld0lkLFxuICAgICAgICAgICAgYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhXG4gICAgICAgICkuc3Vic2NyaWJlKGZpbHRlckNhc2VJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl9kaWFsb2cub3Blbih0aGlzLl9zYXZlRmlsdGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyQ2FzZUlkOiBmaWx0ZXJDYXNlSWRcbiAgICAgICAgICAgICAgICB9IGFzIFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGZpbHRlckNhc2VJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQ2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFsuLi5hbGxvd2VkTmV0c10sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IHZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IFNpbXBsZUZpbHRlci5mcm9tUXVlcnkoe3F1ZXJ5OiBzZWFyY2hTZXJ2aWNlLnJvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9LCBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgcHJlZGljYXRlIGZpbHRlciBjb250YWluZWQgaW4gdGhlIHByb3ZpZGVkIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoZSBiYXNlIGZpbHRlciBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgbm90IHNhdmVkLlxuICAgICAqXG4gICAgICogQSBuZXcgZmlsdGVyIGNhc2UgaXMgY3JlYXRlZCBhbmQgdGhlIG5lY2Vzc2FyeSBmaWx0ZXIgaW5mb3JtYXRpb24gaXMgc2V0IGludG8gaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoU2VydmljZSBzZWFyY2ggc2VydmljZSBjb250YWluaW5nIGEgcHJlZGljYXRlIGZpbHRlciwgd2Ugd2FudCB0byBzYXZlXG4gICAgICogQHBhcmFtIGFsbG93ZWROZXRzIGFsbG93ZWQgbmV0cyBvZiB0aGUgdmlldywgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gc2VhcmNoQ2F0ZWdvcmllcyBzZWFyY2ggY2F0ZWdvcmllcyBhdmFpbGFibGUgaW4gdGhlIHNhdmVkIGFkdmFuY2VkIHNlYXJjaCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gdmlld0lkIHRoZSB2aWV3SWQgb2YgdGhlIHZpZXcgd2hpY2ggY29udGFpbmVkIHRoZSBmaWx0ZXIuXG4gICAgICogSWYgbmVpdGhlciB0aGUgYHZpZXdJZGAgbm9yIHRoZSBgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YWAgYXR0cmlidXRlIGlzIHNldCB0aGUgZmlsdGVyIHdpbGwgYmUgY3JlYXRlZCBhcyBhIG5ldyByb290IGZpbHRlclxuICAgICAqIHdpdGhvdXQgYW55IHBhcmVudCBmaWx0ZXIgbGluay4gVGhpcyB3aWxsIG1vc3QgbGlrZWx5IHJlc3VsdCBpbiB0aGUgZmlsdGVyIGJlaW5nIGxlc3MgcmVzdHJpY3RpdmUgdGhhbiB3aGF0XG4gICAgICogdGhlIHVzZXIgc2VlcyBpbiB0aGUgY3VycmVudCB2aWV3LCBzaW5jZSB0aGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHZpZXcgd2lsbCBOT1QgYmUgc2F2ZWQgYWxvbmdzaWRlIHRoZSBzYXZlZCBmaWx0ZXIuXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxEYXRhIHNldCBkYXRhIHJlcXVlc3QgYm9keSwgdGhhdCBpcyBzZW50IHRvIHRoZSBmaWx0ZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgYm9keS5cbiAgICAgKiBUaGUgZGVmYXVsdCBib2R5IGlzIGFwcGxpZWQgZmlyc3QgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoaXMgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIGJlIHNhdmVkIHdpdGhcbiAgICAgKiB0aGUgW2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzXXtAbGluayBGaWx0ZXJNZXRhZGF0YSNkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc30gZmxhZyBzZXQgdG8gYHRydWVgLCBvciBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBpbmhlcml0QWxsb3dlZE5ldHMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBtZXJnZSBpdHMgYWxsb3dlZCBuZXRzIHdpdGggdGhlIGFsbG93ZWQgbmV0cyBwcm92aWRlZCBieVxuICAgICAqIHRoZSB7QGxpbmsgQmFzZUFsbG93ZWROZXRzU2VydmljZX0uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgaWYgcHJvdmlkZWQgdGhlbiBpdCBpbXBsaWVzIHRoZSBmaWx0ZXIgaGFzIGEgcGFyZW50IGZpbHRlciB0aGF0IGNyZWF0ZWQgaXRzIGhvc3QgZHluYW1pYyB2aWV3LlxuICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGNhc2UgSUQgb2YgdGhlIHBhcmVudCBmaWx0ZXIgd2lsbCBiZSBzZXQgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgY2FzZS5cbiAgICAgKiBJZiBub3Qgc2V0IGl0IGltcGxpZXMgdGhpcyBpcyBhIGZpbHRlciBvcmlnaW5hdGluZyBpbiBhbiBpbi1hcHAgdmlldyBhbmQgaXRzIHZpZXcgaWQgd2lsbCBiZSBzZXQgaW50byB0aGUgY3JlYXRlZCBmaWx0ZXIuXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgY3JlYXRlZCBGaWx0ZXIgY2FzZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJDYXNlQW5kU2V0RGF0YShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RGaWVsZHMgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YTogQXJyYXk8RGF0YUdyb3VwPiA9IG51bGwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgICAgICB0aGlzLndoZW5Jbml0aWFsaXplZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fZmlsdGVyTmV0LmRlZmF1bHRDYXNlTmFtZSxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5fZmlsdGVyTmV0LnN0cmluZ0lkXG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoZmlsdGVyQ2FzZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZ2V0VGFza3MoU2ltcGxlRmlsdGVyLmZyb21UYXNrUXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICBjYXNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogKGZpbHRlckNhc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50KHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZpbHRlciBwcm9jZXNzIHRvIGNvbnRhaW4gdGFza3MsIGJ1dCBub25lIHdlcmUgZm91bmQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0VGFzayA9IHBhZ2UuY29udGVudC5maW5kKHRhc2sgPT4gdGFzay50cmFuc2l0aW9uSWQgPT09IFVzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRUYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrICcke1VzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICB9JywgYnV0IG5vbmUgd2FzIGZvdW5kIWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNZXRhZGF0YTogdGhpcy5maWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSAhPT0gbnVsbCAmJiBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZpbHRlckNhc2VJZEZpZWxkID0gZ2V0RmllbGRGcm9tRGF0YUdyb3VwcyhuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0NBU0VfSURfRklFTERfSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEZpbHRlckNhc2VJZEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuUEFSRU5UX0ZJTFRFUl9DQVNFX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRGaWx0ZXJDYXNlSWRGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3SWQgIT09IHVuZGVmaW5lZCB8fCB2aWV3SWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVtVc2VyRmlsdGVyQ29uc3RhbnRzLk9SSUdJTl9WSUVXX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2aWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblNldERhdGFGaW5pc2goaW5pdFRhc2ssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0VGFzay5zdHJpbmdJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9jYWxsQ2hhaW5TZXJ2aWNlLmNyZWF0ZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIGluc3RhbmNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCgoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgJ3NhdmVXaXRoU2lkZU1lbnUnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd2hlbkluaXRpYWxpemVkKG9uU3VjY2VzczogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmFpbHVyZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYFVzZXJGaWx0ZXJTZXJ2aWNlIGZhaWxlZCB0byBpbml0aWFsaXplIGFuZCB0aGUgY2FsbGVkIG1ldGhvZCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA/ICcgKCcgKyBtZXRob2QgKyAnKScgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2Fubm90IGJlIHBlcmZvcm1lZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5pdGlhbGl6ZWQgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPyBvblN1Y2Nlc3MoKSA6IG9uRmFpbHVyZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIDYuNC4yMDIxIElNUFJPVkVNRU5UIC0gZXh0cmFjdCBzaW1pbGFyIG1ldGhvZCBpbnRvIHNvbWUgdXRpbGl0eSBzZXJ2aWNlXG4gICAgcHJvdGVjdGVkIGFzc2lnblNldERhdGFGaW5pc2godGFzazogVGFzaywgZGF0YTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSwgY2FsbENoYWluOiBTdWJqZWN0PGJvb2xlYW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBhc3NpZ25PdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5zZXREYXRhKHRhc2suc3RyaW5nSWQsIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZmluaXNoVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoZmluaXNoT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBmaW5pc2hPdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBkYXRhLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2Uoc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllczogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHM6IGJvb2xlYW4pOiBGaWx0ZXJNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUsXG4gICAgICAgICAgICBwcmVkaWNhdGVNZXRhZGF0YTogc2VhcmNoU2VydmljZS5jcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogc2VhcmNoQ2F0ZWdvcmllcy5tYXAoYyA9PiB0aGlzLl9jYXRlZ29yeVJlc29sdmVyU2VydmljZS5zZXJpYWxpemUoYykpLFxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaENhdGVnb3JpZXM6IHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==