qms-angular 1.0.55 → 1.0.56

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 (411) hide show
  1. package/bundles/qms-angular.umd.js +4003 -12241
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/components/app-icon/app-icon.module.js +16 -29
  4. package/esm2015/lib/components/app-icon/icon-registry.service.js +7 -9
  5. package/esm2015/lib/components/badges/qms-badges.component.js +15 -24
  6. package/esm2015/lib/components/badges/qms-badges.module.js +18 -33
  7. package/esm2015/lib/components/banner/qms-banner/qms-banner.component.js +16 -28
  8. package/esm2015/lib/components/banner/qms-banner/qms-banner.module.js +19 -36
  9. package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.js +16 -28
  10. package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.js +19 -36
  11. package/esm2015/lib/components/banner/qms-banner-loading/qms-banner-loading.component.js +13 -19
  12. package/esm2015/lib/components/banner/qms-banner-loading/qms-banner-loading.module.js +17 -30
  13. package/esm2015/lib/components/breadcrumb/breadcrumb-direction-icon.directive.js +10 -11
  14. package/esm2015/lib/components/breadcrumb/breadcrumb-item.directive.js +17 -20
  15. package/esm2015/lib/components/breadcrumb/breadcrumb.js +28 -40
  16. package/esm2015/lib/components/breadcrumb/breadcrumb.module.js +26 -50
  17. package/esm2015/lib/components/button/button-toggle.js +85 -120
  18. package/esm2015/lib/components/button/button.js +78 -86
  19. package/esm2015/lib/components/button/button.module.js +27 -51
  20. package/esm2015/lib/components/comment/comment.js +18 -29
  21. package/esm2015/lib/components/dialog/dialog.js +28 -38
  22. package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.js +16 -24
  23. package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.module.js +31 -71
  24. package/esm2015/lib/components/list/list.js +89 -101
  25. package/esm2015/lib/components/list/list.module.js +50 -94
  26. package/esm2015/lib/components/qms-app-bar/qms-app-bar.component.js +29 -55
  27. package/esm2015/lib/components/qms-app-bar/qms-app-bar.module.js +20 -39
  28. package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +22 -32
  29. package/esm2015/lib/components/qms-stepper/qms-stepper.module.js +25 -35
  30. package/esm2015/lib/components/related/content/related-content.component.js +12 -19
  31. package/esm2015/lib/components/related/list-other-related/list-related.component.js +25 -29
  32. package/esm2015/lib/components/related/popup/related-popup.component.js +33 -50
  33. package/esm2015/lib/components/related/related.module.js +43 -96
  34. package/esm2015/lib/components/related/risk/analysis/analysis.component.js +17 -23
  35. package/esm2015/lib/components/related/risk/list/list.component.js +18 -22
  36. package/esm2015/lib/components/related/risk/result/result.component.js +16 -23
  37. package/esm2015/lib/components/related/service/related-global.service.js +6 -7
  38. package/esm2015/lib/components/related/sidenav/sidenav.component.js +12 -21
  39. package/esm2015/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.js +18 -22
  40. package/esm2015/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.js +18 -22
  41. package/esm2015/lib/components/reports/qms-reports.module.js +20 -29
  42. package/esm2015/lib/components/rich-text/rich-text.js +32 -47
  43. package/esm2015/lib/components/rich-text/rich-text.module.js +21 -35
  44. package/esm2015/lib/components/select-dialog/select-dialog.js +16 -31
  45. package/esm2015/lib/components/select-include-children/select-include-children.component.js +33 -47
  46. package/esm2015/lib/components/select-include-children/select-include-children.module.js +33 -78
  47. package/esm2015/lib/components/select-include-children/services/select-global.service.js +6 -7
  48. package/esm2015/lib/components/suffix-field/suffix-field.directive.js +21 -22
  49. package/esm2015/lib/components/table/table-action.js +31 -31
  50. package/esm2015/lib/components/table/table.module.js +21 -37
  51. package/esm2015/lib/components/test-only/test-only.component.js +11 -14
  52. package/esm2015/lib/components/tooltip/tooltip.js +19 -24
  53. package/esm2015/lib/components/tooltip/tooltip.module.js +20 -38
  54. package/esm2015/lib/components/tree/tree.component.js +33 -46
  55. package/esm2015/lib/components/tree/tree.module.js +30 -69
  56. package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.js +16 -22
  57. package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.module.js +31 -71
  58. package/esm2015/lib/directives/chip-input/chip-input-chip-list.directive.js +13 -13
  59. package/esm2015/lib/directives/chip-input/chip-input-field.directive.js +10 -11
  60. package/esm2015/lib/directives/chip-input/chip-input-select-dropdown.directive.js +10 -11
  61. package/esm2015/lib/directives/chip-input/chip-input-select-field.directive.js +14 -17
  62. package/esm2015/lib/directives/chip-input/chip-input-select-trigger.directive.js +13 -14
  63. package/esm2015/lib/directives/chips/chip-body.directive.js +10 -11
  64. package/esm2015/lib/directives/chips/chip.directive.js +13 -13
  65. package/esm2015/lib/directives/dropdown-menu/dropdown-item.directive.js +14 -16
  66. package/esm2015/lib/directives/file-upload/file-upload-attachment-list.directive.js +10 -11
  67. package/esm2015/lib/directives/file-upload/file-upload-display.directive.js +16 -19
  68. package/esm2015/lib/directives/file-upload/file-upload-multiple-display.directive.js +14 -16
  69. package/esm2015/lib/directives/file-upload/file-upload-multiple-selector.directive.js +20 -26
  70. package/esm2015/lib/directives/file-upload/file-upload-multiple.directive.js +15 -19
  71. package/esm2015/lib/directives/file-upload/file-upload-scrollable-attachment-list.directive.js +10 -11
  72. package/esm2015/lib/directives/file-upload/file-upload-selector.directive.js +18 -25
  73. package/esm2015/lib/directives/file-upload/file-upload.directive.js +20 -24
  74. package/esm2015/lib/directives/form.directive.js +51 -48
  75. package/esm2015/lib/directives/margin.directive.js +14 -15
  76. package/esm2015/lib/directives/range-slider/range-slider-lockup.directive.js +10 -11
  77. package/esm2015/lib/directives/range-slider/range-slider.directive.js +14 -17
  78. package/esm2015/lib/directives/scroll-selected/scroll-to-selected.directive.js +15 -16
  79. package/esm2015/lib/directives/scrollbar/scrollbar.directive.js +13 -13
  80. package/esm2015/lib/directives/search-field.directive.js +22 -21
  81. package/esm2015/lib/directives/side-sheet/drawer-content.directive.js +10 -11
  82. package/esm2015/lib/directives/side-sheet/drawer-header-action.directive.js +10 -11
  83. package/esm2015/lib/directives/side-sheet/drawer-header.directive.js +10 -11
  84. package/esm2015/lib/directives/side-sheet/drawer.directive.js +10 -11
  85. package/esm2015/lib/directives/tab/tab-group-advanced.directive.js +14 -15
  86. package/esm2015/lib/directives/tab/tab-group.directive.js +10 -11
  87. package/esm2015/lib/directives/tab/tab-label.directive.js +10 -11
  88. package/esm2015/lib/directives/text-block/text-block-line.directive.js +16 -20
  89. package/esm2015/lib/directives/text-block/text-block.directive.js +14 -17
  90. package/esm2015/lib/directives/tooltip/tooltip-image.directive.js +13 -14
  91. package/esm2015/lib/directives/tooltip/tooltip-renderer.directive.js +22 -35
  92. package/esm2015/lib/material-module.js +16 -35
  93. package/esm2015/lib/model/en.js +4 -35
  94. package/esm2015/lib/model/no.js +3 -34
  95. package/esm2015/lib/pipe/dateFormat.pipe.js +10 -11
  96. package/esm2015/lib/qms-angular.component.js +11 -13
  97. package/esm2015/lib/qms-angular.module.js +121 -232
  98. package/esm2015/lib/qms-angular.service.js +8 -9
  99. package/esm2015/lib/qms-ckeditor-components/common/bpmn/toolbar.function.js +12 -32
  100. package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.js +1 -5
  101. package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.js +1 -10
  102. package/esm2015/lib/qms-ckeditor-components/common/enums/document-type.enum.js +1 -2
  103. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +2 -2
  104. package/esm2015/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.js +16 -23
  105. package/esm2015/lib/qms-ckeditor-components/common/module/tree/qms-ckeditor-tree.component.js +19 -34
  106. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +53 -577
  107. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.js +35 -69
  108. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.js +8 -12
  109. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +30 -39
  110. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.js +18 -22
  111. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +20 -29
  112. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +18 -22
  113. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +23 -35
  114. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +20 -30
  115. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +18 -27
  116. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor-base.component.js +4 -7
  117. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +44 -118
  118. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +55 -131
  119. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-base.service.js +10 -10
  120. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-api.service.js +9 -9
  121. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +26 -66
  122. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-global.service.js +8 -9
  123. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-link.service.js +9 -9
  124. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.js +9 -9
  125. package/esm2015/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.js +9 -9
  126. package/esm2015/lib/services/translation-registry.service.js +8 -9
  127. package/esm2015/lib/shared.module.js +4 -9
  128. package/esm2015/public-api.js +1 -16
  129. package/esm2015/qms-angular.js +9 -1
  130. package/fesm2015/qms-angular.js +3031 -11134
  131. package/fesm2015/qms-angular.js.map +1 -1
  132. package/lib/components/app-icon/app-icon.module.d.ts +0 -7
  133. package/lib/components/app-icon/icon-registry.service.d.ts +0 -3
  134. package/lib/components/badges/qms-badges.component.d.ts +0 -3
  135. package/lib/components/badges/qms-badges.module.d.ts +0 -9
  136. package/lib/components/banner/qms-banner/qms-banner.component.d.ts +0 -3
  137. package/lib/components/banner/qms-banner/qms-banner.module.d.ts +0 -10
  138. package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.d.ts +0 -3
  139. package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.d.ts +0 -10
  140. package/lib/components/banner/qms-banner-loading/qms-banner-loading.component.d.ts +0 -3
  141. package/lib/components/banner/qms-banner-loading/qms-banner-loading.module.d.ts +0 -8
  142. package/lib/components/breadcrumb/breadcrumb-direction-icon.directive.d.ts +0 -3
  143. package/lib/components/breadcrumb/breadcrumb-item.directive.d.ts +0 -3
  144. package/lib/components/breadcrumb/breadcrumb.d.ts +0 -3
  145. package/lib/components/breadcrumb/breadcrumb.module.d.ts +0 -13
  146. package/lib/components/button/button-toggle.d.ts +0 -5
  147. package/lib/components/button/button.d.ts +0 -7
  148. package/lib/components/button/button.module.d.ts +0 -9
  149. package/lib/components/comment/comment.d.ts +0 -3
  150. package/lib/components/dialog/dialog.d.ts +0 -5
  151. package/lib/components/edit-file-name-dialog/edit-file-name-dialog.d.ts +0 -3
  152. package/lib/components/edit-file-name-dialog/edit-file-name-dialog.module.d.ts +0 -16
  153. package/lib/components/list/list.d.ts +0 -15
  154. package/lib/components/list/list.module.d.ts +0 -11
  155. package/lib/components/qms-app-bar/qms-app-bar.component.d.ts +0 -3
  156. package/lib/components/qms-app-bar/qms-app-bar.module.d.ts +0 -12
  157. package/lib/components/qms-stepper/qms-stepper.component.d.ts +0 -3
  158. package/lib/components/qms-stepper/qms-stepper.module.d.ts +0 -8
  159. package/lib/components/related/content/related-content.component.d.ts +0 -3
  160. package/lib/components/related/list-other-related/list-related.component.d.ts +0 -3
  161. package/lib/components/related/popup/related-popup.component.d.ts +0 -3
  162. package/lib/components/related/related.module.d.ts +0 -29
  163. package/lib/components/related/risk/analysis/analysis.component.d.ts +0 -3
  164. package/lib/components/related/risk/list/list.component.d.ts +0 -3
  165. package/lib/components/related/risk/result/result.component.d.ts +0 -3
  166. package/lib/components/related/service/related-global.service.d.ts +0 -3
  167. package/lib/components/related/sidenav/sidenav.component.d.ts +0 -3
  168. package/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.d.ts +0 -3
  169. package/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.d.ts +0 -3
  170. package/lib/components/reports/qms-reports.module.d.ts +0 -7
  171. package/lib/components/rich-text/rich-text.d.ts +0 -3
  172. package/lib/components/rich-text/rich-text.module.d.ts +0 -8
  173. package/lib/components/select-dialog/select-dialog.d.ts +0 -3
  174. package/lib/components/select-include-children/select-include-children.component.d.ts +0 -3
  175. package/lib/components/select-include-children/select-include-children.module.d.ts +0 -25
  176. package/lib/components/select-include-children/services/select-global.service.d.ts +0 -3
  177. package/lib/components/suffix-field/suffix-field.directive.d.ts +0 -5
  178. package/lib/components/table/table-action.d.ts +0 -5
  179. package/lib/components/table/table.module.d.ts +0 -8
  180. package/lib/components/test-only/test-only.component.d.ts +0 -3
  181. package/lib/components/tooltip/tooltip.d.ts +0 -3
  182. package/lib/components/tooltip/tooltip.module.d.ts +0 -9
  183. package/lib/components/tree/tree.component.d.ts +0 -3
  184. package/lib/components/tree/tree.module.d.ts +0 -22
  185. package/lib/components/upload-file-error-dialog/upload-file-error-dialog.d.ts +0 -3
  186. package/lib/components/upload-file-error-dialog/upload-file-error-dialog.module.d.ts +0 -16
  187. package/lib/directives/chip-input/chip-input-chip-list.directive.d.ts +0 -3
  188. package/lib/directives/chip-input/chip-input-field.directive.d.ts +0 -3
  189. package/lib/directives/chip-input/chip-input-select-dropdown.directive.d.ts +0 -3
  190. package/lib/directives/chip-input/chip-input-select-field.directive.d.ts +0 -3
  191. package/lib/directives/chip-input/chip-input-select-trigger.directive.d.ts +0 -3
  192. package/lib/directives/chips/chip-body.directive.d.ts +0 -3
  193. package/lib/directives/chips/chip.directive.d.ts +0 -3
  194. package/lib/directives/dropdown-menu/dropdown-item.directive.d.ts +0 -3
  195. package/lib/directives/file-upload/file-upload-attachment-list.directive.d.ts +0 -3
  196. package/lib/directives/file-upload/file-upload-display.directive.d.ts +0 -3
  197. package/lib/directives/file-upload/file-upload-multiple-display.directive.d.ts +0 -3
  198. package/lib/directives/file-upload/file-upload-multiple-selector.directive.d.ts +0 -3
  199. package/lib/directives/file-upload/file-upload-multiple.directive.d.ts +0 -3
  200. package/lib/directives/file-upload/file-upload-scrollable-attachment-list.directive.d.ts +0 -3
  201. package/lib/directives/file-upload/file-upload-selector.directive.d.ts +0 -3
  202. package/lib/directives/file-upload/file-upload.directive.d.ts +0 -5
  203. package/lib/directives/form.directive.d.ts +0 -11
  204. package/lib/directives/margin.directive.d.ts +0 -3
  205. package/lib/directives/range-slider/range-slider-lockup.directive.d.ts +0 -3
  206. package/lib/directives/range-slider/range-slider.directive.d.ts +0 -3
  207. package/lib/directives/scroll-selected/scroll-to-selected.directive.d.ts +0 -3
  208. package/lib/directives/scrollbar/scrollbar.directive.d.ts +0 -3
  209. package/lib/directives/search-field.directive.d.ts +0 -5
  210. package/lib/directives/side-sheet/drawer-content.directive.d.ts +0 -3
  211. package/lib/directives/side-sheet/drawer-header-action.directive.d.ts +0 -3
  212. package/lib/directives/side-sheet/drawer-header.directive.d.ts +0 -3
  213. package/lib/directives/side-sheet/drawer.directive.d.ts +0 -3
  214. package/lib/directives/tab/tab-group-advanced.directive.d.ts +0 -3
  215. package/lib/directives/tab/tab-group.directive.d.ts +0 -3
  216. package/lib/directives/tab/tab-label.directive.d.ts +0 -3
  217. package/lib/directives/text-block/text-block-line.directive.d.ts +0 -3
  218. package/lib/directives/text-block/text-block.directive.d.ts +0 -3
  219. package/lib/directives/tooltip/tooltip-image.directive.d.ts +0 -3
  220. package/lib/directives/tooltip/tooltip-renderer.directive.d.ts +0 -3
  221. package/lib/material-module.d.ts +0 -12
  222. package/lib/model/en.d.ts +0 -31
  223. package/lib/model/no.d.ts +0 -31
  224. package/lib/pipe/dateFormat.pipe.d.ts +0 -3
  225. package/lib/qms-angular.component.d.ts +0 -3
  226. package/lib/qms-angular.module.d.ts +0 -49
  227. package/lib/qms-angular.service.d.ts +0 -3
  228. package/lib/qms-ckeditor-components/common/bpmn/toolbar.function.d.ts +2 -2
  229. package/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.d.ts +0 -4
  230. package/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.d.ts +0 -9
  231. package/lib/qms-ckeditor-components/common/enums/document-type.enum.d.ts +0 -1
  232. package/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.d.ts +0 -3
  233. package/lib/qms-ckeditor-components/common/module/tree/qms-ckeditor-tree.component.d.ts +0 -3
  234. package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -88
  235. package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.d.ts +2 -11
  236. package/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.d.ts +0 -3
  237. package/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.d.ts +0 -3
  238. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.d.ts +0 -3
  239. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +0 -3
  240. package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +0 -3
  241. package/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.d.ts +0 -4
  242. package/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.d.ts +0 -3
  243. package/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.d.ts +0 -3
  244. package/lib/qms-ckeditor-components/qms-ckeditor-base.component.d.ts +0 -3
  245. package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +0 -8
  246. package/lib/qms-ckeditor-components/qms-ckeditor.module.d.ts +0 -44
  247. package/lib/qms-ckeditor-components/services/qms-ckeditor-base.service.d.ts +0 -3
  248. package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-api.service.d.ts +0 -3
  249. package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +0 -4
  250. package/lib/qms-ckeditor-components/services/qms-ckeditor-global.service.d.ts +0 -3
  251. package/lib/qms-ckeditor-components/services/qms-ckeditor-link.service.d.ts +0 -3
  252. package/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.d.ts +0 -3
  253. package/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.d.ts +0 -3
  254. package/lib/services/translation-registry.service.d.ts +0 -3
  255. package/lib/shared.module.d.ts +0 -4
  256. package/lib.theme.scss +0 -8
  257. package/package.json +2 -1
  258. package/public-api.d.ts +0 -14
  259. package/qms-angular.d.ts +8 -1
  260. package/qms-angular.metadata.json +1 -0
  261. package/src/assets/jointjs/scss/bpmn.scss +35 -36
  262. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  263. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  264. package/src/assets/qms-ckeditor-plugin/build/translations/ar.js +1 -1
  265. package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -1
  266. package/src/assets/qms-ckeditor-plugin/build/translations/bg.js +1 -1
  267. package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -1
  268. package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -1
  269. package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -1
  270. package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -1
  271. package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -1
  272. package/src/assets/qms-ckeditor-plugin/build/translations/en-gb.js +1 -1
  273. package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -1
  274. package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -1
  275. package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -1
  276. package/src/assets/qms-ckeditor-plugin/build/translations/fi.js +1 -1
  277. package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -1
  278. package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -1
  279. package/src/assets/qms-ckeditor-plugin/build/translations/he.js +1 -1
  280. package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -1
  281. package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -1
  282. package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -1
  283. package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -1
  284. package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -1
  285. package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -1
  286. package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -1
  287. package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -1
  288. package/src/assets/qms-ckeditor-plugin/build/translations/lt.js +1 -1
  289. package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -1
  290. package/src/assets/qms-ckeditor-plugin/build/translations/nb.js +1 -1
  291. package/src/assets/qms-ckeditor-plugin/build/translations/ne.js +1 -1
  292. package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -1
  293. package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
  294. package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -1
  295. package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -1
  296. package/src/assets/qms-ckeditor-plugin/build/translations/ro.js +1 -1
  297. package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -1
  298. package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -1
  299. package/src/assets/qms-ckeditor-plugin/build/translations/sl.js +1 -1
  300. package/src/assets/qms-ckeditor-plugin/build/translations/sq.js +1 -1
  301. package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -1
  302. package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -1
  303. package/src/assets/qms-ckeditor-plugin/build/translations/sv.js +1 -1
  304. package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -1
  305. package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -1
  306. package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -1
  307. package/src/assets/qms-ckeditor-plugin/build/translations/ug.js +1 -1
  308. package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -1
  309. package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -1
  310. package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -1
  311. package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -1
  312. package/src/assets/qms-ckeditor-plugin/package-lock.json +12177 -17
  313. package/src/assets/qms-ckeditor-plugin/package.json +0 -1
  314. package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +3 -22
  315. package/src/assets/qms-ckeditor-plugin/src/dist/ckeditor.dev.js +173 -0
  316. package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/qmsCKEditorBpmnPlugin.js +5 -24
  317. package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorConstant.js +1 -7
  318. package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorService.js +0 -20
  319. package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/dist/qmsCKEditorFullscreenPlugin.dev.js +87 -0
  320. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapediting.js +43 -47
  321. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapui.js +1 -1
  322. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/insertimagemapcommand.js +108 -72
  323. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/resizeimagemapcommand.js +3 -4
  324. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/utils.js +0 -13
  325. package/src/assets/qms-ckeditor-plugin/src/plugins/timestamp/timestamp.js +8 -8
  326. package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipui.js +24 -23
  327. package/src/assets/qms-ckeditor-plugin/src/themes/icons/information.svg +50 -1
  328. package/src/assets/qms-ckeditor-plugin/src/themes/icons/timestamp.svg +1 -1
  329. package/src/lib/components/tree/tree.component.scss +1 -1
  330. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +1 -15
  331. package/src/lib/qms-ckeditor-components/styles/_layout.scss +0 -24
  332. package/src/lib/qms-ckeditor-components/styles/_modules.scss +0 -8
  333. package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.js +0 -7
  334. package/esm2015/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.js +0 -8
  335. package/esm2015/lib/qms-ckeditor-components/common/flowchart/sample/sample-graphs.js +0 -16
  336. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/halo-service.js +0 -105
  337. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/inspector-service.js +0 -3762
  338. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.js +0 -68
  339. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.js +0 -372
  340. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/stencil-service.js +0 -1041
  341. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/toolbar-service.js +0 -326
  342. package/esm2015/lib/qms-ckeditor-components/common/flowchart/shapes/app-shapes.js +0 -318
  343. package/esm2015/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.js +0 -80
  344. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.js +0 -9
  345. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.js +0 -9
  346. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.js +0 -3
  347. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.js +0 -43
  348. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.js +0 -322
  349. package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.js +0 -8
  350. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.js +0 -26
  351. package/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.d.ts +0 -6
  352. package/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.d.ts +0 -6
  353. package/lib/qms-ckeditor-components/common/flowchart/sample/sample-graphs.d.ts +0 -14
  354. package/lib/qms-ckeditor-components/common/flowchart/service/halo-service.d.ts +0 -48
  355. package/lib/qms-ckeditor-components/common/flowchart/service/inspector-service.d.ts +0 -18
  356. package/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.d.ts +0 -17
  357. package/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.d.ts +0 -62
  358. package/lib/qms-ckeditor-components/common/flowchart/service/stencil-service.d.ts +0 -1183
  359. package/lib/qms-ckeditor-components/common/flowchart/service/toolbar-service.d.ts +0 -216
  360. package/lib/qms-ckeditor-components/common/flowchart/shapes/app-shapes.d.ts +0 -61
  361. package/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.d.ts +0 -36
  362. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.d.ts +0 -7
  363. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.d.ts +0 -7
  364. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.d.ts +0 -7
  365. package/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.d.ts +0 -18
  366. package/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.d.ts +0 -44
  367. package/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.d.ts +0 -7
  368. package/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.d.ts +0 -13
  369. package/src/assets/images/ckeditor5.svg +0 -1
  370. package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Bold.ttf +0 -0
  371. package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Light.ttf +0 -0
  372. package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Regular.ttf +0 -0
  373. package/src/assets/jointjs/fonts/Alegreya_Sans/OFL.txt +0 -92
  374. package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Bold.ttf +0 -0
  375. package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Light.ttf +0 -0
  376. package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Regular.ttf +0 -0
  377. package/src/assets/jointjs/fonts/Averia_Libre/OFL.txt +0 -93
  378. package/src/assets/jointjs/fonts/Roboto_Condensed/LICENSE.txt +0 -202
  379. package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf +0 -0
  380. package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Light.ttf +0 -0
  381. package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf +0 -0
  382. package/src/assets/jointjs/images/delete-icon-modern.png +0 -0
  383. package/src/assets/jointjs/images/image-icon1.svg +0 -1
  384. package/src/assets/jointjs/images/image-icon2.svg +0 -6
  385. package/src/assets/jointjs/images/image-icon3.svg +0 -11
  386. package/src/assets/jointjs/images/image-icon4.svg +0 -8
  387. package/src/assets/jointjs/images/member-female.png +0 -0
  388. package/src/assets/jointjs/images/member-male.png +0 -0
  389. package/src/assets/jointjs/images/no-color-icon.svg +0 -72
  390. package/src/assets/jointjs/images/reset-icon-modern.png +0 -0
  391. package/src/assets/jointjs/images/save-icon-modern.png +0 -0
  392. package/src/assets/jointjs/images/to-front-icon-modern.png +0 -0
  393. package/src/assets/jointjs/images/toback-icon-modern.png +0 -0
  394. package/src/assets/jointjs/images/toolbar-icons-dark.woff +0 -0
  395. package/src/assets/jointjs/images/toolbar-icons-material.png +0 -0
  396. package/src/assets/jointjs/images/toolbar-icons-modern.png +0 -0
  397. package/src/assets/jointjs/images/transparent-icon.svg +0 -50
  398. package/src/assets/jointjs/scss/style.dark.scss +0 -233
  399. package/src/assets/jointjs/scss/style.material.scss +0 -234
  400. package/src/assets/jointjs/scss/style.modern.scss +0 -225
  401. package/src/assets/jointjs/scss/style.scss +0 -216
  402. package/src/assets/jointjs/scss/theme-picker.scss +0 -21
  403. package/src/assets/qms-ckeditor-plugin/src/plugins/aboutckeditor/aboutckeditor.js +0 -28
  404. package/src/assets/qms-ckeditor-plugin/src/plugins/flowchart/qmsCKEditorFlowchartPlugin.js +0 -63
  405. package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/openimagemapcommand.js +0 -58
  406. package/src/assets/qms-ckeditor-plugin/src/themes/icons/flowchart.svg +0 -507
  407. package/src/assets/qms-ckeditor-plugin/src/themes/icons/tooltip.svg +0 -1
  408. package/src/lib/components/select-one/select-one.component.scss +0 -240
  409. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.scss +0 -16
  410. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.scss +0 -5
  411. package/src/themes/_non-bg-srcollbar.scss +0 -4
@@ -1,83 +1,33 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, HostListener, Inject } from "@angular/core";
3
- import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
+ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
4
4
  import { takeUntil } from "rxjs/operators";
5
+ import { TranslateLibraryService } from "../../../services/translation-registry.service";
5
6
  import { CKEditorEventConst } from "../../common/constants/ckeditorEvent.constant";
6
7
  import { FlowChartConst } from "../../common/constants/ckeditorFlowchart.const";
7
8
  import guidHelper from "../../common/helper/guidHelper";
8
9
  import { QMSCKEditorBpmn } from "../../common/models/qms-ckeditor-bpmn.model";
9
10
  import { QMSCKEditorDialogData } from "../../common/models/qms-ckeditor-dialog.model";
10
- import { QMSCKEditorSaveAsTemplate } from "../../common/models/qms-ckeditor-save-as-template.model";
11
11
  import { QMSCKEditorConfirmComponent } from "../../common/module/confirm/qms-ckeditor-confirm.component";
12
+ import { QMSCKEditorToastService } from "../../common/toast/qms-ckeditor-toast.service";
12
13
  import { QMSCKEditorBaseComponent } from "../../qms-ckeditor-base.component";
14
+ import { QMSCKEditorBpmnApiService } from "../../services/qms-ckeditor-bpmn-api.service";
15
+ import { BpmnService } from "../../services/qms-ckeditor-bpmn.service";
13
16
  import { SaveTemplateComponent } from "./save-template/save-template.component";
14
- import { TargetTypeName } from '../../common/enums/target-type.enum';
15
- import { ShapeFlowChartConnectionType } from '../../common/enums/shape-flow-chart-connection-type';
16
- import { QMSCKEditorRelatedComponent } from '../qms-ckeditor-relation/qmsckeditor-related.component';
17
- import { LinkAttachmentComponent } from '../qms-ckeditor-link/attachments/link-attachment.component';
18
- import QMSCKEditorParamter from '../../common/models/qms-ckeditor-parameter.model';
19
- import { QMSCKEditorRelation } from '../../common/models/qms-ckeditor-relation.model';
20
- import { QMSCKEditorDocumentType } from "../../common/enums/document-type.enum";
21
- import { LinkAnchor } from "../../common/enums/link-anchor.enum";
22
- import { CKEditorLinkConst } from '../../common/constants/ckeditorLink.constant';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "@angular/material/dialog";
25
- import * as i2 from "../../../services/translation-registry.service";
26
- import * as i3 from "../../services/qms-ckeditor-bpmn.service";
27
- import * as i4 from "../../services/qms-ckeditor-bpmn-api.service";
28
- import * as i5 from "../../services/qms-ckeditor-link.service";
29
- import * as i6 from "@angular/material/icon";
30
- import * as i7 from "@angular/material/expansion";
31
- import * as i8 from "@angular/material/tabs";
32
- import * as i9 from "@angular/material/form-field";
33
- import * as i10 from "@angular/material/select";
34
- import * as i11 from "@angular/material/core";
35
- import * as i12 from "@angular/material/card";
36
- import * as i13 from "@angular/material/button";
37
- import * as i14 from "@angular/material/progress-bar";
38
- import * as i15 from "@angular/common";
39
- import * as i16 from "@angular/forms";
40
- import * as i17 from "@angular/material/tooltip";
41
- import * as i18 from "../../models/qms-ckeditor-bpmn-data.model";
42
- class ILink {
43
- constructor() {
44
- this.target = TargetTypeName.new;
45
- this.documentType = QMSCKEditorDocumentType.other;
46
- this.url = '';
47
- this.title = '';
48
- this.icon = '';
49
- this.content = '';
50
- }
51
- }
52
17
  export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
53
- constructor(dialog, translate, bmpnService, bpmnApiService, linkService, dialogRef, data) {
18
+ constructor(dialog, translate, bmpnService, bpmnApiService, dialogRef, data) {
54
19
  super();
55
20
  this.dialog = dialog;
56
21
  this.translate = translate;
57
22
  this.bmpnService = bmpnService;
58
23
  this.bpmnApiService = bpmnApiService;
59
- this.linkService = linkService;
60
24
  this.dialogRef = dialogRef;
61
25
  this.data = data;
62
26
  this.expandedPanel = true;
63
27
  this.id = '';
64
- this.entityId = '';
65
- this.editorContent = '';
66
28
  this.bpmn = new QMSCKEditorBpmn();
67
29
  this.bpmnTemlates = [];
68
- this.targets = [];
69
- this.connectionTypes = [];
70
- this.selectedTarget = TargetTypeName.new;
71
- this.linkUrl = '';
72
- this.linkTitle = '';
73
- this.anchorByName = '';
74
- this.linkIcon = '';
75
- this.linkId = '';
76
- this.documentType = QMSCKEditorDocumentType.other;
77
- this.id = data.id;
78
- this.module = data.module;
79
- this.entityId = data.entityId;
80
- this.editorContent = data.editorContent;
30
+ this.id = data;
81
31
  }
82
32
  onMessage(event) {
83
33
  if (event.data === FlowChartConst.SAVE_AS_TEMPLATE) {
@@ -87,7 +37,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
87
37
  this.onDeleteTemplate(this.LANG.BPMN.DELETE_TEMPLATE, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_TEMPLATE);
88
38
  }
89
39
  else if (event.data === FlowChartConst.MUST_SELECT_TEMPLATE) {
90
- this.showConfirmDialog(this.LANG.BPMN.SELECT_TEMPLATE, this.LANG.BPMN.SELECT_TEMPLATE_INFORMATION, true);
40
+ this.showInfoMessage(this.LANG.BPMN.SELECT_TEMPLATE, this.LANG.BPMN.SELECT_TEMPLATE_INFORMATION);
91
41
  }
92
42
  else if (event.data === FlowChartConst.CHANGING_TEMPLATE) {
93
43
  this.onSelectedTemplate();
@@ -95,9 +45,6 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
95
45
  else if (event.data === FlowChartConst.RESET_TEMPLATE) {
96
46
  this.onResetTemplate();
97
47
  }
98
- else if (event.data === FlowChartConst.SELECTED_SHAPE_ID) {
99
- this.onSeletedCellView();
100
- }
101
48
  }
102
49
  ngOnInit() {
103
50
  return __awaiter(this, void 0, void 0, function* () {
@@ -111,42 +58,8 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
111
58
  this.jsonContent = yield this.getJsonContent(this.id);
112
59
  }
113
60
  this.bmpnService.buildDiagram(this.bpmnTemlates, null, CKEditorEventConst.QMSCK_BPMN, this.jsonContent, 1, this.LANG);
114
- this.initDocumentIcons();
115
- this.initTarget();
116
- this.initConnectionType();
117
- this.initLink();
118
61
  });
119
62
  }
120
- initTarget() {
121
- if (this.targets) {
122
- this.targets.push({ id: TargetTypeName.new, name: this.LANG.QMSCKEDITOR.TARTGET_NEW });
123
- this.targets.push({ id: TargetTypeName.same, name: this.LANG.QMSCKEDITOR.TARGET_SAME });
124
- }
125
- }
126
- initConnectionType() {
127
- if (this.connectionTypes) {
128
- this.connectionTypes.push({ id: ShapeFlowChartConnectionType.DocumentOrProcess, name: this.LANG.QMSCKEDITOR.DOCUMENT_PROCESS });
129
- this.connectionTypes.push({ id: ShapeFlowChartConnectionType.Attachment, name: this.LANG.QMSCKEDITOR.ATTACHMENT });
130
- }
131
- }
132
- initDocumentIcons() {
133
- this.documentIcons = {};
134
- this.documentIcons[QMSCKEditorDocumentType.document] = 'text_snippet';
135
- this.documentIcons[QMSCKEditorDocumentType.process] = 'account_tree';
136
- this.documentIcons[QMSCKEditorDocumentType.area] = 'folder';
137
- this.documentIcons[QMSCKEditorDocumentType.folder] = 'folder';
138
- this.documentIcons[QMSCKEditorDocumentType.other] = 'text_snippet';
139
- }
140
- initLink() {
141
- this.link = null;
142
- this.linkId = '';
143
- this.documentType = QMSCKEditorDocumentType.other;
144
- this.linkIcon = this.documentIcons[QMSCKEditorDocumentType.other];
145
- this.selectedTarget = TargetTypeName.new;
146
- this.anchorByName = '';
147
- this.linkTitle = '';
148
- this.documentAnchors = [];
149
- }
150
63
  expandPanel() {
151
64
  this.expandedPanel = !this.expandedPanel;
152
65
  const panelStencil = document.getElementById('panel-stencil-container');
@@ -191,10 +104,11 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
191
104
  });
192
105
  });
193
106
  }
194
- saveImageContent(graphObject) {
107
+ saveImageContent() {
195
108
  return __awaiter(this, void 0, void 0, function* () {
196
109
  return new Promise((resolve) => {
197
- const jsonContent = JSON.stringify(graphObject);
110
+ const graph = window[FlowChartConst.GRAPH];
111
+ const jsonContent = JSON.stringify(graph.toJSON());
198
112
  this.bpmn = {
199
113
  id: this.id ? this.id : guidHelper.empty,
200
114
  jsonContent: jsonContent,
@@ -224,209 +138,26 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
224
138
  }
225
139
  onInsertImage() {
226
140
  return __awaiter(this, void 0, void 0, function* () {
227
- const graph = window[FlowChartConst.GRAPH];
141
+ const id = yield this.saveImageContent();
228
142
  const paper = window[`paper`];
229
- const clientRect = paper.paperToLocalRect(paper.getContentBBox());
230
- const graphObject = graph.toJSON();
231
- const id = yield this.saveImageContent(graphObject);
232
143
  const imageContent = 'data:image/png;base64,' + (yield this.getImageContent(paper));
233
- const imagemap = this.toImageMap(id, graphObject.cells, clientRect);
234
- const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: imageContent, imagemap: imagemap };
144
+ const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: imageContent };
235
145
  this.dialogRef.close(result);
236
146
  });
237
147
  }
238
148
  onCloseDialog() {
239
149
  this.dialogRef.close();
240
150
  }
241
- removeLink() {
242
- let title = this.LANG.BPMN.DELETE_ATTACHMENT;
243
- let content = this.LANG.BPMN.CONFIRM_DELETE_ATTACHMENT;
244
- if (this.selectedConnectionType == ShapeFlowChartConnectionType.DocumentOrProcess) {
245
- title = this.LANG.BPMN.DELETE_DOCUMENT_OR_PROCESS;
246
- content = this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_DOCUMENT_OR_PROCESS;
247
- }
248
- this.showConfirmDialog(title, content, false, (value) => {
249
- if (value) {
250
- if (value == true || (typeof value == 'object' && value.isConfirmed == true)) {
251
- this.link = null;
252
- }
253
- }
254
- });
255
- }
256
- onConnectionTypeChange() {
257
- this.selectedConnectionType = this.connectionType;
258
- if (this.link) {
259
- this.showConfirmDialog(this.LANG.QMSCKEDITOR.INFORMATION, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_EXISTING_CONNECTION, true, () => {
260
- this.connectionType = 0;
261
- });
262
- return;
263
- }
264
- switch (this.connectionType) {
265
- case ShapeFlowChartConnectionType.DocumentOrProcess:
266
- this.openHandbookDialog(false);
267
- break;
268
- case ShapeFlowChartConnectionType.Attachment:
269
- this.openAttachmentDialog();
270
- break;
271
- }
272
- }
273
- onAnchorByNameChange() {
274
- this.updateCellViewValues();
275
- }
276
- openHandbookDialog(isOnlyDocument) {
277
- const data = new QMSCKEditorRelation();
278
- data.isOnlyDocument = isOnlyDocument;
279
- data.isEnableFolder = !isOnlyDocument;
280
- const dialogTemplate = this.dialog.open(QMSCKEditorRelatedComponent, {
281
- width: '650px',
282
- height: '650px',
283
- data,
284
- disableClose: true
285
- });
286
- dialogTemplate
287
- .afterClosed()
288
- .pipe(takeUntil(this.ngUnsubcribe))
289
- .subscribe((result) => {
290
- if (result) {
291
- this.documentType = result.type;
292
- this.linkId = this.getLinkId(result.url, result.type);
293
- if (result.type == QMSCKEditorDocumentType.document) {
294
- this.linkTitle = `${result.title}(${result.id})`;
295
- this.getAnchorDocument(result.id);
296
- }
297
- else {
298
- this.linkUrl = result.url;
299
- if (!this.linkTitle) {
300
- this.linkTitle = result.title;
301
- }
302
- }
303
- this.selectedTarget = TargetTypeName.new;
304
- this.updateCellViewValues();
305
- }
306
- this.connectionType = 0;
307
- });
308
- }
309
- openAttachmentDialog() {
310
- const data = new QMSCKEditorParamter();
311
- data.module = this.module;
312
- data.entityId = this.entityId;
313
- const dialogTemplate = this.dialog.open(LinkAttachmentComponent, {
314
- width: '650px',
315
- height: '650px',
316
- data,
317
- disableClose: true
318
- });
319
- dialogTemplate
320
- .afterClosed()
321
- .pipe(takeUntil(this.ngUnsubcribe))
322
- .subscribe((result) => {
323
- if (result) {
324
- this.documentType = QMSCKEditorDocumentType.other;
325
- this.linkUrl = result.url;
326
- if (!this.linkTitle) {
327
- this.linkTitle = result.title;
328
- }
329
- this.selectedTarget = TargetTypeName.new;
330
- this.updateCellViewValues();
331
- }
332
- this.connectionType = 0;
333
- });
334
- }
335
- getAnchorDocument(documentId) {
336
- this.isLoadingDocumentAnchor = true;
337
- this.linkService
338
- .getAnchorDocumentList(documentId)
339
- .pipe(takeUntil(this.ngUnsubcribe))
340
- .subscribe((documents) => {
341
- this.documentAnchors = this.extractDocumentAnchors(documents || []);
342
- this.isLoadingDocumentAnchor = false;
343
- });
344
- }
345
- extractDocumentAnchors(anchorDocument) {
346
- const anchors = [{ value: 0, viewValue: '', anchorValue: LinkAnchor.Blank }];
347
- let id = 3;
348
- if (anchorDocument) {
349
- anchorDocument.forEach((e) => {
350
- const div = document.createElement('div');
351
- div.innerHTML = e.richText;
352
- const domContent = div;
353
- const aTags = domContent.getElementsByTagName('a');
354
- if (aTags) {
355
- // tslint:disable-next-line:prefer-for-of
356
- for (let i = 0; i < aTags.length; i++) {
357
- const tag = aTags[i];
358
- if (tag.name) {
359
- const index = anchors.findIndex((x) => {
360
- return x.anchorValue === tag.name;
361
- });
362
- if (index < 0) {
363
- anchors.push({
364
- value: id,
365
- viewValue: tag.name,
366
- anchorValue: tag.name
367
- });
368
- id += 1;
369
- }
370
- }
371
- }
372
- }
373
- });
374
- }
375
- anchors.push({
376
- value: 1,
377
- viewValue: this.LANG.QMSCKEDITOR.ANCHOR_ATTACHMENT,
378
- anchorValue: LinkAnchor.Attachment
379
- });
380
- anchors.push({
381
- value: 2,
382
- viewValue: this.LANG.QMSCKEDITOR.ANCHOR_RELATED_DOCUMENT,
383
- anchorValue: LinkAnchor.Related
384
- });
385
- return anchors;
386
- }
387
- reloadAnchors() {
388
- if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document) {
389
- this.getAnchorDocument(this.linkId);
390
- }
391
- }
392
- buildLink() {
393
- const link = new ILink();
394
- link.target = this.selectedTarget;
395
- link.title = this.linkTitle;
396
- link.url = this.linkUrl;
397
- link.documentType = this.documentType || QMSCKEditorDocumentType.other;
398
- link.icon = this.documentIcons[link.documentType];
399
- link.content = '';
400
- switch (this.documentType) {
401
- case QMSCKEditorDocumentType.document:
402
- link.url = `${CKEditorLinkConst.DOCUMENT_PARTIAL_URL}${this.linkId}#${this.anchorByName}`;
403
- link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
404
- break;
405
- case QMSCKEditorDocumentType.process:
406
- link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
407
- break;
408
- case QMSCKEditorDocumentType.area:
409
- link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
410
- break;
411
- case QMSCKEditorDocumentType.folder:
412
- link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
413
- break;
414
- }
415
- return link;
416
- }
417
151
  onSaveAsTemplate() {
418
152
  const graph = window[FlowChartConst.GRAPH];
419
153
  const jsonContent = JSON.stringify(graph.toJSON());
420
- let template = new QMSCKEditorBpmn();
421
- template = {
154
+ let data = new QMSCKEditorBpmn();
155
+ data = {
422
156
  id: guidHelper.empty,
423
157
  jsonContent: jsonContent,
424
158
  isTemplate: true,
425
159
  templateName: ''
426
160
  };
427
- let data = new QMSCKEditorSaveAsTemplate();
428
- data.templateType = CKEditorEventConst.QMSCK_BPMN;
429
- data.bpmn = template;
430
161
  const dialogTemplate = this.dialog.open(SaveTemplateComponent, {
431
162
  width: '450px',
432
163
  height: '220px',
@@ -449,10 +180,6 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
449
180
  if (graph) {
450
181
  graph.fromJSON(JSON.parse(selectedJsonContent));
451
182
  }
452
- window[FlowChartConst.MY_CELL_VIEW] = null;
453
- window[FlowChartConst.SELECTED_SHAPE_ID] = '';
454
- window[FlowChartConst.SHAPE_TYPE] = '';
455
- this.onSeletedCellView();
456
183
  }
457
184
  }
458
185
  onDeleteTemplate(title, content) {
@@ -469,121 +196,24 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
469
196
  .pipe(takeUntil(this.ngUnsubcribe))
470
197
  .subscribe((result) => {
471
198
  if (result) {
199
+ const id = window[FlowChartConst.SELECTED_FLOWCHART_ID];
200
+ this.bpmnApiService
201
+ .bpmnDeleteTemplate(id)
202
+ .pipe(takeUntil(this.ngUnsubcribe))
203
+ .subscribe((result) => {
204
+ if (result) {
205
+ this.bmpnService.removeSelectItem(id);
206
+ this.bmpnService.setDefaultSelectedValue();
207
+ window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
208
+ QMSCKEditorToastService.success(this.LANG.QMSCKEDITOR.DELETED);
209
+ }
210
+ else {
211
+ QMSCKEditorToastService.error(this.LANG.QMSCKEDITOR.DELETE_FAILED);
212
+ }
213
+ });
472
214
  }
473
215
  });
474
216
  }
475
- onSeletedCellView() {
476
- this.selectedCellView = window[FlowChartConst.MY_CELL_VIEW];
477
- this.initLink();
478
- if (!!this.selectedCellView) {
479
- const attributes = this.selectedCellView.model.attributes;
480
- if (attributes.type == 'bpmn2.Flow'
481
- || attributes.type == 'bpmn2.ConversationLink'
482
- || attributes.type == 'bpmn2.AnnotationLink'
483
- || attributes.type == 'bpmn2.DataAssociation') {
484
- this.selectedCellView = null;
485
- }
486
- else {
487
- this.linkUrl = attributes.linkUrl || '';
488
- if (!!this.linkUrl) {
489
- this.parseLinkUrl(this.linkUrl);
490
- this.selectedTarget = attributes.linkTarget;
491
- this.linkTitle = attributes.linkTitle;
492
- this.link = this.buildLink();
493
- }
494
- }
495
- }
496
- }
497
- onTabChange($event) {
498
- window[FlowChartConst.TAB_NAME] = $event.tab.textLabel;
499
- if ($event.tab.textLabel == this.LANG.BPMN.PROPERTIES) {
500
- this.bmpnService.openShapeFunctionality(this.LANG);
501
- }
502
- }
503
- parseLinkUrl(url) {
504
- if (!!url) {
505
- const hashIndex = url.indexOf('#');
506
- this.documentType = this.getDocumentType(url);
507
- this.linkIcon = this.documentIcons[this.documentType];
508
- this.linkId = this.getLinkId(url, this.documentType);
509
- if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document && hashIndex > -1) {
510
- this.anchorByName = url.substr(hashIndex + 1, url.length - hashIndex);
511
- this.getAnchorDocument(this.linkId);
512
- }
513
- }
514
- }
515
- getPartialUrl(type) {
516
- switch (type) {
517
- case QMSCKEditorDocumentType.document:
518
- return CKEditorLinkConst.DOCUMENT_PARTIAL_URL;
519
- case QMSCKEditorDocumentType.process:
520
- return CKEditorLinkConst.PROCESS_PARTIAL_URL;
521
- case QMSCKEditorDocumentType.area:
522
- return CKEditorLinkConst.AREA_PARTIAL_URL;
523
- case QMSCKEditorDocumentType.folder:
524
- return CKEditorLinkConst.FOLDER_PARTIAL_URL;
525
- default:
526
- return '';
527
- }
528
- }
529
- getLinkId(url, type) {
530
- let partialUrlIndex = 0;
531
- let partialUrlLength = 0;
532
- let id = '';
533
- let from = 0;
534
- let urlLowerCase = !!url ? url.toLowerCase() : '';
535
- const partialUrl = this.getPartialUrl(type).toLowerCase();
536
- const hashIndex = urlLowerCase.indexOf('#');
537
- if (!!partialUrl) {
538
- partialUrlIndex = urlLowerCase.indexOf(partialUrl);
539
- partialUrlLength = partialUrl.length;
540
- from = partialUrlIndex + partialUrlLength;
541
- if (type == QMSCKEditorDocumentType.document && hashIndex > -1) {
542
- id = urlLowerCase.substr(from, hashIndex - from);
543
- }
544
- else {
545
- const length = urlLowerCase.substr(from).indexOf('/');
546
- if (length < 0) {
547
- id = urlLowerCase.substr(from);
548
- }
549
- else {
550
- id = urlLowerCase.substr(from, length);
551
- }
552
- }
553
- }
554
- if (type == QMSCKEditorDocumentType.document) {
555
- try {
556
- parseInt(id, 10);
557
- }
558
- catch (_a) {
559
- id = '';
560
- }
561
- }
562
- return id;
563
- }
564
- getDocumentType(url) {
565
- if (url.indexOf(CKEditorLinkConst.DOCUMENT_PARTIAL_URL) > -1) {
566
- return QMSCKEditorDocumentType.document;
567
- }
568
- else if (url.indexOf(CKEditorLinkConst.PROCESS_PARTIAL_URL) > -1) {
569
- return QMSCKEditorDocumentType.process;
570
- }
571
- else if (url.indexOf(CKEditorLinkConst.AREA_PARTIAL_URL) > -1) {
572
- return QMSCKEditorDocumentType.area;
573
- }
574
- else if (url.indexOf(CKEditorLinkConst.FOLDER_PARTIAL_URL) > -1) {
575
- return QMSCKEditorDocumentType.folder;
576
- }
577
- return QMSCKEditorDocumentType.other;
578
- }
579
- updateCellViewValues() {
580
- if (!!this.selectedCellView) {
581
- this.link = this.buildLink();
582
- this.selectedCellView.model.prop('linkUrl', this.link.url);
583
- this.selectedCellView.model.prop('linkTarget', this.link.target);
584
- this.selectedCellView.model.prop('linkTitle', this.link.title);
585
- }
586
- }
587
217
  onResetTemplate() {
588
218
  const ogrJsonContent = window[FlowChartConst.ORG_JSONCONTENT];
589
219
  if (ogrJsonContent) {
@@ -593,17 +223,13 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
593
223
  this.bmpnService.setDefaultSelectedValue();
594
224
  window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
595
225
  }
596
- window[FlowChartConst.MY_CELL_VIEW] = null;
597
- window[FlowChartConst.SELECTED_SHAPE_ID] = '';
598
- window[FlowChartConst.SHAPE_TYPE] = '';
599
- this.onSeletedCellView();
600
226
  }
601
227
  }
602
- showConfirmDialog(title, content, isMessage, callback) {
228
+ showInfoMessage(title, content) {
603
229
  const data = new QMSCKEditorDialogData();
604
230
  data.title = title;
605
231
  data.content = content;
606
- data.isMessage = isMessage;
232
+ data.isMessage = true;
607
233
  const dialogRef = this.dialog.open(QMSCKEditorConfirmComponent, {
608
234
  width: '500px',
609
235
  minHeight: '175px',
@@ -613,178 +239,28 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
613
239
  .afterClosed()
614
240
  .pipe(takeUntil(this.ngUnsubcribe))
615
241
  .subscribe((result) => {
616
- if (callback) {
617
- callback(result);
618
- }
619
- });
620
- }
621
- toImageMap(id, cells, clientRect) {
622
- const map = { name: id, id: id, areas: [], imageHeight: 0, imageWidth: 0 };
623
- map.imageHeight = clientRect.height;
624
- map.imageWidth = clientRect.width;
625
- if (cells && cells.length != 0) {
626
- var isVerticalPool = false;
627
- for (var i = 0; i < cells.length; i++) {
628
- let shape = cells[i];
629
- let size = shape['size'] || { width: 0, height: 0 };
630
- let bbox = shape['bbox'] || { x: 0, y: 0 };
631
- let position = shape['position'] || { x: 0, y: 0 };
632
- bbox.x = position.x;
633
- bbox.y = position.y;
634
- bbox.width = size.width;
635
- bbox.height = size.height;
636
- shape['bbox'] = bbox;
637
- shape['additionalWidth'] = (bbox.width > size.width) ? (bbox.width - size.width) : 0;
638
- }
639
- var offsetX = this.getMinXOffset(cells);
640
- var offsetY = this.getMinYOffset(cells);
641
- var additionalOffsetY = 0;
642
- for (var i = 0; i < cells.length; i++) {
643
- let shape = cells[i];
644
- let href = shape.linkUrl;
645
- let target = shape.linkTarget;
646
- let alt = shape.linkTitle;
647
- if (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') {
648
- additionalOffsetY = (shape.additionalWidth / 2);
649
- isVerticalPool = (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') && shape.angle != 0 ? true : false;
650
- }
651
- if (!!href && href.length > 0) {
652
- var size = shape['size'] || { width: 0, height: 0 };
653
- var bbox = shape['bbox'] || { x: 0, y: 0 };
654
- var position = shape['position'] || { x: 0, y: 0 };
655
- bbox.x = position.x;
656
- bbox.y = position.y;
657
- bbox.width = size.width;
658
- bbox.height = size.height;
659
- var additionalOffsetX = (shape.additionalWidth / 2);
660
- var x1, y1, x2, y2;
661
- if (shape.includeTextInClickableArea == true) {
662
- x1 = (bbox.x - offsetX - additionalOffsetX);
663
- y1 = (bbox.y - offsetY);
664
- x2 = (x1 + shape.bbox.width - 1);
665
- y2 = (y1 + shape.bbox.height);
666
- }
667
- else {
668
- var transformX = offsetX, transformY = offsetY;
669
- if (offsetX < 0 && isVerticalPool) {
670
- transformX = offsetX + size.height;
671
- transformY = offsetY - size.height;
672
- }
673
- if (offsetY < 0 && isVerticalPool) {
674
- transformY = offsetY + additionalOffsetY;
675
- }
676
- x1 = (bbox.x - transformX);
677
- y1 = (bbox.y - transformY);
678
- x2 = (x1 + size.width - 1);
679
- y2 = (y1 + size.height);
680
- }
681
- let coords = `${x1},${y1},${x2},${y2}`;
682
- switch (shape.type) {
683
- case 'bpmn2.Activity':
684
- case 'bpmn2.Gateway':
685
- case 'bpmn2.Event':
686
- case 'bpmn2.Conversation':
687
- case 'bpmn2.DataObject':
688
- case 'bpmn2.DataStore':
689
- case 'bpmn.Choreography':
690
- case 'bpmn.Message':
691
- map.areas.push({
692
- shape: 'rect',
693
- coords: coords,
694
- href: href,
695
- target: target,
696
- alt: alt
697
- });
698
- break;
699
- default:
700
- map.areas.push({
701
- shape: 'rect',
702
- coords: coords,
703
- href: href,
704
- target: target,
705
- alt: alt
706
- });
707
- break;
708
- }
709
- }
242
+ if (result) {
243
+ //TODO
710
244
  }
711
- }
712
- return map;
713
- }
714
- getMinXOffset(shapes) {
715
- var filterShapes = shapes.filter(function (s) {
716
- return s.type !== 'bpmn2.Flow'
717
- && s.type != 'bpmn2.ConversationLink'
718
- && s.type != 'bpmn2.DataAssociation'
719
- && s.type != 'bpmn2.AnnotationLink';
720
245
  });
721
- var minValue;
722
- var minObject;
723
- if (!filterShapes || !filterShapes.length) {
724
- minValue = this.getXPosition(shapes[0]);
725
- minObject = shapes[0];
726
- }
727
- else {
728
- minValue = this.getXPosition(filterShapes[0]);
729
- minObject = filterShapes[0];
730
- }
731
- for (var i = 1; i < filterShapes.length; i++) {
732
- var xPosition = this.getXPosition(filterShapes[i]);
733
- if (xPosition < minValue) {
734
- minValue = xPosition;
735
- minObject = filterShapes[i];
736
- }
737
- }
738
- return minValue;
739
- }
740
- getXPosition(shape) {
741
- return shape.bbox.x - (shape.additionalWidth / 2);
742
- }
743
- getYPosition(shape) {
744
- return shape.bbox.y - (shape.additionalWidth / 2);
745
- }
746
- getMinYOffset(shapes) {
747
- var filterShapes = shapes.filter(function (s) {
748
- return s.type !== 'bpmn2.Flow'
749
- && s.type != 'bpmn2.ConversationLink'
750
- && s.type != 'bpmn2.DataAssociation'
751
- && s.type != 'bpmn2.AnnotationLink';
752
- });
753
- var minValue;
754
- var minObject;
755
- if (!filterShapes || !filterShapes.length) {
756
- minValue = shapes[0].bbox.y;
757
- minObject = shapes[0];
758
- }
759
- else {
760
- minValue = filterShapes[0].bbox.y;
761
- minObject = filterShapes[0];
762
- }
763
- for (var i = 1; i < filterShapes.length; i++) {
764
- var yPosition = this.getYPosition(filterShapes[i]);
765
- if (yPosition < minValue) {
766
- minValue = yPosition;
767
- minObject = filterShapes[i];
768
- }
769
- }
770
- return minValue;
771
246
  }
772
- ;
773
247
  }
774
- QMSCKEditorBpmnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSCKEditorBpmnComponent, deps: [{ token: i1.MatDialog }, { token: i2.TranslateLibraryService }, { token: i3.BpmnService }, { token: i4.QMSCKEditorBpmnApiService }, { token: i5.QMSCKEditorLinkService }, { token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
775
- QMSCKEditorBpmnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: QMSCKEditorBpmnComponent, selector: "qms-bpmn", host: { listeners: { "window:message": "onMessage($event)" } }, usesInheritance: true, ngImport: i0, template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-bpmn-header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span id=\"qmsckeditor-bpmn-header_002\" mat-icon-button class=\"qmsckeditor button__done\" (click)=\"onInsertImage()\">\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel id=\"panel-stencil-container\" [expanded]=\"expandedPanel\" (click)=\"expandPanel()\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <mat-tab-group mat-stretch-tabs mat-align-tabs=\"center\" (selectedTabChange)=\"onTabChange($event)\">\r\n <mat-tab [label]=\"LANG.BPMN.PROPERTIES\" id=\"qmsckeditor_bpmn_properties\">\r\n <div id=\"inspector-container\">\r\n </div>\r\n <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}</h1>\r\n </div>\r\n </mat-tab>\r\n <mat-tab [label]=\"LANG.BPMN.CONNECTION\" id=\"qmsckeditor_bpmn_connection\">\r\n <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}</h1>\r\n </div>\r\n <mat-expansion-panel id=\"qmsckeditor_bpmn_connection_panel\" [expanded]=\"true\" (opened)=\"true\" (closed)=\"false\"\r\n hideToggle *ngIf=\"!!selectedCellView\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.BPMN.CONNECTION }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_001\" class=\"col-12 mt8\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"connectionType\" name=\"connectionType\"\r\n (ngModelChange)=\"onConnectionTypeChange()\">\r\n <mat-option *ngFor=\"let item of connectionTypes\" [value]=\"item.id\" disableOptionCentering>\r\n {{ item.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_002\" class=\"col-12 mt8\" *ngIf=\"!!link\">\r\n <mat-card>\r\n <div class=\"row\">\r\n <div class=\"col-1 mt-n4\">\r\n <mat-icon aria-hidden=\"true\" class=\"fs32\">{{link.icon}}</mat-icon>\r\n </div>\r\n <div class=\"col-10\">\r\n <mat-card-title class=\"fs16\">{{link.title}}</mat-card-title>\r\n <mat-card-subtitle>{{link.content}}</mat-card-subtitle>\r\n </div>\r\n <div class=\"col-1 pa0 mt-n4\">\r\n <button mat-icon-button>\r\n <mat-icon (click)=\"removeLink()\">close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_003\" class=\"col-12 mt24\"\r\n *ngIf=\"!!link && link.documentType === 1\">\r\n <div class=\"row\">\r\n <div class=\"col-10\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.BPMN.CHOOSE_ANCHOR_IN_TEXT_OPTIONAL }}</mat-label>\r\n <mat-label *ngIf=\"isLoadingDocumentAnchor\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" name=\"anchorByName\" (ngModelChange)=\"onAnchorByNameChange()\"\r\n disableOptionCentering>\r\n <mat-option *ngIf=\"documentAnchors === null || documentAnchors.length == 0\" disabled></mat-option>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-2 mt8 pa0\">\r\n <button mat-raised-button [matTooltip]=\"LANG.BPMN.RELOAD_ANCHORS\" (click)=\"reloadAnchors()\"\r\n [disabled]=\"isLoadingDocumentAnchor\">\r\n <mat-icon>autorenew</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_004\" class=\"col-12 mt8\" *ngIf=\"!!link\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" name=\"selectedTarget\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </div>\r\n </div>\r\n</div>", styles: [".qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}.qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}.qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}.qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:16px;height:50px;width:100%}.qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}.qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}.qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}.qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}.qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}.qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}.qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}.qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}.qmsckeditor__bpmn__container #panel-stencil-container ::ng-deep .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}.qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}.qmsckeditor__bpmn__container ::ng-deep .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}.qmsckeditor__bpmn__container ::ng-deep .object-property[data-property$=\"/fill\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .object-property[data-property$=\"/stroke\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .field[data-field$=\"/fill\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .field[data-field$=\"/stroke\"]{width:100%}"], components: [{ type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight"] }, { type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i8.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i9.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i12.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i13.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], directives: [{ type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatLabel, selector: "mat-label" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i12.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i17.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSCKEditorBpmnComponent, decorators: [{
777
- type: Component,
778
- args: [{
779
- selector: 'qms-bpmn',
780
- templateUrl: './qms-ckeditor-bpmn.component.html',
781
- styleUrls: ['./qms-ckeditor-bpmn.component.scss']
782
- }]
783
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.TranslateLibraryService }, { type: i3.BpmnService }, { type: i4.QMSCKEditorBpmnApiService }, { type: i5.QMSCKEditorLinkService }, { type: i1.MatDialogRef }, { type: i18.QMSCKEditorBpmnData, decorators: [{
784
- type: Inject,
785
- args: [MAT_DIALOG_DATA]
786
- }] }]; }, propDecorators: { onMessage: [{
787
- type: HostListener,
788
- args: ['window:message', ['$event']]
789
- }] } });
790
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYnBtbi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLFVBQVUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yRXZlbnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRXZlbnQuY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgRmxvd0NoYXJ0Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdFwiO1xyXG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9ndWlkSGVscGVyXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4ubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRpYWxvZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclNhdmVBc1RlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLWFwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJwbW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2F2ZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4vc2F2ZS10ZW1wbGF0ZS9zYXZlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9zaGFwZS1mbG93LWNoYXJ0LWNvbm5lY3Rpb24tdHlwZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi9xbXNja2VkaXRvci1yZWxhdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItbGluay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2RvY3VtZW50LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yTGlua0NvbnN0IH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckxpbmsuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQ29ubmVjdGlvblR5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSUFuY2hvciB7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxuICB2aWV3VmFsdWU6IHN0cmluZztcclxuICBhbmNob3JWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5jbGFzcyBJTGluayB7XHJcbiAgdGFyZ2V0OiBUYXJnZXRUeXBlTmFtZTtcclxuICB1cmw6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGU7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICB0aGlzLnRpdGxlID0gJyc7XHJcbiAgICB0aGlzLmljb24gPSAnJztcclxuICAgIHRoaXMuY29udGVudCA9ICcnO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtYnBtbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckJwbW5Db21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBqc29uQ29udGVudDogc3RyaW5nO1xyXG4gIGV4cGFuZGVkUGFuZWwgPSB0cnVlO1xyXG4gIGlkID0gJyc7XHJcbiAgbW9kdWxlOiBudW1iZXI7XHJcbiAgZW50aXR5SWQgPSAnJztcclxuICBlZGl0b3JDb250ZW50ID0gJyc7XHJcblxyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29ubmVjdGlvblR5cGU6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGU7XHJcbiAgc2VsZWN0ZWRDb25uZWN0aW9uVHlwZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBjb25uZWN0aW9uVHlwZXM6IElDb25uZWN0aW9uVHlwZVtdID0gW107XHJcblxyXG4gIHNlbGVjdGVkVGFyZ2V0OiBUYXJnZXRUeXBlTmFtZSA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICBsaW5rVXJsID0gJyc7XHJcbiAgbGlua1RpdGxlID0gJyc7XHJcbiAgYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgbGlua0ljb24gPSAnJztcclxuICBsaW5rSWQ6IHN0cmluZyA9ICcnO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICBkb2N1bWVudEljb25zOiBhbnk7XHJcblxyXG4gIGxpbms6IElMaW5rO1xyXG4gIGRvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGlzTG9hZGluZ0RvY3VtZW50QW5jaG9yOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkQ2VsbFZpZXc6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckJwbW5Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckJwbW5EYXRhXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGEuaWQ7XHJcbiAgICB0aGlzLm1vZHVsZSA9IGRhdGEubW9kdWxlO1xyXG4gICAgdGhpcy5lbnRpdHlJZCA9IGRhdGEuZW50aXR5SWQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkRFTEVURV9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlVGVtcGxhdGUodGhpcy5MQU5HLkJQTU4uREVMRVRFX1RFTVBMQVRFLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9URU1QTEFURSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURSwgdGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFX0lORk9STUFUSU9OLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkNIQU5HSU5HX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25TZWxlY3RlZFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5SRVNFVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uUmVzZXRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSUQpIHtcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJwbW5UZW1sYXRlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVzKCk7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuYm1wblNlcnZpY2UuYnVpbGREaWFncmFtKFxyXG4gICAgICB0aGlzLmJwbW5UZW1sYXRlcyxcclxuICAgICAgbnVsbCxcclxuICAgICAgQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU4sXHJcbiAgICAgIHRoaXMuanNvbkNvbnRlbnQsXHJcbiAgICAgIDEsXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERvY3VtZW50SWNvbnMoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0Q29ubmVjdGlvblR5cGUoKTtcclxuICAgIHRoaXMuaW5pdExpbmsoKTtcclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Q29ubmVjdGlvblR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uVHlwZXMpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUyB9KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BVFRBQ0hNRU5UIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERvY3VtZW50SWNvbnMoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnMgPSB7fTtcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudF0gPSAndGV4dF9zbmlwcGV0JztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzXSA9ICdhY2NvdW50X3RyZWUnO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWFdID0gJ2ZvbGRlcic7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyXSA9ICdmb2xkZXInO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXSA9ICd0ZXh0X3NuaXBwZXQnO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmsoKSB7XHJcbiAgICB0aGlzLmxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5saW5rSWQgPSAnJztcclxuICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXVxyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgICB0aGlzLmxpbmtUaXRsZSA9ICcnO1xyXG4gICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGV4cGFuZFBhbmVsKCkge1xyXG4gICAgdGhpcy5leHBhbmRlZFBhbmVsID0gIXRoaXMuZXhwYW5kZWRQYW5lbDtcclxuICAgIGNvbnN0IHBhbmVsU3RlbmNpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYW5lbC1zdGVuY2lsLWNvbnRhaW5lcicpO1xyXG4gICAgY29uc3QgcGFwZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwZXJwYW5lbCcpO1xyXG4gICAgY29uc3Qgc3RlbmNpbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVuY2lscGFuZWwnKTtcclxuICAgIGlmIChwYW5lbFN0ZW5jaWwpIHtcclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkUGFuZWwpIHtcclxuICAgICAgICBzdGVuY2lsQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MDBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhbmVsU3RlbmNpbC5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc0MDBweCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5HZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRKc29uQ29udGVudChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJwbW5CeUlkKGlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb25Db250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaE9iamVjdCk7XHJcbiAgICAgIHRoaXMuYnBtbiA9IHtcclxuICAgICAgICBpZDogdGhpcy5pZCA/IHRoaXMuaWQgOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgICBpc1RlbXBsYXRlOiBmYWxzZSxcclxuICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEltYWdlQ29udGVudChwYXBlcjogYW55KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgcGFwZXIudG9QTkcoKGltYWdlRGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFyclN0cmluZyA9IGltYWdlRGF0YS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHJlc29sdmUoYXJyU3RyaW5nWzFdKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uSW5zZXJ0SW1hZ2UoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBwYXBlciA9IHdpbmRvd1tgcGFwZXJgXTtcclxuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBwYXBlci5wYXBlclRvTG9jYWxSZWN0KHBhcGVyLmdldENvbnRlbnRCQm94KCkpO1xyXG4gICAgY29uc3QgZ3JhcGhPYmplY3QgPSBncmFwaC50b0pTT04oKTtcclxuICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5zYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KTtcclxuICAgIGNvbnN0IGltYWdlQ29udGVudCA9ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGF3YWl0IHRoaXMuZ2V0SW1hZ2VDb250ZW50KHBhcGVyKTtcclxuICAgIGNvbnN0IGltYWdlbWFwID0gdGhpcy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IGtleTogYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCwgdmFsdWVzOiBpbWFnZUNvbnRlbnQsIGltYWdlbWFwOiBpbWFnZW1hcCB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVMaW5rKCkge1xyXG4gICAgbGV0IHRpdGxlID0gdGhpcy5MQU5HLkJQTU4uREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuTEFORy5CUE1OLkNPTkZJUk1fREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3MpIHtcclxuICAgICAgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcclxuICAgICAgY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0RPQ1VNRU5UX09SX1BST0NFU1M7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRpdGxlLCBjb250ZW50LCBmYWxzZSwgKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0cnVlIHx8ICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgdmFsdWUuaXNDb25maXJtZWQgPT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIHRoaXMubGluayA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25Db25uZWN0aW9uVHlwZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IHRoaXMuY29ubmVjdGlvblR5cGU7XHJcbiAgICBpZiAodGhpcy5saW5rKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGhpcy5MQU5HLlFNU0NLRURJVE9SLklORk9STUFUSU9OLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9FWElTVElOR19DT05ORUNUSU9OLCB0cnVlLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29ubmVjdGlvblR5cGUpIHtcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzOlxyXG4gICAgICAgIHRoaXMub3BlbkhhbmRib29rRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ6XHJcbiAgICAgICAgdGhpcy5vcGVuQXR0YWNobWVudERpYWxvZygpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuY2hvckJ5TmFtZUNoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5IYW5kYm9va0RpYWxvZyhpc09ubHlEb2N1bWVudDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclJlbGF0aW9uKCk7XHJcbiAgICBkYXRhLmlzT25seURvY3VtZW50ID0gaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBkYXRhLmlzRW5hYmxlRm9sZGVyID0gIWlzT25seURvY3VtZW50O1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSByZXN1bHQudHlwZTtcclxuICAgICAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQocmVzdWx0LnVybCwgcmVzdWx0LnR5cGUpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gYCR7cmVzdWx0LnRpdGxlfSgke3Jlc3VsdC5pZH0pYDtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5saW5rVGl0bGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpbmtUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkF0dGFjaG1lbnREaWFsb2coKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUGFyYW10ZXIoKTtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5lbnRpdHlJZDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihMaW5rQXR0YWNobWVudENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICBpZiAoIXRoaXMubGlua1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdEb2N1bWVudEFuY2hvciA9IHRydWU7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoZG9jdW1lbnRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmV4dHJhY3REb2N1bWVudEFuY2hvcnMoZG9jdW1lbnRzIHx8IFtdKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0RvY3VtZW50QW5jaG9yID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdERvY3VtZW50QW5jaG9ycyhhbmNob3JEb2N1bWVudDogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSkge1xyXG4gICAgY29uc3QgYW5jaG9yczogSUFuY2hvcltdID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xyXG4gICAgbGV0IGlkID0gMztcclxuICAgIGlmIChhbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XHJcbiAgICAgICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcclxuICAgICAgICBjb25zdCBhVGFncyA9IGRvbUNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTtcclxuICAgICAgICBpZiAoYVRhZ3MpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IGFUYWdzW2ldO1xyXG4gICAgICAgICAgICBpZiAodGFnLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkLFxyXG4gICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWQgKz0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDEsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XHJcbiAgICB9KTtcclxuICAgIGFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAyLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYW5jaG9ycztcclxuICB9XHJcblxyXG4gIHJlbG9hZEFuY2hvcnMoKSB7XHJcbiAgICBpZiAoISF0aGlzLmxpbmtJZCAmJiB0aGlzLmRvY3VtZW50VHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCkge1xyXG4gICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHRoaXMubGlua0lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1aWxkTGluaygpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgSUxpbmsoKTtcclxuICAgIGxpbmsudGFyZ2V0ID0gdGhpcy5zZWxlY3RlZFRhcmdldDtcclxuICAgIGxpbmsudGl0bGUgPSB0aGlzLmxpbmtUaXRsZTtcclxuICAgIGxpbmsudXJsID0gdGhpcy5saW5rVXJsO1xyXG4gICAgbGluay5kb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZSB8fCBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIGxpbmsuaWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1tsaW5rLmRvY3VtZW50VHlwZV07XHJcbiAgICBsaW5rLmNvbnRlbnQgPSAnJztcclxuICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudFR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke0NLRWRpdG9yTGlua0NvbnN0LkRPQ1VNRU5UX1BBUlRJQUxfVVJMfSR7dGhpcy5saW5rSWR9IyR7dGhpcy5hbmNob3JCeU5hbWV9YDtcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuYXJlYTpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlQXNUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgbGV0IHRlbXBsYXRlID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgdGVtcGxhdGUgPSB7XHJcbiAgICAgIGlkOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgIGlzVGVtcGxhdGU6IHRydWUsXHJcbiAgICAgIHRlbXBsYXRlTmFtZTogJydcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIGRhdGEudGVtcGxhdGVUeXBlID0gQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU47XHJcbiAgICBkYXRhLmJwbW4gPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihTYXZlVGVtcGxhdGVDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc0NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzIyMHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vIFRET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX0pTT05fQ09OVEVOVF07XHJcbiAgICBpZiAoc2VsZWN0ZWRKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uoc2VsZWN0ZWRKc29uQ29udGVudCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EZWxldGVUZW1wbGF0ZSh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcclxuICAgIGRhdGEudGl0bGUgPSB0aXRsZTtcclxuICAgIGRhdGEuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGV0ZWRDZWxsVmlldygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xyXG4gICAgdGhpcy5pbml0TGluaygpO1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcubW9kZWwuYXR0cmlidXRlcztcclxuICAgICAgaWYgKGF0dHJpYnV0ZXMudHlwZSA9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICB8fCBhdHRyaWJ1dGVzLnR5cGUgPT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgfHwgYXR0cmlidXRlcy50eXBlID09ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgICAgICB8fCBhdHRyaWJ1dGVzLnR5cGUgPT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbicpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcgPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGlua1VybCA9IGF0dHJpYnV0ZXMubGlua1VybCB8fCAnJztcclxuICAgICAgICBpZiAoISF0aGlzLmxpbmtVcmwpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMubGlua1VybCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gYXR0cmlidXRlcy5saW5rVGFyZ2V0O1xyXG4gICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSBhdHRyaWJ1dGVzLmxpbmtUaXRsZTtcclxuICAgICAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZSgkZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XHJcbiAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuVEFCX05BTUVdID0gJGV2ZW50LnRhYi50ZXh0TGFiZWw7XHJcbiAgICBpZiAoJGV2ZW50LnRhYi50ZXh0TGFiZWwgPT0gdGhpcy5MQU5HLkJQTU4uUFJPUEVSVElFUykge1xyXG4gICAgICB0aGlzLmJtcG5TZXJ2aWNlLm9wZW5TaGFwZUZ1bmN0aW9uYWxpdHkodGhpcy5MQU5HKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCEhdXJsKSB7XHJcbiAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gdGhpcy5nZXREb2N1bWVudFR5cGUodXJsKTtcclxuICAgICAgdGhpcy5saW5rSWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1t0aGlzLmRvY3VtZW50VHlwZV07XHJcbiAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQodXJsLCB0aGlzLmRvY3VtZW50VHlwZSk7XHJcbiAgICAgIGlmICghIXRoaXMubGlua0lkICYmIHRoaXMuZG9jdW1lbnRUeXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JCeU5hbWUgPSB1cmwuc3Vic3RyKGhhc2hJbmRleCArIDEsIHVybC5sZW5ndGggLSBoYXNoSW5kZXgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQodGhpcy5saW5rSWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXJ0aWFsVXJsKHR5cGU6IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkw7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTDtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5BUkVBX1BBUlRJQUxfVVJMO1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRk9MREVSX1BBUlRJQUxfVVJMO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldExpbmtJZCh1cmw6IHN0cmluZywgdHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUpIHtcclxuICAgIGxldCBwYXJ0aWFsVXJsSW5kZXggPSAwO1xyXG4gICAgbGV0IHBhcnRpYWxVcmxMZW5ndGggPSAwO1xyXG4gICAgbGV0IGlkID0gJyc7XHJcbiAgICBsZXQgZnJvbSA9IDA7XHJcbiAgICBsZXQgdXJsTG93ZXJDYXNlID0gISF1cmwgPyB1cmwudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG5cclxuICAgIGNvbnN0IHBhcnRpYWxVcmwgPSB0aGlzLmdldFBhcnRpYWxVcmwodHlwZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKCcjJyk7XHJcblxyXG4gICAgaWYgKCEhcGFydGlhbFVybCkge1xyXG4gICAgICBwYXJ0aWFsVXJsSW5kZXggPSB1cmxMb3dlckNhc2UuaW5kZXhPZihwYXJ0aWFsVXJsKTtcclxuXHJcbiAgICAgIHBhcnRpYWxVcmxMZW5ndGggPSBwYXJ0aWFsVXJsLmxlbmd0aDtcclxuICAgICAgZnJvbSA9IHBhcnRpYWxVcmxJbmRleCArIHBhcnRpYWxVcmxMZW5ndGg7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCAmJiBoYXNoSW5kZXggPiAtMSkge1xyXG4gICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBoYXNoSW5kZXggLSBmcm9tKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pLmluZGV4T2YoJy8nKTtcclxuICAgICAgICBpZiAobGVuZ3RoIDwgMCkge1xyXG4gICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBsZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcGFyc2VJbnQoaWQsIDEwKTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCB7XHJcbiAgICAgICAgaWQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRUeXBlKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNlbGxWaWV3VmFsdWVzKCkge1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVXJsJywgdGhpcy5saW5rLnVybCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGFyZ2V0JywgdGhpcy5saW5rLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGl0bGUnLCB0aGlzLmxpbmsudGl0bGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXNldFRlbXBsYXRlKCkge1xyXG4gICAgY29uc3Qgb2dySnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuT1JHX0pTT05DT05URU5UXTtcclxuICAgIGlmIChvZ3JKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uob2dySnNvbkNvbnRlbnQpKTtcclxuICAgICAgICB0aGlzLmJtcG5TZXJ2aWNlLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LklTX1NFTEVDVEVEX1RFTVBMQVRFXSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1EaWFsb2codGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBpc01lc3NhZ2U6IGJvb2xlYW4sIGNhbGxiYWNrPzogKHJlc3VsdD86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gaXNNZXNzYWdlO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b0ltYWdlTWFwKGlkOiBhbnksIGNlbGxzOiBhbnlbXSwgY2xpZW50UmVjdDogYW55KSB7XHJcbiAgICBjb25zdCBtYXAgPSB7IG5hbWU6IGlkLCBpZDogaWQsIGFyZWFzOiBbXSwgaW1hZ2VIZWlnaHQ6IDAsIGltYWdlV2lkdGg6IDAgfTtcclxuICAgIG1hcC5pbWFnZUhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xyXG4gICAgbWFwLmltYWdlV2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xyXG4gICAgaWYgKGNlbGxzICYmIGNlbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHZhciBpc1ZlcnRpY2FsUG9vbCA9IGZhbHNlO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IHNpemUgPSBzaGFwZVsnc2l6ZSddIHx8IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGxldCBiYm94ID0gc2hhcGVbJ2Jib3gnXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBiYm94LnggPSBwb3NpdGlvbi54O1xyXG4gICAgICAgIGJib3gueSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBzaGFwZVsnYmJveCddID0gYmJveDtcclxuICAgICAgICBzaGFwZVsnYWRkaXRpb25hbFdpZHRoJ10gPSAoYmJveC53aWR0aCA+IHNpemUud2lkdGgpID8gKGJib3gud2lkdGggLSBzaXplLndpZHRoKSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIG9mZnNldFggPSB0aGlzLmdldE1pblhPZmZzZXQoY2VsbHMpO1xyXG4gICAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0TWluWU9mZnNldChjZWxscyk7XHJcblxyXG4gICAgICB2YXIgYWRkaXRpb25hbE9mZnNldFkgPSAwO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IGhyZWYgPSBzaGFwZS5saW5rVXJsO1xyXG4gICAgICAgIGxldCB0YXJnZXQgPSBzaGFwZS5saW5rVGFyZ2V0O1xyXG4gICAgICAgIGxldCBhbHQgPSBzaGFwZS5saW5rVGl0bGU7XHJcblxyXG4gICAgICAgIGlmIChzaGFwZS50eXBlID09ICdicG1uMi5Qb29sJyB8fCBzaGFwZS50eXBlID09ICdicG1uMi5IZWFkZXJlZFBvb2wnKSB7XHJcbiAgICAgICAgICBhZGRpdGlvbmFsT2Zmc2V0WSA9IChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICAgICAgICAgIGlzVmVydGljYWxQb29sID0gKHNoYXBlLnR5cGUgPT0gJ2JwbW4yLlBvb2wnIHx8IHNoYXBlLnR5cGUgPT0gJ2JwbW4yLkhlYWRlcmVkUG9vbCcpICYmIHNoYXBlLmFuZ2xlICE9IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghIWhyZWYgJiYgaHJlZi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgc2l6ZSA9IHNoYXBlWydzaXplJ10gfHwgeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XHJcbiAgICAgICAgICB2YXIgYmJveCA9IHNoYXBlWydiYm94J10gfHwgeyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICB2YXIgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICAgIGJib3gueCA9IHBvc2l0aW9uLng7XHJcbiAgICAgICAgICBiYm94LnkgPSBwb3NpdGlvbi55O1xyXG4gICAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgICBiYm94LmhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgdmFyIGFkZGl0aW9uYWxPZmZzZXRYID0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG5cclxuICAgICAgICAgIHZhciB4MSwgeTEsIHgyLCB5MjtcclxuXHJcbiAgICAgICAgICBpZiAoc2hhcGUuaW5jbHVkZVRleHRJbkNsaWNrYWJsZUFyZWEgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB4MSA9IChiYm94LnggLSBvZmZzZXRYIC0gYWRkaXRpb25hbE9mZnNldFgpO1xyXG4gICAgICAgICAgICB5MSA9IChiYm94LnkgLSBvZmZzZXRZKTtcclxuICAgICAgICAgICAgeDIgPSAoeDEgKyBzaGFwZS5iYm94LndpZHRoIC0gMSk7XHJcbiAgICAgICAgICAgIHkyID0gKHkxICsgc2hhcGUuYmJveC5oZWlnaHQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIHRyYW5zZm9ybVggPSBvZmZzZXRYLCB0cmFuc2Zvcm1ZID0gb2Zmc2V0WTtcclxuICAgICAgICAgICAgaWYgKG9mZnNldFggPCAwICYmIGlzVmVydGljYWxQb29sKSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtWCA9IG9mZnNldFggKyBzaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1ZID0gb2Zmc2V0WSAtIHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvZmZzZXRZIDwgMCAmJiBpc1ZlcnRpY2FsUG9vbCkge1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybVkgPSBvZmZzZXRZICsgYWRkaXRpb25hbE9mZnNldFk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeDEgPSAoYmJveC54IC0gdHJhbnNmb3JtWCk7XHJcbiAgICAgICAgICAgIHkxID0gKGJib3gueSAtIHRyYW5zZm9ybVkpO1xyXG4gICAgICAgICAgICB4MiA9ICh4MSArIHNpemUud2lkdGggLSAxKTtcclxuICAgICAgICAgICAgeTIgPSAoeTEgKyBzaXplLmhlaWdodCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY29vcmRzID0gYCR7eDF9LCR7eTF9LCR7eDJ9LCR7eTJ9YDtcclxuICAgICAgICAgIHN3aXRjaCAoc2hhcGUudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5BY3Rpdml0eSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkdhdGV3YXknOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5FdmVudCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkNvbnZlcnNhdGlvbic6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkRhdGFPYmplY3QnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5EYXRhU3RvcmUnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uLkNob3Jlb2dyYXBoeSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4uTWVzc2FnZSc6XHJcbiAgICAgICAgICAgICAgbWFwLmFyZWFzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2hhcGU6ICdyZWN0JyxcclxuICAgICAgICAgICAgICAgIGNvb3JkczogY29vcmRzLFxyXG4gICAgICAgICAgICAgICAgaHJlZjogaHJlZixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgICAgICAgICAgYWx0OiBhbHRcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBtYXAuYXJlYXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICAgICAgY29vcmRzOiBjb29yZHMsXHJcbiAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBhbHQ6IGFsdFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIGdldE1pblhPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBtaW5WYWx1ZTtcclxuICAgIHZhciBtaW5PYmplY3Q7XHJcblxyXG4gICAgaWYgKCFmaWx0ZXJTaGFwZXMgfHwgIWZpbHRlclNoYXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWluVmFsdWUgPSB0aGlzLmdldFhQb3NpdGlvbihzaGFwZXNbMF0pO1xyXG4gICAgICBtaW5PYmplY3QgPSBzaGFwZXNbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5WYWx1ZSA9IHRoaXMuZ2V0WFBvc2l0aW9uKGZpbHRlclNoYXBlc1swXSk7XHJcbiAgICAgIG1pbk9iamVjdCA9IGZpbHRlclNoYXBlc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGZpbHRlclNoYXBlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgeFBvc2l0aW9uID0gdGhpcy5nZXRYUG9zaXRpb24oZmlsdGVyU2hhcGVzW2ldKTtcclxuICAgICAgaWYgKHhQb3NpdGlvbiA8IG1pblZhbHVlKSB7XHJcbiAgICAgICAgbWluVmFsdWUgPSB4UG9zaXRpb247XHJcbiAgICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFhQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueCAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldFlQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueSAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldE1pbllPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG4gICAgdmFyIG1pblZhbHVlO1xyXG4gICAgdmFyIG1pbk9iamVjdDtcclxuXHJcbiAgICBpZiAoIWZpbHRlclNoYXBlcyB8fCAhZmlsdGVyU2hhcGVzLmxlbmd0aCkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHNoYXBlc1swXS5iYm94Lnk7XHJcbiAgICAgIG1pbk9iamVjdCA9IHNoYXBlc1swXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1pblZhbHVlID0gZmlsdGVyU2hhcGVzWzBdLmJib3gueTtcclxuICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmlsdGVyU2hhcGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB5UG9zaXRpb24gPSB0aGlzLmdldFlQb3NpdGlvbihmaWx0ZXJTaGFwZXNbaV0pO1xyXG4gICAgICBpZiAoeVBvc2l0aW9uIDwgbWluVmFsdWUpIHtcclxuICAgICAgICBtaW5WYWx1ZSA9IHlQb3NpdGlvbjtcclxuICAgICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9O1xyXG59XHJcbiIsIjxkaXYgaWQ9XCJxbXNja2VkaXRvci1icG1uXCIgY2xhc3M9XCJxbXNja2VkaXRvciBxbXNja2VkaXRvcl9fYnBtbl9fY29udGFpbmVyXCI+XHJcbiAgPGRpdiBpZD1cInFtc2NrZWRpdG9yLWxvYWQtdGVtcGxhdGUtaGVhZGVyXCI+XHJcbiAgICA8c3BhbiBpZD1cInFtc2NrZWRpdG9yLWJwbW4taGVhZGVyXzAwMVwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInFtc2NrZWRpdG9yIGJ1dHRvbl9fY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZURpYWxvZygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBpZD1cInFtc2NrZWRpdG9yLWJwbW4taGVhZGVyXzAwMlwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInFtc2NrZWRpdG9yIGJ1dHRvbl9fZG9uZVwiIChjbGljayk9XCJvbkluc2VydEltYWdlKClcIj5cclxuICAgICAgPG1hdC1pY29uPmRvbmU8L21hdC1pY29uPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yLWxvYWQtdGVtcGxhdGUtaGVhZGVyXzAwMlwiIG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgICAgPGgyIGlkPVwicW1zY2tlZGl0b3ItdGVtcGxhdGVfMDAyXzAwMVwiPlxyXG4gICAgICAgIHt7TEFORy5CUE1OLkJVU0lORVNTX1BST0NFU1NfTU9ERUxfQU5EX05PVEFUSU9OfX1cclxuICAgICAgPC9oMj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGlkPVwiYnBtblwiIGNsYXNzPVwiYnBtbl9fZWRpdG9yXCI+XHJcbiAgICA8ZGl2IGlkPVwidG9vbGJhcnBhbmVsXCI+XHJcbiAgICAgIDxkaXYgaWQ9XCJ0b29sYmFyLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGlkPVwibGVmdHBhbmVsXCI+XHJcbiAgICAgIDxkaXYgaWQ9XCJwYXBlcnBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcGVyLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBpZD1cInN0ZW5jaWxwYW5lbFwiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwicGFuZWwtc3RlbmNpbC1jb250YWluZXJcIiBbZXhwYW5kZWRdPVwiZXhwYW5kZWRQYW5lbFwiIChjbGljayk9XCJleHBhbmRQYW5lbCgpXCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+IDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJzdGVuY2lsLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdGVuY2lsLWNvbnRhaW5lclwiPjwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJyaWdodHBhbmVsXCI+XHJcbiAgICAgIDxtYXQtdGFiLWdyb3VwIG1hdC1zdHJldGNoLXRhYnMgbWF0LWFsaWduLXRhYnM9XCJjZW50ZXJcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJMQU5HLkJQTU4uUFJPUEVSVElFU1wiIGlkPVwicW1zY2tlZGl0b3JfYnBtbl9wcm9wZXJ0aWVzXCI+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwiaW5zcGVjdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJvdXRcIiAqbmdJZj1cIiFzZWxlY3RlZENlbGxWaWV3XCI+XHJcbiAgICAgICAgICAgIDxoMT57e0xBTkcuQlBNTi5CVVNJTkVTU19QUk9DRVNTX01PREVMX0FORF9OT1RBVElPTn19PC9oMT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiTEFORy5CUE1OLkNPTk5FQ1RJT05cIiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0XCIgKm5nSWY9XCIhc2VsZWN0ZWRDZWxsVmlld1wiPlxyXG4gICAgICAgICAgICA8aDE+e3tMQU5HLkJQTU4uQlVTSU5FU1NfUFJPQ0VTU19NT0RFTF9BTkRfTk9UQVRJT059fTwvaDE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwicW1zY2tlZGl0b3JfYnBtbl9jb25uZWN0aW9uX3BhbmVsXCIgW2V4cGFuZGVkXT1cInRydWVcIiAob3BlbmVkKT1cInRydWVcIiAoY2xvc2VkKT1cImZhbHNlXCJcclxuICAgICAgICAgICAgaGlkZVRvZ2dsZSAqbmdJZj1cIiEhc2VsZWN0ZWRDZWxsVmlld1wiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgIHt7IExBTkcuQlBNTi5DT05ORUNUSU9OIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJxbXNja2VkaXRvcl9icG1uX2Nvbm5lY3Rpb25fcGFuZWxfMDAxXCIgY2xhc3M9XCJjb2wtMTIgbXQ4XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJjb2wtMTIgcGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBMQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9CWV9OQU1FIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cImNvbm5lY3Rpb25UeXBlXCIgbmFtZT1cImNvbm5lY3Rpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Db25uZWN0aW9uVHlwZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbm5lY3Rpb25UeXBlc1wiIFt2YWx1ZV09XCJpdGVtLmlkXCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwicW1zY2tlZGl0b3JfYnBtbl9jb25uZWN0aW9uX3BhbmVsXzAwMlwiIGNsYXNzPVwiY29sLTEyIG10OFwiICpuZ0lmPVwiISFsaW5rXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgbXQtbjRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmczMyXCI+e3tsaW5rLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZnMxNlwiPnt7bGluay50aXRsZX19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+e3tsaW5rLmNvbnRlbnR9fTwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcGEwIG10LW40XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJlbW92ZUxpbmsoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvbl9wYW5lbF8wMDNcIiBjbGFzcz1cImNvbC0xMiBtdDI0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiEhbGluayAmJiBsaW5rLmRvY3VtZW50VHlwZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IExBTkcuQlBNTi5DSE9PU0VfQU5DSE9SX0lOX1RFWFRfT1BUSU9OQUwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiaXNMb2FkaW5nRG9jdW1lbnRBbmNob3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiYW5jaG9yQnlOYW1lXCIgbmFtZT1cImFuY2hvckJ5TmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW5jaG9yQnlOYW1lQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZG9jdW1lbnRBbmNob3JzID09PSBudWxsIHx8IGRvY3VtZW50QW5jaG9ycy5sZW5ndGggPT0gMFwiIGRpc2FibGVkPjwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkb2NBbmNob3Igb2YgZG9jdW1lbnRBbmNob3JzXCIgW3ZhbHVlXT1cImRvY0FuY2hvci5hbmNob3JWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2NBbmNob3Iudmlld1ZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgbXQ4IHBhMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRUb29sdGlwXT1cIkxBTkcuQlBNTi5SRUxPQURfQU5DSE9SU1wiIChjbGljayk9XCJyZWxvYWRBbmNob3JzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdEb2N1bWVudEFuY2hvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvcmVuZXc8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvbl9wYW5lbF8wMDRcIiBjbGFzcz1cImNvbC0xMiBtdDhcIiAqbmdJZj1cIiEhbGlua1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IExBTkcuUU1TQ0tFRElUT1IuVEFSR0VUIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGFyZ2V0XCIgbmFtZT1cInNlbGVjdGVkVGFyZ2V0XCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHRhcmdldCBvZiB0YXJnZXRzXCIgW3ZhbHVlXT1cInRhcmdldC5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHRhcmdldC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
248
+ QMSCKEditorBpmnComponent.decorators = [
249
+ { type: Component, args: [{
250
+ selector: 'qms-bpmn',
251
+ template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n Business Process Model and Notation\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel\r\n id=\"panel-stencil-container\"\r\n [expanded]=\"expandedPanel\"\r\n (click)=\"expandPanel()\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <div id=\"inspector-container\">\r\n <div class=\"about\">\r\n <h1>Business Process Model and Notation</h1>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
252
+ styles: [".qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}.qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}.qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}.qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:17px;height:50px;width:100%}.qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}.qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}.qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}.qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}.qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}.qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}.qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}.qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}.qmsckeditor__bpmn__container #panel-stencil-container ::ng-deep .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}.qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}.qmsckeditor__bpmn__container ::ng-deep .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}"]
253
+ },] }
254
+ ];
255
+ QMSCKEditorBpmnComponent.ctorParameters = () => [
256
+ { type: MatDialog },
257
+ { type: TranslateLibraryService },
258
+ { type: BpmnService },
259
+ { type: QMSCKEditorBpmnApiService },
260
+ { type: MatDialogRef },
261
+ { type: String, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
262
+ ];
263
+ QMSCKEditorBpmnComponent.propDecorators = {
264
+ onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
265
+ };
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU9oRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBUXBFLFlBQ1UsTUFBaUIsRUFDakIsU0FBa0MsRUFDbEMsV0FBd0IsRUFDeEIsY0FBeUMsRUFDMUMsU0FBaUQsRUFDeEIsSUFBWTtRQUU1QyxLQUFLLEVBQUUsQ0FBQztRQVBBLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQTJCO1FBQzFDLGNBQVMsR0FBVCxTQUFTLENBQXdDO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQVE7UUFYOUMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLFNBQUksR0FBb0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFXM0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUdELFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjthQUNJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsZUFBZSxFQUFFO1lBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1NBQzdHO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRTtZQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQ2xHO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjthQUNJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsY0FBYyxFQUFFO1lBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFSyxRQUFROztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0M7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RDtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUMzQixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLEVBQ0osa0JBQWtCLENBQUMsVUFBVSxFQUM3QixJQUFJLENBQUMsV0FBVyxFQUNoQixDQUFDLEVBQ0QsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRSxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3ZDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDbkMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUN4QyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3BDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzthQUN2QztTQUNGO0lBQ0gsQ0FBQztJQUVLLFlBQVk7O1lBQ2hCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLGdCQUFnQixFQUFFO3FCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDTixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLGNBQWMsQ0FBQyxFQUFVOztZQUM3QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxjQUFjO3FCQUNoQixXQUFXLENBQUMsRUFBRSxDQUFDO3FCQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDN0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLGdCQUFnQjs7WUFDcEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHO29CQUNWLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSztvQkFDeEMsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixZQUFZLEVBQUUsRUFBRTtpQkFDakIsQ0FBQTtnQkFFRCxJQUFJLENBQUMsY0FBYztxQkFDaEIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7cUJBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNqQjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0lBRUssZUFBZSxDQUFDLEtBQVU7O1lBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUN4QixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFSyxhQUFhOztZQUNqQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixNQUFNLFlBQVksR0FBRyx3QkFBd0IsSUFBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQztZQUNsRixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUE7WUFDdEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRztZQUNMLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSztZQUNwQixXQUFXLEVBQUUsV0FBVztZQUN4QixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFBO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTTthQUNQO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE9BQWU7UUFDN0MsTUFBTSxJQUFJLEdBQTBCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUM5RCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLElBQUk7U0FDTCxDQUFDLENBQUM7UUFDSCxTQUFTO2FBQ04sV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsY0FBYztxQkFDaEIsa0JBQWtCLENBQUMsRUFBRSxDQUFDO3FCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksTUFBTSxFQUFFO3dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzt3QkFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFDcEQsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNoRTt5QkFDSTt3QkFDSCx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7cUJBQ3BFO2dCQUNILENBQUMsQ0FBQyxDQUFBO2FBQ0w7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDckQ7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYSxFQUFFLE9BQWU7UUFDNUMsTUFBTSxJQUFJLEdBQTBCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUM5RCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLElBQUk7U0FDTCxDQUFDLENBQUM7UUFDSCxTQUFTO2FBQ04sV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTTthQUNQO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUF4UEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQiw4eERBQWlEOzthQUVsRDs7O1lBcEJRLFNBQVM7WUFFVCx1QkFBdUI7WUFXdkIsV0FBVztZQURYLHlCQUF5QjtZQVpkLFlBQVk7eUNBbUMzQixNQUFNLFNBQUMsZUFBZTs7O3dCQU14QixZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEZsb3dDaGFydENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JGbG93Y2hhcnQuY29uc3RcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3RvYXN0L3Ftcy1ja2VkaXRvci10b2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNhdmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuL3NhdmUtdGVtcGxhdGUvc2F2ZS10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWJwbW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBMQU5HOiBhbnk7XHJcbiAganNvbkNvbnRlbnQ6IHN0cmluZztcclxuICBleHBhbmRlZFBhbmVsID0gdHJ1ZTtcclxuICBpZCA9ICcnO1xyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuaWQgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LlNBVkVfQVNfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5ERUxFVEVfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vbkRlbGV0ZVRlbXBsYXRlKHRoaXMuTEFORy5CUE1OLkRFTEVURV9URU1QTEFURSwgdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfVEVNUExBVEUpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dJbmZvTWVzc2FnZSh0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEUsIHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURV9JTkZPUk1BVElPTik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5DSEFOR0lOR19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuUkVTRVRfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblJlc2V0VGVtcGxhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icG1uVGVtbGF0ZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5qc29uQ29udGVudCA9IGF3YWl0IHRoaXMuZ2V0SnNvbkNvbnRlbnQodGhpcy5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJtcG5TZXJ2aWNlLmJ1aWxkRGlhZ3JhbShcclxuICAgICAgdGhpcy5icG1uVGVtbGF0ZXMsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OLFxyXG4gICAgICB0aGlzLmpzb25Db250ZW50LFxyXG4gICAgICAxLFxyXG4gICAgICB0aGlzLkxBTkdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRQYW5lbCgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWRQYW5lbCA9ICF0aGlzLmV4cGFuZGVkUGFuZWw7XHJcbiAgICBjb25zdCBwYW5lbFN0ZW5jaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtc3RlbmNpbC1jb250YWluZXInKTtcclxuICAgIGNvbnN0IHBhcGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcGVycGFuZWwnKTtcclxuICAgIGNvbnN0IHN0ZW5jaWxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlbmNpbHBhbmVsJyk7XHJcbiAgICBpZiAocGFuZWxTdGVuY2lsKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZFBhbmVsKSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTBweCc7XHJcbiAgICAgICAgcGFuZWxTdGVuY2lsLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTAwcHgnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0ZW5jaWxDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNDAwcHgnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRUZW1wbGF0ZXMoKTogUHJvbWlzZTxRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5icG1uR2V0VGVtcGxhdGVzKClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5nZXRCcG1uQnlJZChpZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uQ29udGVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUltYWdlQ29udGVudCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgICB0aGlzLmJwbW4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbWFnZUNvbnRlbnQocGFwZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBhcnJTdHJpbmcgPSBpbWFnZURhdGEuc3BsaXQoJywnKTtcclxuICAgICAgICByZXNvbHZlKGFyclN0cmluZ1sxXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoKTtcclxuICAgIGNvbnN0IHBhcGVyID0gd2luZG93W2BwYXBlcmBdO1xyXG4gICAgY29uc3QgaW1hZ2VDb250ZW50ID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgYXdhaXQgdGhpcy5nZXRJbWFnZUNvbnRlbnQocGFwZXIpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OfSMke2lkfWAsIHZhbHVlczogaW1hZ2VDb250ZW50IH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZUFzVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBqc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGdyYXBoLnRvSlNPTigpKTtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgZGF0YSA9IHtcclxuICAgICAgaWQ6IGd1aWRIZWxwZXIuZW1wdHksXHJcbiAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcclxuICAgIGlmIChzZWxlY3RlZEpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlVGVtcGxhdGUodGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfRkxPV0NIQVJUX0lEXTtcclxuICAgICAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAgICAgLmJwbW5EZWxldGVUZW1wbGF0ZShpZClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ibXBuU2VydmljZS5yZW1vdmVTZWxlY3RJdGVtKGlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm1wblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLmVycm9yKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVfRkFJTEVEKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IG9nckpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk9SR19KU09OQ09OVEVOVF07XHJcbiAgICBpZiAob2dySnNvbkNvbnRlbnQpIHtcclxuICAgICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgICBpZiAoZ3JhcGgpIHtcclxuICAgICAgICBncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKG9nckpzb25Db250ZW50KSk7XHJcbiAgICAgICAgdGhpcy5ibXBuU2VydmljZS5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0luZm9NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vVE9ET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==