igniteui-angular 16.0.0-beta.2 → 16.0.0-beta.3

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 (348) hide show
  1. package/esm2022/lib/accordion/accordion.component.mjs +4 -4
  2. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  3. package/esm2022/lib/action-strip/action-strip.component.mjs +7 -7
  4. package/esm2022/lib/action-strip/action-strip.module.mjs +5 -5
  5. package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +4 -4
  6. package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +4 -4
  7. package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +4 -4
  8. package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +4 -4
  9. package/esm2022/lib/avatar/avatar.component.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.module.mjs +5 -5
  11. package/esm2022/lib/badge/badge.component.mjs +4 -4
  12. package/esm2022/lib/badge/badge.module.mjs +5 -5
  13. package/esm2022/lib/banner/banner.component.mjs +4 -4
  14. package/esm2022/lib/banner/banner.directives.mjs +4 -4
  15. package/esm2022/lib/banner/banner.module.mjs +5 -5
  16. package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +4 -4
  17. package/esm2022/lib/buttonGroup/buttongroup.module.mjs +5 -5
  18. package/esm2022/lib/calendar/calendar-base.mjs +4 -4
  19. package/esm2022/lib/calendar/calendar.component.mjs +4 -4
  20. package/esm2022/lib/calendar/calendar.directives.mjs +16 -16
  21. package/esm2022/lib/calendar/calendar.module.mjs +5 -5
  22. package/esm2022/lib/calendar/days-view/day-item.component.mjs +4 -4
  23. package/esm2022/lib/calendar/days-view/days-view.component.mjs +4 -4
  24. package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +4 -4
  25. package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +4 -4
  26. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +4 -4
  27. package/esm2022/lib/calendar/months-view/months-view.component.mjs +4 -4
  28. package/esm2022/lib/calendar/months-view.pipe.mjs +7 -7
  29. package/esm2022/lib/calendar/years-view/years-view.component.mjs +7 -7
  30. package/esm2022/lib/card/card.component.mjs +28 -28
  31. package/esm2022/lib/card/card.module.mjs +5 -5
  32. package/esm2022/lib/carousel/carousel.component.mjs +7 -7
  33. package/esm2022/lib/carousel/carousel.directives.mjs +10 -10
  34. package/esm2022/lib/carousel/carousel.module.mjs +5 -5
  35. package/esm2022/lib/carousel/slide.component.mjs +4 -4
  36. package/esm2022/lib/checkbox/checkbox.component.mjs +4 -4
  37. package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
  38. package/esm2022/lib/chips/chip.component.mjs +4 -4
  39. package/esm2022/lib/chips/chips-area.component.mjs +4 -4
  40. package/esm2022/lib/chips/chips.module.mjs +5 -5
  41. package/esm2022/lib/combo/combo-add-item.component.mjs +4 -4
  42. package/esm2022/lib/combo/combo-dropdown.component.mjs +4 -4
  43. package/esm2022/lib/combo/combo-item.component.mjs +4 -4
  44. package/esm2022/lib/combo/combo.api.mjs +4 -4
  45. package/esm2022/lib/combo/combo.common.mjs +4 -4
  46. package/esm2022/lib/combo/combo.component.mjs +4 -4
  47. package/esm2022/lib/combo/combo.directives.mjs +25 -25
  48. package/esm2022/lib/combo/combo.module.mjs +5 -5
  49. package/esm2022/lib/combo/combo.pipes.mjs +7 -7
  50. package/esm2022/lib/core/density.mjs +4 -4
  51. package/esm2022/lib/core/navigation/directives.mjs +7 -7
  52. package/esm2022/lib/core/navigation/nav.service.mjs +4 -4
  53. package/esm2022/lib/core/selection.mjs +4 -4
  54. package/esm2022/lib/core/touch.mjs +4 -4
  55. package/esm2022/lib/core/utils.mjs +4 -4
  56. package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +4 -4
  57. package/esm2022/lib/date-common/picker-base.directive.mjs +4 -4
  58. package/esm2022/lib/date-common/picker-icons.common.mjs +10 -10
  59. package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
  60. package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
  61. package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +16 -16
  62. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +4 -4
  63. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
  64. package/esm2022/lib/dialog/dialog.component.mjs +4 -4
  65. package/esm2022/lib/dialog/dialog.directives.mjs +7 -7
  66. package/esm2022/lib/dialog/dialog.module.mjs +5 -5
  67. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +4 -4
  68. package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +5 -5
  69. package/esm2022/lib/directives/button/button.directive.mjs +4 -4
  70. package/esm2022/lib/directives/button/button.module.mjs +5 -5
  71. package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +4 -4
  72. package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +5 -5
  73. package/esm2022/lib/directives/divider/divider.directive.mjs +4 -4
  74. package/esm2022/lib/directives/divider/divider.module.mjs +5 -5
  75. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +13 -13
  76. package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +5 -5
  77. package/esm2022/lib/directives/filter/filter.directive.mjs +7 -7
  78. package/esm2022/lib/directives/filter/filter.module.mjs +5 -5
  79. package/esm2022/lib/directives/focus/focus.directive.mjs +4 -4
  80. package/esm2022/lib/directives/focus/focus.module.mjs +5 -5
  81. package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +4 -4
  82. package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +5 -5
  83. package/esm2022/lib/directives/for-of/base.helper.component.mjs +4 -4
  84. package/esm2022/lib/directives/for-of/display.container.mjs +4 -4
  85. package/esm2022/lib/directives/for-of/for_of.directive.mjs +7 -7
  86. package/esm2022/lib/directives/for-of/for_of.module.mjs +5 -5
  87. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +7 -7
  88. package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +4 -4
  89. package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +4 -4
  90. package/esm2022/lib/directives/form-control/form-control.directive.mjs +4 -4
  91. package/esm2022/lib/directives/form-control/form-control.module.mjs +5 -5
  92. package/esm2022/lib/directives/hint/hint.directive.mjs +4 -4
  93. package/esm2022/lib/directives/input/input.directive.mjs +4 -4
  94. package/esm2022/lib/directives/label/label.directive.mjs +4 -4
  95. package/esm2022/lib/directives/layout/layout.directive.mjs +7 -7
  96. package/esm2022/lib/directives/layout/layout.module.mjs +5 -5
  97. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -4
  98. package/esm2022/lib/directives/mask/mask.directive.mjs +4 -4
  99. package/esm2022/lib/directives/mask/mask.module.mjs +5 -5
  100. package/esm2022/lib/directives/notification/notifications.directive.mjs +4 -4
  101. package/esm2022/lib/directives/prefix/prefix.directive.mjs +4 -4
  102. package/esm2022/lib/directives/radio/radio-group.directive.mjs +4 -4
  103. package/esm2022/lib/directives/radio/radio-group.module.mjs +5 -5
  104. package/esm2022/lib/directives/ripple/ripple.directive.mjs +4 -4
  105. package/esm2022/lib/directives/ripple/ripple.module.mjs +5 -5
  106. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +4 -4
  107. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +5 -5
  108. package/esm2022/lib/directives/suffix/suffix.directive.mjs +4 -4
  109. package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +4 -4
  110. package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +4 -4
  111. package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +5 -5
  112. package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +4 -4
  113. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +5 -5
  114. package/esm2022/lib/directives/toggle/toggle.directive.mjs +10 -10
  115. package/esm2022/lib/directives/toggle/toggle.module.mjs +5 -5
  116. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +4 -4
  117. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +4 -4
  118. package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +4 -4
  119. package/esm2022/lib/directives/tooltip/tooltip.module.mjs +5 -5
  120. package/esm2022/lib/drop-down/drop-down-group.component.mjs +4 -4
  121. package/esm2022/lib/drop-down/drop-down-item.base.mjs +4 -4
  122. package/esm2022/lib/drop-down/drop-down-item.component.mjs +4 -4
  123. package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +4 -4
  124. package/esm2022/lib/drop-down/drop-down.base.mjs +4 -4
  125. package/esm2022/lib/drop-down/drop-down.component.mjs +4 -4
  126. package/esm2022/lib/drop-down/drop-down.module.mjs +5 -5
  127. package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +4 -4
  128. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +4 -4
  129. package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +4 -4
  130. package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +4 -4
  131. package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +10 -10
  132. package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +5 -5
  133. package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +4 -4
  134. package/esm2022/lib/grids/api.service.mjs +4 -4
  135. package/esm2022/lib/grids/cell.component.mjs +4 -4
  136. package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +4 -4
  137. package/esm2022/lib/grids/column-actions/column-actions.component.mjs +13 -13
  138. package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +4 -4
  139. package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +4 -4
  140. package/esm2022/lib/grids/column-actions/public_api.mjs +13 -0
  141. package/esm2022/lib/grids/columns/column-group.component.mjs +4 -4
  142. package/esm2022/lib/grids/columns/column-layout.component.mjs +4 -4
  143. package/esm2022/lib/grids/columns/column.component.mjs +4 -4
  144. package/esm2022/lib/grids/columns/templates.directive.mjs +25 -25
  145. package/esm2022/lib/grids/columns/validators.directive.mjs +22 -22
  146. package/esm2022/lib/grids/common/crud.service.mjs +4 -4
  147. package/esm2022/lib/grids/common/pipes.mjs +55 -55
  148. package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +4 -4
  149. package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +4 -4
  150. package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +4 -4
  151. package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +4 -4
  152. package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +4 -4
  153. package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +4 -4
  154. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +4 -4
  155. package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +4 -4
  156. package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +4 -4
  157. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +10 -10
  158. package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +4 -4
  159. package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +4 -4
  160. package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +4 -4
  161. package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +4 -4
  162. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +7 -7
  163. package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +4 -4
  164. package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +4 -4
  165. package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +4 -4
  166. package/esm2022/lib/grids/grid/expandable-cell.component.mjs +4 -4
  167. package/esm2022/lib/grids/grid/grid-api.service.mjs +4 -4
  168. package/esm2022/lib/grids/grid/grid-row.component.mjs +4 -4
  169. package/esm2022/lib/grids/grid/grid-validation.service.mjs +4 -4
  170. package/esm2022/lib/grids/grid/grid.component.mjs +4 -4
  171. package/esm2022/lib/grids/grid/grid.details.pipe.mjs +4 -4
  172. package/esm2022/lib/grids/grid/grid.directives.mjs +34 -34
  173. package/esm2022/lib/grids/grid/grid.module.mjs +27 -24
  174. package/esm2022/lib/grids/grid/grid.pipes.mjs +13 -13
  175. package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +4 -4
  176. package/esm2022/lib/grids/grid/groupby-row.component.mjs +4 -4
  177. package/esm2022/lib/grids/grid-base.directive.mjs +4 -4
  178. package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +4 -4
  179. package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +4 -4
  180. package/esm2022/lib/grids/grid-navigation.service.mjs +4 -4
  181. package/esm2022/lib/grids/grid.common.mjs +4 -4
  182. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +16 -16
  183. package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +4 -4
  184. package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +7 -7
  185. package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +4 -4
  186. package/esm2022/lib/grids/headers/grid-header-group.component.mjs +4 -4
  187. package/esm2022/lib/grids/headers/grid-header-row.component.mjs +4 -4
  188. package/esm2022/lib/grids/headers/grid-header.component.mjs +4 -4
  189. package/esm2022/lib/grids/headers/pipes.mjs +10 -10
  190. package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +4 -4
  191. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +4 -4
  192. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +4 -4
  193. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +4 -4
  194. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +7 -7
  195. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +27 -24
  196. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +7 -7
  197. package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +4 -4
  198. package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +4 -4
  199. package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +4 -4
  200. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +4 -4
  201. package/esm2022/lib/grids/moving/moving.drop.directive.mjs +4 -4
  202. package/esm2022/lib/grids/moving/moving.service.mjs +4 -4
  203. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +4 -4
  204. package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +4 -4
  205. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +4 -4
  206. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +4 -4
  207. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +4 -4
  208. package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +27 -24
  209. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +31 -31
  210. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +4 -4
  211. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +4 -4
  212. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +4 -4
  213. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +4 -4
  214. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +4 -4
  215. package/esm2022/lib/grids/public_api.mjs +5 -2
  216. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +4 -4
  217. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +4 -4
  218. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +4 -4
  219. package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +4 -4
  220. package/esm2022/lib/grids/resizing/resizer.component.mjs +4 -4
  221. package/esm2022/lib/grids/resizing/resizer.directive.mjs +4 -4
  222. package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
  223. package/esm2022/lib/grids/row-drag.directive.mjs +10 -10
  224. package/esm2022/lib/grids/row.directive.mjs +4 -4
  225. package/esm2022/lib/grids/selection/drag-select.directive.mjs +4 -4
  226. package/esm2022/lib/grids/selection/row-selectors.mjs +10 -10
  227. package/esm2022/lib/grids/selection/selection.service.mjs +4 -4
  228. package/esm2022/lib/grids/state.directive.mjs +4 -4
  229. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +4 -4
  230. package/esm2022/lib/grids/summaries/grid-summary.service.mjs +4 -4
  231. package/esm2022/lib/grids/summaries/summary-cell.component.mjs +4 -4
  232. package/esm2022/lib/grids/summaries/summary-row.component.mjs +4 -4
  233. package/esm2022/lib/grids/toolbar/common.mjs +16 -16
  234. package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +4 -4
  235. package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +4 -4
  236. package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +4 -4
  237. package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +4 -4
  238. package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +7 -7
  239. package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +4 -4
  240. package/esm2022/lib/grids/tree-grid/public_api.mjs +4 -1
  241. package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +4 -4
  242. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +4 -4
  243. package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +4 -4
  244. package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +4 -4
  245. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +4 -4
  246. package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +4 -4
  247. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +4 -4
  248. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +4 -4
  249. package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +43 -39
  250. package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +22 -22
  251. package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +4 -4
  252. package/esm2022/lib/icon/icon.component.mjs +4 -4
  253. package/esm2022/lib/icon/icon.module.mjs +5 -5
  254. package/esm2022/lib/icon/icon.service.mjs +4 -4
  255. package/esm2022/lib/input-group/input-group.component.mjs +4 -4
  256. package/esm2022/lib/input-group/input-group.module.mjs +5 -5
  257. package/esm2022/lib/list/list-item.component.mjs +4 -4
  258. package/esm2022/lib/list/list.common.mjs +16 -16
  259. package/esm2022/lib/list/list.component.mjs +19 -19
  260. package/esm2022/lib/list/list.module.mjs +5 -5
  261. package/esm2022/lib/navbar/navbar.component.mjs +10 -10
  262. package/esm2022/lib/navbar/navbar.module.mjs +5 -5
  263. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +4 -4
  264. package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +10 -10
  265. package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +5 -5
  266. package/esm2022/lib/paginator/paginator-interfaces.mjs +4 -4
  267. package/esm2022/lib/paginator/paginator.component.mjs +13 -13
  268. package/esm2022/lib/paginator/paginator.module.mjs +5 -5
  269. package/esm2022/lib/progressbar/progressbar.common.mjs +7 -7
  270. package/esm2022/lib/progressbar/progressbar.component.mjs +10 -10
  271. package/esm2022/lib/progressbar/progressbar.module.mjs +5 -5
  272. package/esm2022/lib/query-builder/query-builder-header.component.mjs +4 -4
  273. package/esm2022/lib/query-builder/query-builder.component.mjs +7 -7
  274. package/esm2022/lib/query-builder/query-builder.module.mjs +5 -5
  275. package/esm2022/lib/radio/radio.component.mjs +4 -4
  276. package/esm2022/lib/select/select-group.component.mjs +4 -4
  277. package/esm2022/lib/select/select-item.component.mjs +4 -4
  278. package/esm2022/lib/select/select-navigation.directive.mjs +4 -4
  279. package/esm2022/lib/select/select.component.mjs +13 -13
  280. package/esm2022/lib/select/select.module.mjs +5 -5
  281. package/esm2022/lib/services/animation/angular-animation-service.mjs +4 -4
  282. package/esm2022/lib/services/csv/csv-exporter.mjs +4 -4
  283. package/esm2022/lib/services/direction/directionality.mjs +4 -4
  284. package/esm2022/lib/services/excel/excel-exporter.mjs +4 -4
  285. package/esm2022/lib/services/overlay/overlay.mjs +4 -4
  286. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +7 -7
  287. package/esm2022/lib/simple-combo/simple-combo.component.mjs +4 -4
  288. package/esm2022/lib/simple-combo/simple-combo.module.mjs +5 -5
  289. package/esm2022/lib/slider/label/thumb-label.component.mjs +4 -4
  290. package/esm2022/lib/slider/slider.common.mjs +10 -10
  291. package/esm2022/lib/slider/slider.component.mjs +4 -4
  292. package/esm2022/lib/slider/slider.module.mjs +5 -5
  293. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +4 -4
  294. package/esm2022/lib/slider/ticks/tick.pipe.mjs +4 -4
  295. package/esm2022/lib/slider/ticks/ticks.component.mjs +4 -4
  296. package/esm2022/lib/snackbar/snackbar.component.mjs +4 -4
  297. package/esm2022/lib/snackbar/snackbar.module.mjs +5 -5
  298. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +4 -4
  299. package/esm2022/lib/splitter/splitter.component.mjs +7 -7
  300. package/esm2022/lib/splitter/splitter.module.mjs +5 -5
  301. package/esm2022/lib/stepper/step/step.component.mjs +4 -4
  302. package/esm2022/lib/stepper/stepper.component.mjs +4 -4
  303. package/esm2022/lib/stepper/stepper.directive.mjs +22 -22
  304. package/esm2022/lib/stepper/stepper.module.mjs +5 -5
  305. package/esm2022/lib/stepper/stepper.service.mjs +4 -4
  306. package/esm2022/lib/switch/switch.component.mjs +4 -4
  307. package/esm2022/lib/switch/switch.module.mjs +5 -5
  308. package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +4 -4
  309. package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +4 -4
  310. package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +4 -4
  311. package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +4 -4
  312. package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +7 -7
  313. package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +5 -5
  314. package/esm2022/lib/tabs/tab-content.directive.mjs +4 -4
  315. package/esm2022/lib/tabs/tab-header.directive.mjs +4 -4
  316. package/esm2022/lib/tabs/tab-item.directive.mjs +4 -4
  317. package/esm2022/lib/tabs/tabs/tab-content.component.mjs +4 -4
  318. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +4 -4
  319. package/esm2022/lib/tabs/tabs/tab-item.component.mjs +4 -4
  320. package/esm2022/lib/tabs/tabs/tabs.component.mjs +4 -4
  321. package/esm2022/lib/tabs/tabs/tabs.directives.mjs +7 -7
  322. package/esm2022/lib/tabs/tabs/tabs.module.mjs +5 -5
  323. package/esm2022/lib/tabs/tabs.directive.mjs +4 -4
  324. package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
  325. package/esm2022/lib/time-picker/time-picker.directives.mjs +7 -7
  326. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  327. package/esm2022/lib/time-picker/time-picker.pipes.mjs +7 -7
  328. package/esm2022/lib/toast/toast.component.mjs +4 -4
  329. package/esm2022/lib/toast/toast.module.mjs +5 -5
  330. package/esm2022/lib/tree/tree-navigation.service.mjs +4 -4
  331. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +7 -7
  332. package/esm2022/lib/tree/tree-selection.service.mjs +4 -4
  333. package/esm2022/lib/tree/tree.component.mjs +10 -10
  334. package/esm2022/lib/tree/tree.module.mjs +5 -5
  335. package/esm2022/lib/tree/tree.service.mjs +4 -4
  336. package/fesm2022/igniteui-angular.mjs +2330 -2321
  337. package/fesm2022/igniteui-angular.mjs.map +1 -1
  338. package/lib/grids/column-actions/public_api.d.ts +7 -0
  339. package/lib/grids/grid/grid.module.d.ts +23 -20
  340. package/lib/grids/grid/public_api.d.ts +1 -1
  341. package/lib/grids/hierarchical-grid/hierarchical-grid.module.d.ts +23 -20
  342. package/lib/grids/hierarchical-grid/public_api.d.ts +1 -1
  343. package/lib/grids/pivot-grid/pivot-grid.module.d.ts +23 -20
  344. package/lib/grids/pivot-grid/public_api.d.ts +1 -1
  345. package/lib/grids/public_api.d.ts +2 -1
  346. package/lib/grids/tree-grid/public_api.d.ts +3 -1
  347. package/lib/grids/tree-grid/tree-grid.module.d.ts +39 -35
  348. package/package.json +6 -6
@@ -26,10 +26,10 @@ export class IgxGridCellStyleClassesPipe {
26
26
  }
27
27
  return result.join(' ');
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
30
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStyleClassesPipe, isStandalone: true, name: "igxCellStyleClasses" }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
30
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStyleClassesPipe, isStandalone: true, name: "igxCellStyleClasses" }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
33
33
  type: Pipe,
34
34
  args: [{
35
35
  name: 'igxCellStyleClasses',
@@ -52,10 +52,10 @@ export class IgxGridCellStylesPipe {
52
52
  }
53
53
  return css;
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
56
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStylesPipe, isStandalone: true, name: "igxCellStyles" }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
56
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStylesPipe, isStandalone: true, name: "igxCellStyles" }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
59
59
  type: Pipe,
60
60
  args: [{
61
61
  name: 'igxCellStyles',
@@ -75,10 +75,10 @@ export class IgxGridCellImageAltPipe {
75
75
  }
76
76
  return value;
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellImageAltPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
79
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellImageAltPipe, isStandalone: true, name: "igxCellImageAlt" }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellImageAltPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
79
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellImageAltPipe, isStandalone: true, name: "igxCellImageAlt" }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridCellImageAltPipe, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridCellImageAltPipe, decorators: [{
82
82
  type: Pipe,
83
83
  args: [{
84
84
  name: 'igxCellImageAlt',
@@ -122,10 +122,10 @@ export class IgxGridRowClassesPipe {
122
122
  }
123
123
  return result;
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
126
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowClassesPipe, isStandalone: true, name: "igxGridRowClasses" }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
126
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowClassesPipe, isStandalone: true, name: "igxGridRowClasses" }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
129
129
  type: Pipe,
130
130
  args: [{
131
131
  name: 'igxGridRowClasses',
@@ -156,10 +156,10 @@ export class IgxGridRowStylesPipe {
156
156
  }
157
157
  return css;
158
158
  }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
160
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowStylesPipe, isStandalone: true, name: "igxGridRowStyles" }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
160
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowStylesPipe, isStandalone: true, name: "igxGridRowStyles" }); }
161
161
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
163
163
  type: Pipe,
164
164
  args: [{
165
165
  name: 'igxGridRowStyles',
@@ -177,10 +177,10 @@ export class IgxGridNotGroupedPipe {
177
177
  transform(value) {
178
178
  return value.filter(item => !item.columnGroup);
179
179
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
181
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridNotGroupedPipe, isStandalone: true, name: "igxNotGrouped" }); }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
181
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridNotGroupedPipe, isStandalone: true, name: "igxNotGrouped" }); }
182
182
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
184
184
  type: Pipe,
185
185
  args: [{
186
186
  name: 'igxNotGrouped',
@@ -195,10 +195,10 @@ export class IgxGridTopLevelColumns {
195
195
  transform(value) {
196
196
  return value.filter(item => item.level === 0);
197
197
  }
198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
199
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTopLevelColumns, isStandalone: true, name: "igxTopLevel" }); }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
199
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTopLevelColumns, isStandalone: true, name: "igxTopLevel" }); }
200
200
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
202
202
  type: Pipe,
203
203
  args: [{
204
204
  name: 'igxTopLevel',
@@ -213,10 +213,10 @@ export class IgxGridFilterConditionPipe {
213
213
  transform(value) {
214
214
  return value.split(/(?=[A-Z])/).join(' ');
215
215
  }
216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
217
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridFilterConditionPipe, isStandalone: true, name: "filterCondition" }); }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
217
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridFilterConditionPipe, isStandalone: true, name: "filterCondition" }); }
218
218
  }
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
220
220
  type: Pipe,
221
221
  args: [{
222
222
  name: 'filterCondition',
@@ -239,10 +239,10 @@ export class IgxGridTransactionPipe {
239
239
  }
240
240
  return collection;
241
241
  }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
243
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionPipe, isStandalone: true, name: "gridTransaction" }); }
242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
243
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionPipe, isStandalone: true, name: "gridTransaction" }); }
244
244
  }
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
246
246
  type: Pipe,
247
247
  args: [{
248
248
  name: 'gridTransaction',
@@ -260,10 +260,10 @@ export class IgxGridPaginatorOptionsPipe {
260
260
  transform(values) {
261
261
  return Array.from(new Set([...values])).sort((a, b) => a - b);
262
262
  }
263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
264
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridPaginatorOptionsPipe, isStandalone: true, name: "paginatorOptions" }); }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
264
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridPaginatorOptionsPipe, isStandalone: true, name: "paginatorOptions" }); }
265
265
  }
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
267
267
  type: Pipe,
268
268
  args: [{
269
269
  name: 'paginatorOptions',
@@ -281,10 +281,10 @@ export class IgxHasVisibleColumnsPipe {
281
281
  }
282
282
  return hasVisibleColumns ? values : [];
283
283
  }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
285
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxHasVisibleColumnsPipe, isStandalone: true, name: "visibleColumns" }); }
284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
285
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxHasVisibleColumnsPipe, isStandalone: true, name: "visibleColumns" }); }
286
286
  }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
288
288
  type: Pipe,
289
289
  args: [{
290
290
  name: 'visibleColumns',
@@ -324,13 +324,13 @@ export class IgxGridRowPinningPipe {
324
324
  return collection.map((rec) => !this.grid.isSummaryRow(rec) &&
325
325
  this.grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true } : rec);
326
326
  }
327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
328
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowPinningPipe, isStandalone: true, name: "gridRowPinning" }); }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
328
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowPinningPipe, isStandalone: true, name: "gridRowPinning" }); }
329
329
  }
330
330
  __decorate([
331
331
  buildDataView()
332
332
  ], IgxGridRowPinningPipe.prototype, "transform", null);
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
334
334
  type: Pipe,
335
335
  args: [{
336
336
  name: 'gridRowPinning',
@@ -344,10 +344,10 @@ export class IgxGridDataMapperPipe {
344
344
  transform(data, field, _, val, isNestedPath) {
345
345
  return isNestedPath ? resolveNestedPath(data, field) : val;
346
346
  }
347
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
348
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridDataMapperPipe, isStandalone: true, name: "dataMapper" }); }
347
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
348
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridDataMapperPipe, isStandalone: true, name: "dataMapper" }); }
349
349
  }
350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
351
351
  type: Pipe,
352
352
  args: [{
353
353
  name: 'dataMapper',
@@ -358,10 +358,10 @@ export class IgxStringReplacePipe {
358
358
  transform(value, search, replacement) {
359
359
  return value.replace(search, replacement);
360
360
  }
361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
362
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxStringReplacePipe, isStandalone: true, name: "igxStringReplace" }); }
361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
362
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxStringReplacePipe, isStandalone: true, name: "igxStringReplace" }); }
363
363
  }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
365
365
  type: Pipe,
366
366
  args: [{
367
367
  name: 'igxStringReplace',
@@ -383,10 +383,10 @@ export class IgxGridTransactionStatePipe {
383
383
  return transaction && transaction.value && (value || value === 0 || value === false);
384
384
  }
385
385
  }
386
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
387
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionStatePipe, isStandalone: true, name: "transactionState" }); }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
387
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionStatePipe, isStandalone: true, name: "transactionState" }); }
388
388
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
390
390
  type: Pipe,
391
391
  args: [{
392
392
  name: 'transactionState',
@@ -397,10 +397,10 @@ export class IgxColumnFormatterPipe {
397
397
  transform(value, formatter, rowData, columnData) {
398
398
  return formatter(value, rowData, columnData);
399
399
  }
400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
401
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxColumnFormatterPipe, isStandalone: true, name: "columnFormatter" }); }
400
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
401
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxColumnFormatterPipe, isStandalone: true, name: "columnFormatter" }); }
402
402
  }
403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
404
404
  type: Pipe,
405
405
  args: [{
406
406
  name: 'columnFormatter',
@@ -411,10 +411,10 @@ export class IgxSummaryFormatterPipe {
411
411
  transform(summaryResult, summaryOperand, summaryFormatter) {
412
412
  return summaryFormatter(summaryResult, summaryOperand);
413
413
  }
414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
415
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxSummaryFormatterPipe, isStandalone: true, name: "summaryFormatter" }); }
414
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
415
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxSummaryFormatterPipe, isStandalone: true, name: "summaryFormatter" }); }
416
416
  }
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
418
418
  type: Pipe,
419
419
  args: [{
420
420
  name: 'summaryFormatter',
@@ -435,10 +435,10 @@ export class IgxGridAddRowPipe {
435
435
  copy.splice(this.grid.crudService.row.index, 0, rec);
436
436
  return copy;
437
437
  }
438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
439
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridAddRowPipe, isStandalone: true, name: "gridAddRow" }); }
438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
439
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxGridAddRowPipe, isStandalone: true, name: "gridAddRow" }); }
440
440
  }
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
442
442
  type: Pipe,
443
443
  args: [{
444
444
  name: 'gridAddRow',
@@ -448,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
448
448
  type: Inject,
449
449
  args: [IGX_GRID_BASE]
450
450
  }] }]; } });
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQVksYUFBYSxFQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFNaEQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLDJCQUEyQjtJQUU3QixTQUFTLENBQUMsVUFBZ0MsRUFBRSxDQUFNLEVBQUUsSUFBUyxFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBVTtRQUMxRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVsQixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUNqRCxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUMxRixJ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QUFVO0lBQUksQ0FBQztJQUV2RCxTQUFTLENBQUMsVUFBZSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsWUFBb0I7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxTQUFTLENBQUMsSUFBSTtZQUNuSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUNqRyxPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBaUIsQ0FBQyxTQUFTLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO21IQWJRLGlCQUFpQixrQkFFTixhQUFhO2lIQUZ4QixpQkFBaUI7O2dHQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBR2dCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXksIHJlc29sdmVOZXN0ZWRQYXRoIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgSUdYX0dSSURfQkFTRSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4QWRkUm93IH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeU9wZXJhbmQsIElneFN1bW1hcnlSZXN1bHQgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElneEdyaWRSb3cgfSBmcm9tICcuLi9ncmlkLXB1YmxpYy1yb3cnO1xuXG5pbnRlcmZhY2UgR3JpZFN0eWxlQ1NTUHJvcGVydHkge1xuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4Q2VsbFN0eWxlQ2xhc3NlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ2VsbFN0eWxlQ2xhc3Nlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY3NzQ2xhc3NlczogR3JpZFN0eWxlQ1NTUHJvcGVydHksIF86IGFueSwgZGF0YTogYW55LCBmaWVsZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBfXzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFjc3NDbGFzc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzIG9mIE9iamVjdC5rZXlzKGNzc0NsYXNzZXMpKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja09yVmFsdWUgPSBjc3NDbGFzc2VzW2Nzc0NsYXNzXTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGx5ID0gdHlwZW9mIGNhbGxiYWNrT3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tPclZhbHVlKGRhdGEsIGZpZWxkLCByZXNvbHZlTmVzdGVkUGF0aChkYXRhLCBmaWVsZCksIGluZGV4KSA6IGNhbGxiYWNrT3JWYWx1ZTtcbiAgICAgICAgICAgIGlmIChhcHBseSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNzc0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hDZWxsU3R5bGVzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdHlsZXM6IEdyaWRTdHlsZUNTU1Byb3BlcnR5LCBfOiBhbnksIGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgX186IG51bWJlcik6XG4gICAgICAgIEdyaWRTdHlsZUNTU1Byb3BlcnR5IHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiByZXMgPT09ICdmdW5jdGlvbicgPyByZXMoZGF0YSwgZmllbGQsIHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSwgaW5kZXgpIDogcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbiBAUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxJbWFnZUFsdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ2VsbEltYWdlQWx0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB2YWx1ZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VuYW1lID0gdmFsW3ZhbC5sZW5ndGggLSAxXS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlbmFtZS5sZW5ndGggPyBpbWFnZW5hbWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4R3JpZFJvd0NsYXNzZXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd0NsYXNzZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHJvdzogUm93VHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLnJvdyA9IG5ldyBJZ3hHcmlkUm93KHRoaXMuZ3JpZCBhcyBhbnksIC0xLCB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShcbiAgICAgICAgY3NzQ2xhc3NlczogR3JpZFN0eWxlQ1NTUHJvcGVydHksXG4gICAgICAgIHJvdzogUm93VHlwZSxcbiAgICAgICAgZWRpdE1vZGU6IGJvb2xlYW4sXG4gICAgICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgICAgICBkaXJ0eTogYm9vbGVhbixcbiAgICAgICAgZGVsZXRlZDogYm9vbGVhbixcbiAgICAgICAgZHJhZ2dpbmc6IGJvb2xlYW4sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIG1ybDogYm9vbGVhbixcbiAgICAgICAgZmlsdGVyZWRPdXQ6IGJvb2xlYW4sXG4gICAgICAgIF9yb3dEYXRhOiBhbnksXG4gICAgICAgIF86IG51bWJlclxuICAgICkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KFsnaWd4LWdyaWRfX3RyJywgaW5kZXggJSAyID8gcm93LmdyaWQuZXZlblJvd0NTUyA6IHJvdy5ncmlkLm9kZFJvd0NTU10pO1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gW1xuICAgICAgICAgICAgW3NlbGVjdGVkLCAnaWd4LWdyaWRfX3RyLS1zZWxlY3RlZCddLFxuICAgICAgICAgICAgW2VkaXRNb2RlLCAnaWd4LWdyaWRfX3RyLS1lZGl0J10sXG4gICAgICAgICAgICBbZGlydHksICdpZ3gtZ3JpZF9fdHItLWVkaXRlZCddLFxuICAgICAgICAgICAgW2RlbGV0ZWQsICdpZ3gtZ3JpZF9fdHItLWRlbGV0ZWQnXSxcbiAgICAgICAgICAgIFtkcmFnZ2luZywgJ2lneC1ncmlkX190ci0tZHJhZyddLFxuICAgICAgICAgICAgW21ybCwgJ2lneC1ncmlkX190ci0tbXJsJ10sXG4gICAgICAgICAgICAvLyBUcmVlIGdyaWQgb25seVxuICAgICAgICAgICAgW2ZpbHRlcmVkT3V0LCAnaWd4LWdyaWRfX3RyLS1maWx0ZXJlZCddXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBbc3RhdGUsIF9jbGFzc10gb2YgbWFwcGluZykge1xuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChfY2xhc3MgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgT2JqZWN0LmtleXMoY3NzQ2xhc3NlcyA/PyB7fSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrT3JWYWx1ZSA9IGNzc0NsYXNzZXNbY3NzQ2xhc3NdO1xuICAgICAgICAgICAgdGhpcy5yb3cuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICh0aGlzLnJvdyBhcyBhbnkpLl9kYXRhID0gcm93LmRhdGE7XG4gICAgICAgICAgICBjb25zdCBhcHBseSA9IHR5cGVvZiBjYWxsYmFja09yVmFsdWUgPT09ICdmdW5jdGlvbicgPyBjYWxsYmFja09yVmFsdWUodGhpcy5yb3cpIDogY2FsbGJhY2tPclZhbHVlO1xuICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChjc3NDbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4R3JpZFJvd1N0eWxlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUm93U3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiBHcmlkU3R5bGVDU1NQcm9wZXJ0eSwgcm93RGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBfXzogbnVtYmVyKTogR3JpZFN0eWxlQ1NTUHJvcGVydHkge1xuICAgICAgICBjb25zdCBjc3MgPSB7fTtcbiAgICAgICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjc3M7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gc3R5bGVzW3Byb3BdO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZC5pc1RyZWVSb3cgJiYgdGhpcy5ncmlkLmlzVHJlZVJvdyhyb3dEYXRhKSA/IHJvd0RhdGEuZGF0YSA6IHJvd0RhdGE7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgSWd4R3JpZFJvdygodGhpcy5ncmlkIGFzIGFueSksIGluZGV4LCBkYXRhKTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJyA/IGNiKHJvdykgOiBjYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3NzO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hOb3RHcm91cGVkJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWROb3RHcm91cGVkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5jb2x1bW5Hcm91cCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneFRvcExldmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUb3BMZXZlbENvbHVtbnMgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sZXZlbCA9PT0gMCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckNvbmRpdGlvbicsXG4gICAgcHVyZTogdHJ1ZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRGaWx0ZXJDb25kaXRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJyAnKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFRyYW5zYWN0aW9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUcmFuc2FjdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBfaWQ6IHN0cmluZywgX3BpcGVUcmlnZ2VyOiBudW1iZXIpIHtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBEYXRhVXRpbC5tZXJnZVRyYW5zYWN0aW9ucyhcbiAgICAgICAgICAgICAgICBjbG9uZUFycmF5KGNvbGxlY3Rpb24pLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnByaW1hcnlLZXksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ3BhZ2luYXRvck9wdGlvbnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFBhZ2luYXRvck9wdGlvbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZXM6IEFycmF5PG51bWJlcj4pIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbLi4udmFsdWVzXSkpLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAndmlzaWJsZUNvbHVtbnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGFzVmlzaWJsZUNvbHVtbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZXM6IGFueVtdLCBoYXNWaXNpYmxlQ29sdW1ucykge1xuICAgICAgICBpZiAoISh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc1Zpc2libGVDb2x1bW5zID8gdmFsdWVzIDogW107XG4gICAgfVxuXG59XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuZnVuY3Rpb24gYnVpbGREYXRhVmlldygpOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiBmdW5jdGlvbiAoX3RhcmdldDogdW5rbm93biwgX3Byb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5idWlsZERhdGFWaWV3KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFJvd1Bpbm5pbmcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd1Bpbm5pbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgQGJ1aWxkRGF0YVZpZXcoKVxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIGlkOiBzdHJpbmcsIGlzUGlubmVkID0gZmFsc2UsIF9waXBlVHJpZ2dlcjogbnVtYmVyKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5oYXNQaW5uZWRSZWNvcmRzICYmIGlzUGlubmVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb2xsZWN0aW9uLmZpbHRlcihyZWMgPT4gIXRoaXMuZ3JpZC5pc1N1bW1hcnlSb3cocmVjKSAmJiB0aGlzLmdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSk7XG4gICAgICAgICAgICByZXN1bHQuc29ydCgocmVjMSwgcmVjMikgPT4gdGhpcy5ncmlkLmdldEluaXRpYWxQaW5uZWRJbmRleChyZWMxKSAtIHRoaXMuZ3JpZC5nZXRJbml0aWFsUGlubmVkSW5kZXgocmVjMikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC51bnBpbm5lZFJlY29yZHMgPSBjb2xsZWN0aW9uO1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5oYXNQaW5uZWRSZWNvcmRzKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQucGlubmVkUmVjb3JkcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGlzUGlubmVkID8gW10gOiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24ubWFwKChyZWMpID0+ICF0aGlzLmdyaWQuaXNTdW1tYXJ5Um93KHJlYykgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZChyZWMpID8geyByZWNvcmRSZWY6IHJlYywgZ2hvc3RSZWNvcmQ6IHRydWUgfSA6IHJlYyk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RhdGFNYXBwZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZERhdGFNYXBwZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGRhdGE6IGFueVtdLCBmaWVsZDogc3RyaW5nLCBfOiBudW1iZXIsIHZhbDogYW55LCBpc05lc3RlZFBhdGg6IGJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIGlzTmVzdGVkUGF0aCA/IHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSA6IHZhbDtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4U3RyaW5nUmVwbGFjZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTdHJpbmdSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZyB8IFJlZ0V4cCwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHNlYXJjaCwgcmVwbGFjZW1lbnQpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0cmFuc2FjdGlvblN0YXRlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUcmFuc2FjdGlvblN0YXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShyb3dfaWQ6IGFueSwgZmllbGQ6IHN0cmluZywgcm93RWRpdGFibGU6IGJvb2xlYW4sIHRyYW5zYWN0aW9uczogYW55LCBfOiBhbnksIF9fOiBhbnksIF9fXzogYW55KSB7XG4gICAgICAgIGlmIChyb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgcm93Q3VycmVudFN0YXRlID0gdHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZShyb3dfaWQsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChyb3dDdXJyZW50U3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHJvd0N1cnJlbnRTdGF0ZSwgZmllbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbnMuZ2V0U3RhdGUocm93X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgodHJhbnNhY3Rpb24/LnZhbHVlID8/IHt9LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24gJiYgdHJhbnNhY3Rpb24udmFsdWUgJiYgKHZhbHVlIHx8IHZhbHVlID09PSAwIHx8IHZhbHVlID09PSBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY29sdW1uRm9ybWF0dGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbkZvcm1hdHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZm9ybWF0dGVyOiAodjogYW55LCBkYXRhOiBhbnksIGNvbHVtbkRhdGE/IDphbnkpID0+IGFueSwgcm93RGF0YTogYW55LCBjb2x1bW5EYXRhPyA6IGFueSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVyKHZhbHVlLCByb3dEYXRhLCBjb2x1bW5EYXRhKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3VtbWFyeUZvcm1hdHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTdW1tYXJ5Rm9ybWF0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdW1tYXJ5UmVzdWx0OiBJZ3hTdW1tYXJ5UmVzdWx0LCBzdW1tYXJ5T3BlcmFuZDogSWd4U3VtbWFyeU9wZXJhbmQsXG4gICAgICAgIHN1bW1hcnlGb3JtYXR0ZXI6IChzOiBJZ3hTdW1tYXJ5UmVzdWx0LCBvOiBJZ3hTdW1tYXJ5T3BlcmFuZCkgPT4gYW55KSB7XG4gICAgICAgIHJldHVybiBzdW1tYXJ5Rm9ybWF0dGVyKHN1bW1hcnlSZXN1bHQsIHN1bW1hcnlPcGVyYW5kKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZEFkZFJvdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQWRkUm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55LCBpc1Bpbm5lZCA9IGZhbHNlLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSB8fCAhdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyB8fCB0aGlzLmdyaWQuY3J1ZFNlcnZpY2Uucm93LmdldENsYXNzTmFtZSgpICE9PSBJZ3hBZGRSb3cubmFtZSB8fFxuICAgICAgICAgICAgIXRoaXMuZ3JpZC5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQgfHwgaXNQaW5uZWQgIT09IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQuaXNQaW5uZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKDApO1xuICAgICAgICBjb25zdCByZWMgPSAodGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyBhcyBJZ3hBZGRSb3cpLnJlY29yZFJlZjtcbiAgICAgICAgY29weS5zcGxpY2UodGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5pbmRleCwgMCwgcmVjKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuIl19
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQVksYUFBYSxFQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFNaEQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLDJCQUEyQjtJQUU3QixTQUFTLENBQUMsVUFBZ0MsRUFBRSxDQUFNLEVBQUUsSUFBUyxFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBVTtRQUMxRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVsQixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDO2dCQUNqRCxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUMxRixJ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QUFVO0lBQUksQ0FBQztJQUV2RCxTQUFTLENBQUMsVUFBZSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsWUFBb0I7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxTQUFTLENBQUMsSUFBSTtZQUNuSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUNqRyxPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBaUIsQ0FBQyxTQUFTLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQWJRLGlCQUFpQixrQkFFTixhQUFhOzRHQUZ4QixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBR2dCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXksIHJlc29sdmVOZXN0ZWRQYXRoIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkVHlwZSwgSUdYX0dSSURfQkFTRSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4QWRkUm93IH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeU9wZXJhbmQsIElneFN1bW1hcnlSZXN1bHQgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElneEdyaWRSb3cgfSBmcm9tICcuLi9ncmlkLXB1YmxpYy1yb3cnO1xuXG5pbnRlcmZhY2UgR3JpZFN0eWxlQ1NTUHJvcGVydHkge1xuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4Q2VsbFN0eWxlQ2xhc3NlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ2VsbFN0eWxlQ2xhc3Nlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY3NzQ2xhc3NlczogR3JpZFN0eWxlQ1NTUHJvcGVydHksIF86IGFueSwgZGF0YTogYW55LCBmaWVsZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBfXzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFjc3NDbGFzc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzIG9mIE9iamVjdC5rZXlzKGNzc0NsYXNzZXMpKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja09yVmFsdWUgPSBjc3NDbGFzc2VzW2Nzc0NsYXNzXTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGx5ID0gdHlwZW9mIGNhbGxiYWNrT3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tPclZhbHVlKGRhdGEsIGZpZWxkLCByZXNvbHZlTmVzdGVkUGF0aChkYXRhLCBmaWVsZCksIGluZGV4KSA6IGNhbGxiYWNrT3JWYWx1ZTtcbiAgICAgICAgICAgIGlmIChhcHBseSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNzc0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hDZWxsU3R5bGVzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdHlsZXM6IEdyaWRTdHlsZUNTU1Byb3BlcnR5LCBfOiBhbnksIGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgX186IG51bWJlcik6XG4gICAgICAgIEdyaWRTdHlsZUNTU1Byb3BlcnR5IHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiByZXMgPT09ICdmdW5jdGlvbicgPyByZXMoZGF0YSwgZmllbGQsIHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSwgaW5kZXgpIDogcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbiBAUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxJbWFnZUFsdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ2VsbEltYWdlQWx0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB2YWx1ZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VuYW1lID0gdmFsW3ZhbC5sZW5ndGggLSAxXS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlbmFtZS5sZW5ndGggPyBpbWFnZW5hbWVbMF0gOiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4R3JpZFJvd0NsYXNzZXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd0NsYXNzZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHJvdzogUm93VHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLnJvdyA9IG5ldyBJZ3hHcmlkUm93KHRoaXMuZ3JpZCBhcyBhbnksIC0xLCB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShcbiAgICAgICAgY3NzQ2xhc3NlczogR3JpZFN0eWxlQ1NTUHJvcGVydHksXG4gICAgICAgIHJvdzogUm93VHlwZSxcbiAgICAgICAgZWRpdE1vZGU6IGJvb2xlYW4sXG4gICAgICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgICAgICBkaXJ0eTogYm9vbGVhbixcbiAgICAgICAgZGVsZXRlZDogYm9vbGVhbixcbiAgICAgICAgZHJhZ2dpbmc6IGJvb2xlYW4sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIG1ybDogYm9vbGVhbixcbiAgICAgICAgZmlsdGVyZWRPdXQ6IGJvb2xlYW4sXG4gICAgICAgIF9yb3dEYXRhOiBhbnksXG4gICAgICAgIF86IG51bWJlclxuICAgICkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KFsnaWd4LWdyaWRfX3RyJywgaW5kZXggJSAyID8gcm93LmdyaWQuZXZlblJvd0NTUyA6IHJvdy5ncmlkLm9kZFJvd0NTU10pO1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gW1xuICAgICAgICAgICAgW3NlbGVjdGVkLCAnaWd4LWdyaWRfX3RyLS1zZWxlY3RlZCddLFxuICAgICAgICAgICAgW2VkaXRNb2RlLCAnaWd4LWdyaWRfX3RyLS1lZGl0J10sXG4gICAgICAgICAgICBbZGlydHksICdpZ3gtZ3JpZF9fdHItLWVkaXRlZCddLFxuICAgICAgICAgICAgW2RlbGV0ZWQsICdpZ3gtZ3JpZF9fdHItLWRlbGV0ZWQnXSxcbiAgICAgICAgICAgIFtkcmFnZ2luZywgJ2lneC1ncmlkX190ci0tZHJhZyddLFxuICAgICAgICAgICAgW21ybCwgJ2lneC1ncmlkX190ci0tbXJsJ10sXG4gICAgICAgICAgICAvLyBUcmVlIGdyaWQgb25seVxuICAgICAgICAgICAgW2ZpbHRlcmVkT3V0LCAnaWd4LWdyaWRfX3RyLS1maWx0ZXJlZCddXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBbc3RhdGUsIF9jbGFzc10gb2YgbWFwcGluZykge1xuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChfY2xhc3MgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgT2JqZWN0LmtleXMoY3NzQ2xhc3NlcyA/PyB7fSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrT3JWYWx1ZSA9IGNzc0NsYXNzZXNbY3NzQ2xhc3NdO1xuICAgICAgICAgICAgdGhpcy5yb3cuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICh0aGlzLnJvdyBhcyBhbnkpLl9kYXRhID0gcm93LmRhdGE7XG4gICAgICAgICAgICBjb25zdCBhcHBseSA9IHR5cGVvZiBjYWxsYmFja09yVmFsdWUgPT09ICdmdW5jdGlvbicgPyBjYWxsYmFja09yVmFsdWUodGhpcy5yb3cpIDogY2FsbGJhY2tPclZhbHVlO1xuICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChjc3NDbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4R3JpZFJvd1N0eWxlcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUm93U3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiBHcmlkU3R5bGVDU1NQcm9wZXJ0eSwgcm93RGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBfXzogbnVtYmVyKTogR3JpZFN0eWxlQ1NTUHJvcGVydHkge1xuICAgICAgICBjb25zdCBjc3MgPSB7fTtcbiAgICAgICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjc3M7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gc3R5bGVzW3Byb3BdO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZC5pc1RyZWVSb3cgJiYgdGhpcy5ncmlkLmlzVHJlZVJvdyhyb3dEYXRhKSA/IHJvd0RhdGEuZGF0YSA6IHJvd0RhdGE7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgSWd4R3JpZFJvdygodGhpcy5ncmlkIGFzIGFueSksIGluZGV4LCBkYXRhKTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJyA/IGNiKHJvdykgOiBjYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3NzO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hOb3RHcm91cGVkJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWROb3RHcm91cGVkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5jb2x1bW5Hcm91cCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneFRvcExldmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUb3BMZXZlbENvbHVtbnMgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sZXZlbCA9PT0gMCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckNvbmRpdGlvbicsXG4gICAgcHVyZTogdHJ1ZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRGaWx0ZXJDb25kaXRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJyAnKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFRyYW5zYWN0aW9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUcmFuc2FjdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHJpdmF0ZSBncmlkOiBHcmlkVHlwZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBfaWQ6IHN0cmluZywgX3BpcGVUcmlnZ2VyOiBudW1iZXIpIHtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBEYXRhVXRpbC5tZXJnZVRyYW5zYWN0aW9ucyhcbiAgICAgICAgICAgICAgICBjbG9uZUFycmF5KGNvbGxlY3Rpb24pLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnByaW1hcnlLZXksXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ3BhZ2luYXRvck9wdGlvbnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFBhZ2luYXRvck9wdGlvbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZXM6IEFycmF5PG51bWJlcj4pIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbLi4udmFsdWVzXSkpLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAndmlzaWJsZUNvbHVtbnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGFzVmlzaWJsZUNvbHVtbnNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZXM6IGFueVtdLCBoYXNWaXNpYmxlQ29sdW1ucykge1xuICAgICAgICBpZiAoISh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc1Zpc2libGVDb2x1bW5zID8gdmFsdWVzIDogW107XG4gICAgfVxuXG59XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuZnVuY3Rpb24gYnVpbGREYXRhVmlldygpOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiBmdW5jdGlvbiAoX3RhcmdldDogdW5rbm93biwgX3Byb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5idWlsZERhdGFWaWV3KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFJvd1Bpbm5pbmcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd1Bpbm5pbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHByaXZhdGUgZ3JpZDogR3JpZFR5cGUpIHsgfVxuXG4gICAgQGJ1aWxkRGF0YVZpZXcoKVxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIGlkOiBzdHJpbmcsIGlzUGlubmVkID0gZmFsc2UsIF9waXBlVHJpZ2dlcjogbnVtYmVyKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5oYXNQaW5uZWRSZWNvcmRzICYmIGlzUGlubmVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb2xsZWN0aW9uLmZpbHRlcihyZWMgPT4gIXRoaXMuZ3JpZC5pc1N1bW1hcnlSb3cocmVjKSAmJiB0aGlzLmdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSk7XG4gICAgICAgICAgICByZXN1bHQuc29ydCgocmVjMSwgcmVjMikgPT4gdGhpcy5ncmlkLmdldEluaXRpYWxQaW5uZWRJbmRleChyZWMxKSAtIHRoaXMuZ3JpZC5nZXRJbml0aWFsUGlubmVkSW5kZXgocmVjMikpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC51bnBpbm5lZFJlY29yZHMgPSBjb2xsZWN0aW9uO1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5oYXNQaW5uZWRSZWNvcmRzKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQucGlubmVkUmVjb3JkcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGlzUGlubmVkID8gW10gOiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24ubWFwKChyZWMpID0+ICF0aGlzLmdyaWQuaXNTdW1tYXJ5Um93KHJlYykgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZChyZWMpID8geyByZWNvcmRSZWY6IHJlYywgZ2hvc3RSZWNvcmQ6IHRydWUgfSA6IHJlYyk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2RhdGFNYXBwZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZERhdGFNYXBwZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGRhdGE6IGFueVtdLCBmaWVsZDogc3RyaW5nLCBfOiBudW1iZXIsIHZhbDogYW55LCBpc05lc3RlZFBhdGg6IGJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIGlzTmVzdGVkUGF0aCA/IHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSA6IHZhbDtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4U3RyaW5nUmVwbGFjZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTdHJpbmdSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZyB8IFJlZ0V4cCwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHNlYXJjaCwgcmVwbGFjZW1lbnQpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICd0cmFuc2FjdGlvblN0YXRlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUcmFuc2FjdGlvblN0YXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShyb3dfaWQ6IGFueSwgZmllbGQ6IHN0cmluZywgcm93RWRpdGFibGU6IGJvb2xlYW4sIHRyYW5zYWN0aW9uczogYW55LCBfOiBhbnksIF9fOiBhbnksIF9fXzogYW55KSB7XG4gICAgICAgIGlmIChyb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgcm93Q3VycmVudFN0YXRlID0gdHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZShyb3dfaWQsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChyb3dDdXJyZW50U3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHJvd0N1cnJlbnRTdGF0ZSwgZmllbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbnMuZ2V0U3RhdGUocm93X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgodHJhbnNhY3Rpb24/LnZhbHVlID8/IHt9LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24gJiYgdHJhbnNhY3Rpb24udmFsdWUgJiYgKHZhbHVlIHx8IHZhbHVlID09PSAwIHx8IHZhbHVlID09PSBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY29sdW1uRm9ybWF0dGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbkZvcm1hdHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZm9ybWF0dGVyOiAodjogYW55LCBkYXRhOiBhbnksIGNvbHVtbkRhdGE/IDphbnkpID0+IGFueSwgcm93RGF0YTogYW55LCBjb2x1bW5EYXRhPyA6IGFueSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVyKHZhbHVlLCByb3dEYXRhLCBjb2x1bW5EYXRhKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3VtbWFyeUZvcm1hdHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTdW1tYXJ5Rm9ybWF0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdW1tYXJ5UmVzdWx0OiBJZ3hTdW1tYXJ5UmVzdWx0LCBzdW1tYXJ5T3BlcmFuZDogSWd4U3VtbWFyeU9wZXJhbmQsXG4gICAgICAgIHN1bW1hcnlGb3JtYXR0ZXI6IChzOiBJZ3hTdW1tYXJ5UmVzdWx0LCBvOiBJZ3hTdW1tYXJ5T3BlcmFuZCkgPT4gYW55KSB7XG4gICAgICAgIHJldHVybiBzdW1tYXJ5Rm9ybWF0dGVyKHN1bW1hcnlSZXN1bHQsIHN1bW1hcnlPcGVyYW5kKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZEFkZFJvdycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQWRkUm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcml2YXRlIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55LCBpc1Bpbm5lZCA9IGZhbHNlLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSB8fCAhdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyB8fCB0aGlzLmdyaWQuY3J1ZFNlcnZpY2Uucm93LmdldENsYXNzTmFtZSgpICE9PSBJZ3hBZGRSb3cubmFtZSB8fFxuICAgICAgICAgICAgIXRoaXMuZ3JpZC5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQgfHwgaXNQaW5uZWQgIT09IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5hZGRSb3dQYXJlbnQuaXNQaW5uZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKDApO1xuICAgICAgICBjb25zdCByZWMgPSAodGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyBhcyBJZ3hBZGRSb3cpLnJlY29yZFJlZjtcbiAgICAgICAgY29weS5zcGxpY2UodGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5pbmRleCwgMCwgcmVjKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuIl19
@@ -182,10 +182,10 @@ export class IgxAdvancedFilteringDialogComponent {
182
182
  });
183
183
  }
184
184
  }
185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
186
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] }); }
185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] }); }
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
189
189
  type: Component,
190
190
  args: [{ selector: 'igx-advanced-filtering-dialog', standalone: true, imports: [NgIf, IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
191
191
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PlatformUtil }]; }, propDecorators: { queryBuilder: [{
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
197
197
  }], grid: [{
198
198
  type: Input
199
199
  }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvZmlsdGVyaW5nL2FkdmFuY2VkLWZpbHRlcmluZy9hZHZhbmNlZC1maWx0ZXJpbmctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvYWR2YW5jZWQtZmlsdGVyaW5nL2FkdmFuY2VkLWZpbHRlcmluZy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErQyxXQUFXLEVBQ3hGLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSy9CLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBT0gsTUFBTSxPQUFPLG1DQUFtQztJQTRCNUMsWUFBbUIsR0FBc0IsRUFBWSxRQUFzQjtR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QUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzttSEE5TFEsbUNBQW1DO3VHQUFuQyxtQ0FBbUMsdVFBSVQsd0JBQXdCLDZCQ3ZDL0Qsd3dEQW9DQSw0Q0RIYyxJQUFJLDZGQUFFLGdCQUFnQixtV0FBRSxPQUFPLG9GQUFFLHdCQUF3QixvS0FBRSw4QkFBOEIseUhBQUUsc0JBQXNCLDREQUFFLGtCQUFrQjs7Z0dBRXRJLG1DQUFtQztrQkFOL0MsU0FBUzsrQkFDSSwrQkFBK0IsY0FFN0IsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsQ0FBQzttSUFPekksWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7Z0JBT3RELE9BQU87c0JBRGIsV0FBVzt1QkFBQyxlQUFlO2dCQTZDakIsSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4T3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vdmVybGF5L292ZXJsYXknO1xuaW1wb3J0IHsgSURyYWdTdGFydEV2ZW50QXJncywgSWd4RHJhZ0RpcmVjdGl2ZSwgSWd4RHJhZ0hhbmRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUFjdGl2ZU5vZGUgfSBmcm9tICcuLi8uLi9ncmlkLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgR3JpZFR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHkgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2RlbnNpdHknO1xuaW1wb3J0IHsgSWd4UXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXJyZW50UmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9pMThuL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBHcmlkUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuLi8uLi8uLi9jb3JlL2kxOG4vZ3JpZC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFF1ZXJ5QnVpbGRlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHVzZWQgZm9yIHByZXNlbnRpbmcgYWR2YW5jZWQgZmlsdGVyaW5nIFVJIGZvciBhIEdyaWQuXG4gKiBJdCBpcyB1c2VkIGludGVybmFsbHkgaW4gdGhlIEdyaWQsIGJ1dCBjb3VsZCBhbHNvIGJlIGhvc3RlZCBpbiBhIGNvbnRhaW5lciBvdXRzaWRlIG9mIGl0LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LWFkdmFuY2VkLWZpbHRlcmluZy1kaWFsb2dcbiAqICAgICBbZ3JpZF09XCJncmlkMVwiPlxuICogPC9pZ3gtYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1hZHZhbmNlZC1maWx0ZXJpbmctZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgSWd4RHJhZ0RpcmVjdGl2ZSwgTmdDbGFzcywgSWd4UXVlcnlCdWlsZGVyQ29tcG9uZW50LCBJZ3hRdWVyeUJ1aWxkZXJIZWFkZXJDb21wb25lbnQsIElneERyYWdIYW5kbGVEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QWR2YW5jZWRGaWx0ZXJpbmdEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncXVlcnlCdWlsZGVyJywgeyByZWFkOiBJZ3hRdWVyeUJ1aWxkZXJDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgcXVlcnlCdWlsZGVyOiBJZ3hRdWVyeUJ1aWxkZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gICAgcHVibGljIGRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5saW5lID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGxhc3RBY3RpdmVOb2RlID0ge30gYXMgSUFjdGl2ZU5vZGU7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgX292ZXJsYXlDb21wb25lbnRJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgX292ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZTtcbiAgICBwcml2YXRlIF9ncmlkOiBHcmlkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCkgeyB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5zZXRQaWNrZXJPdXRsZXQodGhpcy5ncmlkLm91dGxldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZGlzcGxheURlbnNpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZ3JpZChncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLl9ncmlkID0gZ3JpZDtcblxuICAgICAgICBpZiAodGhpcy5fZ3JpZCkge1xuICAgICAgICAgICAgdGhpcy5fZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnJlZ2lzdGVyU1ZHSWNvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXNzaWduUmVzb3VyY2VTdHJpbmdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyaWQoKTogR3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyYWJsZUZpZWxkcygpOiBGaWVsZFR5cGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gIWNvbHVtbi5jb2x1bW5Hcm91cCAmJiBjb2x1bW4uZmlsdGVyYWJsZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBkcmFnU3RhcnQoZHJhZ0FyZ3M6IElEcmFnU3RhcnRFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5Q29tcG9uZW50SWQpIHtcbiAgICAgICAgICAgIGRyYWdBcmdzLmNhbmNlbCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRyYWdNb3ZlKGUpIHtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gZS5uZXh0UGFnZVggLSBlLnBhZ2VYO1xuICAgICAgICBjb25zdCBkZWx0YVkgPSBlLm5leHRQYWdlWSAtIGUucGFnZVk7XG4gICAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2Uuc2V0T2Zmc2V0KHRoaXMuX292ZXJsYXlDb21wb25lbnRJZCwgZGVsdGFYLCBkZWx0YVkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudEFyZ3M6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnRBcmdzLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudEFyZ3Mua2V5O1xuICAgICAgICBpZiAodGhpcy5xdWVyeUJ1aWxkZXIuaXNDb250ZXh0TWVudVZpc2libGUgJiYgKGtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuRVNDQVBFKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLkVTQ0FQRSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShncmlkOiBHcmlkVHlwZSwgb3ZlcmxheVNlcnZpY2U6IElneE92ZXJsYXlTZXJ2aWNlLFxuICAgICAgICBvdmVybGF5Q29tcG9uZW50SWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmlubGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZSA9IG92ZXJsYXlTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9vdmVybGF5Q29tcG9uZW50SWQgPSBvdmVybGF5Q29tcG9uZW50SWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25DbGVhckJ1dHRvbkNsaWNrKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXhwcmVzc2lvblRyZWUgPSB0aGlzLmdyaWQuYWR2YW5jZWRGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheUNvbXBvbmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZS5oaWRlKHRoaXMuX292ZXJsYXlDb21wb25lbnRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uYWN0aXZlTm9kZSA9IHRoaXMubGFzdEFjdGl2ZU5vZGU7XG4gICAgICAgIGlmICh0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlICYmIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUucm93ID09PSAtMSkge1xuICAgICAgICAgICAgKHRoaXMuZ3JpZCBhcyBhbnkpLnRoZWFkUm93Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFwcGx5Q2hhbmdlcyhldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRFZGl0KGZhbHNlLCBldmVudCk7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4aXRPcGVyYW5kRWRpdCgpO1xuICAgICAgICB0aGlzLmdyaWQuYWR2YW5jZWRGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSB0aGlzLnF1ZXJ5QnVpbGRlci5leHByZXNzaW9uVHJlZSBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbENoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFwcGx5QnV0dG9uQ2xpY2soZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmFwcGx5Q2hhbmdlcyhldmVudCk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2lnblJlc291cmNlU3RyaW5ncygpIHtcbiAgICAgICAgLy8gSWYgZ3JpZCBoYXMgY3VzdG9tIHJlc291cmNlIHN0cmluZ3Mgc2V0IGZvciB0aGUgYWR2YW5jZWQgZmlsdGVyaW5nLFxuICAgICAgICAvLyB0aGV5IGFyZSBwYXNzZWQgdG8gdGhlIHF1ZXJ5IGJ1aWxkZXIgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgICAgY29uc3QgZ3JpZFJTID0gdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncztcblxuICAgICAgICBpZiAoZ3JpZFJTICE9PSBHcmlkUmVzb3VyY2VTdHJpbmdzRU4pIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5QnVpbGRlclJTID0gQ3VycmVudFJlc291cmNlU3RyaW5ncy5RdWVyeUJ1aWxkZXJSZXNTdHJpbmdzO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZ3JpZFJTKS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15pZ3hfZ3JpZF8oYWR2YW5jZWRfKT9maWx0ZXJfKHJvd18pPy87XG4gICAgICAgICAgICAgICAgaWYgKCFyZWcudGVzdChwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFmZml4ID0gcHJvcC5yZXBsYWNlKHJlZywgJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclByb3AgPSBgaWd4X3F1ZXJ5X2J1aWxkZXJfZmlsdGVyXyR7YWZmaXh9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBnZW5lcmFsUHJvcCA9IGBpZ3hfcXVlcnlfYnVpbGRlcl8ke2FmZml4fWBcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlCdWlsZGVyUlNbZmlsdGVyUHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeUJ1aWxkZXJSU1tmaWx0ZXJQcm9wXSA9IGdyaWRSU1twcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHF1ZXJ5QnVpbGRlclJTW2dlbmVyYWxQcm9wXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QnVpbGRlclJTW2dlbmVyYWxQcm9wXSA9IGdyaWRSU1twcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhcnRpY2xlICpuZ0lmPVwiZ3JpZFwiIGNsYXNzPVwiaWd4LWFkdmFuY2VkLWZpbHRlclwiIGlneERyYWcgW2dob3N0XT1cImZhbHNlXCIgW2RyYWdUb2xlcmFuY2VdPVwiMFwiXG4gICAgKGRyYWdTdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIChkcmFnTW92ZSk9XCJvbkRyYWdNb3ZlKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnaWd4LWFkdmFuY2VkLWZpbHRlci0tY29zeSc6IGdyaWQuZGlzcGxheURlbnNpdHkgPT09ICdjb3N5JyxcbiAgICAgICAgJ2lneC1hZHZhbmNlZC1maWx0ZXItLWNvbXBhY3QnOiBncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29tcGFjdCcsXG4gICAgICAgICdpZ3gtYWR2YW5jZWQtZmlsdGVyLS1pbmxpbmUnOiBpbmxpbmVcbiAgICB9XCI+XG4gICAgPGlneC1xdWVyeS1idWlsZGVyICNxdWVyeUJ1aWxkZXIgW2xvY2FsZV09XCJncmlkLmxvY2FsZVwiXG4gICAgICAgIFtmaWVsZHNdPVwidGhpcy5maWx0ZXJhYmxlRmllbGRzXCJcbiAgICAgICAgW2V4cHJlc3Npb25UcmVlXT1cInRoaXMuZ3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVwiPlxuICAgICAgICA8aWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyXG4gICAgICAgICAgICBbdGl0bGVdPVwiZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3RpdGxlXCJcbiAgICAgICAgICAgIGlneERyYWdIYW5kbGU+XG4gICAgICAgIDwvaWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyPlxuICAgIDwvaWd4LXF1ZXJ5LWJ1aWxkZXI+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fc2Vjb25kYXJ5LWZvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fY2xlYXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIHR5cGU9XCJidXR0b25cIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IGdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfY2xlYXIgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1leGNlbC1maWx0ZXJfX2NhbmNlbFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBpZ3hCdXR0b249XCJmbGF0XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIChjbGljayk9XCJjYW5jZWxDaGFuZ2VzKClcIj5cbiAgICAgICAgICAgICAgICB7eyBncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9leGNlbF9jYW5jZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1leGNlbC1maWx0ZXJfX2FwcGx5XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIHR5cGU9XCJidXR0b25cIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5QnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IGdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2FwcGx5IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG48L2FydGljbGU+XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvZmlsdGVyaW5nL2FkdmFuY2VkLWZpbHRlcmluZy9hZHZhbmNlZC1maWx0ZXJpbmctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvYWR2YW5jZWQtZmlsdGVyaW5nL2FkdmFuY2VkLWZpbHRlcmluZy1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErQyxXQUFXLEVBQ3hGLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSy9CLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVoRDs7Ozs7Ozs7OztHQVVHO0FBT0gsTUFBTSxPQUFPLG1DQUFtQztJQTRCNUMsWUFBbUIsR0FBc0IsRUFBWSxRQUFzQjtR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QUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs4R0E5TFEsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsdVFBSVQsd0JBQXdCLDZCQ3ZDL0Qsd3dEQW9DQSw0Q0RIYyxJQUFJLDZGQUFFLGdCQUFnQixtV0FBRSxPQUFPLG9GQUFFLHdCQUF3QixvS0FBRSw4QkFBOEIseUhBQUUsc0JBQXNCLDREQUFFLGtCQUFrQjs7MkZBRXRJLG1DQUFtQztrQkFOL0MsU0FBUzsrQkFDSSwrQkFBK0IsY0FFN0IsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsQ0FBQzttSUFPekksWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7Z0JBT3RELE9BQU87c0JBRGIsV0FBVzt1QkFBQyxlQUFlO2dCQTZDakIsSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4T3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vdmVybGF5L292ZXJsYXknO1xuaW1wb3J0IHsgSURyYWdTdGFydEV2ZW50QXJncywgSWd4RHJhZ0RpcmVjdGl2ZSwgSWd4RHJhZ0hhbmRsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUFjdGl2ZU5vZGUgfSBmcm9tICcuLi8uLi9ncmlkLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgR3JpZFR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHkgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2RlbnNpdHknO1xuaW1wb3J0IHsgSWd4UXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXJyZW50UmVzb3VyY2VTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9pMThuL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBHcmlkUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuLi8uLi8uLi9jb3JlL2kxOG4vZ3JpZC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFF1ZXJ5QnVpbGRlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHVzZWQgZm9yIHByZXNlbnRpbmcgYWR2YW5jZWQgZmlsdGVyaW5nIFVJIGZvciBhIEdyaWQuXG4gKiBJdCBpcyB1c2VkIGludGVybmFsbHkgaW4gdGhlIEdyaWQsIGJ1dCBjb3VsZCBhbHNvIGJlIGhvc3RlZCBpbiBhIGNvbnRhaW5lciBvdXRzaWRlIG9mIGl0LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LWFkdmFuY2VkLWZpbHRlcmluZy1kaWFsb2dcbiAqICAgICBbZ3JpZF09XCJncmlkMVwiPlxuICogPC9pZ3gtYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1hZHZhbmNlZC1maWx0ZXJpbmctZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtZmlsdGVyaW5nLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgSWd4RHJhZ0RpcmVjdGl2ZSwgTmdDbGFzcywgSWd4UXVlcnlCdWlsZGVyQ29tcG9uZW50LCBJZ3hRdWVyeUJ1aWxkZXJIZWFkZXJDb21wb25lbnQsIElneERyYWdIYW5kbGVEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QWR2YW5jZWRGaWx0ZXJpbmdEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncXVlcnlCdWlsZGVyJywgeyByZWFkOiBJZ3hRdWVyeUJ1aWxkZXJDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgcXVlcnlCdWlsZGVyOiBJZ3hRdWVyeUJ1aWxkZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gICAgcHVibGljIGRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5saW5lID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGxhc3RBY3RpdmVOb2RlID0ge30gYXMgSUFjdGl2ZU5vZGU7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgX292ZXJsYXlDb21wb25lbnRJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgX292ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZTtcbiAgICBwcml2YXRlIF9ncmlkOiBHcmlkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCkgeyB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlci5zZXRQaWNrZXJPdXRsZXQodGhpcy5ncmlkLm91dGxldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZGlzcGxheURlbnNpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZ3JpZChncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLl9ncmlkID0gZ3JpZDtcblxuICAgICAgICBpZiAodGhpcy5fZ3JpZCkge1xuICAgICAgICAgICAgdGhpcy5fZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnJlZ2lzdGVyU1ZHSWNvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXNzaWduUmVzb3VyY2VTdHJpbmdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyaWQoKTogR3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyYWJsZUZpZWxkcygpOiBGaWVsZFR5cGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gIWNvbHVtbi5jb2x1bW5Hcm91cCAmJiBjb2x1bW4uZmlsdGVyYWJsZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBkcmFnU3RhcnQoZHJhZ0FyZ3M6IElEcmFnU3RhcnRFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5Q29tcG9uZW50SWQpIHtcbiAgICAgICAgICAgIGRyYWdBcmdzLmNhbmNlbCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRyYWdNb3ZlKGUpIHtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gZS5uZXh0UGFnZVggLSBlLnBhZ2VYO1xuICAgICAgICBjb25zdCBkZWx0YVkgPSBlLm5leHRQYWdlWSAtIGUucGFnZVk7XG4gICAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2Uuc2V0T2Zmc2V0KHRoaXMuX292ZXJsYXlDb21wb25lbnRJZCwgZGVsdGFYLCBkZWx0YVkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudEFyZ3M6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnRBcmdzLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudEFyZ3Mua2V5O1xuICAgICAgICBpZiAodGhpcy5xdWVyeUJ1aWxkZXIuaXNDb250ZXh0TWVudVZpc2libGUgJiYgKGtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuRVNDQVBFKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLkVTQ0FQRSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShncmlkOiBHcmlkVHlwZSwgb3ZlcmxheVNlcnZpY2U6IElneE92ZXJsYXlTZXJ2aWNlLFxuICAgICAgICBvdmVybGF5Q29tcG9uZW50SWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmlubGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZSA9IG92ZXJsYXlTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9vdmVybGF5Q29tcG9uZW50SWQgPSBvdmVybGF5Q29tcG9uZW50SWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25DbGVhckJ1dHRvbkNsaWNrKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIuZXhwcmVzc2lvblRyZWUgPSB0aGlzLmdyaWQuYWR2YW5jZWRGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheUNvbXBvbmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZS5oaWRlKHRoaXMuX292ZXJsYXlDb21wb25lbnRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRpb24uYWN0aXZlTm9kZSA9IHRoaXMubGFzdEFjdGl2ZU5vZGU7XG4gICAgICAgIGlmICh0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlICYmIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUucm93ID09PSAtMSkge1xuICAgICAgICAgICAgKHRoaXMuZ3JpZCBhcyBhbnkpLnRoZWFkUm93Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFwcGx5Q2hhbmdlcyhldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRFZGl0KGZhbHNlLCBldmVudCk7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyLmV4aXRPcGVyYW5kRWRpdCgpO1xuICAgICAgICB0aGlzLmdyaWQuYWR2YW5jZWRGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSB0aGlzLnF1ZXJ5QnVpbGRlci5leHByZXNzaW9uVHJlZSBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbENoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFwcGx5QnV0dG9uQ2xpY2soZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLmFwcGx5Q2hhbmdlcyhldmVudCk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2lnblJlc291cmNlU3RyaW5ncygpIHtcbiAgICAgICAgLy8gSWYgZ3JpZCBoYXMgY3VzdG9tIHJlc291cmNlIHN0cmluZ3Mgc2V0IGZvciB0aGUgYWR2YW5jZWQgZmlsdGVyaW5nLFxuICAgICAgICAvLyB0aGV5IGFyZSBwYXNzZWQgdG8gdGhlIHF1ZXJ5IGJ1aWxkZXIgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgICAgY29uc3QgZ3JpZFJTID0gdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncztcblxuICAgICAgICBpZiAoZ3JpZFJTICE9PSBHcmlkUmVzb3VyY2VTdHJpbmdzRU4pIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5QnVpbGRlclJTID0gQ3VycmVudFJlc291cmNlU3RyaW5ncy5RdWVyeUJ1aWxkZXJSZXNTdHJpbmdzO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZ3JpZFJTKS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15pZ3hfZ3JpZF8oYWR2YW5jZWRfKT9maWx0ZXJfKHJvd18pPy87XG4gICAgICAgICAgICAgICAgaWYgKCFyZWcudGVzdChwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFmZml4ID0gcHJvcC5yZXBsYWNlKHJlZywgJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclByb3AgPSBgaWd4X3F1ZXJ5X2J1aWxkZXJfZmlsdGVyXyR7YWZmaXh9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBnZW5lcmFsUHJvcCA9IGBpZ3hfcXVlcnlfYnVpbGRlcl8ke2FmZml4fWBcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlCdWlsZGVyUlNbZmlsdGVyUHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeUJ1aWxkZXJSU1tmaWx0ZXJQcm9wXSA9IGdyaWRSU1twcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHF1ZXJ5QnVpbGRlclJTW2dlbmVyYWxQcm9wXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QnVpbGRlclJTW2dlbmVyYWxQcm9wXSA9IGdyaWRSU1twcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhcnRpY2xlICpuZ0lmPVwiZ3JpZFwiIGNsYXNzPVwiaWd4LWFkdmFuY2VkLWZpbHRlclwiIGlneERyYWcgW2dob3N0XT1cImZhbHNlXCIgW2RyYWdUb2xlcmFuY2VdPVwiMFwiXG4gICAgKGRyYWdTdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIChkcmFnTW92ZSk9XCJvbkRyYWdNb3ZlKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnaWd4LWFkdmFuY2VkLWZpbHRlci0tY29zeSc6IGdyaWQuZGlzcGxheURlbnNpdHkgPT09ICdjb3N5JyxcbiAgICAgICAgJ2lneC1hZHZhbmNlZC1maWx0ZXItLWNvbXBhY3QnOiBncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29tcGFjdCcsXG4gICAgICAgICdpZ3gtYWR2YW5jZWQtZmlsdGVyLS1pbmxpbmUnOiBpbmxpbmVcbiAgICB9XCI+XG4gICAgPGlneC1xdWVyeS1idWlsZGVyICNxdWVyeUJ1aWxkZXIgW2xvY2FsZV09XCJncmlkLmxvY2FsZVwiXG4gICAgICAgIFtmaWVsZHNdPVwidGhpcy5maWx0ZXJhYmxlRmllbGRzXCJcbiAgICAgICAgW2V4cHJlc3Npb25UcmVlXT1cInRoaXMuZ3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZVwiPlxuICAgICAgICA8aWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyXG4gICAgICAgICAgICBbdGl0bGVdPVwiZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3RpdGxlXCJcbiAgICAgICAgICAgIGlneERyYWdIYW5kbGU+XG4gICAgICAgIDwvaWd4LXF1ZXJ5LWJ1aWxkZXItaGVhZGVyPlxuICAgIDwvaWd4LXF1ZXJ5LWJ1aWxkZXI+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fc2Vjb25kYXJ5LWZvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fY2xlYXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIHR5cGU9XCJidXR0b25cIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IGdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfY2xlYXIgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1leGNlbC1maWx0ZXJfX2NhbmNlbFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBpZ3hCdXR0b249XCJmbGF0XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIChjbGljayk9XCJjYW5jZWxDaGFuZ2VzKClcIj5cbiAgICAgICAgICAgICAgICB7eyBncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9leGNlbF9jYW5jZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1leGNlbC1maWx0ZXJfX2FwcGx5XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIHR5cGU9XCJidXR0b25cIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5QnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IGdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2FwcGx5IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG48L2FydGljbGU+XG4iXX0=