@eui/ecl 17.0.0-next.4 → 17.0.0-next.6

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 (684) hide show
  1. package/esm2022/lib/components/ecl-accordion/ecl-accordion-item.component.mjs +6 -8
  2. package/esm2022/lib/components/ecl-accordion/ecl-accordion.component.mjs +5 -7
  3. package/esm2022/lib/components/ecl-accordion/ecl-accordion.module.mjs +8 -24
  4. package/esm2022/lib/components/ecl-app/deprecated/common/ecl-app.component.mjs +7 -6
  5. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.component.mjs +5 -5
  6. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.module.mjs +8 -20
  7. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.component.mjs +5 -5
  8. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.module.mjs +8 -20
  9. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.component.mjs +5 -5
  10. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.module.mjs +8 -20
  11. package/esm2022/lib/components/ecl-app/ecl-app.component.mjs +10 -8
  12. package/esm2022/lib/components/ecl-app/ecl-app.module.mjs +8 -20
  13. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-credit.directive.mjs +5 -5
  14. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-cta-link.directive.mjs +5 -5
  15. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-description.directive.mjs +5 -5
  16. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-title.directive.mjs +5 -5
  17. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.component.mjs +9 -7
  18. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.module.mjs +9 -18
  19. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-credit.directive.mjs +5 -5
  20. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-cta-link.directive.mjs +5 -5
  21. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-description.directive.mjs +5 -5
  22. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-title.directive.mjs +5 -5
  23. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.component.mjs +9 -7
  24. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.module.mjs +9 -18
  25. package/esm2022/lib/components/ecl-banner/ecl-banner-credit.directive.mjs +5 -5
  26. package/esm2022/lib/components/ecl-banner/ecl-banner-description.directive.mjs +9 -9
  27. package/esm2022/lib/components/ecl-banner/ecl-banner-picture.directive.mjs +12 -14
  28. package/esm2022/lib/components/ecl-banner/ecl-banner-title.directive.mjs +9 -9
  29. package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +9 -7
  30. package/esm2022/lib/components/ecl-banner/ecl-banner.module.mjs +9 -18
  31. package/esm2022/lib/components/ecl-banner/index.mjs +1 -1
  32. package/esm2022/lib/components/ecl-base.directive.mjs +8 -9
  33. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote-picture.directive.mjs +11 -15
  34. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.component.mjs +6 -8
  35. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.module.mjs +8 -22
  36. package/esm2022/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb-segment.component.mjs +5 -4
  37. package/esm2022/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb.component.mjs +11 -10
  38. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core-segment.component.mjs +8 -9
  39. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.component.mjs +8 -10
  40. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.module.mjs +8 -30
  41. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised-segment.component.mjs +9 -7
  42. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.component.mjs +8 -10
  43. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.module.mjs +8 -30
  44. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised-segment.component.mjs +9 -7
  45. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.component.mjs +8 -10
  46. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.module.mjs +8 -30
  47. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.mjs +6 -9
  48. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.mjs +12 -17
  49. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.module.mjs +7 -26
  50. package/esm2022/lib/components/ecl-breadcrumb/index.mjs +1 -1
  51. package/esm2022/lib/components/ecl-button/ecl-button-label.directive.mjs +6 -8
  52. package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +13 -15
  53. package/esm2022/lib/components/ecl-button/ecl-button.module.mjs +8 -21
  54. package/esm2022/lib/components/ecl-button/index.mjs +1 -1
  55. package/esm2022/lib/components/ecl-card/ecl-card-body.component.mjs +6 -8
  56. package/esm2022/lib/components/ecl-card/ecl-card-image/ecl-card-image.component.mjs +6 -8
  57. package/esm2022/lib/components/ecl-card/ecl-card-picture.directive.mjs +11 -15
  58. package/esm2022/lib/components/ecl-card/ecl-card.component.mjs +5 -7
  59. package/esm2022/lib/components/ecl-card/ecl-card.module.mjs +9 -38
  60. package/esm2022/lib/components/ecl-carousel/ecl-carousel-item.component.mjs +6 -8
  61. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +20 -20
  62. package/esm2022/lib/components/ecl-carousel/ecl-carousel.module.mjs +9 -26
  63. package/esm2022/lib/components/ecl-carousel/index.mjs +1 -1
  64. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.mjs +19 -21
  65. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.mjs +12 -10
  66. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.mjs +12 -10
  67. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter.module.mjs +8 -34
  68. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-help.component.mjs +5 -7
  69. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-input.directive.mjs +5 -7
  70. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-label.component.mjs +6 -8
  71. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.directive.mjs +7 -9
  72. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.module.mjs +7 -23
  73. package/esm2022/lib/components/ecl-content-block/ecl-content-block-elements.directive.mjs +86 -120
  74. package/esm2022/lib/components/ecl-content-block/ecl-content-block.component.mjs +6 -8
  75. package/esm2022/lib/components/ecl-content-block/ecl-content-block.module.mjs +9 -15
  76. package/esm2022/lib/components/ecl-content-block/index.mjs +1 -1
  77. package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +14 -14
  78. package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +6 -9
  79. package/esm2022/lib/components/ecl-content-item/ecl-content-item.module.mjs +9 -26
  80. package/esm2022/lib/components/ecl-content-item/index.mjs +1 -1
  81. package/esm2022/lib/components/ecl-date-block/ecl-date-block.component.mjs +14 -11
  82. package/esm2022/lib/components/ecl-date-block/ecl-date-block.module.mjs +31 -7
  83. package/esm2022/lib/components/ecl-date-block/index.mjs +1 -1
  84. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.directive.mjs +11 -15
  85. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.module.mjs +7 -12
  86. package/esm2022/lib/components/ecl-expandable/ecl-expandable.component.mjs +6 -8
  87. package/esm2022/lib/components/ecl-expandable/ecl-expandable.module.mjs +6 -6
  88. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-description.component.mjs +6 -8
  89. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-item.component.mjs +7 -9
  90. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-title.component.mjs +6 -8
  91. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-value.component.mjs +6 -8
  92. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-view-all.component.mjs +7 -12
  93. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.component.mjs +6 -9
  94. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.module.mjs +8 -13
  95. package/esm2022/lib/components/ecl-featured/ecl-featured-item-description.component.mjs +4 -4
  96. package/esm2022/lib/components/ecl-featured/ecl-featured-item-link.directive.mjs +5 -5
  97. package/esm2022/lib/components/ecl-featured/ecl-featured-item.component.mjs +4 -4
  98. package/esm2022/lib/components/ecl-featured/ecl-featured.component.mjs +5 -8
  99. package/esm2022/lib/components/ecl-featured/ecl-featured.module.mjs +8 -32
  100. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.directive.mjs +7 -9
  101. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.module.mjs +6 -6
  102. package/esm2022/lib/components/ecl-feedback-message/index.mjs +1 -1
  103. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-download.event.mjs +1 -1
  104. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +8 -9
  105. package/esm2022/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.mjs +7 -9
  106. package/esm2022/lib/components/ecl-file/ecl-file-picture.directive.mjs +12 -14
  107. package/esm2022/lib/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.mjs +6 -8
  108. package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +6 -9
  109. package/esm2022/lib/components/ecl-file/ecl-file.module.mjs +9 -13
  110. package/esm2022/lib/components/ecl-file/index.mjs +1 -1
  111. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.directive.mjs +11 -12
  112. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.module.mjs +6 -6
  113. package/esm2022/lib/components/ecl-form-group/ecl-form-group.component.mjs +6 -8
  114. package/esm2022/lib/components/ecl-form-group/ecl-form-group.module.mjs +7 -15
  115. package/esm2022/lib/components/ecl-form-label/ecl-form-label.component.mjs +7 -5
  116. package/esm2022/lib/components/ecl-form-label/ecl-form-label.module.mjs +6 -6
  117. package/esm2022/lib/components/ecl-gallery/ecl-gallery-footer.component.mjs +5 -5
  118. package/esm2022/lib/components/ecl-gallery/ecl-gallery-item.component.mjs +6 -9
  119. package/esm2022/lib/components/ecl-gallery/ecl-gallery-media.directive.mjs +11 -15
  120. package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +22 -28
  121. package/esm2022/lib/components/ecl-gallery/ecl-gallery.module.mjs +10 -28
  122. package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +6 -9
  123. package/esm2022/lib/components/ecl-help-block/ecl-help-block.module.mjs +5 -5
  124. package/esm2022/lib/components/ecl-icon/ecl-icon.component.mjs +7 -7
  125. package/esm2022/lib/components/ecl-icon/ecl-icon.module.mjs +6 -6
  126. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.mjs +5 -5
  127. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +19 -17
  128. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.module.mjs +8 -30
  129. package/esm2022/lib/components/ecl-label/ecl-label.directive.mjs +6 -9
  130. package/esm2022/lib/components/ecl-label/ecl-label.module.mjs +6 -6
  131. package/esm2022/lib/components/ecl-label/index.mjs +1 -1
  132. package/esm2022/lib/components/ecl-language-list/ecl-language-list-item.component.mjs +7 -10
  133. package/esm2022/lib/components/ecl-language-list/ecl-language-list.component.mjs +15 -19
  134. package/esm2022/lib/components/ecl-language-list/ecl-language-list.module.mjs +8 -33
  135. package/esm2022/lib/components/ecl-link/ecl-link-label.directive.mjs +6 -8
  136. package/esm2022/lib/components/ecl-link/ecl-link.directive.mjs +9 -12
  137. package/esm2022/lib/components/ecl-link/ecl-link.module.mjs +6 -6
  138. package/esm2022/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.mjs +11 -11
  139. package/esm2022/lib/components/ecl-list/ecl-description-list-definition-item.directive.mjs +29 -0
  140. package/esm2022/lib/components/ecl-list/ecl-list.directive.mjs +29 -55
  141. package/esm2022/lib/components/ecl-list/ecl-list.module.mjs +11 -22
  142. package/esm2022/lib/components/ecl-list/index.mjs +2 -1
  143. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-icon.directive.mjs +3 -3
  144. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-image/ecl-list-illustration-image.component.mjs +9 -9
  145. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +5 -5
  146. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.mjs +15 -15
  147. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.component.mjs +7 -5
  148. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.module.mjs +9 -18
  149. package/esm2022/lib/components/ecl-media-container/ecl-media-container-iframe.directive.mjs +5 -5
  150. package/esm2022/lib/components/ecl-media-container/ecl-media-container-item.directive.mjs +8 -9
  151. package/esm2022/lib/components/ecl-media-container/ecl-media-container-picture.directive.mjs +4 -4
  152. package/esm2022/lib/components/ecl-media-container/ecl-media-container.component.mjs +6 -9
  153. package/esm2022/lib/components/ecl-media-container/ecl-media-container.module.mjs +7 -7
  154. package/esm2022/lib/components/ecl-menu/common/ecl-menu-item.event.mjs +1 -1
  155. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +82 -31
  156. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu.component.mjs +258 -56
  157. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +7 -7
  158. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.mjs +19 -16
  159. package/esm2022/lib/components/ecl-menu/ecl-menu.module.mjs +10 -25
  160. package/esm2022/lib/components/ecl-message/ecl-message-title.directive.mjs +6 -8
  161. package/esm2022/lib/components/ecl-message/ecl-message.component.mjs +6 -9
  162. package/esm2022/lib/components/ecl-message/ecl-message.module.mjs +7 -18
  163. package/esm2022/lib/components/ecl-modal/ecl-modal-body.component.mjs +6 -8
  164. package/esm2022/lib/components/ecl-modal/ecl-modal-close.directive.mjs +5 -5
  165. package/esm2022/lib/components/ecl-modal/ecl-modal-footer.component.mjs +7 -9
  166. package/esm2022/lib/components/ecl-modal/ecl-modal-header.component.mjs +6 -8
  167. package/esm2022/lib/components/ecl-modal/ecl-modal-trigger.directive.mjs +5 -5
  168. package/esm2022/lib/components/ecl-modal/ecl-modal.component.mjs +10 -13
  169. package/esm2022/lib/components/ecl-modal/ecl-modal.module.mjs +9 -21
  170. package/esm2022/lib/components/ecl-modal/index.mjs +1 -1
  171. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option.directive.mjs +12 -10
  172. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +40 -43
  173. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.module.mjs +6 -9
  174. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-image/ecl-navigation-list-image.component.mjs +6 -8
  175. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.mjs +6 -9
  176. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-picture.directive.mjs +11 -15
  177. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.component.mjs +6 -9
  178. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.module.mjs +9 -15
  179. package/esm2022/lib/components/ecl-navigation-list/index.mjs +1 -1
  180. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.mjs +8 -8
  181. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.component.mjs +19 -16
  182. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.module.mjs +8 -30
  183. package/esm2022/lib/components/ecl-page-header/deprecated/common/ecl-page-header.component.mjs +5 -4
  184. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-description.directive.mjs +13 -13
  185. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-meta.directive.mjs +9 -9
  186. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-title.directive.mjs +5 -5
  187. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.component.mjs +9 -7
  188. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.module.mjs +9 -9
  189. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-description.directive.mjs +13 -13
  190. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-meta.directive.mjs +9 -9
  191. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-title.directive.mjs +5 -5
  192. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.component.mjs +6 -9
  193. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.module.mjs +10 -10
  194. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-description.directive.mjs +13 -13
  195. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-meta.directive.mjs +9 -9
  196. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-title.directive.mjs +5 -5
  197. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.component.mjs +9 -7
  198. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.module.mjs +10 -10
  199. package/esm2022/lib/components/ecl-page-header/ecl-page-header-background.directive.mjs +11 -11
  200. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.mjs +8 -8
  201. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description.directive.mjs +13 -13
  202. package/esm2022/lib/components/ecl-page-header/ecl-page-header-meta.directive.mjs +9 -9
  203. package/esm2022/lib/components/ecl-page-header/ecl-page-header-title.directive.mjs +5 -5
  204. package/esm2022/lib/components/ecl-page-header/ecl-page-header.component.mjs +8 -9
  205. package/esm2022/lib/components/ecl-page-header/ecl-page-header.module.mjs +7 -7
  206. package/esm2022/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +8 -6
  207. package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +7 -7
  208. package/esm2022/lib/components/ecl-pagination/ecl-pagination.module.mjs +6 -6
  209. package/esm2022/lib/components/ecl-popover/ecl-popover-content.directive.mjs +6 -8
  210. package/esm2022/lib/components/ecl-popover/ecl-popover-list.directive.mjs +16 -22
  211. package/esm2022/lib/components/ecl-popover/ecl-popover-toggle.directive.mjs +6 -8
  212. package/esm2022/lib/components/ecl-popover/ecl-popover.component.mjs +14 -11
  213. package/esm2022/lib/components/ecl-popover/ecl-popover.module.mjs +10 -22
  214. package/esm2022/lib/components/ecl-popover/index.mjs +1 -1
  215. package/esm2022/lib/components/ecl-radio/ecl-radio-help.component.mjs +5 -7
  216. package/esm2022/lib/components/ecl-radio/ecl-radio-input.directive.mjs +6 -10
  217. package/esm2022/lib/components/ecl-radio/ecl-radio-label.component.mjs +6 -8
  218. package/esm2022/lib/components/ecl-radio/ecl-radio.directive.mjs +6 -9
  219. package/esm2022/lib/components/ecl-radio/ecl-radio.module.mjs +7 -23
  220. package/esm2022/lib/components/ecl-range/ecl-range-value.component.mjs +6 -8
  221. package/esm2022/lib/components/ecl-range/ecl-range.directive.mjs +12 -17
  222. package/esm2022/lib/components/ecl-range/ecl-range.module.mjs +7 -12
  223. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.component.mjs +7 -10
  224. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.module.mjs +7 -9
  225. package/esm2022/lib/components/ecl-rating-field/index.mjs +1 -1
  226. package/esm2022/lib/components/ecl-search-form/ecl-search-form.component.mjs +6 -8
  227. package/esm2022/lib/components/ecl-search-form/ecl-search-form.module.mjs +7 -7
  228. package/esm2022/lib/components/ecl-select/ecl-select-container.component.mjs +8 -6
  229. package/esm2022/lib/components/ecl-select/ecl-select.directive.mjs +5 -7
  230. package/esm2022/lib/components/ecl-select/ecl-select.module.mjs +8 -18
  231. package/esm2022/lib/components/ecl-site-footer/deprecated/common/ecl-footer.component.mjs +5 -4
  232. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.component.mjs +6 -8
  233. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.module.mjs +7 -18
  234. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-column.directive.mjs +5 -5
  235. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-description.directive.mjs +5 -5
  236. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-link.directive.mjs +3 -3
  237. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-list.directive.mjs +9 -9
  238. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-section.directive.mjs +6 -9
  239. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-title.directive.mjs +9 -9
  240. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-column.directive.mjs +13 -13
  241. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-description.directive.mjs +5 -5
  242. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-link.directive.mjs +9 -9
  243. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-list.directive.mjs +21 -21
  244. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-section.directive.mjs +5 -5
  245. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-title.directive.mjs +9 -9
  246. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.component.mjs +6 -9
  247. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.module.mjs +11 -22
  248. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-column.directive.mjs +13 -13
  249. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-description.directive.mjs +5 -5
  250. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-link.directive.mjs +9 -9
  251. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-list.directive.mjs +9 -9
  252. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-section.directive.mjs +5 -5
  253. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-title.directive.mjs +9 -9
  254. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.component.mjs +6 -8
  255. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.module.mjs +11 -22
  256. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.mjs +5 -5
  257. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ec/index.mjs +1 -1
  258. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-column.directive.mjs +13 -13
  259. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-description.directive.mjs +5 -5
  260. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.mjs +15 -15
  261. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.mjs +21 -21
  262. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.mjs +5 -5
  263. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.mjs +9 -9
  264. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.mjs +5 -5
  265. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/eu/index.mjs +1 -1
  266. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/index.mjs +1 -1
  267. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.component.mjs +6 -9
  268. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.module.mjs +12 -27
  269. package/esm2022/lib/components/ecl-site-footer/index.mjs +1 -1
  270. package/esm2022/lib/components/ecl-site-header/action/ecl-site-header-action.component.mjs +5 -5
  271. package/esm2022/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.mjs +5 -5
  272. package/esm2022/lib/components/ecl-site-header/cta/ecl-site-header-cta.directive.mjs +3 -3
  273. package/esm2022/lib/components/ecl-site-header/cta/index.mjs +1 -1
  274. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-action.component.mjs +6 -5
  275. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-banner-top.component.mjs +6 -5
  276. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-language.component.mjs +5 -4
  277. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-login.component.mjs +6 -5
  278. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-search.component.mjs +5 -4
  279. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header.component.mjs +9 -19
  280. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/action/ecl-site-header-core-action.component.mjs +5 -5
  281. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.component.mjs +5 -5
  282. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.module.mjs +7 -7
  283. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/language/ecl-site-header-core-language.component.mjs +5 -5
  284. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/login/ecl-site-header-core-login-details.directive.mjs +9 -9
  285. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/login/ecl-site-header-core-login.component.mjs +6 -9
  286. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/search/ecl-site-header-core-search.component.mjs +6 -9
  287. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/action/ecl-site-header-harmonised-action.component.mjs +5 -5
  288. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/banner-top/ecl-site-header-harmonised-banner-top.component.mjs +5 -5
  289. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.component.mjs +6 -9
  290. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.module.mjs +9 -9
  291. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/language/ecl-site-header-harmonised-language.component.mjs +5 -5
  292. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/login/ecl-site-header-harmonised-login-details.directive.mjs +9 -9
  293. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/login/ecl-site-header-harmonised-login.component.mjs +6 -9
  294. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/search/ecl-site-header-harmonised-search.component.mjs +6 -9
  295. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/action/ecl-site-header-standardised-action.component.mjs +5 -5
  296. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/banner-top/ecl-site-header-standardised-banner-top.component.mjs +5 -5
  297. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/cta/ecl-site-header-standardised-cta.directive.mjs +3 -3
  298. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.component.mjs +6 -9
  299. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.module.mjs +7 -7
  300. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/language/ecl-site-header-standardised-language.component.mjs +5 -5
  301. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/login/ecl-site-header-standardised-login-details.directive.mjs +9 -9
  302. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/login/ecl-site-header-standardised-login.component.mjs +6 -6
  303. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/search/ecl-site-header-standardised-search.component.mjs +6 -9
  304. package/esm2022/lib/components/ecl-site-header/ecl-site-header-environment/ecl-site-header-environment.component.mjs +5 -8
  305. package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +10 -24
  306. package/esm2022/lib/components/ecl-site-header/ecl-site-header.module.mjs +10 -14
  307. package/esm2022/lib/components/ecl-site-header/index.mjs +1 -1
  308. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +8 -6
  309. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language.component.mjs +12 -12
  310. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login-details.directive.mjs +9 -9
  311. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +7 -10
  312. package/esm2022/lib/components/ecl-site-header/message/ecl-site-header-message.component.mjs +6 -8
  313. package/esm2022/lib/components/ecl-site-header/search/ecl-site-header-search.component.mjs +6 -9
  314. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.mjs +6 -8
  315. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-link.directive.mjs +7 -9
  316. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +8 -9
  317. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.mjs +7 -15
  318. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +6 -8
  319. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-link.directive.mjs +7 -9
  320. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +6 -9
  321. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.module.mjs +7 -15
  322. package/esm2022/lib/components/ecl-spinner/ecl-spinner-label.directive.mjs +7 -7
  323. package/esm2022/lib/components/ecl-spinner/ecl-spinner.component.mjs +8 -6
  324. package/esm2022/lib/components/ecl-spinner/ecl-spinner.module.mjs +7 -12
  325. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.component.mjs +7 -10
  326. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.module.mjs +8 -12
  327. package/esm2022/lib/components/ecl-table/ecl-table-sort-button.component.mjs +6 -8
  328. package/esm2022/lib/components/ecl-table/ecl-table.directive.mjs +41 -59
  329. package/esm2022/lib/components/ecl-table/ecl-table.module.mjs +7 -11
  330. package/esm2022/lib/components/ecl-tabs/ecl-tab-label.component.mjs +5 -5
  331. package/esm2022/lib/components/ecl-tabs/ecl-tab-more.component.mjs +6 -8
  332. package/esm2022/lib/components/ecl-tabs/ecl-tab.component.mjs +6 -8
  333. package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +16 -21
  334. package/esm2022/lib/components/ecl-tabs/ecl-tabs.module.mjs +9 -38
  335. package/esm2022/lib/components/ecl-tabs/index.mjs +1 -1
  336. package/esm2022/lib/components/ecl-tag/ecl-tag.component.mjs +6 -9
  337. package/esm2022/lib/components/ecl-tag/ecl-tag.module.mjs +6 -6
  338. package/esm2022/lib/components/ecl-text-area/ecl-text-area.directive.mjs +7 -10
  339. package/esm2022/lib/components/ecl-text-area/ecl-text-area.module.mjs +6 -6
  340. package/esm2022/lib/components/ecl-text-input/ecl-text-input.directive.mjs +6 -9
  341. package/esm2022/lib/components/ecl-text-input/ecl-text-input.module.mjs +6 -6
  342. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-label.directive.mjs +6 -8
  343. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-title.directive.mjs +6 -8
  344. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-toggler.component.mjs +5 -5
  345. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +7 -11
  346. package/esm2022/lib/components/ecl-timeline/ecl-timeline.component.mjs +10 -13
  347. package/esm2022/lib/components/ecl-timeline/ecl-timeline.module.mjs +8 -19
  348. package/esm2022/lib/components/index.mjs +1 -1
  349. package/esm2022/lib/model/ecl-breadcrumb.model.mjs +1 -1
  350. package/esm2022/lib/model/ecl-menu-item.model.mjs +1 -1
  351. package/esm2022/lib/services/ecl-default-language.service.mjs +36 -12
  352. package/esm2022/lib/services/ecl-language.service.mjs +1 -1
  353. package/esm2022/lib/services/ecl-theme.service.mjs +6 -6
  354. package/esm2022/lib/shared/ecl-all.module.mjs +11 -16
  355. package/esm2022/lib/utils/directives/ecl-click-outside/ecl-click-outside.directive.mjs +5 -5
  356. package/esm2022/lib/utils/directives/ecl-click-outside/index.mjs +1 -1
  357. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.directive.mjs +4 -4
  358. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.module.mjs +6 -6
  359. package/esm2022/lib/utils/directives/ecl-hidden/index.mjs +1 -1
  360. package/esm2022/lib/utils/dom/dom-helpers.mjs +1 -1
  361. package/fesm2022/eui-ecl.mjs +2707 -3408
  362. package/fesm2022/eui-ecl.mjs.map +1 -1
  363. package/lib/components/ecl-accordion/ecl-accordion-item.component.d.ts.map +1 -1
  364. package/lib/components/ecl-accordion/ecl-accordion.component.d.ts.map +1 -1
  365. package/lib/components/ecl-accordion/ecl-accordion.module.d.ts.map +1 -1
  366. package/lib/components/ecl-app/deprecated/common/ecl-app.component.d.ts.map +1 -1
  367. package/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.component.d.ts.map +1 -1
  368. package/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.module.d.ts.map +1 -1
  369. package/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.component.d.ts.map +1 -1
  370. package/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.module.d.ts.map +1 -1
  371. package/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.component.d.ts.map +1 -1
  372. package/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.module.d.ts.map +1 -1
  373. package/lib/components/ecl-app/ecl-app.component.d.ts +2 -2
  374. package/lib/components/ecl-app/ecl-app.component.d.ts.map +1 -1
  375. package/lib/components/ecl-app/ecl-app.module.d.ts.map +1 -1
  376. package/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.component.d.ts.map +1 -1
  377. package/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.module.d.ts.map +1 -1
  378. package/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.component.d.ts.map +1 -1
  379. package/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.module.d.ts.map +1 -1
  380. package/lib/components/ecl-banner/ecl-banner-picture.directive.d.ts +1 -1
  381. package/lib/components/ecl-banner/ecl-banner-picture.directive.d.ts.map +1 -1
  382. package/lib/components/ecl-banner/ecl-banner.component.d.ts +2 -2
  383. package/lib/components/ecl-banner/ecl-banner.component.d.ts.map +1 -1
  384. package/lib/components/ecl-banner/ecl-banner.module.d.ts.map +1 -1
  385. package/lib/components/ecl-base.directive.d.ts.map +1 -1
  386. package/lib/components/ecl-blockquote/ecl-blockquote-picture.directive.d.ts.map +1 -1
  387. package/lib/components/ecl-blockquote/ecl-blockquote.component.d.ts.map +1 -1
  388. package/lib/components/ecl-blockquote/ecl-blockquote.module.d.ts.map +1 -1
  389. package/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb-segment.component.d.ts.map +1 -1
  390. package/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb.component.d.ts.map +1 -1
  391. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core-segment.component.d.ts.map +1 -1
  392. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.component.d.ts.map +1 -1
  393. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.module.d.ts.map +1 -1
  394. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised-segment.component.d.ts.map +1 -1
  395. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.component.d.ts.map +1 -1
  396. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.module.d.ts.map +1 -1
  397. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised-segment.component.d.ts.map +1 -1
  398. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.component.d.ts.map +1 -1
  399. package/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.module.d.ts.map +1 -1
  400. package/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.d.ts.map +1 -1
  401. package/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.d.ts.map +1 -1
  402. package/lib/components/ecl-breadcrumb/ecl-breadcrumb.module.d.ts.map +1 -1
  403. package/lib/components/ecl-button/ecl-button-label.directive.d.ts.map +1 -1
  404. package/lib/components/ecl-button/ecl-button.component.d.ts +3 -1
  405. package/lib/components/ecl-button/ecl-button.component.d.ts.map +1 -1
  406. package/lib/components/ecl-button/ecl-button.module.d.ts.map +1 -1
  407. package/lib/components/ecl-card/ecl-card-body.component.d.ts.map +1 -1
  408. package/lib/components/ecl-card/ecl-card-image/ecl-card-image.component.d.ts.map +1 -1
  409. package/lib/components/ecl-card/ecl-card-picture.directive.d.ts.map +1 -1
  410. package/lib/components/ecl-card/ecl-card.component.d.ts.map +1 -1
  411. package/lib/components/ecl-card/ecl-card.module.d.ts.map +1 -1
  412. package/lib/components/ecl-carousel/ecl-carousel-item.component.d.ts.map +1 -1
  413. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts +3 -3
  414. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts.map +1 -1
  415. package/lib/components/ecl-carousel/ecl-carousel.module.d.ts.map +1 -1
  416. package/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.d.ts +5 -5
  417. package/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.d.ts.map +1 -1
  418. package/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.d.ts +5 -5
  419. package/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.d.ts.map +1 -1
  420. package/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.d.ts +3 -3
  421. package/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.d.ts.map +1 -1
  422. package/lib/components/ecl-category-filter/ecl-category-filter.module.d.ts.map +1 -1
  423. package/lib/components/ecl-checkbox/ecl-checkbox-help.component.d.ts.map +1 -1
  424. package/lib/components/ecl-checkbox/ecl-checkbox-input.directive.d.ts.map +1 -1
  425. package/lib/components/ecl-checkbox/ecl-checkbox-label.component.d.ts.map +1 -1
  426. package/lib/components/ecl-checkbox/ecl-checkbox.directive.d.ts.map +1 -1
  427. package/lib/components/ecl-checkbox/ecl-checkbox.module.d.ts.map +1 -1
  428. package/lib/components/ecl-content-block/ecl-content-block-elements.directive.d.ts.map +1 -1
  429. package/lib/components/ecl-content-block/ecl-content-block.component.d.ts.map +1 -1
  430. package/lib/components/ecl-content-block/ecl-content-block.module.d.ts.map +1 -1
  431. package/lib/components/ecl-content-item/ecl-content-item-image.directive.d.ts.map +1 -1
  432. package/lib/components/ecl-content-item/ecl-content-item.component.d.ts.map +1 -1
  433. package/lib/components/ecl-content-item/ecl-content-item.module.d.ts.map +1 -1
  434. package/lib/components/ecl-content-item/index.d.ts.map +1 -1
  435. package/lib/components/ecl-date-block/ecl-date-block.component.d.ts +1 -0
  436. package/lib/components/ecl-date-block/ecl-date-block.component.d.ts.map +1 -1
  437. package/lib/components/ecl-date-block/ecl-date-block.module.d.ts +24 -0
  438. package/lib/components/ecl-date-block/ecl-date-block.module.d.ts.map +1 -1
  439. package/lib/components/ecl-date-picker/ecl-date-picker.directive.d.ts +1 -1
  440. package/lib/components/ecl-date-picker/ecl-date-picker.directive.d.ts.map +1 -1
  441. package/lib/components/ecl-date-picker/ecl-date-picker.module.d.ts.map +1 -1
  442. package/lib/components/ecl-expandable/ecl-expandable.component.d.ts.map +1 -1
  443. package/lib/components/ecl-expandable/ecl-expandable.module.d.ts.map +1 -1
  444. package/lib/components/ecl-fact-figures/ecl-fact-figures-description.component.d.ts.map +1 -1
  445. package/lib/components/ecl-fact-figures/ecl-fact-figures-item.component.d.ts.map +1 -1
  446. package/lib/components/ecl-fact-figures/ecl-fact-figures-title.component.d.ts.map +1 -1
  447. package/lib/components/ecl-fact-figures/ecl-fact-figures-value.component.d.ts.map +1 -1
  448. package/lib/components/ecl-fact-figures/ecl-fact-figures-view-all.component.d.ts.map +1 -1
  449. package/lib/components/ecl-fact-figures/ecl-fact-figures.component.d.ts.map +1 -1
  450. package/lib/components/ecl-fact-figures/ecl-fact-figures.module.d.ts.map +1 -1
  451. package/lib/components/ecl-featured/ecl-featured-item-description.component.d.ts.map +1 -1
  452. package/lib/components/ecl-featured/ecl-featured-item.component.d.ts.map +1 -1
  453. package/lib/components/ecl-featured/ecl-featured.component.d.ts.map +1 -1
  454. package/lib/components/ecl-featured/ecl-featured.module.d.ts.map +1 -1
  455. package/lib/components/ecl-feedback-message/ecl-feedback-message.directive.d.ts.map +1 -1
  456. package/lib/components/ecl-feedback-message/ecl-feedback-message.module.d.ts.map +1 -1
  457. package/lib/components/ecl-file/ecl-file-item/ecl-file-download.event.d.ts.map +1 -1
  458. package/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts.map +1 -1
  459. package/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.d.ts.map +1 -1
  460. package/lib/components/ecl-file/ecl-file-picture.directive.d.ts +1 -1
  461. package/lib/components/ecl-file/ecl-file-picture.directive.d.ts.map +1 -1
  462. package/lib/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.d.ts.map +1 -1
  463. package/lib/components/ecl-file/ecl-file.component.d.ts +3 -3
  464. package/lib/components/ecl-file/ecl-file.component.d.ts.map +1 -1
  465. package/lib/components/ecl-file/ecl-file.module.d.ts.map +1 -1
  466. package/lib/components/ecl-file/index.d.ts.map +1 -1
  467. package/lib/components/ecl-file-upload/ecl-file-upload.directive.d.ts.map +1 -1
  468. package/lib/components/ecl-file-upload/ecl-file-upload.module.d.ts.map +1 -1
  469. package/lib/components/ecl-form-group/ecl-form-group.component.d.ts.map +1 -1
  470. package/lib/components/ecl-form-group/ecl-form-group.module.d.ts.map +1 -1
  471. package/lib/components/ecl-form-label/ecl-form-label.component.d.ts.map +1 -1
  472. package/lib/components/ecl-form-label/ecl-form-label.module.d.ts.map +1 -1
  473. package/lib/components/ecl-gallery/ecl-gallery-footer.component.d.ts.map +1 -1
  474. package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts.map +1 -1
  475. package/lib/components/ecl-gallery/ecl-gallery-media.directive.d.ts.map +1 -1
  476. package/lib/components/ecl-gallery/ecl-gallery.component.d.ts.map +1 -1
  477. package/lib/components/ecl-gallery/ecl-gallery.module.d.ts.map +1 -1
  478. package/lib/components/ecl-help-block/ecl-help-block.directive.d.ts.map +1 -1
  479. package/lib/components/ecl-help-block/ecl-help-block.module.d.ts.map +1 -1
  480. package/lib/components/ecl-icon/ecl-icon.component.d.ts.map +1 -1
  481. package/lib/components/ecl-icon/ecl-icon.module.d.ts.map +1 -1
  482. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.d.ts.map +1 -1
  483. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts.map +1 -1
  484. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.module.d.ts.map +1 -1
  485. package/lib/components/ecl-label/ecl-label.directive.d.ts.map +1 -1
  486. package/lib/components/ecl-label/ecl-label.module.d.ts.map +1 -1
  487. package/lib/components/ecl-language-list/ecl-language-list-item.component.d.ts.map +1 -1
  488. package/lib/components/ecl-language-list/ecl-language-list.component.d.ts.map +1 -1
  489. package/lib/components/ecl-language-list/ecl-language-list.module.d.ts.map +1 -1
  490. package/lib/components/ecl-link/ecl-link-label.directive.d.ts.map +1 -1
  491. package/lib/components/ecl-link/ecl-link.directive.d.ts.map +1 -1
  492. package/lib/components/ecl-link/ecl-link.module.d.ts.map +1 -1
  493. package/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.d.ts +3 -3
  494. package/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.d.ts.map +1 -1
  495. package/lib/components/ecl-list/ecl-description-list-definition-item.directive.d.ts +10 -0
  496. package/lib/components/ecl-list/ecl-description-list-definition-item.directive.d.ts.map +1 -0
  497. package/lib/components/ecl-list/ecl-list.directive.d.ts +0 -7
  498. package/lib/components/ecl-list/ecl-list.directive.d.ts.map +1 -1
  499. package/lib/components/ecl-list/ecl-list.module.d.ts +5 -4
  500. package/lib/components/ecl-list/ecl-list.module.d.ts.map +1 -1
  501. package/lib/components/ecl-list/index.d.ts +1 -0
  502. package/lib/components/ecl-list/index.d.ts.map +1 -1
  503. package/lib/components/ecl-list-illustration/ecl-list-illustration-image/ecl-list-illustration-image.component.d.ts.map +1 -1
  504. package/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.d.ts +1 -1
  505. package/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.d.ts.map +1 -1
  506. package/lib/components/ecl-list-illustration/ecl-list-illustration.component.d.ts.map +1 -1
  507. package/lib/components/ecl-list-illustration/ecl-list-illustration.module.d.ts.map +1 -1
  508. package/lib/components/ecl-media-container/ecl-media-container-iframe.directive.d.ts.map +1 -1
  509. package/lib/components/ecl-media-container/ecl-media-container-item.directive.d.ts.map +1 -1
  510. package/lib/components/ecl-media-container/ecl-media-container.component.d.ts.map +1 -1
  511. package/lib/components/ecl-media-container/ecl-media-container.module.d.ts.map +1 -1
  512. package/lib/components/ecl-menu/common/ecl-menu-item.event.d.ts.map +1 -1
  513. package/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.d.ts +11 -1
  514. package/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.d.ts.map +1 -1
  515. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts +44 -9
  516. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts.map +1 -1
  517. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.d.ts.map +1 -1
  518. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.d.ts +5 -2
  519. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.d.ts.map +1 -1
  520. package/lib/components/ecl-menu/ecl-menu.module.d.ts.map +1 -1
  521. package/lib/components/ecl-message/ecl-message-title.directive.d.ts.map +1 -1
  522. package/lib/components/ecl-message/ecl-message.component.d.ts.map +1 -1
  523. package/lib/components/ecl-message/ecl-message.module.d.ts.map +1 -1
  524. package/lib/components/ecl-modal/ecl-modal-body.component.d.ts.map +1 -1
  525. package/lib/components/ecl-modal/ecl-modal-footer.component.d.ts.map +1 -1
  526. package/lib/components/ecl-modal/ecl-modal-header.component.d.ts.map +1 -1
  527. package/lib/components/ecl-modal/ecl-modal.component.d.ts.map +1 -1
  528. package/lib/components/ecl-modal/ecl-modal.module.d.ts.map +1 -1
  529. package/lib/components/ecl-multiselect/ecl-multiselect-option.directive.d.ts.map +1 -1
  530. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
  531. package/lib/components/ecl-multiselect/ecl-multiselect.module.d.ts.map +1 -1
  532. package/lib/components/ecl-navigation-list/ecl-navigation-list-image/ecl-navigation-list-image.component.d.ts.map +1 -1
  533. package/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.d.ts.map +1 -1
  534. package/lib/components/ecl-navigation-list/ecl-navigation-list-picture.directive.d.ts.map +1 -1
  535. package/lib/components/ecl-navigation-list/ecl-navigation-list.component.d.ts.map +1 -1
  536. package/lib/components/ecl-navigation-list/ecl-navigation-list.module.d.ts.map +1 -1
  537. package/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.d.ts.map +1 -1
  538. package/lib/components/ecl-news-ticker/ecl-news-ticker.component.d.ts.map +1 -1
  539. package/lib/components/ecl-news-ticker/ecl-news-ticker.module.d.ts.map +1 -1
  540. package/lib/components/ecl-page-header/deprecated/common/ecl-page-header.component.d.ts.map +1 -1
  541. package/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.component.d.ts.map +1 -1
  542. package/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.module.d.ts.map +1 -1
  543. package/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.component.d.ts.map +1 -1
  544. package/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.module.d.ts.map +1 -1
  545. package/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.component.d.ts.map +1 -1
  546. package/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.module.d.ts.map +1 -1
  547. package/lib/components/ecl-page-header/ecl-page-header-background.directive.d.ts +1 -1
  548. package/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.d.ts +2 -2
  549. package/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.d.ts.map +1 -1
  550. package/lib/components/ecl-page-header/ecl-page-header.component.d.ts.map +1 -1
  551. package/lib/components/ecl-page-header/ecl-page-header.module.d.ts.map +1 -1
  552. package/lib/components/ecl-pagination/ecl-pagination-item.component.d.ts.map +1 -1
  553. package/lib/components/ecl-pagination/ecl-pagination.component.d.ts.map +1 -1
  554. package/lib/components/ecl-pagination/ecl-pagination.module.d.ts.map +1 -1
  555. package/lib/components/ecl-popover/ecl-popover-content.directive.d.ts.map +1 -1
  556. package/lib/components/ecl-popover/ecl-popover-list.directive.d.ts.map +1 -1
  557. package/lib/components/ecl-popover/ecl-popover-toggle.directive.d.ts.map +1 -1
  558. package/lib/components/ecl-popover/ecl-popover.component.d.ts.map +1 -1
  559. package/lib/components/ecl-popover/ecl-popover.module.d.ts.map +1 -1
  560. package/lib/components/ecl-radio/ecl-radio-help.component.d.ts.map +1 -1
  561. package/lib/components/ecl-radio/ecl-radio-input.directive.d.ts +2 -3
  562. package/lib/components/ecl-radio/ecl-radio-input.directive.d.ts.map +1 -1
  563. package/lib/components/ecl-radio/ecl-radio-label.component.d.ts.map +1 -1
  564. package/lib/components/ecl-radio/ecl-radio.directive.d.ts.map +1 -1
  565. package/lib/components/ecl-radio/ecl-radio.module.d.ts.map +1 -1
  566. package/lib/components/ecl-range/ecl-range-value.component.d.ts.map +1 -1
  567. package/lib/components/ecl-range/ecl-range.directive.d.ts +1 -1
  568. package/lib/components/ecl-range/ecl-range.directive.d.ts.map +1 -1
  569. package/lib/components/ecl-range/ecl-range.module.d.ts.map +1 -1
  570. package/lib/components/ecl-rating-field/ecl-rating-field.component.d.ts +1 -1
  571. package/lib/components/ecl-rating-field/ecl-rating-field.component.d.ts.map +1 -1
  572. package/lib/components/ecl-rating-field/ecl-rating-field.module.d.ts.map +1 -1
  573. package/lib/components/ecl-search-form/ecl-search-form.component.d.ts.map +1 -1
  574. package/lib/components/ecl-search-form/ecl-search-form.module.d.ts.map +1 -1
  575. package/lib/components/ecl-select/ecl-select-container.component.d.ts.map +1 -1
  576. package/lib/components/ecl-select/ecl-select.directive.d.ts.map +1 -1
  577. package/lib/components/ecl-select/ecl-select.module.d.ts.map +1 -1
  578. package/lib/components/ecl-site-footer/deprecated/common/ecl-footer.component.d.ts.map +1 -1
  579. package/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.component.d.ts.map +1 -1
  580. package/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.module.d.ts.map +1 -1
  581. package/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-list.directive.d.ts.map +1 -1
  582. package/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-section.directive.d.ts.map +1 -1
  583. package/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-list.directive.d.ts.map +1 -1
  584. package/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-title.directive.d.ts.map +1 -1
  585. package/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.component.d.ts.map +1 -1
  586. package/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.module.d.ts.map +1 -1
  587. package/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-list.directive.d.ts.map +1 -1
  588. package/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-section.directive.d.ts.map +1 -1
  589. package/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-title.directive.d.ts.map +1 -1
  590. package/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.component.d.ts.map +1 -1
  591. package/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.module.d.ts.map +1 -1
  592. package/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.d.ts.map +1 -1
  593. package/lib/components/ecl-site-footer/ecl-footer-elements/ec/index.d.ts.map +1 -1
  594. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.d.ts.map +1 -1
  595. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.d.ts.map +1 -1
  596. package/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.d.ts.map +1 -1
  597. package/lib/components/ecl-site-footer/ecl-footer-elements/eu/index.d.ts.map +1 -1
  598. package/lib/components/ecl-site-footer/ecl-footer-elements/index.d.ts.map +1 -1
  599. package/lib/components/ecl-site-footer/ecl-site-footer.component.d.ts.map +1 -1
  600. package/lib/components/ecl-site-footer/ecl-site-footer.module.d.ts.map +1 -1
  601. package/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.d.ts.map +1 -1
  602. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header-action.component.d.ts.map +1 -1
  603. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header-banner-top.component.d.ts.map +1 -1
  604. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header-language.component.d.ts.map +1 -1
  605. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header-login.component.d.ts.map +1 -1
  606. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header-search.component.d.ts.map +1 -1
  607. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header.component.d.ts +2 -2
  608. package/lib/components/ecl-site-header/deprecated/common/ecl-site-header.component.d.ts.map +1 -1
  609. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.component.d.ts +1 -1
  610. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.component.d.ts.map +1 -1
  611. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.module.d.ts.map +1 -1
  612. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/language/ecl-site-header-core-language.component.d.ts.map +1 -1
  613. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/login/ecl-site-header-core-login.component.d.ts.map +1 -1
  614. package/lib/components/ecl-site-header/deprecated/ecl-site-header-core/search/ecl-site-header-core-search.component.d.ts.map +1 -1
  615. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/banner-top/ecl-site-header-harmonised-banner-top.component.d.ts.map +1 -1
  616. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.component.d.ts +1 -1
  617. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.component.d.ts.map +1 -1
  618. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.module.d.ts.map +1 -1
  619. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/language/ecl-site-header-harmonised-language.component.d.ts.map +1 -1
  620. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/login/ecl-site-header-harmonised-login.component.d.ts.map +1 -1
  621. package/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/search/ecl-site-header-harmonised-search.component.d.ts.map +1 -1
  622. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/banner-top/ecl-site-header-standardised-banner-top.component.d.ts.map +1 -1
  623. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.component.d.ts +1 -1
  624. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.component.d.ts.map +1 -1
  625. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.module.d.ts.map +1 -1
  626. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/language/ecl-site-header-standardised-language.component.d.ts.map +1 -1
  627. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/login/ecl-site-header-standardised-login.component.d.ts.map +1 -1
  628. package/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/search/ecl-site-header-standardised-search.component.d.ts.map +1 -1
  629. package/lib/components/ecl-site-header/ecl-site-header-environment/ecl-site-header-environment.component.d.ts.map +1 -1
  630. package/lib/components/ecl-site-header/ecl-site-header.component.d.ts.map +1 -1
  631. package/lib/components/ecl-site-header/ecl-site-header.module.d.ts.map +1 -1
  632. package/lib/components/ecl-site-header/index.d.ts.map +1 -1
  633. package/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.d.ts.map +1 -1
  634. package/lib/components/ecl-site-header/language/ecl-site-header-language.component.d.ts.map +1 -1
  635. package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts.map +1 -1
  636. package/lib/components/ecl-site-header/message/ecl-site-header-message.component.d.ts.map +1 -1
  637. package/lib/components/ecl-site-header/search/ecl-site-header-search.component.d.ts.map +1 -1
  638. package/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.d.ts.map +1 -1
  639. package/lib/components/ecl-social-media-follow/ecl-social-media-follow-link.directive.d.ts.map +1 -1
  640. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.d.ts.map +1 -1
  641. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.d.ts.map +1 -1
  642. package/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.d.ts.map +1 -1
  643. package/lib/components/ecl-social-media-share/ecl-social-media-share-link.directive.d.ts.map +1 -1
  644. package/lib/components/ecl-social-media-share/ecl-social-media-share.component.d.ts.map +1 -1
  645. package/lib/components/ecl-social-media-share/ecl-social-media-share.module.d.ts.map +1 -1
  646. package/lib/components/ecl-spinner/ecl-spinner-label.directive.d.ts +1 -1
  647. package/lib/components/ecl-spinner/ecl-spinner.component.d.ts.map +1 -1
  648. package/lib/components/ecl-spinner/ecl-spinner.module.d.ts.map +1 -1
  649. package/lib/components/ecl-sticky-container/ecl-sticky-container.component.d.ts.map +1 -1
  650. package/lib/components/ecl-sticky-container/ecl-sticky-container.module.d.ts.map +1 -1
  651. package/lib/components/ecl-table/ecl-table-sort-button.component.d.ts.map +1 -1
  652. package/lib/components/ecl-table/ecl-table.directive.d.ts +1 -1
  653. package/lib/components/ecl-table/ecl-table.directive.d.ts.map +1 -1
  654. package/lib/components/ecl-table/ecl-table.module.d.ts.map +1 -1
  655. package/lib/components/ecl-tabs/ecl-tab-label.component.d.ts.map +1 -1
  656. package/lib/components/ecl-tabs/ecl-tab-more.component.d.ts.map +1 -1
  657. package/lib/components/ecl-tabs/ecl-tab.component.d.ts.map +1 -1
  658. package/lib/components/ecl-tabs/ecl-tabs.component.d.ts +3 -3
  659. package/lib/components/ecl-tabs/ecl-tabs.component.d.ts.map +1 -1
  660. package/lib/components/ecl-tabs/ecl-tabs.module.d.ts.map +1 -1
  661. package/lib/components/ecl-tag/ecl-tag.component.d.ts.map +1 -1
  662. package/lib/components/ecl-tag/ecl-tag.module.d.ts.map +1 -1
  663. package/lib/components/ecl-text-area/ecl-text-area.directive.d.ts.map +1 -1
  664. package/lib/components/ecl-text-area/ecl-text-area.module.d.ts.map +1 -1
  665. package/lib/components/ecl-text-input/ecl-text-input.directive.d.ts.map +1 -1
  666. package/lib/components/ecl-text-input/ecl-text-input.module.d.ts.map +1 -1
  667. package/lib/components/ecl-timeline/ecl-timeline-item-label.directive.d.ts.map +1 -1
  668. package/lib/components/ecl-timeline/ecl-timeline-item-title.directive.d.ts.map +1 -1
  669. package/lib/components/ecl-timeline/ecl-timeline-item.component.d.ts.map +1 -1
  670. package/lib/components/ecl-timeline/ecl-timeline.component.d.ts +2 -3
  671. package/lib/components/ecl-timeline/ecl-timeline.component.d.ts.map +1 -1
  672. package/lib/components/ecl-timeline/ecl-timeline.module.d.ts.map +1 -1
  673. package/lib/components/index.d.ts.map +1 -1
  674. package/lib/model/ecl-menu-item.model.d.ts +3 -2
  675. package/lib/model/ecl-menu-item.model.d.ts.map +1 -1
  676. package/lib/services/ecl-default-language.service.d.ts.map +1 -1
  677. package/lib/services/ecl-theme.service.d.ts.map +1 -1
  678. package/lib/shared/ecl-all.module.d.ts.map +1 -1
  679. package/lib/utils/directives/ecl-click-outside/ecl-click-outside.directive.d.ts.map +1 -1
  680. package/lib/utils/directives/ecl-click-outside/index.d.ts.map +1 -1
  681. package/lib/utils/directives/ecl-hidden/ecl-hidden.module.d.ts.map +1 -1
  682. package/lib/utils/directives/ecl-hidden/index.d.ts.map +1 -1
  683. package/lib/utils/dom/dom-helpers.d.ts.map +1 -1
  684. package/package.json +2 -2
@@ -1,11 +1,13 @@
1
- import { Component, Input, ContentChildren, Output, EventEmitter, HostBinding, HostListener, } from '@angular/core';
1
+ import { __decorate } from "tslib";
2
+ import { Breakpoints } from '@angular/cdk/layout';
3
+ import { Component, ContentChildren, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';
4
+ import { coerceNumber } from '@eui/base';
2
5
  import * as Hammer from 'hammerjs';
3
- import { EclMenuItemComponent } from './ecl-menu-item.component';
4
6
  import { Subject, of } from 'rxjs';
5
- import { takeUntil, mergeWith } from 'rxjs/operators';
6
- import { EclMenuItemSelectEvent } from '../common/ecl-menu-item.event';
7
- import { Breakpoints } from '@angular/cdk/layout';
7
+ import { mergeWith, takeUntil } from 'rxjs/operators';
8
8
  import { ECLBaseDirective } from '../../ecl-base.directive';
9
+ import { EclMenuItemSelectEvent } from '../common/ecl-menu-item.event';
10
+ import { EclMenuItemComponent } from './ecl-menu-item.component';
9
11
  import * as i0 from "@angular/core";
10
12
  import * as i1 from "@angular/cdk/layout";
11
13
  import * as i2 from "../../ecl-button/ecl-button.component";
@@ -15,23 +17,30 @@ import * as i5 from "../../ecl-link/ecl-link.directive";
15
17
  import * as i6 from "@ngx-translate/core";
16
18
  export class EclMenuComponent extends ECLBaseDirective {
17
19
  get cssClasses() {
18
- return [
19
- super.getCssClasses('ecl-menu'),
20
- 'ecl-menu--transition',
21
- `ecl-menu--group${this.group}`,
22
- ].join(' ');
20
+ return [super.getCssClasses('ecl-menu'), 'ecl-menu--transition', `ecl-menu--group${this.group}`].join(' ');
23
21
  }
24
- constructor(differs, cdkBreakpointObserver) {
22
+ constructor(el, differs, cdkBreakpointObserver, renderer) {
25
23
  super();
24
+ this.el = el;
26
25
  this.differs = differs;
27
26
  this.cdkBreakpointObserver = cdkBreakpointObserver;
27
+ this.renderer = renderer;
28
28
  this.group = '1';
29
+ this.maxLines = 0;
29
30
  this.menuItemSelect = new EventEmitter();
30
31
  this.isHamburgerMenuOpened = false;
31
32
  this.isMobileBreakpoint = false;
32
33
  this.isMenuHidden = false;
34
+ this.hasOverflow = false;
35
+ this.isShowPrevBtn = false;
36
+ this.isShowNextBtn = false;
37
+ this.isCurrentItemVisible = false;
33
38
  this.destroy$ = new Subject();
39
+ this.totalItemsWidth = 0;
40
+ this.offsetLeft = 0;
41
+ this.direction = 'ltr';
34
42
  this.hammertime = new Hammer.default(document, { inputClass: Hammer.TouchInput });
43
+ this.TIMEOUT_INTERVAL = 150;
35
44
  this.differ = this.differs.find([]).create();
36
45
  }
37
46
  keyEvent(event) {
@@ -41,6 +50,16 @@ export class EclMenuComponent extends ECLBaseDirective {
41
50
  this.closeHamburgerMenu();
42
51
  }
43
52
  }
53
+ onResize() {
54
+ clearTimeout(this.resizeTimer);
55
+ this.resizeTimer = setTimeout(() => {
56
+ this.renderer.removeClass(this.el.nativeElement, 'ecl-menu--transition');
57
+ this.totalItemsWidth = 0;
58
+ this.checkMenuItems();
59
+ this.checkMenuOverflow();
60
+ this.renderer.addClass(this.el.nativeElement, 'ecl-menu--transition');
61
+ }, this.TIMEOUT_INTERVAL);
62
+ }
44
63
  ngOnInit() {
45
64
  this.observeBreakpointChanges();
46
65
  this.observeSwipeGestures();
@@ -48,17 +67,24 @@ export class EclMenuComponent extends ECLBaseDirective {
48
67
  ngAfterContentInit() {
49
68
  this.observeRootMenuItemsChanges();
50
69
  }
51
- onSwipeLeft(evt) {
70
+ ngAfterViewInit() {
71
+ clearTimeout(this.resizeTimer);
72
+ this.resizeTimer = setTimeout(() => {
73
+ this.checkMenuItems();
74
+ this.checkMenuOverflow();
75
+ }, this.TIMEOUT_INTERVAL);
76
+ }
77
+ onSwipeLeft() {
52
78
  if (this.isMobileBreakpoint) {
53
79
  this.openHamburgerMenu();
54
80
  }
55
81
  }
56
- onSwipeRight(evt) {
82
+ onSwipeRight() {
57
83
  if (this.isMobileBreakpoint) {
58
84
  this.closeHamburgerMenu();
59
85
  }
60
86
  }
61
- onOverlayClick(evt) {
87
+ onOverlayClick() {
62
88
  this.closeHamburgerMenu();
63
89
  }
64
90
  onMenuOpenClick(evt) {
@@ -80,11 +106,137 @@ export class EclMenuComponent extends ECLBaseDirective {
80
106
  this.hammertime.off('swipeleft');
81
107
  this.hammertime.off('swiperight');
82
108
  }
109
+ onPrevBtnClick() {
110
+ this.offsetLeft = 0;
111
+ if (this.direction === 'rtl') {
112
+ this.itemsList.nativeElement.style.right = '0';
113
+ this.itemsList.nativeElement.style.left = 'auto';
114
+ }
115
+ else {
116
+ this.itemsList.nativeElement.style.left = '0';
117
+ this.itemsList.nativeElement.style.right = 'auto';
118
+ }
119
+ this.isShowPrevBtn = false;
120
+ this.isShowNextBtn = true;
121
+ this.refreshDisplay();
122
+ }
123
+ onNextBtnClick() {
124
+ this.isShowPrevBtn = true;
125
+ this.isShowNextBtn = false;
126
+ if (this.direction === 'rtl') {
127
+ this.showNextSlideRtl();
128
+ }
129
+ else {
130
+ this.showNextSlideLtr();
131
+ }
132
+ this.refreshDisplay();
133
+ }
134
+ showNextSlideLtr() {
135
+ const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;
136
+ this.offsetLeft =
137
+ this.lastVisibleItem.el.nativeElement.getBoundingClientRect().left -
138
+ this.itemsList.nativeElement.getBoundingClientRect().left -
139
+ btnOffsetWidth;
140
+ this.itemsList.nativeElement.style.left = `-${this.offsetLeft}px`;
141
+ this.itemsList.nativeElement.style.right = 'auto';
142
+ }
143
+ showNextSlideRtl() {
144
+ const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;
145
+ this.offsetLeft =
146
+ this.itemsList.nativeElement.getBoundingClientRect().right -
147
+ this.lastVisibleItem.el.nativeElement.getBoundingClientRect().right -
148
+ btnOffsetWidth;
149
+ this.itemsList.nativeElement.style.right = `-${this.offsetLeft}px`;
150
+ this.itemsList.nativeElement.style.left = 'auto';
151
+ }
152
+ refreshDisplay() {
153
+ this.eclRootMenuItems.forEach((item) => {
154
+ item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);
155
+ item.isVisible = !item.isVisible;
156
+ });
157
+ }
158
+ checkMenuOverflow() {
159
+ this.hasOverflow = this.totalItemsWidth > this.innerSection.nativeElement.offsetWidth;
160
+ if (!this.hasOverflow || this.isMobileBreakpoint) {
161
+ this.resetOverflowValues();
162
+ return;
163
+ }
164
+ this.checkCurrentItem();
165
+ this.resetVisibilityIndicator();
166
+ if (this.offsetLeft === 0) {
167
+ this.manageOverflowEnd();
168
+ }
169
+ else {
170
+ this.manageOverflowBeginning();
171
+ }
172
+ }
173
+ manageOverflowBeginning() {
174
+ if (this.direction === 'rtl') {
175
+ this.eclRootMenuItems
176
+ .filter((item) => item.el.nativeElement.getBoundingClientRect().right <= this.innerSection.nativeElement.getBoundingClientRect().right)
177
+ .forEach((el) => (el.isVisible = true));
178
+ }
179
+ else {
180
+ this.eclRootMenuItems
181
+ .filter((item) => item.el.nativeElement.getBoundingClientRect().left >= this.innerSection.nativeElement.getBoundingClientRect().left)
182
+ .forEach((el) => (el.isVisible = true));
183
+ }
184
+ }
185
+ manageOverflowEnd() {
186
+ this.isShowNextBtn = true;
187
+ if (this.direction === 'rtl') {
188
+ for (const item of this.eclRootMenuItems) {
189
+ if (item.el.nativeElement.getBoundingClientRect().left < this.itemsList.nativeElement.getBoundingClientRect().left) {
190
+ this.lastVisibleItem = item;
191
+ break;
192
+ }
193
+ item.isVisible = true;
194
+ }
195
+ }
196
+ else {
197
+ for (const item of this.eclRootMenuItems) {
198
+ if (item.el.nativeElement.getBoundingClientRect().right > this.itemsList.nativeElement.getBoundingClientRect().right) {
199
+ this.lastVisibleItem = item;
200
+ break;
201
+ }
202
+ item.isVisible = true;
203
+ }
204
+ }
205
+ }
206
+ resetVisibilityIndicator() {
207
+ this.eclRootMenuItems.forEach((item) => (item.isVisible = false));
208
+ }
209
+ resetOverflowValues() {
210
+ this.isShowPrevBtn = false;
211
+ this.isShowNextBtn = false;
212
+ this.hasOverflow = false;
213
+ this.itemsList.nativeElement.style.left = '0';
214
+ this.offsetLeft = 0;
215
+ this.totalItemsWidth = 0;
216
+ this.lastVisibleItem = null;
217
+ }
218
+ checkCurrentItem() {
219
+ this.currentItem = this.eclRootMenuItems.find((item) => item.isCurrent);
220
+ if (this.currentItem) {
221
+ if (this.currentItem.isVisible) {
222
+ this.isCurrentItemVisible = true;
223
+ }
224
+ else {
225
+ this.isCurrentItemVisible = false;
226
+ }
227
+ }
228
+ }
229
+ checkMenuItems() {
230
+ this.eclRootMenuItems.forEach((item) => {
231
+ item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);
232
+ this.totalItemsWidth += item.el.nativeElement.offsetWidth;
233
+ });
234
+ }
83
235
  get isMenuExpandedInMobile() {
84
236
  return this.isMobileBreakpoint && this.isAnyRootMenuItemExpanded();
85
237
  }
86
238
  isAnyRootMenuItemExpanded() {
87
- return this.eclRootMenuItems.some(item => item.isExpanded);
239
+ return this.eclRootMenuItems.some((item) => item.isExpanded);
88
240
  }
89
241
  createRootMenuItemsChangesObservable() {
90
242
  return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil(this.destroy$));
@@ -92,35 +244,35 @@ export class EclMenuComponent extends ECLBaseDirective {
92
244
  onMenuItemChanges() {
93
245
  this.diff = this.differ.diff(this.eclRootMenuItems);
94
246
  if (!this.diff) {
95
- this.eclRootMenuItems.forEach(rootItem => {
247
+ this.eclRootMenuItems.forEach((rootItem) => {
96
248
  this.connectMenuItemEvents(rootItem);
97
249
  });
98
250
  }
99
251
  else {
100
- this.diff.forEachAddedItem(change => {
252
+ this.diff.forEachAddedItem((change) => {
101
253
  this.connectMenuItemEvents(change.item);
102
254
  });
103
255
  }
104
256
  }
105
257
  connectMenuItemEvents(item) {
106
- item.menuItemSelect
107
- .pipe(takeUntil(this.destroy$))
108
- .subscribe((evt) => { this.onRootMenuItemSelected(evt); });
109
- item.menuItemHover
110
- .pipe(takeUntil(this.destroy$))
111
- .subscribe((evt) => { this.onRootMenuItemHovered(evt); });
112
- item.menuItemHoverOut
113
- .pipe(takeUntil(this.destroy$))
114
- .subscribe((evt) => { this.onRootMenuItemHoveredOut(evt); });
115
- item.menuItemCaret
116
- .pipe(takeUntil(this.destroy$))
117
- .subscribe((evt) => { this.onRootMenuItemCaret(evt); });
118
- item.menuMegaItemSelect
119
- .pipe(takeUntil(this.destroy$))
120
- .subscribe((evt) => { this.onMenuMegaItemSelected(item, evt); });
121
- item.menuItemFocus
122
- .pipe(takeUntil(this.destroy$))
123
- .subscribe((evt) => { this.onRootMenuItemFocused(item, evt); });
258
+ item.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
259
+ this.onRootMenuItemSelected(evt);
260
+ });
261
+ item.menuItemHover.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
262
+ this.onRootMenuItemHovered(evt);
263
+ });
264
+ item.menuItemHoverOut.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
265
+ this.onRootMenuItemHoveredOut(evt);
266
+ });
267
+ item.menuItemCaret.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
268
+ this.onRootMenuItemCaret(evt);
269
+ });
270
+ item.menuMegaItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
271
+ this.onMenuMegaItemSelected(item, evt);
272
+ });
273
+ item.menuItemFocus.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
274
+ this.onRootMenuItemFocused(item, evt);
275
+ });
124
276
  }
125
277
  onRootMenuItemFocused(item, evt) {
126
278
  const requestedRootMenuItem = evt.menuItem;
@@ -142,9 +294,40 @@ export class EclMenuComponent extends ECLBaseDirective {
142
294
  }
143
295
  onRootMenuItemHovered(evt) {
144
296
  const requestedRootMenuItem = evt.menuItem;
145
- requestedRootMenuItem.isHovered = true;
146
- this.closeRootMenuButOneItem(requestedRootMenuItem);
147
- this.showMenu();
297
+ if (requestedRootMenuItem.isVisible) {
298
+ if (!this.isMobileBreakpoint) {
299
+ this.checkMegaMenu(requestedRootMenuItem);
300
+ }
301
+ requestedRootMenuItem.isHovered = true;
302
+ this.closeRootMenuButOneItem(requestedRootMenuItem);
303
+ this.showMenu();
304
+ }
305
+ }
306
+ checkMegaMenu(menuItem) {
307
+ if (menuItem.isFull) {
308
+ if (menuItem.submenu.isRtl) {
309
+ menuItem.submenu.offsetRight = this.offsetLeft;
310
+ }
311
+ else {
312
+ menuItem.submenu.offsetLeft = this.offsetLeft;
313
+ }
314
+ return;
315
+ }
316
+ this.checkEnoughSpaceForMegaMenu(menuItem);
317
+ }
318
+ checkEnoughSpaceForMegaMenu(menuItem) {
319
+ const megaBounding = menuItem.submenu.el.nativeElement.getBoundingClientRect();
320
+ const containerBounding = this.innerSection.nativeElement.getBoundingClientRect();
321
+ const menuItemBounding = menuItem.el.nativeElement.getBoundingClientRect();
322
+ const megaWidth = megaBounding.width;
323
+ const containerWidth = containerBounding.width;
324
+ const menuItemPosition = menuItemBounding.left - containerBounding.left;
325
+ if (menuItemPosition + megaWidth > containerWidth) {
326
+ menuItem.submenu.isRtl = true;
327
+ }
328
+ else {
329
+ menuItem.submenu.isRtl = false;
330
+ }
148
331
  }
149
332
  onRootMenuItemHoveredOut(evt) {
150
333
  if (!this.isMobileBreakpoint) {
@@ -171,17 +354,18 @@ export class EclMenuComponent extends ECLBaseDirective {
171
354
  this.deselectMenuItems(this.eclRootMenuItems.toArray());
172
355
  }
173
356
  deselectAllSubmenusItems() {
174
- this.eclRootMenuItems.forEach(rootItem => {
357
+ this.eclRootMenuItems.forEach((rootItem) => {
175
358
  this.deselectMenuItems(rootItem.children);
176
359
  });
177
360
  }
178
361
  deselectMenuItems(items) {
179
- items.forEach(it => {
362
+ items.forEach((it) => {
180
363
  it.isCurrent = false;
181
364
  });
182
365
  }
183
366
  selectMenuItem(item) {
184
367
  item.isCurrent = true;
368
+ this.currentItem = item;
185
369
  }
186
370
  hideMenu() {
187
371
  this.isMenuHidden = true;
@@ -190,22 +374,21 @@ export class EclMenuComponent extends ECLBaseDirective {
190
374
  this.isMenuHidden = false;
191
375
  }
192
376
  closeRootMenu() {
193
- this.eclRootMenuItems.forEach(it => {
377
+ this.eclRootMenuItems.forEach((it) => {
194
378
  it.isExpanded = false;
195
379
  it.isHovered = false;
196
380
  });
197
381
  }
198
382
  closeRootMenuButOneItem(item) {
199
383
  this.eclRootMenuItems
200
- .filter(it => it !== item)
201
- .forEach(it => {
384
+ .filter((it) => it !== item)
385
+ .forEach((it) => {
202
386
  it.isExpanded = false;
203
387
  it.isHovered = false;
204
388
  });
205
389
  }
206
390
  removeHoverFromAllItems() {
207
- this.eclRootMenuItems
208
- .forEach(it => {
391
+ this.eclRootMenuItems.forEach((it) => {
209
392
  it.isHovered = false;
210
393
  });
211
394
  }
@@ -223,32 +406,48 @@ export class EclMenuComponent extends ECLBaseDirective {
223
406
  }
224
407
  observeRootMenuItemsChanges() {
225
408
  this.diff = this.differ.diff(this.eclRootMenuItems);
226
- this.createRootMenuItemsChangesObservable()
227
- .pipe(takeUntil(this.destroy$))
228
- .subscribe(this.onMenuItemChanges.bind(this));
409
+ this.createRootMenuItemsChangesObservable().pipe(takeUntil(this.destroy$)).subscribe(this.onMenuItemChanges.bind(this));
229
410
  }
230
411
  observeSwipeGestures() {
231
412
  this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));
232
413
  this.hammertime.on('swiperight', this.onSwipeRight.bind(this));
233
414
  }
234
415
  observeBreakpointChanges() {
235
- this.cdkBreakpointObserver.observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
416
+ this.cdkBreakpointObserver
417
+ .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
236
418
  .pipe(takeUntil(this.destroy$))
237
- .subscribe(result => {
419
+ .subscribe((result) => {
238
420
  this.isMobileBreakpoint = result.matches;
239
421
  });
240
422
  }
241
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.3", ngImport: i0, type: EclMenuComponent, deps: [{ token: i0.IterableDiffers }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
242
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.3", type: EclMenuComponent, selector: "ecl-menu", inputs: { group: "group" }, outputs: { menuItemSelect: "menuItemSelect" }, host: { listeners: { "keydown": "keyEvent($event)" }, properties: { "class": "this.cssClasses", "attr.aria-expanded": "this.isHamburgerMenuOpened", "class.ecl-menu--forced-mobile": "this.isMobileBreakpoint", "class.ecl-menu--forced-close": "this.isMenuHidden" } }, queries: [{ propertyName: "eclRootMenuItems", predicate: EclMenuItemComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick($event)\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink\n href=\"#\"\n variant=\"standalone\"\n class=\"ecl-menu__open\"\n (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section class=\"ecl-menu__inner\" [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"text\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton\n variant=\"text\"\n class=\"ecl-menu__back\"\n (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n\n <ul class=\"ecl-menu__list\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "directive", type: i3.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i4.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: i5.EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
423
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: EclMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i1.BreakpointObserver }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
424
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.4", type: EclMenuComponent, selector: "ecl-menu", inputs: { group: "group", maxLines: "maxLines" }, outputs: { menuItemSelect: "menuItemSelect" }, host: { listeners: { "keydown": "keyEvent($event)", "window:resize": "onResize()" }, properties: { "class": "this.cssClasses", "attr.aria-expanded": "this.isHamburgerMenuOpened", "class.ecl-menu--forced-mobile": "this.isMobileBreakpoint", "class.ecl-menu--forced-close": "this.isMenuHidden" } }, queries: [{ propertyName: "eclRootMenuItems", predicate: EclMenuItemComponent }], viewQueries: [{ propertyName: "innerSection", first: true, predicate: ["innerSection"], descendants: true }, { propertyName: "itemsList", first: true, predicate: ["itemsList"], descendants: true }, { propertyName: "btnPrevious", first: true, predicate: ["btnPrevious"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" class=\"ecl-menu__open\" (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"text\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"text\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isCurrentItemVisible\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isCurrentItemVisible\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList>\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "directive", type: i3.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i4.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: i5.EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
243
425
  }
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.3", ngImport: i0, type: EclMenuComponent, decorators: [{
426
+ __decorate([
427
+ coerceNumber
428
+ ], EclMenuComponent.prototype, "maxLines", void 0);
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: EclMenuComponent, decorators: [{
245
430
  type: Component,
246
- args: [{ selector: 'ecl-menu', template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick($event)\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink\n href=\"#\"\n variant=\"standalone\"\n class=\"ecl-menu__open\"\n (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section class=\"ecl-menu__inner\" [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"text\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton\n variant=\"text\"\n class=\"ecl-menu__back\"\n (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n\n <ul class=\"ecl-menu__list\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
247
- }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i1.BreakpointObserver }]; }, propDecorators: { group: [{
431
+ args: [{ selector: 'ecl-menu', template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" class=\"ecl-menu__open\" (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"text\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"text\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isCurrentItemVisible\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isCurrentItemVisible\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList>\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
432
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i1.BreakpointObserver }, { type: i0.Renderer2 }]; }, propDecorators: { group: [{
433
+ type: Input
434
+ }], maxLines: [{
248
435
  type: Input
249
436
  }], eclRootMenuItems: [{
250
437
  type: ContentChildren,
251
438
  args: [EclMenuItemComponent]
439
+ }], innerSection: [{
440
+ type: ViewChild,
441
+ args: ['innerSection']
442
+ }], itemsList: [{
443
+ type: ViewChild,
444
+ args: ['itemsList']
445
+ }], btnPrevious: [{
446
+ type: ViewChild,
447
+ args: ['btnPrevious']
448
+ }], btnNext: [{
449
+ type: ViewChild,
450
+ args: ['btnNext']
252
451
  }], menuItemSelect: [{
253
452
  type: Output
254
453
  }], cssClasses: [{
@@ -266,5 +465,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.3",
266
465
  }], keyEvent: [{
267
466
  type: HostListener,
268
467
  args: ['keydown', ['$event']]
468
+ }], onResize: [{
469
+ type: HostListener,
470
+ args: ['window:resize']
269
471
  }] } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1tZW51L2VjbC1tZW51L2VjbC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS9lY2wtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxlQUFlLEVBSWYsTUFBTSxFQUNOLFlBQVksRUFJWixXQUFXLEVBRVgsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUF1RSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVJLE9BQU8sRUFBc0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBVzVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFPbEQsSUFDSSxVQUFVO1FBQ1YsT0FBTztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQy9CLHNCQUFzQjtZQUN0QixrQkFBa0IsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNqQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBWUQsWUFDWSxPQUF3QixFQUN4QixxQkFBeUM7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QUFDLE9BQU87Z0JBU2UscUJBQXFCO3NCQUF2RCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDYSxrQkFBa0I7c0JBQS9ELFdBQVc7dUJBQUMsK0JBQStCO2dCQUNDLFlBQVk7c0JBQXhELFdBQVc7dUJBQUMsOEJBQThCO2dCQWlCM0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9uSW5pdCxcbiAgICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgSGFtbWVyIGZyb20gJ2hhbW1lcmpzJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBtZXJnZVdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbUNhcmV0RXZlbnQsIEVjbE1lbnVJdGVtRm9jdXNFdmVudCwgRWNsTWVudUl0ZW1Ib3ZlckV2ZW50LCBFY2xNZW51SXRlbVNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vY29tbW9uL2VjbC1tZW51LWl0ZW0uZXZlbnQnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtbWVudS1pdGVtLm1vZGVsJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTWVudUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZ3JvdXA6IHN0cmluZyA9ICcxJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWNsTWVudUl0ZW1Db21wb25lbnQpIGVjbFJvb3RNZW51SXRlbXM6IFF1ZXJ5TGlzdDxFY2xNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBhbnkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLW1lbnUnKSxcbiAgICAgICAgICAgICdlY2wtbWVudS0tdHJhbnNpdGlvbicsXG4gICAgICAgICAgICBgZWNsLW1lbnUtLWdyb3VwJHt0aGlzLmdyb3VwfWAsXG4gICAgICAgIF0uam9pbignICcpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgaXNIYW1idXJnZXJNZW51T3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtbWVudS0tZm9yY2VkLW1vYmlsZScpIGlzTW9iaWxlQnJlYWtwb2ludDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnUtLWZvcmNlZC1jbG9zZScpIGlzTWVudUhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE1lbnVJdGVtQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRpZmY6IEl0ZXJhYmxlQ2hhbmdlczxFY2xNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbW1lcnRpbWUgPSBuZXcgSGFtbWVyLmRlZmF1bHQoZG9jdW1lbnQsIHsgaW5wdXRDbGFzczogSGFtbWVyLlRvdWNoSW5wdXQgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByaXZhdGUgY2RrQnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm9ic2VydmVTd2lwZUdlc3R1cmVzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLm9ic2VydmVSb290TWVudUl0ZW1zQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uU3dpcGVMZWZ0KGV2dCkge1xuICAgICAgICBpZih0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Td2lwZVJpZ2h0KGV2dCkge1xuICAgICAgICBpZih0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUNsaWNrKGV2dDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgIH1cblxuICAgIG9uTWVudU9wZW5DbGljayhldnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vcGVuSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk1lbnVDbG9zZUNsaWNrKGV2dDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25NZW51QmFja0NsaWNrKGV2dDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuaGFtbWVydGltZS5vZmYoJ3N3aXBlbGVmdCcpO1xuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub2ZmKCdzd2lwZXJpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc01lbnVFeHBhbmRlZEluTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgdGhpcy5pc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xSb290TWVudUl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLmlzRXhwYW5kZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUm9vdE1lbnVJdGVtc0NoYW5nZXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8UXVlcnlMaXN0PEVjbE1lbnVJdGVtQ29tcG9uZW50Pj4ge1xuICAgICAgICByZXR1cm4gb2YodGhpcy5lY2xSb290TWVudUl0ZW1zKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VXaXRoKHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5jaGFuZ2VzKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk1lbnVJdGVtQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLmVjbFJvb3RNZW51SXRlbXMgYXMgYW55KTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlmZikge1xuICAgICAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2gocm9vdEl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdE1lbnVJdGVtRXZlbnRzKHJvb3RJdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaWZmLmZvckVhY2hBZGRlZEl0ZW0oY2hhbmdlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RNZW51SXRlbUV2ZW50cyhjaGFuZ2UuaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdE1lbnVJdGVtRXZlbnRzKGl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50KSB7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1TZWxlY3RcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2dCkgPT4geyB0aGlzLm9uUm9vdE1lbnVJdGVtU2VsZWN0ZWQoZXZ0KTsgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1Ib3ZlclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7IHRoaXMub25Sb290TWVudUl0ZW1Ib3ZlcmVkKGV2dCk7IH0pO1xuICAgICAgICBpdGVtLm1lbnVJdGVtSG92ZXJPdXRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2dCkgPT4geyB0aGlzLm9uUm9vdE1lbnVJdGVtSG92ZXJlZE91dChldnQpOyB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUNhcmV0XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldnQpID0+IHsgdGhpcy5vblJvb3RNZW51SXRlbUNhcmV0KGV2dCk7IH0pO1xuICAgICAgICBpdGVtLm1lbnVNZWdhSXRlbVNlbGVjdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7IHRoaXMub25NZW51TWVnYUl0ZW1TZWxlY3RlZChpdGVtLCBldnQpOyB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUZvY3VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldnQpID0+IHsgdGhpcy5vblJvb3RNZW51SXRlbUZvY3VzZWQoaXRlbSwgZXZ0KTsgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUZvY3VzZWQoaXRlbTogRWNsTWVudUl0ZW0sIGV2dDogRWNsTWVudUl0ZW1Gb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcbiAgICAgICAgaWYgKHJlcXVlc3RlZFJvb3RNZW51SXRlbS5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlSG92ZXJGcm9tQWxsSXRlbXMoKTtcbiAgICAgICAgaXRlbS5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dNZW51KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbVNlbGVjdGVkKGV2dDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXF1ZXN0ZWRSb290TWVudUl0ZW06IEVjbE1lbnVJdGVtID0gZXZ0Lm1lbnVJdGVtO1xuXG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpO1xuICAgICAgICB0aGlzLnNlbGVjdE1lbnVJdGVtKHJlcXVlc3RlZFJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG5cbiAgICAgICAgdGhpcy5zZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1Ib3ZlcmVkKGV2dDogRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcbiAgICAgICAgXG4gICAgICAgIHJlcXVlc3RlZFJvb3RNZW51SXRlbS5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKHJlcXVlc3RlZFJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMuc2hvd01lbnUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtSG92ZXJlZE91dChldnQ6IEVjbE1lbnVJdGVtSG92ZXJFdmVudCk6IHZvaWQge1xuICAgICAgICBpZighdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUNhcmV0KGV2dDogRWNsTWVudUl0ZW1DYXJldEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbTogRWNsTWVudUl0ZW0gPSBldnQubWVudUl0ZW07XG5cbiAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkRm9yTWVudUl0ZW0ocmVxdWVzdGVkUm9vdE1lbnVJdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVudU1lZ2FJdGVtU2VsZWN0ZWQocm9vdE1lbnVJdGVtOiBFY2xNZW51SXRlbSwgZXZ0OiBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFN1Ym1lbnVJdGVtID0gZXZ0Lm1lbnVJdGVtO1xuXG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpO1xuICAgICAgICB0aGlzLnNlbGVjdE1lbnVJdGVtKHJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0ocmVxdWVzdGVkU3VibWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuXG4gICAgICAgIHRoaXMuc2VuZE1lbnVJdGVtU2VsZWN0RXZlbnQoZXZ0KTtcblxuICAgICAgICB0aGlzLmhpZGVNZW51KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXNlbGVjdEFsbFJvb3RNZW51SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RNZW51SXRlbXModGhpcy5lY2xSb290TWVudUl0ZW1zLnRvQXJyYXkoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXNlbGVjdEFsbFN1Ym1lbnVzSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKHJvb3RJdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RNZW51SXRlbXMocm9vdEl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0TWVudUl0ZW1zKGl0ZW1zOiBBcnJheTxFY2xNZW51SXRlbT4pOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICBpdC5pc0N1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RNZW51SXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzQ3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTWVudSgpIHtcbiAgICAgICAgdGhpcy5pc01lbnVIaWRkZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd01lbnUoKSB7XG4gICAgICAgIHRoaXMuaXNNZW51SGlkZGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZVJvb3RNZW51KCkge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICBpdC5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZVJvb3RNZW51QnV0T25lSXRlbShpdGVtOiBFY2xNZW51SXRlbSkge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IGl0ZW0pXG4gICAgICAgICAgICAuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgaXQuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGl0LmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVIb3ZlckZyb21BbGxJdGVtcygpIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zXG4gICAgICAgICAgICAuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgaXQuaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZUV4cGFuZGVkRm9yTWVudUl0ZW0oaXRlbTogRWNsTWVudUl0ZW0pIHtcbiAgICAgICAgaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5IYW1idXJnZXJNZW51KCkge1xuICAgICAgICB0aGlzLmlzSGFtYnVyZ2VyTWVudU9wZW5lZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZUhhbWJ1cmdlck1lbnUoKSB7XG4gICAgICAgIHRoaXMuaXNIYW1idXJnZXJNZW51T3BlbmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbVNlbGVjdC5uZXh0KFxuICAgICAgICAgICAgbmV3IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQoZXZ0Lm1lbnVJdGVtLCBldnQuZG9tRXZlbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlUm9vdE1lbnVJdGVtc0NoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xSb290TWVudUl0ZW1zIGFzIGFueSk7XG4gICAgICAgIHRoaXMuY3JlYXRlUm9vdE1lbnVJdGVtc0NoYW5nZXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5vbk1lbnVJdGVtQ2hhbmdlcy5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVTd2lwZUdlc3R1cmVzKCkge1xuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub24oJ3N3aXBlbGVmdCcsIHRoaXMub25Td2lwZUxlZnQuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuaGFtbWVydGltZS5vbignc3dpcGVyaWdodCcsIHRoaXMub25Td2lwZVJpZ2h0LmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0LCBCcmVha3BvaW50cy5UYWJsZXQsIEJyZWFrcG9pbnRzLlNtYWxsXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVjbC1tZW51X19vdmVybGF5XCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJlY2wtY29udGFpbmVyIGVjbC1tZW51X19jb250YWluZXJcIj5cbiAgICA8YSBlY2xMaW5rXG4gICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgdmFyaWFudD1cInN0YW5kYWxvbmVcIlxuICAgICAgICBjbGFzcz1cImVjbC1tZW51X19vcGVuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTWVudU9wZW5DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxlY2wtaWNvbiBpY29uPVwiaGFtYnVyZ2VyXCIgc2l6ZT1cInNcIj48L2VjbC1pY29uPiB7eyAnZWNsLm1lbnUuTUVOVScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2E+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImVjbC1tZW51X19pbm5lclwiIFtjbGFzcy5lY2wtbWVudV9faW5uZXItLWV4cGFuZGVkXT1cImlzTWVudUV4cGFuZGVkSW5Nb2JpbGVcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImVjbC1tZW51X19pbm5lci1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlY2wtbWVudV9fY2xvc2VcIlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclN0eWxlQ2xhc3M9XCJlY2wtbWVudV9fY2xvc2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51Q2xvc2VDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjbG9zZS1maWxsZWRcIiBzaXplPVwic1wiPjwvZWNsLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+e3sgJ2VjbC5jb21tb24uQ0xPU0UnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtbWVudV9fdGl0bGVcIj57eyAnZWNsLm1lbnUuTUVOVScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBlY2xCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUJhY2tDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPnt7ICdlY2wuY29tbW9uLkJBQ0snIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDx1bCBjbGFzcz1cImVjbC1tZW51X19saXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvdWw+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1tZW51L2VjbC1tZW51L2VjbC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS9lY2wtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBR0gsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBTUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBYyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUF1RSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQWFqRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBWWxELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxD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dUI7a0dBRjNCLGdCQUFnQjtrQkFYNUIsU0FBUzsrQkFDSSxVQUFVO3dMQVdYLEtBQUs7c0JBQWIsS0FBSztnQkFDaUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFbUIsZ0JBQWdCO3NCQUF0RCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFDVixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0QsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBRVYsY0FBYztzQkFBdkIsTUFBTTtnQkFHSCxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFLZSxxQkFBcUI7c0JBQXZELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNhLGtCQUFrQjtzQkFBL0QsV0FBVzt1QkFBQywrQkFBK0I7Z0JBQ0MsWUFBWTtzQkFBeEQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBOEIzQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVuQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIEhhbW1lciBmcm9tICdoYW1tZXJqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tZW51LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9lY2wtYnV0dG9uJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtQ2FyZXRFdmVudCwgRWNsTWVudUl0ZW1Gb2N1c0V2ZW50LCBFY2xNZW51SXRlbUhvdmVyRXZlbnQsIEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQgfSBmcm9tICcuLi9jb21tb24vZWNsLW1lbnUtaXRlbS5ldmVudCc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZWNsLW1lbnUtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTWVudUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgZ3JvdXA6IHN0cmluZyA9ICcxJztcbiAgICBAY29lcmNlTnVtYmVyIEBJbnB1dCgpIG1heExpbmVzID0gMDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWNsTWVudUl0ZW1Db21wb25lbnQpIGVjbFJvb3RNZW51SXRlbXM6IFF1ZXJ5TGlzdDxFY2xNZW51SXRlbUNvbXBvbmVudD47XG4gICAgQFZpZXdDaGlsZCgnaW5uZXJTZWN0aW9uJykgaW5uZXJTZWN0aW9uOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zTGlzdCcpIGl0ZW1zTGlzdDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdidG5QcmV2aW91cycpIGJ0blByZXZpb3VzOiBFY2xCdXR0b25Db21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnYnRuTmV4dCcpIGJ0bk5leHQ6IEVjbEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIEBPdXRwdXQoKSBtZW51SXRlbVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1TZWxlY3RFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLW1lbnUnKSwgJ2VjbC1tZW51LS10cmFuc2l0aW9uJywgYGVjbC1tZW51LS1ncm91cCR7dGhpcy5ncm91cH1gXS5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKSBpc0hhbWJ1cmdlck1lbnVPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1tZW51LS1mb3JjZWQtbW9iaWxlJykgaXNNb2JpbGVCcmVha3BvaW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtbWVudS0tZm9yY2VkLWNsb3NlJykgaXNNZW51SGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBoYXNPdmVyZmxvdyA9IGZhbHNlO1xuICAgIGlzU2hvd1ByZXZCdG4gPSBmYWxzZTtcbiAgICBpc1Nob3dOZXh0QnRuID0gZmFsc2U7XG4gICAgaXNDdXJyZW50SXRlbVZpc2libGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xNZW51SXRlbUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkaWZmOiBJdGVyYWJsZUNoYW5nZXM8RWNsTWVudUl0ZW1Db21wb25lbnQ+O1xuICAgIHByaXZhdGUgdG90YWxJdGVtc1dpZHRoID0gMDtcbiAgICBwcml2YXRlIG9mZnNldExlZnQgPSAwO1xuICAgIHByaXZhdGUgZGlyZWN0aW9uID0gJ2x0cic7XG4gICAgcHJpdmF0ZSBsYXN0VmlzaWJsZUl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50O1xuICAgIHByaXZhdGUgY3VycmVudEl0ZW06IEVjbE1lbnVJdGVtO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFtbWVydGltZSA9IG5ldyBIYW1tZXIuZGVmYXVsdChkb2N1bWVudCwgeyBpbnB1dENsYXNzOiBIYW1tZXIuVG91Y2hJbnB1dCB9KTtcbiAgICBwcml2YXRlIHJlc2l6ZVRpbWVyOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBUSU1FT1VUX0lOVEVSVkFMID0gMTUwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lcik7XG4gICAgICAgIHRoaXMucmVzaXplVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZWNsLW1lbnUtLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtc1dpZHRoID0gMDtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51SXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51T3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZWNsLW1lbnUtLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfSwgdGhpcy5USU1FT1VUX0lOVEVSVkFMKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlU3dpcGVHZXN0dXJlcygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlUm9vdE1lbnVJdGVtc0NoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVyKTtcbiAgICAgICAgdGhpcy5yZXNpemVUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja01lbnVJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy5jaGVja01lbnVPdmVyZmxvdygpO1xuICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIG9uU3dpcGVMZWZ0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU3dpcGVSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgfVxuXG4gICAgb25NZW51T3BlbkNsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5IYW1idXJnZXJNZW51KCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uTWVudUNsb3NlQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk1lbnVCYWNrQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5oYW1tZXJ0aW1lLm9mZignc3dpcGVsZWZ0Jyk7XG4gICAgICAgIHRoaXMuaGFtbWVydGltZS5vZmYoJ3N3aXBlcmlnaHQnKTtcbiAgICB9XG5cbiAgICBvblByZXZCdG5DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtc0xpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9ICcwJztcbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICdhdXRvJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICcwJztcbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAnYXV0byc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzU2hvd1ByZXZCdG4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Nob3dOZXh0QnRuID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hEaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgb25OZXh0QnRuQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93UHJldkJ0biA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNTaG93TmV4dEJ0biA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd05leHRTbGlkZVJ0bCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93TmV4dFNsaWRlTHRyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlZnJlc2hEaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TmV4dFNsaWRlTHRyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBidG5PZmZzZXRXaWR0aCA9IHRoaXMuYnRuTmV4dC5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLm9mZnNldExlZnQgPVxuICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG4gICAgICAgICAgICBidG5PZmZzZXRXaWR0aDtcblxuICAgICAgICB0aGlzLml0ZW1zTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBgLSR7dGhpcy5vZmZzZXRMZWZ0fXB4YDtcbiAgICAgICAgdGhpcy5pdGVtc0xpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9ICdhdXRvJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dOZXh0U2xpZGVSdGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ0bk9mZnNldFdpZHRoID0gdGhpcy5idG5OZXh0LmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIHRoaXMub2Zmc2V0TGVmdCA9XG4gICAgICAgICAgICB0aGlzLml0ZW1zTGlzdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMubGFzdFZpc2libGVJdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgLVxuICAgICAgICAgICAgYnRuT2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgdGhpcy5pdGVtc0xpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9IGAtJHt0aGlzLm9mZnNldExlZnR9cHhgO1xuICAgICAgICB0aGlzLml0ZW1zTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAnYXV0byc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoRGlzcGxheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uY2hlY2tNZW51SXRlbSh0aGlzLm1heExpbmVzLCB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCk7XG4gICAgICAgICAgICBpdGVtLmlzVmlzaWJsZSA9ICFpdGVtLmlzVmlzaWJsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja01lbnVPdmVyZmxvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNPdmVyZmxvdyA9IHRoaXMudG90YWxJdGVtc1dpZHRoID4gdGhpcy5pbm5lclNlY3Rpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLmhhc092ZXJmbG93IHx8IHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0T3ZlcmZsb3dWYWx1ZXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tDdXJyZW50SXRlbSgpO1xuICAgICAgICB0aGlzLnJlc2V0VmlzaWJpbGl0eUluZGljYXRvcigpO1xuXG4gICAgICAgIGlmICh0aGlzLm9mZnNldExlZnQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlT3ZlcmZsb3dFbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlT3ZlcmZsb3dCZWdpbm5pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlT3ZlcmZsb3dCZWdpbm5pbmcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IDw9IHRoaXMuaW5uZXJTZWN0aW9uLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGVsKSA9PiAoZWwuaXNWaXNpYmxlID0gdHJ1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA+PSB0aGlzLmlubmVyU2VjdGlvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGVsKSA9PiAoZWwuaXNWaXNpYmxlID0gdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VPdmVyZmxvd0VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOZXh0QnRuID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZWNsUm9vdE1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA8IHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5lY2xSb290TWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCA+IHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlbS5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFZpc2liaWxpdHlJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pc1Zpc2libGUgPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRPdmVyZmxvd1ZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dQcmV2QnRuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTaG93TmV4dEJ0biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc092ZXJmbG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICcwJztcbiAgICAgICAgdGhpcy5vZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zV2lkdGggPSAwO1xuICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0N1cnJlbnRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtID0gdGhpcy5lY2xSb290TWVudUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNDdXJyZW50KTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtLmlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50SXRlbVZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ3VycmVudEl0ZW1WaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTWVudUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jaGVja01lbnVJdGVtKHRoaXMubWF4TGluZXMsIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KTtcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtc1dpZHRoICs9IGl0ZW0uZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc01lbnVFeHBhbmRlZEluTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgdGhpcy5pc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xSb290TWVudUl0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNFeHBhbmRlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSb290TWVudUl0ZW1zQ2hhbmdlc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxRdWVyeUxpc3Q8RWNsTWVudUl0ZW1Db21wb25lbnQ+PiB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLmVjbFJvb3RNZW51SXRlbXMpLnBpcGUobWVyZ2VXaXRoKHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5jaGFuZ2VzKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVudUl0ZW1DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpZmYgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuZWNsUm9vdE1lbnVJdGVtcyBhcyBhbnkpO1xuXG4gICAgICAgIGlmICghdGhpcy5kaWZmKSB7XG4gICAgICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgocm9vdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RNZW51SXRlbUV2ZW50cyhyb290SXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlmZi5mb3JFYWNoQWRkZWRJdGVtKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RNZW51SXRlbUV2ZW50cyhjaGFuZ2UuaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdE1lbnVJdGVtRXZlbnRzKGl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtU2VsZWN0ZWQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1Ib3Zlci5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1Ib3ZlcmVkKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtLm1lbnVJdGVtSG92ZXJPdXQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtSG92ZXJlZE91dChldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUNhcmV0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUNhcmV0KGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtLm1lbnVNZWdhSXRlbVNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25NZW51TWVnYUl0ZW1TZWxlY3RlZChpdGVtLCBldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUZvY3VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUZvY3VzZWQoaXRlbSwgZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUZvY3VzZWQoaXRlbTogRWNsTWVudUl0ZW0sIGV2dDogRWNsTWVudUl0ZW1Gb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcbiAgICAgICAgaWYgKHJlcXVlc3RlZFJvb3RNZW51SXRlbS5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlSG92ZXJGcm9tQWxsSXRlbXMoKTtcbiAgICAgICAgaXRlbS5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dNZW51KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbVNlbGVjdGVkKGV2dDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXF1ZXN0ZWRSb290TWVudUl0ZW06IEVjbE1lbnVJdGVtID0gZXZ0Lm1lbnVJdGVtO1xuXG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpO1xuICAgICAgICB0aGlzLnNlbGVjdE1lbnVJdGVtKHJlcXVlc3RlZFJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG5cbiAgICAgICAgdGhpcy5zZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1Ib3ZlcmVkKGV2dDogRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcbiAgICAgICAgaWYgKHJlcXVlc3RlZFJvb3RNZW51SXRlbS5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTWVnYU1lbnUocmVxdWVzdGVkUm9vdE1lbnVJdGVtIGFzIEVjbE1lbnVJdGVtQ29tcG9uZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcXVlc3RlZFJvb3RNZW51SXRlbS5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zaG93TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja01lZ2FNZW51KG1lbnVJdGVtOiBFY2xNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAobWVudUl0ZW0uaXNGdWxsKSB7XG4gICAgICAgICAgICBpZiAobWVudUl0ZW0uc3VibWVudS5pc1J0bCkge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtLnN1Ym1lbnUub2Zmc2V0UmlnaHQgPSB0aGlzLm9mZnNldExlZnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtLnN1Ym1lbnUub2Zmc2V0TGVmdCA9IHRoaXMub2Zmc2V0TGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrRW5vdWdoU3BhY2VGb3JNZWdhTWVudShtZW51SXRlbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0Vub3VnaFNwYWNlRm9yTWVnYU1lbnUobWVudUl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1lZ2FCb3VuZGluZyA9IG1lbnVJdGVtLnN1Ym1lbnUuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQm91bmRpbmcgPSB0aGlzLmlubmVyU2VjdGlvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBtZW51SXRlbUJvdW5kaW5nID0gbWVudUl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCBtZWdhV2lkdGggPSBtZWdhQm91bmRpbmcud2lkdGg7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyQm91bmRpbmcud2lkdGg7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtUG9zaXRpb24gPSBtZW51SXRlbUJvdW5kaW5nLmxlZnQgLSBjb250YWluZXJCb3VuZGluZy5sZWZ0O1xuXG4gICAgICAgIGlmIChtZW51SXRlbVBvc2l0aW9uICsgbWVnYVdpZHRoID4gY29udGFpbmVyV2lkdGgpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLnN1Ym1lbnUuaXNSdGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVudUl0ZW0uc3VibWVudS5pc1J0bCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUhvdmVyZWRPdXQoZXZ0OiBFY2xNZW51SXRlbUhvdmVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtQ2FyZXQoZXZ0OiBFY2xNZW51SXRlbUNhcmV0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUm9vdE1lbnVJdGVtOiBFY2xNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcblxuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKHJlcXVlc3RlZFJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWRGb3JNZW51SXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZW51TWVnYUl0ZW1TZWxlY3RlZChyb290TWVudUl0ZW06IEVjbE1lbnVJdGVtLCBldnQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkU3VibWVudUl0ZW0gPSBldnQubWVudUl0ZW07XG5cbiAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxSb290TWVudUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxTdWJtZW51c0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0ocm9vdE1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbShyZXF1ZXN0ZWRTdWJtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG5cbiAgICAgICAgdGhpcy5zZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQpO1xuXG4gICAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdE1lbnVJdGVtcyh0aGlzLmVjbFJvb3RNZW51SXRlbXMudG9BcnJheSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKHJvb3RJdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0TWVudUl0ZW1zKHJvb3RJdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXNlbGVjdE1lbnVJdGVtcyhpdGVtczogQXJyYXk8RWNsTWVudUl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0N1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RNZW51SXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzQ3VycmVudCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNZW51SGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWVudUhpZGRlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VSb290TWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZVJvb3RNZW51QnV0T25lSXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdCAhPT0gaXRlbSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgIGl0LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpdC5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlSG92ZXJGcm9tQWxsSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgaXQuaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRXhwYW5kZWRGb3JNZW51SXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkhhbWJ1cmdlck1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIYW1idXJnZXJNZW51T3BlbmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlSGFtYnVyZ2VyTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0hhbWJ1cmdlck1lbnVPcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRNZW51SXRlbVNlbGVjdEV2ZW50KGV2dDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtU2VsZWN0Lm5leHQobmV3IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQoZXZ0Lm1lbnVJdGVtLCBldnQuZG9tRXZlbnQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVSb290TWVudUl0ZW1zQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLmVjbFJvb3RNZW51SXRlbXMgYXMgYW55KTtcbiAgICAgICAgdGhpcy5jcmVhdGVSb290TWVudUl0ZW1zQ2hhbmdlc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHRoaXMub25NZW51SXRlbUNoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlU3dpcGVHZXN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW1tZXJ0aW1lLm9uKCdzd2lwZWxlZnQnLCB0aGlzLm9uU3dpcGVMZWZ0LmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub24oJ3N3aXBlcmlnaHQnLCB0aGlzLm9uU3dpcGVSaWdodC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0LCBCcmVha3BvaW50cy5UYWJsZXQsIEJyZWFrcG9pbnRzLlNtYWxsXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWNsLW1lbnVfX292ZXJsYXlcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soKVwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImVjbC1jb250YWluZXIgZWNsLW1lbnVfX2NvbnRhaW5lclwiPlxuICAgIDxhIGVjbExpbmsgaHJlZj1cIiNcIiB2YXJpYW50PVwic3RhbmRhbG9uZVwiIGNsYXNzPVwiZWNsLW1lbnVfX29wZW5cIiAoY2xpY2spPVwib25NZW51T3BlbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJoYW1idXJnZXJcIiBzaXplPVwic1wiPjwvZWNsLWljb24+IHt7ICdlY2wubWVudS5NRU5VJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYT5cblxuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwiZWNsLW1lbnVfX2lubmVyXCJcbiAgICAgICAgI2lubmVyU2VjdGlvblxuICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2lubmVyLS1leHBhbmRlZF09XCJpc01lbnVFeHBhbmRlZEluTW9iaWxlXCJcbiAgICAgICAgW2NsYXNzLmVjbC1tZW51X19pbm5lci0taGFzLW92ZXJmbG93XT1cImhhc092ZXJmbG93XCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJlY2wtbWVudV9faW5uZXItaGVhZGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWNsLW1lbnVfX2Nsb3NlXCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJTdHlsZUNsYXNzPVwiZWNsLW1lbnVfX2Nsb3NlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUNsb3NlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY2xvc2UtZmlsbGVkXCIgc2l6ZT1cInNcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPnt7ICdlY2wuY29tbW9uLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLW1lbnVfX3RpdGxlXCI+e3sgJ2VjbC5tZW51Lk1FTlUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gZWNsQnV0dG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgY2xhc3M9XCJlY2wtbWVudV9fYmFja1wiIChjbGljayk9XCJvbk1lbnVCYWNrQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cInNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD57eyAnZWNsLmNvbW1vbi5CQUNLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAjYnRuUHJldmlvdXNcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19pdGVtIGVjbC1tZW51X19pdGVtcy1wcmV2aW91c1wiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2l0ZW0tLWN1cnJlbnRdPVwiaXNDdXJyZW50SXRlbVZpc2libGVcIlxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNTaG93UHJldkJ0biA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJldkJ0bkNsaWNrKClcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cInNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsIGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY29tbW9uLlBSRVZJT1VTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgI2J0bk5leHRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19pdGVtIGVjbC1tZW51X19pdGVtcy1uZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtbWVudV9faXRlbS0tY3VycmVudF09XCIhaXNDdXJyZW50SXRlbVZpc2libGVcIlxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNTaG93TmV4dEJ0biA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmV4dEJ0bkNsaWNrKClcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cInNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtOTBcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWwgY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jb21tb24uTkVYVCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8dWwgY2xhc3M9XCJlY2wtbWVudV9fbGlzdFwiICNpdGVtc0xpc3Q+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvdWw+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=