@fundamental-ngx/core 0.42.0-rc.2 → 0.42.0-rc.21

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 (397) hide show
  1. package/alert/alert.component.d.ts +5 -4
  2. package/alert/alert.module.d.ts +2 -1
  3. package/avatar/avatar.component.d.ts +2 -4
  4. package/avatar-group/directives/avatar-group-focusable-avatar.directive.d.ts +2 -6
  5. package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +2 -4
  6. package/bar/bar.component.d.ts +2 -4
  7. package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +2 -4
  8. package/button/button.component.d.ts +2 -6
  9. package/card/card-content.component.d.ts +2 -4
  10. package/card/card-counter.directive.d.ts +2 -4
  11. package/card/card-header.component.d.ts +2 -4
  12. package/card/card-loader.component.d.ts +2 -4
  13. package/card/card-second-subtitle.directive.d.ts +2 -4
  14. package/card/card-subtitle.directive.d.ts +2 -4
  15. package/card/card-title.directive.d.ts +2 -4
  16. package/card/card.component.d.ts +3 -5
  17. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -4
  18. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -4
  19. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -4
  20. package/card/kpi/card-kpi-header.component.d.ts +2 -4
  21. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -4
  22. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -4
  23. package/card/kpi/card-kpi-value.directive.d.ts +2 -4
  24. package/dialog/base/dialog-base.class.d.ts +2 -2
  25. package/dialog/dialog-body/dialog-body.component.d.ts +2 -4
  26. package/dialog/dialog-container/dialog-container.component.d.ts +0 -2
  27. package/dialog/dialog-service/dialog.service.d.ts +4 -0
  28. package/dialog/dialog.component.d.ts +0 -2
  29. package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +4 -6
  30. package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +2 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +3 -5
  32. package/esm2020/alert/alert.component.mjs +7 -19
  33. package/esm2020/alert/alert.module.mjs +5 -4
  34. package/esm2020/avatar/avatar.component.mjs +6 -10
  35. package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +4 -12
  36. package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +2 -2
  37. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -7
  38. package/esm2020/bar/bar.component.mjs +3 -7
  39. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +2 -2
  40. package/esm2020/breadcrumb/breadcrumb.component.mjs +2 -2
  41. package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -8
  42. package/esm2020/button/button.component.mjs +3 -9
  43. package/esm2020/card/card-content.component.mjs +3 -7
  44. package/esm2020/card/card-counter.directive.mjs +3 -7
  45. package/esm2020/card/card-header.component.mjs +4 -8
  46. package/esm2020/card/card-loader.component.mjs +3 -7
  47. package/esm2020/card/card-second-subtitle.directive.mjs +3 -7
  48. package/esm2020/card/card-subtitle.directive.mjs +3 -7
  49. package/esm2020/card/card-title.directive.mjs +3 -7
  50. package/esm2020/card/card.component.mjs +3 -7
  51. package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -7
  52. package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -7
  53. package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -7
  54. package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -7
  55. package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -7
  56. package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -7
  57. package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -7
  58. package/esm2020/checkbox/checkbox/checkbox.component.mjs +3 -3
  59. package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
  60. package/esm2020/dialog/base/dialog-base.class.mjs +6 -6
  61. package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -7
  62. package/esm2020/dialog/dialog-container/dialog-container.component.mjs +1 -5
  63. package/esm2020/dialog/dialog-service/dialog.service.mjs +10 -2
  64. package/esm2020/dialog/dialog.component.mjs +3 -7
  65. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +4 -8
  66. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +5 -9
  67. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -7
  68. package/esm2020/facets/content/facet-content.component.mjs +4 -8
  69. package/esm2020/facets/facet/facet.component.mjs +13 -19
  70. package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -7
  71. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -7
  72. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -7
  73. package/esm2020/form/form-control/form-control.component.mjs +3 -7
  74. package/esm2020/form/form-group/form-group.component.mjs +3 -7
  75. package/esm2020/form/form-message/form-message.component.mjs +3 -7
  76. package/esm2020/icon/icon.component.mjs +3 -7
  77. package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -7
  78. package/esm2020/info-label/info-label.component.mjs +3 -7
  79. package/esm2020/inline-help/inline-help.directive.mjs +26 -15
  80. package/esm2020/input-group/input-group-directives.mjs +6 -14
  81. package/esm2020/input-group/input-group.component.mjs +2 -2
  82. package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -7
  83. package/esm2020/layout-grid/layout-grid.component.mjs +3 -7
  84. package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -7
  85. package/esm2020/link/link.component.mjs +9 -13
  86. package/esm2020/list/directives/list-icon.directive.mjs +3 -7
  87. package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -7
  88. package/esm2020/list/list-message.directive.mjs +3 -7
  89. package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +2 -2
  90. package/esm2020/message-box/message-box-container/message-box-container.component.mjs +1 -5
  91. package/esm2020/message-box/message-box.component.mjs +1 -5
  92. package/esm2020/message-page/message-page.component.mjs +3 -7
  93. package/esm2020/message-strip/message-strip.component.mjs +5 -9
  94. package/esm2020/multi-input/multi-input.component.mjs +31 -17
  95. package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -7
  96. package/esm2020/notification/notification-group/notification-group.component.mjs +3 -7
  97. package/esm2020/notification/notification-utils/notification-group-base.mjs +2 -2
  98. package/esm2020/object-marker/object-marker.component.mjs +3 -7
  99. package/esm2020/object-number/object-number.component.mjs +3 -7
  100. package/esm2020/object-status/object-status.component.mjs +3 -7
  101. package/esm2020/panel/panel.component.mjs +3 -7
  102. package/esm2020/popover/popover-body/popover-body.component.mjs +5 -2
  103. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
  104. package/esm2020/radio/radio-button/radio-button.component.mjs +2 -2
  105. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -7
  106. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +4 -8
  107. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -7
  108. package/esm2020/segmented-button/segmented-button.component.mjs +4 -4
  109. package/esm2020/select/select.component.mjs +4 -4
  110. package/esm2020/slider/slider.component.mjs +3 -7
  111. package/esm2020/status-indicator/status-indicator.component.mjs +4 -8
  112. package/esm2020/table/directives/table-cell.directive.mjs +31 -26
  113. package/esm2020/table/directives/table-icon.directive.mjs +3 -9
  114. package/esm2020/table/directives/table-row.directive.mjs +34 -19
  115. package/esm2020/table/table-wrapper.component.mjs +2 -2
  116. package/esm2020/table/table.component.mjs +1 -1
  117. package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -7
  118. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -9
  119. package/esm2020/tabs/tab-utils/tab-directives.mjs +3 -9
  120. package/esm2020/tile/directives/numeric-content.directives.mjs +14 -34
  121. package/esm2020/tile/directives/tile.directives.mjs +9 -21
  122. package/esm2020/tile/tile.component.mjs +2 -2
  123. package/esm2020/token/token-input.directive.mjs +3 -7
  124. package/esm2020/token/tokenizer.component.mjs +12 -16
  125. package/esm2020/toolbar/toolbar.component.mjs +2 -2
  126. package/esm2020/tree/components/tree-item/tree-item.component.mjs +1 -1
  127. package/esm2020/tree/models/base-tree-item.class.mjs +2 -6
  128. package/esm2020/tree/tree.component.mjs +3 -7
  129. package/esm2020/upload-collection/upload-collection-item.directive.mjs +2 -2
  130. package/esm2020/wizard/wizard.component.mjs +2 -2
  131. package/facets/content/facet-content.component.d.ts +2 -4
  132. package/facets/facet/facet.component.d.ts +2 -6
  133. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -4
  134. package/feed-list-item/components/item/feed-list-item.component.d.ts +2 -4
  135. package/feed-list-item/components/list/feed-list.component.d.ts +2 -4
  136. package/fesm2015/fundamental-ngx-core-alert.mjs +48 -58
  137. package/fesm2015/fundamental-ngx-core-alert.mjs.map +1 -1
  138. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +6 -18
  139. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  140. package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -9
  141. package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
  142. package/fesm2015/fundamental-ngx-core-bar.mjs +2 -6
  143. package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
  144. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +2 -2
  145. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  146. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +3 -7
  147. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  148. package/fesm2015/fundamental-ngx-core-button.mjs +2 -8
  149. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  150. package/fesm2015/fundamental-ngx-core-card.mjs +31 -91
  151. package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
  152. package/fesm2015/fundamental-ngx-core-checkbox.mjs +2 -2
  153. package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
  154. package/fesm2015/fundamental-ngx-core-content-density.mjs +2 -2
  155. package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  156. package/fesm2015/fundamental-ngx-core-dialog.mjs +18 -23
  157. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  158. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -15
  159. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  160. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  161. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  162. package/fesm2015/fundamental-ngx-core-facets.mjs +15 -25
  163. package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
  164. package/fesm2015/fundamental-ngx-core-feed-input.mjs +2 -6
  165. package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
  166. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +4 -12
  167. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  168. package/fesm2015/fundamental-ngx-core-form.mjs +6 -18
  169. package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
  170. package/fesm2015/fundamental-ngx-core-icon.mjs +2 -6
  171. package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
  172. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +2 -6
  173. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  174. package/fesm2015/fundamental-ngx-core-info-label.mjs +2 -6
  175. package/fesm2015/fundamental-ngx-core-info-label.mjs.map +1 -1
  176. package/fesm2015/fundamental-ngx-core-inline-help.mjs +24 -13
  177. package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
  178. package/fesm2015/fundamental-ngx-core-input-group.mjs +6 -14
  179. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  180. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +4 -12
  181. package/fesm2015/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  182. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +2 -6
  183. package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  184. package/fesm2015/fundamental-ngx-core-link.mjs +8 -12
  185. package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
  186. package/fesm2015/fundamental-ngx-core-list.mjs +6 -18
  187. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  188. package/fesm2015/fundamental-ngx-core-menu.mjs +1 -1
  189. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  190. package/fesm2015/fundamental-ngx-core-message-box.mjs +0 -8
  191. package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
  192. package/fesm2015/fundamental-ngx-core-message-page.mjs +2 -6
  193. package/fesm2015/fundamental-ngx-core-message-page.mjs.map +1 -1
  194. package/fesm2015/fundamental-ngx-core-message-strip.mjs +4 -8
  195. package/fesm2015/fundamental-ngx-core-message-strip.mjs.map +1 -1
  196. package/fesm2015/fundamental-ngx-core-multi-input.mjs +31 -15
  197. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  198. package/fesm2015/fundamental-ngx-core-notification.mjs +5 -13
  199. package/fesm2015/fundamental-ngx-core-notification.mjs.map +1 -1
  200. package/fesm2015/fundamental-ngx-core-object-marker.mjs +2 -6
  201. package/fesm2015/fundamental-ngx-core-object-marker.mjs.map +1 -1
  202. package/fesm2015/fundamental-ngx-core-object-number.mjs +2 -6
  203. package/fesm2015/fundamental-ngx-core-object-number.mjs.map +1 -1
  204. package/fesm2015/fundamental-ngx-core-object-status.mjs +2 -6
  205. package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
  206. package/fesm2015/fundamental-ngx-core-panel.mjs +2 -6
  207. package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
  208. package/fesm2015/fundamental-ngx-core-popover.mjs +4 -1
  209. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  210. package/fesm2015/fundamental-ngx-core-product-switch.mjs +1 -1
  211. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  212. package/fesm2015/fundamental-ngx-core-radio.mjs +1 -1
  213. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  214. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +2 -6
  215. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  216. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  217. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  218. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +3 -3
  219. package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  220. package/fesm2015/fundamental-ngx-core-select.mjs +3 -3
  221. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  222. package/fesm2015/fundamental-ngx-core-slider.mjs +2 -6
  223. package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
  224. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +3 -7
  225. package/fesm2015/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  226. package/fesm2015/fundamental-ngx-core-table.mjs +64 -48
  227. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  228. package/fesm2015/fundamental-ngx-core-tabs.mjs +6 -22
  229. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  230. package/fesm2015/fundamental-ngx-core-tile.mjs +22 -54
  231. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  232. package/fesm2015/fundamental-ngx-core-token.mjs +13 -21
  233. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  234. package/fesm2015/fundamental-ngx-core-toolbar.mjs +1 -1
  235. package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
  236. package/fesm2015/fundamental-ngx-core-tree.mjs +3 -11
  237. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  238. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +1 -1
  239. package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  240. package/fesm2015/fundamental-ngx-core-wizard.mjs +1 -1
  241. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  242. package/fesm2020/fundamental-ngx-core-alert.mjs +48 -58
  243. package/fesm2020/fundamental-ngx-core-alert.mjs.map +1 -1
  244. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +6 -18
  245. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  246. package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -9
  247. package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
  248. package/fesm2020/fundamental-ngx-core-bar.mjs +2 -6
  249. package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
  250. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +2 -2
  251. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  252. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +3 -7
  253. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  254. package/fesm2020/fundamental-ngx-core-button.mjs +2 -8
  255. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  256. package/fesm2020/fundamental-ngx-core-card.mjs +31 -91
  257. package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
  258. package/fesm2020/fundamental-ngx-core-checkbox.mjs +2 -2
  259. package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
  260. package/fesm2020/fundamental-ngx-core-content-density.mjs +2 -2
  261. package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  262. package/fesm2020/fundamental-ngx-core-dialog.mjs +18 -23
  263. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  264. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -15
  265. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  266. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  267. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  268. package/fesm2020/fundamental-ngx-core-facets.mjs +15 -25
  269. package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
  270. package/fesm2020/fundamental-ngx-core-feed-input.mjs +2 -6
  271. package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
  272. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +4 -12
  273. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  274. package/fesm2020/fundamental-ngx-core-form.mjs +6 -18
  275. package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
  276. package/fesm2020/fundamental-ngx-core-icon.mjs +2 -6
  277. package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
  278. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +2 -6
  279. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  280. package/fesm2020/fundamental-ngx-core-info-label.mjs +2 -6
  281. package/fesm2020/fundamental-ngx-core-info-label.mjs.map +1 -1
  282. package/fesm2020/fundamental-ngx-core-inline-help.mjs +24 -13
  283. package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
  284. package/fesm2020/fundamental-ngx-core-input-group.mjs +6 -14
  285. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  286. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +4 -12
  287. package/fesm2020/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  288. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +2 -6
  289. package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  290. package/fesm2020/fundamental-ngx-core-link.mjs +8 -12
  291. package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
  292. package/fesm2020/fundamental-ngx-core-list.mjs +6 -18
  293. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  294. package/fesm2020/fundamental-ngx-core-menu.mjs +1 -1
  295. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  296. package/fesm2020/fundamental-ngx-core-message-box.mjs +0 -8
  297. package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
  298. package/fesm2020/fundamental-ngx-core-message-page.mjs +2 -6
  299. package/fesm2020/fundamental-ngx-core-message-page.mjs.map +1 -1
  300. package/fesm2020/fundamental-ngx-core-message-strip.mjs +4 -8
  301. package/fesm2020/fundamental-ngx-core-message-strip.mjs.map +1 -1
  302. package/fesm2020/fundamental-ngx-core-multi-input.mjs +29 -15
  303. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  304. package/fesm2020/fundamental-ngx-core-notification.mjs +5 -13
  305. package/fesm2020/fundamental-ngx-core-notification.mjs.map +1 -1
  306. package/fesm2020/fundamental-ngx-core-object-marker.mjs +2 -6
  307. package/fesm2020/fundamental-ngx-core-object-marker.mjs.map +1 -1
  308. package/fesm2020/fundamental-ngx-core-object-number.mjs +2 -6
  309. package/fesm2020/fundamental-ngx-core-object-number.mjs.map +1 -1
  310. package/fesm2020/fundamental-ngx-core-object-status.mjs +2 -6
  311. package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
  312. package/fesm2020/fundamental-ngx-core-panel.mjs +2 -6
  313. package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
  314. package/fesm2020/fundamental-ngx-core-popover.mjs +4 -1
  315. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  316. package/fesm2020/fundamental-ngx-core-product-switch.mjs +1 -1
  317. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  318. package/fesm2020/fundamental-ngx-core-radio.mjs +1 -1
  319. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  320. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +2 -6
  321. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  322. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  323. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  324. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +3 -3
  325. package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  326. package/fesm2020/fundamental-ngx-core-select.mjs +3 -3
  327. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  328. package/fesm2020/fundamental-ngx-core-slider.mjs +2 -6
  329. package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
  330. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +3 -7
  331. package/fesm2020/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  332. package/fesm2020/fundamental-ngx-core-table.mjs +64 -48
  333. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  334. package/fesm2020/fundamental-ngx-core-tabs.mjs +6 -22
  335. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  336. package/fesm2020/fundamental-ngx-core-tile.mjs +22 -54
  337. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  338. package/fesm2020/fundamental-ngx-core-token.mjs +13 -21
  339. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  340. package/fesm2020/fundamental-ngx-core-toolbar.mjs +1 -1
  341. package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
  342. package/fesm2020/fundamental-ngx-core-tree.mjs +3 -11
  343. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  344. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +1 -1
  345. package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  346. package/fesm2020/fundamental-ngx-core-wizard.mjs +1 -1
  347. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  348. package/form/form-control/form-control.component.d.ts +2 -4
  349. package/form/form-group/form-group.component.d.ts +2 -4
  350. package/form/form-message/form-message.component.d.ts +2 -4
  351. package/fundamental-ngx-core-v0.42.0-rc.21.tgz +0 -0
  352. package/icon/icon.component.d.ts +2 -4
  353. package/illustrated-message/illustrated-message.component.d.ts +2 -4
  354. package/info-label/info-label.component.d.ts +2 -4
  355. package/inline-help/inline-help.directive.d.ts +9 -3
  356. package/input-group/input-group-directives.d.ts +5 -9
  357. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -4
  358. package/layout-grid/layout-grid.component.d.ts +2 -4
  359. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +4 -6
  360. package/link/link.component.d.ts +2 -4
  361. package/list/directives/list-icon.directive.d.ts +4 -5
  362. package/list/directives/list-navigation-item-text.directive.d.ts +2 -4
  363. package/list/list-message.directive.d.ts +2 -4
  364. package/message-box/message-box-container/message-box-container.component.d.ts +0 -2
  365. package/message-box/message-box.component.d.ts +0 -2
  366. package/message-page/message-page.component.d.ts +2 -4
  367. package/message-strip/message-strip.component.d.ts +4 -5
  368. package/multi-input/multi-input.component.d.ts +9 -5
  369. package/notification/directives/notification-indicator.directive.d.ts +2 -4
  370. package/notification/notification-group/notification-group.component.d.ts +2 -4
  371. package/object-marker/object-marker.component.d.ts +2 -4
  372. package/object-number/object-number.component.d.ts +2 -4
  373. package/object-status/object-status.component.d.ts +2 -4
  374. package/package.json +4 -4
  375. package/panel/panel.component.d.ts +2 -4
  376. package/radio/radio-button/radio-button.component.d.ts +1 -1
  377. package/rating-indicator/components/rating-indicator.component.d.ts +2 -4
  378. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +2 -4
  379. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -4
  380. package/schematics/add-dependencies/index.js +6 -6
  381. package/slider/slider.component.d.ts +2 -4
  382. package/status-indicator/status-indicator.component.d.ts +2 -4
  383. package/table/directives/table-cell.directive.d.ts +6 -12
  384. package/table/directives/table-icon.directive.d.ts +2 -6
  385. package/table/directives/table-row.directive.d.ts +10 -10
  386. package/tabs/tab-item/tab-item.directive.d.ts +2 -4
  387. package/tabs/tab-nav/tab-nav.component.d.ts +4 -8
  388. package/tabs/tab-utils/tab-directives.d.ts +2 -6
  389. package/tile/directives/numeric-content.directives.d.ts +10 -20
  390. package/tile/directives/tile.directives.d.ts +6 -12
  391. package/tile/tile.component.d.ts +1 -1
  392. package/token/token-input.directive.d.ts +2 -4
  393. package/token/tokenizer.component.d.ts +2 -4
  394. package/toolbar/toolbar.component.d.ts +1 -1
  395. package/tree/models/base-tree-item.class.d.ts +1 -3
  396. package/tree/tree.component.d.ts +1 -3
  397. package/fundamental-ngx-core-v0.42.0-rc.2.tgz +0 -0
@@ -165,7 +165,7 @@ export class WizardComponent {
165
165
  _getDialogOffset() {
166
166
  let retVal = 0;
167
167
  if (this._dialogBodyComponent) {
168
- const dialogBody = this._dialogBodyComponent.elementRef().nativeElement;
168
+ const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
169
169
  if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {
170
170
  this._dialogBodyComponent.dialogConfig.verticalPadding = false;
171
171
  const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');
@@ -550,4 +550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
550
550
  type: HostListener,
551
551
  args: ['window:resize']
552
552
  }] } });
553
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQWMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlD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QUMvQjtxQkFDSixRQUNLO3dCQUNGLElBQUksRUFBRSxRQUFRO3FCQUNqQjs7MEJBaUZJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsd0JBQXdCOzRDQTFFaEQsY0FBYztzQkFEYixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixrQkFBa0I7c0JBRmpCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsc0NBQXNDO2dCQUtuRCxrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBU04sU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFLOUIsS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQXdDN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaWFsb2dCb2R5Q29tcG9uZW50LCBGRF9ESUFMT0dfQk9EWV9DT01QT05FTlQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgV2l6YXJkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLXN0ZXAvd2l6YXJkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1jb250ZW50L3dpemFyZC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENVUlJFTlRfU1RFUF9TVEFUVVMsIFVQQ09NSU5HX1NURVBfU1RBVFVTLCBDT01QTEVURURfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXSVpBUkQgfSBmcm9tICcuL3dpemFyZC1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgRmRMYW5ndWFnZSwgRkRfTEFOR1VBR0UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvV2l6YXJkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgc2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtd2l6YXJkLS1yZXNwb25zaXZlLXBhZGRpbmdzJylcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgYSBzdW1tYXJ5IHN0ZXAuICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVN1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBhZGRpbmcgYXJpYSBsYWJlbCB0byB0aGUgY29tcG9uZW50XG4gICAgICogSWYgbm90IHByb3ZpZGVkLCBpcyBiZWluZyB0cmFuc2xhdGVkIGJ5IGkxOG4gcGFja2FnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFNjcm9sbGJhckRpcmVjdGl2ZSlcbiAgICBzY3JvbGxiYXI6IFNjcm9sbGJhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgX2xhbmd1YWdlJDogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChGRF9ESUFMT0dfQk9EWV9DT01QT05FTlQpIHByaXZhdGUgX2RpYWxvZ0JvZHlDb21wb25lbnQ6IERpYWxvZ0JvZHlDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgY29uc3Qgc3ViID0gX2xhbmd1YWdlJC5zdWJzY3JpYmUoKGxhbmcpID0+IHtcbiAgICAgICAgICAgIC8vIHNldCBhcmlhTGFiZWwgb25seSBpZiBpdCdzIG5vdCBhcHBsaWVkIG1hbnVhbGx5XG4gICAgICAgICAgICB0aGlzLmFyaWFMYWJlbCA/Pz0gdGhpcy5fdHJhbnNsYXRpb25SZXNvbHZlci5yZXNvbHZlKGxhbmcsICdjb3JlV2l6YXJkLmFyaWFMYWJlbCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoc3ViKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHJlc2l6ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZFdpZHRoID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c1dpZHRoIHx8IHdpemFyZFdpZHRoIDw9IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZFdpZHRoID4gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1dpZHRoID0gd2l6YXJkV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25zLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZml4ZXMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFRlbXBsYXRlcygpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSB3aXphcmQgY29udGVudCBieSBsb29raW5nIGZvciB0aGUgZG9jdW1lbnQncyBzaGVsbGJhciwgdGhlIHdpemFyZFxuICAgICAqIG5hdmlnYXRpb24gYW5kIHRoZSB3aXphcmQgZm9vdGVyLCBhbmQgY2FsY3VsYXRpbmcgdGhlIGhlaWdodCBiYXNlZCBvbiB0aGVpciBwcmVzZW5jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCB3aXphcmROYXZIZWlnaHQgPSAwO1xuICAgICAgICBjb25zdCBzaGVsbGJhckhlaWdodCA9IHRoaXMuX2dldFNoZWxsYmFySGVpZ2h0KCk7XG4gICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgd2l6YXJkTmF2SGVpZ2h0ID0gdGhpcy5fZ2V0V2l6YXJkTmF2SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2l6YXJkRm9vdGVySGVpZ2h0ID0gdGhpcy5fZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ09mZnNldCA9IHRoaXMuX2dldERpYWxvZ09mZnNldCgpO1xuXG4gICAgICAgIHJldHVybiBzaGVsbGJhckhlaWdodCArIHdpemFyZE5hdkhlaWdodCArIHdpemFyZEZvb3RlckhlaWdodCArIGRpYWxvZ09mZnNldDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFNoZWxsYmFySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLicgKyBTSEVMTEJBUl9DTEFTUyk/LmNsaWVudEhlaWdodCA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkTmF2SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKS5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRWYWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERpYWxvZ09mZnNldCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgcmV0VmFsID0gMDtcbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JvZHkgPSB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZmQtZGlhbG9nLWJvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5kaWFsb2dDb25maWcudmVydGljYWxQYWRkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keVRpdGxlID0gZGlhbG9nQm9keS5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxiYXIuc2Nyb2xsKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGlkZVNvbWVTdGVwKGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIC8vIElmIGEgc21hbGwgc3RlcCB3YXMgZm91bmQsIGdldCB0aGUgc3RlcCB3aXRoIGEgdmlzaWJsZSBsYWJlbCBmdXJ0aGVzdCBhd2F5IGZyb20gdGhlIGN1cnJlbnQgc3RlcCBhbmQgaGlkZSB0aGUgbGFiZWxcbiAgICAgICAgbGV0IHN0ZXBzQXJyYXkgPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKTtcbiAgICAgICAgc3RlcHNBcnJheSA9IHN0ZXBzQXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhc3RlcC5oYXNMYWJlbChTVEVQX05PX0xBQkVMX0NMQVNTKSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc3RlcHNBcnJheS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcHNBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0ZXBJbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgc3RlcFRvSGlkZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPSBzdGVwc0FycmF5LmluZGV4T2YoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA+IChzdGVwc0FycmF5Lmxlbmd0aCAtIDEpIC8gMlxuICAgICAgICAgICAgICAgID8gKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5WzBdKVxuICAgICAgICAgICAgICAgIDogKHN0ZXBUb0hpZGUgPSBzdGVwc0FycmF5W3N0ZXBzQXJyYXkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgaWYgKHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA8IGN1cnJlbnRTdGVwSW5kZXggJiYgIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwVG9IaWRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwVG9IaWRlKSwgMCwgc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXBzQXJyYXkuaW5kZXhPZihzdGVwVG9IaWRlKSA+IGN1cnJlbnRTdGVwSW5kZXggJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5zdGFja2VkU3RlcHNSaWdodC5pbmNsdWRlcyhzdGVwVG9IaWRlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodC51bnNoaWZ0KHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRTdGFja2VkVG9wKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuX2dldEN1cnJlbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwLnN0ZXBJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXggKyAxXSA9PT0gY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5pbmNsdWRlcyhzdGVwKSAmJiB0aGlzLnN0YWNrZWRTdGVwc0xlZnQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKGluZGV4LCAwLCBzdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnN0YWNrZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRTdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGaW5hbFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEZpbmFsU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdE5vblN1bW1hcnlTdGVwID0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk7XG4gICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMubGFzdC5yZW1vdmVGcm9tRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0Tm9uU3VtbWFyeVN0ZXAuc2V0RmluYWxTdGVwKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93U3VtbWFyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc3RlcHMuZmluZCgoc3RlcCkgPT4gc3RlcC5pc1N1bW1hcnkpO1xuICAgICAgICBpZiAoc3VtbWFyeSkge1xuICAgICAgICAgICAgc3VtbWFyeS5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtzdW1tYXJ5LmNvbnRlbnQuY29udGVudFRlbXBsYXRlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDdXJyZW50U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmIHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1cnJlbnRTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoXG4gICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgfHwgc3RlcC5zdGF0dXMgPT09IEFDVElWRV9TVEVQX1NUQVRVU1xuICAgICAgICApWzBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTogdm9pZCB7XG4gICAgICAgIC8vIEFkZCBzbWFsbCBkZWxheSBmb3IgZWxlbWVudHMgdG8gcmVuZGVyIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0ID0gW107XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZpcnN0LnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRTdGVwQ2xhc3NlcygpO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2FueVN0ZXBJc1Rvb05hcnJvdygpICYmIGkgPCB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FueVN0ZXBJc1Rvb05hcnJvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5nZXRTdGVwQ2xpZW50V2lkdGgoKSA8IFNURVBfTUlOX1dJRFRIKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBDbGlja2VkKGNsaWNrZWRTdGVwOiBXaXphcmRTdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgIGNsaWNrZWRTdGVwID0gdGhpcy5zdGVwcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGlja2VkU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihjbGlja2VkU3RlcCk7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAgPT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ1VSUkVOVF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgIT09IGNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPCBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENPTVBMRVRFRF9TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApID4gY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KFVQQ09NSU5HX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7IC8vIHRoaXMgZnVuY3Rpb24gY2FuIGZvY3VzIHN0ZXAgaW5kaWNhdG9ycyB1bmRlc2lyYWJseVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KClbdGhpcy5zdGVwcy5sZW5ndGggLSAyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIV9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuX3N0ZXBJZC50b1N0cmluZygpID09PSAkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5fc3RlcElkIDwgcGFyc2VJbnQoJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkLCAxMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZmQtd2l6YXJkXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtd2l6YXJkLW5hdmlnYXRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAjd3JhcHBlckNvbnRhaW5lclxuICAgICAgICBmZFNjcm9sbFNweVxuICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgIFt0cmFja2VkVGFnc109XCJbJ2RpdiddXCJcbiAgICAgICAgKHNweUNoYW5nZSk9XCJzY3JvbGxTcHlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhYXBwZW5kVG9XaXphcmRcIiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zZWN0aW9uPlxuIl19
553
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQWMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlD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cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsUUFBUTtxQkFDakI7OzBCQWlGSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3Qjs0Q0ExRWhELGNBQWM7c0JBRGIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQUZqQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHNDQUFzQztnQkFLbkQsa0JBQWtCO3NCQURqQixLQUFLO2dCQVNOLFNBQVM7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBSzlCLEtBQUs7c0JBREosZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSzNELFdBQVc7c0JBRFYsWUFBWTt1QkFBQywwQkFBMEI7Z0JBS3hDLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxzQkFBc0I7Z0JBS3ZDLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQjtnQkFLN0IsU0FBUztzQkFEUixTQUFTO3VCQUFDLGtCQUFrQjtnQkF3QzdCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlhbG9nQm9keUNvbXBvbmVudCwgRkRfRElBTE9HX0JPRFlfQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBzY3JvbGxUb3AgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSB9IGZyb20gJy4vd2l6YXJkLXByb2dyZXNzLWJhci93aXphcmQtcHJvZ3Jlc3MtYmFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQUNUSVZFX1NURVBfU1RBVFVTLCBDVVJSRU5UX1NURVBfU1RBVFVTLCBVUENPTUlOR19TVEVQX1NUQVRVUywgQ09NUExFVEVEX1NURVBfU1RBVFVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IEZkTGFuZ3VhZ2UsIEZEX0xBTkdVQUdFLCBUcmFuc2xhdGlvblJlc29sdmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuXG5leHBvcnQgY29uc3QgU1RFUF9NSU5fV0lEVEggPSAxNjg7XG5leHBvcnQgY29uc3QgU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQtdG9wJztcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1zdGFja2VkJztcbmV4cG9ydCBjb25zdCBTVEVQX05PX0xBQkVMX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tbm8tbGFiZWwnO1xuXG5leHBvcnQgY29uc3QgV0laQVJEX05BVklHQVRJT05fQ0xBU1MgPSAnZmQtd2l6YXJkX19uYXZpZ2F0aW9uJztcbmV4cG9ydCBjb25zdCBXSVpBUkRfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmRfX2NvbnRlbnQnO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUyA9ICdmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXInO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MgPSAnZmQtd2l6YXJkLXRhbGwtY29udGVudCc7XG5leHBvcnQgY29uc3QgU0hFTExCQVJfQ0xBU1MgPSAnZmQtc2hlbGxiYXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mb290ZXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mbG9hdGluZy1mb290ZXInO1xuXG5leHBvcnQgbGV0IF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcDtcbmV4cG9ydCBsZXQgdGltZXI6IGFueSA9IG51bGw7XG5leHBvcnQgY29uc3QgaGFuZGxlVGltZW91dFJlZmVyZW5jZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGltZXIgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gZmFsc2U7XG4gICAgfSwgMTUwKTtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtd2l6YXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBXSVpBUkQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogV2l6YXJkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JlZ2lvbidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGEgc3VtbWFyeSBzdGVwLiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogYWRkaW5nIGFyaWEgbGFiZWwgdG8gdGhlIGNvbXBvbmVudFxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgaXMgYmVpbmcgdHJhbnNsYXRlZCBieSBpMThuIHBhY2thZ2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChTY3JvbGxiYXJEaXJlY3RpdmUpXG4gICAgc2Nyb2xsYmFyOiBTY3JvbGxiYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRlbnRUZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNMZWZ0OiBXaXphcmRTdGVwQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhY2tlZFN0ZXBzUmlnaHQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwRXZlbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRpb25SZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRkRfTEFOR1VBR0UpIF9sYW5ndWFnZSQ6IE9ic2VydmFibGU8RmRMYW5ndWFnZT4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkRfRElBTE9HX0JPRFlfQ09NUE9ORU5UKSBwcml2YXRlIF9kaWFsb2dCb2R5Q29tcG9uZW50OiBEaWFsb2dCb2R5Q29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHN1YiA9IF9sYW5ndWFnZSQuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgYXJpYUxhYmVsIG9ubHkgaWYgaXQncyBub3QgYXBwbGllZCBtYW51YWxseVxuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWwgPz89IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShsYW5nLCAnY29yZVdpemFyZC5hcmlhTGFiZWwnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHN1Yik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICByZXNpemVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmRXaWR0aCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5fcHJldmlvdXNXaWR0aCB8fCB3aXphcmRXaWR0aCA8PSB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmRXaWR0aCA+IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNXaWR0aCA9IHdpemFyZFdpZHRoO1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9ucy5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZpeGVzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgd2l6YXJkIGNvbnRlbnQgYnkgbG9va2luZyBmb3IgdGhlIGRvY3VtZW50J3Mgc2hlbGxiYXIsIHRoZSB3aXphcmRcbiAgICAgKiBuYXZpZ2F0aW9uIGFuZCB0aGUgd2l6YXJkIGZvb3RlciwgYW5kIGNhbGN1bGF0aW5nIHRoZSBoZWlnaHQgYmFzZWQgb24gdGhlaXIgcHJlc2VuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2l6YXJkTmF2SGVpZ2h0ID0gMDtcbiAgICAgICAgY29uc3Qgc2hlbGxiYXJIZWlnaHQgPSB0aGlzLl9nZXRTaGVsbGJhckhlaWdodCgpO1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHdpemFyZE5hdkhlaWdodCA9IHRoaXMuX2dldFdpemFyZE5hdkhlaWdodCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdpemFyZEZvb3RlckhlaWdodCA9IHRoaXMuX2dldFdpemFyZEZvb3RlckhlaWdodCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dPZmZzZXQgPSB0aGlzLl9nZXREaWFsb2dPZmZzZXQoKTtcblxuICAgICAgICByZXR1cm4gc2hlbGxiYXJIZWlnaHQgKyB3aXphcmROYXZIZWlnaHQgKyB3aXphcmRGb290ZXJIZWlnaHQgKyBkaWFsb2dPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTaGVsbGJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy4nICsgU0hFTExCQVJfQ0xBU1MpPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZE5hdkhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRWYWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXREaWFsb2dPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IDA7XG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5ID0gdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbGJhci5zY3JvbGwoeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgYSBzbWFsbCBzdGVwIHdhcyBmb3VuZCwgZ2V0IHRoZSBzdGVwIHdpdGggYSB2aXNpYmxlIGxhYmVsIGZ1cnRoZXN0IGF3YXkgZnJvbSB0aGUgY3VycmVudCBzdGVwIGFuZCBoaWRlIHRoZSBsYWJlbFxuICAgICAgICBsZXQgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBzdGVwc0FycmF5ID0gc3RlcHNBcnJheS5maWx0ZXIoKHN0ZXApID0+ICFzdGVwLmhhc0xhYmVsKFNURVBfTk9fTEFCRUxfQ0xBU1MpKTtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzdGVwc0FycmF5LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwc0FycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gMCxcbiAgICAgICAgICAgICAgICBzdGVwVG9IaWRlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IHN0ZXBzQXJyYXkuaW5kZXhPZihjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID4gKHN0ZXBzQXJyYXkubGVuZ3RoIC0gMSkgLyAyXG4gICAgICAgICAgICAgICAgPyAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbMF0pXG4gICAgICAgICAgICAgICAgOiAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbc3RlcHNBcnJheS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBpZiAoc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpIDwgY3VycmVudFN0ZXBJbmRleCAmJiAhdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZSh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXBUb0hpZGUpLCAwLCBzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpID4gY3VycmVudFN0ZXBJbmRleCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LnVuc2hpZnQoc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFN0YWNrZWRUb3AoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcEluZGljYXRvcikge1xuICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleCArIDFdID09PSBjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXApICYmIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UoaW5kZXgsIDAsIHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc3RhY2tlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zaG93U3VtbWFyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0ZXBDbGFzc2VzKCk7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fYW55U3RlcElzVG9vTmFycm93KCkgJiYgaSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW55U3RlcElzVG9vTmFycm93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcENsaWNrZWQoY2xpY2tlZFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgY2xpY2tlZFN0ZXAgPSB0aGlzLnN0ZXBzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWNrZWRTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKGNsaWNrZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcCA9PT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDVVJSRU5UX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCAhPT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA8IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ09NUExFVEVEX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPiBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoVVBDT01JTkdfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gZm9jdXMgc3RlcCBpbmRpY2F0b3JzIHVuZGVzaXJhYmx5XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLnN0ZXBzLmxlbmd0aCAtIDJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNjcm9sbFNweUNoYW5nZSgkZXZlbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5fc3RlcElkLnRvU3RyaW5nKCkgPT09ICRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLl9zdGVwSWQgPCBwYXJzZUludCgkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQsIDEwKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJmZC13aXphcmRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC13aXphcmQtbmF2aWdhdGlvblwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICBjbGFzcz1cImZkLXdpemFyZC1jb250YWluZXItd3JhcHBlclwiXG4gICAgICAgICN3cmFwcGVyQ29udGFpbmVyXG4gICAgICAgIGZkU2Nyb2xsU3B5XG4gICAgICAgIGNka1Njcm9sbGFibGVcbiAgICAgICAgW3RyYWNrZWRUYWdzXT1cIlsnZGl2J11cIlxuICAgICAgICAoc3B5Q2hhbmdlKT1cInNjcm9sbFNweUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNka1Njcm9sbGFibGUgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NlY3Rpb24+XG4iXX0=
@@ -1,15 +1,13 @@
1
1
  import { ElementRef, Renderer2, OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class FacetContentComponent implements OnInit {
4
- private _elementRef;
4
+ readonly elementRef: ElementRef<HTMLElement>;
5
5
  private _renderer;
6
6
  /** @hidden */
7
- constructor(_elementRef: ElementRef<HTMLElement>, _renderer: Renderer2);
7
+ constructor(elementRef: ElementRef<HTMLElement>, _renderer: Renderer2);
8
8
  /** @hidden */
9
9
  ngOnInit(): void;
10
10
  /** @hidden */
11
- elementRef(): ElementRef<HTMLElement>;
12
- /** @hidden */
13
11
  private _addClassNameToHostElement;
14
12
  static ɵfac: i0.ɵɵFactoryDeclaration<FacetContentComponent, never>;
15
13
  static ɵcmp: i0.ɵɵComponentDeclaration<FacetContentComponent, "fd-facet-content", never, {}, {}, never, ["*"], false, never>;
@@ -2,7 +2,7 @@ import { ElementRef, Renderer2, AfterViewInit } from '@angular/core';
2
2
  import { FacetType } from '../constants';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class FacetComponent implements AfterViewInit {
5
- private _elementRef;
5
+ readonly elementRef: ElementRef<HTMLElement>;
6
6
  private _renderer;
7
7
  /** the type of Facet: form, key-value, image, rating-indicator */
8
8
  type: FacetType;
@@ -34,13 +34,9 @@ export declare class FacetComponent implements AfterViewInit {
34
34
  */
35
35
  titleId: string;
36
36
  /** @hidden */
37
- constructor(_elementRef: ElementRef<HTMLElement>, _renderer: Renderer2);
37
+ constructor(elementRef: ElementRef<HTMLElement>, _renderer: Renderer2);
38
38
  /** @hidden */
39
39
  ngAfterViewInit(): void;
40
- /**
41
- * get reference to this element
42
- */
43
- elementRef(): ElementRef<HTMLElement>;
44
40
  /**
45
41
  * @hidden
46
42
  * set up common styles and specific styles based on each facet type
@@ -5,21 +5,19 @@ import * as i0 from "@angular/core";
5
5
  * Applies a thumb styles
6
6
  */
7
7
  export declare class FeedInputAvatarDirective implements OnInit, OnChanges, CssClassBuilder {
8
- private readonly _elementRef;
8
+ readonly elementRef: ElementRef<HTMLElement>;
9
9
  /** Apply user custom styles */
10
10
  class: string;
11
11
  /** @hidden */
12
12
  placeholder: boolean;
13
13
  /** @hidden */
14
- constructor(_elementRef: ElementRef<HTMLElement>);
14
+ constructor(elementRef: ElementRef<HTMLElement>);
15
15
  /** @hidden */
16
16
  ngOnInit(): void;
17
17
  /** @hidden */
18
18
  ngOnChanges(): void;
19
19
  /** @hidden */
20
20
  buildComponentCssClass(): string[];
21
- /** @hidden */
22
- elementRef(): ElementRef<HTMLElement>;
23
21
  static ɵfac: i0.ɵɵFactoryDeclaration<FeedInputAvatarDirective, never>;
24
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<FeedInputAvatarDirective, "[fdFeedInputAvatar]", never, { "class": "class"; "placeholder": "placeholder"; }, {}, never, never, false, never>;
25
23
  }
@@ -3,7 +3,7 @@ import { CssClassBuilder } from '@fundamental-ngx/cdk/utils';
3
3
  import { Nullable } from '@fundamental-ngx/cdk/utils';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class FeedListItemComponent implements OnInit, OnChanges, CssClassBuilder {
6
- private readonly _elementRef;
6
+ readonly elementRef: ElementRef;
7
7
  /** User's custom classes */
8
8
  class: string;
9
9
  /**
@@ -64,7 +64,7 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
64
64
  */
65
65
  hasMore: boolean;
66
66
  /** @hidden */
67
- constructor(_elementRef: ElementRef);
67
+ constructor(elementRef: ElementRef);
68
68
  /** @hidden */
69
69
  setHasMore(): void;
70
70
  /** @hidden */
@@ -80,8 +80,6 @@ export declare class FeedListItemComponent implements OnInit, OnChanges, CssClas
80
80
  */
81
81
  buildComponentCssClass(): string[];
82
82
  /** @hidden */
83
- elementRef(): ElementRef<any>;
84
- /** @hidden */
85
83
  toggleTextView(): void;
86
84
  static ɵfac: i0.ɵɵFactoryDeclaration<FeedListItemComponent, never>;
87
85
  static ɵcmp: i0.ɵɵComponentDeclaration<FeedListItemComponent, "fd-feed-list-item", never, { "class": "class"; "authorTitle": "authorTitle"; "authorLink": "authorLink"; "text": "text"; "maxChars": "maxChars"; "ariaLabel": "ariaLabel"; "ariaLabelledby": "ariaLabelledby"; "moreLabel": "moreLabel"; "lessLabel": "lessLabel"; "isRichText": "isRichText"; "mobile": "mobile"; }, {}, never, ["fd-feed-list-avatar", "fd-feed-list-action", "fd-feed-list-footer"], false, never>;
@@ -3,7 +3,7 @@ import { CssClassBuilder } from '@fundamental-ngx/cdk/utils';
3
3
  import { FeedListItemComponent } from '../item/feed-list-item.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class FeedListComponent implements OnInit, AfterContentChecked, OnDestroy, OnChanges, CssClassBuilder {
6
- private readonly _elementRef;
6
+ readonly elementRef: ElementRef;
7
7
  /** User's custom classes */
8
8
  class: string;
9
9
  /**
@@ -33,7 +33,7 @@ export declare class FeedListComponent implements OnInit, AfterContentChecked, O
33
33
  /** @hidden */
34
34
  private $feedItemChanges;
35
35
  /** @hidden */
36
- constructor(_elementRef: ElementRef);
36
+ constructor(elementRef: ElementRef);
37
37
  /** @hidden */
38
38
  ngAfterContentChecked(): void;
39
39
  /** @hidden */
@@ -49,8 +49,6 @@ export declare class FeedListComponent implements OnInit, AfterContentChecked, O
49
49
  */
50
50
  buildComponentCssClass(): string[];
51
51
  /** @hidden */
52
- elementRef(): ElementRef<any>;
53
- /** @hidden */
54
52
  private _listenOnFeedItems;
55
53
  /** @hidden */
56
54
  private _refreshItems;
@@ -1,51 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Type, TemplateRef, ViewContainerRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, ViewChild, Input, Output, HostListener, HostBinding, Injectable, NgModule } from '@angular/core';
3
- import * as i3 from '@angular/common';
2
+ import { EventEmitter, Type, TemplateRef, ViewContainerRef, Component, ChangeDetectionStrategy, Optional, ViewChild, Input, Output, HostListener, ViewEncapsulation, HostBinding, Injectable, NgModule } from '@angular/core';
4
3
  import { CommonModule } from '@angular/common';
5
- import { trigger, transition, style, animate } from '@angular/animations';
6
4
  import * as i1 from '@fundamental-ngx/cdk/utils';
7
5
  import { AbstractFdNgxClass, DynamicComponentService } from '@fundamental-ngx/cdk/utils';
8
6
  import { Subject } from 'rxjs';
9
- import * as i4 from '@fundamental-ngx/core/button';
7
+ import * as i3 from '@fundamental-ngx/core/message-strip';
8
+ import { MessageStripModule } from '@fundamental-ngx/core/message-strip';
9
+ import { trigger, transition, style, animate } from '@angular/animations';
10
10
  import { ButtonModule } from '@fundamental-ngx/core/button';
11
- import * as i5 from '@fundamental-ngx/core/content-density';
12
-
13
- /**
14
- * @deprecated
15
- * Alert component is depricated since version 0.16.0
16
- * Message Strip component should be used instead.
17
- */
18
- const alertFadeNgIf = trigger('fadeAlertNgIf', [
19
- transition(':enter', [
20
- style({
21
- opacity: 0
22
- }),
23
- animate('250ms ease-in-out', style({
24
- opacity: 1
25
- }))
26
- ]),
27
- transition(':leave', [
28
- style({
29
- opacity: 1,
30
- marginTop: '*',
31
- paddingTop: '*',
32
- paddingBottom: '*',
33
- height: '*',
34
- overflow: 'hidden'
35
- }),
36
- animate('400ms ease-in-out', style({
37
- opacity: 0,
38
- marginTop: 0,
39
- paddingTop: 0,
40
- paddingBottom: 0,
41
- height: 0,
42
- overflow: 'hidden'
43
- }))
44
- ])
45
- ]);
46
- const alertContainerNgIf = trigger('alertContainerNgIf', [
47
- transition(':leave', [style({ opacity: 1 }), animate('400ms ease-in-out', style({ opacity: 0 }))])
48
- ]);
49
11
 
50
12
  /**
51
13
  * @deprecated
@@ -100,7 +62,7 @@ class AlertRef {
100
62
  let alertUniqueId = 0;
101
63
  /**
102
64
  * @deprecated
103
- * Alert component is depricated since version 0.16.0
65
+ * Alert component is deprecated since version 0.16.0
104
66
  * Message Strip component should be used instead.
105
67
  *
106
68
  * The component that represents an alert. It can be only be used inline.
@@ -240,9 +202,8 @@ class AlertComponent extends AbstractFdNgxClass {
240
202
  }
241
203
  /** @hidden */
242
204
  loadFromComponent(componentType) {
243
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);
244
205
  this.containerRef.clear();
245
- this.componentRef = this.containerRef.createComponent(componentFactory);
206
+ this.componentRef = this.containerRef.createComponent(componentType);
246
207
  }
247
208
  /** @hidden */
248
209
  loadFromString(contentString) {
@@ -257,18 +218,10 @@ class AlertComponent extends AbstractFdNgxClass {
257
218
  }
258
219
  }
259
220
  AlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: AlertConfig, optional: true }, { token: AlertRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
260
- AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: AlertComponent, selector: "fd-alert", inputs: { dismissible: "dismissible", type: "type", id: "id", duration: "duration", mousePersist: "mousePersist", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", dismissLabel: "dismissLabel", width: "width", minWidth: "minWidth", message: "message" }, outputs: { onDismiss: "onDismiss" }, host: { attributes: { "role": "alert" }, listeners: { "mouseenter": "handleAlertMouseEvent($event)", "mouseleave": "handleAlertMouseEvent($event)" }, properties: { "attr.aria-labelledby": "ariaLabelledBy", "attr.aria-label": "ariaLabel", "style.width": "width", "style.min-width": "minWidth", "attr.id": "id", "@fadeAlertNgIf": "" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<button\n class=\"fd-alert__close\"\n fd-button\n glyph=\"decline\"\n fdCompact\n fdType=\"transparent\"\n *ngIf=\"dismissible\"\n (click)=\"dismiss(undefined, true)\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"dismissLabel\"\n></button>\n<p class=\"fd-alert__text\">\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</p>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-alert+(--information, --success, --warning, --error, --no-icon)\n .fd-alert__close\n*/.fd-alert{-webkit-box-sizing:border-box;align-items:center;background-color:var(--sapNeutralBackground);border:1px solid;border-color:var(--sapNeutralBorderColor);border-radius:.25rem;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:2rem;padding:.4375rem 1rem;position:relative}.fd-alert:after,.fd-alert:before{box-sizing:inherit;font-size:inherit}.fd-alert .sap-icon--message-error,.fd-alert .sap-icon--message-information,.fd-alert .sap-icon--message-success,.fd-alert .sap-icon--message-warning{display:none}.fd-alert__close{position:absolute;right:.125rem;top:.125rem}.fd-alert__close:before{content:\"\\e03e\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert__close[dir=rtl],[dir=rtl] .fd-alert__close{left:.125rem;right:auto}.fd-alert--dismissible{padding-right:2.5rem}.fd-alert--dismissible[dir=rtl],[dir=rtl] .fd-alert--dismissible{padding-left:2.5rem;padding-right:1rem}.fd-alert--error,.fd-alert--information,.fd-alert--success,.fd-alert--warning{padding-left:2.5rem}.fd-alert--error:after,.fd-alert--error:before,.fd-alert--information:after,.fd-alert--information:before,.fd-alert--success:after,.fd-alert--success:before,.fd-alert--warning:after,.fd-alert--warning:before{left:0;line-height:1rem;position:absolute;top:.4375rem;width:2.5rem}.fd-alert--error[dir=rtl],.fd-alert--information[dir=rtl],.fd-alert--success[dir=rtl],.fd-alert--warning[dir=rtl],[dir=rtl] .fd-alert--error,[dir=rtl] .fd-alert--information,[dir=rtl] .fd-alert--success,[dir=rtl] .fd-alert--warning{padding-left:1rem;padding-right:2.5rem}.fd-alert--error[dir=rtl]:after,.fd-alert--error[dir=rtl]:before,.fd-alert--information[dir=rtl]:after,.fd-alert--information[dir=rtl]:before,.fd-alert--success[dir=rtl]:after,.fd-alert--success[dir=rtl]:before,.fd-alert--warning[dir=rtl]:after,.fd-alert--warning[dir=rtl]:before,[dir=rtl] .fd-alert--error:after,[dir=rtl] .fd-alert--error:before,[dir=rtl] .fd-alert--information:after,[dir=rtl] .fd-alert--information:before,[dir=rtl] .fd-alert--success:after,[dir=rtl] .fd-alert--success:before,[dir=rtl] .fd-alert--warning:after,[dir=rtl] .fd-alert--warning:before{left:auto;right:0}.fd-alert--error.fd-alert--dismissible,.fd-alert--information.fd-alert--dismissible,.fd-alert--success.fd-alert--dismissible,.fd-alert--warning.fd-alert--dismissible{padding-right:2.5rem}.fd-alert--error.fd-alert--dismissible[dir=rtl],.fd-alert--information.fd-alert--dismissible[dir=rtl],.fd-alert--success.fd-alert--dismissible[dir=rtl],.fd-alert--warning.fd-alert--dismissible[dir=rtl],[dir=rtl] .fd-alert--error.fd-alert--dismissible,[dir=rtl] .fd-alert--information.fd-alert--dismissible,[dir=rtl] .fd-alert--success.fd-alert--dismissible,[dir=rtl] .fd-alert--warning.fd-alert--dismissible{padding-left:2.5rem}.fd-alert--error[dir=rtl]:after,.fd-alert--information[dir=rtl]:after,.fd-alert--success[dir=rtl]:after,.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--error:after,[dir=rtl] .fd-alert--information:after,[dir=rtl] .fd-alert--success:after,[dir=rtl] .fd-alert--warning:after{font-family:SAP-icons;position:absolute;right:0;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--warning{background-color:var(--sapWarningBackground);border-color:var(--sapWarningBorderColor)}.fd-alert--warning:after,.fd-alert--warning:before{color:var(--sapWarningBorderColor)}.fd-alert--warning:before{content:\"\\e201\"}.fd-alert--warning:before,.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--warning:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--warning:after{content:\"\\e201\"}.fd-alert--error{background-color:var(--sapErrorBackground);border-color:var(--sapErrorBorderColor)}.fd-alert--error:after,.fd-alert--error:before{color:var(--sapErrorBorderColor)}.fd-alert--error:before{content:\"\\e0b1\"}.fd-alert--error:before,.fd-alert--error[dir=rtl]:after,[dir=rtl] .fd-alert--error:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--error[dir=rtl]:after,[dir=rtl] .fd-alert--error:after{content:\"\\e0b1\"}.fd-alert--success{background-color:var(--sapSuccessBackground);border-color:var(--sapSuccessBorderColor)}.fd-alert--success:after,.fd-alert--success:before{color:var(--sapSuccessBorderColor)}.fd-alert--success:before{content:\"\\e203\"}.fd-alert--success:before,.fd-alert--success[dir=rtl]:after,[dir=rtl] .fd-alert--success:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--success[dir=rtl]:after,[dir=rtl] .fd-alert--success:after{content:\"\\e203\"}.fd-alert--information{background-color:var(--sapInformationBackground);border-color:var(--sapInformationBorderColor)}.fd-alert--information:after,.fd-alert--information:before{color:var(--sapInformationBorderColor)}.fd-alert--information:before{content:\"\\e202\"}.fd-alert--information:before,.fd-alert--information[dir=rtl]:after,[dir=rtl] .fd-alert--information:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--information[dir=rtl]:after,[dir=rtl] .fd-alert--information:after{content:\"\\e202\"}.fd-alert--no-icon{padding-left:1rem}.fd-alert--no-icon:before{display:none}.fd-alert--no-icon[dir=rtl],[dir=rtl] .fd-alert--no-icon{padding-right:1rem}.fd-alert--no-icon[dir=rtl]:after,[dir=rtl] .fd-alert--no-icon:after{display:none}.fd-alert__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0}.fd-alert__text:after,.fd-alert__text:before{box-sizing:inherit;font-size:inherit}.fd-alert{display:block}.fd-alert__close:before,.fd-alert__close:after{content:none}.fd-has-display-block{display:block}.fd-has-display-none{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }], animations: [alertFadeNgIf], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
221
+ AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: AlertComponent, selector: "fd-alert", inputs: { dismissible: "dismissible", type: "type", id: "id", duration: "duration", mousePersist: "mousePersist", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", dismissLabel: "dismissLabel", width: "width", minWidth: "minWidth", message: "message" }, outputs: { onDismiss: "onDismiss" }, host: { listeners: { "mouseenter": "handleAlertMouseEvent($event)", "mouseleave": "handleAlertMouseEvent($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<fd-message-strip\n [dismissLabel]=\"dismissLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaLabel]=\"ariaLabel\"\n [width]=\"width\"\n [minWidth]=\"minWidth\"\n [dismissible]=\"dismissible\"\n [id]=\"id\"\n [type]=\"type\"\n (onDismiss)=\"onDismiss.emit($event)\"\n>\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</fd-message-strip>\n", styles: [":host{display:block}:host.fd-has-display-block{display:block}:host.fd-has-display-none{display:none}\n"], dependencies: [{ kind: "component", type: i3.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
261
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertComponent, decorators: [{
262
223
  type: Component,
263
- args: [{ selector: 'fd-alert', host: {
264
- '[attr.aria-labelledby]': 'ariaLabelledBy',
265
- '[attr.aria-label]': 'ariaLabel',
266
- '[style.width]': 'width',
267
- '[style.min-width]': 'minWidth',
268
- role: 'alert',
269
- '[attr.id]': 'id',
270
- '[@fadeAlertNgIf]': ''
271
- }, animations: [alertFadeNgIf], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"fd-alert__close\"\n fd-button\n glyph=\"decline\"\n fdCompact\n fdType=\"transparent\"\n *ngIf=\"dismissible\"\n (click)=\"dismiss(undefined, true)\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"dismissLabel\"\n></button>\n<p class=\"fd-alert__text\">\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</p>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-alert+(--information, --success, --warning, --error, --no-icon)\n .fd-alert__close\n*/.fd-alert{-webkit-box-sizing:border-box;align-items:center;background-color:var(--sapNeutralBackground);border:1px solid;border-color:var(--sapNeutralBorderColor);border-radius:.25rem;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-height:2rem;padding:.4375rem 1rem;position:relative}.fd-alert:after,.fd-alert:before{box-sizing:inherit;font-size:inherit}.fd-alert .sap-icon--message-error,.fd-alert .sap-icon--message-information,.fd-alert .sap-icon--message-success,.fd-alert .sap-icon--message-warning{display:none}.fd-alert__close{position:absolute;right:.125rem;top:.125rem}.fd-alert__close:before{content:\"\\e03e\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert__close[dir=rtl],[dir=rtl] .fd-alert__close{left:.125rem;right:auto}.fd-alert--dismissible{padding-right:2.5rem}.fd-alert--dismissible[dir=rtl],[dir=rtl] .fd-alert--dismissible{padding-left:2.5rem;padding-right:1rem}.fd-alert--error,.fd-alert--information,.fd-alert--success,.fd-alert--warning{padding-left:2.5rem}.fd-alert--error:after,.fd-alert--error:before,.fd-alert--information:after,.fd-alert--information:before,.fd-alert--success:after,.fd-alert--success:before,.fd-alert--warning:after,.fd-alert--warning:before{left:0;line-height:1rem;position:absolute;top:.4375rem;width:2.5rem}.fd-alert--error[dir=rtl],.fd-alert--information[dir=rtl],.fd-alert--success[dir=rtl],.fd-alert--warning[dir=rtl],[dir=rtl] .fd-alert--error,[dir=rtl] .fd-alert--information,[dir=rtl] .fd-alert--success,[dir=rtl] .fd-alert--warning{padding-left:1rem;padding-right:2.5rem}.fd-alert--error[dir=rtl]:after,.fd-alert--error[dir=rtl]:before,.fd-alert--information[dir=rtl]:after,.fd-alert--information[dir=rtl]:before,.fd-alert--success[dir=rtl]:after,.fd-alert--success[dir=rtl]:before,.fd-alert--warning[dir=rtl]:after,.fd-alert--warning[dir=rtl]:before,[dir=rtl] .fd-alert--error:after,[dir=rtl] .fd-alert--error:before,[dir=rtl] .fd-alert--information:after,[dir=rtl] .fd-alert--information:before,[dir=rtl] .fd-alert--success:after,[dir=rtl] .fd-alert--success:before,[dir=rtl] .fd-alert--warning:after,[dir=rtl] .fd-alert--warning:before{left:auto;right:0}.fd-alert--error.fd-alert--dismissible,.fd-alert--information.fd-alert--dismissible,.fd-alert--success.fd-alert--dismissible,.fd-alert--warning.fd-alert--dismissible{padding-right:2.5rem}.fd-alert--error.fd-alert--dismissible[dir=rtl],.fd-alert--information.fd-alert--dismissible[dir=rtl],.fd-alert--success.fd-alert--dismissible[dir=rtl],.fd-alert--warning.fd-alert--dismissible[dir=rtl],[dir=rtl] .fd-alert--error.fd-alert--dismissible,[dir=rtl] .fd-alert--information.fd-alert--dismissible,[dir=rtl] .fd-alert--success.fd-alert--dismissible,[dir=rtl] .fd-alert--warning.fd-alert--dismissible{padding-left:2.5rem}.fd-alert--error[dir=rtl]:after,.fd-alert--information[dir=rtl]:after,.fd-alert--success[dir=rtl]:after,.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--error:after,[dir=rtl] .fd-alert--information:after,[dir=rtl] .fd-alert--success:after,[dir=rtl] .fd-alert--warning:after{font-family:SAP-icons;position:absolute;right:0;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--warning{background-color:var(--sapWarningBackground);border-color:var(--sapWarningBorderColor)}.fd-alert--warning:after,.fd-alert--warning:before{color:var(--sapWarningBorderColor)}.fd-alert--warning:before{content:\"\\e201\"}.fd-alert--warning:before,.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--warning:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--warning[dir=rtl]:after,[dir=rtl] .fd-alert--warning:after{content:\"\\e201\"}.fd-alert--error{background-color:var(--sapErrorBackground);border-color:var(--sapErrorBorderColor)}.fd-alert--error:after,.fd-alert--error:before{color:var(--sapErrorBorderColor)}.fd-alert--error:before{content:\"\\e0b1\"}.fd-alert--error:before,.fd-alert--error[dir=rtl]:after,[dir=rtl] .fd-alert--error:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--error[dir=rtl]:after,[dir=rtl] .fd-alert--error:after{content:\"\\e0b1\"}.fd-alert--success{background-color:var(--sapSuccessBackground);border-color:var(--sapSuccessBorderColor)}.fd-alert--success:after,.fd-alert--success:before{color:var(--sapSuccessBorderColor)}.fd-alert--success:before{content:\"\\e203\"}.fd-alert--success:before,.fd-alert--success[dir=rtl]:after,[dir=rtl] .fd-alert--success:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--success[dir=rtl]:after,[dir=rtl] .fd-alert--success:after{content:\"\\e203\"}.fd-alert--information{background-color:var(--sapInformationBackground);border-color:var(--sapInformationBorderColor)}.fd-alert--information:after,.fd-alert--information:before{color:var(--sapInformationBorderColor)}.fd-alert--information:before{content:\"\\e202\"}.fd-alert--information:before,.fd-alert--information[dir=rtl]:after,[dir=rtl] .fd-alert--information:after{font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-alert--information[dir=rtl]:after,[dir=rtl] .fd-alert--information:after{content:\"\\e202\"}.fd-alert--no-icon{padding-left:1rem}.fd-alert--no-icon:before{display:none}.fd-alert--no-icon[dir=rtl],[dir=rtl] .fd-alert--no-icon{padding-right:1rem}.fd-alert--no-icon[dir=rtl]:after,[dir=rtl] .fd-alert--no-icon:after{display:none}.fd-alert__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0}.fd-alert__text:after,.fd-alert__text:before{box-sizing:inherit;font-size:inherit}.fd-alert{display:block}.fd-alert__close:before,.fd-alert__close:after{content:none}.fd-has-display-block{display:block}.fd-has-display-none{display:none}\n"] }]
224
+ args: [{ selector: 'fd-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-message-strip\n [dismissLabel]=\"dismissLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaLabel]=\"ariaLabel\"\n [width]=\"width\"\n [minWidth]=\"minWidth\"\n [dismissible]=\"dismissible\"\n [id]=\"id\"\n [type]=\"type\"\n (onDismiss)=\"onDismiss.emit($event)\"\n>\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</fd-message-strip>\n", styles: [":host{display:block}:host.fd-has-display-block{display:block}:host.fd-has-display-none{display:none}\n"] }]
272
225
  }], ctorParameters: function () {
273
226
  return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: AlertConfig, decorators: [{
274
227
  type: Optional
@@ -312,6 +265,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
312
265
  args: ['mouseleave', ['$event']]
313
266
  }] } });
314
267
 
268
+ /**
269
+ * @deprecated
270
+ * Alert component is depricated since version 0.16.0
271
+ * Message Strip component should be used instead.
272
+ */
273
+ const alertFadeNgIf = trigger('fadeAlertNgIf', [
274
+ transition(':enter', [
275
+ style({
276
+ opacity: 0
277
+ }),
278
+ animate('250ms ease-in-out', style({
279
+ opacity: 1
280
+ }))
281
+ ]),
282
+ transition(':leave', [
283
+ style({
284
+ opacity: 1,
285
+ marginTop: '*',
286
+ paddingTop: '*',
287
+ paddingBottom: '*',
288
+ height: '*',
289
+ overflow: 'hidden'
290
+ }),
291
+ animate('400ms ease-in-out', style({
292
+ opacity: 0,
293
+ marginTop: 0,
294
+ paddingTop: 0,
295
+ paddingBottom: 0,
296
+ height: 0,
297
+ overflow: 'hidden'
298
+ }))
299
+ ])
300
+ ]);
301
+ const alertContainerNgIf = trigger('alertContainerNgIf', [
302
+ transition(':leave', [style({ opacity: 1 }), animate('400ms ease-in-out', style({ opacity: 0 }))])
303
+ ]);
304
+
315
305
  /**
316
306
  * @deprecated
317
307
  * Alert component is depricated since version 0.16.0
@@ -419,13 +409,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
419
409
  class AlertModule {
420
410
  }
421
411
  AlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
422
- AlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, declarations: [AlertComponent, AlertContainerComponent], imports: [CommonModule, ButtonModule], exports: [AlertComponent, AlertContainerComponent] });
423
- AlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, providers: [AlertService, DynamicComponentService], imports: [CommonModule, ButtonModule] });
412
+ AlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, declarations: [AlertComponent, AlertContainerComponent], imports: [CommonModule, ButtonModule, MessageStripModule], exports: [AlertComponent, AlertContainerComponent] });
413
+ AlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, providers: [AlertService, DynamicComponentService], imports: [CommonModule, ButtonModule, MessageStripModule] });
424
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: AlertModule, decorators: [{
425
415
  type: NgModule,
426
416
  args: [{
427
417
  declarations: [AlertComponent, AlertContainerComponent],
428
- imports: [CommonModule, ButtonModule],
418
+ imports: [CommonModule, ButtonModule, MessageStripModule],
429
419
  exports: [AlertComponent, AlertContainerComponent],
430
420
  providers: [AlertService, DynamicComponentService]
431
421
  }]