@angular/material-experimental 14.0.0-rc.0 → 14.0.0

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 (247) hide show
  1. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
  2. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
  3. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +4 -4
  4. package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +4 -4
  5. package/esm2020/column-resize/column-resize-module.mjs +13 -13
  6. package/esm2020/column-resize/overlay-handle.mjs +4 -4
  7. package/esm2020/column-resize/resizable-directives/default-enabled-resizable.mjs +4 -4
  8. package/esm2020/column-resize/resizable-directives/resizable.mjs +4 -4
  9. package/esm2020/column-resize/resize-strategy.mjs +4 -4
  10. package/esm2020/mdc-autocomplete/autocomplete-origin.mjs +4 -4
  11. package/esm2020/mdc-autocomplete/autocomplete-trigger.mjs +4 -4
  12. package/esm2020/mdc-autocomplete/autocomplete.mjs +4 -4
  13. package/esm2020/mdc-autocomplete/module.mjs +5 -5
  14. package/esm2020/mdc-button/button-base.mjs +7 -7
  15. package/esm2020/mdc-button/button.mjs +9 -9
  16. package/esm2020/mdc-button/fab.mjs +17 -17
  17. package/esm2020/mdc-button/icon-button.mjs +9 -9
  18. package/esm2020/mdc-button/module.mjs +5 -5
  19. package/esm2020/mdc-card/card.mjs +43 -43
  20. package/esm2020/mdc-card/module.mjs +5 -5
  21. package/esm2020/mdc-checkbox/checkbox.mjs +29 -283
  22. package/esm2020/mdc-checkbox/module.mjs +5 -5
  23. package/esm2020/mdc-chips/chip-action.mjs +43 -77
  24. package/esm2020/mdc-chips/chip-edit-input.mjs +4 -4
  25. package/esm2020/mdc-chips/chip-grid.mjs +59 -70
  26. package/esm2020/mdc-chips/chip-icons.mjs +27 -41
  27. package/esm2020/mdc-chips/chip-input.mjs +5 -8
  28. package/esm2020/mdc-chips/chip-listbox.mjs +24 -66
  29. package/esm2020/mdc-chips/chip-option.mjs +38 -83
  30. package/esm2020/mdc-chips/chip-row.mjs +51 -75
  31. package/esm2020/mdc-chips/chip-set.mjs +117 -118
  32. package/esm2020/mdc-chips/chip.mjs +81 -166
  33. package/esm2020/mdc-chips/module.mjs +6 -6
  34. package/esm2020/mdc-chips/public-api.mjs +2 -2
  35. package/esm2020/mdc-chips/tokens.mjs +33 -0
  36. package/esm2020/mdc-core/option/index.mjs +5 -5
  37. package/esm2020/mdc-core/option/optgroup.mjs +4 -4
  38. package/esm2020/mdc-core/option/option.mjs +4 -4
  39. package/esm2020/mdc-dialog/dialog-container.mjs +4 -4
  40. package/esm2020/mdc-dialog/dialog-content-directives.mjs +13 -13
  41. package/esm2020/mdc-dialog/dialog.mjs +4 -4
  42. package/esm2020/mdc-dialog/module.mjs +5 -5
  43. package/esm2020/mdc-form-field/directives/error.mjs +4 -4
  44. package/esm2020/mdc-form-field/directives/floating-label.mjs +26 -6
  45. package/esm2020/mdc-form-field/directives/hint.mjs +4 -4
  46. package/esm2020/mdc-form-field/directives/label.mjs +4 -4
  47. package/esm2020/mdc-form-field/directives/line-ripple.mjs +32 -11
  48. package/esm2020/mdc-form-field/directives/notched-outline.mjs +25 -46
  49. package/esm2020/mdc-form-field/directives/prefix.mjs +4 -4
  50. package/esm2020/mdc-form-field/directives/suffix.mjs +4 -4
  51. package/esm2020/mdc-form-field/form-field.mjs +11 -95
  52. package/esm2020/mdc-form-field/module.mjs +5 -5
  53. package/esm2020/mdc-input/input.mjs +4 -4
  54. package/esm2020/mdc-input/module.mjs +5 -5
  55. package/esm2020/mdc-list/action-list.mjs +5 -5
  56. package/esm2020/mdc-list/list-base.mjs +7 -15
  57. package/esm2020/mdc-list/list-item-sections.mjs +19 -19
  58. package/esm2020/mdc-list/list-option.mjs +39 -21
  59. package/esm2020/mdc-list/list.mjs +8 -8
  60. package/esm2020/mdc-list/module.mjs +5 -5
  61. package/esm2020/mdc-list/nav-list.mjs +5 -5
  62. package/esm2020/mdc-list/selection-list.mjs +124 -124
  63. package/esm2020/mdc-list/subheader.mjs +4 -4
  64. package/esm2020/mdc-menu/directives.mjs +7 -7
  65. package/esm2020/mdc-menu/menu-item.mjs +4 -4
  66. package/esm2020/mdc-menu/menu.mjs +4 -4
  67. package/esm2020/mdc-menu/module.mjs +5 -5
  68. package/esm2020/mdc-paginator/module.mjs +5 -5
  69. package/esm2020/mdc-paginator/paginator.mjs +4 -4
  70. package/esm2020/mdc-progress-bar/module.mjs +5 -5
  71. package/esm2020/mdc-progress-bar/progress-bar.mjs +39 -103
  72. package/esm2020/mdc-progress-spinner/module.mjs +5 -5
  73. package/esm2020/mdc-progress-spinner/progress-spinner.mjs +13 -60
  74. package/esm2020/mdc-radio/module.mjs +5 -5
  75. package/esm2020/mdc-radio/radio.mjs +9 -43
  76. package/esm2020/mdc-select/module.mjs +5 -5
  77. package/esm2020/mdc-select/select.mjs +7 -7
  78. package/esm2020/mdc-slide-toggle/module.mjs +5 -5
  79. package/esm2020/mdc-slide-toggle/slide-toggle.mjs +16 -178
  80. package/esm2020/mdc-slider/global-change-and-input-listener.mjs +4 -4
  81. package/esm2020/mdc-slider/module.mjs +5 -5
  82. package/esm2020/mdc-slider/slider.mjs +10 -10
  83. package/esm2020/mdc-snack-bar/module.mjs +5 -5
  84. package/esm2020/mdc-snack-bar/simple-snack-bar.mjs +4 -4
  85. package/esm2020/mdc-snack-bar/snack-bar-container.mjs +5 -5
  86. package/esm2020/mdc-snack-bar/snack-bar-content.mjs +10 -10
  87. package/esm2020/mdc-snack-bar/snack-bar.mjs +4 -4
  88. package/esm2020/mdc-table/cell.mjs +22 -22
  89. package/esm2020/mdc-table/module.mjs +5 -5
  90. package/esm2020/mdc-table/row.mjs +22 -22
  91. package/esm2020/mdc-table/table.mjs +9 -9
  92. package/esm2020/mdc-table/text-column.mjs +4 -4
  93. package/esm2020/mdc-tabs/ink-bar.mjs +93 -114
  94. package/esm2020/mdc-tabs/module.mjs +5 -5
  95. package/esm2020/mdc-tabs/tab-body.mjs +7 -7
  96. package/esm2020/mdc-tabs/tab-content.mjs +4 -4
  97. package/esm2020/mdc-tabs/tab-group.mjs +4 -4
  98. package/esm2020/mdc-tabs/tab-header.mjs +4 -4
  99. package/esm2020/mdc-tabs/tab-label-wrapper.mjs +10 -34
  100. package/esm2020/mdc-tabs/tab-label.mjs +4 -4
  101. package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +16 -25
  102. package/esm2020/mdc-tabs/tab.mjs +4 -4
  103. package/esm2020/mdc-tooltip/module.mjs +5 -5
  104. package/esm2020/mdc-tooltip/tooltip.mjs +8 -8
  105. package/esm2020/menubar/menubar-item.mjs +4 -4
  106. package/esm2020/menubar/menubar-module.mjs +5 -5
  107. package/esm2020/menubar/menubar.mjs +5 -5
  108. package/esm2020/popover-edit/lens-directives.mjs +10 -10
  109. package/esm2020/popover-edit/popover-edit-module.mjs +5 -5
  110. package/esm2020/popover-edit/table-directives.mjs +13 -13
  111. package/esm2020/selection/row-selection.mjs +4 -4
  112. package/esm2020/selection/select-all.mjs +4 -4
  113. package/esm2020/selection/selection-column.mjs +5 -5
  114. package/esm2020/selection/selection-module.mjs +5 -5
  115. package/esm2020/selection/selection-toggle.mjs +4 -4
  116. package/esm2020/selection/selection.mjs +4 -4
  117. package/esm2020/version.mjs +1 -1
  118. package/fesm2015/column-resize.mjs +36 -36
  119. package/fesm2015/column-resize.mjs.map +1 -1
  120. package/fesm2015/material-experimental.mjs +1 -1
  121. package/fesm2015/material-experimental.mjs.map +1 -1
  122. package/fesm2015/mdc-autocomplete.mjs +13 -13
  123. package/fesm2015/mdc-autocomplete.mjs.map +1 -1
  124. package/fesm2015/mdc-button.mjs +42 -42
  125. package/fesm2015/mdc-button.mjs.map +1 -1
  126. package/fesm2015/mdc-card.mjs +46 -46
  127. package/fesm2015/mdc-card.mjs.map +1 -1
  128. package/fesm2015/mdc-checkbox.mjs +34 -287
  129. package/fesm2015/mdc-checkbox.mjs.map +1 -1
  130. package/fesm2015/mdc-chips.mjs +529 -785
  131. package/fesm2015/mdc-chips.mjs.map +1 -1
  132. package/fesm2015/mdc-core.mjs +10 -10
  133. package/fesm2015/mdc-core.mjs.map +1 -1
  134. package/fesm2015/mdc-dialog.mjs +22 -22
  135. package/fesm2015/mdc-dialog.mjs.map +1 -1
  136. package/fesm2015/mdc-form-field.mjs +118 -173
  137. package/fesm2015/mdc-form-field.mjs.map +1 -1
  138. package/fesm2015/mdc-input.mjs +7 -7
  139. package/fesm2015/mdc-input.mjs.map +1 -1
  140. package/fesm2015/mdc-list.mjs +209 -395
  141. package/fesm2015/mdc-list.mjs.map +1 -1
  142. package/fesm2015/mdc-menu.mjs +16 -16
  143. package/fesm2015/mdc-menu.mjs.map +1 -1
  144. package/fesm2015/mdc-paginator.mjs +7 -7
  145. package/fesm2015/mdc-paginator.mjs.map +1 -1
  146. package/fesm2015/mdc-progress-bar.mjs +41 -105
  147. package/fesm2015/mdc-progress-bar.mjs.map +1 -1
  148. package/fesm2015/mdc-progress-spinner.mjs +16 -63
  149. package/fesm2015/mdc-progress-spinner.mjs.map +1 -1
  150. package/fesm2015/mdc-radio.mjs +13 -47
  151. package/fesm2015/mdc-radio.mjs.map +1 -1
  152. package/fesm2015/mdc-select.mjs +10 -10
  153. package/fesm2015/mdc-select.mjs.map +1 -1
  154. package/fesm2015/mdc-slide-toggle.mjs +20 -184
  155. package/fesm2015/mdc-slide-toggle.mjs.map +1 -1
  156. package/fesm2015/mdc-slider.mjs +16 -16
  157. package/fesm2015/mdc-slider.mjs.map +1 -1
  158. package/fesm2015/mdc-snack-bar.mjs +23 -23
  159. package/fesm2015/mdc-snack-bar.mjs.map +1 -1
  160. package/fesm2015/mdc-table.mjs +57 -57
  161. package/fesm2015/mdc-table.mjs.map +1 -1
  162. package/fesm2015/mdc-tabs.mjs +140 -192
  163. package/fesm2015/mdc-tabs.mjs.map +1 -1
  164. package/fesm2015/mdc-tooltip.mjs +11 -11
  165. package/fesm2015/mdc-tooltip.mjs.map +1 -1
  166. package/fesm2015/menubar.mjs +10 -10
  167. package/fesm2015/menubar.mjs.map +1 -1
  168. package/fesm2015/popover-edit.mjs +25 -25
  169. package/fesm2015/popover-edit.mjs.map +1 -1
  170. package/fesm2015/selection.mjs +20 -20
  171. package/fesm2015/selection.mjs.map +1 -1
  172. package/fesm2020/column-resize.mjs +36 -36
  173. package/fesm2020/column-resize.mjs.map +1 -1
  174. package/fesm2020/material-experimental.mjs +1 -1
  175. package/fesm2020/material-experimental.mjs.map +1 -1
  176. package/fesm2020/mdc-autocomplete.mjs +13 -13
  177. package/fesm2020/mdc-autocomplete.mjs.map +1 -1
  178. package/fesm2020/mdc-button.mjs +42 -42
  179. package/fesm2020/mdc-button.mjs.map +1 -1
  180. package/fesm2020/mdc-card.mjs +46 -46
  181. package/fesm2020/mdc-card.mjs.map +1 -1
  182. package/fesm2020/mdc-checkbox.mjs +34 -287
  183. package/fesm2020/mdc-checkbox.mjs.map +1 -1
  184. package/fesm2020/mdc-chips.mjs +442 -701
  185. package/fesm2020/mdc-chips.mjs.map +1 -1
  186. package/fesm2020/mdc-core.mjs +10 -10
  187. package/fesm2020/mdc-core.mjs.map +1 -1
  188. package/fesm2020/mdc-dialog.mjs +22 -22
  189. package/fesm2020/mdc-dialog.mjs.map +1 -1
  190. package/fesm2020/mdc-form-field.mjs +110 -172
  191. package/fesm2020/mdc-form-field.mjs.map +1 -1
  192. package/fesm2020/mdc-input.mjs +7 -7
  193. package/fesm2020/mdc-input.mjs.map +1 -1
  194. package/fesm2020/mdc-list.mjs +208 -384
  195. package/fesm2020/mdc-list.mjs.map +1 -1
  196. package/fesm2020/mdc-menu.mjs +16 -16
  197. package/fesm2020/mdc-menu.mjs.map +1 -1
  198. package/fesm2020/mdc-paginator.mjs +7 -7
  199. package/fesm2020/mdc-paginator.mjs.map +1 -1
  200. package/fesm2020/mdc-progress-bar.mjs +41 -104
  201. package/fesm2020/mdc-progress-bar.mjs.map +1 -1
  202. package/fesm2020/mdc-progress-spinner.mjs +16 -63
  203. package/fesm2020/mdc-progress-spinner.mjs.map +1 -1
  204. package/fesm2020/mdc-radio.mjs +13 -47
  205. package/fesm2020/mdc-radio.mjs.map +1 -1
  206. package/fesm2020/mdc-select.mjs +10 -10
  207. package/fesm2020/mdc-select.mjs.map +1 -1
  208. package/fesm2020/mdc-slide-toggle.mjs +20 -183
  209. package/fesm2020/mdc-slide-toggle.mjs.map +1 -1
  210. package/fesm2020/mdc-slider.mjs +16 -16
  211. package/fesm2020/mdc-slider.mjs.map +1 -1
  212. package/fesm2020/mdc-snack-bar.mjs +23 -23
  213. package/fesm2020/mdc-snack-bar.mjs.map +1 -1
  214. package/fesm2020/mdc-table.mjs +57 -57
  215. package/fesm2020/mdc-table.mjs.map +1 -1
  216. package/fesm2020/mdc-tabs.mjs +138 -190
  217. package/fesm2020/mdc-tabs.mjs.map +1 -1
  218. package/fesm2020/mdc-tooltip.mjs +11 -11
  219. package/fesm2020/mdc-tooltip.mjs.map +1 -1
  220. package/fesm2020/menubar.mjs +10 -10
  221. package/fesm2020/menubar.mjs.map +1 -1
  222. package/fesm2020/popover-edit.mjs +25 -25
  223. package/fesm2020/popover-edit.mjs.map +1 -1
  224. package/fesm2020/selection.mjs +20 -20
  225. package/fesm2020/selection.mjs.map +1 -1
  226. package/mdc-checkbox/_checkbox-private.scss +10 -3
  227. package/mdc-checkbox/_checkbox-theme.scss +3 -3
  228. package/mdc-checkbox/index.d.ts +17 -138
  229. package/mdc-chips/index.d.ts +102 -162
  230. package/mdc-form-field/index.d.ts +12 -20
  231. package/mdc-list/_list-option-theme.scss +2 -2
  232. package/mdc-list/_list-theme.scss +3 -3
  233. package/mdc-list/index.d.ts +42 -66
  234. package/mdc-progress-bar/index.d.ts +14 -17
  235. package/mdc-progress-spinner/index.d.ts +5 -18
  236. package/mdc-radio/_radio-theme.scss +8 -2
  237. package/mdc-radio/index.d.ts +1 -17
  238. package/mdc-slide-toggle/index.d.ts +12 -73
  239. package/mdc-tabs/index.d.ts +14 -62
  240. package/mdc-theming/prebuilt/deeppurple-amber.css +1 -1
  241. package/mdc-theming/prebuilt/indigo-pink.css +1 -1
  242. package/mdc-theming/prebuilt/pink-bluegrey.css +1 -1
  243. package/mdc-theming/prebuilt/purple-green.css +1 -1
  244. package/package.json +55 -55
  245. package/esm2020/mdc-chips/chip-default-options.mjs +0 -11
  246. package/esm2020/mdc-chips/emit-event.mjs +0 -27
  247. package/esm2020/mdc-list/interactive-list-base.mjs +0 -196
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/material-experimental",
3
- "version": "14.0.0-rc.0",
3
+ "version": "14.0.0",
4
4
  "description": "Experimental components for Angular Material",
5
5
  "repository": {
6
6
  "type": "git",
@@ -425,63 +425,63 @@
425
425
  }
426
426
  },
427
427
  "peerDependencies": {
428
- "@angular/animations": "^14.0.0-0 || ^15.0.0",
429
- "@angular/cdk": "14.0.0-rc.0",
430
- "@angular/core": "^14.0.0-0 || ^15.0.0",
431
- "@angular/common": "^14.0.0-0 || ^15.0.0",
432
- "@angular/forms": "^14.0.0-0 || ^15.0.0",
433
- "@angular/platform-browser": "^14.0.0-0 || ^15.0.0",
434
- "@angular/material": "14.0.0-rc.0"
428
+ "@angular/animations": "^14.0.0 || ^15.0.0",
429
+ "@angular/cdk": "14.0.0",
430
+ "@angular/core": "^14.0.0 || ^15.0.0",
431
+ "@angular/common": "^14.0.0 || ^15.0.0",
432
+ "@angular/forms": "^14.0.0 || ^15.0.0",
433
+ "@angular/platform-browser": "^14.0.0 || ^15.0.0",
434
+ "@angular/material": "14.0.0"
435
435
  },
436
436
  "dependencies": {
437
437
  "tslib": "^2.3.0",
438
- "@material/animation": "14.0.0-canary.9736ddce9.0",
439
- "@material/auto-init": "14.0.0-canary.9736ddce9.0",
440
- "@material/banner": "14.0.0-canary.9736ddce9.0",
441
- "@material/base": "14.0.0-canary.9736ddce9.0",
442
- "@material/button": "14.0.0-canary.9736ddce9.0",
443
- "@material/card": "14.0.0-canary.9736ddce9.0",
444
- "@material/checkbox": "14.0.0-canary.9736ddce9.0",
445
- "@material/chips": "14.0.0-canary.9736ddce9.0",
446
- "@material/circular-progress": "14.0.0-canary.9736ddce9.0",
447
- "@material/data-table": "14.0.0-canary.9736ddce9.0",
448
- "@material/density": "14.0.0-canary.9736ddce9.0",
449
- "@material/dialog": "14.0.0-canary.9736ddce9.0",
450
- "@material/dom": "14.0.0-canary.9736ddce9.0",
451
- "@material/drawer": "14.0.0-canary.9736ddce9.0",
452
- "@material/elevation": "14.0.0-canary.9736ddce9.0",
453
- "@material/fab": "14.0.0-canary.9736ddce9.0",
454
- "@material/feature-targeting": "14.0.0-canary.9736ddce9.0",
455
- "@material/floating-label": "14.0.0-canary.9736ddce9.0",
456
- "@material/form-field": "14.0.0-canary.9736ddce9.0",
457
- "@material/icon-button": "14.0.0-canary.9736ddce9.0",
458
- "@material/image-list": "14.0.0-canary.9736ddce9.0",
459
- "@material/layout-grid": "14.0.0-canary.9736ddce9.0",
460
- "@material/line-ripple": "14.0.0-canary.9736ddce9.0",
461
- "@material/linear-progress": "14.0.0-canary.9736ddce9.0",
462
- "@material/list": "14.0.0-canary.9736ddce9.0",
463
- "@material/menu": "14.0.0-canary.9736ddce9.0",
464
- "@material/menu-surface": "14.0.0-canary.9736ddce9.0",
465
- "@material/notched-outline": "14.0.0-canary.9736ddce9.0",
466
- "@material/radio": "14.0.0-canary.9736ddce9.0",
467
- "@material/ripple": "14.0.0-canary.9736ddce9.0",
468
- "@material/rtl": "14.0.0-canary.9736ddce9.0",
469
- "@material/segmented-button": "14.0.0-canary.9736ddce9.0",
470
- "@material/select": "14.0.0-canary.9736ddce9.0",
471
- "@material/shape": "14.0.0-canary.9736ddce9.0",
472
- "@material/slider": "14.0.0-canary.9736ddce9.0",
473
- "@material/snackbar": "14.0.0-canary.9736ddce9.0",
474
- "@material/switch": "14.0.0-canary.9736ddce9.0",
475
- "@material/tab": "14.0.0-canary.9736ddce9.0",
476
- "@material/tab-bar": "14.0.0-canary.9736ddce9.0",
477
- "@material/tab-indicator": "14.0.0-canary.9736ddce9.0",
478
- "@material/tab-scroller": "14.0.0-canary.9736ddce9.0",
479
- "@material/textfield": "14.0.0-canary.9736ddce9.0",
480
- "@material/theme": "14.0.0-canary.9736ddce9.0",
481
- "@material/tooltip": "14.0.0-canary.9736ddce9.0",
482
- "@material/top-app-bar": "14.0.0-canary.9736ddce9.0",
483
- "@material/touch-target": "14.0.0-canary.9736ddce9.0",
484
- "@material/typography": "14.0.0-canary.9736ddce9.0"
438
+ "@material/animation": "15.0.0-canary.5b40eb988.0",
439
+ "@material/auto-init": "15.0.0-canary.5b40eb988.0",
440
+ "@material/banner": "15.0.0-canary.5b40eb988.0",
441
+ "@material/base": "15.0.0-canary.5b40eb988.0",
442
+ "@material/button": "15.0.0-canary.5b40eb988.0",
443
+ "@material/card": "15.0.0-canary.5b40eb988.0",
444
+ "@material/checkbox": "15.0.0-canary.5b40eb988.0",
445
+ "@material/chips": "15.0.0-canary.5b40eb988.0",
446
+ "@material/circular-progress": "15.0.0-canary.5b40eb988.0",
447
+ "@material/data-table": "15.0.0-canary.5b40eb988.0",
448
+ "@material/density": "15.0.0-canary.5b40eb988.0",
449
+ "@material/dialog": "15.0.0-canary.5b40eb988.0",
450
+ "@material/dom": "15.0.0-canary.5b40eb988.0",
451
+ "@material/drawer": "15.0.0-canary.5b40eb988.0",
452
+ "@material/elevation": "15.0.0-canary.5b40eb988.0",
453
+ "@material/fab": "15.0.0-canary.5b40eb988.0",
454
+ "@material/feature-targeting": "15.0.0-canary.5b40eb988.0",
455
+ "@material/floating-label": "15.0.0-canary.5b40eb988.0",
456
+ "@material/form-field": "15.0.0-canary.5b40eb988.0",
457
+ "@material/icon-button": "15.0.0-canary.5b40eb988.0",
458
+ "@material/image-list": "15.0.0-canary.5b40eb988.0",
459
+ "@material/layout-grid": "15.0.0-canary.5b40eb988.0",
460
+ "@material/line-ripple": "15.0.0-canary.5b40eb988.0",
461
+ "@material/linear-progress": "15.0.0-canary.5b40eb988.0",
462
+ "@material/list": "15.0.0-canary.5b40eb988.0",
463
+ "@material/menu": "15.0.0-canary.5b40eb988.0",
464
+ "@material/menu-surface": "15.0.0-canary.5b40eb988.0",
465
+ "@material/notched-outline": "15.0.0-canary.5b40eb988.0",
466
+ "@material/radio": "15.0.0-canary.5b40eb988.0",
467
+ "@material/ripple": "15.0.0-canary.5b40eb988.0",
468
+ "@material/rtl": "15.0.0-canary.5b40eb988.0",
469
+ "@material/segmented-button": "15.0.0-canary.5b40eb988.0",
470
+ "@material/select": "15.0.0-canary.5b40eb988.0",
471
+ "@material/shape": "15.0.0-canary.5b40eb988.0",
472
+ "@material/slider": "15.0.0-canary.5b40eb988.0",
473
+ "@material/snackbar": "15.0.0-canary.5b40eb988.0",
474
+ "@material/switch": "15.0.0-canary.5b40eb988.0",
475
+ "@material/tab": "15.0.0-canary.5b40eb988.0",
476
+ "@material/tab-bar": "15.0.0-canary.5b40eb988.0",
477
+ "@material/tab-indicator": "15.0.0-canary.5b40eb988.0",
478
+ "@material/tab-scroller": "15.0.0-canary.5b40eb988.0",
479
+ "@material/textfield": "15.0.0-canary.5b40eb988.0",
480
+ "@material/theme": "15.0.0-canary.5b40eb988.0",
481
+ "@material/tooltip": "15.0.0-canary.5b40eb988.0",
482
+ "@material/top-app-bar": "15.0.0-canary.5b40eb988.0",
483
+ "@material/touch-target": "15.0.0-canary.5b40eb988.0",
484
+ "@material/typography": "15.0.0-canary.5b40eb988.0"
485
485
  },
486
486
  "sideEffects": false,
487
487
  "fesm2020": "./fesm2020/material-experimental.mjs",
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { InjectionToken } from '@angular/core';
9
- /** Injection token to be used to override the default options for the chips module. */
10
- export const MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken('mat-chips-default-options');
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1kZWZhdWx0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtZXhwZXJpbWVudGFsL21kYy1jaGlwcy9jaGlwLWRlZmF1bHQtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUTdDLHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FDekQsMkJBQTJCLENBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBEZWZhdWx0IG9wdGlvbnMsIGZvciB0aGUgY2hpcHMgbW9kdWxlLCB0aGF0IGNhbiBiZSBvdmVycmlkZGVuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRDaGlwc0RlZmF1bHRPcHRpb25zIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGtleSBjb2RlcyB0aGF0IHdpbGwgdHJpZ2dlciBhIGNoaXBFbmQgZXZlbnQuICovXG4gIHNlcGFyYXRvcktleUNvZGVzOiByZWFkb25seSBudW1iZXJbXSB8IFJlYWRvbmx5U2V0PG51bWJlcj47XG59XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdG8gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgY2hpcHMgbW9kdWxlLiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9DSElQU19ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0Q2hpcHNEZWZhdWx0T3B0aW9ucz4oXG4gICdtYXQtY2hpcHMtZGVmYXVsdC1vcHRpb25zJyxcbik7XG4iXX0=
@@ -1,27 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Emits a custom event from an element.
10
- * @param element Element from which to emit the event.
11
- * @param _document Document that the element is placed in.
12
- * @param eventName Name of the event.
13
- * @param data Data attached to the event.
14
- * @param shouldBubble Whether the event should bubble.
15
- */
16
- export function emitCustomEvent(element, _document, eventName, data, shouldBubble) {
17
- let event;
18
- if (typeof CustomEvent === 'function') {
19
- event = new CustomEvent(eventName, { bubbles: shouldBubble, detail: data });
20
- }
21
- else {
22
- event = _document.createEvent('CustomEvent');
23
- event.initCustomEvent(eventName, shouldBubble, false, data);
24
- }
25
- element.dispatchEvent(event);
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNoaXBzL2VtaXQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQW9CLEVBQ3BCLFNBQW1CLEVBQ25CLFNBQWlCLEVBQ2pCLElBQU8sRUFDUCxZQUFxQjtJQUVyQixJQUFJLEtBQXFCLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsS0FBSyxVQUFVLEVBQUU7UUFDckMsS0FBSyxHQUFHLElBQUksV0FBVyxDQUFJLFNBQVMsRUFBRSxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7S0FDOUU7U0FBTTtRQUNMLEtBQUssR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0Q7SUFFRCxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBFbWl0cyBhIGN1c3RvbSBldmVudCBmcm9tIGFuIGVsZW1lbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IGZyb20gd2hpY2ggdG8gZW1pdCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gX2RvY3VtZW50IERvY3VtZW50IHRoYXQgdGhlIGVsZW1lbnQgaXMgcGxhY2VkIGluLlxuICogQHBhcmFtIGV2ZW50TmFtZSBOYW1lIG9mIHRoZSBldmVudC5cbiAqIEBwYXJhbSBkYXRhIERhdGEgYXR0YWNoZWQgdG8gdGhlIGV2ZW50LlxuICogQHBhcmFtIHNob3VsZEJ1YmJsZSBXaGV0aGVyIHRoZSBldmVudCBzaG91bGQgYnViYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdEN1c3RvbUV2ZW50PFQ+KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgZXZlbnROYW1lOiBzdHJpbmcsXG4gIGRhdGE6IFQsXG4gIHNob3VsZEJ1YmJsZTogYm9vbGVhbixcbik6IHZvaWQge1xuICBsZXQgZXZlbnQ6IEN1c3RvbUV2ZW50PFQ+O1xuICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQ8VD4oZXZlbnROYW1lLCB7YnViYmxlczogc2hvdWxkQnViYmxlLCBkZXRhaWw6IGRhdGF9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IF9kb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoZXZlbnROYW1lLCBzaG91bGRCdWJibGUsIGZhbHNlLCBkYXRhKTtcbiAgfVxuXG4gIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG4iXX0=
@@ -1,196 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { DOCUMENT } from '@angular/common';
9
- import { Directive, ElementRef, Inject } from '@angular/core';
10
- import { MDCListFoundation } from '@material/list';
11
- import { Subscription } from 'rxjs';
12
- import { startWith } from 'rxjs/operators';
13
- import { MatListBase } from './list-base';
14
- import * as i0 from "@angular/core";
15
- /** @docs-private */
16
- export class MatInteractiveListBase extends MatListBase {
17
- constructor(_element, document) {
18
- super();
19
- this._element = _element;
20
- this._itemsArr = [];
21
- this._subscriptions = new Subscription();
22
- this._document = document;
23
- this._isNonInteractive = false;
24
- }
25
- _handleKeydown(event) {
26
- const index = this._indexForElement(event.target);
27
- this._foundation.handleKeydown(event, this._elementAtIndex(index) === event.target, index);
28
- }
29
- _handleClick(event) {
30
- // The `isCheckboxAlreadyUpdatedInAdapter` parameter can always be `false` as it only has an
31
- // effect if the list is recognized as checkbox selection list. For such lists, we would
32
- // always want to toggle the checkbox on list item click. MDC added this parameter so that
33
- // they can avoid dispatching a fake `change` event when the checkbox is directly clicked
34
- // for the list item. We don't need this as we do not have an underlying native checkbox
35
- // that is reachable by users through interaction.
36
- // https://github.com/material-components/material-components-web/blob/08ca4d0ec5f359bc3a20bd2a302fa6b733b5e135/packages/mdc-list/component.ts#L308-L310
37
- this._foundation.handleClick(this._indexForElement(event.target),
38
- /* isCheckboxAlreadyUpdatedInAdapter */ false, event);
39
- }
40
- _handleFocusin(event) {
41
- const itemIndex = this._indexForElement(event.target);
42
- const tabIndex = this._itemsArr[itemIndex]?._hostElement.tabIndex;
43
- // If the newly focused item is not the designated item that should have received focus
44
- // first through keyboard interaction, the tabindex of the previously designated list item
45
- // needs to be cleared, so that only one list item is reachable through tab key at any time.
46
- // MDC sets a tabindex for the newly focused item, so we do not need to set a tabindex for it.
47
- // Workaround for: https://github.com/material-components/material-components-web/issues/6363.
48
- if (tabIndex === undefined || tabIndex === -1) {
49
- this._clearTabindexForAllItems();
50
- }
51
- this._foundation.handleFocusIn(itemIndex);
52
- }
53
- _handleFocusout(event) {
54
- this._foundation.handleFocusOut(this._indexForElement(event.target));
55
- }
56
- _initWithAdapter(adapter) {
57
- this._adapter = adapter;
58
- this._foundation = new MDCListFoundation(adapter);
59
- }
60
- ngAfterViewInit() {
61
- if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._foundation) {
62
- throw Error('MDC list foundation not initialized for Angular Material list.');
63
- }
64
- this._foundation.init();
65
- this._watchListItems();
66
- // Enable typeahead and focus wrapping for interactive lists.
67
- this._foundation.setHasTypeahead(true);
68
- this._foundation.setWrapFocus(true);
69
- }
70
- ngOnDestroy() {
71
- this._foundation.destroy();
72
- this._subscriptions.unsubscribe();
73
- }
74
- _watchListItems() {
75
- this._subscriptions.add(this._items.changes.pipe(startWith(null)).subscribe(() => {
76
- this._itemsArr = this._items.toArray();
77
- // Whenever the items change, the foundation needs to be notified through the `layout`
78
- // method. It caches items for the typeahead and detects the list type based on the items.
79
- this._foundation.layout();
80
- // The list items changed, so we reset the tabindex for all items and
81
- // designate one list item that will be reachable through tab.
82
- this._resetTabindexToFirstSelectedOrFocusedItem();
83
- }));
84
- }
85
- /**
86
- * Clears the tabindex of all items so that no items are reachable through tab key.
87
- * MDC intends to always have only one tabbable item that will receive focus first.
88
- * This first item is selected by MDC automatically on blur or by manually invoking
89
- * the `setTabindexToFirstSelectedOrFocusedItem` method.
90
- */
91
- _clearTabindexForAllItems() {
92
- for (let items of this._itemsArr) {
93
- items._hostElement.setAttribute('tabindex', '-1');
94
- }
95
- }
96
- /**
97
- * Resets tabindex for all options and sets tabindex for the first selected option or
98
- * previously focused item so that an item can be reached when users tab into the list.
99
- */
100
- _resetTabindexToFirstSelectedOrFocusedItem() {
101
- this._clearTabindexForAllItems();
102
- // MDC does not expose the method for setting the tabindex to the first selected
103
- // or previously focused item. We can still access the method as private class
104
- // members are accessible in the transpiled JavaScript. Tracked upstream with:
105
- // TODO: https://github.com/material-components/material-components-web/issues/6375
106
- this._foundation.setTabindexToFirstSelectedOrFocusedItem();
107
- }
108
- _elementAtIndex(index) {
109
- return this._itemsArr[index]?._hostElement;
110
- }
111
- _indexForElement(element) {
112
- return element ? this._itemsArr.findIndex(i => i._hostElement.contains(element)) : -1;
113
- }
114
- }
115
- MatInteractiveListBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: MatInteractiveListBase, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
116
- MatInteractiveListBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0-next.16", type: MatInteractiveListBase, host: { listeners: { "keydown": "_handleKeydown($event)", "click": "_handleClick($event)", "focusin": "_handleFocusin($event)", "focusout": "_handleFocusout($event)" } }, usesInheritance: true, ngImport: i0 });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.16", ngImport: i0, type: MatInteractiveListBase, decorators: [{
118
- type: Directive,
119
- args: [{
120
- host: {
121
- '(keydown)': '_handleKeydown($event)',
122
- '(click)': '_handleClick($event)',
123
- '(focusin)': '_handleFocusin($event)',
124
- '(focusout)': '_handleFocusout($event)',
125
- },
126
- }]
127
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
128
- type: Inject,
129
- args: [DOCUMENT]
130
- }] }]; } });
131
- // TODO: replace with class once material-components-web/pull/6256 is available.
132
- /** Gets an instance of `MDcListAdapter` for the given interactive list. */
133
- export function getInteractiveListAdapter(list) {
134
- return {
135
- getListItemCount() {
136
- return list._items.length;
137
- },
138
- listItemAtIndexHasClass(index, className) {
139
- const element = list._elementAtIndex(index);
140
- return element ? element.classList.contains(className) : false;
141
- },
142
- addClassForElementIndex(index, className) {
143
- list._elementAtIndex(index)?.classList.add(className);
144
- },
145
- removeClassForElementIndex(index, className) {
146
- list._elementAtIndex(index)?.classList.remove(className);
147
- },
148
- getAttributeForElementIndex(index, attr) {
149
- const element = list._elementAtIndex(index);
150
- return element ? element.getAttribute(attr) : null;
151
- },
152
- setAttributeForElementIndex(index, attr, value) {
153
- list._elementAtIndex(index)?.setAttribute(attr, value);
154
- },
155
- getFocusedElementIndex() {
156
- return list._indexForElement(list._document?.activeElement);
157
- },
158
- isFocusInsideList() {
159
- return list._element.nativeElement.contains(list._document?.activeElement);
160
- },
161
- isRootFocused() {
162
- return list._element.nativeElement === list._document?.activeElement;
163
- },
164
- focusItemAtIndex(index) {
165
- list._elementAtIndex(index)?.focus();
166
- },
167
- // Gets the text for a list item for the typeahead
168
- getPrimaryTextAtIndex(index) {
169
- return list._itemsArr[index]._getItemLabel();
170
- },
171
- // MDC uses this method to disable focusable children of list items. However, we believe that
172
- // this is not an accessible pattern and should be avoided, therefore we intentionally do not
173
- // implement this method. In addition, implementing this would require violating Angular
174
- // Material's general principle of not having components modify DOM elements they do not own.
175
- // A user who feels they really need this feature can simply listen to the `(focus)` and
176
- // `(blur)` events on the list item and enable/disable focus on the children themselves as
177
- // appropriate.
178
- setTabIndexForListItemChildren() { },
179
- // The following methods have a dummy implementation in the base class because they are only
180
- // applicable to certain types of lists. They should be implemented for the concrete classes
181
- // where they are applicable.
182
- hasCheckboxAtIndex() {
183
- return false;
184
- },
185
- hasRadioAtIndex(index) {
186
- return false;
187
- },
188
- setCheckedCheckboxOrRadioAtIndex(index, checked) { },
189
- isCheckboxCheckedAtIndex(index) {
190
- return false;
191
- },
192
- notifySelectionChange() { },
193
- notifyAction() { },
194
- };
195
- }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtbGlzdC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtbGlzdC9pbnRlcmFjdGl2ZS1saXN0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFrQixNQUFNLGFBQWEsQ0FBQzs7QUFVekQsb0JBQW9CO0FBQ3BCLE1BQU0sT0FBZ0Isc0JBQ3BCLFNBQVEsV0FBVztJQXFEbkIsWUFBNkIsUUFBaUMsRUFBb0IsUUFBYTtRQUM3RixLQUFLLEVBQUUsQ0FBQztRQURtQixhQUFRLEdBQVIsUUFBUSxDQUF5QjtRQVI5RCxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBTVosbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQXRERCxjQUFjLENBQUMsS0FBb0I7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMs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QyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELGFBQWE7WUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxnQkFBZ0IsQ0FBQyxLQUFhO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUNELGtEQUFrRDtRQUNsRCxxQkFBcUIsQ0FBQyxLQUFhO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsNkZBQTZGO1FBQzdGLDZGQUE2RjtRQUM3Rix3RkFBd0Y7UUFDeEYsNkZBQTZGO1FBQzdGLHdGQUF3RjtRQUN4RiwwRkFBMEY7UUFDMUYsZUFBZTtRQUNmLDhCQUE4QixLQUFJLENBQUM7UUFFbkMsNEZBQTRGO1FBQzVGLDRGQUE0RjtRQUM1Riw2QkFBNkI7UUFDN0Isa0JBQWtCO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELGVBQWUsQ0FBQyxLQUFhO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELGdDQUFnQyxDQUFDLEtBQWEsRUFBRSxPQUFnQixJQUFHLENBQUM7UUFDcEUsd0JBQXdCLENBQUMsS0FBYTtZQUNwQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxxQkFBcUIsS0FBSSxDQUFDO1FBQzFCLFlBQVksS0FBSSxDQUFDO0tBQ2xCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01EQ0xpc3RBZGFwdGVyLCBNRENMaXN0Rm91bmRhdGlvbn0gZnJvbSAnQG1hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0TGlzdEJhc2UsIE1hdExpc3RJdGVtQmFzZX0gZnJvbSAnLi9saXN0LWJhc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgaG9zdDoge1xuICAgICcoa2V5ZG93biknOiAnX2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgJyhjbGljayknOiAnX2hhbmRsZUNsaWNrKCRldmVudCknLFxuICAgICcoZm9jdXNpbiknOiAnX2hhbmRsZUZvY3VzaW4oJGV2ZW50KScsXG4gICAgJyhmb2N1c291dCknOiAnX2hhbmRsZUZvY3Vzb3V0KCRldmVudCknLFxuICB9LFxufSlcbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWF0SW50ZXJhY3RpdmVMaXN0QmFzZTxUIGV4dGVuZHMgTWF0TGlzdEl0ZW1CYXNlPlxuICBleHRlbmRzIE1hdExpc3RCYXNlXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9pbmRleEZvckVsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICB0aGlzLl9mb3VuZGF0aW9uLmhhbmRsZUtleWRvd24oZXZlbnQsIHRoaXMuX2VsZW1lbnRBdEluZGV4KGluZGV4KSA9PT0gZXZlbnQudGFyZ2V0LCBpbmRleCk7XG4gIH1cblxuICBfaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAvLyBUaGUgYGlzQ2hlY2tib3hBbHJlYWR5VXBkYXRlZEluQWRhcHRlcmAgcGFyYW1ldGVyIGNhbiBhbHdheXMgYmUgYGZhbHNlYCBhcyBpdCBvbmx5IGhhcyBhblxuICAgIC8vIGVmZmVjdCBpZiB0aGUgbGlzdCBpcyByZWNvZ25pemVkIGFzIGNoZWNrYm94IHNlbGVjdGlvbiBsaXN0LiBGb3Igc3VjaCBsaXN0cywgd2Ugd291bGRcbiAgICAvLyBhbHdheXMgd2FudCB0byB0b2dnbGUgdGhlIGNoZWNrYm94IG9uIGxpc3QgaXRlbSBjbGljay4gTURDIGFkZGVkIHRoaXMgcGFyYW1ldGVyIHNvIHRoYXRcbiAgICAvLyB0aGV5IGNhbiBhdm9pZCBkaXNwYXRjaGluZyBhIGZha2UgYGNoYW5nZWAgZXZlbnQgd2hlbiB0aGUgY2hlY2tib3ggaXMgZGlyZWN0bHkgY2xpY2tlZFxuICAgIC8vIGZvciB0aGUgbGlzdCBpdGVtLiBXZSBkb24ndCBuZWVkIHRoaXMgYXMgd2UgZG8gbm90IGhhdmUgYW4gdW5kZXJseWluZyBuYXRpdmUgY2hlY2tib3hcbiAgICAvLyB0aGF0IGlzIHJlYWNoYWJsZSBieSB1c2VycyB0aHJvdWdoIGludGVyYWN0aW9uLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRlcmlhbC1jb21wb25lbnRzL21hdGVyaWFsLWNvbXBvbmVudHMtd2ViL2Jsb2IvMDhjYTRkMGVjNWYzNTliYzNhMjBiZDJhMzAyZmE2YjczM2I1ZTEzNS9wYWNrYWdlcy9tZGMtbGlzdC9jb21wb25lbnQudHMjTDMwOC1MMzEwXG4gICAgdGhpcy5fZm91bmRhdGlvbi5oYW5kbGVDbGljayhcbiAgICAgIHRoaXMuX2luZGV4Rm9yRWxlbWVudChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLFxuICAgICAgLyogaXNDaGVja2JveEFscmVhZHlVcGRhdGVkSW5BZGFwdGVyICovIGZhbHNlLFxuICAgICAgZXZlbnQsXG4gICAgKTtcbiAgfVxuXG4gIF9oYW5kbGVGb2N1c2luKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5faW5kZXhGb3JFbGVtZW50KGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLl9pdGVtc0FycltpdGVtSW5kZXhdPy5faG9zdEVsZW1lbnQudGFiSW5kZXg7XG5cbiAgICAvLyBJZiB0aGUgbmV3bHkgZm9jdXNlZCBpdGVtIGlzIG5vdCB0aGUgZGVzaWduYXRlZCBpdGVtIHRoYXQgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgZm9jdXNcbiAgICAvLyBmaXJzdCB0aHJvdWdoIGtleWJvYXJkIGludGVyYWN0aW9uLCB0aGUgdGFiaW5kZXggb2YgdGhlIHByZXZpb3VzbHkgZGVzaWduYXRlZCBsaXN0IGl0ZW1cbiAgICAvLyBuZWVkcyB0byBiZSBjbGVhcmVkLCBzbyB0aGF0IG9ubHkgb25lIGxpc3QgaXRlbSBpcyByZWFjaGFibGUgdGhyb3VnaCB0YWIga2V5IGF0IGFueSB0aW1lLlxuICAgIC8vIE1EQyBzZXRzIGEgdGFiaW5kZXggZm9yIHRoZSBuZXdseSBmb2N1c2VkIGl0ZW0sIHNvIHdlIGRvIG5vdCBuZWVkIHRvIHNldCBhIHRhYmluZGV4IGZvciBpdC5cbiAgICAvLyBXb3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvaXNzdWVzLzYzNjMuXG4gICAgaWYgKHRhYkluZGV4ID09PSB1bmRlZmluZWQgfHwgdGFiSW5kZXggPT09IC0xKSB7XG4gICAgICB0aGlzLl9jbGVhclRhYmluZGV4Rm9yQWxsSXRlbXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3VuZGF0aW9uLmhhbmRsZUZvY3VzSW4oaXRlbUluZGV4KTtcbiAgfVxuXG4gIF9oYW5kbGVGb2N1c291dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIHRoaXMuX2ZvdW5kYXRpb24uaGFuZGxlRm9jdXNPdXQodGhpcy5faW5kZXhGb3JFbGVtZW50KGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpO1xuICB9XG5cbiAgLyoqIEl0ZW1zIGluIHRoZSBpbnRlcmFjdGl2ZSBsaXN0LiAqL1xuICBhYnN0cmFjdCBfaXRlbXM6IFF1ZXJ5TGlzdDxUPjtcbiAgX2l0ZW1zQXJyOiBUW10gPSBbXTtcbiAgX2RvY3VtZW50OiBEb2N1bWVudDtcblxuICBwcm90ZWN0ZWQgX2ZvdW5kYXRpb246IE1EQ0xpc3RGb3VuZGF0aW9uO1xuICBwcm90ZWN0ZWQgX2FkYXB0ZXI6IE1EQ0xpc3RBZGFwdGVyO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgdGhpcy5faXNOb25JbnRlcmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pbml0V2l0aEFkYXB0ZXIoYWRhcHRlcjogTURDTGlzdEFkYXB0ZXIpIHtcbiAgICB0aGlzLl9hZGFwdGVyID0gYWRhcHRlcjtcbiAgICB0aGlzLl9mb3VuZGF0aW9uID0gbmV3IE1EQ0xpc3RGb3VuZGF0aW9uKGFkYXB0ZXIpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICgodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJiAhdGhpcy5fZm91bmRhdGlvbikge1xuICAgICAgdGhyb3cgRXJyb3IoJ01EQyBsaXN0IGZvdW5kYXRpb24gbm90IGluaXRpYWxpemVkIGZvciBBbmd1bGFyIE1hdGVyaWFsIGxpc3QuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZm91bmRhdGlvbi5pbml0KCk7XG4gICAgdGhpcy5fd2F0Y2hMaXN0SXRlbXMoKTtcblxuICAgIC8vIEVuYWJsZSB0eXBlYWhlYWQgYW5kIGZvY3VzIHdyYXBwaW5nIGZvciBpbnRlcmFjdGl2ZSBsaXN0cy5cbiAgICB0aGlzLl9mb3VuZGF0aW9uLnNldEhhc1R5cGVhaGVhZCh0cnVlKTtcbiAgICB0aGlzLl9mb3VuZGF0aW9uLnNldFdyYXBGb2N1cyh0cnVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvdW5kYXRpb24uZGVzdHJveSgpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfd2F0Y2hMaXN0SXRlbXMoKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pdGVtc0FyciA9IHRoaXMuX2l0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgLy8gV2hlbmV2ZXIgdGhlIGl0ZW1zIGNoYW5nZSwgdGhlIGZvdW5kYXRpb24gbmVlZHMgdG8gYmUgbm90aWZpZWQgdGhyb3VnaCB0aGUgYGxheW91dGBcbiAgICAgICAgLy8gbWV0aG9kLiBJdCBjYWNoZXMgaXRlbXMgZm9yIHRoZSB0eXBlYWhlYWQgYW5kIGRldGVjdHMgdGhlIGxpc3QgdHlwZSBiYXNlZCBvbiB0aGUgaXRlbXMuXG4gICAgICAgIHRoaXMuX2ZvdW5kYXRpb24ubGF5b3V0KCk7XG5cbiAgICAgICAgLy8gVGhlIGxpc3QgaXRlbXMgY2hhbmdlZCwgc28gd2UgcmVzZXQgdGhlIHRhYmluZGV4IGZvciBhbGwgaXRlbXMgYW5kXG4gICAgICAgIC8vIGRlc2lnbmF0ZSBvbmUgbGlzdCBpdGVtIHRoYXQgd2lsbCBiZSByZWFjaGFibGUgdGhyb3VnaCB0YWIuXG4gICAgICAgIHRoaXMuX3Jlc2V0VGFiaW5kZXhUb0ZpcnN0U2VsZWN0ZWRPckZvY3VzZWRJdGVtKCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgdGFiaW5kZXggb2YgYWxsIGl0ZW1zIHNvIHRoYXQgbm8gaXRlbXMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIHRhYiBrZXkuXG4gICAqIE1EQyBpbnRlbmRzIHRvIGFsd2F5cyBoYXZlIG9ubHkgb25lIHRhYmJhYmxlIGl0ZW0gdGhhdCB3aWxsIHJlY2VpdmUgZm9jdXMgZmlyc3QuXG4gICAqIFRoaXMgZmlyc3QgaXRlbSBpcyBzZWxlY3RlZCBieSBNREMgYXV0b21hdGljYWxseSBvbiBibHVyIG9yIGJ5IG1hbnVhbGx5IGludm9raW5nXG4gICAqIHRoZSBgc2V0VGFiaW5kZXhUb0ZpcnN0U2VsZWN0ZWRPckZvY3VzZWRJdGVtYCBtZXRob2QuXG4gICAqL1xuICBwcml2YXRlIF9jbGVhclRhYmluZGV4Rm9yQWxsSXRlbXMoKSB7XG4gICAgZm9yIChsZXQgaXRlbXMgb2YgdGhpcy5faXRlbXNBcnIpIHtcbiAgICAgIGl0ZW1zLl9ob3N0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0YWJpbmRleCBmb3IgYWxsIG9wdGlvbnMgYW5kIHNldHMgdGFiaW5kZXggZm9yIHRoZSBmaXJzdCBzZWxlY3RlZCBvcHRpb24gb3JcbiAgICogcHJldmlvdXNseSBmb2N1c2VkIGl0ZW0gc28gdGhhdCBhbiBpdGVtIGNhbiBiZSByZWFjaGVkIHdoZW4gdXNlcnMgdGFiIGludG8gdGhlIGxpc3QuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3Jlc2V0VGFiaW5kZXhUb0ZpcnN0U2VsZWN0ZWRPckZvY3VzZWRJdGVtKCkge1xuICAgIHRoaXMuX2NsZWFyVGFiaW5kZXhGb3JBbGxJdGVtcygpO1xuICAgIC8vIE1EQyBkb2VzIG5vdCBleHBvc2UgdGhlIG1ldGhvZCBmb3Igc2V0dGluZyB0aGUgdGFiaW5kZXggdG8gdGhlIGZpcnN0IHNlbGVjdGVkXG4gICAgLy8gb3IgcHJldmlvdXNseSBmb2N1c2VkIGl0ZW0uIFdlIGNhbiBzdGlsbCBhY2Nlc3MgdGhlIG1ldGhvZCBhcyBwcml2YXRlIGNsYXNzXG4gICAgLy8gbWVtYmVycyBhcmUgYWNjZXNzaWJsZSBpbiB0aGUgdHJhbnNwaWxlZCBKYXZhU2NyaXB0LiBUcmFja2VkIHVwc3RyZWFtIHdpdGg6XG4gICAgLy8gVE9ETzogaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvaXNzdWVzLzYzNzVcbiAgICAodGhpcy5fZm91bmRhdGlvbiBhcyBhbnkpLnNldFRhYmluZGV4VG9GaXJzdFNlbGVjdGVkT3JGb2N1c2VkSXRlbSgpO1xuICB9XG5cbiAgX2VsZW1lbnRBdEluZGV4KGluZGV4OiBudW1iZXIpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zQXJyW2luZGV4XT8uX2hvc3RFbGVtZW50O1xuICB9XG5cbiAgX2luZGV4Rm9yRWxlbWVudChlbGVtZW50OiBFbGVtZW50IHwgbnVsbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGVsZW1lbnQgPyB0aGlzLl9pdGVtc0Fyci5maW5kSW5kZXgoaSA9PiBpLl9ob3N0RWxlbWVudC5jb250YWlucyhlbGVtZW50KSkgOiAtMTtcbiAgfVxufVxuXG4vLyBUT0RPOiByZXBsYWNlIHdpdGggY2xhc3Mgb25jZSBtYXRlcmlhbC1jb21wb25lbnRzLXdlYi9wdWxsLzYyNTYgaXMgYXZhaWxhYmxlLlxuLyoqIEdldHMgYW4gaW5zdGFuY2Ugb2YgYE1EY0xpc3RBZGFwdGVyYCBmb3IgdGhlIGdpdmVuIGludGVyYWN0aXZlIGxpc3QuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJhY3RpdmVMaXN0QWRhcHRlcihcbiAgbGlzdDogTWF0SW50ZXJhY3RpdmVMaXN0QmFzZTxNYXRMaXN0SXRlbUJhc2U+LFxuKTogTURDTGlzdEFkYXB0ZXIge1xuICByZXR1cm4ge1xuICAgIGdldExpc3RJdGVtQ291bnQoKSB7XG4gICAgICByZXR1cm4gbGlzdC5faXRlbXMubGVuZ3RoO1xuICAgIH0sXG4gICAgbGlzdEl0ZW1BdEluZGV4SGFzQ2xhc3MoaW5kZXg6IG51bWJlciwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBsaXN0Ll9lbGVtZW50QXRJbmRleChpbmRleCk7XG4gICAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkgOiBmYWxzZTtcbiAgICB9LFxuICAgIGFkZENsYXNzRm9yRWxlbWVudEluZGV4KGluZGV4OiBudW1iZXIsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICBsaXN0Ll9lbGVtZW50QXRJbmRleChpbmRleCk/LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICB9LFxuICAgIHJlbW92ZUNsYXNzRm9yRWxlbWVudEluZGV4KGluZGV4OiBudW1iZXIsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICBsaXN0Ll9lbGVtZW50QXRJbmRleChpbmRleCk/LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICB9LFxuICAgIGdldEF0dHJpYnV0ZUZvckVsZW1lbnRJbmRleChpbmRleDogbnVtYmVyLCBhdHRyOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBsaXN0Ll9lbGVtZW50QXRJbmRleChpbmRleCk7XG4gICAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHIpIDogbnVsbDtcbiAgICB9LFxuICAgIHNldEF0dHJpYnV0ZUZvckVsZW1lbnRJbmRleChpbmRleDogbnVtYmVyLCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIGxpc3QuX2VsZW1lbnRBdEluZGV4KGluZGV4KT8uc2V0QXR0cmlidXRlKGF0dHIsIHZhbHVlKTtcbiAgICB9LFxuICAgIGdldEZvY3VzZWRFbGVtZW50SW5kZXgoKSB7XG4gICAgICByZXR1cm4gbGlzdC5faW5kZXhGb3JFbGVtZW50KGxpc3QuX2RvY3VtZW50Py5hY3RpdmVFbGVtZW50KTtcbiAgICB9LFxuICAgIGlzRm9jdXNJbnNpZGVMaXN0KCkge1xuICAgICAgcmV0dXJuIGxpc3QuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhsaXN0Ll9kb2N1bWVudD8uYWN0aXZlRWxlbWVudCk7XG4gICAgfSxcbiAgICBpc1Jvb3RGb2N1c2VkKCkge1xuICAgICAgcmV0dXJuIGxpc3QuX2VsZW1lbnQubmF0aXZlRWxlbWVudCA9PT0gbGlzdC5fZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfSxcbiAgICBmb2N1c0l0ZW1BdEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgIGxpc3QuX2VsZW1lbnRBdEluZGV4KGluZGV4KT8uZm9jdXMoKTtcbiAgICB9LFxuICAgIC8vIEdldHMgdGhlIHRleHQgZm9yIGEgbGlzdCBpdGVtIGZvciB0aGUgdHlwZWFoZWFkXG4gICAgZ2V0UHJpbWFyeVRleHRBdEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBsaXN0Ll9pdGVtc0FycltpbmRleF0uX2dldEl0ZW1MYWJlbCgpO1xuICAgIH0sXG5cbiAgICAvLyBNREMgdXNlcyB0aGlzIG1ldGhvZCB0byBkaXNhYmxlIGZvY3VzYWJsZSBjaGlsZHJlbiBvZiBsaXN0IGl0ZW1zLiBIb3dldmVyLCB3ZSBiZWxpZXZlIHRoYXRcbiAgICAvLyB0aGlzIGlzIG5vdCBhbiBhY2Nlc3NpYmxlIHBhdHRlcm4gYW5kIHNob3VsZCBiZSBhdm9pZGVkLCB0aGVyZWZvcmUgd2UgaW50ZW50aW9uYWxseSBkbyBub3RcbiAgICAvLyBpbXBsZW1lbnQgdGhpcyBtZXRob2QuIEluIGFkZGl0aW9uLCBpbXBsZW1lbnRpbmcgdGhpcyB3b3VsZCByZXF1aXJlIHZpb2xhdGluZyBBbmd1bGFyXG4gICAgLy8gTWF0ZXJpYWwncyBnZW5lcmFsIHByaW5jaXBsZSBvZiBub3QgaGF2aW5nIGNvbXBvbmVudHMgbW9kaWZ5IERPTSBlbGVtZW50cyB0aGV5IGRvIG5vdCBvd24uXG4gICAgLy8gQSB1c2VyIHdobyBmZWVscyB0aGV5IHJlYWxseSBuZWVkIHRoaXMgZmVhdHVyZSBjYW4gc2ltcGx5IGxpc3RlbiB0byB0aGUgYChmb2N1cylgIGFuZFxuICAgIC8vIGAoYmx1cilgIGV2ZW50cyBvbiB0aGUgbGlzdCBpdGVtIGFuZCBlbmFibGUvZGlzYWJsZSBmb2N1cyBvbiB0aGUgY2hpbGRyZW4gdGhlbXNlbHZlcyBhc1xuICAgIC8vIGFwcHJvcHJpYXRlLlxuICAgIHNldFRhYkluZGV4Rm9yTGlzdEl0ZW1DaGlsZHJlbigpIHt9LFxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGhhdmUgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgYmFzZSBjbGFzcyBiZWNhdXNlIHRoZXkgYXJlIG9ubHlcbiAgICAvLyBhcHBsaWNhYmxlIHRvIGNlcnRhaW4gdHlwZXMgb2YgbGlzdHMuIFRoZXkgc2hvdWxkIGJlIGltcGxlbWVudGVkIGZvciB0aGUgY29uY3JldGUgY2xhc3Nlc1xuICAgIC8vIHdoZXJlIHRoZXkgYXJlIGFwcGxpY2FibGUuXG4gICAgaGFzQ2hlY2tib3hBdEluZGV4KCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgaGFzUmFkaW9BdEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIHNldENoZWNrZWRDaGVja2JveE9yUmFkaW9BdEluZGV4KGluZGV4OiBudW1iZXIsIGNoZWNrZWQ6IGJvb2xlYW4pIHt9LFxuICAgIGlzQ2hlY2tib3hDaGVja2VkQXRJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBub3RpZnlTZWxlY3Rpb25DaGFuZ2UoKSB7fSxcbiAgICBub3RpZnlBY3Rpb24oKSB7fSxcbiAgfTtcbn1cbiJdfQ==