@wavemaker/app-ng-runtime 11.10.5-rc.6100 → 11.11.0-rc.209

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 (1174) hide show
  1. package/build-task/bundles/index.umd.js +94 -68
  2. package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +8 -8
  3. package/build-task/esm2022/containers/repeat-template.build.mjs +5 -5
  4. package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +2 -2
  5. package/build-task/esm2022/containers/wizard/wizard.build.mjs +33 -4
  6. package/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -10
  7. package/build-task/esm2022/data/table/table-column/table-column.build.mjs +15 -11
  8. package/build-task/esm2022/page/page.build.mjs +2 -8
  9. package/build-task/esm2022/public_api.mjs +1 -1
  10. package/build-task/fesm2022/index.mjs +95 -69
  11. package/build-task/fesm2022/index.mjs.map +1 -1
  12. package/components/advanced/carousel/bundles/index.umd.js +8 -36
  13. package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +1 -1
  14. package/components/advanced/carousel/carousel.directive.d.ts +1 -1
  15. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +3 -2
  16. package/components/advanced/carousel/esm2022/carousel.directive.mjs +3 -2
  17. package/components/advanced/carousel/esm2022/public_api.mjs +1 -2
  18. package/components/advanced/carousel/fesm2022/index.mjs +8 -36
  19. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  20. package/components/advanced/carousel/public_api.d.ts +0 -1
  21. package/components/advanced/custom/bundles/index.umd.js +8 -33
  22. package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
  23. package/components/advanced/custom/custom-widget.directive.d.ts +1 -1
  24. package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +3 -2
  25. package/components/advanced/custom/esm2022/custom-widget.directive.mjs +3 -2
  26. package/components/advanced/custom/esm2022/public_api.mjs +1 -2
  27. package/components/advanced/custom/fesm2022/index.mjs +7 -32
  28. package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  29. package/components/advanced/custom/public_api.d.ts +0 -1
  30. package/components/advanced/login/bundles/index.umd.js +10 -34
  31. package/components/advanced/login/esm2022/login.component.mjs +7 -6
  32. package/components/advanced/login/esm2022/public_api.mjs +1 -2
  33. package/components/advanced/login/fesm2022/index.mjs +8 -32
  34. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  35. package/components/advanced/login/login.component.d.ts +1 -1
  36. package/components/advanced/login/public_api.d.ts +0 -1
  37. package/components/advanced/marquee/bundles/index.umd.js +6 -29
  38. package/components/advanced/marquee/esm2022/marquee.directive.mjs +3 -2
  39. package/components/advanced/marquee/esm2022/public_api.mjs +1 -2
  40. package/components/advanced/marquee/fesm2022/index.mjs +5 -28
  41. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  42. package/components/advanced/marquee/marquee.directive.d.ts +1 -1
  43. package/components/advanced/marquee/public_api.d.ts +0 -1
  44. package/components/base/bundles/index.umd.js +86 -278
  45. package/components/base/components.module.d.ts +13 -15
  46. package/components/base/directives/show-in-device.directive.d.ts +1 -1
  47. package/components/base/esm2022/components.module.mjs +7 -13
  48. package/components/base/esm2022/directives/show-in-device.directive.mjs +3 -2
  49. package/components/base/esm2022/pipes/custom-pipes.mjs +33 -16
  50. package/components/base/esm2022/pipes/image.pipe.mjs +3 -2
  51. package/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -2
  52. package/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -2
  53. package/components/base/esm2022/public_api.mjs +1 -2
  54. package/components/base/esm2022/utils/form-utils.mjs +3 -1
  55. package/components/base/esm2022/utils/live-utils.mjs +3 -7
  56. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +4 -2
  57. package/components/base/esm2022/widgets/common/base/base.component.mjs +3 -5
  58. package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +3 -2
  59. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
  60. package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -2
  61. package/components/base/esm2022/widgets/common/container/container.directive.mjs +3 -2
  62. package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -3
  63. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +3 -2
  64. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -2
  65. package/components/base/esm2022/widgets/common/message/message.component.mjs +5 -5
  66. package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
  67. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +5 -3
  68. package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +3 -2
  69. package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +3 -2
  70. package/components/base/fesm2022/index.mjs +85 -276
  71. package/components/base/fesm2022/index.mjs.map +1 -1
  72. package/components/base/pipes/custom-pipes.d.ts +15 -15
  73. package/components/base/pipes/image.pipe.d.ts +1 -1
  74. package/components/base/pipes/sanitize.pipe.d.ts +1 -1
  75. package/components/base/pipes/trust-as.pipe.d.ts +1 -1
  76. package/components/base/public_api.d.ts +0 -1
  77. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +1 -1
  78. package/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  79. package/components/base/widgets/common/base/text-content.directive.d.ts +1 -1
  80. package/components/base/widgets/common/container/container.directive.d.ts +1 -1
  81. package/components/base/widgets/common/item-template/item-template.directive.d.ts +1 -1
  82. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  83. package/components/base/widgets/common/message/message.component.d.ts +1 -1
  84. package/components/base/widgets/common/partial/partial.directive.d.ts +1 -1
  85. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +2 -2
  86. package/components/base/widgets/common/redraw/redrawable.directive.d.ts +1 -1
  87. package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +1 -1
  88. package/components/basic/default/anchor/anchor.component.d.ts +1 -1
  89. package/components/basic/default/audio/audio.component.d.ts +1 -1
  90. package/components/basic/default/bundles/index.umd.js +100 -148
  91. package/components/basic/default/esm2022/anchor/anchor.component.mjs +23 -21
  92. package/components/basic/default/esm2022/audio/audio.component.mjs +7 -6
  93. package/components/basic/default/esm2022/html/html.directive.mjs +3 -2
  94. package/components/basic/default/esm2022/icon/icon.component.mjs +17 -16
  95. package/components/basic/default/esm2022/iframe/iframe.component.mjs +14 -13
  96. package/components/basic/default/esm2022/label/label.directive.mjs +3 -2
  97. package/components/basic/default/esm2022/picture/picture.directive.mjs +3 -2
  98. package/components/basic/default/esm2022/picture/picture.props.mjs +1 -5
  99. package/components/basic/default/esm2022/public_api.mjs +1 -2
  100. package/components/basic/default/esm2022/spinner/spinner.component.mjs +26 -24
  101. package/components/basic/default/esm2022/video/video.component.mjs +19 -18
  102. package/components/basic/default/fesm2022/index.mjs +101 -148
  103. package/components/basic/default/fesm2022/index.mjs.map +1 -1
  104. package/components/basic/default/html/html.directive.d.ts +1 -1
  105. package/components/basic/default/icon/icon.component.d.ts +1 -1
  106. package/components/basic/default/iframe/iframe.component.d.ts +1 -1
  107. package/components/basic/default/label/label.directive.d.ts +1 -1
  108. package/components/basic/default/picture/picture.directive.d.ts +1 -1
  109. package/components/basic/default/public_api.d.ts +0 -1
  110. package/components/basic/default/spinner/spinner.component.d.ts +1 -1
  111. package/components/basic/default/video/video.component.d.ts +1 -1
  112. package/components/basic/progress/bundles/index.umd.js +20 -51
  113. package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +12 -11
  114. package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  115. package/components/basic/progress/esm2022/public_api.mjs +1 -2
  116. package/components/basic/progress/fesm2022/index.mjs +19 -49
  117. package/components/basic/progress/fesm2022/index.mjs.map +1 -1
  118. package/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -1
  119. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -1
  120. package/components/basic/progress/public_api.d.ts +0 -1
  121. package/components/basic/rich-text-editor/bundles/index.umd.js +15 -40
  122. package/components/basic/rich-text-editor/esm2022/public_api.mjs +1 -2
  123. package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +13 -12
  124. package/components/basic/rich-text-editor/fesm2022/index.mjs +13 -37
  125. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  126. package/components/basic/rich-text-editor/public_api.d.ts +0 -1
  127. package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
  128. package/components/basic/search/bundles/index.umd.js +170 -207
  129. package/components/basic/search/esm2022/public_api.mjs +1 -2
  130. package/components/basic/search/esm2022/scrollable.directive.mjs +3 -2
  131. package/components/basic/search/esm2022/search.component.mjs +76 -72
  132. package/components/basic/search/fesm2022/index.mjs +107 -143
  133. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  134. package/components/basic/search/public_api.d.ts +0 -1
  135. package/components/basic/search/scrollable.directive.d.ts +1 -1
  136. package/components/basic/search/search.component.d.ts +1 -1
  137. package/components/basic/tree/bundles/index.umd.js +9 -33
  138. package/components/basic/tree/esm2022/public_api.mjs +1 -2
  139. package/components/basic/tree/esm2022/tree.component.mjs +7 -6
  140. package/components/basic/tree/fesm2022/index.mjs +8 -32
  141. package/components/basic/tree/fesm2022/index.mjs.map +1 -1
  142. package/components/basic/tree/public_api.d.ts +0 -1
  143. package/components/basic/tree/tree.component.d.ts +1 -1
  144. package/components/chart/bundles/index.umd.js +27 -53
  145. package/components/chart/chart.component.d.ts +1 -1
  146. package/components/chart/esm2022/chart.component.mjs +26 -24
  147. package/components/chart/esm2022/chart.utils.mjs +3 -1
  148. package/components/chart/esm2022/public_api.mjs +1 -2
  149. package/components/chart/fesm2022/index.mjs +27 -52
  150. package/components/chart/fesm2022/index.mjs.map +1 -1
  151. package/components/chart/public_api.d.ts +0 -1
  152. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -1
  153. package/components/containers/accordion/accordion.directive.d.ts +1 -1
  154. package/components/containers/accordion/bundles/index.umd.js +208 -237
  155. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -11
  156. package/components/containers/accordion/esm2022/accordion.directive.mjs +5 -4
  157. package/components/containers/accordion/esm2022/public_api.mjs +1 -2
  158. package/components/containers/accordion/fesm2022/index.mjs +189 -217
  159. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  160. package/components/containers/accordion/public_api.d.ts +0 -1
  161. package/components/containers/layout-grid/bundles/index.umd.js +13 -43
  162. package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +7 -9
  163. package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +3 -2
  164. package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +3 -2
  165. package/components/containers/layout-grid/esm2022/public_api.mjs +1 -2
  166. package/components/containers/layout-grid/fesm2022/index.mjs +13 -43
  167. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  168. package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +1 -1
  169. package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +1 -1
  170. package/components/containers/layout-grid/layout-grid.directive.d.ts +1 -1
  171. package/components/containers/layout-grid/public_api.d.ts +0 -1
  172. package/components/containers/linear-layout/bundles/index.umd.js +8 -33
  173. package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +3 -2
  174. package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +3 -2
  175. package/components/containers/linear-layout/esm2022/public_api.mjs +1 -2
  176. package/components/containers/linear-layout/fesm2022/index.mjs +7 -32
  177. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  178. package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +1 -1
  179. package/components/containers/linear-layout/linear-layout.directive.d.ts +1 -1
  180. package/components/containers/linear-layout/public_api.d.ts +0 -1
  181. package/components/containers/panel/bundles/index.umd.js +87 -118
  182. package/components/containers/panel/esm2022/panel.component.mjs +48 -46
  183. package/components/containers/panel/esm2022/public_api.mjs +1 -2
  184. package/components/containers/panel/fesm2022/index.mjs +49 -79
  185. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  186. package/components/containers/panel/panel.component.d.ts +1 -1
  187. package/components/containers/panel/public_api.d.ts +0 -1
  188. package/components/containers/tabs/bundles/index.umd.js +112 -120
  189. package/components/containers/tabs/esm2022/public_api.mjs +1 -2
  190. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +8 -10
  191. package/components/containers/tabs/esm2022/tabs.component.mjs +61 -38
  192. package/components/containers/tabs/esm2022/tabs.props.mjs +2 -5
  193. package/components/containers/tabs/fesm2022/index.mjs +72 -81
  194. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  195. package/components/containers/tabs/public_api.d.ts +0 -1
  196. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +1 -1
  197. package/components/containers/tabs/tabs.component.d.ts +3 -1
  198. package/components/containers/tile/bundles/index.umd.js +6 -29
  199. package/components/containers/tile/esm2022/public_api.mjs +1 -2
  200. package/components/containers/tile/esm2022/tile.directive.mjs +3 -2
  201. package/components/containers/tile/fesm2022/index.mjs +5 -28
  202. package/components/containers/tile/fesm2022/index.mjs.map +1 -1
  203. package/components/containers/tile/public_api.d.ts +0 -1
  204. package/components/containers/tile/tile.directive.d.ts +1 -1
  205. package/components/containers/wizard/bundles/index.umd.js +355 -189
  206. package/components/containers/wizard/esm2022/public_api.mjs +2 -3
  207. package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +3 -2
  208. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +176 -0
  209. package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +8 -5
  210. package/components/containers/wizard/esm2022/wizard.component.mjs +264 -105
  211. package/components/containers/wizard/esm2022/wizard.props.mjs +8 -4
  212. package/components/containers/wizard/fesm2022/index.mjs +323 -155
  213. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  214. package/components/containers/wizard/public_api.d.ts +1 -2
  215. package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +1 -1
  216. package/components/containers/wizard/wizard-step/{wizard-step.directive.d.ts → wizard-step.component.d.ts} +12 -6
  217. package/components/containers/wizard/wizard.component.d.ts +64 -18
  218. package/components/data/card/bundles/index.umd.js +92 -135
  219. package/components/data/card/card-actions/card-actions.directive.d.ts +1 -1
  220. package/components/data/card/card-content/card-content.component.d.ts +1 -1
  221. package/components/data/card/card-footer/card-footer.directive.d.ts +1 -1
  222. package/components/data/card/card.component.d.ts +1 -1
  223. package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +3 -2
  224. package/components/data/card/esm2022/card-content/card-content.component.mjs +7 -6
  225. package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +3 -2
  226. package/components/data/card/esm2022/card.component.mjs +39 -38
  227. package/components/data/card/esm2022/public_api.mjs +1 -2
  228. package/components/data/card/fesm2022/index.mjs +49 -92
  229. package/components/data/card/fesm2022/index.mjs.map +1 -1
  230. package/components/data/card/public_api.d.ts +0 -1
  231. package/components/data/form/bundles/index.umd.js +115 -182
  232. package/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
  233. package/components/data/form/esm2022/form-field/form-field.directive.mjs +3 -2
  234. package/components/data/form/esm2022/form-widget.directive.mjs +3 -2
  235. package/components/data/form/esm2022/form.component.mjs +101 -104
  236. package/components/data/form/esm2022/form.props.mjs +1 -11
  237. package/components/data/form/esm2022/live-actions/dependson.directive.mjs +3 -2
  238. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +3 -2
  239. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
  240. package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -6
  241. package/components/data/form/esm2022/public_api.mjs +1 -2
  242. package/components/data/form/fesm2022/index.mjs +117 -184
  243. package/components/data/form/fesm2022/index.mjs.map +1 -1
  244. package/components/data/form/form-action/form-action.directive.d.ts +1 -1
  245. package/components/data/form/form-field/form-field.directive.d.ts +1 -1
  246. package/components/data/form/form-widget.directive.d.ts +1 -1
  247. package/components/data/form/form.component.d.ts +1 -1
  248. package/components/data/form/live-actions/dependson.directive.d.ts +1 -1
  249. package/components/data/form/live-actions/live-actions.directive.d.ts +1 -1
  250. package/components/data/form/live-filter/live-filter.directive.d.ts +1 -1
  251. package/components/data/form/live-form/live-form.directive.d.ts +1 -1
  252. package/components/data/form/public_api.d.ts +0 -1
  253. package/components/data/list/bundles/index.umd.js +195 -504
  254. package/components/data/list/esm2022/list-item.directive.mjs +4 -3
  255. package/components/data/list/esm2022/list.component.mjs +187 -232
  256. package/components/data/list/esm2022/list.props.mjs +2 -3
  257. package/components/data/list/esm2022/public_api.mjs +1 -2
  258. package/components/data/list/fesm2022/index.mjs +193 -502
  259. package/components/data/list/fesm2022/index.mjs.map +1 -1
  260. package/components/data/list/list-item.directive.d.ts +1 -1
  261. package/components/data/list/list.component.d.ts +1 -1
  262. package/components/data/list/public_api.d.ts +0 -1
  263. package/components/data/live-table/bundles/index.umd.js +9 -33
  264. package/components/data/live-table/esm2022/live-table.component.mjs +7 -6
  265. package/components/data/live-table/esm2022/public_api.mjs +1 -2
  266. package/components/data/live-table/fesm2022/index.mjs +8 -32
  267. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  268. package/components/data/live-table/live-table.component.d.ts +1 -1
  269. package/components/data/live-table/public_api.d.ts +0 -1
  270. package/components/data/pagination/bundles/index.umd.js +80 -110
  271. package/components/data/pagination/esm2022/pagination.component.mjs +80 -76
  272. package/components/data/pagination/esm2022/public_api.mjs +1 -2
  273. package/components/data/pagination/fesm2022/index.mjs +81 -110
  274. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  275. package/components/data/pagination/pagination.component.d.ts +1 -1
  276. package/components/data/pagination/public_api.d.ts +0 -1
  277. package/components/data/table/bundles/index.umd.js +69 -135
  278. package/components/data/table/esm2022/public_api.mjs +1 -2
  279. package/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
  280. package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
  281. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +3 -2
  282. package/components/data/table/esm2022/table-cud.directive.mjs +3 -2
  283. package/components/data/table/esm2022/table-filter.directive.mjs +5 -2
  284. package/components/data/table/esm2022/table-row/table-row.directive.mjs +3 -2
  285. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
  286. package/components/data/table/esm2022/table.component.mjs +51 -48
  287. package/components/data/table/fesm2022/index.mjs +73 -140
  288. package/components/data/table/fesm2022/index.mjs.map +1 -1
  289. package/components/data/table/public_api.d.ts +0 -1
  290. package/components/data/table/table-action/table-action.directive.d.ts +1 -1
  291. package/components/data/table/table-column/table-column.directive.d.ts +1 -1
  292. package/components/data/table/table-column-group/table-column-group.directive.d.ts +1 -1
  293. package/components/data/table/table-cud.directive.d.ts +1 -1
  294. package/components/data/table/table-filter.directive.d.ts +1 -1
  295. package/components/data/table/table-row/table-row.directive.d.ts +1 -1
  296. package/components/data/table/table-row-action/table-row-action.directive.d.ts +1 -1
  297. package/components/data/table/table.component.d.ts +1 -1
  298. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
  299. package/components/dialogs/alert-dialog/bundles/index.umd.js +32 -64
  300. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +10 -10
  301. package/components/dialogs/alert-dialog/esm2022/public_api.mjs +1 -2
  302. package/components/dialogs/alert-dialog/fesm2022/index.mjs +11 -43
  303. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  304. package/components/dialogs/alert-dialog/public_api.d.ts +0 -1
  305. package/components/dialogs/confirm-dialog/bundles/index.umd.js +10 -42
  306. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  307. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -9
  308. package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +1 -2
  309. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +10 -42
  310. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  311. package/components/dialogs/confirm-dialog/public_api.d.ts +0 -1
  312. package/components/dialogs/default/bundles/index.umd.js +76 -136
  313. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +1 -1
  314. package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +1 -1
  315. package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +1 -1
  316. package/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
  317. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +3 -2
  318. package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +3 -2
  319. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +70 -97
  320. package/components/dialogs/default/esm2022/public_api.mjs +1 -2
  321. package/components/dialogs/default/fesm2022/index.mjs +78 -137
  322. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  323. package/components/dialogs/default/public_api.d.ts +0 -1
  324. package/components/dialogs/design-dialog/bundles/index.umd.js +16 -47
  325. package/components/dialogs/design-dialog/dialog.component.d.ts +1 -1
  326. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +14 -13
  327. package/components/dialogs/design-dialog/esm2022/public_api.mjs +1 -2
  328. package/components/dialogs/design-dialog/fesm2022/index.mjs +14 -45
  329. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  330. package/components/dialogs/design-dialog/public_api.d.ts +0 -1
  331. package/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -57
  332. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -21
  333. package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +1 -2
  334. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +21 -57
  335. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  336. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +1 -1
  337. package/components/dialogs/iframe-dialog/public_api.d.ts +0 -1
  338. package/components/dialogs/login-dialog/bundles/index.umd.js +6 -38
  339. package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +3 -2
  340. package/components/dialogs/login-dialog/esm2022/public_api.mjs +1 -2
  341. package/components/dialogs/login-dialog/fesm2022/index.mjs +6 -41
  342. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  343. package/components/dialogs/login-dialog/login-dialog.directive.d.ts +1 -1
  344. package/components/dialogs/login-dialog/public_api.d.ts +0 -1
  345. package/components/dialogs/partial-dialog/bundles/index.umd.js +17 -49
  346. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +16 -15
  347. package/components/dialogs/partial-dialog/esm2022/public_api.mjs +1 -2
  348. package/components/dialogs/partial-dialog/fesm2022/index.mjs +16 -47
  349. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  350. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +1 -1
  351. package/components/dialogs/partial-dialog/public_api.d.ts +0 -1
  352. package/components/input/calendar/bundles/index.umd.js +24 -46
  353. package/components/input/calendar/calendar.component.d.ts +1 -1
  354. package/components/input/calendar/esm2022/calendar.component.mjs +28 -10
  355. package/components/input/calendar/esm2022/calendar.props.mjs +1 -1
  356. package/components/input/calendar/esm2022/public_api.mjs +1 -2
  357. package/components/input/calendar/fesm2022/index.mjs +30 -48
  358. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  359. package/components/input/calendar/public_api.d.ts +0 -1
  360. package/components/input/chips/bundles/index.umd.js +86 -114
  361. package/components/input/chips/chips.component.d.ts +1 -1
  362. package/components/input/chips/esm2022/chips.component.mjs +28 -27
  363. package/components/input/chips/esm2022/public_api.mjs +1 -2
  364. package/components/input/chips/fesm2022/index.mjs +29 -56
  365. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  366. package/components/input/chips/public_api.d.ts +0 -1
  367. package/components/input/color-picker/bundles/index.umd.js +14 -42
  368. package/components/input/color-picker/color-picker.component.d.ts +1 -1
  369. package/components/input/color-picker/esm2022/color-picker.component.mjs +14 -8
  370. package/components/input/color-picker/esm2022/public_api.mjs +1 -2
  371. package/components/input/color-picker/fesm2022/index.mjs +15 -42
  372. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  373. package/components/input/color-picker/public_api.d.ts +0 -1
  374. package/components/input/currency/bundles/index.umd.js +11 -41
  375. package/components/input/currency/currency.component.d.ts +1 -1
  376. package/components/input/currency/esm2022/currency.component.mjs +8 -6
  377. package/components/input/currency/esm2022/public_api.mjs +1 -2
  378. package/components/input/currency/fesm2022/index.mjs +11 -41
  379. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  380. package/components/input/currency/public_api.d.ts +0 -1
  381. package/components/input/default/bundles/index.umd.js +2183 -2263
  382. package/components/input/default/button/button.component.d.ts +1 -1
  383. package/components/input/default/button-group/button-group.directive.d.ts +1 -1
  384. package/components/input/default/caption-position.directive.d.ts +1 -1
  385. package/components/input/default/checkbox/checkbox.component.d.ts +1 -1
  386. package/components/input/default/checkboxset/checkboxset.component.d.ts +1 -1
  387. package/components/input/default/composite/composite.directive.d.ts +1 -1
  388. package/components/input/default/esm2022/button/button.component.mjs +23 -21
  389. package/components/input/default/esm2022/button-group/button-group.directive.mjs +3 -2
  390. package/components/input/default/esm2022/caption-position.directive.mjs +3 -2
  391. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +9 -6
  392. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +73 -72
  393. package/components/input/default/esm2022/composite/composite.directive.mjs +3 -2
  394. package/components/input/default/esm2022/number/number.component.mjs +9 -6
  395. package/components/input/default/esm2022/public_api.mjs +1 -2
  396. package/components/input/default/esm2022/radioset/radioset.component.mjs +73 -72
  397. package/components/input/default/esm2022/select/select.component.mjs +29 -32
  398. package/components/input/default/esm2022/switch/switch.component.mjs +29 -27
  399. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +9 -6
  400. package/components/input/default/esm2022/text/color/input-color.component.mjs +9 -6
  401. package/components/input/default/esm2022/text/email/input-email.component.mjs +9 -6
  402. package/components/input/default/esm2022/text/number/input-number.component.mjs +9 -6
  403. package/components/input/default/esm2022/text/text/input-text.component.mjs +10 -6
  404. package/components/input/default/esm2022/textarea/textarea.component.mjs +14 -11
  405. package/components/input/default/fesm2022/index.mjs +2198 -2277
  406. package/components/input/default/fesm2022/index.mjs.map +1 -1
  407. package/components/input/default/number/number.component.d.ts +1 -1
  408. package/components/input/default/public_api.d.ts +0 -1
  409. package/components/input/default/radioset/radioset.component.d.ts +1 -1
  410. package/components/input/default/select/select.component.d.ts +1 -1
  411. package/components/input/default/switch/switch.component.d.ts +1 -1
  412. package/components/input/default/text/calendar/input-calendar.component.d.ts +1 -1
  413. package/components/input/default/text/color/input-color.component.d.ts +1 -1
  414. package/components/input/default/text/email/input-email.component.d.ts +1 -1
  415. package/components/input/default/text/number/input-number.component.d.ts +1 -1
  416. package/components/input/default/text/text/input-text.component.d.ts +1 -1
  417. package/components/input/default/textarea/textarea.component.d.ts +1 -1
  418. package/components/input/epoch/base-date-time.component.d.ts +0 -1
  419. package/components/input/epoch/bundles/index.umd.js +220 -262
  420. package/components/input/epoch/date/date.component.d.ts +1 -1
  421. package/components/input/epoch/date/imaskUtil.d.ts +2 -2
  422. package/components/input/epoch/date-time/date-time-picker.component.d.ts +6 -6
  423. package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
  424. package/components/input/epoch/esm2022/base-date-time.component.mjs +6 -9
  425. package/components/input/epoch/esm2022/date/date.component.mjs +19 -18
  426. package/components/input/epoch/esm2022/date/imaskUtil.mjs +3 -1
  427. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +76 -62
  428. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +28 -24
  429. package/components/input/epoch/esm2022/picker/picker.component.mjs +33 -28
  430. package/components/input/epoch/esm2022/public_api.mjs +1 -2
  431. package/components/input/epoch/esm2022/time/time.component.mjs +25 -21
  432. package/components/input/epoch/fesm2022/index.mjs +196 -237
  433. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  434. package/components/input/epoch/picker/picker.component.d.ts +2 -2
  435. package/components/input/epoch/public_api.d.ts +0 -1
  436. package/components/input/epoch/time/time.component.d.ts +1 -1
  437. package/components/input/file-upload/bundles/index.umd.js +135 -178
  438. package/components/input/file-upload/esm2022/file-upload.component.mjs +133 -150
  439. package/components/input/file-upload/esm2022/public_api.mjs +1 -2
  440. package/components/input/file-upload/fesm2022/index.mjs +133 -175
  441. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  442. package/components/input/file-upload/file-upload.component.d.ts +1 -2
  443. package/components/input/file-upload/public_api.d.ts +0 -1
  444. package/components/input/rating/bundles/index.umd.js +50 -77
  445. package/components/input/rating/esm2022/public_api.mjs +1 -2
  446. package/components/input/rating/esm2022/rating.component.mjs +23 -20
  447. package/components/input/rating/fesm2022/index.mjs +23 -49
  448. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  449. package/components/input/rating/public_api.d.ts +0 -1
  450. package/components/input/rating/rating.component.d.ts +1 -1
  451. package/components/input/slider/bundles/index.umd.js +35 -63
  452. package/components/input/slider/esm2022/public_api.mjs +1 -2
  453. package/components/input/slider/esm2022/slider.component.mjs +15 -13
  454. package/components/input/slider/fesm2022/index.mjs +15 -42
  455. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  456. package/components/input/slider/public_api.d.ts +0 -1
  457. package/components/input/slider/slider.component.d.ts +1 -1
  458. package/components/navigation/breadcrumb/breadcrumb.component.d.ts +1 -1
  459. package/components/navigation/breadcrumb/bundles/index.umd.js +40 -67
  460. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +23 -21
  461. package/components/navigation/breadcrumb/esm2022/public_api.mjs +1 -2
  462. package/components/navigation/breadcrumb/fesm2022/index.mjs +23 -50
  463. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  464. package/components/navigation/breadcrumb/public_api.d.ts +0 -1
  465. package/components/navigation/menu/bundles/index.umd.js +642 -696
  466. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
  467. package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +11 -9
  468. package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +24 -18
  469. package/components/navigation/menu/esm2022/menu.component.mjs +34 -31
  470. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +3 -2
  471. package/components/navigation/menu/esm2022/nav/nav.component.mjs +39 -29
  472. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +6 -3
  473. package/components/navigation/menu/esm2022/public_api.mjs +1 -2
  474. package/components/navigation/menu/fesm2022/index.mjs +534 -587
  475. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  476. package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +1 -1
  477. package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +1 -1
  478. package/components/navigation/menu/menu.component.d.ts +1 -1
  479. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +1 -1
  480. package/components/navigation/menu/nav/nav.component.d.ts +1 -1
  481. package/components/navigation/menu/nav/navigation-control.directive.d.ts +1 -1
  482. package/components/navigation/menu/public_api.d.ts +0 -1
  483. package/components/navigation/navbar/bundles/index.umd.js +20 -44
  484. package/components/navigation/navbar/esm2022/navbar.component.mjs +18 -16
  485. package/components/navigation/navbar/esm2022/public_api.mjs +1 -2
  486. package/components/navigation/navbar/fesm2022/index.mjs +18 -41
  487. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  488. package/components/navigation/navbar/navbar.component.d.ts +1 -1
  489. package/components/navigation/navbar/public_api.d.ts +0 -1
  490. package/components/navigation/popover/bundles/index.umd.js +12 -43
  491. package/components/navigation/popover/esm2022/popover.component.mjs +11 -9
  492. package/components/navigation/popover/esm2022/public_api.mjs +1 -2
  493. package/components/navigation/popover/fesm2022/index.mjs +11 -41
  494. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  495. package/components/navigation/popover/popover.component.d.ts +1 -1
  496. package/components/navigation/popover/public_api.d.ts +0 -1
  497. package/components/page/default/bundles/index.umd.js +96 -138
  498. package/components/page/default/content/content.component.d.ts +1 -1
  499. package/components/page/default/esm2022/content/content.component.mjs +7 -6
  500. package/components/page/default/esm2022/layout.directive.mjs +3 -2
  501. package/components/page/default/esm2022/page-content/page-content.component.mjs +7 -6
  502. package/components/page/default/esm2022/page-content/page-content.props.mjs +2 -3
  503. package/components/page/default/esm2022/page.directive.mjs +3 -2
  504. package/components/page/default/esm2022/public_api.mjs +1 -2
  505. package/components/page/default/esm2022/router-outlet.directive.mjs +3 -2
  506. package/components/page/default/esm2022/spa-page.directive.mjs +3 -2
  507. package/components/page/default/fesm2022/index.mjs +96 -138
  508. package/components/page/default/fesm2022/index.mjs.map +1 -1
  509. package/components/page/default/layout.directive.d.ts +1 -1
  510. package/components/page/default/page-content/page-content.component.d.ts +1 -1
  511. package/components/page/default/page.directive.d.ts +1 -1
  512. package/components/page/default/public_api.d.ts +0 -1
  513. package/components/page/default/router-outlet.directive.d.ts +1 -1
  514. package/components/page/default/spa-page.directive.d.ts +1 -1
  515. package/components/page/footer/bundles/index.umd.js +6 -29
  516. package/components/page/footer/esm2022/footer.directive.mjs +3 -2
  517. package/components/page/footer/esm2022/public_api.mjs +1 -2
  518. package/components/page/footer/fesm2022/index.mjs +5 -28
  519. package/components/page/footer/fesm2022/index.mjs.map +1 -1
  520. package/components/page/footer/footer.directive.d.ts +1 -1
  521. package/components/page/footer/public_api.d.ts +0 -1
  522. package/components/page/header/bundles/index.umd.js +9 -33
  523. package/components/page/header/esm2022/header.component.mjs +7 -6
  524. package/components/page/header/esm2022/public_api.mjs +1 -2
  525. package/components/page/header/fesm2022/index.mjs +8 -32
  526. package/components/page/header/fesm2022/index.mjs.map +1 -1
  527. package/components/page/header/header.component.d.ts +1 -1
  528. package/components/page/header/public_api.d.ts +0 -1
  529. package/components/page/left-panel/bundles/index.umd.js +6 -29
  530. package/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -2
  531. package/components/page/left-panel/esm2022/public_api.mjs +1 -2
  532. package/components/page/left-panel/fesm2022/index.mjs +5 -28
  533. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  534. package/components/page/left-panel/left-panel.directive.d.ts +1 -1
  535. package/components/page/left-panel/public_api.d.ts +0 -1
  536. package/components/page/right-panel/bundles/index.umd.js +6 -29
  537. package/components/page/right-panel/esm2022/public_api.mjs +1 -2
  538. package/components/page/right-panel/esm2022/right-panel.directive.mjs +3 -2
  539. package/components/page/right-panel/fesm2022/index.mjs +5 -28
  540. package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  541. package/components/page/right-panel/public_api.d.ts +0 -1
  542. package/components/page/right-panel/right-panel.directive.d.ts +1 -1
  543. package/components/page/top-nav/bundles/index.umd.js +6 -29
  544. package/components/page/top-nav/esm2022/public_api.mjs +1 -2
  545. package/components/page/top-nav/esm2022/top-nav.directive.mjs +3 -2
  546. package/components/page/top-nav/fesm2022/index.mjs +5 -28
  547. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  548. package/components/page/top-nav/public_api.d.ts +0 -1
  549. package/components/page/top-nav/top-nav.directive.d.ts +1 -1
  550. package/components/prefab/bundles/index.umd.js +8 -33
  551. package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
  552. package/components/prefab/esm2022/prefab.directive.mjs +3 -2
  553. package/components/prefab/esm2022/public_api.mjs +1 -2
  554. package/components/prefab/fesm2022/index.mjs +7 -32
  555. package/components/prefab/fesm2022/index.mjs.map +1 -1
  556. package/components/prefab/prefab-container/prefab-container.directive.d.ts +1 -1
  557. package/components/prefab/prefab.directive.d.ts +1 -1
  558. package/components/prefab/public_api.d.ts +0 -1
  559. package/core/bundles/index.umd.js +32 -85
  560. package/core/esm2022/public_api.mjs +2 -3
  561. package/core/esm2022/types/types.mjs +1 -1
  562. package/core/esm2022/utils/build-utils.mjs +9 -5
  563. package/core/esm2022/utils/utils.mjs +12 -40
  564. package/core/fesm2022/index.mjs +32 -81
  565. package/core/fesm2022/index.mjs.map +1 -1
  566. package/core/public_api.d.ts +1 -2
  567. package/core/types/types.d.ts +1 -0
  568. package/core/utils/utils.d.ts +1 -3
  569. package/http/bundles/index.umd.js +9 -34
  570. package/http/esm2022/http.service.mjs +6 -3
  571. package/http/esm2022/public_api.mjs +4 -2
  572. package/http/fesm2022/index.mjs +9 -34
  573. package/http/fesm2022/index.mjs.map +1 -1
  574. package/http/public_api.d.ts +3 -1
  575. package/npm-shrinkwrap.json +2 -2
  576. package/oAuth/bundles/index.umd.js +9 -42
  577. package/oAuth/esm2022/oAuth.utils.mjs +7 -23
  578. package/oAuth/esm2022/public_api.mjs +1 -2
  579. package/oAuth/fesm2022/index.mjs +8 -40
  580. package/oAuth/fesm2022/index.mjs.map +1 -1
  581. package/oAuth/public_api.d.ts +0 -1
  582. package/package-lock.json +2 -2
  583. package/package.json +1 -1
  584. package/runtime/base/bundles/index.umd.js +690 -596
  585. package/runtime/base/components/app-component/app.component.d.ts +1 -1
  586. package/runtime/base/components/app-spinner.component.d.ts +1 -1
  587. package/runtime/base/components/custom-toaster.component.d.ts +1 -1
  588. package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -1
  589. package/runtime/base/components/prefab-preview.component.d.ts +1 -1
  590. package/runtime/base/directives/accessroles.directive.d.ts +1 -1
  591. package/runtime/base/directives/prefab.directive.d.ts +1 -1
  592. package/runtime/base/esm2022/components/app-component/app.component.mjs +42 -49
  593. package/runtime/base/esm2022/components/app-spinner.component.mjs +29 -21
  594. package/runtime/base/esm2022/components/base-page.component.mjs +3 -11
  595. package/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -11
  596. package/runtime/base/esm2022/components/custom-toaster.component.mjs +20 -14
  597. package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
  598. package/runtime/base/esm2022/components/prefab-preview.component.mjs +8 -6
  599. package/runtime/base/esm2022/directives/accessroles.directive.mjs +3 -2
  600. package/runtime/base/esm2022/directives/prefab.directive.mjs +3 -2
  601. package/runtime/base/esm2022/public_api.mjs +1 -1
  602. package/runtime/base/esm2022/resolves/security-config.resolve.mjs +4 -6
  603. package/runtime/base/esm2022/runtime-base.module.mjs +486 -337
  604. package/runtime/base/esm2022/services/app.manager.service.mjs +31 -48
  605. package/runtime/base/esm2022/services/app.service.mjs +8 -1
  606. package/runtime/base/esm2022/services/i18n.service.mjs +39 -72
  607. package/runtime/base/fesm2022/index.mjs +697 -605
  608. package/runtime/base/fesm2022/index.mjs.map +1 -1
  609. package/runtime/base/runtime-base.module.d.ts +115 -84
  610. package/runtime/base/services/app.service.d.ts +1 -0
  611. package/runtime/base/services/i18n.service.d.ts +1 -1
  612. package/runtime/dynamic/app/app.config.d.ts +5 -0
  613. package/runtime/dynamic/app/components/page-wrapper.component.d.ts +1 -1
  614. package/runtime/dynamic/bundles/index.umd.js +270 -117
  615. package/runtime/dynamic/esm2022/app/app.config.mjs +136 -0
  616. package/runtime/dynamic/esm2022/app/app.module.mjs +151 -105
  617. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +7 -4
  618. package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +1 -1
  619. package/runtime/dynamic/esm2022/main.mjs +11 -16
  620. package/runtime/dynamic/fesm2022/index.mjs +340 -184
  621. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  622. package/security/bundles/index.umd.js +3 -34
  623. package/security/esm2022/public_api.mjs +1 -2
  624. package/security/esm2022/security.service.mjs +4 -15
  625. package/security/fesm2022/index.mjs +5 -32
  626. package/security/fesm2022/index.mjs.map +1 -1
  627. package/security/public_api.d.ts +0 -1
  628. package/transpiler/bundles/index.umd.js +271 -168
  629. package/transpiler/esm2022/build.mjs +1 -6
  630. package/transpiler/esm2022/imports.mjs +268 -161
  631. package/transpiler/fesm2022/index.mjs +267 -165
  632. package/transpiler/fesm2022/index.mjs.map +1 -1
  633. package/variables/bundles/index.umd.js +16 -197
  634. package/variables/constants/variables.constants.d.ts +0 -2
  635. package/variables/esm2022/constants/variables.constants.mjs +1 -3
  636. package/variables/esm2022/factory/variable-manager.factory.mjs +1 -3
  637. package/variables/esm2022/factory/variable.factory.mjs +1 -5
  638. package/variables/esm2022/manager/action/logout-action.manager.mjs +5 -7
  639. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +3 -3
  640. package/variables/esm2022/public_api.mjs +1 -5
  641. package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -11
  642. package/variables/esm2022/util/variable/service-variable.utils.mjs +1 -4
  643. package/variables/esm2022/util/variable/variables.utils.mjs +5 -19
  644. package/variables/fesm2022/index.mjs +16 -198
  645. package/variables/fesm2022/index.mjs.map +1 -1
  646. package/variables/public_api.d.ts +0 -4
  647. package/components/advanced/carousel/carousel.module.d.ts +0 -11
  648. package/components/advanced/carousel/esm2022/carousel.module.mjs +0 -36
  649. package/components/advanced/custom/custom-widget.module.d.ts +0 -10
  650. package/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  651. package/components/advanced/login/esm2022/login.module.mjs +0 -28
  652. package/components/advanced/login/login.module.d.ts +0 -9
  653. package/components/advanced/marquee/esm2022/marquee.module.mjs +0 -28
  654. package/components/advanced/marquee/marquee.module.d.ts +0 -9
  655. package/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -221
  656. package/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -22
  657. package/components/basic/default/basic.module.d.ts +0 -17
  658. package/components/basic/default/esm2022/basic.module.mjs +0 -60
  659. package/components/basic/progress/esm2022/progress.module.mjs +0 -36
  660. package/components/basic/progress/progress.module.d.ts +0 -11
  661. package/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -28
  662. package/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -9
  663. package/components/basic/search/esm2022/search.module.mjs +0 -45
  664. package/components/basic/search/search.module.d.ts +0 -12
  665. package/components/basic/tree/esm2022/tree.module.mjs +0 -28
  666. package/components/basic/tree/tree.module.d.ts +0 -9
  667. package/components/chart/chart.module.d.ts +0 -10
  668. package/components/chart/esm2022/chart.module.mjs +0 -32
  669. package/components/containers/accordion/accordion.module.d.ts +0 -10
  670. package/components/containers/accordion/esm2022/accordion.module.mjs +0 -32
  671. package/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -36
  672. package/components/containers/layout-grid/layout-grid.module.d.ts +0 -11
  673. package/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -32
  674. package/components/containers/linear-layout/linear-layout.module.d.ts +0 -10
  675. package/components/containers/panel/esm2022/panel.module.mjs +0 -36
  676. package/components/containers/panel/panel.module.d.ts +0 -11
  677. package/components/containers/tabs/esm2022/tabs.module.mjs +0 -32
  678. package/components/containers/tabs/tabs.module.d.ts +0 -10
  679. package/components/containers/tile/esm2022/tile.module.mjs +0 -28
  680. package/components/containers/tile/tile.module.d.ts +0 -9
  681. package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -140
  682. package/components/containers/wizard/esm2022/wizard.module.mjs +0 -40
  683. package/components/containers/wizard/wizard.module.d.ts +0 -12
  684. package/components/data/card/card.module.d.ts +0 -15
  685. package/components/data/card/esm2022/card.module.mjs +0 -52
  686. package/components/data/form/esm2022/form.module.mjs +0 -68
  687. package/components/data/form/form.module.d.ts +0 -19
  688. package/components/data/list/esm2022/list.module.mjs +0 -40
  689. package/components/data/list/list.module.d.ts +0 -11
  690. package/components/data/live-table/esm2022/live-table.module.mjs +0 -28
  691. package/components/data/live-table/live-table.module.d.ts +0 -9
  692. package/components/data/pagination/esm2022/pagination.module.mjs +0 -36
  693. package/components/data/pagination/pagination.module.d.ts +0 -11
  694. package/components/data/table/esm2022/table.module.mjs +0 -91
  695. package/components/data/table/table.module.d.ts +0 -24
  696. package/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -11
  697. package/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -36
  698. package/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -11
  699. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -36
  700. package/components/dialogs/default/dialog.module.d.ts +0 -12
  701. package/components/dialogs/default/esm2022/dialog.module.mjs +0 -40
  702. package/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -11
  703. package/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -36
  704. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -40
  705. package/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -12
  706. package/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -40
  707. package/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -12
  708. package/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -36
  709. package/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -11
  710. package/components/input/calendar/calendar.module.d.ts +0 -12
  711. package/components/input/calendar/esm2022/calendar.module.mjs +0 -40
  712. package/components/input/chips/chips.module.d.ts +0 -10
  713. package/components/input/chips/esm2022/chips.module.mjs +0 -32
  714. package/components/input/color-picker/color-picker.module.d.ts +0 -11
  715. package/components/input/color-picker/esm2022/color-picker.module.mjs +0 -36
  716. package/components/input/currency/currency.module.d.ts +0 -11
  717. package/components/input/currency/esm2022/currency.module.mjs +0 -36
  718. package/components/input/default/esm2022/input.module.mjs +0 -96
  719. package/components/input/default/input.module.d.ts +0 -26
  720. package/components/input/epoch/epoch.module.d.ts +0 -18
  721. package/components/input/epoch/esm2022/epoch.module.mjs +0 -70
  722. package/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
  723. package/components/input/file-upload/file-upload.module.d.ts +0 -9
  724. package/components/input/rating/esm2022/rating.module.mjs +0 -32
  725. package/components/input/rating/rating.module.d.ts +0 -10
  726. package/components/input/slider/esm2022/slider.module.mjs +0 -32
  727. package/components/input/slider/slider.module.d.ts +0 -10
  728. package/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -10
  729. package/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -32
  730. package/components/navigation/menu/esm2022/menu.module.mjs +0 -71
  731. package/components/navigation/menu/menu.module.d.ts +0 -17
  732. package/components/navigation/navbar/esm2022/navbar.module.mjs +0 -28
  733. package/components/navigation/navbar/navbar.module.d.ts +0 -9
  734. package/components/navigation/popover/esm2022/popover.module.mjs +0 -36
  735. package/components/navigation/popover/popover.module.d.ts +0 -11
  736. package/components/page/default/esm2022/page.module.mjs +0 -55
  737. package/components/page/default/page.module.d.ts +0 -14
  738. package/components/page/footer/esm2022/footer.module.mjs +0 -28
  739. package/components/page/footer/footer.module.d.ts +0 -9
  740. package/components/page/header/esm2022/header.module.mjs +0 -28
  741. package/components/page/header/header.module.d.ts +0 -9
  742. package/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
  743. package/components/page/left-panel/left-panel.module.d.ts +0 -9
  744. package/components/page/right-panel/esm2022/right-panel.module.mjs +0 -28
  745. package/components/page/right-panel/right-panel.module.d.ts +0 -9
  746. package/components/page/top-nav/esm2022/top-nav.module.mjs +0 -28
  747. package/components/page/top-nav/top-nav.module.d.ts +0 -9
  748. package/components/prefab/esm2022/prefab.module.mjs +0 -32
  749. package/components/prefab/prefab.module.d.ts +0 -10
  750. package/core/core.module.d.ts +0 -9
  751. package/core/esm2022/core.module.mjs +0 -27
  752. package/http/esm2022/http-service.module.mjs +0 -36
  753. package/http/http-service.module.d.ts +0 -14
  754. package/locales/fullcalendar/af.js +0 -27
  755. package/locales/fullcalendar/ar-dz.js +0 -28
  756. package/locales/fullcalendar/ar-kw.js +0 -28
  757. package/locales/fullcalendar/ar-ly.js +0 -28
  758. package/locales/fullcalendar/ar-ma.js +0 -28
  759. package/locales/fullcalendar/ar-sa.js +0 -28
  760. package/locales/fullcalendar/ar-tn.js +0 -28
  761. package/locales/fullcalendar/ar.js +0 -28
  762. package/locales/fullcalendar/az.js +0 -29
  763. package/locales/fullcalendar/bg.js +0 -28
  764. package/locales/fullcalendar/bs.js +0 -29
  765. package/locales/fullcalendar/ca.js +0 -27
  766. package/locales/fullcalendar/cs.js +0 -29
  767. package/locales/fullcalendar/da.js +0 -27
  768. package/locales/fullcalendar/de.js +0 -30
  769. package/locales/fullcalendar/el.js +0 -27
  770. package/locales/fullcalendar/en-au.js +0 -14
  771. package/locales/fullcalendar/en-gb.js +0 -14
  772. package/locales/fullcalendar/en-nz.js +0 -14
  773. package/locales/fullcalendar/es-us.js +0 -27
  774. package/locales/fullcalendar/es.js +0 -27
  775. package/locales/fullcalendar/et.js +0 -29
  776. package/locales/fullcalendar/eu.js +0 -27
  777. package/locales/fullcalendar/fa.js +0 -30
  778. package/locales/fullcalendar/fi.js +0 -27
  779. package/locales/fullcalendar/fr-ca.js +0 -24
  780. package/locales/fullcalendar/fr-ch.js +0 -28
  781. package/locales/fullcalendar/fr.js +0 -28
  782. package/locales/fullcalendar/gl.js +0 -27
  783. package/locales/fullcalendar/he.js +0 -24
  784. package/locales/fullcalendar/hi.js +0 -29
  785. package/locales/fullcalendar/hr.js +0 -29
  786. package/locales/fullcalendar/hu.js +0 -27
  787. package/locales/fullcalendar/id.js +0 -27
  788. package/locales/fullcalendar/is.js +0 -27
  789. package/locales/fullcalendar/it.js +0 -29
  790. package/locales/fullcalendar/ja.js +0 -25
  791. package/locales/fullcalendar/ka.js +0 -29
  792. package/locales/fullcalendar/kk.js +0 -29
  793. package/locales/fullcalendar/ko.js +0 -23
  794. package/locales/fullcalendar/lb.js +0 -27
  795. package/locales/fullcalendar/lt.js +0 -27
  796. package/locales/fullcalendar/lv.js +0 -29
  797. package/locales/fullcalendar/mk.js +0 -25
  798. package/locales/fullcalendar/ms.js +0 -29
  799. package/locales/fullcalendar/nb.js +0 -27
  800. package/locales/fullcalendar/ne.js +0 -27
  801. package/locales/fullcalendar/nl.js +0 -27
  802. package/locales/fullcalendar/nn.js +0 -27
  803. package/locales/fullcalendar/pl.js +0 -27
  804. package/locales/fullcalendar/pt-br.js +0 -25
  805. package/locales/fullcalendar/pt.js +0 -27
  806. package/locales/fullcalendar/ro.js +0 -29
  807. package/locales/fullcalendar/ru.js +0 -29
  808. package/locales/fullcalendar/sk.js +0 -29
  809. package/locales/fullcalendar/sl.js +0 -27
  810. package/locales/fullcalendar/sq.js +0 -29
  811. package/locales/fullcalendar/sr-cyrl.js +0 -29
  812. package/locales/fullcalendar/sr.js +0 -29
  813. package/locales/fullcalendar/sv.js +0 -27
  814. package/locales/fullcalendar/th.js +0 -30
  815. package/locales/fullcalendar/tr.js +0 -27
  816. package/locales/fullcalendar/ug.js +0 -17
  817. package/locales/fullcalendar/uk.js +0 -29
  818. package/locales/fullcalendar/uz.js +0 -21
  819. package/locales/fullcalendar/vi.js +0 -29
  820. package/locales/fullcalendar/zh-cn.js +0 -30
  821. package/locales/fullcalendar/zh-tw.js +0 -23
  822. package/mobile/components/basic/default/.npmignore +0 -2
  823. package/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -8
  824. package/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -26
  825. package/mobile/components/basic/default/basic.module.d.ts +0 -15
  826. package/mobile/components/basic/default/bundles/index.umd.js +0 -980
  827. package/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -44
  828. package/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -116
  829. package/mobile/components/basic/default/esm2022/basic.module.mjs +0 -52
  830. package/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -236
  831. package/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -85
  832. package/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -61
  833. package/mobile/components/basic/default/esm2022/index.mjs +0 -5
  834. package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -183
  835. package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -5
  836. package/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -47
  837. package/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -175
  838. package/mobile/components/basic/default/esm2022/public_api.mjs +0 -10
  839. package/mobile/components/basic/default/fesm2022/index.mjs +0 -958
  840. package/mobile/components/basic/default/fesm2022/index.mjs.map +0 -1
  841. package/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -39
  842. package/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -27
  843. package/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -18
  844. package/mobile/components/basic/default/index.d.ts +0 -5
  845. package/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -28
  846. package/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -1
  847. package/mobile/components/basic/default/package.json +0 -23
  848. package/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -36
  849. package/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -33
  850. package/mobile/components/basic/default/public_api.d.ts +0 -9
  851. package/mobile/components/basic/search/.npmignore +0 -2
  852. package/mobile/components/basic/search/bundles/index.umd.js +0 -66
  853. package/mobile/components/basic/search/esm2022/index.mjs +0 -5
  854. package/mobile/components/basic/search/esm2022/public_api.mjs +0 -3
  855. package/mobile/components/basic/search/esm2022/search.directive.mjs +0 -17
  856. package/mobile/components/basic/search/esm2022/search.module.mjs +0 -28
  857. package/mobile/components/basic/search/fesm2022/index.mjs +0 -49
  858. package/mobile/components/basic/search/fesm2022/index.mjs.map +0 -1
  859. package/mobile/components/basic/search/index.d.ts +0 -5
  860. package/mobile/components/basic/search/package.json +0 -23
  861. package/mobile/components/basic/search/public_api.d.ts +0 -2
  862. package/mobile/components/basic/search/search.directive.d.ts +0 -7
  863. package/mobile/components/basic/search/search.module.d.ts +0 -9
  864. package/mobile/components/containers/segmented-control/.npmignore +0 -2
  865. package/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -281
  866. package/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -5
  867. package/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -4
  868. package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -70
  869. package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -14
  870. package/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -147
  871. package/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -32
  872. package/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -9
  873. package/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -264
  874. package/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -1
  875. package/mobile/components/containers/segmented-control/index.d.ts +0 -5
  876. package/mobile/components/containers/segmented-control/package.json +0 -23
  877. package/mobile/components/containers/segmented-control/public_api.d.ts +0 -3
  878. package/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -18
  879. package/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -1
  880. package/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -20
  881. package/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -10
  882. package/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -1
  883. package/mobile/components/data/media-list/.npmignore +0 -2
  884. package/mobile/components/data/media-list/bundles/index.umd.js +0 -310
  885. package/mobile/components/data/media-list/esm2022/index.mjs +0 -5
  886. package/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -24
  887. package/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -213
  888. package/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -48
  889. package/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -16
  890. package/mobile/components/data/media-list/esm2022/public_api.mjs +0 -4
  891. package/mobile/components/data/media-list/fesm2022/index.mjs +0 -297
  892. package/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -1
  893. package/mobile/components/data/media-list/index.d.ts +0 -5
  894. package/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -8
  895. package/mobile/components/data/media-list/media-list.component.d.ts +0 -33
  896. package/mobile/components/data/media-list/media-list.module.d.ts +0 -14
  897. package/mobile/components/data/media-list/media-list.props.d.ts +0 -1
  898. package/mobile/components/data/media-list/package.json +0 -23
  899. package/mobile/components/data/media-list/public_api.d.ts +0 -3
  900. package/mobile/components/device/barcode-scanner/.npmignore +0 -2
  901. package/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -18
  902. package/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -9
  903. package/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -1
  904. package/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -129
  905. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -69
  906. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -28
  907. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -15
  908. package/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -5
  909. package/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -3
  910. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -112
  911. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -1
  912. package/mobile/components/device/barcode-scanner/index.d.ts +0 -5
  913. package/mobile/components/device/barcode-scanner/package.json +0 -23
  914. package/mobile/components/device/barcode-scanner/public_api.d.ts +0 -2
  915. package/mobile/components/device/camera/.npmignore +0 -2
  916. package/mobile/components/device/camera/bundles/index.umd.js +0 -170
  917. package/mobile/components/device/camera/camera.component.d.ts +0 -37
  918. package/mobile/components/device/camera/camera.module.d.ts +0 -9
  919. package/mobile/components/device/camera/camera.props.d.ts +0 -1
  920. package/mobile/components/device/camera/esm2022/camera.component.mjs +0 -101
  921. package/mobile/components/device/camera/esm2022/camera.module.mjs +0 -28
  922. package/mobile/components/device/camera/esm2022/camera.props.mjs +0 -25
  923. package/mobile/components/device/camera/esm2022/index.mjs +0 -5
  924. package/mobile/components/device/camera/esm2022/public_api.mjs +0 -3
  925. package/mobile/components/device/camera/fesm2022/index.mjs +0 -153
  926. package/mobile/components/device/camera/fesm2022/index.mjs.map +0 -1
  927. package/mobile/components/device/camera/index.d.ts +0 -5
  928. package/mobile/components/device/camera/package.json +0 -23
  929. package/mobile/components/device/camera/public_api.d.ts +0 -2
  930. package/mobile/components/input/file-upload/.npmignore +0 -2
  931. package/mobile/components/input/file-upload/bundles/index.umd.js +0 -88
  932. package/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -41
  933. package/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
  934. package/mobile/components/input/file-upload/esm2022/index.mjs +0 -5
  935. package/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -3
  936. package/mobile/components/input/file-upload/fesm2022/index.mjs +0 -71
  937. package/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -1
  938. package/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -11
  939. package/mobile/components/input/file-upload/file-upload.module.d.ts +0 -9
  940. package/mobile/components/input/file-upload/index.d.ts +0 -5
  941. package/mobile/components/input/file-upload/package.json +0 -23
  942. package/mobile/components/input/file-upload/public_api.d.ts +0 -2
  943. package/mobile/components/page/default/.npmignore +0 -2
  944. package/mobile/components/page/default/bundles/index.umd.js +0 -127
  945. package/mobile/components/page/default/esm2022/index.mjs +0 -5
  946. package/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -24
  947. package/mobile/components/page/default/esm2022/page.directive.mjs +0 -58
  948. package/mobile/components/page/default/esm2022/page.module.mjs +0 -32
  949. package/mobile/components/page/default/esm2022/public_api.mjs +0 -4
  950. package/mobile/components/page/default/fesm2022/index.mjs +0 -110
  951. package/mobile/components/page/default/fesm2022/index.mjs.map +0 -1
  952. package/mobile/components/page/default/index.d.ts +0 -5
  953. package/mobile/components/page/default/package.json +0 -23
  954. package/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -7
  955. package/mobile/components/page/default/page.directive.d.ts +0 -19
  956. package/mobile/components/page/default/page.module.d.ts +0 -10
  957. package/mobile/components/page/default/public_api.d.ts +0 -3
  958. package/mobile/components/page/left-panel/.npmignore +0 -2
  959. package/mobile/components/page/left-panel/bundles/index.umd.js +0 -91
  960. package/mobile/components/page/left-panel/esm2022/index.mjs +0 -5
  961. package/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -45
  962. package/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
  963. package/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -3
  964. package/mobile/components/page/left-panel/fesm2022/index.mjs +0 -74
  965. package/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -1
  966. package/mobile/components/page/left-panel/index.d.ts +0 -5
  967. package/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -16
  968. package/mobile/components/page/left-panel/left-panel.module.d.ts +0 -9
  969. package/mobile/components/page/left-panel/package.json +0 -23
  970. package/mobile/components/page/left-panel/public_api.d.ts +0 -2
  971. package/mobile/components/page/mobile-navbar/.npmignore +0 -2
  972. package/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -332
  973. package/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -5
  974. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -247
  975. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -32
  976. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -41
  977. package/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -3
  978. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -317
  979. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -1
  980. package/mobile/components/page/mobile-navbar/index.d.ts +0 -5
  981. package/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -50
  982. package/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -10
  983. package/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -2
  984. package/mobile/components/page/mobile-navbar/package.json +0 -23
  985. package/mobile/components/page/mobile-navbar/public_api.d.ts +0 -2
  986. package/mobile/components/page/tab-bar/.npmignore +0 -2
  987. package/mobile/components/page/tab-bar/bundles/index.umd.js +0 -279
  988. package/mobile/components/page/tab-bar/esm2022/index.mjs +0 -5
  989. package/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -3
  990. package/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -28
  991. package/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -219
  992. package/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -15
  993. package/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -262
  994. package/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -1
  995. package/mobile/components/page/tab-bar/index.d.ts +0 -5
  996. package/mobile/components/page/tab-bar/package.json +0 -23
  997. package/mobile/components/page/tab-bar/public_api.d.ts +0 -2
  998. package/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -9
  999. package/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -40
  1000. package/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -1
  1001. package/mobile/core/.npmignore +0 -2
  1002. package/mobile/core/bundles/index.umd.js +0 -1658
  1003. package/mobile/core/core.module.d.ts +0 -15
  1004. package/mobile/core/esm2022/core.module.mjs +0 -79
  1005. package/mobile/core/esm2022/index.mjs +0 -5
  1006. package/mobile/core/esm2022/native.xhr.mjs +0 -340
  1007. package/mobile/core/esm2022/public_api.mjs +0 -12
  1008. package/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -92
  1009. package/mobile/core/esm2022/services/device-file-download.service.mjs +0 -154
  1010. package/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -112
  1011. package/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -91
  1012. package/mobile/core/esm2022/services/device-file.service.mjs +0 -237
  1013. package/mobile/core/esm2022/services/device-start-up-service.mjs +0 -2
  1014. package/mobile/core/esm2022/services/device.service.mjs +0 -150
  1015. package/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -114
  1016. package/mobile/core/esm2022/services/network.service.mjs +0 -358
  1017. package/mobile/core/fesm2022/index.mjs +0 -1660
  1018. package/mobile/core/fesm2022/index.mjs.map +0 -1
  1019. package/mobile/core/index.d.ts +0 -5
  1020. package/mobile/core/native.xhr.d.ts +0 -36
  1021. package/mobile/core/package.json +0 -28
  1022. package/mobile/core/public_api.d.ts +0 -11
  1023. package/mobile/core/services/device-file-cache.service.d.ts +0 -24
  1024. package/mobile/core/services/device-file-download.service.d.ts +0 -36
  1025. package/mobile/core/services/device-file-opener.service.d.ts +0 -25
  1026. package/mobile/core/services/device-file-upload.service.d.ts +0 -27
  1027. package/mobile/core/services/device-file.service.d.ts +0 -45
  1028. package/mobile/core/services/device-start-up-service.d.ts +0 -4
  1029. package/mobile/core/services/device.service.d.ts +0 -52
  1030. package/mobile/core/services/ext-app-message.service.d.ts +0 -24
  1031. package/mobile/core/services/network.service.d.ts +0 -118
  1032. package/mobile/offline/.npmignore +0 -2
  1033. package/mobile/offline/bundles/index.umd.js +0 -3512
  1034. package/mobile/offline/esm2022/index.mjs +0 -5
  1035. package/mobile/offline/esm2022/models/config.mjs +0 -64
  1036. package/mobile/offline/esm2022/models/local-db-store.mjs +0 -412
  1037. package/mobile/offline/esm2022/offline.module.mjs +0 -100
  1038. package/mobile/offline/esm2022/public_api.mjs +0 -7
  1039. package/mobile/offline/esm2022/services/change-log.service.mjs +0 -332
  1040. package/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -525
  1041. package/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -855
  1042. package/mobile/offline/esm2022/services/local-db.service.mjs +0 -193
  1043. package/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -87
  1044. package/mobile/offline/esm2022/services/push.service.mjs +0 -49
  1045. package/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -115
  1046. package/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -162
  1047. package/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -154
  1048. package/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -63
  1049. package/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -59
  1050. package/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -232
  1051. package/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -82
  1052. package/mobile/offline/esm2022/utils/security.utils.mjs +0 -119
  1053. package/mobile/offline/esm2022/utils/utils.mjs +0 -8
  1054. package/mobile/offline/fesm2022/index.mjs +0 -3529
  1055. package/mobile/offline/fesm2022/index.mjs.map +0 -1
  1056. package/mobile/offline/index.d.ts +0 -5
  1057. package/mobile/offline/models/config.d.ts +0 -80
  1058. package/mobile/offline/models/local-db-store.d.ts +0 -119
  1059. package/mobile/offline/offline.module.d.ts +0 -17
  1060. package/mobile/offline/package.json +0 -28
  1061. package/mobile/offline/public_api.d.ts +0 -6
  1062. package/mobile/offline/services/change-log.service.d.ts +0 -112
  1063. package/mobile/offline/services/local-db-data-pull.service.d.ts +0 -139
  1064. package/mobile/offline/services/local-db-management.service.d.ts +0 -179
  1065. package/mobile/offline/services/local-db.service.d.ts +0 -83
  1066. package/mobile/offline/services/local-key-value.service.d.ts +0 -38
  1067. package/mobile/offline/services/push.service.d.ts +0 -11
  1068. package/mobile/offline/services/workers/error-blocker.d.ts +0 -26
  1069. package/mobile/offline/services/workers/file-handler.d.ts +0 -56
  1070. package/mobile/offline/services/workers/id-resolver.d.ts +0 -26
  1071. package/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -11
  1072. package/mobile/offline/utils/file-upload.utils.d.ts +0 -14
  1073. package/mobile/offline/utils/live-variable.utils.d.ts +0 -24
  1074. package/mobile/offline/utils/query-executor.utils.d.ts +0 -15
  1075. package/mobile/offline/utils/security.utils.d.ts +0 -19
  1076. package/mobile/offline/utils/utils.d.ts +0 -2
  1077. package/mobile/placeholder/runtime/.npmignore +0 -2
  1078. package/mobile/placeholder/runtime/bundles/index.umd.js +0 -70
  1079. package/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -5
  1080. package/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -19
  1081. package/mobile/placeholder/runtime/esm2022/index.mjs +0 -5
  1082. package/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -27
  1083. package/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -3
  1084. package/mobile/placeholder/runtime/fesm2022/index.mjs +0 -50
  1085. package/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -1
  1086. package/mobile/placeholder/runtime/index.d.ts +0 -5
  1087. package/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -9
  1088. package/mobile/placeholder/runtime/package.json +0 -27
  1089. package/mobile/placeholder/runtime/public_api.d.ts +0 -2
  1090. package/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
  1091. package/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -40
  1092. package/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -5
  1093. package/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -13
  1094. package/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -2
  1095. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -20
  1096. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -1
  1097. package/mobile/placeholder/runtime-dynamic/index.d.ts +0 -5
  1098. package/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -7
  1099. package/mobile/placeholder/runtime-dynamic/package.json +0 -23
  1100. package/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -1
  1101. package/mobile/runtime/.npmignore +0 -2
  1102. package/mobile/runtime/bundles/index.umd.js +0 -732
  1103. package/mobile/runtime/components/app-ext.component.d.ts +0 -14
  1104. package/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -59
  1105. package/mobile/runtime/esm2022/index.mjs +0 -5
  1106. package/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -351
  1107. package/mobile/runtime/esm2022/public_api.mjs +0 -6
  1108. package/mobile/runtime/esm2022/services/cookie.service.mjs +0 -135
  1109. package/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -147
  1110. package/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -76
  1111. package/mobile/runtime/fesm2022/index.mjs +0 -742
  1112. package/mobile/runtime/fesm2022/index.mjs.map +0 -1
  1113. package/mobile/runtime/index.d.ts +0 -5
  1114. package/mobile/runtime/mobile-runtime.module.d.ts +0 -51
  1115. package/mobile/runtime/package.json +0 -28
  1116. package/mobile/runtime/public_api.d.ts +0 -5
  1117. package/mobile/runtime/services/cookie.service.d.ts +0 -31
  1118. package/mobile/runtime/services/http-interceptor.service.d.ts +0 -19
  1119. package/mobile/runtime/services/webprocess.service.d.ts +0 -15
  1120. package/mobile/runtime-dynamic/.npmignore +0 -2
  1121. package/mobile/runtime-dynamic/bundles/index.umd.js +0 -461
  1122. package/mobile/runtime-dynamic/esm2022/index.mjs +0 -5
  1123. package/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -48
  1124. package/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -2
  1125. package/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -404
  1126. package/mobile/runtime-dynamic/fesm2022/index.mjs +0 -454
  1127. package/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -1
  1128. package/mobile/runtime-dynamic/index.d.ts +0 -5
  1129. package/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -8
  1130. package/mobile/runtime-dynamic/package.json +0 -23
  1131. package/mobile/runtime-dynamic/public_api.d.ts +0 -1
  1132. package/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -38
  1133. package/mobile/variables/.npmignore +0 -2
  1134. package/mobile/variables/bundles/index.umd.js +0 -1166
  1135. package/mobile/variables/esm2022/index.mjs +0 -5
  1136. package/mobile/variables/esm2022/public_api.mjs +0 -10
  1137. package/mobile/variables/esm2022/services/calendar-service.mjs +0 -77
  1138. package/mobile/variables/esm2022/services/camera-service.mjs +0 -70
  1139. package/mobile/variables/esm2022/services/contacts-service.mjs +0 -74
  1140. package/mobile/variables/esm2022/services/datasync-service.mjs +0 -363
  1141. package/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -161
  1142. package/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -200
  1143. package/mobile/variables/esm2022/services/file-service.mjs +0 -87
  1144. package/mobile/variables/esm2022/services/scan-service.mjs +0 -60
  1145. package/mobile/variables/esm2022/variables.module.mjs +0 -78
  1146. package/mobile/variables/fesm2022/index.mjs +0 -1143
  1147. package/mobile/variables/fesm2022/index.mjs.map +0 -1
  1148. package/mobile/variables/index.d.ts +0 -5
  1149. package/mobile/variables/package.json +0 -28
  1150. package/mobile/variables/public_api.d.ts +0 -9
  1151. package/mobile/variables/services/calendar-service.d.ts +0 -10
  1152. package/mobile/variables/services/camera-service.d.ts +0 -8
  1153. package/mobile/variables/services/contacts-service.d.ts +0 -6
  1154. package/mobile/variables/services/datasync-service.d.ts +0 -11
  1155. package/mobile/variables/services/device-service/device-service.d.ts +0 -17
  1156. package/mobile/variables/services/device-service/location-service.d.ts +0 -63
  1157. package/mobile/variables/services/file-service.d.ts +0 -7
  1158. package/mobile/variables/services/scan-service.d.ts +0 -7
  1159. package/mobile/variables/variables.module.d.ts +0 -25
  1160. package/oAuth/esm2022/oAuth.module.mjs +0 -19
  1161. package/oAuth/oAuth.module.d.ts +0 -8
  1162. package/scripts/fullcalendar/main.min.js +0 -6
  1163. package/security/esm2022/security.module.mjs +0 -19
  1164. package/security/security.module.d.ts +0 -8
  1165. package/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -48
  1166. package/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -2
  1167. package/variables/esm2022/manager/variable/device-variable-service.mjs +0 -45
  1168. package/variables/esm2022/model/variable/device-variable.mjs +0 -19
  1169. package/variables/esm2022/variables.module.mjs +0 -52
  1170. package/variables/manager/variable/device-variable-manager.d.ts +0 -26
  1171. package/variables/manager/variable/device-variable-operation.d.ts +0 -37
  1172. package/variables/manager/variable/device-variable-service.d.ts +0 -6
  1173. package/variables/model/variable/device-variable.d.ts +0 -6
  1174. package/variables/variables.module.d.ts +0 -16
@@ -610,13 +610,14 @@ export class TableColumnDirective extends BaseComponent {
610
610
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._filterInstances = _t);
611
611
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._inlineInstances = _t);
612
612
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._inlineInstancesNew = _t);
613
- } }, features: [i0.ɵɵProvidersFeature([
613
+ } }, standalone: true, features: [i0.ɵɵProvidersFeature([
614
614
  provideAsWidgetRef(TableColumnDirective)
615
615
  ]), i0.ɵɵInheritDefinitionFeature] }); }
616
616
  }
617
617
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableColumnDirective, [{
618
618
  type: Directive,
619
619
  args: [{
620
+ standalone: true,
620
621
  selector: '[wmTableColumn]',
621
622
  providers: [
622
623
  provideAsWidgetRef(TableColumnDirective)
@@ -656,4 +657,4 @@ export class TableColumnDirective extends BaseComponent {
656
657
  type: ContentChild,
657
658
  args: ['filterTmpl']
658
659
  }] }); })();
659
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxRQUFRLEVBRVIsUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUVSLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLFNBQVMsRUFDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMVYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUs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QUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1lBQ3pCLGNBQWM7a0JBQTdDLFlBQVk7bUJBQUMsZ0JBQWdCO1lBQ0ksa0JBQWtCO2tCQUFuRCxZQUFZO21CQUFDLGtCQUFrQjtZQWtGSixpQkFBaUI7a0JBQTVDLFlBQVk7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBEYXRhU291cmNlLFxuICAgIERhdGFUeXBlLFxuICAgIGRlYm91bmNlLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldERpc3BsYXlEYXRlVGltZUZvcm1hdCxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBpc0RlZmluZWRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlGaWx0ZXJPbkZpZWxkLCBCYXNlRmllbGRWYWxpZGF0aW9ucywgRURJVF9NT0RFLCBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsIGdldERhdGFUYWJsZUZpbHRlcldpZGdldCwgZ2V0RGVmYXVsdFZhbHVlLCBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcywgZ2V0RGlzdGluY3RWYWx1ZXMsIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsIGdldEVkaXRNb2RlV2lkZ2V0LCBnZXRXYXRjaElkZW50aWZpZXIsIGlzRGF0YVNldFdpZGdldCwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGFibGUtY29sdW1uLnByb3BzJztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW1uR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuLi90YWJsZS1jb2x1bW4tZ3JvdXAvdGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Nsb25lRGVlcCwgZm9yRWFjaCwgaGVhZCwgaW5jbHVkZXMsIGxhc3QsIG1hcCwgbWF4LCBtZWFuLCBtaW4sIHJvdW5kLCBzcGxpdCwgc3VtfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXRhYmxlLWNvbHVtbicsIGhvc3RDbGFzczogJyd9O1xuXG5sZXQgaW5saW5lV2lkZ2V0UHJvcHMgPSBbJ2RhdGFmaWVsZCcsICdkaXNwbGF5ZmllbGQnLCAncGxhY2Vob2xkZXInLCAnc2VhcmNoa2V5JywgJ21hdGNobW9kZScsICdkaXNwbGF5bGFiZWwnLCAnZ3JvdXBieScsICdtYXRjaCcsICdkYXRlZm9ybWF0JywgJ3Nob3djb3VudCcsICdjb2xsYXBzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrZWR2YWx1ZScsICd1bmNoZWNrZWR2YWx1ZScsICdzaG93ZHJvcGRvd25vbicsICdkYXRhZW50cnltb2RlJywgJ2F1dG9jbG9zZScsICdkYXRhc2V0JywgJ291dHB1dGZvcm1hdCddO1xuY29uc3QgdmFsaWRhdGlvblByb3BzID0gWydtYXhjaGFycycsICdyZWdleHAnLCAnbWludmFsdWUnLCAnbWF4dmFsdWUnLCAnc3RlcCcsICdyZXF1aXJlZCcsICdtaW5kYXRlJywgJ21heGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNsdWRlZGF0ZXMnLCAnZXhjbHVkZWRheXMnLCAnbWludGltZScsICdtYXh0aW1lJ107XG5pbmxpbmVXaWRnZXRQcm9wcyA9IFsuLi5pbmxpbmVXaWRnZXRQcm9wcywgLi4udmFsaWRhdGlvblByb3BzXTtcblxuY2xhc3MgRmllbGREZWYge1xuICAgIHdpZGdldDtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldCkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgdGhpcy53aWRnZXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBzZXRQcm9wZXJ0eShwcm9wLCBuZXd2YWwpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBzY29wZSBvZiB0aGUgY3VycmVudCBlZGl0YWJsZSB3aWRnZXQgYW5kIHNldCB0aGUgdmFsdWVcbiAgICAgICAgcHJvcCA9IHByb3AgPT09ICd2YWx1ZScgPyAnZGF0YXZhbHVlJyA6IHByb3A7XG4gICAgICAgIHRoaXMud2lkZ2V0W3Byb3BdID0gbmV3dmFsO1xuICAgIH1cblxuICAgIGdldFByb3BlcnR5KHByb3ApIHtcbiAgICAgICAgcHJvcCA9IHByb3AgPT09ICd2YWx1ZScgPyAnZGF0YXZhbHVlJyA6IHByb3A7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFtwcm9wXTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3dtVGFibGVDb2x1bW5dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRhYmxlQ29sdW1uRGlyZWN0aXZlKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5EaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbignZmlsdGVyV2lkZ2V0JywgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfZmlsdGVySW5zdGFuY2VzO1xuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2lubGluZVdpZGdldCcsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgX2lubGluZUluc3RhbmNlcztcbiAgICBAQ29udGVudENoaWxkcmVuKCdpbmxpbmVXaWRnZXROZXcnLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9pbmxpbmVJbnN0YW5jZXNOZXc7XG4gICAgQENvbnRlbnRDaGlsZCgnY3VzdG9tRXhwclRtcGwnKSBjdXN0b21FeHByVG1wbDtcbiAgICBAQ29udGVudENoaWxkKCdpbmxpbmVXaWRnZXRUbXBsJykgaW5saW5lV2lkdGhUZW1wUmVmO1xuXG4gICAgcHJpdmF0ZSBfcHJvcHNJbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9maWx0ZXJEYXRhU2V0O1xuICAgIHByaXZhdGUgX2lzUm93RmlsdGVyO1xuICAgIHByaXZhdGUgX2lzSW5saW5lRWRpdGFibGU7XG4gICAgcHJpdmF0ZSBfaXNOZXdFZGl0YWJsZVJvdztcblxuICAgIGtleTtcbiAgICBmaWx0ZXJJbnN0YW5jZTtcbiAgICBpbmxpbmVJbnN0YW5jZTtcbiAgICBpbmxpbmVJbnN0YW5jZU5ldztcblxuICAgIGJhY2tncm91bmRjb2xvcjtcbiAgICBiaW5kaW5nO1xuICAgIGNhcHRpb247XG4gICAgZGF0YXNldDtcbiAgICBkZWZhdWx0dmFsdWU7XG4gICAgZWRpdFdpZGdldFR5cGU7XG4gICAgZmlsdGVyd2lkZ2V0O1xuICAgIGZpZWxkO1xuICAgIGZvcm1hdHBhdHRlcm47XG4gICAgY3VzdG9tcGlwZWZvcm1hdDtcbiAgICBnZW5lcmF0b3I7XG4gICAgbGltaXQ7XG4gICAgbW9iaWxlZGlzcGxheTtcbiAgICBwY2Rpc3BsYXk7XG4gICAgdGFibGV0ZGlzcGxheTtcbiAgICByZWFkb25seTtcbiAgICByZXF1aXJlZDtcbiAgICBtYXhjaGFycztcbiAgICBtaW52YWx1ZTtcbiAgICBtYXh2YWx1ZTtcbiAgICByZWdleHA7XG4gICAgc2VhcmNoYWJsZTtcbiAgICBzaG93aW5maWx0ZXI7XG4gICAgc2hvdztcbiAgICBzb3J0YWJsZTtcbiAgICBjYXNlaW5zZW5zaXRpdmU7XG4gICAgdGV4dGFsaWdubWVudDtcbiAgICB0ZXh0Y29sb3I7XG4gICAgdHlwZTtcbiAgICB3aWR0aDtcbiAgICBkYXRlcGF0dGVybjtcbiAgICBlZGl0ZGF0ZXBhdHRlcm47XG4gICAgZmlsdGVyZGF0YWZpZWxkO1xuICAgIGZpbHRlcmRpc3BsYXlmaWVsZDtcbiAgICBmaWx0ZXJkaXNwbGF5bGFiZWw7XG4gICAgZmlsdGVyc2VhcmNoa2V5O1xuICAgIGZpbHRlcnBsYWNlaG9sZGVyO1xuICAgIGRhdGFmaWVsZDtcbiAgICBkaXNwbGF5ZmllbGQ7XG4gICAgZGlzcGxheU5hbWU7XG4gICAgcGNEaXNwbGF5O1xuICAgIG1vYmlsZURpc3BsYXk7XG4gICAgdGFibGV0RGlzcGxheTtcbiAgICB0ZXh0QWxpZ25tZW50O1xuICAgIGJhY2tncm91bmRDb2xvcjtcbiAgICB0ZXh0Q29sb3I7XG4gICAgcHJpbWFyeUtleTtcbiAgICByZWxhdGVkRW50aXR5TmFtZTtcbiAgICBzdHlsZTtcbiAgICBjbGFzcztcbiAgICBuZ2NsYXNzO1xuICAgIGZpbHRlck9uO1xuICAgIGZpbHRlckNvbnRyb2w7XG4gICAgaXNEYXRhU2V0Qm91bmQ7XG4gICAgaXNGaWx0ZXJEYXRhU2V0Qm91bmQ7XG4gICAgc2hvd1BlbmRpbmdTcGlubmVyO1xuICAgIHNob3dQZW5kaW5nU3Bpbm5lck5ldztcbiAgICB2YWxpZGF0aW9ubWVzc2FnZTtcbiAgICBhY3RpdmVDb250cm9sVHlwZTtcbiAgICBwcml2YXRlIF9kYXRhb3B0aW9uczogYW55O1xuICAgIHByaXZhdGUgX2RhdGFzb3VyY2U6IGFueTtcbiAgICBwcml2YXRlIG5vdGlmeUZvckZpZWxkczogYW55O1xuICAgIHByaXZhdGUgZmllbGRWYWxpZGF0aW9ucztcbiAgICBwcml2YXRlIGZpZWxkVmFsaWRhdGlvbnNfbmV3O1xuXG4gICAgcHJpdmF0ZSBzeW5jVmFsaWRhdG9ycyA9IFtdO1xuICAgIHByaXZhdGUgYXN5bmNWYWxpZGF0b3JzID0gW107XG4gICAgcHJpdmF0ZSBvYnNlcnZlT25GaWVsZHMgPSBbXTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2ZpbHRlclRtcGwnKSBmaWx0ZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIHRhYmxlOiBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGdyb3VwOiBUYWJsZUNvbHVtbkdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBAQXR0cmlidXRlKCdmaWx0ZXJkYXRhc2V0LmJpbmQnKSBwdWJsaWMgYmluZGZpbHRlcmRhdGFzZXQsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2RhdGFzZXQuYmluZCcpIHB1YmxpYyBiaW5kZGF0YXNldCxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICB0aGlzLm5vdGlmeUZvckZpZWxkcyA9IFtdO1xuICAgIH1cblxuICAgIGdldCBkYXRhb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFvcHRpb25zO1xuICAgIH1cblxuICAgIHNldCBkYXRhb3B0aW9ucyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX2RhdGFvcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgZGF0YXNvdXJjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFzb3VyY2U7XG4gICAgfVxuXG4gICAgc2V0IGRhdGFzb3VyY2UoZHMpIHtcbiAgICAgICAgdGhpcy5fZGF0YXNvdXJjZSA9IGRzO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgYW5kIHJlZ2lzdGVyIHdpdGggdGFibGVcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpZWxkRGVmKCk7XG4gICAgICAgIC8vIHdoZW4gY29sdW1uIGlzIGluc2lkZSBhIGdyb3VwIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgY29uc3QgY29sSW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2luZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgaGVhZGVySW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLm5hbWU7XG4gICAgICAgIC8vIFJlZ2lzdGVyIGNvbHVtbiB3aXRoIGhlYWRlciBjb25maWcgdG8gY3JlYXRlIGdyb3VwIHN0cnVjdHVyZVxuICAgICAgICBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSh0aGlzLnRhYmxlLmhlYWRlckNvbmZpZywge1xuICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5kaXNwbGF5TmFtZVxuICAgICAgICB9LCBmaWVsZE5hbWUsIGZpZWxkTmFtZSA/IGNvbEluZGV4IDogaGVhZGVySW5kZXgpO1xuXG4gICAgICAgIHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW5zKHRoaXMud2lkZ2V0LCBjb2xJbmRleCk7XG5cbiAgICAgICAgdGhpcy5faXNSb3dGaWx0ZXIgPSB0aGlzLnRhYmxlLmZpbHRlcm1vZGUgPT09ICdtdWx0aWNvbHVtbicgJiYgdGhpcy5zZWFyY2hhYmxlO1xuICAgICAgICB0aGlzLl9pc0lubGluZUVkaXRhYmxlID0gIXRoaXMucmVhZG9ubHkgJiYgKHRoaXMudGFibGUuZWRpdG1vZGUgIT09IEVESVRfTU9ERS5ESUFMT0cgJiYgdGhpcy50YWJsZS5lZGl0bW9kZSAhPT0gRURJVF9NT0RFLkZPUk0pO1xuICAgICAgICB0aGlzLl9pc05ld0VkaXRhYmxlUm93ID0gdGhpcy5faXNJbmxpbmVFZGl0YWJsZSAmJiB0aGlzLnRhYmxlLmVkaXRtb2RlID09PSBFRElUX01PREUuUVVJQ0tfRURJVCAmJiB0aGlzLnRhYmxlLnNob3duZXdyb3c7XG4gICAgICAgIHRoaXMuc2V0VXBDb250cm9scygpO1xuXG4gICAgICAgIHRoaXMuX3Byb3BzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIC8vIElubGluZSBjb250cm9sIHN0YXR1cyBjaGFuZ2Ugc3Vic2NyaWJlclxuICAgICAgICBpZiAodGhpcy5nZXRGb3JtQ29udHJvbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKS5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShzdGF0dXMgPT4gdGhpcy5vblN0YXR1c0NoYW5nZShzdGF0dXMsICdpbmxpbmVJbnN0YW5jZScpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25TdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBjdXN0b20gdmFsaWRhdG9ycyBjbGFzcyBmb3IgaW5saW5lIGVkaXQgZm9ybSBjb250cm9sXG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMgPSBuZXcgQmFzZUZpZWxkVmFsaWRhdGlvbnModGhpcywgdGhpc1snaW5saW5lSW5zdGFuY2UnXSwgdGhpcy5lZGl0V2lkZ2V0VHlwZSwgdGhpcy5nZXRGb3JtQ29udHJvbCgpLCB0aGlzLnRhYmxlLCAnaW5saW5lSW5zdGFuY2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1aWNrIGVkaXQgbmV3IHJvdyBjb250cm9sIHN0YXR1cyBjaGFuZ2Ugc3Vic2NyaWJlclxuICAgICAgICBpZiAodGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgY29uc3Qgb25TdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb25fbmV3ID0gdGhpcy5nZXRGb3JtQ29udHJvbCgnX25ldycpLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB0aGlzLm9uU3RhdHVzQ2hhbmdlKHN0YXR1cywgJ2lubGluZUluc3RhbmNlTmV3JykpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbl9uZXcudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBjdXN0b20gdmFsaWRhdG9ycyBjbGFzcyBmb3IgUXVpY2sgZWRpdCBuZXdyb3cgZm9ybSBjb250cm9sXG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3ID0gbmV3IEJhc2VGaWVsZFZhbGlkYXRpb25zKHRoaXMsIHRoaXNbJ2lubGluZUluc3RhbmNlTmV3J10sIHRoaXMuZWRpdFdpZGdldFR5cGUsIHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19uZXcnKSwgdGhpcy50YWJsZSwgJ2lubGluZUluc3RhbmNlTmV3Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1Jvd0ZpbHRlcikge1xuICAgICAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBpbm5lciByb3cgZmlsdGVyIHdpZGdldCBhbmQgc2V0dXAgdGhlIHdpZGdldFxuICAgICAgICAgICAgY29uc3QgczEgPSB0aGlzLl9maWx0ZXJJbnN0YW5jZXMuY2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwRmlsdGVyV2lkZ2V0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gczEudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNJbmxpbmVFZGl0YWJsZSkge1xuICAgICAgICAgICAgY29uc3QgczIgPSB0aGlzLl9pbmxpbmVJbnN0YW5jZXMuY2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIExpc3RlbiBvbiB0aGUgaW5uZXIgaW5saW5lIHdpZGdldCBhbmQgc2V0dXAgdGhlIHdpZGdldFxuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lSW5zdGFuY2UgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuZm9ybXdpZGdldCA9IHZhbC5maXJzdDtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnJlZ2lzdGVyRm9ybUZpZWxkKHRoaXMuYmluZGluZywgbmV3IEZpZWxkRGVmKHRoaXMuaW5saW5lSW5zdGFuY2UpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwSW5saW5lV2lkZ2V0KCdpbmxpbmVJbnN0YW5jZScpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHMyLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5faXNOZXdFZGl0YWJsZVJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMzID0gdGhpcy5faW5saW5lSW5zdGFuY2VzTmV3LmNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBpbm5lciBpbmxpbmUgd2lkZ2V0IGFuZCBzZXR1cCB0aGUgd2lkZ2V0XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lSW5zdGFuY2VOZXcgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zX25ldy5mb3Jtd2lkZ2V0ID0gdmFsLmZpcnN0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVwSW5saW5lV2lkZ2V0KCdpbmxpbmVJbnN0YW5jZU5ldycpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gczMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWdpc3RlclJlYWR5U3RhdGVMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmtleSA9IHRoaXMuZmllbGQgfHwgdGhpcy5iaW5kaW5nO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIGlmICgodGhpcyBhcyBhbnkpLnRhYmxlLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAodGhpcy50YWJsZS5pbmxpbmVXaWRnZXRUbXBsIGFzIGFueSkuX3Jlc3VsdHMucHVzaCh0aGlzLmlubGluZVdpZHRoVGVtcFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIC8vIG1hbnVhbGx5IGxpc3RpbmcgdGhlIHRhYmxlIGNvbHVtbiB0ZW1wbGF0ZVJlZiBhcyB0ZW1wbGF0ZVJlZiB3aWxsIG5vdCBiZSBhdmFpbGFibGUgcHJpb3IuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlLnJlbmRlckR5bmFtaWNGaWx0ZXJDb2x1bW4odGhpcy5maWx0ZXJUZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBkZWZhdWx0fHN5bmN8YXN5bmN8cHJvcCB2YWxpZGF0b3JzIGZvciBpbmxpbmUgZm9ybSBjb250cm9sXG4gICAgYXBwbHlWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldEZvcm1Db250cm9sKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zeW5jVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VmFsaWRhdG9ycyh0aGlzLnN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VXBWYWxpZGF0b3JzKCk7XG4gICAgICAgIGlmICh0aGlzLmFzeW5jVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vYnNlcnZlT25GaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLm9ic2VydmVPbih0aGlzLm9ic2VydmVPbkZpZWxkcywgJ2NvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSB2YWxpZGF0b3JzIGZvciB0aGUgaW5saW5lIHdpZGdldCBhbmQgc2V0IGZvcm0gdG8gdW50b3VjaGVkXG4gICAgcmVtb3ZlVmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMudGFibGUubmdmb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBjb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGRlZmF1bHR8c3luY3xhc3luY3xwcm9wIHZhbGlkYXRvcnMgZm9yIFF1aWNrRWRpdCBuZXcgcm93IGZvcm0gY29udHJvbFxuICAgIGFwcGx5TmV3Um93VmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN5bmNWYWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9uc19uZXcuc2V0VmFsaWRhdG9ycyh0aGlzLnN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3LnNldFVwVmFsaWRhdG9ycygpO1xuICAgICAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zX25ldy5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVPbkZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3Lm9ic2VydmVPbih0aGlzLm9ic2VydmVPbkZpZWxkcywgJ2NvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSB2YWxpZGF0b3JzIGZvciB0aGUgUXVpY2tFZGl0IG5ldyByb3cgd2lkZ2V0IGFuZCBzZXQgZm9ybSB0byB1bnRvdWNoZWRcbiAgICByZW1vdmVOZXdSb3dWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgdGhpcy50YWJsZS5uZ2Zvcm0ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgYWRkRm9ybUNvbnRyb2woc3VmZml4Pzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGN0cmxOYW1lID0gc3VmZml4ID8gKHRoaXMuYmluZGluZyArIHN1ZmZpeCkgOiB0aGlzLmJpbmRpbmc7XG4gICAgICAgIHRoaXMudGFibGUubmdmb3JtLmFkZENvbnRyb2woY3RybE5hbWUsIHRoaXMudGFibGUuZmIuY29udHJvbCgnJykpO1xuICAgIH1cblxuICAgIGdldEZvcm1Db250cm9sKHN1ZmZpeD86IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdHJsTmFtZSA9IHN1ZmZpeCA/ICh0aGlzLmJpbmRpbmcgKyBzdWZmaXgpIDogdGhpcy5iaW5kaW5nO1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZS5uZ2Zvcm0uY29udHJvbHNbY3RybE5hbWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrTmV3RWRpdGFibGVSb3dDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNOZXdFZGl0YWJsZVJvdyAmJiB0aGlzLmdldEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgdGhlIGlubGluZSBlZGl0IGFuZCBmaWx0ZXIgd2lkZ2V0XG4gICAgc2V0VXBDb250cm9scygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5saW5lRWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRXaWRnZXRUeXBlID09PSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZEZvcm1Db250cm9sKCk7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gIGNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMub25WYWx1ZUNoYW5nZSh2YWx1ZSwgJ2lubGluZUluc3RhbmNlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTmV3RWRpdGFibGVSb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19uZXcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3Q29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbk5ld1ZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gIG5ld0NvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlLCAnaW5saW5lSW5zdGFuY2VOZXcnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25OZXdWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNSb3dGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRm9ybUNvbnRyb2woJ19maWx0ZXInKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19maWx0ZXInKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlckNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbkZpbHRlclZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5vbkZpbHRlclZhbHVlQ2hhbmdlLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25GaWx0ZXJWYWx1ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc2V0IHRoZSByb3cgZmlsdGVyIHZhbHVlXG4gICAgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gT24gZmllbGQgdmFsdWUgY2hhbmdlLCBwcm9wYWdhdGUgZXZlbnQgdG8gcGFyZW50IGZvcm1cbiAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKHZhbCkge1xuICAgICAgICB0aGlzLnRhYmxlLnJvd0ZpbHRlclt0aGlzLmZpZWxkXS52YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvLyBHZXQgb2YgdGhlIGFjdGl2ZSBmcm9tIGNvbnRyb2xcbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1t0aGlzLmFjdGl2ZUNvbnRyb2xUeXBlXSAmJiB0aGlzW3RoaXMuYWN0aXZlQ29udHJvbFR5cGVdLmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKHZhbCkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCh0aGlzLmFjdGl2ZUNvbnRyb2xUeXBlID09PSAnaW5saW5lSW5zdGFuY2VOZXcnID8gJ19uZXcnIDogdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5lZGl0V2lkZ2V0VHlwZSAhPT0gRm9ybVdpZGdldFR5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIC8vIE9uIGZpZWxkIHZhbHVlIGNoYW5nZSwgYXBwbHkgY2FzY2FkaW5nIGZpbHRlciBhbmQgc2V0IHZhbGlkYXRpb24gbWVzc2FnZVxuICAgIG9uVmFsdWVDaGFuZ2UodmFsLCB3aWRnZXQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwbHlGaWx0ZXJPbkZpZWxkKHRoaXMudGFibGUuZGF0YXNvdXJjZSwgdGhpcy53aWRnZXQsIHRoaXMudGFibGUuZmllbGREZWZzLCB2YWwsIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQ6ICdlZGl0LXdpZGdldC10eXBlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGUubmdmb3JtLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ29udHJvbFR5cGUgPSB3aWRnZXQ7XG4gICAgICAgICAgICBpZiAod2lkZ2V0ID09PSAnaW5saW5lSW5zdGFuY2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLnNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lzTmV3RWRpdGFibGVSb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXMoJ19uZXcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3LnNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRmlsdGVyRGF0YSgpIHtcbiAgICAgICAgLy8gSWYgZmlsdGVyZGF0YXNldCBpcyBub3QgYm91bmQsIGdldCB0aGUgZGF0YSBpbXBsaWNpdGx5XG4gICAgICAgIGlmICh0aGlzLl9pc1Jvd0ZpbHRlciAmJiBpc0RhdGFTZXRXaWRnZXQodGhpcy5maWx0ZXJ3aWRnZXQpICYmICF0aGlzLmJpbmRmaWx0ZXJkYXRhc2V0KSB7XG4gICAgICAgICAgICAvLyBGb3IgbGl2ZSB2YXJpYWJsZSwgZ2V0IHRoZSBkYXRhIHVzaW5nIGRpc3RpbmN0IEFQSVxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLlNVUFBPUlRTX0RJU1RJTkNUX0FQSSkpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcmVsYXRlZCBlbnRpdHkgY29sdW1uc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbGF0ZWRFbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0Wydpcy1yZWxhdGVkJ10gID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRbJ2xvb2t1cC10eXBlJ10gID0gdGhpcy5yZWxhdGVkRW50aXR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRbJ2xvb2t1cC1maWVsZCddID0gbGFzdChzcGxpdCh0aGlzLmZpZWxkLCAnLicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhb3B0aW9ucyA9IGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzKHRoaXMudGFibGUuZGF0YXNvdXJjZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGF0YXNvdXJjZSA9IHRoaXMudGFibGUuZGF0YXNvdXJjZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlcyh0aGlzLnRhYmxlLmRhdGFzb3VyY2UsIHRoaXMud2lkZ2V0LCAnZmlsdGVyd2lkZ2V0JykudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRhdGFTZXQgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyV2lkZ2V0RGF0YVNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZvciBvdGhlciBkYXRhc291cmNlcywgZ2V0IHRoZSBkYXRhIGZyb20gZGF0YXNvdXJjZSBib3VuZCB0byB0YWJsZVxuICAgICAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogd2F0Y2ggZm4gc2hvdWxkIGFscmVhZHkgYmUgZ2VuZXJhdGVkIGZyb20gdGFibGUgZGF0YXNldC5iaW5kIGV4cHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmJpbmRkYXRhc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBudiA9PiB0aGlzLndpZGdldC5maWx0ZXJkYXRhc2V0ID0gbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgJ2ZpbHRlcmRhdGFzZXQnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRJbmxpbmVXaWRnZXREYXRhKCkge1xuICAgICAgICAvLyBJZiBkYXRhc2V0IGlzIG5vdCBib3VuZCwgZ2V0IHRoZSBkYXRhIGltcGxpY2l0bHlcbiAgICAgICAgaWYgKGlzRGF0YVNldFdpZGdldCh0aGlzWydlZGl0LXdpZGdldC10eXBlJ10pICYmICF0aGlzLmJpbmRkYXRhc2V0ICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy50YWJsZS5kYXRhc291cmNlO1xuICAgICAgICAgICAgaWYgKHRoaXNbJ3JlbGF0ZWQtZW50aXR5LW5hbWUnXSAmJiB0aGlzWydwcmltYXJ5LWtleSddKSB7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGRhdGEgZm9yIHRoZSByZWxhdGVkIGZpZWxkc1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEYXRhU2V0Qm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdzID0gc3BsaXQodGhpcy5iaW5kaW5nLCAnLicpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BlbmRpbmdTcGlubmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEoZGF0YVNvdXJjZSwgdGhpcy53aWRnZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEZpZWxkOiBoZWFkKGJpbmRpbmdzKSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YWZpZWxkOiBsYXN0KGJpbmRpbmdzKSxcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiAnZWRpdC13aWRnZXQtdHlwZSdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLlNVUFBPUlRTX0RJU1RJTkNUX0FQSSkpIHtcbiAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkKGRhdGFTb3VyY2UsIHRoaXMud2lkZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogJ2VkaXQtd2lkZ2V0LXR5cGUnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPbiB0YWJsZSBkYXRhc291cmNlIGNoYW5nZSwgZ2V0IHRoZSBkYXRhIGZvciByb3cgZmlsdGVyc1xuICAgIG9uRGF0YVNvdXJjZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5sb2FkRmlsdGVyRGF0YSgpO1xuICAgICAgICBpZiAodGhpcy50YWJsZS5lZGl0bW9kZSA9PT0gRURJVF9NT0RFLlFVSUNLX0VESVQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZElubGluZVdpZGdldERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgZGF0YSBvbiB0aGUgcm93IGZpbHRlciB3aWRnZXRcbiAgICBzZXRGaWx0ZXJXaWRnZXREYXRhU2V0KCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhc2V0ID0gdGhpcy5fZmlsdGVyRGF0YVNldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgcHJvcHMgb24gdGhlIHJvdyBmaWx0ZXIgd2lkZ2V0XG4gICAgc2V0VXBGaWx0ZXJXaWRnZXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucmVnaXN0ZXJSZWFkeVN0YXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGF0YVNldFdpZGdldCh0aGlzLmZpbHRlcndpZGdldCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBiaW5kaW5nIGlzIGRlcGFydG1lbnQuZGVwdElkIHRoZW4gZmllbGQgd2lsbCBiZSBkZXB0SWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGxhc3QodGhpcy5iaW5kaW5nLnNwbGl0KCcuJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGF0YXNldCA9IHRoaXMuX2ZpbHRlckRhdGFTZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhZmllbGQgPSB0aGlzLmZpbHRlcmRhdGFmaWVsZCB8fCBmaWVsZDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckluc3RhbmNlLmRpc3BsYXlmaWVsZCA9IHRoaXMuZmlsdGVyZGlzcGxheWZpZWxkIHx8IGZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcndpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGlzcGxheWxhYmVsID0gdGhpcy5maWx0ZXJkaXNwbGF5bGFiZWwgfHwgZmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2Uuc2VhcmNoa2V5ID0gdGhpcy5maWx0ZXJzZWFyY2hrZXkgfHwgZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5USU1FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS50aW1lcGF0dGVybiA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCAnaGg6bW06c3MgYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbHRlckluc3RhbmNlLnBsYWNlaG9sZGVyID0gdGhpcy5maWx0ZXJwbGFjZWhvbGRlciB8fCAnJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gTm90aWZpZXMgYWxsIHRoZSBkZXBlbmRlbnQgdmFsaWRhdGlvbiBjb250cm9scyBpbmNhc2Ugb2YgYW55IGNoYW5nZXNcbiAgICBub3RpZnlDaGFuZ2VzKHF1aWNrRWRpdD8pIHtcbiAgICAgICAgZm9yRWFjaCh0aGlzLm5vdGlmeUZvckZpZWxkcywgZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKHF1aWNrRWRpdCAmJiB0aGlzLl9pc05ld0VkaXRhYmxlUm93KSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWxpZGF0aW9uc19uZXcudmFsaWRhdGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWxpZGF0aW9ucy52YWxpZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBXYXRjaGVzIGNvbnRyb2wgZm9yIGRlcGVuZGVudCB2YWxpZGF0aW9uIGNoYW5nZXNcbiAgICBvYnNlcnZlT24oZmllbGRzKSB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZU9uRmllbGRzID0gY2xvbmVEZWVwKGZpZWxkcyk7XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWxpZGF0b3JzIGlubGluZSBhbmQgcXVpY2tlZGl0IG5ldyByb3cgdXNpbmcgcHJvcHNcbiAgICBzZXRVcFZhbGlkYXRvcnMoKSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5zZXRVcFZhbGlkYXRvcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrTmV3RWRpdGFibGVSb3dDb250cm9sKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9uc19uZXcuc2V0VXBWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBBc3luYyB2YWxpZGF0b3JzIG9uIHRoZSBpbmxpbmUgYW5kIHF1aWNrZWRpdCBuZXcgcm93IGZvcm0gY29udHJvbFxuICAgIHNldEFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gY2xvbmVEZWVwKHZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIGRlZmF1bHQvY3VzdG9tIHZhbGlkYXRvcnMgb24gdGhlIGlubGluZSBhbmQgcXVpY2tlZGl0IG5ldyByb3cgZm9ybSBjb250cm9sXG4gICAgc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMuc3luY1ZhbGlkYXRvcnMgPSBjbG9uZURlZXAodmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgYm91bmRGbihmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICB9XG5cbiAgICAvLyBTaG93cyBzcGlubmVyIGZvciBhc3luYyB2YWxpZGF0b3JzIGJhc2VkIG9uIHN0YXR1c1xuICAgIG9uU3RhdHVzQ2hhbmdlKHN0YXR1cywgdHlwZSkge1xuICAgICAgICB0aGlzWydzaG93UGVuZGluZ1NwaW5uZXInICsgKHR5cGUgPT09ICdpbmxpbmVJbnN0YW5jZScgPyAnJyA6ICdOZXcnKV0gPSAoc3RhdHVzID09PSAnUEVORElORycpO1xuICAgIH1cblxuICAgIC8qIFN1bW1hcnkgUm93IExvZ2ljIHN0YXJ0ICovXG4gICAgc2V0U3VtbWFyeVJvd0RhdGEoZGF0YSkge1xuICAgICAgICBjb25zdCBuZXdEYXRhID0gKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkgPyBkYXRhIDogW2RhdGFdO1xuICAgICAgICB0aGlzLl9pbnZva2VTdW1tYXJ5Um93RGF0YShuZXdEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbnZva2VTdW1tYXJ5Um93RGF0YShkYXRhKSB7XG4gICAgICAgIGZvckVhY2goZGF0YSwgKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbTtcbiAgICAgICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3VtbWFyeVJvd0RlZicsIHRoaXMua2V5LCByZXMsIGluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudC52YWx1ZSAmJiBjb250ZW50LnZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnREYXRhID0gY29udGVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50LnZhbHVlLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudERhdGEudmFsdWUgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdW1tYXJ5Um93RGVmJywgdGhpcy5rZXksIGNvbnRlbnREYXRhLCBpbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3VtbWFyeVJvd0RlZicsIHRoaXMua2V5LCBjb250ZW50LCBpbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF9nZXRDb2x1bW5EYXRhKCkge1xuICAgICAgICByZXR1cm4gbWFwKHRoaXMudGFibGUuZGF0YXNldCwgdGhpcy5iaW5kaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWdncmVnYXRlID0ge1xuICAgICAgICBzdW06ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdW0odGhpcy5fZ2V0Q29sdW1uRGF0YSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXZlcmFnZTogKHByZWNpc2lvbjogbnVtYmVyID0gMikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kKG1lYW4odGhpcy5fZ2V0Q29sdW1uRGF0YSgpKSwgcHJlY2lzaW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgY291bnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2x1bW5EYXRhKCkubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBtaW5pbXVtOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWluKHRoaXMuX2dldENvbHVtbkRhdGEoKSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1heGltdW06ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtYXgodGhpcy5fZ2V0Q29sdW1uRGF0YSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcGVyY2VudDogKHZhbHVlLCBwcmVjaXNpb246IG51bWJlciA9IDIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZCgoc3VtKHRoaXMuX2dldENvbHVtbkRhdGEoKSkgLyB2YWx1ZSkgKiAxMDAsIHByZWNpc2lvbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qIFN1bW1hcnkgUm93IExvZ2ljIGVuZCAqL1xuXG4gICAgLy8gU2V0IHRoZSBwcm9wcyBvbiB0aGUgaW5saW5lIGVkaXQgd2lkZ2V0XG4gICAgc2V0SW5saW5lV2lkZ2V0UHJvcCh3aWRnZXQsIHByb3AsIG52KSB7XG4gICAgICAgIGlmIChwcm9wID09PSAnZGF0ZXBhdHRlcm4nICYmIHRoaXMuZWRpdFdpZGdldFR5cGUgPT09IEZvcm1XaWRnZXRUeXBlLlRJTUUpIHtcbiAgICAgICAgICAgIHByb3AgPSAndGltZXBhdHRlcm4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzW3dpZGdldF0gJiYgaXNEZWZpbmVkKG52KSkge1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdW3Byb3BdID0gbnY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBpbmxpbmUgZWRpdCB3aWRnZXRcbiAgICBzZXRVcElubGluZVdpZGdldCh3aWRnZXQpIHtcbiAgICAgICAgdGhpc1t3aWRnZXRdLnJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0RhdGFTZXRXaWRnZXQodGhpc1snZWRpdC13aWRnZXQtdHlwZSddKSkge1xuICAgICAgICAgICAgICAgIHRoaXNbd2lkZ2V0XS5kYXRhc2V0ID0gdGhpcy5kYXRhc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5saW5lV2lkZ2V0UHJvcHMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5saW5lV2lkZ2V0UHJvcCh3aWRnZXQsIGtleSwgdGhpc1trZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdLmRhdGFzb3VyY2UgPSB0aGlzLl9kYXRhc291cmNlO1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdLmRhdGFvcHRpb25zID0gdGhpcy5fZGF0YW9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3Aod2lkZ2V0LCAnZGF0ZXBhdHRlcm4nLCB0aGlzLmVkaXRkYXRlcGF0dGVybik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFN0eWxlRGVmKCkge1xuICAgICAgICByZXR1cm4gYHdpZHRoOiAke3RoaXMud2lkdGggfHwgJyd9OyBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoaXMuYmFja2dyb3VuZGNvbG9yIHx8ICcnfTsgY29sb3I6ICR7dGhpcy50ZXh0Y29sb3IgfHwgJyd9O2A7XG4gICAgfVxuXG4gICAgcG9wdWxhdGVGaWVsZERlZigpIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMud2lkdGggPT09ICdweCcgPyAgJycgOiAodGhpcy53aWR0aCB8fCAnJyk7XG4gICAgICAgIHRoaXMuZmllbGQgPSB0aGlzLmJpbmRpbmc7XG4gICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSAgdGhpcy5jYXB0aW9uIHx8ICcnO1xuICAgICAgICB0aGlzLnBjRGlzcGxheSA9ICB0aGlzLnBjZGlzcGxheTtcbiAgICAgICAgdGhpcy5tb2JpbGVEaXNwbGF5ID0gIHRoaXMubW9iaWxlZGlzcGxheTtcbiAgICAgICAgdGhpcy50YWJsZXREaXNwbGF5ID0gIHRoaXMudGFibGV0ZGlzcGxheTtcbiAgICAgICAgdGhpcy50ZXh0QWxpZ25tZW50ID0gIHRoaXMudGV4dGFsaWdubWVudDtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSAgdGhpcy5iYWNrZ3JvdW5kY29sb3I7XG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gIHRoaXMudGV4dGNvbG9yO1xuICAgICAgICB0aGlzLnByaW1hcnlLZXkgPSAgdGhpc1sncHJpbWFyeS1rZXknXTtcbiAgICAgICAgdGhpcy5yZWxhdGVkRW50aXR5TmFtZSA9ICB0aGlzWydyZWxhdGVkLWVudGl0eS1uYW1lJ107XG4gICAgICAgIHRoaXMuc3R5bGUgPSAgdGhpcy5nZXRTdHlsZURlZigpO1xuICAgICAgICB0aGlzLmNsYXNzID0gIHRoaXNbJ2NvbC1jbGFzcyddO1xuICAgICAgICB0aGlzLm5nY2xhc3MgPSAgdGhpc1snY29sLW5nLWNsYXNzJ107XG4gICAgICAgIHRoaXMuZm9ybWF0cGF0dGVybiA9ICB0aGlzLmZvcm1hdHBhdHRlcm4gPT09ICd0b051bWJlcicgPyAnbnVtYmVyVG9TdHJpbmcnICA6ICB0aGlzLmZvcm1hdHBhdHRlcm47XG4gICAgICAgIHRoaXMuc2VhcmNoYWJsZSA9ICAodGhpcy50eXBlID09PSAnYmxvYicgfHwgdGhpcy50eXBlID09PSAnY2xvYicpID8gZmFsc2UgIDogIHRoaXMuc2VhcmNoYWJsZTtcbiAgICAgICAgdGhpcy5zaG93aW5maWx0ZXIgPSAodGhpcy5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2hvd2luZmlsdGVyJykgJiYgISgodGhpcyBhcyBhbnkpLnRhYmxlICYmICh0aGlzIGFzIGFueSkudGFibGUuaXNkeW5hbWljdGFibGUpKSA/IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Nob3dpbmZpbHRlcicpIDogKHRoaXMuc2hvdyk7XG4gICAgICAgIHRoaXMubGltaXQgPSAgdGhpcy5saW1pdCA/ICt0aGlzLmxpbWl0ICA6ICB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZWRpdFdpZGdldFR5cGUgPSB0aGlzWydlZGl0LXdpZGdldC10eXBlJ10gPSAgdGhpc1snZWRpdC13aWRnZXQtdHlwZSddIHx8IGdldEVkaXRNb2RlV2lkZ2V0KHRoaXMpO1xuICAgICAgICB0aGlzLmZpbHRlck9uID0gIHRoaXNbJ2ZpbHRlci1vbiddO1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gaXNEZWZpbmVkKHRoaXMuZ2V0QXR0cigncmVhZG9ubHknKSkgPyB0aGlzLmdldEF0dHIoJ3JlYWRvbmx5JykgPT09ICd0cnVlJyA6ICh0aGlzWydyZWxhdGVkLWVudGl0eS1uYW1lJ10gPyAhdGhpc1sncHJpbWFyeS1rZXknXSA6IGluY2x1ZGVzKFsnaWRlbnRpdHknLCAndW5pcXVlaWQnLCAnc2VxdWVuY2UnXSwgdGhpcy5nZW5lcmF0b3IpKTtcbiAgICAgICAgdGhpcy5maWx0ZXJ3aWRnZXQgPSAgdGhpcy5maWx0ZXJ3aWRnZXQgfHwgZ2V0RGF0YVRhYmxlRmlsdGVyV2lkZ2V0KHRoaXMudHlwZSB8fCAnc3RyaW5nJyk7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJEYXRhU2V0Qm91bmQgPSAhIXRoaXMuYmluZGZpbHRlcmRhdGFzZXQ7XG4gICAgICAgIHRoaXMuZGVmYXVsdHZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKHRoaXMuZGVmYXVsdHZhbHVlLCB0aGlzLnR5cGUsIHRoaXMuZWRpdFdpZGdldFR5cGUpO1xuICAgICAgICB0aGlzLmNhc2VpbnNlbnNpdGl2ZSA9ICAhIXRoaXMuZ2V0QXR0cignY2FzZWluc2Vuc2l0aXZlJyk7XG5cbiAgICAgICAgLy8gRm9yIGRhdGUgdGltZSBkYXRhIHR5cGVzLCBpZiBkYXRlIHBhdHRlcm4gaXMgbm90IHNwZWNpZmllZCwgc2V0IHRoZSBhcHAgZm9ybWF0IG9yIGRlZmF1bHQgZm9ybWF0XG4gICAgICAgIGlmIChpc0RhdGVUaW1lVHlwZSh0aGlzLnR5cGUpICYmIHRoaXMuZm9ybWF0cGF0dGVybiA9PT0gJ3RvRGF0ZScgJiYgIXRoaXMuZGF0ZXBhdHRlcm4pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGb3JtYXQgPSBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQodGhpcy50eXBlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLkRBVEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuICA9IHRoaXMuYXBwRGVmYXVsdHMuZGF0ZUZvcm1hdCB8fCBkZWZhdWx0Rm9ybWF0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuICA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCBkZWZhdWx0Rm9ybWF0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLlRJTUVTVEFNUCB8fCB0aGlzLnR5cGUgPT09IERhdGFUeXBlLkRBVEVUSU1FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlcGF0dGVybiAgPSB0aGlzLmFwcERlZmF1bHRzLmRhdGVUaW1lRm9ybWF0IHx8IGRlZmF1bHRGb3JtYXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KSB7XG4gICAgICAgIGlmICghdGhpcy5fcHJvcHNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gbnYgfHwgJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eSgnZGlzcGxheU5hbWUnLCB0aGlzLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjU5MzRdOiB1cGRhdGUgdGhlIGhlYWRlckNvbmZpZyBsaXN0IHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIGRpc3BsYXkgbmFtZVxuICAgICAgICAgICAgICAgIC8vIHdoZW4gY29sdW1uIGlzIGluc2lkZSBhIGdyb3VwIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gZmllbGROYW1lID8gcGFyc2VJbnQodGhpcy5nZXRBdHRyKCdpbmRleCcpLCAxMCkgOiBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBjb2x1bW4gd2l0aCBoZWFkZXIgY29uZmlnIHRvIGNyZWF0ZSBncm91cCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFibGUuaGVhZGVyQ29uZmlnLnNvbWUodmFsdWUgPT4gdGhpcy5maWVsZCA9PSB2YWx1ZS5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUodGhpcy50YWJsZS5oZWFkZXJDb25maWcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuZGlzcGxheU5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSwgZmllbGROYW1lLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmhlYWRlckNvbmZpZy5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQgPT0gdmFsdWUuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5kaXNwbGF5TmFtZSA9IHRoaXMuZGlzcGxheU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHR2YWx1ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0dmFsdWUgPSBnZXREZWZhdWx0VmFsdWUodGhpcy5kZWZhdWx0dmFsdWUsIHRoaXMudHlwZSwgdGhpcy5lZGl0V2lkZ2V0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnJlZHJhdyh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmZpbHRlciA9IHRoaXMubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3Nob3dpbmZpbHRlcicpID8gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2hvd2luZmlsdGVyJykgOiBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcmRhdGFzZXQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRhdGFTZXQgPSBudjtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlcldpZGdldERhdGFTZXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VkaXRkYXRlcGF0dGVybic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbmxpbmVXaWRnZXRQcm9wKCdpbmxpbmVJbnN0YW5jZScsICdkYXRlcGF0dGVybicsIG52KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3AoJ2lubGluZUluc3RhbmNlTmV3JywgJ2RhdGVwYXR0ZXJuJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hvd2luZmlsdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmZpbHRlciA9IG52O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoaW5saW5lV2lkZ2V0UHJvcHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3AoJ2lubGluZUluc3RhbmNlJywga2V5LCBudik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5saW5lV2lkZ2V0UHJvcCgnaW5saW5lSW5zdGFuY2VOZXcnLCBrZXksIG52KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICB9XG5cbiAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eSwgbnYpIHtcbiAgICAgICAgdGhpc1twcm9wZXJ0eV0gPSBudjtcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgY2FzZSAnZGlzcGxheU5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRDb2x1bW5Qcm9wJywgdGhpcy5maWVsZCwgcHJvcGVydHksIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5yZWRyYXcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
660
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxRQUFRLEVBRVIsUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUVSLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLFNBQVMsRUFDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMVYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUs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QkFBbUI7a0JBQTdFLGVBQWU7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1lBQ3pCLGNBQWM7a0JBQTdDLFlBQVk7bUJBQUMsZ0JBQWdCO1lBQ0ksa0JBQWtCO2tCQUFuRCxZQUFZO21CQUFDLGtCQUFrQjtZQWtGSixpQkFBaUI7a0JBQTVDLFlBQVk7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBEYXRhU291cmNlLFxuICAgIERhdGFUeXBlLFxuICAgIGRlYm91bmNlLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldERpc3BsYXlEYXRlVGltZUZvcm1hdCxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBpc0RlZmluZWRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlGaWx0ZXJPbkZpZWxkLCBCYXNlRmllbGRWYWxpZGF0aW9ucywgRURJVF9NT0RFLCBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsIGdldERhdGFUYWJsZUZpbHRlcldpZGdldCwgZ2V0RGVmYXVsdFZhbHVlLCBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcywgZ2V0RGlzdGluY3RWYWx1ZXMsIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsIGdldEVkaXRNb2RlV2lkZ2V0LCBnZXRXYXRjaElkZW50aWZpZXIsIGlzRGF0YVNldFdpZGdldCwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGFibGUtY29sdW1uLnByb3BzJztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW1uR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuLi90YWJsZS1jb2x1bW4tZ3JvdXAvdGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Nsb25lRGVlcCwgZm9yRWFjaCwgaGVhZCwgaW5jbHVkZXMsIGxhc3QsIG1hcCwgbWF4LCBtZWFuLCBtaW4sIHJvdW5kLCBzcGxpdCwgc3VtfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXRhYmxlLWNvbHVtbicsIGhvc3RDbGFzczogJyd9O1xuXG5sZXQgaW5saW5lV2lkZ2V0UHJvcHMgPSBbJ2RhdGFmaWVsZCcsICdkaXNwbGF5ZmllbGQnLCAncGxhY2Vob2xkZXInLCAnc2VhcmNoa2V5JywgJ21hdGNobW9kZScsICdkaXNwbGF5bGFiZWwnLCAnZ3JvdXBieScsICdtYXRjaCcsICdkYXRlZm9ybWF0JywgJ3Nob3djb3VudCcsICdjb2xsYXBzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrZWR2YWx1ZScsICd1bmNoZWNrZWR2YWx1ZScsICdzaG93ZHJvcGRvd25vbicsICdkYXRhZW50cnltb2RlJywgJ2F1dG9jbG9zZScsICdkYXRhc2V0JywgJ291dHB1dGZvcm1hdCddO1xuY29uc3QgdmFsaWRhdGlvblByb3BzID0gWydtYXhjaGFycycsICdyZWdleHAnLCAnbWludmFsdWUnLCAnbWF4dmFsdWUnLCAnc3RlcCcsICdyZXF1aXJlZCcsICdtaW5kYXRlJywgJ21heGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNsdWRlZGF0ZXMnLCAnZXhjbHVkZWRheXMnLCAnbWludGltZScsICdtYXh0aW1lJ107XG5pbmxpbmVXaWRnZXRQcm9wcyA9IFsuLi5pbmxpbmVXaWRnZXRQcm9wcywgLi4udmFsaWRhdGlvblByb3BzXTtcblxuY2xhc3MgRmllbGREZWYge1xuICAgIHdpZGdldDtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldCkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgdGhpcy53aWRnZXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBzZXRQcm9wZXJ0eShwcm9wLCBuZXd2YWwpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBzY29wZSBvZiB0aGUgY3VycmVudCBlZGl0YWJsZSB3aWRnZXQgYW5kIHNldCB0aGUgdmFsdWVcbiAgICAgICAgcHJvcCA9IHByb3AgPT09ICd2YWx1ZScgPyAnZGF0YXZhbHVlJyA6IHByb3A7XG4gICAgICAgIHRoaXMud2lkZ2V0W3Byb3BdID0gbmV3dmFsO1xuICAgIH1cblxuICAgIGdldFByb3BlcnR5KHByb3ApIHtcbiAgICAgICAgcHJvcCA9IHByb3AgPT09ICd2YWx1ZScgPyAnZGF0YXZhbHVlJyA6IHByb3A7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFtwcm9wXTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtVGFibGVDb2x1bW5dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRhYmxlQ29sdW1uRGlyZWN0aXZlKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5EaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbignZmlsdGVyV2lkZ2V0JywgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfZmlsdGVySW5zdGFuY2VzO1xuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2lubGluZVdpZGdldCcsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgX2lubGluZUluc3RhbmNlcztcbiAgICBAQ29udGVudENoaWxkcmVuKCdpbmxpbmVXaWRnZXROZXcnLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9pbmxpbmVJbnN0YW5jZXNOZXc7XG4gICAgQENvbnRlbnRDaGlsZCgnY3VzdG9tRXhwclRtcGwnKSBjdXN0b21FeHByVG1wbDtcbiAgICBAQ29udGVudENoaWxkKCdpbmxpbmVXaWRnZXRUbXBsJykgaW5saW5lV2lkdGhUZW1wUmVmO1xuXG4gICAgcHJpdmF0ZSBfcHJvcHNJbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9maWx0ZXJEYXRhU2V0O1xuICAgIHByaXZhdGUgX2lzUm93RmlsdGVyO1xuICAgIHByaXZhdGUgX2lzSW5saW5lRWRpdGFibGU7XG4gICAgcHJpdmF0ZSBfaXNOZXdFZGl0YWJsZVJvdztcblxuICAgIGtleTtcbiAgICBmaWx0ZXJJbnN0YW5jZTtcbiAgICBpbmxpbmVJbnN0YW5jZTtcbiAgICBpbmxpbmVJbnN0YW5jZU5ldztcblxuICAgIGJhY2tncm91bmRjb2xvcjtcbiAgICBiaW5kaW5nO1xuICAgIGNhcHRpb247XG4gICAgZGF0YXNldDtcbiAgICBkZWZhdWx0dmFsdWU7XG4gICAgZWRpdFdpZGdldFR5cGU7XG4gICAgZmlsdGVyd2lkZ2V0O1xuICAgIGZpZWxkO1xuICAgIGZvcm1hdHBhdHRlcm47XG4gICAgY3VzdG9tcGlwZWZvcm1hdDtcbiAgICBnZW5lcmF0b3I7XG4gICAgbGltaXQ7XG4gICAgbW9iaWxlZGlzcGxheTtcbiAgICBwY2Rpc3BsYXk7XG4gICAgdGFibGV0ZGlzcGxheTtcbiAgICByZWFkb25seTtcbiAgICByZXF1aXJlZDtcbiAgICBtYXhjaGFycztcbiAgICBtaW52YWx1ZTtcbiAgICBtYXh2YWx1ZTtcbiAgICByZWdleHA7XG4gICAgc2VhcmNoYWJsZTtcbiAgICBzaG93aW5maWx0ZXI7XG4gICAgc2hvdztcbiAgICBzb3J0YWJsZTtcbiAgICBjYXNlaW5zZW5zaXRpdmU7XG4gICAgdGV4dGFsaWdubWVudDtcbiAgICB0ZXh0Y29sb3I7XG4gICAgdHlwZTtcbiAgICB3aWR0aDtcbiAgICBkYXRlcGF0dGVybjtcbiAgICBlZGl0ZGF0ZXBhdHRlcm47XG4gICAgZmlsdGVyZGF0YWZpZWxkO1xuICAgIGZpbHRlcmRpc3BsYXlmaWVsZDtcbiAgICBmaWx0ZXJkaXNwbGF5bGFiZWw7XG4gICAgZmlsdGVyc2VhcmNoa2V5O1xuICAgIGZpbHRlcnBsYWNlaG9sZGVyO1xuICAgIGRhdGFmaWVsZDtcbiAgICBkaXNwbGF5ZmllbGQ7XG4gICAgZGlzcGxheU5hbWU7XG4gICAgcGNEaXNwbGF5O1xuICAgIG1vYmlsZURpc3BsYXk7XG4gICAgdGFibGV0RGlzcGxheTtcbiAgICB0ZXh0QWxpZ25tZW50O1xuICAgIGJhY2tncm91bmRDb2xvcjtcbiAgICB0ZXh0Q29sb3I7XG4gICAgcHJpbWFyeUtleTtcbiAgICByZWxhdGVkRW50aXR5TmFtZTtcbiAgICBzdHlsZTtcbiAgICBjbGFzcztcbiAgICBuZ2NsYXNzO1xuICAgIGZpbHRlck9uO1xuICAgIGZpbHRlckNvbnRyb2w7XG4gICAgaXNEYXRhU2V0Qm91bmQ7XG4gICAgaXNGaWx0ZXJEYXRhU2V0Qm91bmQ7XG4gICAgc2hvd1BlbmRpbmdTcGlubmVyO1xuICAgIHNob3dQZW5kaW5nU3Bpbm5lck5ldztcbiAgICB2YWxpZGF0aW9ubWVzc2FnZTtcbiAgICBhY3RpdmVDb250cm9sVHlwZTtcbiAgICBwcml2YXRlIF9kYXRhb3B0aW9uczogYW55O1xuICAgIHByaXZhdGUgX2RhdGFzb3VyY2U6IGFueTtcbiAgICBwcml2YXRlIG5vdGlmeUZvckZpZWxkczogYW55O1xuICAgIHByaXZhdGUgZmllbGRWYWxpZGF0aW9ucztcbiAgICBwcml2YXRlIGZpZWxkVmFsaWRhdGlvbnNfbmV3O1xuXG4gICAgcHJpdmF0ZSBzeW5jVmFsaWRhdG9ycyA9IFtdO1xuICAgIHByaXZhdGUgYXN5bmNWYWxpZGF0b3JzID0gW107XG4gICAgcHJpdmF0ZSBvYnNlcnZlT25GaWVsZHMgPSBbXTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2ZpbHRlclRtcGwnKSBmaWx0ZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIHRhYmxlOiBUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGdyb3VwOiBUYWJsZUNvbHVtbkdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBAQXR0cmlidXRlKCdmaWx0ZXJkYXRhc2V0LmJpbmQnKSBwdWJsaWMgYmluZGZpbHRlcmRhdGFzZXQsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2RhdGFzZXQuYmluZCcpIHB1YmxpYyBiaW5kZGF0YXNldCxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcblxuICAgICAgICB0aGlzLm5vdGlmeUZvckZpZWxkcyA9IFtdO1xuICAgIH1cblxuICAgIGdldCBkYXRhb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFvcHRpb25zO1xuICAgIH1cblxuICAgIHNldCBkYXRhb3B0aW9ucyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX2RhdGFvcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgZGF0YXNvdXJjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFzb3VyY2U7XG4gICAgfVxuXG4gICAgc2V0IGRhdGFzb3VyY2UoZHMpIHtcbiAgICAgICAgdGhpcy5fZGF0YXNvdXJjZSA9IGRzO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZXMgYW5kIHJlZ2lzdGVyIHdpdGggdGFibGVcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpZWxkRGVmKCk7XG4gICAgICAgIC8vIHdoZW4gY29sdW1uIGlzIGluc2lkZSBhIGdyb3VwIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgY29uc3QgY29sSW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2luZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgaGVhZGVySW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLm5hbWU7XG4gICAgICAgIC8vIFJlZ2lzdGVyIGNvbHVtbiB3aXRoIGhlYWRlciBjb25maWcgdG8gY3JlYXRlIGdyb3VwIHN0cnVjdHVyZVxuICAgICAgICBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSh0aGlzLnRhYmxlLmhlYWRlckNvbmZpZywge1xuICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5kaXNwbGF5TmFtZVxuICAgICAgICB9LCBmaWVsZE5hbWUsIGZpZWxkTmFtZSA/IGNvbEluZGV4IDogaGVhZGVySW5kZXgpO1xuXG4gICAgICAgIHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW5zKHRoaXMud2lkZ2V0LCBjb2xJbmRleCk7XG5cbiAgICAgICAgdGhpcy5faXNSb3dGaWx0ZXIgPSB0aGlzLnRhYmxlLmZpbHRlcm1vZGUgPT09ICdtdWx0aWNvbHVtbicgJiYgdGhpcy5zZWFyY2hhYmxlO1xuICAgICAgICB0aGlzLl9pc0lubGluZUVkaXRhYmxlID0gIXRoaXMucmVhZG9ubHkgJiYgKHRoaXMudGFibGUuZWRpdG1vZGUgIT09IEVESVRfTU9ERS5ESUFMT0cgJiYgdGhpcy50YWJsZS5lZGl0bW9kZSAhPT0gRURJVF9NT0RFLkZPUk0pO1xuICAgICAgICB0aGlzLl9pc05ld0VkaXRhYmxlUm93ID0gdGhpcy5faXNJbmxpbmVFZGl0YWJsZSAmJiB0aGlzLnRhYmxlLmVkaXRtb2RlID09PSBFRElUX01PREUuUVVJQ0tfRURJVCAmJiB0aGlzLnRhYmxlLnNob3duZXdyb3c7XG4gICAgICAgIHRoaXMuc2V0VXBDb250cm9scygpO1xuXG4gICAgICAgIHRoaXMuX3Byb3BzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIC8vIElubGluZSBjb250cm9sIHN0YXR1cyBjaGFuZ2Ugc3Vic2NyaWJlclxuICAgICAgICBpZiAodGhpcy5nZXRGb3JtQ29udHJvbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woKS5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShzdGF0dXMgPT4gdGhpcy5vblN0YXR1c0NoYW5nZShzdGF0dXMsICdpbmxpbmVJbnN0YW5jZScpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25TdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBjdXN0b20gdmFsaWRhdG9ycyBjbGFzcyBmb3IgaW5saW5lIGVkaXQgZm9ybSBjb250cm9sXG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMgPSBuZXcgQmFzZUZpZWxkVmFsaWRhdGlvbnModGhpcywgdGhpc1snaW5saW5lSW5zdGFuY2UnXSwgdGhpcy5lZGl0V2lkZ2V0VHlwZSwgdGhpcy5nZXRGb3JtQ29udHJvbCgpLCB0aGlzLnRhYmxlLCAnaW5saW5lSW5zdGFuY2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1aWNrIGVkaXQgbmV3IHJvdyBjb250cm9sIHN0YXR1cyBjaGFuZ2Ugc3Vic2NyaWJlclxuICAgICAgICBpZiAodGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgY29uc3Qgb25TdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb25fbmV3ID0gdGhpcy5nZXRGb3JtQ29udHJvbCgnX25ldycpLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB0aGlzLm9uU3RhdHVzQ2hhbmdlKHN0YXR1cywgJ2lubGluZUluc3RhbmNlTmV3JykpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbl9uZXcudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBjdXN0b20gdmFsaWRhdG9ycyBjbGFzcyBmb3IgUXVpY2sgZWRpdCBuZXdyb3cgZm9ybSBjb250cm9sXG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3ID0gbmV3IEJhc2VGaWVsZFZhbGlkYXRpb25zKHRoaXMsIHRoaXNbJ2lubGluZUluc3RhbmNlTmV3J10sIHRoaXMuZWRpdFdpZGdldFR5cGUsIHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19uZXcnKSwgdGhpcy50YWJsZSwgJ2lubGluZUluc3RhbmNlTmV3Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1Jvd0ZpbHRlcikge1xuICAgICAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBpbm5lciByb3cgZmlsdGVyIHdpZGdldCBhbmQgc2V0dXAgdGhlIHdpZGdldFxuICAgICAgICAgICAgY29uc3QgczEgPSB0aGlzLl9maWx0ZXJJbnN0YW5jZXMuY2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwRmlsdGVyV2lkZ2V0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gczEudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNJbmxpbmVFZGl0YWJsZSkge1xuICAgICAgICAgICAgY29uc3QgczIgPSB0aGlzLl9pbmxpbmVJbnN0YW5jZXMuY2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIExpc3RlbiBvbiB0aGUgaW5uZXIgaW5saW5lIHdpZGdldCBhbmQgc2V0dXAgdGhlIHdpZGdldFxuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lSW5zdGFuY2UgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuZm9ybXdpZGdldCA9IHZhbC5maXJzdDtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnJlZ2lzdGVyRm9ybUZpZWxkKHRoaXMuYmluZGluZywgbmV3IEZpZWxkRGVmKHRoaXMuaW5saW5lSW5zdGFuY2UpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwSW5saW5lV2lkZ2V0KCdpbmxpbmVJbnN0YW5jZScpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHMyLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5faXNOZXdFZGl0YWJsZVJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMzID0gdGhpcy5faW5saW5lSW5zdGFuY2VzTmV3LmNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBpbm5lciBpbmxpbmUgd2lkZ2V0IGFuZCBzZXR1cCB0aGUgd2lkZ2V0XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lSW5zdGFuY2VOZXcgPSB2YWwuZmlyc3QgJiYgdmFsLmZpcnN0LndpZGdldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zX25ldy5mb3Jtd2lkZ2V0ID0gdmFsLmZpcnN0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVwSW5saW5lV2lkZ2V0KCdpbmxpbmVJbnN0YW5jZU5ldycpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gczMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWdpc3RlclJlYWR5U3RhdGVMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmtleSA9IHRoaXMuZmllbGQgfHwgdGhpcy5iaW5kaW5nO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIGlmICgodGhpcyBhcyBhbnkpLnRhYmxlLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAodGhpcy50YWJsZS5pbmxpbmVXaWRnZXRUbXBsIGFzIGFueSkuX3Jlc3VsdHMucHVzaCh0aGlzLmlubGluZVdpZHRoVGVtcFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIC8vIG1hbnVhbGx5IGxpc3RpbmcgdGhlIHRhYmxlIGNvbHVtbiB0ZW1wbGF0ZVJlZiBhcyB0ZW1wbGF0ZVJlZiB3aWxsIG5vdCBiZSBhdmFpbGFibGUgcHJpb3IuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlLnJlbmRlckR5bmFtaWNGaWx0ZXJDb2x1bW4odGhpcy5maWx0ZXJUZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBkZWZhdWx0fHN5bmN8YXN5bmN8cHJvcCB2YWxpZGF0b3JzIGZvciBpbmxpbmUgZm9ybSBjb250cm9sXG4gICAgYXBwbHlWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldEZvcm1Db250cm9sKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zeW5jVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VmFsaWRhdG9ycyh0aGlzLnN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VXBWYWxpZGF0b3JzKCk7XG4gICAgICAgIGlmICh0aGlzLmFzeW5jVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vYnNlcnZlT25GaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLm9ic2VydmVPbih0aGlzLm9ic2VydmVPbkZpZWxkcywgJ2NvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSB2YWxpZGF0b3JzIGZvciB0aGUgaW5saW5lIHdpZGdldCBhbmQgc2V0IGZvcm0gdG8gdW50b3VjaGVkXG4gICAgcmVtb3ZlVmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMudGFibGUubmdmb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBjb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGRlZmF1bHR8c3luY3xhc3luY3xwcm9wIHZhbGlkYXRvcnMgZm9yIFF1aWNrRWRpdCBuZXcgcm93IGZvcm0gY29udHJvbFxuICAgIGFwcGx5TmV3Um93VmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN5bmNWYWxpZGF0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9uc19uZXcuc2V0VmFsaWRhdG9ycyh0aGlzLnN5bmNWYWxpZGF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3LnNldFVwVmFsaWRhdG9ycygpO1xuICAgICAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zX25ldy5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVPbkZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3Lm9ic2VydmVPbih0aGlzLm9ic2VydmVPbkZpZWxkcywgJ2NvbHVtbnMnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSB2YWxpZGF0b3JzIGZvciB0aGUgUXVpY2tFZGl0IG5ldyByb3cgd2lkZ2V0IGFuZCBzZXQgZm9ybSB0byB1bnRvdWNoZWRcbiAgICByZW1vdmVOZXdSb3dWYWxpZGF0aW9ucygpIHtcbiAgICAgICAgdGhpcy50YWJsZS5uZ2Zvcm0ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tOZXdFZGl0YWJsZVJvd0NvbnRyb2woKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgYWRkRm9ybUNvbnRyb2woc3VmZml4Pzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGN0cmxOYW1lID0gc3VmZml4ID8gKHRoaXMuYmluZGluZyArIHN1ZmZpeCkgOiB0aGlzLmJpbmRpbmc7XG4gICAgICAgIHRoaXMudGFibGUubmdmb3JtLmFkZENvbnRyb2woY3RybE5hbWUsIHRoaXMudGFibGUuZmIuY29udHJvbCgnJykpO1xuICAgIH1cblxuICAgIGdldEZvcm1Db250cm9sKHN1ZmZpeD86IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdHJsTmFtZSA9IHN1ZmZpeCA/ICh0aGlzLmJpbmRpbmcgKyBzdWZmaXgpIDogdGhpcy5iaW5kaW5nO1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZS5uZ2Zvcm0uY29udHJvbHNbY3RybE5hbWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrTmV3RWRpdGFibGVSb3dDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNOZXdFZGl0YWJsZVJvdyAmJiB0aGlzLmdldEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgdGhlIGlubGluZSBlZGl0IGFuZCBmaWx0ZXIgd2lkZ2V0XG4gICAgc2V0VXBDb250cm9scygpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5saW5lRWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRXaWRnZXRUeXBlID09PSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZEZvcm1Db250cm9sKCk7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gIGNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMub25WYWx1ZUNoYW5nZSh2YWx1ZSwgJ2lubGluZUluc3RhbmNlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTmV3RWRpdGFibGVSb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZvcm1Db250cm9sKCdfbmV3Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19uZXcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3Q29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbk5ld1ZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gIG5ld0NvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKHZhbHVlLCAnaW5saW5lSW5zdGFuY2VOZXcnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25OZXdWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNSb3dGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRm9ybUNvbnRyb2woJ19maWx0ZXInKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJ19maWx0ZXInKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlckNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbkZpbHRlclZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5vbkZpbHRlclZhbHVlQ2hhbmdlLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25GaWx0ZXJWYWx1ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc2V0IHRoZSByb3cgZmlsdGVyIHZhbHVlXG4gICAgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gT24gZmllbGQgdmFsdWUgY2hhbmdlLCBwcm9wYWdhdGUgZXZlbnQgdG8gcGFyZW50IGZvcm1cbiAgICBvbkZpbHRlclZhbHVlQ2hhbmdlKHZhbCkge1xuICAgICAgICB0aGlzLnRhYmxlLnJvd0ZpbHRlclt0aGlzLmZpZWxkXS52YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvLyBHZXQgb2YgdGhlIGFjdGl2ZSBmcm9tIGNvbnRyb2xcbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpc1t0aGlzLmFjdGl2ZUNvbnRyb2xUeXBlXSAmJiB0aGlzW3RoaXMuYWN0aXZlQ29udHJvbFR5cGVdLmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKHZhbCkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCh0aGlzLmFjdGl2ZUNvbnRyb2xUeXBlID09PSAnaW5saW5lSW5zdGFuY2VOZXcnID8gJ19uZXcnIDogdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5lZGl0V2lkZ2V0VHlwZSAhPT0gRm9ybVdpZGdldFR5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIC8vIE9uIGZpZWxkIHZhbHVlIGNoYW5nZSwgYXBwbHkgY2FzY2FkaW5nIGZpbHRlciBhbmQgc2V0IHZhbGlkYXRpb24gbWVzc2FnZVxuICAgIG9uVmFsdWVDaGFuZ2UodmFsLCB3aWRnZXQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwbHlGaWx0ZXJPbkZpZWxkKHRoaXMudGFibGUuZGF0YXNvdXJjZSwgdGhpcy53aWRnZXQsIHRoaXMudGFibGUuZmllbGREZWZzLCB2YWwsIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQ6ICdlZGl0LXdpZGdldC10eXBlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGUubmdmb3JtLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ29udHJvbFR5cGUgPSB3aWRnZXQ7XG4gICAgICAgICAgICBpZiAod2lkZ2V0ID09PSAnaW5saW5lSW5zdGFuY2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLnNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lzTmV3RWRpdGFibGVSb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXMoJ19uZXcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnNfbmV3LnNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRmlsdGVyRGF0YSgpIHtcbiAgICAgICAgLy8gSWYgZmlsdGVyZGF0YXNldCBpcyBub3QgYm91bmQsIGdldCB0aGUgZGF0YSBpbXBsaWNpdGx5XG4gICAgICAgIGlmICh0aGlzLl9pc1Jvd0ZpbHRlciAmJiBpc0RhdGFTZXRXaWRnZXQodGhpcy5maWx0ZXJ3aWRnZXQpICYmICF0aGlzLmJpbmRmaWx0ZXJkYXRhc2V0KSB7XG4gICAgICAgICAgICAvLyBGb3IgbGl2ZSB2YXJpYWJsZSwgZ2V0IHRoZSBkYXRhIHVzaW5nIGRpc3RpbmN0IEFQSVxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLlNVUFBPUlRTX0RJU1RJTkNUX0FQSSkpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcmVsYXRlZCBlbnRpdHkgY29sdW1uc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbGF0ZWRFbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0Wydpcy1yZWxhdGVkJ10gID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRbJ2xvb2t1cC10eXBlJ10gID0gdGhpcy5yZWxhdGVkRW50aXR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRbJ2xvb2t1cC1maWVsZCddID0gbGFzdChzcGxpdCh0aGlzLmZpZWxkLCAnLicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhb3B0aW9ucyA9IGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzKHRoaXMudGFibGUuZGF0YXNvdXJjZSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGF0YXNvdXJjZSA9IHRoaXMudGFibGUuZGF0YXNvdXJjZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlcyh0aGlzLnRhYmxlLmRhdGFzb3VyY2UsIHRoaXMud2lkZ2V0LCAnZmlsdGVyd2lkZ2V0JykudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRhdGFTZXQgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyV2lkZ2V0RGF0YVNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZvciBvdGhlciBkYXRhc291cmNlcywgZ2V0IHRoZSBkYXRhIGZyb20gZGF0YXNvdXJjZSBib3VuZCB0byB0YWJsZVxuICAgICAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogd2F0Y2ggZm4gc2hvdWxkIGFscmVhZHkgYmUgZ2VuZXJhdGVkIGZyb20gdGFibGUgZGF0YXNldC5iaW5kIGV4cHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmJpbmRkYXRhc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBudiA9PiB0aGlzLndpZGdldC5maWx0ZXJkYXRhc2V0ID0gbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgJ2ZpbHRlcmRhdGFzZXQnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRJbmxpbmVXaWRnZXREYXRhKCkge1xuICAgICAgICAvLyBJZiBkYXRhc2V0IGlzIG5vdCBib3VuZCwgZ2V0IHRoZSBkYXRhIGltcGxpY2l0bHlcbiAgICAgICAgaWYgKGlzRGF0YVNldFdpZGdldCh0aGlzWydlZGl0LXdpZGdldC10eXBlJ10pICYmICF0aGlzLmJpbmRkYXRhc2V0ICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy50YWJsZS5kYXRhc291cmNlO1xuICAgICAgICAgICAgaWYgKHRoaXNbJ3JlbGF0ZWQtZW50aXR5LW5hbWUnXSAmJiB0aGlzWydwcmltYXJ5LWtleSddKSB7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGRhdGEgZm9yIHRoZSByZWxhdGVkIGZpZWxkc1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEYXRhU2V0Qm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdzID0gc3BsaXQodGhpcy5iaW5kaW5nLCAnLicpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BlbmRpbmdTcGlubmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEoZGF0YVNvdXJjZSwgdGhpcy53aWRnZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEZpZWxkOiBoZWFkKGJpbmRpbmdzKSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YWZpZWxkOiBsYXN0KGJpbmRpbmdzKSxcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiAnZWRpdC13aWRnZXQtdHlwZSdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLlNVUFBPUlRTX0RJU1RJTkNUX0FQSSkpIHtcbiAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkKGRhdGFTb3VyY2UsIHRoaXMud2lkZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogJ2VkaXQtd2lkZ2V0LXR5cGUnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPbiB0YWJsZSBkYXRhc291cmNlIGNoYW5nZSwgZ2V0IHRoZSBkYXRhIGZvciByb3cgZmlsdGVyc1xuICAgIG9uRGF0YVNvdXJjZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5sb2FkRmlsdGVyRGF0YSgpO1xuICAgICAgICBpZiAodGhpcy50YWJsZS5lZGl0bW9kZSA9PT0gRURJVF9NT0RFLlFVSUNLX0VESVQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZElubGluZVdpZGdldERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgZGF0YSBvbiB0aGUgcm93IGZpbHRlciB3aWRnZXRcbiAgICBzZXRGaWx0ZXJXaWRnZXREYXRhU2V0KCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhc2V0ID0gdGhpcy5fZmlsdGVyRGF0YVNldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgcHJvcHMgb24gdGhlIHJvdyBmaWx0ZXIgd2lkZ2V0XG4gICAgc2V0VXBGaWx0ZXJXaWRnZXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UucmVnaXN0ZXJSZWFkeVN0YXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGF0YVNldFdpZGdldCh0aGlzLmZpbHRlcndpZGdldCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBiaW5kaW5nIGlzIGRlcGFydG1lbnQuZGVwdElkIHRoZW4gZmllbGQgd2lsbCBiZSBkZXB0SWRcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGxhc3QodGhpcy5iaW5kaW5nLnNwbGl0KCcuJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGF0YXNldCA9IHRoaXMuX2ZpbHRlckRhdGFTZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS5kYXRhZmllbGQgPSB0aGlzLmZpbHRlcmRhdGFmaWVsZCB8fCBmaWVsZDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckluc3RhbmNlLmRpc3BsYXlmaWVsZCA9IHRoaXMuZmlsdGVyZGlzcGxheWZpZWxkIHx8IGZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcndpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2UuZGlzcGxheWxhYmVsID0gdGhpcy5maWx0ZXJkaXNwbGF5bGFiZWwgfHwgZmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySW5zdGFuY2Uuc2VhcmNoa2V5ID0gdGhpcy5maWx0ZXJzZWFyY2hrZXkgfHwgZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5USU1FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnN0YW5jZS50aW1lcGF0dGVybiA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCAnaGg6bW06c3MgYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbHRlckluc3RhbmNlLnBsYWNlaG9sZGVyID0gdGhpcy5maWx0ZXJwbGFjZWhvbGRlciB8fCAnJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gTm90aWZpZXMgYWxsIHRoZSBkZXBlbmRlbnQgdmFsaWRhdGlvbiBjb250cm9scyBpbmNhc2Ugb2YgYW55IGNoYW5nZXNcbiAgICBub3RpZnlDaGFuZ2VzKHF1aWNrRWRpdD8pIHtcbiAgICAgICAgZm9yRWFjaCh0aGlzLm5vdGlmeUZvckZpZWxkcywgZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKHF1aWNrRWRpdCAmJiB0aGlzLl9pc05ld0VkaXRhYmxlUm93KSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWxpZGF0aW9uc19uZXcudmFsaWRhdGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWxpZGF0aW9ucy52YWxpZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBXYXRjaGVzIGNvbnRyb2wgZm9yIGRlcGVuZGVudCB2YWxpZGF0aW9uIGNoYW5nZXNcbiAgICBvYnNlcnZlT24oZmllbGRzKSB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZU9uRmllbGRzID0gY2xvbmVEZWVwKGZpZWxkcyk7XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWxpZGF0b3JzIGlubGluZSBhbmQgcXVpY2tlZGl0IG5ldyByb3cgdXNpbmcgcHJvcHNcbiAgICBzZXRVcFZhbGlkYXRvcnMoKSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5zZXRVcFZhbGlkYXRvcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrTmV3RWRpdGFibGVSb3dDb250cm9sKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9uc19uZXcuc2V0VXBWYWxpZGF0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBBc3luYyB2YWxpZGF0b3JzIG9uIHRoZSBpbmxpbmUgYW5kIHF1aWNrZWRpdCBuZXcgcm93IGZvcm0gY29udHJvbFxuICAgIHNldEFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gY2xvbmVEZWVwKHZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIGRlZmF1bHQvY3VzdG9tIHZhbGlkYXRvcnMgb24gdGhlIGlubGluZSBhbmQgcXVpY2tlZGl0IG5ldyByb3cgZm9ybSBjb250cm9sXG4gICAgc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMuc3luY1ZhbGlkYXRvcnMgPSBjbG9uZURlZXAodmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgYm91bmRGbihmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICB9XG5cbiAgICAvLyBTaG93cyBzcGlubmVyIGZvciBhc3luYyB2YWxpZGF0b3JzIGJhc2VkIG9uIHN0YXR1c1xuICAgIG9uU3RhdHVzQ2hhbmdlKHN0YXR1cywgdHlwZSkge1xuICAgICAgICB0aGlzWydzaG93UGVuZGluZ1NwaW5uZXInICsgKHR5cGUgPT09ICdpbmxpbmVJbnN0YW5jZScgPyAnJyA6ICdOZXcnKV0gPSAoc3RhdHVzID09PSAnUEVORElORycpO1xuICAgIH1cblxuICAgIC8qIFN1bW1hcnkgUm93IExvZ2ljIHN0YXJ0ICovXG4gICAgc2V0U3VtbWFyeVJvd0RhdGEoZGF0YSkge1xuICAgICAgICBjb25zdCBuZXdEYXRhID0gKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkgPyBkYXRhIDogW2RhdGFdO1xuICAgICAgICB0aGlzLl9pbnZva2VTdW1tYXJ5Um93RGF0YShuZXdEYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbnZva2VTdW1tYXJ5Um93RGF0YShkYXRhKSB7XG4gICAgICAgIGZvckVhY2goZGF0YSwgKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbTtcbiAgICAgICAgICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3VtbWFyeVJvd0RlZicsIHRoaXMua2V5LCByZXMsIGluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudC52YWx1ZSAmJiBjb250ZW50LnZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnREYXRhID0gY29udGVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50LnZhbHVlLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudERhdGEudmFsdWUgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdW1tYXJ5Um93RGVmJywgdGhpcy5rZXksIGNvbnRlbnREYXRhLCBpbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3VtbWFyeVJvd0RlZicsIHRoaXMua2V5LCBjb250ZW50LCBpbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF9nZXRDb2x1bW5EYXRhKCkge1xuICAgICAgICByZXR1cm4gbWFwKHRoaXMudGFibGUuZGF0YXNldCwgdGhpcy5iaW5kaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWdncmVnYXRlID0ge1xuICAgICAgICBzdW06ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdW0odGhpcy5fZ2V0Q29sdW1uRGF0YSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXZlcmFnZTogKHByZWNpc2lvbjogbnVtYmVyID0gMikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kKG1lYW4odGhpcy5fZ2V0Q29sdW1uRGF0YSgpKSwgcHJlY2lzaW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgY291bnQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2x1bW5EYXRhKCkubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBtaW5pbXVtOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWluKHRoaXMuX2dldENvbHVtbkRhdGEoKSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1heGltdW06ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtYXgodGhpcy5fZ2V0Q29sdW1uRGF0YSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcGVyY2VudDogKHZhbHVlLCBwcmVjaXNpb246IG51bWJlciA9IDIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByb3VuZCgoc3VtKHRoaXMuX2dldENvbHVtbkRhdGEoKSkgLyB2YWx1ZSkgKiAxMDAsIHByZWNpc2lvbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qIFN1bW1hcnkgUm93IExvZ2ljIGVuZCAqL1xuXG4gICAgLy8gU2V0IHRoZSBwcm9wcyBvbiB0aGUgaW5saW5lIGVkaXQgd2lkZ2V0XG4gICAgc2V0SW5saW5lV2lkZ2V0UHJvcCh3aWRnZXQsIHByb3AsIG52KSB7XG4gICAgICAgIGlmIChwcm9wID09PSAnZGF0ZXBhdHRlcm4nICYmIHRoaXMuZWRpdFdpZGdldFR5cGUgPT09IEZvcm1XaWRnZXRUeXBlLlRJTUUpIHtcbiAgICAgICAgICAgIHByb3AgPSAndGltZXBhdHRlcm4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzW3dpZGdldF0gJiYgaXNEZWZpbmVkKG52KSkge1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdW3Byb3BdID0gbnY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBpbmxpbmUgZWRpdCB3aWRnZXRcbiAgICBzZXRVcElubGluZVdpZGdldCh3aWRnZXQpIHtcbiAgICAgICAgdGhpc1t3aWRnZXRdLnJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0RhdGFTZXRXaWRnZXQodGhpc1snZWRpdC13aWRnZXQtdHlwZSddKSkge1xuICAgICAgICAgICAgICAgIHRoaXNbd2lkZ2V0XS5kYXRhc2V0ID0gdGhpcy5kYXRhc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5saW5lV2lkZ2V0UHJvcHMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5saW5lV2lkZ2V0UHJvcCh3aWRnZXQsIGtleSwgdGhpc1trZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdLmRhdGFzb3VyY2UgPSB0aGlzLl9kYXRhc291cmNlO1xuICAgICAgICAgICAgdGhpc1t3aWRnZXRdLmRhdGFvcHRpb25zID0gdGhpcy5fZGF0YW9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3Aod2lkZ2V0LCAnZGF0ZXBhdHRlcm4nLCB0aGlzLmVkaXRkYXRlcGF0dGVybik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFN0eWxlRGVmKCkge1xuICAgICAgICByZXR1cm4gYHdpZHRoOiAke3RoaXMud2lkdGggfHwgJyd9OyBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoaXMuYmFja2dyb3VuZGNvbG9yIHx8ICcnfTsgY29sb3I6ICR7dGhpcy50ZXh0Y29sb3IgfHwgJyd9O2A7XG4gICAgfVxuXG4gICAgcG9wdWxhdGVGaWVsZERlZigpIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMud2lkdGggPT09ICdweCcgPyAgJycgOiAodGhpcy53aWR0aCB8fCAnJyk7XG4gICAgICAgIHRoaXMuZmllbGQgPSB0aGlzLmJpbmRpbmc7XG4gICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSAgdGhpcy5jYXB0aW9uIHx8ICcnO1xuICAgICAgICB0aGlzLnBjRGlzcGxheSA9ICB0aGlzLnBjZGlzcGxheTtcbiAgICAgICAgdGhpcy5tb2JpbGVEaXNwbGF5ID0gIHRoaXMubW9iaWxlZGlzcGxheTtcbiAgICAgICAgdGhpcy50YWJsZXREaXNwbGF5ID0gIHRoaXMudGFibGV0ZGlzcGxheTtcbiAgICAgICAgdGhpcy50ZXh0QWxpZ25tZW50ID0gIHRoaXMudGV4dGFsaWdubWVudDtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSAgdGhpcy5iYWNrZ3JvdW5kY29sb3I7XG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gIHRoaXMudGV4dGNvbG9yO1xuICAgICAgICB0aGlzLnByaW1hcnlLZXkgPSAgdGhpc1sncHJpbWFyeS1rZXknXTtcbiAgICAgICAgdGhpcy5yZWxhdGVkRW50aXR5TmFtZSA9ICB0aGlzWydyZWxhdGVkLWVudGl0eS1uYW1lJ107XG4gICAgICAgIHRoaXMuc3R5bGUgPSAgdGhpcy5nZXRTdHlsZURlZigpO1xuICAgICAgICB0aGlzLmNsYXNzID0gIHRoaXNbJ2NvbC1jbGFzcyddO1xuICAgICAgICB0aGlzLm5nY2xhc3MgPSAgdGhpc1snY29sLW5nLWNsYXNzJ107XG4gICAgICAgIHRoaXMuZm9ybWF0cGF0dGVybiA9ICB0aGlzLmZvcm1hdHBhdHRlcm4gPT09ICd0b051bWJlcicgPyAnbnVtYmVyVG9TdHJpbmcnICA6ICB0aGlzLmZvcm1hdHBhdHRlcm47XG4gICAgICAgIHRoaXMuc2VhcmNoYWJsZSA9ICAodGhpcy50eXBlID09PSAnYmxvYicgfHwgdGhpcy50eXBlID09PSAnY2xvYicpID8gZmFsc2UgIDogIHRoaXMuc2VhcmNoYWJsZTtcbiAgICAgICAgdGhpcy5zaG93aW5maWx0ZXIgPSAodGhpcy5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2hvd2luZmlsdGVyJykgJiYgISgodGhpcyBhcyBhbnkpLnRhYmxlICYmICh0aGlzIGFzIGFueSkudGFibGUuaXNkeW5hbWljdGFibGUpKSA/IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Nob3dpbmZpbHRlcicpIDogKHRoaXMuc2hvdyk7XG4gICAgICAgIHRoaXMubGltaXQgPSAgdGhpcy5saW1pdCA/ICt0aGlzLmxpbWl0ICA6ICB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZWRpdFdpZGdldFR5cGUgPSB0aGlzWydlZGl0LXdpZGdldC10eXBlJ10gPSAgdGhpc1snZWRpdC13aWRnZXQtdHlwZSddIHx8IGdldEVkaXRNb2RlV2lkZ2V0KHRoaXMpO1xuICAgICAgICB0aGlzLmZpbHRlck9uID0gIHRoaXNbJ2ZpbHRlci1vbiddO1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gaXNEZWZpbmVkKHRoaXMuZ2V0QXR0cigncmVhZG9ubHknKSkgPyB0aGlzLmdldEF0dHIoJ3JlYWRvbmx5JykgPT09ICd0cnVlJyA6ICh0aGlzWydyZWxhdGVkLWVudGl0eS1uYW1lJ10gPyAhdGhpc1sncHJpbWFyeS1rZXknXSA6IGluY2x1ZGVzKFsnaWRlbnRpdHknLCAndW5pcXVlaWQnLCAnc2VxdWVuY2UnXSwgdGhpcy5nZW5lcmF0b3IpKTtcbiAgICAgICAgdGhpcy5maWx0ZXJ3aWRnZXQgPSAgdGhpcy5maWx0ZXJ3aWRnZXQgfHwgZ2V0RGF0YVRhYmxlRmlsdGVyV2lkZ2V0KHRoaXMudHlwZSB8fCAnc3RyaW5nJyk7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJEYXRhU2V0Qm91bmQgPSAhIXRoaXMuYmluZGZpbHRlcmRhdGFzZXQ7XG4gICAgICAgIHRoaXMuZGVmYXVsdHZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKHRoaXMuZGVmYXVsdHZhbHVlLCB0aGlzLnR5cGUsIHRoaXMuZWRpdFdpZGdldFR5cGUpO1xuICAgICAgICB0aGlzLmNhc2VpbnNlbnNpdGl2ZSA9ICAhIXRoaXMuZ2V0QXR0cignY2FzZWluc2Vuc2l0aXZlJyk7XG5cbiAgICAgICAgLy8gRm9yIGRhdGUgdGltZSBkYXRhIHR5cGVzLCBpZiBkYXRlIHBhdHRlcm4gaXMgbm90IHNwZWNpZmllZCwgc2V0IHRoZSBhcHAgZm9ybWF0IG9yIGRlZmF1bHQgZm9ybWF0XG4gICAgICAgIGlmIChpc0RhdGVUaW1lVHlwZSh0aGlzLnR5cGUpICYmIHRoaXMuZm9ybWF0cGF0dGVybiA9PT0gJ3RvRGF0ZScgJiYgIXRoaXMuZGF0ZXBhdHRlcm4pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGb3JtYXQgPSBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQodGhpcy50eXBlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLkRBVEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuICA9IHRoaXMuYXBwRGVmYXVsdHMuZGF0ZUZvcm1hdCB8fCBkZWZhdWx0Rm9ybWF0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuICA9IHRoaXMuYXBwRGVmYXVsdHMudGltZUZvcm1hdCB8fCBkZWZhdWx0Rm9ybWF0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IERhdGFUeXBlLlRJTUVTVEFNUCB8fCB0aGlzLnR5cGUgPT09IERhdGFUeXBlLkRBVEVUSU1FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlcGF0dGVybiAgPSB0aGlzLmFwcERlZmF1bHRzLmRhdGVUaW1lRm9ybWF0IHx8IGRlZmF1bHRGb3JtYXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KSB7XG4gICAgICAgIGlmICghdGhpcy5fcHJvcHNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gbnYgfHwgJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eSgnZGlzcGxheU5hbWUnLCB0aGlzLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjU5MzRdOiB1cGRhdGUgdGhlIGhlYWRlckNvbmZpZyBsaXN0IHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIGRpc3BsYXkgbmFtZVxuICAgICAgICAgICAgICAgIC8vIHdoZW4gY29sdW1uIGlzIGluc2lkZSBhIGdyb3VwIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gZmllbGROYW1lID8gcGFyc2VJbnQodGhpcy5nZXRBdHRyKCdpbmRleCcpLCAxMCkgOiBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBjb2x1bW4gd2l0aCBoZWFkZXIgY29uZmlnIHRvIGNyZWF0ZSBncm91cCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFibGUuaGVhZGVyQ29uZmlnLnNvbWUodmFsdWUgPT4gdGhpcy5maWVsZCA9PSB2YWx1ZS5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUodGhpcy50YWJsZS5oZWFkZXJDb25maWcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuZGlzcGxheU5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSwgZmllbGROYW1lLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmhlYWRlckNvbmZpZy5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQgPT0gdmFsdWUuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5kaXNwbGF5TmFtZSA9IHRoaXMuZGlzcGxheU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHR2YWx1ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0dmFsdWUgPSBnZXREZWZhdWx0VmFsdWUodGhpcy5kZWZhdWx0dmFsdWUsIHRoaXMudHlwZSwgdGhpcy5lZGl0V2lkZ2V0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnJlZHJhdyh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmZpbHRlciA9IHRoaXMubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3Nob3dpbmZpbHRlcicpID8gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2hvd2luZmlsdGVyJykgOiBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcmRhdGFzZXQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRhdGFTZXQgPSBudjtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlcldpZGdldERhdGFTZXQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VkaXRkYXRlcGF0dGVybic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbmxpbmVXaWRnZXRQcm9wKCdpbmxpbmVJbnN0YW5jZScsICdkYXRlcGF0dGVybicsIG52KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3AoJ2lubGluZUluc3RhbmNlTmV3JywgJ2RhdGVwYXR0ZXJuJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hvd2luZmlsdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmZpbHRlciA9IG52O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoaW5saW5lV2lkZ2V0UHJvcHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldElubGluZVdpZGdldFByb3AoJ2lubGluZUluc3RhbmNlJywga2V5LCBudik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5saW5lV2lkZ2V0UHJvcCgnaW5saW5lSW5zdGFuY2VOZXcnLCBrZXksIG52KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICB9XG5cbiAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eSwgbnYpIHtcbiAgICAgICAgdGhpc1twcm9wZXJ0eV0gPSBudjtcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgY2FzZSAnZGlzcGxheU5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRDb2x1bW5Qcm9wJywgdGhpcy5maWVsZCwgcHJvcGVydHksIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5yZWRyYXcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -44,13 +44,14 @@ export class TableColumnGroupDirective extends BaseComponent {
44
44
  setHeaderConfigForTable(this.table.headerConfig, this.config, fieldName, fieldName ? colIndex : headerIndex);
45
45
  }
46
46
  static { this.ɵfac = function TableColumnGroupDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableColumnGroupDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(TableColumnGroupDirective, 12), i0.ɵɵdirectiveInject(i1.TableComponent, 8), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
47
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TableColumnGroupDirective, selectors: [["", "wmTableColumnGroup", ""]], features: [i0.ɵɵProvidersFeature([
47
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TableColumnGroupDirective, selectors: [["", "wmTableColumnGroup", ""]], standalone: true, features: [i0.ɵɵProvidersFeature([
48
48
  provideAsWidgetRef(TableColumnGroupDirective)
49
49
  ]), i0.ɵɵInheritDefinitionFeature] }); }
50
50
  }
51
51
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableColumnGroupDirective, [{
52
52
  type: Directive,
53
53
  args: [{
54
+ standalone: true,
54
55
  selector: '[wmTableColumnGroup]',
55
56
  providers: [
56
57
  provideAsWidgetRef(TableColumnGroupDirective)
@@ -68,4 +69,4 @@ export class TableColumnGroupDirective extends BaseComponent {
68
69
  }, {
69
70
  type: Optional
70
71
  }] }], null); })();
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS1jb2x1bW4tZ3JvdXAvdGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsYUFBYSxFQUFHLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRXBELE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUMsQ0FBQztBQVEzRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTthQUNqRCxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQVV6QyxZQUNJLEdBQWEsRUFDa0IsS0FBZ0MsRUFDNUMsS0FBcUIsRUFDQSxlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUpaLFVBQUssR0FBTCxLQUFLLENBQTJCO1FBQzVDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBTDVDLFdBQU0sR0FBUSxFQUFFLENBQUM7SUFTakIsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUU7WUFDL0IsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsSUFBSTtZQUNiLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRO1lBQzdDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRztRQUN6QixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0YsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLHFIQUFxSDtRQUNySCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2hELHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqSCxDQUFDOzBIQWxEUSx5QkFBeUIsMkpBZXRCLGtCQUFrQjtvRUFmckIseUJBQXlCLGdGQUp2QjtnQkFDUCxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQzthQUNoRDs7aUZBRVEseUJBQXlCO2NBTnJDLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxTQUFTLEVBQUU7b0JBQ1Asa0JBQWtCLDJCQUEyQjtpQkFDaEQ7YUFDSjs7c0JBY1EsUUFBUTs7c0JBQUksUUFBUTs7c0JBQ3BCLFFBQVE7O3NCQUNSLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCwgT3B0aW9uYWwsIFNraXBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgIHByb3ZpZGVBc1dpZGdldFJlZiwgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGV9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGFibGUtY29sdW1uLWdyb3VwLnByb3BzJztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tdGFibGUtY29sdW1uLWdyb3VwJywgaG9zdENsYXNzOiAnJ307XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3dtVGFibGVDb2x1bW5Hcm91cF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVGFibGVDb2x1bW5Hcm91cERpcmVjdGl2ZSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uR3JvdXBEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgYWNjZXNzcm9sZXM7XG4gICAgYmFja2dyb3VuZGNvbG9yO1xuICAgIGNhcHRpb247XG4gICAgY29sQ2xhc3M7XG4gICAgbmFtZTtcbiAgICB0ZXh0YWxpZ25tZW50O1xuICAgIGNvbmZpZzogYW55ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGdyb3VwOiBUYWJsZUNvbHVtbkdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGFibGU6IFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5jYXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICBpc0dyb3VwOiB0cnVlLFxuICAgICAgICAgICAgYWNjZXNzcm9sZXM6IHRoaXMuYWNjZXNzcm9sZXMsXG4gICAgICAgICAgICB0ZXh0QWxpZ25tZW50OiB0aGlzLnRleHRhbGlnbm1lbnQgfHwgJ2NlbnRlcicsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgY2xhc3M6IHRoaXNbJ2NvbC1jbGFzcyddXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NhcHRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kaXNwbGF5TmFtZSA9IG52IHx8ICcnO1xuICAgICAgICAgICAgdGhpcy50YWJsZS5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldENvbHVtblByb3AnLCB0aGlzLmNvbmZpZy5maWVsZCwgJ2Rpc3BsYXlOYW1lJywgbnYsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbmZpZygpO1xuICAgICAgICAvLyB3aGVuIGdyb3VwIGlzIGluc2lkZSBhbm90aGVyIGdyb3VwIChpLmUuIHN1Yi1sZXZlbCBjb2x1bW4tZ3JvdXApIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgY29uc3QgaGVhZGVySW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgY29sSW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2luZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLm5hbWU7XG4gICAgICAgIHNldEhlYWRlckNvbmZpZ0ZvclRhYmxlKHRoaXMudGFibGUuaGVhZGVyQ29uZmlnLCB0aGlzLmNvbmZpZywgZmllbGROYW1lLCBmaWVsZE5hbWUgPyBjb2xJbmRleCA6IGhlYWRlckluZGV4KTtcbiAgICB9XG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS1jb2x1bW4tZ3JvdXAvdGFibGUtY29sdW1uLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsYUFBYSxFQUFHLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRXBELE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUMsQ0FBQztBQVMzRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTthQUNqRCxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQVV6QyxZQUNJLEdBQWEsRUFDa0IsS0FBZ0MsRUFDNUMsS0FBcUIsRUFDQSxlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUpaLFVBQUssR0FBTCxLQUFLLENBQTJCO1FBQzVDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBTDVDLFdBQU0sR0FBUSxFQUFFLENBQUM7SUFTakIsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUU7WUFDL0IsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsSUFBSTtZQUNiLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRO1lBQzdDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRztRQUN6QixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0YsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLHFIQUFxSDtRQUNySCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2hELHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqSCxDQUFDOzBIQWxEUSx5QkFBeUIsMkpBZXRCLGtCQUFrQjtvRUFmckIseUJBQXlCLGtHQUp2QjtnQkFDUCxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQzthQUNoRDs7aUZBRVEseUJBQXlCO2NBUHJDLFNBQVM7ZUFBQztnQkFDVCxVQUFVLEVBQUUsSUFBSTtnQkFDZCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxTQUFTLEVBQUU7b0JBQ1Asa0JBQWtCLDJCQUEyQjtpQkFDaEQ7YUFDSjs7c0JBY1EsUUFBUTs7c0JBQUksUUFBUTs7c0JBQ3BCLFFBQVE7O3NCQUNSLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCwgT3B0aW9uYWwsIFNraXBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgIHByb3ZpZGVBc1dpZGdldFJlZiwgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGV9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vdGFibGUtY29sdW1uLWdyb3VwLnByb3BzJztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tdGFibGUtY29sdW1uLWdyb3VwJywgaG9zdENsYXNzOiAnJ307XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtVGFibGVDb2x1bW5Hcm91cF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoVGFibGVDb2x1bW5Hcm91cERpcmVjdGl2ZSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uR3JvdXBEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgYWNjZXNzcm9sZXM7XG4gICAgYmFja2dyb3VuZGNvbG9yO1xuICAgIGNhcHRpb247XG4gICAgY29sQ2xhc3M7XG4gICAgbmFtZTtcbiAgICB0ZXh0YWxpZ25tZW50O1xuICAgIGNvbmZpZzogYW55ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGdyb3VwOiBUYWJsZUNvbHVtbkdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGFibGU6IFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5jYXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICBpc0dyb3VwOiB0cnVlLFxuICAgICAgICAgICAgYWNjZXNzcm9sZXM6IHRoaXMuYWNjZXNzcm9sZXMsXG4gICAgICAgICAgICB0ZXh0QWxpZ25tZW50OiB0aGlzLnRleHRhbGlnbm1lbnQgfHwgJ2NlbnRlcicsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgY2xhc3M6IHRoaXNbJ2NvbC1jbGFzcyddXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NhcHRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kaXNwbGF5TmFtZSA9IG52IHx8ICcnO1xuICAgICAgICAgICAgdGhpcy50YWJsZS5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldENvbHVtblByb3AnLCB0aGlzLmNvbmZpZy5maWVsZCwgJ2Rpc3BsYXlOYW1lJywgbnYsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbmZpZygpO1xuICAgICAgICAvLyB3aGVuIGdyb3VwIGlzIGluc2lkZSBhbm90aGVyIGdyb3VwIChpLmUuIHN1Yi1sZXZlbCBjb2x1bW4tZ3JvdXApIHRoZW4gY29uc2lkZXIgdGhlIGNvbCBpbmRleCBhbmQgbm90IGhlYWRlciBpbmRleC5cbiAgICAgICAgY29uc3QgaGVhZGVySW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2hlYWRlckluZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgY29sSW5kZXggPSBwYXJzZUludCh0aGlzLmdldEF0dHIoJ2luZGV4JyksIDEwKTtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLm5hbWU7XG4gICAgICAgIHNldEhlYWRlckNvbmZpZ0ZvclRhYmxlKHRoaXMudGFibGUuaGVhZGVyQ29uZmlnLCB0aGlzLmNvbmZpZywgZmllbGROYW1lLCBmaWVsZE5hbWUgPyBjb2xJbmRleCA6IGhlYWRlckluZGV4KTtcbiAgICB9XG59XG4iXX0=