@angular/material-experimental 13.1.0 → 13.2.0-next.1

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 (318) hide show
  1. package/LICENSE +1 -1
  2. package/_index.scss +2 -1
  3. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
  4. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
  5. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +4 -4
  6. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +4 -4
  7. package/esm2020/column-resize/column-resize-module.mjs +13 -13
  8. package/esm2020/column-resize/overlay-handle.mjs +4 -4
  9. package/esm2020/column-resize/resizable-directives/default-enabled-resizable.mjs +4 -4
  10. package/esm2020/column-resize/resizable-directives/resizable.mjs +4 -4
  11. package/esm2020/column-resize/resize-strategy.mjs +4 -4
  12. package/esm2020/mdc-autocomplete/autocomplete-origin.mjs +4 -4
  13. package/esm2020/mdc-autocomplete/autocomplete-trigger.mjs +4 -4
  14. package/esm2020/mdc-autocomplete/autocomplete.mjs +4 -4
  15. package/esm2020/mdc-autocomplete/module.mjs +5 -5
  16. package/esm2020/mdc-button/button-base.mjs +14 -7
  17. package/esm2020/mdc-button/button.mjs +9 -9
  18. package/esm2020/mdc-button/fab.mjs +18 -18
  19. package/esm2020/mdc-button/icon-button.mjs +7 -7
  20. package/esm2020/mdc-button/module.mjs +5 -5
  21. package/esm2020/mdc-card/card.mjs +44 -44
  22. package/esm2020/mdc-card/module.mjs +5 -5
  23. package/esm2020/mdc-checkbox/checkbox.mjs +5 -5
  24. package/esm2020/mdc-checkbox/module.mjs +5 -5
  25. package/esm2020/mdc-chips/chip-action.mjs +123 -0
  26. package/esm2020/mdc-chips/chip-edit-input.mjs +5 -5
  27. package/esm2020/mdc-chips/chip-grid.mjs +46 -96
  28. package/esm2020/mdc-chips/chip-icons.mjs +46 -101
  29. package/esm2020/mdc-chips/chip-input.mjs +6 -13
  30. package/esm2020/mdc-chips/chip-listbox.mjs +51 -156
  31. package/esm2020/mdc-chips/chip-option.mjs +84 -95
  32. package/esm2020/mdc-chips/chip-row.mjs +82 -90
  33. package/esm2020/mdc-chips/chip-set.mjs +119 -120
  34. package/esm2020/mdc-chips/chip.mjs +189 -181
  35. package/esm2020/mdc-chips/emit-event.mjs +27 -0
  36. package/esm2020/mdc-chips/module.mjs +8 -10
  37. package/esm2020/mdc-chips/testing/chip-harness.mjs +5 -1
  38. package/esm2020/mdc-chips/testing/chip-option-harness.mjs +2 -2
  39. package/esm2020/mdc-chips/testing/chip-row-harness.mjs +10 -1
  40. package/esm2020/mdc-core/option/index.mjs +5 -5
  41. package/esm2020/mdc-core/option/optgroup.mjs +4 -4
  42. package/esm2020/mdc-core/option/option.mjs +4 -4
  43. package/esm2020/mdc-core/public-api.mjs +2 -2
  44. package/esm2020/mdc-dialog/dialog-container.mjs +5 -5
  45. package/esm2020/mdc-dialog/dialog-content-directives.mjs +13 -13
  46. package/esm2020/mdc-dialog/dialog.mjs +4 -4
  47. package/esm2020/mdc-dialog/module.mjs +5 -5
  48. package/esm2020/mdc-form-field/directives/error.mjs +4 -4
  49. package/esm2020/mdc-form-field/directives/floating-label.mjs +4 -4
  50. package/esm2020/mdc-form-field/directives/hint.mjs +4 -4
  51. package/esm2020/mdc-form-field/directives/label.mjs +4 -4
  52. package/esm2020/mdc-form-field/directives/line-ripple.mjs +4 -4
  53. package/esm2020/mdc-form-field/directives/notched-outline.mjs +4 -4
  54. package/esm2020/mdc-form-field/directives/prefix.mjs +4 -4
  55. package/esm2020/mdc-form-field/directives/suffix.mjs +4 -4
  56. package/esm2020/mdc-form-field/form-field.mjs +4 -4
  57. package/esm2020/mdc-form-field/module.mjs +5 -5
  58. package/esm2020/mdc-input/input.mjs +4 -4
  59. package/esm2020/mdc-input/module.mjs +5 -5
  60. package/esm2020/mdc-list/action-list.mjs +5 -5
  61. package/esm2020/mdc-list/interactive-list-base.mjs +12 -10
  62. package/esm2020/mdc-list/list-base.mjs +138 -41
  63. package/esm2020/mdc-list/list-item-sections.mjs +138 -0
  64. package/esm2020/mdc-list/list-option.mjs +25 -17
  65. package/esm2020/mdc-list/list.mjs +24 -18
  66. package/esm2020/mdc-list/module.mjs +46 -23
  67. package/esm2020/mdc-list/nav-list.mjs +5 -5
  68. package/esm2020/mdc-list/public-api.mjs +3 -2
  69. package/esm2020/mdc-list/selection-list.mjs +8 -8
  70. package/esm2020/mdc-list/subheader.mjs +27 -0
  71. package/esm2020/mdc-list/testing/list-harness-filters.mjs +1 -1
  72. package/esm2020/mdc-list/testing/list-item-harness-base.mjs +96 -12
  73. package/esm2020/mdc-list/testing/public-api.mjs +2 -1
  74. package/esm2020/mdc-menu/directives.mjs +7 -7
  75. package/esm2020/mdc-menu/menu-item.mjs +4 -4
  76. package/esm2020/mdc-menu/menu.mjs +4 -4
  77. package/esm2020/mdc-menu/module.mjs +5 -5
  78. package/esm2020/mdc-paginator/module.mjs +5 -5
  79. package/esm2020/mdc-paginator/paginator.mjs +4 -4
  80. package/esm2020/mdc-progress-bar/module.mjs +5 -5
  81. package/esm2020/mdc-progress-bar/progress-bar.mjs +5 -5
  82. package/esm2020/mdc-progress-spinner/module.mjs +5 -5
  83. package/esm2020/mdc-progress-spinner/progress-spinner.mjs +4 -4
  84. package/esm2020/mdc-radio/module.mjs +5 -5
  85. package/esm2020/mdc-radio/radio.mjs +8 -8
  86. package/esm2020/mdc-select/module.mjs +5 -5
  87. package/esm2020/mdc-select/select.mjs +9 -9
  88. package/esm2020/mdc-sidenav/module.mjs +5 -5
  89. package/esm2020/mdc-slide-toggle/module.mjs +5 -5
  90. package/esm2020/mdc-slide-toggle/slide-toggle.mjs +5 -5
  91. package/esm2020/mdc-slider/global-change-and-input-listener.mjs +4 -4
  92. package/esm2020/mdc-slider/module.mjs +5 -5
  93. package/esm2020/mdc-slider/slider.mjs +33 -12
  94. package/esm2020/mdc-snack-bar/module.mjs +5 -5
  95. package/esm2020/mdc-snack-bar/simple-snack-bar.mjs +4 -4
  96. package/esm2020/mdc-snack-bar/snack-bar-container.mjs +5 -5
  97. package/esm2020/mdc-snack-bar/snack-bar-content.mjs +10 -10
  98. package/esm2020/mdc-snack-bar/snack-bar.mjs +4 -4
  99. package/esm2020/mdc-table/cell.mjs +22 -22
  100. package/esm2020/mdc-table/module.mjs +5 -5
  101. package/esm2020/mdc-table/row.mjs +22 -22
  102. package/esm2020/mdc-table/table.mjs +9 -9
  103. package/esm2020/mdc-table/text-column.mjs +4 -4
  104. package/esm2020/mdc-tabs/module.mjs +10 -6
  105. package/esm2020/mdc-tabs/public-api.mjs +2 -2
  106. package/esm2020/mdc-tabs/tab-body.mjs +7 -7
  107. package/esm2020/mdc-tabs/tab-content.mjs +4 -4
  108. package/esm2020/mdc-tabs/tab-group.mjs +6 -6
  109. package/esm2020/mdc-tabs/tab-header.mjs +12 -5
  110. package/esm2020/mdc-tabs/tab-label-wrapper.mjs +4 -4
  111. package/esm2020/mdc-tabs/tab-label.mjs +4 -4
  112. package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +47 -10
  113. package/esm2020/mdc-tabs/tab.mjs +4 -4
  114. package/esm2020/mdc-tabs/testing/tab-harness-filters.mjs +1 -1
  115. package/esm2020/mdc-tabs/testing/tab-nav-bar-harness.mjs +13 -1
  116. package/esm2020/mdc-tabs/testing/tab-nav-panel-harness.mjs +27 -0
  117. package/esm2020/mdc-tooltip/module.mjs +5 -5
  118. package/esm2020/mdc-tooltip/tooltip.mjs +8 -8
  119. package/esm2020/menubar/menubar-item.mjs +4 -4
  120. package/esm2020/menubar/menubar-module.mjs +5 -5
  121. package/esm2020/menubar/menubar.mjs +4 -4
  122. package/esm2020/popover-edit/lens-directives.mjs +10 -10
  123. package/esm2020/popover-edit/popover-edit-module.mjs +5 -5
  124. package/esm2020/popover-edit/table-directives.mjs +13 -13
  125. package/esm2020/selection/row-selection.mjs +4 -4
  126. package/esm2020/selection/select-all.mjs +4 -4
  127. package/esm2020/selection/selection-column.mjs +4 -4
  128. package/esm2020/selection/selection-module.mjs +5 -5
  129. package/esm2020/selection/selection-toggle.mjs +4 -4
  130. package/esm2020/selection/selection.mjs +4 -4
  131. package/esm2020/version.mjs +1 -1
  132. package/fesm2015/column-resize.mjs +36 -36
  133. package/fesm2015/column-resize.mjs.map +1 -1
  134. package/fesm2015/material-experimental.mjs +1 -1
  135. package/fesm2015/material-experimental.mjs.map +1 -1
  136. package/fesm2015/mdc-autocomplete.mjs +13 -13
  137. package/fesm2015/mdc-autocomplete.mjs.map +1 -1
  138. package/fesm2015/mdc-button.mjs +40 -40
  139. package/fesm2015/mdc-button.mjs.map +1 -1
  140. package/fesm2015/mdc-card.mjs +47 -47
  141. package/fesm2015/mdc-card.mjs.map +1 -1
  142. package/fesm2015/mdc-checkbox.mjs +8 -8
  143. package/fesm2015/mdc-checkbox.mjs.map +1 -1
  144. package/fesm2015/mdc-chips/testing.mjs +18 -8
  145. package/fesm2015/mdc-chips/testing.mjs.map +1 -1
  146. package/fesm2015/mdc-chips.mjs +758 -1061
  147. package/fesm2015/mdc-chips.mjs.map +1 -1
  148. package/fesm2015/mdc-core.mjs +11 -11
  149. package/fesm2015/mdc-core.mjs.map +1 -1
  150. package/fesm2015/mdc-dialog.mjs +23 -23
  151. package/fesm2015/mdc-dialog.mjs.map +1 -1
  152. package/fesm2015/mdc-form-field.mjs +31 -31
  153. package/fesm2015/mdc-form-field.mjs.map +1 -1
  154. package/fesm2015/mdc-input.mjs +7 -7
  155. package/fesm2015/mdc-input.mjs.map +1 -1
  156. package/fesm2015/mdc-list/testing.mjs +104 -12
  157. package/fesm2015/mdc-list/testing.mjs.map +1 -1
  158. package/fesm2015/mdc-list.mjs +361 -154
  159. package/fesm2015/mdc-list.mjs.map +1 -1
  160. package/fesm2015/mdc-menu.mjs +16 -16
  161. package/fesm2015/mdc-menu.mjs.map +1 -1
  162. package/fesm2015/mdc-paginator.mjs +7 -7
  163. package/fesm2015/mdc-paginator.mjs.map +1 -1
  164. package/fesm2015/mdc-progress-bar.mjs +8 -8
  165. package/fesm2015/mdc-progress-bar.mjs.map +1 -1
  166. package/fesm2015/mdc-progress-spinner.mjs +7 -7
  167. package/fesm2015/mdc-progress-spinner.mjs.map +1 -1
  168. package/fesm2015/mdc-radio.mjs +11 -11
  169. package/fesm2015/mdc-radio.mjs.map +1 -1
  170. package/fesm2015/mdc-select.mjs +12 -12
  171. package/fesm2015/mdc-select.mjs.map +1 -1
  172. package/fesm2015/mdc-sidenav.mjs +4 -4
  173. package/fesm2015/mdc-sidenav.mjs.map +1 -1
  174. package/fesm2015/mdc-slide-toggle.mjs +8 -8
  175. package/fesm2015/mdc-slide-toggle.mjs.map +1 -1
  176. package/fesm2015/mdc-slider.mjs +39 -18
  177. package/fesm2015/mdc-slider.mjs.map +1 -1
  178. package/fesm2015/mdc-snack-bar.mjs +23 -23
  179. package/fesm2015/mdc-snack-bar.mjs.map +1 -1
  180. package/fesm2015/mdc-table.mjs +57 -57
  181. package/fesm2015/mdc-table.mjs.map +1 -1
  182. package/fesm2015/mdc-tabs/testing.mjs +34 -0
  183. package/fesm2015/mdc-tabs/testing.mjs.map +1 -1
  184. package/fesm2015/mdc-tabs.mjs +89 -41
  185. package/fesm2015/mdc-tabs.mjs.map +1 -1
  186. package/fesm2015/mdc-tooltip.mjs +11 -11
  187. package/fesm2015/mdc-tooltip.mjs.map +1 -1
  188. package/fesm2015/menubar.mjs +10 -10
  189. package/fesm2015/menubar.mjs.map +1 -1
  190. package/fesm2015/popover-edit.mjs +25 -25
  191. package/fesm2015/popover-edit.mjs.map +1 -1
  192. package/fesm2015/selection.mjs +19 -19
  193. package/fesm2015/selection.mjs.map +1 -1
  194. package/fesm2020/column-resize.mjs +36 -36
  195. package/fesm2020/column-resize.mjs.map +1 -1
  196. package/fesm2020/material-experimental.mjs +1 -1
  197. package/fesm2020/material-experimental.mjs.map +1 -1
  198. package/fesm2020/mdc-autocomplete.mjs +13 -13
  199. package/fesm2020/mdc-autocomplete.mjs.map +1 -1
  200. package/fesm2020/mdc-button.mjs +48 -41
  201. package/fesm2020/mdc-button.mjs.map +1 -1
  202. package/fesm2020/mdc-card.mjs +47 -47
  203. package/fesm2020/mdc-card.mjs.map +1 -1
  204. package/fesm2020/mdc-checkbox.mjs +8 -8
  205. package/fesm2020/mdc-checkbox.mjs.map +1 -1
  206. package/fesm2020/mdc-chips/testing.mjs +14 -1
  207. package/fesm2020/mdc-chips/testing.mjs.map +1 -1
  208. package/fesm2020/mdc-chips.mjs +738 -1066
  209. package/fesm2020/mdc-chips.mjs.map +1 -1
  210. package/fesm2020/mdc-core.mjs +11 -11
  211. package/fesm2020/mdc-core.mjs.map +1 -1
  212. package/fesm2020/mdc-dialog.mjs +23 -23
  213. package/fesm2020/mdc-dialog.mjs.map +1 -1
  214. package/fesm2020/mdc-form-field.mjs +31 -31
  215. package/fesm2020/mdc-form-field.mjs.map +1 -1
  216. package/fesm2020/mdc-input.mjs +7 -7
  217. package/fesm2020/mdc-input.mjs.map +1 -1
  218. package/fesm2020/mdc-list/testing.mjs +96 -12
  219. package/fesm2020/mdc-list/testing.mjs.map +1 -1
  220. package/fesm2020/mdc-list.mjs +359 -154
  221. package/fesm2020/mdc-list.mjs.map +1 -1
  222. package/fesm2020/mdc-menu.mjs +16 -16
  223. package/fesm2020/mdc-menu.mjs.map +1 -1
  224. package/fesm2020/mdc-paginator.mjs +7 -7
  225. package/fesm2020/mdc-paginator.mjs.map +1 -1
  226. package/fesm2020/mdc-progress-bar.mjs +8 -8
  227. package/fesm2020/mdc-progress-bar.mjs.map +1 -1
  228. package/fesm2020/mdc-progress-spinner.mjs +7 -7
  229. package/fesm2020/mdc-progress-spinner.mjs.map +1 -1
  230. package/fesm2020/mdc-radio.mjs +11 -11
  231. package/fesm2020/mdc-radio.mjs.map +1 -1
  232. package/fesm2020/mdc-select.mjs +12 -12
  233. package/fesm2020/mdc-select.mjs.map +1 -1
  234. package/fesm2020/mdc-sidenav.mjs +4 -4
  235. package/fesm2020/mdc-sidenav.mjs.map +1 -1
  236. package/fesm2020/mdc-slide-toggle.mjs +8 -8
  237. package/fesm2020/mdc-slide-toggle.mjs.map +1 -1
  238. package/fesm2020/mdc-slider.mjs +39 -18
  239. package/fesm2020/mdc-slider.mjs.map +1 -1
  240. package/fesm2020/mdc-snack-bar.mjs +23 -23
  241. package/fesm2020/mdc-snack-bar.mjs.map +1 -1
  242. package/fesm2020/mdc-table.mjs +57 -57
  243. package/fesm2020/mdc-table.mjs.map +1 -1
  244. package/fesm2020/mdc-tabs/testing.mjs +37 -0
  245. package/fesm2020/mdc-tabs/testing.mjs.map +1 -1
  246. package/fesm2020/mdc-tabs.mjs +89 -41
  247. package/fesm2020/mdc-tabs.mjs.map +1 -1
  248. package/fesm2020/mdc-tooltip.mjs +11 -11
  249. package/fesm2020/mdc-tooltip.mjs.map +1 -1
  250. package/fesm2020/menubar.mjs +10 -10
  251. package/fesm2020/menubar.mjs.map +1 -1
  252. package/fesm2020/popover-edit.mjs +25 -25
  253. package/fesm2020/popover-edit.mjs.map +1 -1
  254. package/fesm2020/selection.mjs +19 -19
  255. package/fesm2020/selection.mjs.map +1 -1
  256. package/mdc-button/button-base.d.ts +0 -3
  257. package/mdc-button/fab.d.ts +5 -7
  258. package/mdc-checkbox/_checkbox-theme.scss +32 -30
  259. package/mdc-checkbox/checkbox.d.ts +4 -9
  260. package/mdc-chips/_chips-theme.scss +53 -53
  261. package/mdc-chips/chip-action.d.ts +40 -0
  262. package/mdc-chips/chip-grid.d.ts +8 -26
  263. package/mdc-chips/chip-icons.d.ts +14 -40
  264. package/mdc-chips/chip-input.d.ts +2 -4
  265. package/mdc-chips/chip-listbox.d.ts +7 -46
  266. package/mdc-chips/chip-option.d.ts +17 -15
  267. package/mdc-chips/chip-row.d.ts +13 -30
  268. package/mdc-chips/chip-set.d.ts +27 -46
  269. package/mdc-chips/chip.d.ts +41 -45
  270. package/mdc-chips/emit-event.d.ts +16 -0
  271. package/mdc-chips/module.d.ts +13 -12
  272. package/mdc-chips/testing/chip-harness.d.ts +1 -0
  273. package/mdc-chips/testing/chip-row-harness.d.ts +4 -0
  274. package/mdc-core/_core-theme.scss +47 -14
  275. package/mdc-core/public-api.d.ts +1 -1
  276. package/mdc-form-field/form-field.d.ts +1 -2
  277. package/mdc-helpers/_focus-indicators.scss +15 -3
  278. package/mdc-list/_interactive-list-theme.scss +17 -11
  279. package/mdc-list/_list-option-theme.scss +2 -2
  280. package/mdc-list/_list-theme.scss +7 -3
  281. package/mdc-list/list-base.d.ts +59 -18
  282. package/mdc-list/list-item-sections.d.ts +77 -0
  283. package/mdc-list/list-option.d.ts +12 -10
  284. package/mdc-list/list.d.ts +6 -2
  285. package/mdc-list/module.d.ts +7 -5
  286. package/mdc-list/public-api.d.ts +2 -1
  287. package/mdc-list/selection-list.d.ts +1 -2
  288. package/mdc-list/subheader.d.ts +9 -0
  289. package/mdc-list/testing/list-harness-filters.d.ts +8 -0
  290. package/mdc-list/testing/list-item-harness-base.d.ts +34 -3
  291. package/mdc-list/testing/public-api.d.ts +1 -1
  292. package/mdc-progress-spinner/progress-spinner.d.ts +3 -6
  293. package/mdc-select/_select-theme.scss +6 -27
  294. package/mdc-slide-toggle/slide-toggle.d.ts +5 -10
  295. package/mdc-slider/slider.d.ts +20 -16
  296. package/mdc-table/_table-theme.scss +1 -1
  297. package/mdc-tabs/_tabs-common.scss +0 -1
  298. package/mdc-tabs/module.d.ts +1 -1
  299. package/mdc-tabs/public-api.d.ts +1 -1
  300. package/mdc-tabs/tab-group.d.ts +1 -2
  301. package/mdc-tabs/tab-header.d.ts +0 -2
  302. package/mdc-tabs/tab-label-wrapper.d.ts +1 -2
  303. package/mdc-tabs/tab-nav-bar/tab-nav-bar.d.ts +12 -3
  304. package/mdc-tabs/testing/tab-harness-filters.d.ts +3 -0
  305. package/mdc-tabs/testing/tab-nav-bar-harness.d.ts +3 -0
  306. package/mdc-tabs/testing/tab-nav-panel-harness.d.ts +23 -0
  307. package/mdc-theming/prebuilt/deeppurple-amber.css +1 -0
  308. package/mdc-theming/prebuilt/indigo-pink.css +1 -1
  309. package/mdc-theming/prebuilt/pink-bluegrey.css +1 -0
  310. package/mdc-theming/prebuilt/purple-green.css +1 -0
  311. package/mdc-tooltip/_tooltip-theme.scss +1 -1
  312. package/package.json +17 -3
  313. package/esm2020/mdc-chips/grid-focus-key-manager.mjs +0 -21
  314. package/esm2020/mdc-chips/grid-key-manager.mjs +0 -218
  315. package/esm2020/mdc-list/list-styling.mjs +0 -92
  316. package/mdc-chips/grid-focus-key-manager.d.ts +0 -28
  317. package/mdc-chips/grid-key-manager.d.ts +0 -116
  318. package/mdc-list/list-styling.d.ts +0 -40
@@ -5,17 +5,18 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { Directionality } from '@angular/cdk/bidi';
8
+ import { LiveAnnouncer } from '@angular/cdk/a11y';
9
9
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, Input, Optional, QueryList, ViewEncapsulation, } from '@angular/core';
10
+ import { DOCUMENT } from '@angular/common';
11
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, Inject, Input, QueryList, ViewEncapsulation, } from '@angular/core';
11
12
  import { mixinTabIndex } from '@angular/material-experimental/mdc-core';
12
- import { deprecated } from '@material/chips';
13
+ import { MDCChipSetFoundation, MDCChipEvents, MDCChipActionType, } from '@material/chips';
13
14
  import { merge, Subject } from 'rxjs';
14
- import { startWith, takeUntil } from 'rxjs/operators';
15
+ import { startWith, switchMap, takeUntil } from 'rxjs/operators';
15
16
  import { MatChip } from './chip';
17
+ import { emitCustomEvent } from './emit-event';
16
18
  import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/cdk/bidi";
18
- let uid = 0;
19
+ import * as i1 from "@angular/cdk/a11y";
19
20
  /**
20
21
  * Boilerplate for applying mixins to MatChipSet.
21
22
  * @docs-private
@@ -30,11 +31,12 @@ const _MatChipSetMixinBase = mixinTabIndex(MatChipSetBase);
30
31
  * Extended by MatChipListbox and MatChipGrid for different interaction patterns.
31
32
  */
32
33
  export class MatChipSet extends _MatChipSetMixinBase {
33
- constructor(_elementRef, _changeDetectorRef, _dir) {
34
+ constructor(_liveAnnouncer, _document, _elementRef, _changeDetectorRef) {
34
35
  super(_elementRef);
36
+ this._liveAnnouncer = _liveAnnouncer;
37
+ this._document = _document;
35
38
  this._elementRef = _elementRef;
36
39
  this._changeDetectorRef = _changeDetectorRef;
37
- this._dir = _dir;
38
40
  /**
39
41
  * When a chip is destroyed, we store the index of the destroyed chip until the chips
40
42
  * query list notifies about the update. This is necessary because we cannot determine an
@@ -48,23 +50,42 @@ export class MatChipSet extends _MatChipSetMixinBase {
48
50
  * These methods are called by the chip set foundation.
49
51
  */
50
52
  this._chipSetAdapter = {
51
- hasClass: className => this._hasMdcClass(className),
52
- // No-op. We keep track of chips via ContentChildren, which will be updated when a chip is
53
- // removed.
54
- removeChipAtIndex: () => { },
55
- // No-op for base chip set. MatChipListbox overrides the adapter to provide this method.
56
- selectChipAtIndex: () => { },
57
- getIndexOfChipById: (id) => this._chips.toArray().findIndex(chip => chip.id === id),
58
- focusChipPrimaryActionAtIndex: () => { },
59
- focusChipTrailingActionAtIndex: () => { },
60
- removeFocusFromChipAtIndex: () => { },
61
- isRTL: () => !!this._dir && this._dir.value === 'rtl',
62
- getChipListCount: () => this._chips.length,
63
- // TODO(mmalerba): Implement using LiveAnnouncer.
64
- announceMessage: () => { },
53
+ announceMessage: message => this._liveAnnouncer.announce(message),
54
+ emitEvent: (eventName, eventDetail) => {
55
+ emitCustomEvent(this._elementRef.nativeElement, this._document, eventName, eventDetail, true);
56
+ },
57
+ getAttribute: name => this._elementRef.nativeElement.getAttribute(name),
58
+ getChipActionsAtIndex: index => this._chipFoundation(index)?.getActions() || [],
59
+ getChipCount: () => this._chips.length,
60
+ getChipIdAtIndex: index => this._chipFoundation(index)?.getElementID() || '',
61
+ getChipIndexById: id => {
62
+ return this._chips.toArray().findIndex(chip => chip._getFoundation().getElementID() === id);
63
+ },
64
+ isChipFocusableAtIndex: (index, actionType) => {
65
+ return this._chipFoundation(index)?.isActionFocusable(actionType) || false;
66
+ },
67
+ isChipSelectableAtIndex: (index, actionType) => {
68
+ return this._chipFoundation(index)?.isActionSelectable(actionType) || false;
69
+ },
70
+ isChipSelectedAtIndex: (index, actionType) => {
71
+ return this._chipFoundation(index)?.isActionSelected(actionType) || false;
72
+ },
73
+ removeChipAtIndex: index => this._chips.toArray()[index]?.remove(),
74
+ setChipFocusAtIndex: (index, action, behavior) => {
75
+ this._chipFoundation(index)?.setActionFocus(action, behavior);
76
+ },
77
+ setChipSelectedAtIndex: (index, actionType, isSelected) => {
78
+ // Setting the trailing action as deselected ends up deselecting the entire chip.
79
+ // This is working as expected, but it's not something we want so we only apply the
80
+ // selected state to the primary chip.
81
+ if (actionType === MDCChipActionType.PRIMARY) {
82
+ this._chipFoundation(index)?.setActionSelected(actionType, isSelected);
83
+ }
84
+ },
85
+ startChipAnimationAtIndex: (index, animation) => {
86
+ this._chipFoundation(index)?.startAnimation(animation);
87
+ },
65
88
  };
66
- /** Uid of the chip set */
67
- this._uid = `mat-mdc-chip-set-${uid++}`;
68
89
  /**
69
90
  * Map from class to whether the class is enabled.
70
91
  * Enabled classes are set on the MDC chip-set div.
@@ -72,7 +93,24 @@ export class MatChipSet extends _MatChipSetMixinBase {
72
93
  this._mdcClasses = {};
73
94
  this._disabled = false;
74
95
  this._role = null;
75
- this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter);
96
+ this._handleChipAnimation = (event) => {
97
+ this._chipSetFoundation.handleChipAnimation(event);
98
+ };
99
+ this._handleChipInteraction = (event) => {
100
+ this._chipSetFoundation.handleChipInteraction(event);
101
+ };
102
+ this._handleChipNavigation = (event) => {
103
+ this._chipSetFoundation.handleChipNavigation(event);
104
+ };
105
+ const element = _elementRef.nativeElement;
106
+ this._chipSetFoundation = new MDCChipSetFoundation(this._chipSetAdapter);
107
+ element.addEventListener(MDCChipEvents.ANIMATION, this._handleChipAnimation);
108
+ element.addEventListener(MDCChipEvents.INTERACTION, this._handleChipInteraction);
109
+ element.addEventListener(MDCChipEvents.NAVIGATION, this._handleChipNavigation);
110
+ }
111
+ /** Combined stream of all of the child chips' remove events. */
112
+ get chipDestroyedChanges() {
113
+ return this._getChipStream(chip => chip.destroyed);
76
114
  }
77
115
  /** Whether the chip set is disabled. */
78
116
  get disabled() {
@@ -102,18 +140,6 @@ export class MatChipSet extends _MatChipSetMixinBase {
102
140
  get focused() {
103
141
  return this._hasFocusedChip();
104
142
  }
105
- /** Combined stream of all of the child chips' remove events. */
106
- get chipRemoveChanges() {
107
- return merge(...this._chips.map(chip => chip.removed));
108
- }
109
- /** Combined stream of all of the child chips' remove events. */
110
- get chipDestroyedChanges() {
111
- return merge(...this._chips.map(chip => chip.destroyed));
112
- }
113
- /** Combined stream of all of the child chips' interaction events. */
114
- get chipInteractionChanges() {
115
- return merge(...this._chips.map(chip => chip.interaction));
116
- }
117
143
  ngAfterViewInit() {
118
144
  this._chipSetFoundation.init();
119
145
  }
@@ -126,11 +152,23 @@ export class MatChipSet extends _MatChipSetMixinBase {
126
152
  this._syncChipsState();
127
153
  });
128
154
  }
129
- this._resetChips();
155
+ });
156
+ this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event) => {
157
+ const chip = event.chip;
158
+ const chipIndex = this._chips.toArray().indexOf(event.chip);
159
+ // In case the chip that will be removed is currently focused, we temporarily store
160
+ // the index in order to be able to determine an appropriate sibling chip that will
161
+ // receive focus.
162
+ if (this._isValidIndex(chipIndex) && chip._hasFocus()) {
163
+ this._lastDestroyedChipIndex = chipIndex;
164
+ }
130
165
  });
131
166
  }
132
167
  ngOnDestroy() {
133
- this._dropSubscriptions();
168
+ const element = this._elementRef.nativeElement;
169
+ element.removeEventListener(MDCChipEvents.ANIMATION, this._handleChipAnimation);
170
+ element.removeEventListener(MDCChipEvents.INTERACTION, this._handleChipInteraction);
171
+ element.removeEventListener(MDCChipEvents.NAVIGATION, this._handleChipNavigation);
134
172
  this._destroyed.next();
135
173
  this._destroyed.complete();
136
174
  this._chipSetFoundation.destroy();
@@ -148,71 +186,6 @@ export class MatChipSet extends _MatChipSetMixinBase {
148
186
  });
149
187
  }
150
188
  }
151
- /** Sets whether the given CSS class should be applied to the MDC chip. */
152
- _setMdcClass(cssClass, active) {
153
- const classes = this._elementRef.nativeElement.classList;
154
- active ? classes.add(cssClass) : classes.remove(cssClass);
155
- this._changeDetectorRef.markForCheck();
156
- }
157
- /** Adapter method that returns true if the chip set has the given MDC class. */
158
- _hasMdcClass(className) {
159
- return this._elementRef.nativeElement.classList.contains(className);
160
- }
161
- /** Updates subscriptions to chip events. */
162
- _resetChips() {
163
- this._dropSubscriptions();
164
- this._subscribeToChipEvents();
165
- }
166
- /** Subscribes to events on the child chips. */
167
- _subscribeToChipEvents() {
168
- this._listenToChipsRemove();
169
- this._listenToChipsDestroyed();
170
- this._listenToChipsInteraction();
171
- }
172
- /** Subscribes to chip removal events. */
173
- _listenToChipsRemove() {
174
- this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event) => {
175
- this._chipSetFoundation.handleChipRemoval({
176
- chipId: event.chip.id,
177
- // TODO(mmalerba): Add removal message.
178
- removedAnnouncement: null,
179
- });
180
- });
181
- }
182
- /** Subscribes to chip destroyed events. */
183
- _listenToChipsDestroyed() {
184
- this._chipDestroyedSubscription = this.chipDestroyedChanges.subscribe((event) => {
185
- const chip = event.chip;
186
- const chipIndex = this._chips.toArray().indexOf(event.chip);
187
- // In case the chip that will be removed is currently focused, we temporarily store
188
- // the index in order to be able to determine an appropriate sibling chip that will
189
- // receive focus.
190
- if (this._isValidIndex(chipIndex) && chip._hasFocus()) {
191
- this._lastDestroyedChipIndex = chipIndex;
192
- }
193
- });
194
- }
195
- /** Subscribes to chip interaction events. */
196
- _listenToChipsInteraction() {
197
- this._chipInteractionSubscription = this.chipInteractionChanges.subscribe((id) => {
198
- this._chipSetFoundation.handleChipInteraction({ chipId: id });
199
- });
200
- }
201
- /** Unsubscribes from all chip events. */
202
- _dropSubscriptions() {
203
- if (this._chipRemoveSubscription) {
204
- this._chipRemoveSubscription.unsubscribe();
205
- this._chipRemoveSubscription = null;
206
- }
207
- if (this._chipInteractionSubscription) {
208
- this._chipInteractionSubscription.unsubscribe();
209
- this._chipInteractionSubscription = null;
210
- }
211
- if (this._chipDestroyedSubscription) {
212
- this._chipDestroyedSubscription.unsubscribe();
213
- this._chipDestroyedSubscription = null;
214
- }
215
- }
216
189
  /** Dummy method for subclasses to override. Base chip set cannot be focused. */
217
190
  focus() { }
218
191
  /**
@@ -226,14 +199,29 @@ export class MatChipSet extends _MatChipSetMixinBase {
226
199
  }
227
200
  /** Checks whether an event comes from inside a chip element. */
228
201
  _originatesFromChip(event) {
229
- return this._checkForClassInHierarchy(event, 'mdc-chip');
202
+ return this._checkForClassInHierarchy(event, 'mdc-evolution-chip');
230
203
  }
231
204
  /**
232
- * Checks whether an event comes from inside a chip element in the editing
233
- * state.
205
+ * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the
206
+ * user to tab out of it. This prevents the grid from capturing focus and redirecting
207
+ * it back to the first chip, creating a focus trap, if it user tries to tab away.
234
208
  */
235
- _originatesFromEditingChip(event) {
236
- return this._checkForClassInHierarchy(event, 'mdc-chip--editing');
209
+ _allowFocusEscape() {
210
+ const previousTabIndex = this.tabIndex;
211
+ if (this.tabIndex !== -1) {
212
+ this.tabIndex = -1;
213
+ setTimeout(() => {
214
+ this.tabIndex = previousTabIndex;
215
+ this._changeDetectorRef.markForCheck();
216
+ });
217
+ }
218
+ }
219
+ /**
220
+ * Gets a stream of events from all the chips within the set.
221
+ * The stream will automatically incorporate any newly-added chips.
222
+ */
223
+ _getChipStream(mappingFunction) {
224
+ return this._chips.changes.pipe(startWith(null), switchMap(() => merge(...this._chips.map(mappingFunction))));
237
225
  }
238
226
  _checkForClassInHierarchy(event, className) {
239
227
  let currentElement = event.target;
@@ -246,21 +234,32 @@ export class MatChipSet extends _MatChipSetMixinBase {
246
234
  }
247
235
  return false;
248
236
  }
237
+ _chipFoundation(index) {
238
+ return this._chips.toArray()[index]?._getFoundation();
239
+ }
249
240
  }
250
- MatChipSet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0-next.3", ngImport: i0, type: MatChipSet, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
251
- MatChipSet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0-next.3", type: MatChipSet, selector: "mat-chip-set", inputs: { disabled: "disabled", role: "role" }, host: { properties: { "attr.role": "role", "attr.aria-describedby": "_ariaDescribedby || null", "id": "_uid" }, classAttribute: "mat-mdc-chip-set mdc-chip-set" }, queries: [{ propertyName: "_chips", predicate: MatChip, descendants: true }], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mdc-chip__icon.mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){width:20px;height:20px;font-size:20px}.mdc-deprecated-chip-trailing-action__icon{height:18px;width:18px;font-size:18px}.mdc-chip__icon.mdc-chip__icon--trailing{width:18px;height:18px;font-size:18px}.mdc-deprecated-chip-trailing-action{margin-left:4px;margin-right:-4px}[dir=rtl] .mdc-deprecated-chip-trailing-action,.mdc-deprecated-chip-trailing-action[dir=rtl]{margin-left:-4px;margin-right:4px}.mdc-chip__icon--trailing{margin-left:4px;margin-right:-4px}[dir=rtl] .mdc-chip__icon--trailing,.mdc-chip__icon--trailing[dir=rtl]{margin-left:-4px;margin-right:4px}.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:0;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-chip{border-radius:16px;height:32px;position:relative;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 12px;border-width:0;outline:none;cursor:pointer;-webkit-appearance:none}.mdc-chip .mdc-chip__ripple{border-radius:16px}.mdc-chip.mdc-chip--selected .mdc-chip__checkmark,.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){margin-left:-4px;margin-right:4px}[dir=rtl] .mdc-chip.mdc-chip--selected .mdc-chip__checkmark,[dir=rtl] .mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden),.mdc-chip.mdc-chip--selected .mdc-chip__checkmark[dir=rtl],.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden)[dir=rtl]{margin-left:4px;margin-right:-4px}.mdc-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-chip::-moz-focus-inner{padding:0;border:0}.mdc-chip .mdc-chip__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-chip--exit{opacity:0}.mdc-chip__overflow{text-overflow:ellipsis;overflow:hidden}.mdc-chip__text{white-space:nowrap}.mdc-chip__icon{border-radius:50%;outline:none;vertical-align:middle}.mdc-chip__checkmark{height:20px}.mdc-chip__checkmark-path{transition:stroke-dashoffset 150ms 50ms cubic-bezier(0.4, 0, 0.6, 1);stroke-width:2px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-chip__primary-action:focus{outline:none}.mdc-chip--selected .mdc-chip__checkmark-path{stroke-dashoffset:0}.mdc-chip__icon--leading,.mdc-chip__icon--trailing{position:relative}.mdc-chip__checkmark-svg{width:0;height:20px;transition:width 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-chip--selected .mdc-chip__checkmark-svg{width:20px}.mdc-chip-set--filter .mdc-chip__icon--leading{transition:opacity 75ms linear;transition-delay:-50ms;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark{transition:opacity 75ms linear;transition-delay:80ms;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark .mdc-chip__checkmark-svg{transition:width 0ms}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading{opacity:0}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading+.mdc-chip__checkmark{width:0;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading{width:0;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading+.mdc-chip__checkmark{width:20px}@keyframes mdc-chip-entry{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-chip-set{padding:4px;display:flex;flex-wrap:wrap;box-sizing:border-box}.mdc-chip-set .mdc-chip{margin:4px}.mdc-chip-set .mdc-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-chip-set--input .mdc-chip{animation:mdc-chip-entry 100ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-chip{cursor:default}.mat-mdc-chip._mat-animation-noopable{animation:none;transition:none}.mat-mdc-chip._mat-animation-noopable .mdc-chip__checkmark-svg{transition:none}.cdk-high-contrast-active .mat-mdc-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-chip:focus{outline:dotted 2px}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mdc-chip__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-chip__ripple::after,.mdc-chip__ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";pointer-events:none;opacity:0;border-radius:inherit}._mat-animation-noopable .mdc-chip__ripple::after,._mat-animation-noopable .mdc-chip__ripple::before{transition:none}.mat-mdc-chip-disabled.mat-mdc-chip{opacity:.4}.mat-mdc-chip-disabled.mat-mdc-chip .mat-mdc-chip-trailing-icon,.mat-mdc-chip-disabled.mat-mdc-chip .mat-mdc-chip-row-focusable-text-content{pointer-events:none}.mat-mdc-chip-disabled.mat-mdc-chip .mdc-chip__ripple::after,.mat-mdc-chip-disabled.mat-mdc-chip .mdc-chip__ripple::before{display:none}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px}.mat-mdc-chip-grid{margin:-4px}.mat-mdc-chip-grid input.mat-mdc-chip-input{margin:4px}._mat-animation-noopable .mdc-chip__checkmark-path{transition:none}.cdk-high-contrast-black-on-white .mdc-chip__checkmark-path{stroke:#000 !important}.mat-mdc-chip-row-focusable-text-content{position:relative}.mat-mdc-chip-remove{border:none;-webkit-appearance:none;-moz-appearance:none;padding:0;background:none}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-row-focusable-text-content,.mat-mdc-chip-remove-icon{display:flex;align-items:center}.mat-mdc-chip-content{display:inline-flex}.mdc-chip--editing{background-color:transparent;display:flex;flex-direction:column}.mdc-chip--editing .mat-mdc-chip-content{pointer-events:none;height:0;overflow:hidden}.mat-chip-edit-input{cursor:text;display:inline-block}.mat-mdc-chip-edit-input-container{width:100%;height:100%;display:flex;align-items:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0-next.3", ngImport: i0, type: MatChipSet, decorators: [{
241
+ MatChipSet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatChipSet, deps: [{ token: i1.LiveAnnouncer }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
242
+ MatChipSet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MatChipSet, selector: "mat-chip-set", inputs: { disabled: "disabled", role: "role" }, host: { properties: { "attr.role": "role", "attr.aria-describedby": "_ariaDescribedby || null" }, classAttribute: "mat-mdc-chip-set mdc-evolution-chip-set" }, queries: [{ propertyName: "_chips", predicate: MatChip, descendants: true }], usesInheritance: true, ngImport: i0, template: `
243
+ <span class="mdc-evolution-chip-set__chips" role="presentation">
244
+ <ng-content></ng-content>
245
+ </span>
246
+ `, isInline: true, styles: [".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatChipSet, decorators: [{
253
248
  type: Component,
254
- args: [{ selector: 'mat-chip-set', template: '<ng-content></ng-content>', host: {
255
- 'class': 'mat-mdc-chip-set mdc-chip-set',
249
+ args: [{ selector: 'mat-chip-set', template: `
250
+ <span class="mdc-evolution-chip-set__chips" role="presentation">
251
+ <ng-content></ng-content>
252
+ </span>
253
+ `, host: {
254
+ 'class': 'mat-mdc-chip-set mdc-evolution-chip-set',
256
255
  '[attr.role]': 'role',
257
256
  // TODO: replace this binding with use of AriaDescriber
258
257
  '[attr.aria-describedby]': '_ariaDescribedby || null',
259
- '[id]': '_uid',
260
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".mdc-chip__icon.mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){width:20px;height:20px;font-size:20px}.mdc-deprecated-chip-trailing-action__icon{height:18px;width:18px;font-size:18px}.mdc-chip__icon.mdc-chip__icon--trailing{width:18px;height:18px;font-size:18px}.mdc-deprecated-chip-trailing-action{margin-left:4px;margin-right:-4px}[dir=rtl] .mdc-deprecated-chip-trailing-action,.mdc-deprecated-chip-trailing-action[dir=rtl]{margin-left:-4px;margin-right:4px}.mdc-chip__icon--trailing{margin-left:4px;margin-right:-4px}[dir=rtl] .mdc-chip__icon--trailing,.mdc-chip__icon--trailing[dir=rtl]{margin-left:-4px;margin-right:4px}.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:0;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-chip{border-radius:16px;height:32px;position:relative;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 12px;border-width:0;outline:none;cursor:pointer;-webkit-appearance:none}.mdc-chip .mdc-chip__ripple{border-radius:16px}.mdc-chip.mdc-chip--selected .mdc-chip__checkmark,.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden){margin-left:-4px;margin-right:4px}[dir=rtl] .mdc-chip.mdc-chip--selected .mdc-chip__checkmark,[dir=rtl] .mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden),.mdc-chip.mdc-chip--selected .mdc-chip__checkmark[dir=rtl],.mdc-chip .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden)[dir=rtl]{margin-left:4px;margin-right:-4px}.mdc-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-chip::-moz-focus-inner{padding:0;border:0}.mdc-chip .mdc-chip__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-chip--exit{opacity:0}.mdc-chip__overflow{text-overflow:ellipsis;overflow:hidden}.mdc-chip__text{white-space:nowrap}.mdc-chip__icon{border-radius:50%;outline:none;vertical-align:middle}.mdc-chip__checkmark{height:20px}.mdc-chip__checkmark-path{transition:stroke-dashoffset 150ms 50ms cubic-bezier(0.4, 0, 0.6, 1);stroke-width:2px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-chip__primary-action:focus{outline:none}.mdc-chip--selected .mdc-chip__checkmark-path{stroke-dashoffset:0}.mdc-chip__icon--leading,.mdc-chip__icon--trailing{position:relative}.mdc-chip__checkmark-svg{width:0;height:20px;transition:width 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-chip--selected .mdc-chip__checkmark-svg{width:20px}.mdc-chip-set--filter .mdc-chip__icon--leading{transition:opacity 75ms linear;transition-delay:-50ms;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark{transition:opacity 75ms linear;transition-delay:80ms;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading+.mdc-chip__checkmark .mdc-chip__checkmark-svg{transition:width 0ms}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading{opacity:0}.mdc-chip-set--filter .mdc-chip--selected .mdc-chip__icon--leading+.mdc-chip__checkmark{width:0;opacity:1}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading{width:0;opacity:0}.mdc-chip-set--filter .mdc-chip__icon--leading-hidden.mdc-chip__icon--leading+.mdc-chip__checkmark{width:20px}@keyframes mdc-chip-entry{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-chip-set{padding:4px;display:flex;flex-wrap:wrap;box-sizing:border-box}.mdc-chip-set .mdc-chip{margin:4px}.mdc-chip-set .mdc-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-chip-set--input .mdc-chip{animation:mdc-chip-entry 100ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-chip{cursor:default}.mat-mdc-chip._mat-animation-noopable{animation:none;transition:none}.mat-mdc-chip._mat-animation-noopable .mdc-chip__checkmark-svg{transition:none}.cdk-high-contrast-active .mat-mdc-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-chip:focus{outline:dotted 2px}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mdc-chip__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-chip__ripple::after,.mdc-chip__ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";pointer-events:none;opacity:0;border-radius:inherit}._mat-animation-noopable .mdc-chip__ripple::after,._mat-animation-noopable .mdc-chip__ripple::before{transition:none}.mat-mdc-chip-disabled.mat-mdc-chip{opacity:.4}.mat-mdc-chip-disabled.mat-mdc-chip .mat-mdc-chip-trailing-icon,.mat-mdc-chip-disabled.mat-mdc-chip .mat-mdc-chip-row-focusable-text-content{pointer-events:none}.mat-mdc-chip-disabled.mat-mdc-chip .mdc-chip__ripple::after,.mat-mdc-chip-disabled.mat-mdc-chip .mdc-chip__ripple::before{display:none}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px}.mat-mdc-chip-grid{margin:-4px}.mat-mdc-chip-grid input.mat-mdc-chip-input{margin:4px}._mat-animation-noopable .mdc-chip__checkmark-path{transition:none}.cdk-high-contrast-black-on-white .mdc-chip__checkmark-path{stroke:#000 !important}.mat-mdc-chip-row-focusable-text-content{position:relative}.mat-mdc-chip-remove{border:none;-webkit-appearance:none;-moz-appearance:none;padding:0;background:none}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-row-focusable-text-content,.mat-mdc-chip-remove-icon{display:flex;align-items:center}.mat-mdc-chip-content{display:inline-flex}.mdc-chip--editing{background-color:transparent;display:flex;flex-direction:column}.mdc-chip--editing .mat-mdc-chip-content{pointer-events:none;height:0;overflow:hidden}.mat-chip-edit-input{cursor:text;display:inline-block}.mat-mdc-chip-edit-input-container{width:100%;height:100%;display:flex;align-items:center}\n"] }]
261
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Directionality, decorators: [{
262
- type: Optional
263
- }] }]; }, propDecorators: { disabled: [{
258
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\n"] }]
259
+ }], ctorParameters: function () { return [{ type: i1.LiveAnnouncer }, { type: undefined, decorators: [{
260
+ type: Inject,
261
+ args: [DOCUMENT]
262
+ }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
264
263
  type: Input
265
264
  }], role: [{
266
265
  type: Input
@@ -272,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0-next.3",
272
271
  descendants: true,
273
272
  }]
274
273
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtZXhwZXJpbWVudGFsL21kYy1jaGlwcy9jaGlwLXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFlLHFCQUFxQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxhQUFhLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLEtBQUssRUFBYyxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sUUFBUSxDQUFDOzs7QUFFN0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBRVo7OztHQUdHO0FBQ0gsTUFBZSxjQUFjO0lBRTNCLFlBQVksV0FBdUIsSUFBRyxDQUFDO0NBQ3hDO0FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFM0Q7Ozs7R0FJRztBQWVILE1BQU0sT0FBTyxVQUNYLFNBQVEsb0JBQW9CO0lBcUg1QixZQUNZLFdBQXVCLEVBQ3ZCLGtCQUFxQyxFQUN6QixJQUFvQjtRQUUxQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKVCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQWdCO1FBNUc1Qzs7OztXQUlHO1FBQ08sNEJBQXVCLEdBQWtCLElBQUksQ0FBQztRQUt4RCxnRUFBZ0U7UUFDdEQsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFM0M7OztXQUdHO1FBQ08sb0JBQWUsR0FBaUM7WUFDeEQsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDbkQsMEZBQTBGO1lBQzFGLFdBQVc7WUFDWCxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1lBQzNCLHdGQUF3RjtZQUN4RixpQkFBaUIsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1lBQzNCLGtCQUFrQixFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNGLDZCQUE2QixFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7WUFDdkMsOEJBQThCLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUN4QywwQkFBMEIsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1lBQ3BDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO1lBQ3JELGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQyxpREFBaUQ7WUFDakQsZUFBZSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7U0FDMUIsQ0FBQztRQUtGLDBCQUEwQjtRQUMxQixTQUFJLEdBQVcsb0JBQW9CLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFFM0M7OztXQUdHO1FBQ0gsZ0JBQVcsR0FBNkIsRUFBRSxDQUFDO1FBV2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFvQjdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBb0NsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFsRUQsd0NBQXdDO0lBQ3hDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR0QsbURBQW1EO0lBQ25ELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsSUFDSSxJQUFJO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25CO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEtBQW9CO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFHRCxrRUFBa0U7SUFDbEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQW1CRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLGdEQUFnRDtnQkFDaEQsaURBQWlEO2dCQUNqRCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrREFBa0Q7SUFDeEMsZUFBZTtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsNERBQTREO0lBQ2xELGVBQWU7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsMEVBQTBFO0lBQ2hFLFlBQVksQ0FBQyxRQUFnQixFQUFFLE1BQWU7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELGdGQUFnRjtJQUN0RSxZQUFZLENBQUMsU0FBaUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCw0Q0FBNEM7SUFDcEMsV0FBVztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsK0NBQStDO0lBQ3JDLHNCQUFzQjtRQUM5QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQseUNBQXlDO0lBQ2pDLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JCLHVDQUF1QztnQkFDdkMsbUJBQW1CLEVBQUUsSUFBSTthQUMxQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwyQ0FBMkM7SUFDbkMsdUJBQXVCO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQzVGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDeEIsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXBFLG1GQUFtRjtZQUNuRixtRkFBbUY7WUFDbkYsaUJBQWlCO1lBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw2Q0FBNkM7SUFDckMseUJBQXlCO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDdkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQseUNBQXlDO0lBQy9CLGtCQUFrQjtRQUMxQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ3JDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO1FBRUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLEtBQUssS0FBSSxDQUFDO0lBRVY7Ozs7O09BS0c7SUFDTyxhQUFhLENBQUMsS0FBYTtRQUNuQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xELENBQUM7SUFFRCxnRUFBZ0U7SUFDdEQsbUJBQW1CLENBQUMsS0FBWTtRQUN4QyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNPLDBCQUEwQixDQUFDLEtBQVk7UUFDL0MsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLHlCQUF5QixDQUFDLEtBQVksRUFBRSxTQUFpQjtRQUMvRCxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUMsTUFBNEIsQ0FBQztRQUV4RCxPQUFPLGNBQWMsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDMUUsa0ZBQWtGO1lBQ2xGLElBQUksY0FBYyxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDNUUsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQy9DO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs4R0ExUlUsVUFBVTtrR0FBVixVQUFVLDhSQStHSixPQUFPLHVFQTNIZCwyQkFBMkI7a0dBWTFCLFVBQVU7a0JBZHRCLFNBQVM7K0JBQ0UsY0FBYyxZQUNkLDJCQUEyQixRQUUvQjt3QkFDSixPQUFPLEVBQUUsK0JBQStCO3dCQUN4QyxhQUFhLEVBQUUsTUFBTTt3QkFDckIsdURBQXVEO3dCQUN2RCx5QkFBeUIsRUFBRSwwQkFBMEI7d0JBQ3JELE1BQU0sRUFBRSxNQUFNO3FCQUNmLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQTJINUMsUUFBUTs0Q0E1RFAsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixJQUFJO3NCQURQLEtBQUs7Z0JBd0NOLE1BQU07c0JBTEwsZUFBZTt1QkFBQyxPQUFPLEVBQUU7d0JBQ3hCLHVFQUF1RTt3QkFDdkUsOENBQThDO3dCQUM5QyxXQUFXLEVBQUUsSUFBSTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgTnVtYmVySW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hhc1RhYkluZGV4LCBtaXhpblRhYkluZGV4fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNvcmUnO1xuaW1wb3J0IHtkZXByZWNhdGVkfSBmcm9tICdAbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHttZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcEV2ZW50fSBmcm9tICcuL2NoaXAnO1xuXG5sZXQgdWlkID0gMDtcblxuLyoqXG4gKiBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIE1hdENoaXBTZXQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmFic3RyYWN0IGNsYXNzIE1hdENoaXBTZXRCYXNlIHtcbiAgYWJzdHJhY3QgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuY29uc3QgX01hdENoaXBTZXRNaXhpbkJhc2UgPSBtaXhpblRhYkluZGV4KE1hdENoaXBTZXRCYXNlKTtcblxuLyoqXG4gKiBCYXNpYyBjb250YWluZXIgY29tcG9uZW50IGZvciB0aGUgTWF0Q2hpcCBjb21wb25lbnQuXG4gKlxuICogRXh0ZW5kZWQgYnkgTWF0Q2hpcExpc3Rib3ggYW5kIE1hdENoaXBHcmlkIGZvciBkaWZmZXJlbnQgaW50ZXJhY3Rpb24gcGF0dGVybnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1jaGlwLXNldCcsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHN0eWxlVXJsczogWydjaGlwcy5jc3MnXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtYXQtbWRjLWNoaXAtc2V0IG1kYy1jaGlwLXNldCcsXG4gICAgJ1thdHRyLnJvbGVdJzogJ3JvbGUnLFxuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyBiaW5kaW5nIHdpdGggdXNlIG9mIEFyaWFEZXNjcmliZXJcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnX2FyaWFEZXNjcmliZWRieSB8fCBudWxsJyxcbiAgICAnW2lkXSc6ICdfdWlkJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdENoaXBTZXRcbiAgZXh0ZW5kcyBfTWF0Q2hpcFNldE1peGluQmFzZVxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEhhc1RhYkluZGV4LCBPbkRlc3Ryb3lcbntcbiAgLyoqIFN1YnNjcmlwdGlvbiB0byByZW1vdmUgY2hhbmdlcyBpbiBjaGlwcy4gKi9cbiAgcHJpdmF0ZSBfY2hpcFJlbW92ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIGRlc3Ryb3llZCBldmVudHMgaW4gY2hpcHMuICovXG4gIHByaXZhdGUgX2NoaXBEZXN0cm95ZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGw7XG5cbiAgLyoqIFN1YnNjcmlwdGlvbiB0byBjaGlwIGludGVyYWN0aW9ucy4gKi9cbiAgcHJpdmF0ZSBfY2hpcEludGVyYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgY2hpcCBpcyBkZXN0cm95ZWQsIHdlIHN0b3JlIHRoZSBpbmRleCBvZiB0aGUgZGVzdHJveWVkIGNoaXAgdW50aWwgdGhlIGNoaXBzXG4gICAqIHF1ZXJ5IGxpc3Qgbm90aWZpZXMgYWJvdXQgdGhlIHVwZGF0ZS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lIGFuXG4gICAqIGFwcHJvcHJpYXRlIGNoaXAgdGhhdCBzaG91bGQgcmVjZWl2ZSBmb2N1cyB1bnRpbCB0aGUgYXJyYXkgb2YgY2hpcHMgdXBkYXRlZCBjb21wbGV0ZWx5LlxuICAgKi9cbiAgcHJvdGVjdGVkIF9sYXN0RGVzdHJveWVkQ2hpcEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIE1EQyBmb3VuZGF0aW9uIGNvbnRhaW5pbmcgYnVzaW5lc3MgbG9naWMgZm9yIE1EQyBjaGlwLXNldC4gKi9cbiAgcHJvdGVjdGVkIF9jaGlwU2V0Rm91bmRhdGlvbjogZGVwcmVjYXRlZC5NRENDaGlwU2V0Rm91bmRhdGlvbjtcblxuICAvKiogU3ViamVjdCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIE1EQyBjaGlwLXNldCBhZGFwdGVyIGludGVyZmFjZS5cbiAgICogVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBjaGlwIHNldCBmb3VuZGF0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9jaGlwU2V0QWRhcHRlcjogZGVwcmVjYXRlZC5NRENDaGlwU2V0QWRhcHRlciA9IHtcbiAgICBoYXNDbGFzczogY2xhc3NOYW1lID0+IHRoaXMuX2hhc01kY0NsYXNzKGNsYXNzTmFtZSksXG4gICAgLy8gTm8tb3AuIFdlIGtlZXAgdHJhY2sgb2YgY2hpcHMgdmlhIENvbnRlbnRDaGlsZHJlbiwgd2hpY2ggd2lsbCBiZSB1cGRhdGVkIHdoZW4gYSBjaGlwIGlzXG4gICAgLy8gcmVtb3ZlZC5cbiAgICByZW1vdmVDaGlwQXRJbmRleDogKCkgPT4ge30sXG4gICAgLy8gTm8tb3AgZm9yIGJhc2UgY2hpcCBzZXQuIE1hdENoaXBMaXN0Ym94IG92ZXJyaWRlcyB0aGUgYWRhcHRlciB0byBwcm92aWRlIHRoaXMgbWV0aG9kLlxuICAgIHNlbGVjdENoaXBBdEluZGV4OiAoKSA9PiB7fSxcbiAgICBnZXRJbmRleE9mQ2hpcEJ5SWQ6IChpZDogc3RyaW5nKSA9PiB0aGlzLl9jaGlwcy50b0FycmF5KCkuZmluZEluZGV4KGNoaXAgPT4gY2hpcC5pZCA9PT0gaWQpLFxuICAgIGZvY3VzQ2hpcFByaW1hcnlBY3Rpb25BdEluZGV4OiAoKSA9PiB7fSxcbiAgICBmb2N1c0NoaXBUcmFpbGluZ0FjdGlvbkF0SW5kZXg6ICgpID0+IHt9LFxuICAgIHJlbW92ZUZvY3VzRnJvbUNoaXBBdEluZGV4OiAoKSA9PiB7fSxcbiAgICBpc1JUTDogKCkgPT4gISF0aGlzLl9kaXIgJiYgdGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyxcbiAgICBnZXRDaGlwTGlzdENvdW50OiAoKSA9PiB0aGlzLl9jaGlwcy5sZW5ndGgsXG4gICAgLy8gVE9ETyhtbWFsZXJiYSk6IEltcGxlbWVudCB1c2luZyBMaXZlQW5ub3VuY2VyLlxuICAgIGFubm91bmNlTWVzc2FnZTogKCkgPT4ge30sXG4gIH07XG5cbiAgLyoqIFRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBvbiB0aGUgY2hpcCBsaXN0IGZvciBpbXByb3ZlZCBhMTF5LiAqL1xuICBfYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cbiAgLyoqIFVpZCBvZiB0aGUgY2hpcCBzZXQgKi9cbiAgX3VpZDogc3RyaW5nID0gYG1hdC1tZGMtY2hpcC1zZXQtJHt1aWQrK31gO1xuXG4gIC8qKlxuICAgKiBNYXAgZnJvbSBjbGFzcyB0byB3aGV0aGVyIHRoZSBjbGFzcyBpcyBlbmFibGVkLlxuICAgKiBFbmFibGVkIGNsYXNzZXMgYXJlIHNldCBvbiB0aGUgTURDIGNoaXAtc2V0IGRpdi5cbiAgICovXG4gIF9tZGNDbGFzc2VzOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gPSB7fTtcblxuICAvKiogV2hldGhlciB0aGUgY2hpcCBzZXQgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX3N5bmNDaGlwc1N0YXRlKCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGxpc3QgY29udGFpbnMgY2hpcHMgb3Igbm90LiAqL1xuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIC8qKiBUaGUgQVJJQSByb2xlIGFwcGxpZWQgdG8gdGhlIGNoaXAgc2V0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgcm9sZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fcm9sZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5ID8gbnVsbCA6ICdwcmVzZW50YXRpb24nO1xuICAgIH1cbiAgfVxuXG4gIHNldCByb2xlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fcm9sZSA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3JvbGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIGFueSBvZiB0aGUgY2hpcHMgaW5zaWRlIG9mIHRoaXMgY2hpcC1zZXQgaGFzIGZvY3VzLiAqL1xuICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRm9jdXNlZENoaXAoKTtcbiAgfVxuXG4gIC8qKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBjaGlsZCBjaGlwcycgcmVtb3ZlIGV2ZW50cy4gKi9cbiAgZ2V0IGNoaXBSZW1vdmVDaGFuZ2VzKCk6IE9ic2VydmFibGU8TWF0Q2hpcEV2ZW50PiB7XG4gICAgcmV0dXJuIG1lcmdlKC4uLnRoaXMuX2NoaXBzLm1hcChjaGlwID0+IGNoaXAucmVtb3ZlZCkpO1xuICB9XG5cbiAgLyoqIENvbWJpbmVkIHN0cmVhbSBvZiBhbGwgb2YgdGhlIGNoaWxkIGNoaXBzJyByZW1vdmUgZXZlbnRzLiAqL1xuICBnZXQgY2hpcERlc3Ryb3llZENoYW5nZXMoKTogT2JzZXJ2YWJsZTxNYXRDaGlwRXZlbnQ+IHtcbiAgICByZXR1cm4gbWVyZ2UoLi4udGhpcy5fY2hpcHMubWFwKGNoaXAgPT4gY2hpcC5kZXN0cm95ZWQpKTtcbiAgfVxuXG4gIC8qKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBjaGlsZCBjaGlwcycgaW50ZXJhY3Rpb24gZXZlbnRzLiAqL1xuICBnZXQgY2hpcEludGVyYWN0aW9uQ2hhbmdlcygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBtZXJnZSguLi50aGlzLl9jaGlwcy5tYXAoY2hpcCA9PiBjaGlwLmludGVyYWN0aW9uKSk7XG4gIH1cblxuICAvKiogVGhlIGNoaXBzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBjaGlwIHNldC4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRDaGlwLCB7XG4gICAgLy8gV2UgbmVlZCB0byB1c2UgYGRlc2NlbmRhbnRzOiB0cnVlYCwgYmVjYXVzZSBJdnkgd2lsbCBubyBsb25nZXIgbWF0Y2hcbiAgICAvLyBpbmRpcmVjdCBkZXNjZW5kYW50cyBpZiBpdCdzIGxlZnQgYXMgZmFsc2UuXG4gICAgZGVzY2VuZGFudHM6IHRydWUsXG4gIH0pXG4gIF9jaGlwczogUXVlcnlMaXN0PE1hdENoaXA+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICkge1xuICAgIHN1cGVyKF9lbGVtZW50UmVmKTtcbiAgICB0aGlzLl9jaGlwU2V0Rm91bmRhdGlvbiA9IG5ldyBkZXByZWNhdGVkLk1EQ0NoaXBTZXRGb3VuZGF0aW9uKHRoaXMuX2NoaXBTZXRBZGFwdGVyKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9jaGlwU2V0Rm91bmRhdGlvbi5pbml0KCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5fY2hpcHMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAvLyBTaW5jZSB0aGlzIGhhcHBlbnMgYWZ0ZXIgdGhlIGNvbnRlbnQgaGFzIGJlZW5cbiAgICAgICAgLy8gY2hlY2tlZCwgd2UgbmVlZCB0byBkZWZlciBpdCB0byB0aGUgbmV4dCB0aWNrLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVzZXRDaGlwcygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NoaXBTZXRGb3VuZGF0aW9uLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKiBDaGVja3Mgd2hldGhlciBhbnkgb2YgdGhlIGNoaXBzIGlzIGZvY3VzZWQuICovXG4gIHByb3RlY3RlZCBfaGFzRm9jdXNlZENoaXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBzICYmIHRoaXMuX2NoaXBzLnNvbWUoY2hpcCA9PiBjaGlwLl9oYXNGb2N1cygpKTtcbiAgfVxuXG4gIC8qKiBTeW5jcyB0aGUgY2hpcC1zZXQncyBzdGF0ZSB3aXRoIHRoZSBpbmRpdmlkdWFsIGNoaXBzLiAqL1xuICBwcm90ZWN0ZWQgX3N5bmNDaGlwc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jaGlwcykge1xuICAgICAgdGhpcy5fY2hpcHMuZm9yRWFjaChjaGlwID0+IHtcbiAgICAgICAgY2hpcC5kaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVkO1xuICAgICAgICBjaGlwLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXRzIHdoZXRoZXIgdGhlIGdpdmVuIENTUyBjbGFzcyBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgTURDIGNoaXAuICovXG4gIHByb3RlY3RlZCBfc2V0TWRjQ2xhc3MoY3NzQ2xhc3M6IHN0cmluZywgYWN0aXZlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgYWN0aXZlID8gY2xhc3Nlcy5hZGQoY3NzQ2xhc3MpIDogY2xhc3Nlcy5yZW1vdmUoY3NzQ2xhc3MpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEFkYXB0ZXIgbWV0aG9kIHRoYXQgcmV0dXJucyB0cnVlIGlmIHRoZSBjaGlwIHNldCBoYXMgdGhlIGdpdmVuIE1EQyBjbGFzcy4gKi9cbiAgcHJvdGVjdGVkIF9oYXNNZGNDbGFzcyhjbGFzc05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSk7XG4gIH1cblxuICAvKiogVXBkYXRlcyBzdWJzY3JpcHRpb25zIHRvIGNoaXAgZXZlbnRzLiAqL1xuICBwcml2YXRlIF9yZXNldENoaXBzKCkge1xuICAgIHRoaXMuX2Ryb3BTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9DaGlwRXZlbnRzKCk7XG4gIH1cblxuICAvKiogU3Vic2NyaWJlcyB0byBldmVudHMgb24gdGhlIGNoaWxkIGNoaXBzLiAqL1xuICBwcm90ZWN0ZWQgX3N1YnNjcmliZVRvQ2hpcEV2ZW50cygpIHtcbiAgICB0aGlzLl9saXN0ZW5Ub0NoaXBzUmVtb3ZlKCk7XG4gICAgdGhpcy5fbGlzdGVuVG9DaGlwc0Rlc3Ryb3llZCgpO1xuICAgIHRoaXMuX2xpc3RlblRvQ2hpcHNJbnRlcmFjdGlvbigpO1xuICB9XG5cbiAgLyoqIFN1YnNjcmliZXMgdG8gY2hpcCByZW1vdmFsIGV2ZW50cy4gKi9cbiAgcHJpdmF0ZSBfbGlzdGVuVG9DaGlwc1JlbW92ZSgpIHtcbiAgICB0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy5jaGlwUmVtb3ZlQ2hhbmdlcy5zdWJzY3JpYmUoKGV2ZW50OiBNYXRDaGlwRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuX2NoaXBTZXRGb3VuZGF0aW9uLmhhbmRsZUNoaXBSZW1vdmFsKHtcbiAgICAgICAgY2hpcElkOiBldmVudC5jaGlwLmlkLFxuICAgICAgICAvLyBUT0RPKG1tYWxlcmJhKTogQWRkIHJlbW92YWwgbWVzc2FnZS5cbiAgICAgICAgcmVtb3ZlZEFubm91bmNlbWVudDogbnVsbCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFN1YnNjcmliZXMgdG8gY2hpcCBkZXN0cm95ZWQgZXZlbnRzLiAqL1xuICBwcml2YXRlIF9saXN0ZW5Ub0NoaXBzRGVzdHJveWVkKCkge1xuICAgIHRoaXMuX2NoaXBEZXN0cm95ZWRTdWJzY3JpcHRpb24gPSB0aGlzLmNoaXBEZXN0cm95ZWRDaGFuZ2VzLnN1YnNjcmliZSgoZXZlbnQ6IE1hdENoaXBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgY2hpcCA9IGV2ZW50LmNoaXA7XG4gICAgICBjb25zdCBjaGlwSW5kZXg6IG51bWJlciA9IHRoaXMuX2NoaXBzLnRvQXJyYXkoKS5pbmRleE9mKGV2ZW50LmNoaXApO1xuXG4gICAgICAvLyBJbiBjYXNlIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSByZW1vdmVkIGlzIGN1cnJlbnRseSBmb2N1c2VkLCB3ZSB0ZW1wb3JhcmlseSBzdG9yZVxuICAgICAgLy8gdGhlIGluZGV4IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIHNpYmxpbmcgY2hpcCB0aGF0IHdpbGxcbiAgICAgIC8vIHJlY2VpdmUgZm9jdXMuXG4gICAgICBpZiAodGhpcy5faXNWYWxpZEluZGV4KGNoaXBJbmRleCkgJiYgY2hpcC5faGFzRm9jdXMoKSkge1xuICAgICAgICB0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4ID0gY2hpcEluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFN1YnNjcmliZXMgdG8gY2hpcCBpbnRlcmFjdGlvbiBldmVudHMuICovXG4gIHByaXZhdGUgX2xpc3RlblRvQ2hpcHNJbnRlcmFjdGlvbigpIHtcbiAgICB0aGlzLl9jaGlwSW50ZXJhY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNoaXBJbnRlcmFjdGlvbkNoYW5nZXMuc3Vic2NyaWJlKChpZDogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLl9jaGlwU2V0Rm91bmRhdGlvbi5oYW5kbGVDaGlwSW50ZXJhY3Rpb24oe2NoaXBJZDogaWR9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBVbnN1YnNjcmliZXMgZnJvbSBhbGwgY2hpcCBldmVudHMuICovXG4gIHByb3RlY3RlZCBfZHJvcFN1YnNjcmlwdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jaGlwSW50ZXJhY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX2NoaXBJbnRlcmFjdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fY2hpcEludGVyYWN0aW9uU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY2hpcERlc3Ryb3llZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fY2hpcERlc3Ryb3llZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fY2hpcERlc3Ryb3llZFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIER1bW15IG1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4gQmFzZSBjaGlwIHNldCBjYW5ub3QgYmUgZm9jdXNlZC4gKi9cbiAgZm9jdXMoKSB7fVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IHRvIGVuc3VyZSBhbGwgaW5kZXhlcyBhcmUgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaW5kZXggaXMgdmFsaWQgZm9yIG91ciBsaXN0IG9mIGNoaXBzLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9pc1ZhbGlkSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5fY2hpcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIGFuIGV2ZW50IGNvbWVzIGZyb20gaW5zaWRlIGEgY2hpcCBlbGVtZW50LiAqL1xuICBwcm90ZWN0ZWQgX29yaWdpbmF0ZXNGcm9tQ2hpcChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tGb3JDbGFzc0luSGllcmFyY2h5KGV2ZW50LCAnbWRjLWNoaXAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhbiBldmVudCBjb21lcyBmcm9tIGluc2lkZSBhIGNoaXAgZWxlbWVudCBpbiB0aGUgZWRpdGluZ1xuICAgKiBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBfb3JpZ2luYXRlc0Zyb21FZGl0aW5nQ2hpcChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tGb3JDbGFzc0luSGllcmFyY2h5KGV2ZW50LCAnbWRjLWNoaXAtLWVkaXRpbmcnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrRm9yQ2xhc3NJbkhpZXJhcmNoeShldmVudDogRXZlbnQsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBOdWxsIGNoZWNrIHRoZSBjbGFzc0xpc3QsIGJlY2F1c2UgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdCBvbiBhbGwgZWxlbWVudHMuXG4gICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0ICYmIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV90YWJJbmRleDogTnVtYmVySW5wdXQ7XG59XG4iXX0=
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtZXhwZXJpbWVudGFsL21kYy1jaGlwcy9jaGlwLXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUNMLG9CQUFvQixFQUdwQixhQUFhLEVBSWIsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLEtBQUssRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7QUFFN0M7OztHQUdHO0FBQ0gsTUFBZSxjQUFjO0lBRTNCLFlBQVksV0FBdUIsSUFBRyxDQUFDO0NBQ3hDO0FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFM0Q7Ozs7R0FJRztBQWtCSCxNQUFNLE9BQU8sVUFDWCxTQUFRLG9CQUFvQjtJQW9INUIs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QUNmLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBYTtRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDeEQsQ0FBQzs7dUdBMVBVLFVBQVUsK0NBdUhYLFFBQVE7MkZBdkhQLFVBQVUsMFJBOEdKLE9BQU8sdUVBN0hkOzs7O0dBSVQ7MkZBV1UsVUFBVTtrQkFqQnRCLFNBQVM7K0JBQ0UsY0FBYyxZQUNkOzs7O0dBSVQsUUFFSzt3QkFDSixPQUFPLEVBQUUseUNBQXlDO3dCQUNsRCxhQUFhLEVBQUUsTUFBTTt3QkFDckIsdURBQXVEO3dCQUN2RCx5QkFBeUIsRUFBRSwwQkFBMEI7cUJBQ3RELGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXlINUMsTUFBTTsyQkFBQyxRQUFRO3FHQTVDZCxRQUFRO3NCQURYLEtBQUs7Z0JBaUJGLElBQUk7c0JBRFAsS0FBSztnQkF5Qk4sTUFBTTtzQkFMTCxlQUFlO3VCQUFDLE9BQU8sRUFBRTt3QkFDeEIsdUVBQXVFO3dCQUN2RSw4Q0FBOEM7d0JBQzlDLFdBQVcsRUFBRSxJQUFJO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0xpdmVBbm5vdW5jZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SGFzVGFiSW5kZXgsIG1peGluVGFiSW5kZXh9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtY29yZSc7XG5pbXBvcnQge1xuICBNRENDaGlwU2V0Rm91bmRhdGlvbixcbiAgTURDQ2hpcFNldEFkYXB0ZXIsXG4gIE1EQ0NoaXBGb3VuZGF0aW9uLFxuICBNRENDaGlwRXZlbnRzLFxuICBDaGlwQW5pbWF0aW9uRXZlbnQsXG4gIENoaXBJbnRlcmFjdGlvbkV2ZW50LFxuICBDaGlwTmF2aWdhdGlvbkV2ZW50LFxuICBNRENDaGlwQWN0aW9uVHlwZSxcbn0gZnJvbSAnQG1hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7bWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdENoaXAsIE1hdENoaXBFdmVudH0gZnJvbSAnLi9jaGlwJztcbmltcG9ydCB7ZW1pdEN1c3RvbUV2ZW50fSBmcm9tICcuL2VtaXQtZXZlbnQnO1xuXG4vKipcbiAqIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gTWF0Q2hpcFNldC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgTWF0Q2hpcFNldEJhc2Uge1xuICBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IoX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5jb25zdCBfTWF0Q2hpcFNldE1peGluQmFzZSA9IG1peGluVGFiSW5kZXgoTWF0Q2hpcFNldEJhc2UpO1xuXG4vKipcbiAqIEJhc2ljIGNvbnRhaW5lciBjb21wb25lbnQgZm9yIHRoZSBNYXRDaGlwIGNvbXBvbmVudC5cbiAqXG4gKiBFeHRlbmRlZCBieSBNYXRDaGlwTGlzdGJveCBhbmQgTWF0Q2hpcEdyaWQgZm9yIGRpZmZlcmVudCBpbnRlcmFjdGlvbiBwYXR0ZXJucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWNoaXAtc2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3BhbiBjbGFzcz1cIm1kYy1ldm9sdXRpb24tY2hpcC1zZXRfX2NoaXBzXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ2NoaXAtc2V0LmNzcyddLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1tZGMtY2hpcC1zZXQgbWRjLWV2b2x1dGlvbi1jaGlwLXNldCcsXG4gICAgJ1thdHRyLnJvbGVdJzogJ3JvbGUnLFxuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyBiaW5kaW5nIHdpdGggdXNlIG9mIEFyaWFEZXNjcmliZXJcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnX2FyaWFEZXNjcmliZWRieSB8fCBudWxsJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdENoaXBTZXRcbiAgZXh0ZW5kcyBfTWF0Q2hpcFNldE1peGluQmFzZVxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEhhc1RhYkluZGV4LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFdoZW4gYSBjaGlwIGlzIGRlc3Ryb3llZCwgd2Ugc3RvcmUgdGhlIGluZGV4IG9mIHRoZSBkZXN0cm95ZWQgY2hpcCB1bnRpbCB0aGUgY2hpcHNcbiAgICogcXVlcnkgbGlzdCBub3RpZmllcyBhYm91dCB0aGUgdXBkYXRlLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGNhbm5vdCBkZXRlcm1pbmUgYW5cbiAgICogYXBwcm9wcmlhdGUgY2hpcCB0aGF0IHNob3VsZCByZWNlaXZlIGZvY3VzIHVudGlsIHRoZSBhcnJheSBvZiBjaGlwcyB1cGRhdGVkIGNvbXBsZXRlbHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgTURDIGZvdW5kYXRpb24gY29udGFpbmluZyBidXNpbmVzcyBsb2dpYyBmb3IgTURDIGNoaXAtc2V0LiAqL1xuICBwcm90ZWN0ZWQgX2NoaXBTZXRGb3VuZGF0aW9uOiBNRENDaGlwU2V0Rm91bmRhdGlvbjtcblxuICAvKiogU3ViamVjdCB0aGF0IGVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBkZXN0cm95ZWQuICovXG4gIHByb3RlY3RlZCBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogQ29tYmluZWQgc3RyZWFtIG9mIGFsbCBvZiB0aGUgY2hpbGQgY2hpcHMnIHJlbW92ZSBldmVudHMuICovXG4gIGdldCBjaGlwRGVzdHJveWVkQ2hhbmdlcygpOiBPYnNlcnZhYmxlPE1hdENoaXBFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9nZXRDaGlwU3RyZWFtKGNoaXAgPT4gY2hpcC5kZXN0cm95ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBNREMgY2hpcC1zZXQgYWRhcHRlciBpbnRlcmZhY2UuXG4gICAqIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgY2hpcCBzZXQgZm91bmRhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBfY2hpcFNldEFkYXB0ZXI6IE1EQ0NoaXBTZXRBZGFwdGVyID0ge1xuICAgIGFubm91bmNlTWVzc2FnZTogbWVzc2FnZSA9PiB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKG1lc3NhZ2UpLFxuICAgIGVtaXRFdmVudDogKGV2ZW50TmFtZSwgZXZlbnREZXRhaWwpID0+IHtcbiAgICAgIGVtaXRDdXN0b21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2RvY3VtZW50LCBldmVudE5hbWUsIGV2ZW50RGV0YWlsLCB0cnVlKTtcbiAgICB9LFxuICAgIGdldEF0dHJpYnV0ZTogbmFtZSA9PiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKG5hbWUpLFxuICAgIGdldENoaXBBY3Rpb25zQXRJbmRleDogaW5kZXggPT4gdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5nZXRBY3Rpb25zKCkgfHwgW10sXG4gICAgZ2V0Q2hpcENvdW50OiAoKSA9PiB0aGlzLl9jaGlwcy5sZW5ndGgsXG4gICAgZ2V0Q2hpcElkQXRJbmRleDogaW5kZXggPT4gdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5nZXRFbGVtZW50SUQoKSB8fCAnJyxcbiAgICBnZXRDaGlwSW5kZXhCeUlkOiBpZCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpcHMudG9BcnJheSgpLmZpbmRJbmRleChjaGlwID0+IGNoaXAuX2dldEZvdW5kYXRpb24oKS5nZXRFbGVtZW50SUQoKSA9PT0gaWQpO1xuICAgIH0sXG4gICAgaXNDaGlwRm9jdXNhYmxlQXRJbmRleDogKGluZGV4LCBhY3Rpb25UeXBlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5pc0FjdGlvbkZvY3VzYWJsZShhY3Rpb25UeXBlKSB8fCBmYWxzZTtcbiAgICB9LFxuICAgIGlzQ2hpcFNlbGVjdGFibGVBdEluZGV4OiAoaW5kZXgsIGFjdGlvblR5cGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGlwRm91bmRhdGlvbihpbmRleCk/LmlzQWN0aW9uU2VsZWN0YWJsZShhY3Rpb25UeXBlKSB8fCBmYWxzZTtcbiAgICB9LFxuICAgIGlzQ2hpcFNlbGVjdGVkQXRJbmRleDogKGluZGV4LCBhY3Rpb25UeXBlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5pc0FjdGlvblNlbGVjdGVkKGFjdGlvblR5cGUpIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgcmVtb3ZlQ2hpcEF0SW5kZXg6IGluZGV4ID0+IHRoaXMuX2NoaXBzLnRvQXJyYXkoKVtpbmRleF0/LnJlbW92ZSgpLFxuICAgIHNldENoaXBGb2N1c0F0SW5kZXg6IChpbmRleCwgYWN0aW9uLCBiZWhhdmlvcikgPT4ge1xuICAgICAgdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5zZXRBY3Rpb25Gb2N1cyhhY3Rpb24sIGJlaGF2aW9yKTtcbiAgICB9LFxuICAgIHNldENoaXBTZWxlY3RlZEF0SW5kZXg6IChpbmRleCwgYWN0aW9uVHlwZSwgaXNTZWxlY3RlZCkgPT4ge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdHJhaWxpbmcgYWN0aW9uIGFzIGRlc2VsZWN0ZWQgZW5kcyB1cCBkZXNlbGVjdGluZyB0aGUgZW50aXJlIGNoaXAuXG4gICAgICAvLyBUaGlzIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQsIGJ1dCBpdCdzIG5vdCBzb21ldGhpbmcgd2Ugd2FudCBzbyB3ZSBvbmx5IGFwcGx5IHRoZVxuICAgICAgLy8gc2VsZWN0ZWQgc3RhdGUgdG8gdGhlIHByaW1hcnkgY2hpcC5cbiAgICAgIGlmIChhY3Rpb25UeXBlID09PSBNRENDaGlwQWN0aW9uVHlwZS5QUklNQVJZKSB7XG4gICAgICAgIHRoaXMuX2NoaXBGb3VuZGF0aW9uKGluZGV4KT8uc2V0QWN0aW9uU2VsZWN0ZWQoYWN0aW9uVHlwZSwgaXNTZWxlY3RlZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdGFydENoaXBBbmltYXRpb25BdEluZGV4OiAoaW5kZXgsIGFuaW1hdGlvbikgPT4ge1xuICAgICAgdGhpcy5fY2hpcEZvdW5kYXRpb24oaW5kZXgpPy5zdGFydEFuaW1hdGlvbihhbmltYXRpb24pO1xuICAgIH0sXG4gIH07XG5cbiAgLyoqIFRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBvbiB0aGUgY2hpcCBsaXN0IGZvciBpbXByb3ZlZCBhMTF5LiAqL1xuICBfYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIGNsYXNzIHRvIHdoZXRoZXIgdGhlIGNsYXNzIGlzIGVuYWJsZWQuXG4gICAqIEVuYWJsZWQgY2xhc3NlcyBhcmUgc2V0IG9uIHRoZSBNREMgY2hpcC1zZXQgZGl2LlxuICAgKi9cbiAgX21kY0NsYXNzZXM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIHNldCBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpO1xuICB9XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgY2hpcCBsaXN0IGNvbnRhaW5zIGNoaXBzIG9yIG5vdC4gKi9cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jaGlwcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKiogVGhlIEFSSUEgcm9sZSBhcHBsaWVkIHRvIHRoZSBjaGlwIHNldC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHJvbGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX3JvbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5lbXB0eSA/IG51bGwgOiAncHJlc2VudGF0aW9uJztcbiAgICB9XG4gIH1cblxuICBzZXQgcm9sZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3JvbGUgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9yb2xlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciBhbnkgb2YgdGhlIGNoaXBzIGluc2lkZSBvZiB0aGlzIGNoaXAtc2V0IGhhcyBmb2N1cy4gKi9cbiAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0ZvY3VzZWRDaGlwKCk7XG4gIH1cblxuICAvKiogVGhlIGNoaXBzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBjaGlwIHNldC4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRDaGlwLCB7XG4gICAgLy8gV2UgbmVlZCB0byB1c2UgYGRlc2NlbmRhbnRzOiB0cnVlYCwgYmVjYXVzZSBJdnkgd2lsbCBubyBsb25nZXIgbWF0Y2hcbiAgICAvLyBpbmRpcmVjdCBkZXNjZW5kYW50cyBpZiBpdCdzIGxlZnQgYXMgZmFsc2UuXG4gICAgZGVzY2VuZGFudHM6IHRydWUsXG4gIH0pXG4gIF9jaGlwczogUXVlcnlMaXN0PE1hdENoaXA+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByb3RlY3RlZCBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfZWxlbWVudFJlZik7XG4gICAgY29uc3QgZWxlbWVudCA9IF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fY2hpcFNldEZvdW5kYXRpb24gPSBuZXcgTURDQ2hpcFNldEZvdW5kYXRpb24odGhpcy5fY2hpcFNldEFkYXB0ZXIpO1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihNRENDaGlwRXZlbnRzLkFOSU1BVElPTiwgdGhpcy5faGFuZGxlQ2hpcEFuaW1hdGlvbik7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKE1EQ0NoaXBFdmVudHMuSU5URVJBQ1RJT04sIHRoaXMuX2hhbmRsZUNoaXBJbnRlcmFjdGlvbik7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKE1EQ0NoaXBFdmVudHMuTkFWSUdBVElPTiwgdGhpcy5faGFuZGxlQ2hpcE5hdmlnYXRpb24pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2NoaXBTZXRGb3VuZGF0aW9uLmluaXQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9jaGlwcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8vIFNpbmNlIHRoaXMgaGFwcGVucyBhZnRlciB0aGUgY29udGVudCBoYXMgYmVlblxuICAgICAgICAvLyBjaGVja2VkLCB3ZSBuZWVkIHRvIGRlZmVyIGl0IHRvIHRoZSBuZXh0IHRpY2suXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3N5bmNDaGlwc1N0YXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jaGlwRGVzdHJveWVkQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKGV2ZW50OiBNYXRDaGlwRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNoaXAgPSBldmVudC5jaGlwO1xuICAgICAgY29uc3QgY2hpcEluZGV4ID0gdGhpcy5fY2hpcHMudG9BcnJheSgpLmluZGV4T2YoZXZlbnQuY2hpcCk7XG5cbiAgICAgIC8vIEluIGNhc2UgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaXMgY3VycmVudGx5IGZvY3VzZWQsIHdlIHRlbXBvcmFyaWx5IHN0b3JlXG4gICAgICAvLyB0aGUgaW5kZXggaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgc2libGluZyBjaGlwIHRoYXQgd2lsbFxuICAgICAgLy8gcmVjZWl2ZSBmb2N1cy5cbiAgICAgIGlmICh0aGlzLl9pc1ZhbGlkSW5kZXgoY2hpcEluZGV4KSAmJiBjaGlwLl9oYXNGb2N1cygpKSB7XG4gICAgICAgIHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXggPSBjaGlwSW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNRENDaGlwRXZlbnRzLkFOSU1BVElPTiwgdGhpcy5faGFuZGxlQ2hpcEFuaW1hdGlvbik7XG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKE1EQ0NoaXBFdmVudHMuSU5URVJBQ1RJT04sIHRoaXMuX2hhbmRsZUNoaXBJbnRlcmFjdGlvbik7XG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKE1EQ0NoaXBFdmVudHMuTkFWSUdBVElPTiwgdGhpcy5faGFuZGxlQ2hpcE5hdmlnYXRpb24pO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY2hpcFNldEZvdW5kYXRpb24uZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIGFueSBvZiB0aGUgY2hpcHMgaXMgZm9jdXNlZC4gKi9cbiAgcHJvdGVjdGVkIF9oYXNGb2N1c2VkQ2hpcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcHMgJiYgdGhpcy5fY2hpcHMuc29tZShjaGlwID0+IGNoaXAuX2hhc0ZvY3VzKCkpO1xuICB9XG5cbiAgLyoqIFN5bmNzIHRoZSBjaGlwLXNldCdzIHN0YXRlIHdpdGggdGhlIGluZGl2aWR1YWwgY2hpcHMuICovXG4gIHByb3RlY3RlZCBfc3luY0NoaXBzU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2NoaXBzKSB7XG4gICAgICB0aGlzLl9jaGlwcy5mb3JFYWNoKGNoaXAgPT4ge1xuICAgICAgICBjaGlwLmRpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIGNoaXAuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIER1bW15IG1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4gQmFzZSBjaGlwIHNldCBjYW5ub3QgYmUgZm9jdXNlZC4gKi9cbiAgZm9jdXMoKSB7fVxuXG4gIC8qKlxuICAgKiBVdGlsaXR5IHRvIGVuc3VyZSBhbGwgaW5kZXhlcyBhcmUgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaW5kZXggaXMgdmFsaWQgZm9yIG91ciBsaXN0IG9mIGNoaXBzLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9pc1ZhbGlkSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5fY2hpcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIGFuIGV2ZW50IGNvbWVzIGZyb20gaW5zaWRlIGEgY2hpcCBlbGVtZW50LiAqL1xuICBwcm90ZWN0ZWQgX29yaWdpbmF0ZXNGcm9tQ2hpcChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tGb3JDbGFzc0luSGllcmFyY2h5KGV2ZW50LCAnbWRjLWV2b2x1dGlvbi1jaGlwJyk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYHRhYmluZGV4YCBmcm9tIHRoZSBjaGlwIGdyaWQgYW5kIHJlc2V0cyBpdCBiYWNrIGFmdGVyd2FyZHMsIGFsbG93aW5nIHRoZVxuICAgKiB1c2VyIHRvIHRhYiBvdXQgb2YgaXQuIFRoaXMgcHJldmVudHMgdGhlIGdyaWQgZnJvbSBjYXB0dXJpbmcgZm9jdXMgYW5kIHJlZGlyZWN0aW5nXG4gICAqIGl0IGJhY2sgdG8gdGhlIGZpcnN0IGNoaXAsIGNyZWF0aW5nIGEgZm9jdXMgdHJhcCwgaWYgaXQgdXNlciB0cmllcyB0byB0YWIgYXdheS5cbiAgICovXG4gIHByb3RlY3RlZCBfYWxsb3dGb2N1c0VzY2FwZSgpIHtcbiAgICBjb25zdCBwcmV2aW91c1RhYkluZGV4ID0gdGhpcy50YWJJbmRleDtcblxuICAgIGlmICh0aGlzLnRhYkluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy50YWJJbmRleCA9IC0xO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJJbmRleCA9IHByZXZpb3VzVGFiSW5kZXg7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzdHJlYW0gb2YgZXZlbnRzIGZyb20gYWxsIHRoZSBjaGlwcyB3aXRoaW4gdGhlIHNldC5cbiAgICogVGhlIHN0cmVhbSB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jb3Jwb3JhdGUgYW55IG5ld2x5LWFkZGVkIGNoaXBzLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9nZXRDaGlwU3RyZWFtPFQsIEMgZXh0ZW5kcyBNYXRDaGlwID0gTWF0Q2hpcD4oXG4gICAgbWFwcGluZ0Z1bmN0aW9uOiAoY2hpcDogQykgPT4gT2JzZXJ2YWJsZTxUPixcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBzLmNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi4odGhpcy5fY2hpcHMgYXMgUXVlcnlMaXN0PEM+KS5tYXAobWFwcGluZ0Z1bmN0aW9uKSkpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NoZWNrRm9yQ2xhc3NJbkhpZXJhcmNoeShldmVudDogRXZlbnQsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiBjdXJyZW50RWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAvLyBOdWxsIGNoZWNrIHRoZSBjbGFzc0xpc3QsIGJlY2F1c2UgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdCBvbiBhbGwgZWxlbWVudHMuXG4gICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0ICYmIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hpcEZvdW5kYXRpb24oaW5kZXg6IG51bWJlcik6IE1EQ0NoaXBGb3VuZGF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcHMudG9BcnJheSgpW2luZGV4XT8uX2dldEZvdW5kYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNoaXBBbmltYXRpb24gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgdGhpcy5fY2hpcFNldEZvdW5kYXRpb24uaGFuZGxlQ2hpcEFuaW1hdGlvbihldmVudCBhcyBDaGlwQW5pbWF0aW9uRXZlbnQpO1xuICB9O1xuXG4gIHByaXZhdGUgX2hhbmRsZUNoaXBJbnRlcmFjdGlvbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICB0aGlzLl9jaGlwU2V0Rm91bmRhdGlvbi5oYW5kbGVDaGlwSW50ZXJhY3Rpb24oZXZlbnQgYXMgQ2hpcEludGVyYWN0aW9uRXZlbnQpO1xuICB9O1xuXG4gIHByaXZhdGUgX2hhbmRsZUNoaXBOYXZpZ2F0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIHRoaXMuX2NoaXBTZXRGb3VuZGF0aW9uLmhhbmRsZUNoaXBOYXZpZ2F0aW9uKGV2ZW50IGFzIENoaXBOYXZpZ2F0aW9uRXZlbnQpO1xuICB9O1xufVxuIl19