@ethlete/cdk 4.10.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm2022/index.mjs +2 -1
  3. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
  4. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
  5. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
  6. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
  7. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
  8. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
  9. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
  10. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
  11. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
  12. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
  13. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
  14. package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
  15. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
  16. package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
  17. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
  18. package/esm2022/lib/components/filter/public-api/index.mjs +1 -11
  19. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
  20. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
  21. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
  22. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
  23. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
  24. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  25. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  26. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  27. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  28. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
  29. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
  30. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  31. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
  32. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +3 -3
  33. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +3 -3
  34. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  35. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  36. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  37. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  38. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  39. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +3 -3
  44. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
  47. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
  48. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
  49. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +3 -3
  50. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
  51. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
  52. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  53. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  54. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  55. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  56. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  57. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  58. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  59. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
  60. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  61. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  62. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +3 -3
  63. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  64. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  65. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
  66. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  67. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
  68. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
  69. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +3 -3
  70. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
  71. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
  73. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +3 -3
  74. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
  75. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
  76. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +4 -4
  77. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +3 -3
  78. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  79. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
  80. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  81. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  82. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
  83. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +3 -3
  84. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
  85. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +3 -3
  86. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +5 -5
  87. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
  88. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
  89. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
  90. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
  91. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
  92. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +3 -3
  93. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +3 -3
  94. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  99. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  100. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  101. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
  102. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  104. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  109. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  112. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  113. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  114. package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
  115. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  116. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
  117. package/esm2022/lib/components/forms/utils/input.base.mjs +3 -3
  118. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  119. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  120. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  121. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  122. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  123. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  124. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  125. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  126. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  127. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  128. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  129. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  130. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  131. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +5 -5
  137. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +3 -3
  138. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +3 -3
  139. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +3 -3
  140. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +3 -3
  141. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +3 -3
  142. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +3 -3
  143. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +3 -3
  144. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +6 -6
  145. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +6 -6
  146. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +3 -3
  147. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +3 -3
  148. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +3 -3
  149. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +3 -3
  150. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +3 -3
  151. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +3 -3
  152. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +3 -3
  153. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +4 -4
  154. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +3 -3
  155. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +3 -3
  156. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +3 -3
  157. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +3 -3
  158. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +8 -29
  159. package/esm2022/lib/components/overlay/components/overlay/overlay.imports.mjs +18 -1
  160. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/index.mjs +2 -0
  161. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +53 -0
  162. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +10 -26
  163. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +3 -3
  164. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +4 -8
  165. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +4 -8
  166. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/index.mjs +2 -0
  167. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +50 -0
  168. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/index.mjs +2 -0
  169. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +49 -0
  170. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/index.mjs +2 -0
  171. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +41 -0
  172. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/index.mjs +2 -0
  173. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +45 -0
  174. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/index.mjs +2 -0
  175. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +43 -0
  176. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/index.mjs +2 -0
  177. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +52 -0
  178. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/index.mjs +2 -0
  179. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +51 -0
  180. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +3 -3
  181. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +4 -5
  182. package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +117 -0
  183. package/esm2022/lib/components/overlay/components/overlay/utils/index.mjs +4 -1
  184. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-position-builder.mjs +13 -1
  185. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +6 -15
  186. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-router.mjs +190 -0
  187. package/esm2022/lib/components/overlay/components/overlay/utils/sidebar-overlay.mjs +63 -0
  188. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +4 -4
  189. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
  190. package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +3 -3
  191. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +4 -4
  192. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
  193. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +3 -3
  194. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +3 -3
  195. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  196. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  197. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  198. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  199. package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
  200. package/esm2022/lib/components/picture/picture.component.mjs +3 -3
  201. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.pipe.mjs +3 -3
  202. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  203. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  204. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +3 -3
  205. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +5 -5
  206. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
  207. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +3 -3
  208. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  209. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  210. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
  211. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
  212. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  213. package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
  214. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  215. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  216. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  217. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  218. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  219. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  220. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  221. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  222. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  223. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  224. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  225. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  226. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  227. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  228. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  229. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  230. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  231. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  232. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
  233. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
  234. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
  235. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
  236. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  237. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  238. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  239. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  240. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  241. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
  242. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  243. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
  244. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
  245. package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
  246. package/fesm2022/ethlete-cdk.mjs +4336 -3986
  247. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  248. package/lib/components/filter/public-api/index.d.ts +0 -10
  249. package/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.d.ts +0 -12
  250. package/lib/components/overlay/components/overlay/overlay.imports.d.ts +10 -1
  251. package/lib/components/overlay/components/overlay/partials/overlay-back-or-close/index.d.ts +1 -0
  252. package/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.d.ts +19 -0
  253. package/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.d.ts +4 -7
  254. package/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.d.ts +2 -3
  255. package/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.d.ts +2 -3
  256. package/lib/components/overlay/components/overlay/partials/overlay-header-template/index.d.ts +1 -0
  257. package/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.d.ts +14 -0
  258. package/lib/components/overlay/components/overlay/partials/overlay-main/index.d.ts +1 -0
  259. package/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.d.ts +12 -0
  260. package/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/index.d.ts +1 -0
  261. package/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.d.ts +17 -0
  262. package/lib/components/overlay/components/overlay/partials/overlay-router-link/index.d.ts +1 -0
  263. package/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.d.ts +19 -0
  264. package/lib/components/overlay/components/overlay/partials/overlay-router-outlet/index.d.ts +1 -0
  265. package/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.d.ts +14 -0
  266. package/lib/components/overlay/components/overlay/partials/overlay-sidebar/index.d.ts +1 -0
  267. package/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.d.ts +18 -0
  268. package/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/index.d.ts +1 -0
  269. package/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.d.ts +10 -0
  270. package/lib/components/overlay/components/overlay/utils/filter-overlay.d.ts +66 -0
  271. package/lib/components/overlay/components/overlay/utils/index.d.ts +3 -0
  272. package/lib/components/overlay/components/overlay/utils/overlay-position-builder.d.ts +4 -0
  273. package/lib/components/overlay/components/overlay/utils/overlay-ref.d.ts +7 -7
  274. package/lib/components/overlay/components/overlay/utils/overlay-router.d.ts +96 -0
  275. package/lib/components/overlay/components/overlay/utils/sidebar-overlay.d.ts +35 -0
  276. package/package.json +8 -8
  277. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.mjs +0 -46
  278. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/index.mjs +0 -2
  279. package/esm2022/lib/components/filter/filter-overlay/constants/filter-overlay.constants.mjs +0 -3
  280. package/esm2022/lib/components/filter/filter-overlay/constants/index.mjs +0 -2
  281. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.mjs +0 -45
  282. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/index.mjs +0 -2
  283. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.mjs +0 -46
  284. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/index.mjs +0 -2
  285. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.mjs +0 -45
  286. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/index.mjs +0 -2
  287. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.mjs +0 -45
  288. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/index.mjs +0 -2
  289. package/esm2022/lib/components/filter/filter-overlay/filter-overlay.imports.mjs +0 -17
  290. package/esm2022/lib/components/filter/filter-overlay/services/filter-overlay.service.mjs +0 -37
  291. package/esm2022/lib/components/filter/filter-overlay/services/index.mjs +0 -2
  292. package/esm2022/lib/components/filter/filter-overlay/types/filter-overlay-config.types.mjs +0 -2
  293. package/esm2022/lib/components/filter/filter-overlay/types/index.mjs +0 -2
  294. package/esm2022/lib/components/filter/filter-overlay/utils/filter-overlay-ref.mjs +0 -56
  295. package/esm2022/lib/components/filter/filter-overlay/utils/index.mjs +0 -2
  296. package/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.d.ts +0 -10
  297. package/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/index.d.ts +0 -1
  298. package/lib/components/filter/filter-overlay/constants/filter-overlay.constants.d.ts +0 -3
  299. package/lib/components/filter/filter-overlay/constants/index.d.ts +0 -1
  300. package/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.d.ts +0 -9
  301. package/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/index.d.ts +0 -1
  302. package/lib/components/filter/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.d.ts +0 -11
  303. package/lib/components/filter/filter-overlay/directives/filter-overlay-link/index.d.ts +0 -1
  304. package/lib/components/filter/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.d.ts +0 -11
  305. package/lib/components/filter/filter-overlay/directives/filter-overlay-reset/index.d.ts +0 -1
  306. package/lib/components/filter/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.d.ts +0 -11
  307. package/lib/components/filter/filter-overlay/directives/filter-overlay-submit/index.d.ts +0 -1
  308. package/lib/components/filter/filter-overlay/filter-overlay.imports.d.ts +0 -8
  309. package/lib/components/filter/filter-overlay/services/filter-overlay.service.d.ts +0 -13
  310. package/lib/components/filter/filter-overlay/services/index.d.ts +0 -1
  311. package/lib/components/filter/filter-overlay/types/filter-overlay-config.types.d.ts +0 -35
  312. package/lib/components/filter/filter-overlay/types/index.d.ts +0 -1
  313. package/lib/components/filter/filter-overlay/utils/filter-overlay-ref.d.ts +0 -21
  314. package/lib/components/filter/filter-overlay/utils/index.d.ts +0 -1
@@ -0,0 +1,52 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, contentChild, inject, viewChild, } from '@angular/core';
3
+ import { signalHostClasses, syncSignal } from '@ethlete/core';
4
+ import { SidebarOverlayService } from '../../utils';
5
+ import { OVERLAY_HEADER_TEMPLATE_TOKEN } from '../overlay-header-template';
6
+ import * as i0 from "@angular/core";
7
+ export class OverlaySidebarComponent {
8
+ constructor() {
9
+ this.sidebarContent = viewChild.required('sidebarContentTpl');
10
+ this.sidebarHeaderContent = contentChild(OVERLAY_HEADER_TEMPLATE_TOKEN);
11
+ this.sidebar = inject(SidebarOverlayService);
12
+ this.hostClassBindings = signalHostClasses({
13
+ 'et-overlay-sidebar--visible': this.sidebar.renderSidebar,
14
+ });
15
+ syncSignal(this.sidebarContent, this.sidebar.sidebarContentTemplate);
16
+ syncSignal(this.sidebarHeaderContent, this.sidebar.sidebarHeaderTemplate);
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlaySidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: OverlaySidebarComponent, isStandalone: true, selector: "et-overlay-sidebar", host: { classAttribute: "et-overlay-sidebar-host" }, queries: [{ propertyName: "sidebarHeaderContent", first: true, predicate: OVERLAY_HEADER_TEMPLATE_TOKEN, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sidebarContent", first: true, predicate: ["sidebarContentTpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
20
+ <ng-template #sidebarContentTpl>
21
+ <ng-content />
22
+ </ng-template>
23
+
24
+ @if (sidebar.renderSidebar()) {
25
+ <ng-container *ngTemplateOutlet="sidebarContent()" />
26
+ }
27
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlaySidebarComponent, decorators: [{
30
+ type: Component,
31
+ args: [{
32
+ selector: 'et-overlay-sidebar',
33
+ template: `
34
+ <ng-template #sidebarContentTpl>
35
+ <ng-content />
36
+ </ng-template>
37
+
38
+ @if (sidebar.renderSidebar()) {
39
+ <ng-container *ngTemplateOutlet="sidebarContent()" />
40
+ }
41
+ `,
42
+ standalone: true,
43
+ changeDetection: ChangeDetectionStrategy.OnPush,
44
+ encapsulation: ViewEncapsulation.None,
45
+ host: {
46
+ class: 'et-overlay-sidebar-host',
47
+ },
48
+ imports: [NgTemplateOutlet],
49
+ hostDirectives: [],
50
+ }]
51
+ }], ctorParameters: () => [] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvb3ZlcmxheS9wYXJ0aWFscy9vdmVybGF5LXNpZGViYXIvb3ZlcmxheS1zaWRlYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBc0IzRSxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDO1FBUkEsbUJBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUF1QixtQkFBbUIsQ0FBQyxDQUFDO1FBQy9FLHlCQUFvQixHQUFHLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV4QyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztZQUNwQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7U0FDMUQsQ0FBQyxDQUFDO1FBR0QsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JFLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7OEdBWlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIscUxBRUUsNkJBQTZCLHFNQXBCdkQ7Ozs7Ozs7O0dBUVQsNERBT1MsZ0JBQWdCOzsyRkFHZix1QkFBdUI7a0JBcEJuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLHlCQUF5QjtxQkFDakM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLGNBQWMsRUFBRSxFQUFFO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb250ZW50Q2hpbGQsXG4gIGluamVjdCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNpZ25hbEhvc3RDbGFzc2VzLCBzeW5jU2lnbmFsIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBTaWRlYmFyT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBPVkVSTEFZX0hFQURFUl9URU1QTEFURV9UT0tFTiB9IGZyb20gJy4uL292ZXJsYXktaGVhZGVyLXRlbXBsYXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtb3ZlcmxheS1zaWRlYmFyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3NpZGViYXJDb250ZW50VHBsPlxuICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgQGlmIChzaWRlYmFyLnJlbmRlclNpZGViYXIoKSkge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJDb250ZW50KClcIiAvPlxuICAgIH1cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LW92ZXJsYXktc2lkZWJhci1ob3N0JyxcbiAgfSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuICBob3N0RGlyZWN0aXZlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTaWRlYmFyQ29tcG9uZW50IHtcbiAgc2lkZWJhckNvbnRlbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdzaWRlYmFyQ29udGVudFRwbCcpO1xuICBzaWRlYmFySGVhZGVyQ29udGVudCA9IGNvbnRlbnRDaGlsZChPVkVSTEFZX0hFQURFUl9URU1QTEFURV9UT0tFTik7XG4gIHNpZGViYXIgPSBpbmplY3QoU2lkZWJhck92ZXJsYXlTZXJ2aWNlKTtcblxuICBob3N0Q2xhc3NCaW5kaW5ncyA9IHNpZ25hbEhvc3RDbGFzc2VzKHtcbiAgICAnZXQtb3ZlcmxheS1zaWRlYmFyLS12aXNpYmxlJzogdGhpcy5zaWRlYmFyLnJlbmRlclNpZGViYXIsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN5bmNTaWduYWwodGhpcy5zaWRlYmFyQ29udGVudCwgdGhpcy5zaWRlYmFyLnNpZGViYXJDb250ZW50VGVtcGxhdGUpO1xuICAgIHN5bmNTaWduYWwodGhpcy5zaWRlYmFySGVhZGVyQ29udGVudCwgdGhpcy5zaWRlYmFyLnNpZGViYXJIZWFkZXJUZW1wbGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './overlay-sidebar-page.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvcGFydGlhbHMvb3ZlcmxheS1zaWRlYmFyLXBhZ2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS1zaWRlYmFyLXBhZ2UuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';
3
+ import { OverlayBodyComponent } from '../overlay-body';
4
+ import { OverlayHeaderDirective } from '../overlay-header';
5
+ import { OverlayMainDirective } from '../overlay-main';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../overlay-main/overlay-main.directive";
8
+ export class OverlaySidebarPageComponent {
9
+ constructor() {
10
+ this.headerTemplate = input.required();
11
+ this.bodyTemplate = input.required();
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlaySidebarPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: OverlaySidebarPageComponent, isStandalone: true, selector: "et-overlay-sidebar-page", inputs: { headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: true, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-overlay-sidebar-page-host" }, hostDirectives: [{ directive: i1.OverlayMainDirective }], ngImport: i0, template: `
15
+ @if (headerTemplate()?.template; as tpl) {
16
+ <et-overlay-header>
17
+ <ng-container *ngTemplateOutlet="tpl" />
18
+ </et-overlay-header>
19
+ }
20
+
21
+ <et-overlay-body>
22
+ <ng-container *ngTemplateOutlet="bodyTemplate()" />
23
+ </et-overlay-body>
24
+ `, isInline: true, dependencies: [{ kind: "directive", type: OverlayHeaderDirective, selector: "[etOverlayHeader], et-overlay-header" }, { kind: "component", type: OverlayBodyComponent, selector: "[et-overlay-body], et-overlay-body", inputs: ["dividers"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlaySidebarPageComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'et-overlay-sidebar-page',
30
+ template: `
31
+ @if (headerTemplate()?.template; as tpl) {
32
+ <et-overlay-header>
33
+ <ng-container *ngTemplateOutlet="tpl" />
34
+ </et-overlay-header>
35
+ }
36
+
37
+ <et-overlay-body>
38
+ <ng-container *ngTemplateOutlet="bodyTemplate()" />
39
+ </et-overlay-body>
40
+ `,
41
+ standalone: true,
42
+ changeDetection: ChangeDetectionStrategy.OnPush,
43
+ encapsulation: ViewEncapsulation.None,
44
+ host: {
45
+ class: 'et-overlay-sidebar-page-host',
46
+ },
47
+ imports: [OverlayHeaderDirective, OverlayBodyComponent, NgTemplateOutlet],
48
+ hostDirectives: [OverlayMainDirective],
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1zaWRlYmFyLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3BhcnRpYWxzL292ZXJsYXktc2lkZWJhci1wYWdlL292ZXJsYXktc2lkZWJhci1wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFlLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBd0J2RCxNQUFNLE9BQU8sMkJBQTJCO0lBdEJ4QztRQXVCRSxtQkFBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXlDLENBQUM7UUFDekUsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUErQixDQUFDO0tBQzlEOzhHQUhZLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGlmQXBCNUI7Ozs7Ozs7Ozs7R0FVVCw0REFPUyxzQkFBc0IsaUZBQUUsb0JBQW9CLHFHQUFFLGdCQUFnQjs7MkZBRzdELDJCQUEyQjtrQkF0QnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSw4QkFBOEI7cUJBQ3RDO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDO29CQUN6RSxjQUFjLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vb3ZlcmxheS1ib2R5JztcbmltcG9ydCB7IE92ZXJsYXlIZWFkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9vdmVybGF5LWhlYWRlcic7XG5pbXBvcnQgeyBPdmVybGF5SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi9vdmVybGF5LWhlYWRlci10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBPdmVybGF5TWFpbkRpcmVjdGl2ZSB9IGZyb20gJy4uL292ZXJsYXktbWFpbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LW92ZXJsYXktc2lkZWJhci1wYWdlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGhlYWRlclRlbXBsYXRlKCk/LnRlbXBsYXRlOyBhcyB0cGwpIHtcbiAgICAgIDxldC1vdmVybGF5LWhlYWRlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L2V0LW92ZXJsYXktaGVhZGVyPlxuICAgIH1cblxuICAgIDxldC1vdmVybGF5LWJvZHk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlKClcIiAvPlxuICAgIDwvZXQtb3ZlcmxheS1ib2R5PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtb3ZlcmxheS1zaWRlYmFyLXBhZ2UtaG9zdCcsXG4gIH0sXG4gIGltcG9ydHM6IFtPdmVybGF5SGVhZGVyRGlyZWN0aXZlLCBPdmVybGF5Qm9keUNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbT3ZlcmxheU1haW5EaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5U2lkZWJhclBhZ2VDb21wb25lbnQge1xuICBoZWFkZXJUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPE92ZXJsYXlIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB8IG51bGw+KCk7XG4gIGJvZHlUZW1wbGF0ZSA9IGlucHV0LnJlcXVpcmVkPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4oKTtcbn1cbiJdfQ==
@@ -20,10 +20,10 @@ export class OverlayTitleDirective {
20
20
  }
21
21
  Promise.resolve().then(() => this._overlayRef?._containerInstance?._ariaLabelledByQueue?.push(this.id));
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OverlayTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: OverlayTitleDirective, isStandalone: true, selector: "[et-overlay-title], [etOverlayTitle]", inputs: { id: "id" }, host: { properties: { "attr.id": "this.id" } }, exportAs: ["etOverlayTitle"], ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: OverlayTitleDirective, isStandalone: true, selector: "[et-overlay-title], [etOverlayTitle]", inputs: { id: "id" }, host: { properties: { "attr.id": "this.id" } }, exportAs: ["etOverlayTitle"], ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OverlayTitleDirective, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayTitleDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[et-overlay-title], [etOverlayTitle]',
@@ -110,7 +110,6 @@ export class OverlayService {
110
110
  overlayRef.componentRef = cdkRef.componentRef;
111
111
  overlayRef.componentInstance = cdkRef.componentInstance;
112
112
  cdkRef.containerInstance.overlayRef = overlayRef;
113
- cdkRef.containerInstance.afterOverlayRefInit();
114
113
  const containerEl = overlayRef._containerInstance.elementRef.nativeElement;
115
114
  const overlayPaneEl = cdkRef.overlayRef.overlayElement;
116
115
  const backdropEl = cdkRef.overlayRef.backdropElement;
@@ -280,10 +279,10 @@ export class OverlayService {
280
279
  const parent = this._parentOverlayService;
281
280
  return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;
282
281
  }
283
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
284
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OverlayService }); }
282
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
283
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayService }); }
285
284
  }
286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OverlayService, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: OverlayService, decorators: [{
287
286
  type: Injectable
288
287
  }] });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3NlcnZpY2VzL292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxJQUFJLFNBQVMsRUFBRSxZQUFZLElBQUksZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0YsT0FBTyxFQUFnQixVQUFVLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sVUFBVSxDQUFDOztBQUVsQixJQUFJLFFBQVEsR0FBRyxD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QUUsQ0FBQztZQUNYLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDaEYsQ0FBQzs4R0EvU1UsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaWFsb2cgYXMgQ2RrRGlhbG9nLCBEaWFsb2dDb25maWcgYXMgQ2RrRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJPT1RfQk9VTkRBUllfVE9LRU4sIFJvb3RCb3VuZGFyeURpcmVjdGl2ZSwgVmlld3BvcnRTZXJ2aWNlLCBjcmVhdGVEZXN0cm95LCBlcXVhbCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCBUSEVNRV9QUk9WSURFUiB9IGZyb20gJ0BldGhsZXRlL3RoZW1pbmcnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGVmZXIsIG1hcCwgb2YsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBPVkVSTEFZX0NPTkZJRywgT1ZFUkxBWV9EQVRBLCBPVkVSTEFZX0RFRkFVTFRfT1BUSU9OUywgT1ZFUkxBWV9TQ1JPTExfU1RSQVRFR1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIEVUX09WRVJMQVlfQk9UVE9NX1NIRUVUX0NMQVNTLFxuICBFVF9PVkVSTEFZX0xFRlRfU0hFRVRfQ0xBU1MsXG4gIEVUX09WRVJMQVlfUklHSFRfU0hFRVRfQ0xBU1MsXG4gIEVUX09WRVJMQVlfVE9QX1NIRUVUX0NMQVNTLFxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICBPdmVybGF5UmVmLFxuICBjcmVhdGVPdmVybGF5Q29uZmlnLFxufSBmcm9tICcuLi91dGlscyc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5jb25zdCBJRF9QUkVGSVggPSAnZXQtb3ZlcmxheS0nO1xuXG5jb25zdCBzZXRTdHlsZSA9IChlbDogSFRNTEVsZW1lbnQsIHN0eWxlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KHN0eWxlLCBjb2VyY2VDc3NQaXhlbFZhbHVlKHZhbHVlKSk7XG4gIH1cbn07XG5cbmNvbnN0IHNldENsYXNzID0gKGVsOiBIVE1MRWxlbWVudCwgcHJldkNsYXNzPzogc3RyaW5nIHwgc3RyaW5nW10sIGN1cnJDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XG4gIGlmICghZXF1YWwocHJldkNsYXNzLCBjdXJyQ2xhc3MpKSB7XG4gICAgaWYgKHByZXZDbGFzcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJldkNsYXNzKSkge1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLnByZXZDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHByZXZDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJDbGFzcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VyckNsYXNzKSkge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKC4uLmN1cnJDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGN1cnJDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBpc0h0bWxFbGVtZW50ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5rbm93bik6IGVsZW1lbnQgaXMgSFRNTEVsZW1lbnQgPT4ge1xuICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufTtcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuY29uc3QgaXNQb2ludGVyRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogZXZlbnQgaXMgUG9pbnRlckV2ZW50ID0+IHtcbiAgcmV0dXJuIGV2ZW50LnR5cGVbMF0gPT09ICdjJztcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVybGF5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucyA9IGluamVjdChPVkVSTEFZX0RFRkFVTFRfT1BUSU9OUywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsU3RyYXRlZ3kgPSBpbmplY3QoT1ZFUkxBWV9TQ1JPTExfU1RSQVRFR1kpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnRPdmVybGF5U2VydmljZSA9IGluamVjdChPdmVybGF5U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZyA9IGluamVjdChDZGtEaWFsb2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVuT3ZlcmxheXNBdFRoaXNMZXZlbDogT3ZlcmxheVJlZltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5lZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8T3ZlcmxheVJlZj4oKTtcblxuICByZWFkb25seSBwb3NpdGlvbnMgPSBuZXcgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcigpO1xuXG4gIHJlYWRvbmx5IGFmdGVyQWxsQ2xvc2VkID0gZGVmZXIoKCkgPT5cbiAgICB0aGlzLm9wZW5PdmVybGF5cy5sZW5ndGggPyB0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpIDogdGhpcy5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKSxcbiAgKSBhcyBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIGdldCBvcGVuT3ZlcmxheXMoKTogT3ZlcmxheVJlZltdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2UgPyB0aGlzLl9wYXJlbnRPdmVybGF5U2VydmljZS5vcGVuT3ZlcmxheXMgOiB0aGlzLl9vcGVuT3ZlcmxheXNBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIGdldCBhZnRlck9wZW5lZCgpOiBTdWJqZWN0PE92ZXJsYXlSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2UgPyB0aGlzLl9wYXJlbnRPdmVybGF5U2VydmljZS5hZnRlck9wZW5lZCA6IHRoaXMuX2FmdGVyT3BlbmVkQXRUaGlzTGV2ZWw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9jbG9zZU92ZXJsYXlzKHRoaXMuX29wZW5PdmVybGF5c0F0VGhpc0xldmVsKTtcbiAgICB0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPiwgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+KTogT3ZlcmxheVJlZjxULCBSPjtcbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUPiwgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+KTogT3ZlcmxheVJlZjxULCBSPjtcbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIHRlbXBsYXRlOiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+LFxuICApOiBPdmVybGF5UmVmPFQsIFI+O1xuICBvcGVuPFQsIEQgPSB1bmtub3duLCBSID0gdW5rbm93bj4oXG4gICAgY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGNvbmZpZzogT3ZlcmxheUNvbmZpZzxEPixcbiAgKTogT3ZlcmxheVJlZjxULCBSPiB7XG4gICAgbGV0IG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY8VCwgUj47XG5cbiAgICBjb25zdCBjb21wb3NlZENvbmZpZyA9IGNyZWF0ZU92ZXJsYXlDb25maWc8RD4odGhpcy5fZGVmYXVsdE9wdGlvbnMgYXMgT3ZlcmxheUNvbmZpZzxEPiwgY29uZmlnKTtcbiAgICBjb21wb3NlZENvbmZpZy5pZCA9IGNvbXBvc2VkQ29uZmlnLmlkIHx8IGAke0lEX1BSRUZJWH0ke3VuaXF1ZUlkKyt9YDtcbiAgICBjb21wb3NlZENvbmZpZy5zY3JvbGxTdHJhdGVneSA9IGNvbXBvc2VkQ29uZmlnLnNjcm9sbFN0cmF0ZWd5IHx8IHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCk7XG5cbiAgICBjb25zdCBjZGtSZWYgPSB0aGlzLl9kaWFsb2cub3BlbjxSLCBELCBUPihjb21wb25lbnRPclRlbXBsYXRlUmVmLCB7XG4gICAgICAuLi5jb21wb3NlZENvbmZpZyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGNsb3NlT25EZXN0cm95OiBmYWxzZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdldC1vdmVybGF5LXBhbmUnLFxuICAgICAgY29udGFpbmVyOiB7XG4gICAgICAgIHR5cGU6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIHByb3ZpZGVyczogKCkgPT4gW1xuICAgICAgICAgIHsgcHJvdmlkZTogT1ZFUkxBWV9DT05GSUcsIHVzZVZhbHVlOiBjb21wb3NlZENvbmZpZyB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogQ2RrRGlhbG9nQ29uZmlnLCB1c2VWYWx1ZTogY29tcG9zZWRDb25maWcgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZUNvbnRleHQ6ICgpID0+ICh7IGRpYWxvZ1JlZjogb3ZlcmxheVJlZiB9KSxcbiAgICAgIHByb3ZpZGVyczogKHJlZiwgY2RrQ29uZmlnLCBvdmVybGF5Q29udGFpbmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG92ZXJsYXlDb250YWluZXIgYXMgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudDtcbiAgICAgICAgb3ZlcmxheVJlZiA9IG5ldyBPdmVybGF5UmVmKHJlZiwgY29tcG9zZWRDb25maWcsIGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IHByb3ZpZGU6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsIHVzZVZhbHVlOiBvdmVybGF5Q29udGFpbmVyIH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBUSEVNRV9QUk9WSURFUiwgdXNlVmFsdWU6IGNvbnRhaW5lci5fdGhlbWVQcm92aWRlciB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCB1c2VWYWx1ZTogY29udGFpbmVyLl90aGVtZVByb3ZpZGVyIH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBST09UX0JPVU5EQVJZX1RPS0VOLCB1c2VWYWx1ZTogY29udGFpbmVyLl9yb290Qm91bmRhcnkgfSxcbiAgICAgICAgICB7IHByb3ZpZGU6IFJvb3RCb3VuZGFyeURpcmVjdGl2ZSwgdXNlVmFsdWU6IGNvbnRhaW5lci5fcm9vdEJvdW5kYXJ5IH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBPVkVSTEFZX0RBVEEsIHVzZVZhbHVlOiBjZGtDb25maWcuZGF0YSB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogT3ZlcmxheVJlZiwgdXNlVmFsdWU6IG92ZXJsYXlSZWYgfSxcbiAgICAgICAgICB7IHByb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiBvdmVybGF5UmVmIH0sXG4gICAgICAgICAgLi4uKGNvbXBvc2VkQ29uZmlnLnByb3ZpZGVycyA/PyBbXSksXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiovXG4gICAgKG92ZXJsYXlSZWYhIGFzIHsgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfSkuY29tcG9uZW50UmVmID0gY2RrUmVmLmNvbXBvbmVudFJlZiE7XG4gICAgb3ZlcmxheVJlZiEuY29tcG9uZW50SW5zdGFuY2UgPSBjZGtSZWYuY29tcG9uZW50SW5zdGFuY2UhO1xuXG4gICAgKGNka1JlZi5jb250YWluZXJJbnN0YW5jZSBhcyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50KS5vdmVybGF5UmVmID0gb3ZlcmxheVJlZiE7XG4gICAgKGNka1JlZi5jb250YWluZXJJbnN0YW5jZSBhcyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50KS5hZnRlck92ZXJsYXlSZWZJbml0KCk7XG5cbiAgICBjb25zdCBjb250YWluZXJFbCA9IG92ZXJsYXlSZWYhLl9jb250YWluZXJJbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgb3ZlcmxheVBhbmVFbCA9IGNka1JlZi5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50O1xuICAgIGNvbnN0IGJhY2tkcm9wRWwgPSBjZGtSZWYub3ZlcmxheVJlZi5iYWNrZHJvcEVsZW1lbnQ7XG4gICAgY29uc3Qgb3ZlcmxheVdyYXBwZXIgPSBjZGtSZWYub3ZlcmxheVJlZi5ob3N0RWxlbWVudDtcbiAgICBjb25zdCBkZWZhdWx0QW5pbWF0aW9uQnVmZmVyID0gNTA7IC8vIDUwcHggc2luY2UgdGhlIGRlZmF1bHQgYW5pbWF0aW9uIHVzZXMgc3ByaW5nIHBoeXNpY3MgYW5kIHRodXMgd2lsbCBvdmVyc2hvb3QuXG4gICAgY29uc3QgdXNlRGVmYXVsdEFuaW1hdGlvbiA9IGNvbXBvc2VkQ29uZmlnLmN1c3RvbUFuaW1hdGVkICE9PSB0cnVlO1xuICAgIGNvbnN0IG9yaWdpbiA9IGNvbXBvc2VkQ29uZmlnLm9yaWdpbjtcblxuICAgIGNvbWJpbmVMYXRlc3QoXG4gICAgICBjb21wb3NlZENvbmZpZy5wb3NpdGlvbnMubWFwKChicmVha3BvaW50KSA9PlxuICAgICAgICAoYnJlYWtwb2ludC5icmVha3BvaW50ID8gdGhpcy5fdmlld3BvcnRTZXJ2aWNlLm9ic2VydmUoeyBtaW46IGJyZWFrcG9pbnQuYnJlYWtwb2ludCB9KSA6IG9mKHRydWUpKS5waXBlKFxuICAgICAgICAgIG1hcCgoaXNBY3RpdmUpID0+ICh7XG4gICAgICAgICAgICBpc0FjdGl2ZSxcbiAgICAgICAgICAgIGNvbmZpZzogYnJlYWtwb2ludC5jb25maWcsXG4gICAgICAgICAgICBzaXplOlxuICAgICAgICAgICAgICB0eXBlb2YgYnJlYWtwb2ludC5icmVha3BvaW50ID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gYnJlYWtwb2ludC5icmVha3BvaW50XG4gICAgICAgICAgICAgICAgOiBicmVha3BvaW50LmJyZWFrcG9pbnQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuX3ZpZXdwb3J0U2VydmljZS5nZXRCcmVha3BvaW50U2l6ZShicmVha3BvaW50LmJyZWFrcG9pbnQsICdtaW4nKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwob3ZlcmxheVJlZiEuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIG1hcCgoZW50cmllcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUJyZWFrcG9pbnRzID0gZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5pc0FjdGl2ZSk7XG4gICAgICAgICAgY29uc3QgaGlnaGVzdEJyZWFrcG9pbnQgPSBhY3RpdmVCcmVha3BvaW50cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChwcmV2LnNpemUgPiBjdXJyLnNpemUgPyBwcmV2IDogY3VycikpO1xuXG4gICAgICAgICAgcmV0dXJuIGhpZ2hlc3RCcmVha3BvaW50LmNvbmZpZztcbiAgICAgICAgfSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgdGFwKChbcHJldkNvbmZpZywgY3VyckNvbmZpZ10pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJDb25maWcpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lckNsYXNzID0gY3VyckNvbmZpZy5jb250YWluZXJDbGFzcztcblxuICAgICAgICAgIGNvbnN0IGFwcGx5RGVmYXVsdE1heFdpZHRocyA9ICgpID0+IHtcbiAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtd2lkdGgnLCBjdXJyQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtaGVpZ2h0JywgY3VyckNvbmZpZy5tYXhIZWlnaHQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb21iaW5lT3JNYWtlQ2FsYyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgYXBwZW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBhcHBlbmQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHJldHVybiBgY2FsYygke3ZhbHVlfXB4ICsgJHthcHBlbmR9KWA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ2NhbGMoJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGAke3ZhbHVlLnNsaWNlKDAsIHZhbHVlLmxlbmd0aCAtIDEpfSArICR7YXBwZW5kfSlgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYGNhbGMoJHt2YWx1ZX0gKyAke2FwcGVuZH0pYDtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgLy8gVE9ETzogSWYgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHVzZWQgaXQgc2hvdWxkIHVzZSB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luWCA9IGlzSHRtbEVsZW1lbnQob3JpZ2luKVxuICAgICAgICAgICAgICA/IG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gICAgICAgICAgICAgIDogaXNUb3VjaEV2ZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgICA/IG9yaWdpbi50YXJnZXRUb3VjaGVzWzBdIS5jbGllbnRYXG4gICAgICAgICAgICAgICAgOiBpc1BvaW50ZXJFdmVudChvcmlnaW4pXG4gICAgICAgICAgICAgICAgICA/IG9yaWdpbi5jbGllbnRYICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gb3JpZ2luLmNsaWVudFhcbiAgICAgICAgICAgICAgICAgICAgOiAob3JpZ2luLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdFxuICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpblkgPSBpc0h0bWxFbGVtZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgPyBvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICAgIDogaXNUb3VjaEV2ZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgICA/IG9yaWdpbi50YXJnZXRUb3VjaGVzWzBdIS5jbGllbnRZXG4gICAgICAgICAgICAgICAgOiBpc1BvaW50ZXJFdmVudChvcmlnaW4pXG4gICAgICAgICAgICAgICAgICA/IG9yaWdpbi5jbGllbnRZICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gb3JpZ2luLmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgOiAob3JpZ2luLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICBpZiAob3JpZ2luWCAhPT0gLTEgJiYgb3JpZ2luWSAhPT0gLTEgJiYgY3VyckNvbmZpZy5hcHBseVRyYW5zZm9ybU9yaWdpbikge1xuICAgICAgICAgICAgICBzZXRTdHlsZShjb250YWluZXJFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nLCBgJHtvcmlnaW5YfXB4ICR7b3JpZ2luWX1weGApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0U3R5bGUoY29udGFpbmVyRWwsICd0cmFuc2Zvcm0tb3JpZ2luJywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVzZURlZmF1bHRBbmltYXRpb24gJiYgY29udGFpbmVyQ2xhc3M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9MRUZUX1NIRUVUX0NMQVNTKSB8fFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9SSUdIVF9TSEVFVF9DTEFTUylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXRTdHlsZShcbiAgICAgICAgICAgICAgICBvdmVybGF5UGFuZUVsLFxuICAgICAgICAgICAgICAgICdtYXgtd2lkdGgnLFxuICAgICAgICAgICAgICAgIGNvbWJpbmVPck1ha2VDYWxjKGN1cnJDb25maWcubWF4V2lkdGgsIGAke2RlZmF1bHRBbmltYXRpb25CdWZmZXJ9cHhgKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgc2V0U3R5bGUob3ZlcmxheVBhbmVFbCwgJ21heC1oZWlnaHQnLCBjdXJyQ29uZmlnLm1heEhlaWdodCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9UT1BfU0hFRVRfQ0xBU1MpIHx8XG4gICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzPy5pbmNsdWRlcyhFVF9PVkVSTEFZX0JPVFRPTV9TSEVFVF9DTEFTUylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXRTdHlsZShcbiAgICAgICAgICAgICAgICBvdmVybGF5UGFuZUVsLFxuICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICBjb21iaW5lT3JNYWtlQ2FsYyhjdXJyQ29uZmlnLm1heEhlaWdodCwgYCR7ZGVmYXVsdEFuaW1hdGlvbkJ1ZmZlcn1weGApLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtd2lkdGgnLCBjdXJyQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFwcGx5RGVmYXVsdE1heFdpZHRocygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseURlZmF1bHRNYXhXaWR0aHMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnbWluLXdpZHRoJywgY3VyckNvbmZpZy5taW5XaWR0aCk7XG4gICAgICAgICAgc2V0U3R5bGUob3ZlcmxheVBhbmVFbCwgJ21pbi1oZWlnaHQnLCBjdXJyQ29uZmlnLm1pbkhlaWdodCk7XG5cbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnd2lkdGgnLCBjdXJyQ29uZmlnLndpZHRoKTtcbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnaGVpZ2h0JywgY3VyckNvbmZpZy5oZWlnaHQpO1xuXG4gICAgICAgICAgc2V0Q2xhc3MoY29udGFpbmVyRWwsIHByZXZDb25maWc/LmNvbnRhaW5lckNsYXNzLCBjdXJyQ29uZmlnPy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgICAgc2V0Q2xhc3Mob3ZlcmxheVBhbmVFbCwgcHJldkNvbmZpZz8ucGFuZUNsYXNzLCBjdXJyQ29uZmlnPy5wYW5lQ2xhc3MpO1xuICAgICAgICAgIHNldENsYXNzKG92ZXJsYXlXcmFwcGVyLCBwcmV2Q29uZmlnPy5vdmVybGF5Q2xhc3MsIGN1cnJDb25maWc/Lm92ZXJsYXlDbGFzcyk7XG5cbiAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgY2xhc3NlcyBzaG91bGQgb25seSBiZSByZW1vdmVkIGlmIG5vIG9wZW4gb3ZlcmxheXMgcmVxdWlyZSB0aGVtIGluc2lkZSB0aGVpciBjb25maWcuXG4gICAgICAgICAgc2V0Q2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBwcmV2Q29uZmlnPy5kb2N1bWVudENsYXNzLCBjdXJyQ29uZmlnPy5kb2N1bWVudENsYXNzKTtcbiAgICAgICAgICBzZXRDbGFzcyhkb2N1bWVudC5ib2R5LCBwcmV2Q29uZmlnPy5ib2R5Q2xhc3MsIGN1cnJDb25maWc/LmJvZHlDbGFzcyk7XG5cbiAgICAgICAgICBpZiAoYmFja2Ryb3BFbCkge1xuICAgICAgICAgICAgc2V0Q2xhc3MoYmFja2Ryb3BFbCwgcHJldkNvbmZpZz8uYmFja2Ryb3BDbGFzcywgY3VyckNvbmZpZz8uYmFja2Ryb3BDbGFzcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFlcXVhbChwcmV2Q29uZmlnPy5wb3NpdGlvbiwgY3VyckNvbmZpZz8ucG9zaXRpb24pKSB7XG4gICAgICAgICAgICBvdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKGN1cnJDb25maWcucG9zaXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyQ29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNka1JlZi5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koY3VyckNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZGtSZWYub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyQ29uZmlnLmRyYWdUb0Rpc21pc3MpIHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuX2NvbnRhaW5lckluc3RhbmNlLl9lbmFibGVEcmFnVG9EaXNtaXNzKGN1cnJDb25maWcuZHJhZ1RvRGlzbWlzcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuX2NvbnRhaW5lckluc3RhbmNlLl9kaXNhYmxlRHJhZ1RvRGlzbWlzcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLm9wZW5PdmVybGF5cy5wdXNoKG92ZXJsYXlSZWYhKTtcbiAgICB0aGlzLmFmdGVyT3BlbmVkLm5leHQob3ZlcmxheVJlZiEpO1xuXG4gICAgb3ZlcmxheVJlZiEuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIEZJWE1FOiBUaGVzZSBjbGFzc2VzIHNob3VsZCBvbmx5IGJlIHJlbW92ZWQgaWYgbm8gb3BlbiBvdmVybGF5cyByZXF1aXJlIHRoZW0gaW5zaWRlIHRoZWlyIGNvbmZpZy5cbiAgICAgIGNvbnN0IGRvY3VtZW50Q2xhc3NlcyA9IGNvbXBvc2VkQ29uZmlnLnBvc2l0aW9ucy5tYXAoKHBvc2l0aW9uKSA9PiBwb3NpdGlvbi5jb25maWcuZG9jdW1lbnRDbGFzcyk7XG5cbiAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2YgZG9jdW1lbnRDbGFzc2VzKSB7XG4gICAgICAgIGlmICgha2xhc3MpIGNvbnRpbnVlO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtsYXNzKSkge1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmtsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShrbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keUNsYXNzZXMgPSBjb21wb3NlZENvbmZpZy5wb3NpdGlvbnMubWFwKChwb3NpdGlvbikgPT4gcG9zaXRpb24uY29uZmlnLmJvZHlDbGFzcyk7XG5cbiAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2YgYm9keUNsYXNzZXMpIHtcbiAgICAgICAgaWYgKCFrbGFzcykgY29udGludWU7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2xhc3MpKSB7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKC4uLmtsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoa2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvdmVybGF5UmVmIS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMub3Blbk92ZXJsYXlzLmluZGV4T2Yob3ZlcmxheVJlZik7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgdGhpcy5vcGVuT3ZlcmxheXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgaWYgKCF0aGlzLm9wZW5PdmVybGF5cy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5uZXh0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb3ZlcmxheVJlZiE7XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24qL1xuICB9XG5cbiAgY2xvc2VBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VPdmVybGF5cyh0aGlzLm9wZW5PdmVybGF5cyk7XG4gIH1cblxuICBnZXRPdmVybGF5QnlJZChpZDogc3RyaW5nKTogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMub3Blbk92ZXJsYXlzLmZpbmQoKG92ZXJsYXkpID0+IG92ZXJsYXkuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlT3ZlcmxheXMob3ZlcmxheXM6IE92ZXJsYXlSZWZbXSkge1xuICAgIGxldCBpID0gb3ZlcmxheXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgb3ZlcmxheXNbaV0/LmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWZ0ZXJBbGxDbG9zZWQoKTogU3ViamVjdDx2b2lkPiB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2U7XG4gICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKSA6IHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWw7XG4gIH1cbn1cbiJdfQ==
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3NlcnZpY2VzL292ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxJQUFJLFNBQVMsRUFBRSxZQUFZLElBQUksZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0YsT0FBTyxFQUFnQixVQUFVLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sVUFBVSxDQUFDOztBQUVsQixJQUFJLFFBQVEsR0FBRyxD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QUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDaEYsQ0FBQzs4R0E5U1UsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaWFsb2cgYXMgQ2RrRGlhbG9nLCBEaWFsb2dDb25maWcgYXMgQ2RrRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJPT1RfQk9VTkRBUllfVE9LRU4sIFJvb3RCb3VuZGFyeURpcmVjdGl2ZSwgVmlld3BvcnRTZXJ2aWNlLCBjcmVhdGVEZXN0cm95LCBlcXVhbCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCBUSEVNRV9QUk9WSURFUiB9IGZyb20gJ0BldGhsZXRlL3RoZW1pbmcnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGVmZXIsIG1hcCwgb2YsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBPVkVSTEFZX0NPTkZJRywgT1ZFUkxBWV9EQVRBLCBPVkVSTEFZX0RFRkFVTFRfT1BUSU9OUywgT1ZFUkxBWV9TQ1JPTExfU1RSQVRFR1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIEVUX09WRVJMQVlfQk9UVE9NX1NIRUVUX0NMQVNTLFxuICBFVF9PVkVSTEFZX0xFRlRfU0hFRVRfQ0xBU1MsXG4gIEVUX09WRVJMQVlfUklHSFRfU0hFRVRfQ0xBU1MsXG4gIEVUX09WRVJMQVlfVE9QX1NIRUVUX0NMQVNTLFxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICBPdmVybGF5UmVmLFxuICBjcmVhdGVPdmVybGF5Q29uZmlnLFxufSBmcm9tICcuLi91dGlscyc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5jb25zdCBJRF9QUkVGSVggPSAnZXQtb3ZlcmxheS0nO1xuXG5jb25zdCBzZXRTdHlsZSA9IChlbDogSFRNTEVsZW1lbnQsIHN0eWxlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KHN0eWxlLCBjb2VyY2VDc3NQaXhlbFZhbHVlKHZhbHVlKSk7XG4gIH1cbn07XG5cbmNvbnN0IHNldENsYXNzID0gKGVsOiBIVE1MRWxlbWVudCwgcHJldkNsYXNzPzogc3RyaW5nIHwgc3RyaW5nW10sIGN1cnJDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XG4gIGlmICghZXF1YWwocHJldkNsYXNzLCBjdXJyQ2xhc3MpKSB7XG4gICAgaWYgKHByZXZDbGFzcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJldkNsYXNzKSkge1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLnByZXZDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHByZXZDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN1cnJDbGFzcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VyckNsYXNzKSkge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKC4uLmN1cnJDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGN1cnJDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBpc0h0bWxFbGVtZW50ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5rbm93bik6IGVsZW1lbnQgaXMgSFRNTEVsZW1lbnQgPT4ge1xuICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufTtcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuY29uc3QgaXNQb2ludGVyRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogZXZlbnQgaXMgUG9pbnRlckV2ZW50ID0+IHtcbiAgcmV0dXJuIGV2ZW50LnR5cGVbMF0gPT09ICdjJztcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVybGF5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucyA9IGluamVjdChPVkVSTEFZX0RFRkFVTFRfT1BUSU9OUywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsU3RyYXRlZ3kgPSBpbmplY3QoT1ZFUkxBWV9TQ1JPTExfU1RSQVRFR1kpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnRPdmVybGF5U2VydmljZSA9IGluamVjdChPdmVybGF5U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZyA9IGluamVjdChDZGtEaWFsb2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVuT3ZlcmxheXNBdFRoaXNMZXZlbDogT3ZlcmxheVJlZltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5lZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8T3ZlcmxheVJlZj4oKTtcblxuICByZWFkb25seSBwb3NpdGlvbnMgPSBuZXcgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcigpO1xuXG4gIHJlYWRvbmx5IGFmdGVyQWxsQ2xvc2VkID0gZGVmZXIoKCkgPT5cbiAgICB0aGlzLm9wZW5PdmVybGF5cy5sZW5ndGggPyB0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpIDogdGhpcy5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKSxcbiAgKSBhcyBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIGdldCBvcGVuT3ZlcmxheXMoKTogT3ZlcmxheVJlZltdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2UgPyB0aGlzLl9wYXJlbnRPdmVybGF5U2VydmljZS5vcGVuT3ZlcmxheXMgOiB0aGlzLl9vcGVuT3ZlcmxheXNBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIGdldCBhZnRlck9wZW5lZCgpOiBTdWJqZWN0PE92ZXJsYXlSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2UgPyB0aGlzLl9wYXJlbnRPdmVybGF5U2VydmljZS5hZnRlck9wZW5lZCA6IHRoaXMuX2FmdGVyT3BlbmVkQXRUaGlzTGV2ZWw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9jbG9zZU92ZXJsYXlzKHRoaXMuX29wZW5PdmVybGF5c0F0VGhpc0xldmVsKTtcbiAgICB0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPiwgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+KTogT3ZlcmxheVJlZjxULCBSPjtcbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUPiwgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+KTogT3ZlcmxheVJlZjxULCBSPjtcbiAgb3BlbjxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIHRlbXBsYXRlOiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgY29uZmlnOiBPdmVybGF5Q29uZmlnPEQ+LFxuICApOiBPdmVybGF5UmVmPFQsIFI+O1xuICBvcGVuPFQsIEQgPSB1bmtub3duLCBSID0gdW5rbm93bj4oXG4gICAgY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGNvbmZpZzogT3ZlcmxheUNvbmZpZzxEPixcbiAgKTogT3ZlcmxheVJlZjxULCBSPiB7XG4gICAgbGV0IG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY8VCwgUj47XG5cbiAgICBjb25zdCBjb21wb3NlZENvbmZpZyA9IGNyZWF0ZU92ZXJsYXlDb25maWc8RD4odGhpcy5fZGVmYXVsdE9wdGlvbnMgYXMgT3ZlcmxheUNvbmZpZzxEPiwgY29uZmlnKTtcbiAgICBjb21wb3NlZENvbmZpZy5pZCA9IGNvbXBvc2VkQ29uZmlnLmlkIHx8IGAke0lEX1BSRUZJWH0ke3VuaXF1ZUlkKyt9YDtcbiAgICBjb21wb3NlZENvbmZpZy5zY3JvbGxTdHJhdGVneSA9IGNvbXBvc2VkQ29uZmlnLnNjcm9sbFN0cmF0ZWd5IHx8IHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCk7XG5cbiAgICBjb25zdCBjZGtSZWYgPSB0aGlzLl9kaWFsb2cub3BlbjxSLCBELCBUPihjb21wb25lbnRPclRlbXBsYXRlUmVmLCB7XG4gICAgICAuLi5jb21wb3NlZENvbmZpZyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGNsb3NlT25EZXN0cm95OiBmYWxzZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdldC1vdmVybGF5LXBhbmUnLFxuICAgICAgY29udGFpbmVyOiB7XG4gICAgICAgIHR5cGU6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIHByb3ZpZGVyczogKCkgPT4gW1xuICAgICAgICAgIHsgcHJvdmlkZTogT1ZFUkxBWV9DT05GSUcsIHVzZVZhbHVlOiBjb21wb3NlZENvbmZpZyB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogQ2RrRGlhbG9nQ29uZmlnLCB1c2VWYWx1ZTogY29tcG9zZWRDb25maWcgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZUNvbnRleHQ6ICgpID0+ICh7IGRpYWxvZ1JlZjogb3ZlcmxheVJlZiB9KSxcbiAgICAgIHByb3ZpZGVyczogKHJlZiwgY2RrQ29uZmlnLCBvdmVybGF5Q29udGFpbmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG92ZXJsYXlDb250YWluZXIgYXMgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudDtcbiAgICAgICAgb3ZlcmxheVJlZiA9IG5ldyBPdmVybGF5UmVmKHJlZiwgY29tcG9zZWRDb25maWcsIGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IHByb3ZpZGU6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsIHVzZVZhbHVlOiBvdmVybGF5Q29udGFpbmVyIH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBUSEVNRV9QUk9WSURFUiwgdXNlVmFsdWU6IGNvbnRhaW5lci5fdGhlbWVQcm92aWRlciB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogUHJvdmlkZVRoZW1lRGlyZWN0aXZlLCB1c2VWYWx1ZTogY29udGFpbmVyLl90aGVtZVByb3ZpZGVyIH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBST09UX0JPVU5EQVJZX1RPS0VOLCB1c2VWYWx1ZTogY29udGFpbmVyLl9yb290Qm91bmRhcnkgfSxcbiAgICAgICAgICB7IHByb3ZpZGU6IFJvb3RCb3VuZGFyeURpcmVjdGl2ZSwgdXNlVmFsdWU6IGNvbnRhaW5lci5fcm9vdEJvdW5kYXJ5IH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBPVkVSTEFZX0RBVEEsIHVzZVZhbHVlOiBjZGtDb25maWcuZGF0YSB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogT3ZlcmxheVJlZiwgdXNlVmFsdWU6IG92ZXJsYXlSZWYgfSxcbiAgICAgICAgICB7IHByb3ZpZGU6IE92ZXJsYXlSZWYsIHVzZVZhbHVlOiBvdmVybGF5UmVmIH0sXG4gICAgICAgICAgLi4uKGNvbXBvc2VkQ29uZmlnLnByb3ZpZGVycyA/PyBbXSksXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiovXG4gICAgKG92ZXJsYXlSZWYhIGFzIHsgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfSkuY29tcG9uZW50UmVmID0gY2RrUmVmLmNvbXBvbmVudFJlZiE7XG4gICAgb3ZlcmxheVJlZiEuY29tcG9uZW50SW5zdGFuY2UgPSBjZGtSZWYuY29tcG9uZW50SW5zdGFuY2UhO1xuXG4gICAgKGNka1JlZi5jb250YWluZXJJbnN0YW5jZSBhcyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50KS5vdmVybGF5UmVmID0gb3ZlcmxheVJlZiE7XG5cbiAgICBjb25zdCBjb250YWluZXJFbCA9IG92ZXJsYXlSZWYhLl9jb250YWluZXJJbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgb3ZlcmxheVBhbmVFbCA9IGNka1JlZi5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50O1xuICAgIGNvbnN0IGJhY2tkcm9wRWwgPSBjZGtSZWYub3ZlcmxheVJlZi5iYWNrZHJvcEVsZW1lbnQ7XG4gICAgY29uc3Qgb3ZlcmxheVdyYXBwZXIgPSBjZGtSZWYub3ZlcmxheVJlZi5ob3N0RWxlbWVudDtcbiAgICBjb25zdCBkZWZhdWx0QW5pbWF0aW9uQnVmZmVyID0gNTA7IC8vIDUwcHggc2luY2UgdGhlIGRlZmF1bHQgYW5pbWF0aW9uIHVzZXMgc3ByaW5nIHBoeXNpY3MgYW5kIHRodXMgd2lsbCBvdmVyc2hvb3QuXG4gICAgY29uc3QgdXNlRGVmYXVsdEFuaW1hdGlvbiA9IGNvbXBvc2VkQ29uZmlnLmN1c3RvbUFuaW1hdGVkICE9PSB0cnVlO1xuICAgIGNvbnN0IG9yaWdpbiA9IGNvbXBvc2VkQ29uZmlnLm9yaWdpbjtcblxuICAgIGNvbWJpbmVMYXRlc3QoXG4gICAgICBjb21wb3NlZENvbmZpZy5wb3NpdGlvbnMubWFwKChicmVha3BvaW50KSA9PlxuICAgICAgICAoYnJlYWtwb2ludC5icmVha3BvaW50ID8gdGhpcy5fdmlld3BvcnRTZXJ2aWNlLm9ic2VydmUoeyBtaW46IGJyZWFrcG9pbnQuYnJlYWtwb2ludCB9KSA6IG9mKHRydWUpKS5waXBlKFxuICAgICAgICAgIG1hcCgoaXNBY3RpdmUpID0+ICh7XG4gICAgICAgICAgICBpc0FjdGl2ZSxcbiAgICAgICAgICAgIGNvbmZpZzogYnJlYWtwb2ludC5jb25maWcsXG4gICAgICAgICAgICBzaXplOlxuICAgICAgICAgICAgICB0eXBlb2YgYnJlYWtwb2ludC5icmVha3BvaW50ID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gYnJlYWtwb2ludC5icmVha3BvaW50XG4gICAgICAgICAgICAgICAgOiBicmVha3BvaW50LmJyZWFrcG9pbnQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuX3ZpZXdwb3J0U2VydmljZS5nZXRCcmVha3BvaW50U2l6ZShicmVha3BvaW50LmJyZWFrcG9pbnQsICdtaW4nKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwob3ZlcmxheVJlZiEuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIG1hcCgoZW50cmllcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUJyZWFrcG9pbnRzID0gZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5pc0FjdGl2ZSk7XG4gICAgICAgICAgY29uc3QgaGlnaGVzdEJyZWFrcG9pbnQgPSBhY3RpdmVCcmVha3BvaW50cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChwcmV2LnNpemUgPiBjdXJyLnNpemUgPyBwcmV2IDogY3VycikpO1xuXG4gICAgICAgICAgcmV0dXJuIGhpZ2hlc3RCcmVha3BvaW50LmNvbmZpZztcbiAgICAgICAgfSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgdGFwKChbcHJldkNvbmZpZywgY3VyckNvbmZpZ10pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJDb25maWcpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lckNsYXNzID0gY3VyckNvbmZpZy5jb250YWluZXJDbGFzcztcblxuICAgICAgICAgIGNvbnN0IGFwcGx5RGVmYXVsdE1heFdpZHRocyA9ICgpID0+IHtcbiAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtd2lkdGgnLCBjdXJyQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtaGVpZ2h0JywgY3VyckNvbmZpZy5tYXhIZWlnaHQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb21iaW5lT3JNYWtlQ2FsYyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgYXBwZW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBhcHBlbmQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHJldHVybiBgY2FsYygke3ZhbHVlfXB4ICsgJHthcHBlbmR9KWA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ2NhbGMoJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGAke3ZhbHVlLnNsaWNlKDAsIHZhbHVlLmxlbmd0aCAtIDEpfSArICR7YXBwZW5kfSlgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYGNhbGMoJHt2YWx1ZX0gKyAke2FwcGVuZH0pYDtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgLy8gVE9ETzogSWYgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGlzIHVzZWQgaXQgc2hvdWxkIHVzZSB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50LlxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luWCA9IGlzSHRtbEVsZW1lbnQob3JpZ2luKVxuICAgICAgICAgICAgICA/IG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gICAgICAgICAgICAgIDogaXNUb3VjaEV2ZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgICA/IG9yaWdpbi50YXJnZXRUb3VjaGVzWzBdIS5jbGllbnRYXG4gICAgICAgICAgICAgICAgOiBpc1BvaW50ZXJFdmVudChvcmlnaW4pXG4gICAgICAgICAgICAgICAgICA/IG9yaWdpbi5jbGllbnRYICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gb3JpZ2luLmNsaWVudFhcbiAgICAgICAgICAgICAgICAgICAgOiAob3JpZ2luLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdFxuICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpblkgPSBpc0h0bWxFbGVtZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgPyBvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICAgIDogaXNUb3VjaEV2ZW50KG9yaWdpbilcbiAgICAgICAgICAgICAgICA/IG9yaWdpbi50YXJnZXRUb3VjaGVzWzBdIS5jbGllbnRZXG4gICAgICAgICAgICAgICAgOiBpc1BvaW50ZXJFdmVudChvcmlnaW4pXG4gICAgICAgICAgICAgICAgICA/IG9yaWdpbi5jbGllbnRZICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gb3JpZ2luLmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgOiAob3JpZ2luLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICBpZiAob3JpZ2luWCAhPT0gLTEgJiYgb3JpZ2luWSAhPT0gLTEgJiYgY3VyckNvbmZpZy5hcHBseVRyYW5zZm9ybU9yaWdpbikge1xuICAgICAgICAgICAgICBzZXRTdHlsZShjb250YWluZXJFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nLCBgJHtvcmlnaW5YfXB4ICR7b3JpZ2luWX1weGApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0U3R5bGUoY29udGFpbmVyRWwsICd0cmFuc2Zvcm0tb3JpZ2luJywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVzZURlZmF1bHRBbmltYXRpb24gJiYgY29udGFpbmVyQ2xhc3M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9MRUZUX1NIRUVUX0NMQVNTKSB8fFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9SSUdIVF9TSEVFVF9DTEFTUylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXRTdHlsZShcbiAgICAgICAgICAgICAgICBvdmVybGF5UGFuZUVsLFxuICAgICAgICAgICAgICAgICdtYXgtd2lkdGgnLFxuICAgICAgICAgICAgICAgIGNvbWJpbmVPck1ha2VDYWxjKGN1cnJDb25maWcubWF4V2lkdGgsIGAke2RlZmF1bHRBbmltYXRpb25CdWZmZXJ9cHhgKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgc2V0U3R5bGUob3ZlcmxheVBhbmVFbCwgJ21heC1oZWlnaHQnLCBjdXJyQ29uZmlnLm1heEhlaWdodCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz8uaW5jbHVkZXMoRVRfT1ZFUkxBWV9UT1BfU0hFRVRfQ0xBU1MpIHx8XG4gICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzPy5pbmNsdWRlcyhFVF9PVkVSTEFZX0JPVFRPTV9TSEVFVF9DTEFTUylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXRTdHlsZShcbiAgICAgICAgICAgICAgICBvdmVybGF5UGFuZUVsLFxuICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICBjb21iaW5lT3JNYWtlQ2FsYyhjdXJyQ29uZmlnLm1heEhlaWdodCwgYCR7ZGVmYXVsdEFuaW1hdGlvbkJ1ZmZlcn1weGApLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHNldFN0eWxlKG92ZXJsYXlQYW5lRWwsICdtYXgtd2lkdGgnLCBjdXJyQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFwcGx5RGVmYXVsdE1heFdpZHRocygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseURlZmF1bHRNYXhXaWR0aHMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnbWluLXdpZHRoJywgY3VyckNvbmZpZy5taW5XaWR0aCk7XG4gICAgICAgICAgc2V0U3R5bGUob3ZlcmxheVBhbmVFbCwgJ21pbi1oZWlnaHQnLCBjdXJyQ29uZmlnLm1pbkhlaWdodCk7XG5cbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnd2lkdGgnLCBjdXJyQ29uZmlnLndpZHRoKTtcbiAgICAgICAgICBzZXRTdHlsZShvdmVybGF5UGFuZUVsLCAnaGVpZ2h0JywgY3VyckNvbmZpZy5oZWlnaHQpO1xuXG4gICAgICAgICAgc2V0Q2xhc3MoY29udGFpbmVyRWwsIHByZXZDb25maWc/LmNvbnRhaW5lckNsYXNzLCBjdXJyQ29uZmlnPy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgICAgc2V0Q2xhc3Mob3ZlcmxheVBhbmVFbCwgcHJldkNvbmZpZz8ucGFuZUNsYXNzLCBjdXJyQ29uZmlnPy5wYW5lQ2xhc3MpO1xuICAgICAgICAgIHNldENsYXNzKG92ZXJsYXlXcmFwcGVyLCBwcmV2Q29uZmlnPy5vdmVybGF5Q2xhc3MsIGN1cnJDb25maWc/Lm92ZXJsYXlDbGFzcyk7XG5cbiAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgY2xhc3NlcyBzaG91bGQgb25seSBiZSByZW1vdmVkIGlmIG5vIG9wZW4gb3ZlcmxheXMgcmVxdWlyZSB0aGVtIGluc2lkZSB0aGVpciBjb25maWcuXG4gICAgICAgICAgc2V0Q2xhc3MoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBwcmV2Q29uZmlnPy5kb2N1bWVudENsYXNzLCBjdXJyQ29uZmlnPy5kb2N1bWVudENsYXNzKTtcbiAgICAgICAgICBzZXRDbGFzcyhkb2N1bWVudC5ib2R5LCBwcmV2Q29uZmlnPy5ib2R5Q2xhc3MsIGN1cnJDb25maWc/LmJvZHlDbGFzcyk7XG5cbiAgICAgICAgICBpZiAoYmFja2Ryb3BFbCkge1xuICAgICAgICAgICAgc2V0Q2xhc3MoYmFja2Ryb3BFbCwgcHJldkNvbmZpZz8uYmFja2Ryb3BDbGFzcywgY3VyckNvbmZpZz8uYmFja2Ryb3BDbGFzcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFlcXVhbChwcmV2Q29uZmlnPy5wb3NpdGlvbiwgY3VyckNvbmZpZz8ucG9zaXRpb24pKSB7XG4gICAgICAgICAgICBvdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKGN1cnJDb25maWcucG9zaXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyQ29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNka1JlZi5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koY3VyckNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZGtSZWYub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyQ29uZmlnLmRyYWdUb0Rpc21pc3MpIHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuX2NvbnRhaW5lckluc3RhbmNlLl9lbmFibGVEcmFnVG9EaXNtaXNzKGN1cnJDb25maWcuZHJhZ1RvRGlzbWlzcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuX2NvbnRhaW5lckluc3RhbmNlLl9kaXNhYmxlRHJhZ1RvRGlzbWlzcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLm9wZW5PdmVybGF5cy5wdXNoKG92ZXJsYXlSZWYhKTtcbiAgICB0aGlzLmFmdGVyT3BlbmVkLm5leHQob3ZlcmxheVJlZiEpO1xuXG4gICAgb3ZlcmxheVJlZiEuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIEZJWE1FOiBUaGVzZSBjbGFzc2VzIHNob3VsZCBvbmx5IGJlIHJlbW92ZWQgaWYgbm8gb3BlbiBvdmVybGF5cyByZXF1aXJlIHRoZW0gaW5zaWRlIHRoZWlyIGNvbmZpZy5cbiAgICAgIGNvbnN0IGRvY3VtZW50Q2xhc3NlcyA9IGNvbXBvc2VkQ29uZmlnLnBvc2l0aW9ucy5tYXAoKHBvc2l0aW9uKSA9PiBwb3NpdGlvbi5jb25maWcuZG9jdW1lbnRDbGFzcyk7XG5cbiAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2YgZG9jdW1lbnRDbGFzc2VzKSB7XG4gICAgICAgIGlmICgha2xhc3MpIGNvbnRpbnVlO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtsYXNzKSkge1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmtsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShrbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keUNsYXNzZXMgPSBjb21wb3NlZENvbmZpZy5wb3NpdGlvbnMubWFwKChwb3NpdGlvbikgPT4gcG9zaXRpb24uY29uZmlnLmJvZHlDbGFzcyk7XG5cbiAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2YgYm9keUNsYXNzZXMpIHtcbiAgICAgICAgaWYgKCFrbGFzcykgY29udGludWU7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2xhc3MpKSB7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKC4uLmtsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoa2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvdmVybGF5UmVmIS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMub3Blbk92ZXJsYXlzLmluZGV4T2Yob3ZlcmxheVJlZik7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgdGhpcy5vcGVuT3ZlcmxheXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgaWYgKCF0aGlzLm9wZW5PdmVybGF5cy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKS5uZXh0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb3ZlcmxheVJlZiE7XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24qL1xuICB9XG5cbiAgY2xvc2VBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VPdmVybGF5cyh0aGlzLm9wZW5PdmVybGF5cyk7XG4gIH1cblxuICBnZXRPdmVybGF5QnlJZChpZDogc3RyaW5nKTogT3ZlcmxheVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMub3Blbk92ZXJsYXlzLmZpbmQoKG92ZXJsYXkpID0+IG92ZXJsYXkuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlT3ZlcmxheXMob3ZlcmxheXM6IE92ZXJsYXlSZWZbXSkge1xuICAgIGxldCBpID0gb3ZlcmxheXMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgb3ZlcmxheXNbaV0/LmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWZ0ZXJBbGxDbG9zZWQoKTogU3ViamVjdDx2b2lkPiB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50T3ZlcmxheVNlcnZpY2U7XG4gICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKSA6IHRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,117 @@
1
+ import { Injectable, InjectionToken, computed, inject, isDevMode } from '@angular/core';
2
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
3
+ import { cloneFormGroup, getFormGroupValue } from '@ethlete/core';
4
+ import { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, switchQueryState, } from '@ethlete/query';
5
+ import { debounceTime, map, merge, startWith, take } from 'rxjs';
6
+ import { OverlayRef } from './overlay-ref';
7
+ import * as i0 from "@angular/core";
8
+ export const FILTER_OVERLAY_CONFIG = new InjectionToken('FILTER_OVERLAY_CONFIG');
9
+ export const defaultSubmitButtonConfigFn = (config) => {
10
+ const { queryState, totalHits, locale = 'en' } = config;
11
+ if (isQueryStateLoading(queryState)) {
12
+ return {
13
+ disabled: true,
14
+ label: locale === 'en' ? 'Loading results...' : 'Lade Ergebnisse...',
15
+ };
16
+ }
17
+ else if (isQueryStateFailure(queryState)) {
18
+ return {
19
+ disabled: true,
20
+ label: locale === 'en' ? 'An error occurred' : 'Ein Fehler ist aufgetreten',
21
+ };
22
+ }
23
+ else if (totalHits !== null) {
24
+ if (totalHits === 0) {
25
+ return {
26
+ disabled: true,
27
+ label: locale === 'en' ? 'No results found' : 'Keine Ergebnisse gefunden',
28
+ };
29
+ }
30
+ else if (totalHits === 1) {
31
+ return {
32
+ disabled: false,
33
+ label: locale === 'en' ? 'Show one result' : 'Zeige ein Ergebnis',
34
+ };
35
+ }
36
+ else if (totalHits > 250) {
37
+ return {
38
+ disabled: false,
39
+ label: locale === 'en' ? 'Show more than 250 results' : 'Zeige mehr als 250 Ergebnisse',
40
+ };
41
+ }
42
+ else {
43
+ return {
44
+ disabled: false,
45
+ label: locale === 'en' ? `Show ${totalHits} results` : `Zeige ${totalHits} Ergebnisse`,
46
+ };
47
+ }
48
+ }
49
+ if (isDevMode()) {
50
+ console.error('The default submit button config function resulted in an unknown state. The fallback state might be invalid and should be checked.', config);
51
+ }
52
+ // This should never happen
53
+ return {
54
+ disabled: true,
55
+ label: locale === 'en' ? 'No results found' : 'Keine Ergebnisse gefunden',
56
+ };
57
+ };
58
+ export class FilterOverlayService {
59
+ constructor() {
60
+ this.config = inject(FILTER_OVERLAY_CONFIG);
61
+ this.overlayRef = inject(OverlayRef);
62
+ this.form = cloneFormGroup(this.config.form);
63
+ this.searchPreviewQuery = toSignal(merge(this.form.valueChanges.pipe(startWith(this.form.getRawValue()), take(1)), this.form.valueChanges.pipe(debounceTime(300))).pipe(map((value) => this.config.searchPreviewQueryFn?.(value) ?? null)), { initialValue: null });
64
+ this.searchPreviewQueryState = toSignal(toObservable(this.searchPreviewQuery).pipe(switchQueryState()), {
65
+ initialValue: null,
66
+ });
67
+ this.searchPreviewTotalHits = computed(() => {
68
+ const state = this.searchPreviewQueryState();
69
+ if (isQueryStateSuccess(state)) {
70
+ if (this.config.totalHitsExtractorFn) {
71
+ return this.config.totalHitsExtractorFn(state.response);
72
+ }
73
+ if (!state.response || typeof state.response !== 'object' || !('totalHits' in state.response)) {
74
+ console.error(`The response does not contain a totalHits property.`, state.response);
75
+ return null;
76
+ }
77
+ return state.response.totalHits;
78
+ }
79
+ return null;
80
+ });
81
+ this.submitButtonConfig = computed(() => {
82
+ const state = this.searchPreviewQueryState();
83
+ const totalHits = this.searchPreviewTotalHits();
84
+ return (this.config.submitButtonConfigFn?.({ queryState: state, totalHits }) ??
85
+ defaultSubmitButtonConfigFn({ queryState: state, totalHits }));
86
+ });
87
+ }
88
+ submit() {
89
+ const value = getFormGroupValue(this.form);
90
+ this.config.form.setValue(value);
91
+ this.close({ didUpdate: true, formValue: value });
92
+ }
93
+ reset() {
94
+ if (!this.config.defaults) {
95
+ throw new Error(`The default form value is not defined.`);
96
+ }
97
+ this.form.patchValue(this.config.defaults);
98
+ }
99
+ close(data) {
100
+ this.overlayRef?.close(data);
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FilterOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
103
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FilterOverlayService }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FilterOverlayService, decorators: [{
106
+ type: Injectable
107
+ }] });
108
+ export const provideFilterOverlayConfig = (config) => {
109
+ return [
110
+ {
111
+ provide: FILTER_OVERLAY_CONFIG,
112
+ useValue: config,
113
+ },
114
+ FilterOverlayService,
115
+ ];
116
+ };
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW92ZXJsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvZmlsdGVyLW92ZXJsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFJTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLENBQUMsQ0FBQztBQThDdEcsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsTUFBeUMsRUFDUixFQUFFO0lBQ25DLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFeEQsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDLENB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QyxDQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7S0FvQko7SUFsQkMsTUFBTTtRQUNKLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUEwQjtRQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQWhFVSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7QUFvRVgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLEVBQUU7SUFDeEUsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixRQUFRLEVBQUUsTUFBTTtTQUNqQjtRQUNELG9CQUFvQjtLQUNyQixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGNvbXB1dGVkLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRm9ybUdyb3VwLCBnZXRGb3JtR3JvdXBWYWx1ZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIFF1ZXJ5UmVzcG9uc2VPZixcbiAgUXVlcnlTdGF0ZSxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgc3dpdGNoUXVlcnlTdGF0ZSxcbn0gZnJvbSAnQGV0aGxldGUvcXVlcnknO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIG1lcmdlLCBzdGFydFdpdGgsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICcuL292ZXJsYXktcmVmJztcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9PVkVSTEFZX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGaWx0ZXJPdmVybGF5Q29uZmlnPignRklMVEVSX09WRVJMQVlfQ09ORklHJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGaWx0ZXJPdmVybGF5Q29uZmlnPEYgZXh0ZW5kcyBGb3JtR3JvdXA8YW55PiA9IEZvcm1Hcm91cDxhbnk+LCBRIGV4dGVuZHMgQW55UXVlcnkgPSBBbnlRdWVyeT4gPSB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSB0byB1c2UuXG4gICAqL1xuICBmb3JtOiBGO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBmb3JtIHZhbHVlLiBVc2VkIHdoZW4gdGhlIGZvcm0gaXMgcmVzZXQuXG4gICAqL1xuICBkZWZhdWx0cz86IFJldHVyblR5cGU8RlsnZ2V0UmF3VmFsdWUnXT47XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgcXVlcnkgYmFzZWQgb24gdGhlIGZvcm0gdmFsdWUuXG4gICAqL1xuICBzZWFyY2hQcmV2aWV3UXVlcnlGbj86IChmb3JtVmFsdWU6IFJldHVyblR5cGU8RlsnZ2V0UmF3VmFsdWUnXT4pID0+IFE7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgdG90YWwgaGl0cyBmcm9tIHRoZSByZXNwb25zZS5cbiAgICogQGRlZmF1bHQgYHJlc3BvbnNlLnRvdGFsSGl0c2BcbiAgICovXG4gIHRvdGFsSGl0c0V4dHJhY3RvckZuPzogKHJlc3BvbnNlOiBRdWVyeVJlc3BvbnNlT2Y8UT4pID0+IG51bWJlcjtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIHN1Ym1pdCBidXR0b24gY29uZmlnIGJhc2VkIG9uIHRoZSBxdWVyeSBzdGF0ZSBhbmQgdGhlIHRvdGFsIGhpdHMuXG4gICAqIElmIGEgZ2VybWFuIHRyYW5zbGF0aW9uIGlzIG5lZWRlZCwgbWFudWFsbHkgcHJvdmlkZSB0aGUgYGRlZmF1bHRTdWJtaXRCdXR0b25Db25maWdGbmAgYW5kIHNldCB0aGUgbG9jYWxlIHRvIGBkZWAuXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRTdWJtaXRCdXR0b25Db25maWdGbigpXG4gICAqL1xuICBzdWJtaXRCdXR0b25Db25maWdGbj86IChcbiAgICBjb25maWc6IERlZmF1bHRTdWJtaXRCdXR0b25Db25maWdGbkNvbmZpZzxRdWVyeVJlc3BvbnNlT2Y8UT4+LFxuICApID0+IEZpbHRlck92ZXJsYXlTdWJtaXRCdXR0b25Db25maWc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJPdmVybGF5U3VibWl0QnV0dG9uQ29uZmlnID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRTdWJtaXRCdXR0b25Db25maWdGbkNvbmZpZzxSZXNwb25zZVR5cGUgPSB1bmtub3duPiA9IHtcbiAgcXVlcnlTdGF0ZTogUXVlcnlTdGF0ZTxSZXNwb25zZVR5cGU+IHwgbnVsbDtcbiAgdG90YWxIaXRzOiBudW1iZXIgfCBudWxsO1xuICBsb2NhbGU/OiAnZW4nIHwgJ2RlJztcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U3VibWl0QnV0dG9uQ29uZmlnRm4gPSAoXG4gIGNvbmZpZzogRGVmYXVsdFN1Ym1pdEJ1dHRvbkNvbmZpZ0ZuQ29uZmlnLFxuKTogRmlsdGVyT3ZlcmxheVN1Ym1pdEJ1dHRvbkNvbmZpZyA9PiB7XG4gIGNvbnN0IHsgcXVlcnlTdGF0ZSwgdG90YWxIaXRzLCBsb2NhbGUgPSAnZW4nIH0gPSBjb25maWc7XG5cbiAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcocXVlcnlTdGF0ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBsYWJlbDogbG9jYWxlID09PSAnZW4nID8gJ0xvYWRpbmcgcmVzdWx0cy4uLicgOiAnTGFkZSBFcmdlYm5pc3NlLi4uJyxcbiAgICB9O1xuICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUocXVlcnlTdGF0ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBsYWJlbDogbG9jYWxlID09PSAnZW4nID8gJ0FuIGVycm9yIG9jY3VycmVkJyA6ICdFaW4gRmVobGVyIGlzdCBhdWZnZXRyZXRlbicsXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0b3RhbEhpdHMgIT09IG51bGwpIHtcbiAgICBpZiAodG90YWxIaXRzID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IGxvY2FsZSA9PT0gJ2VuJyA/ICdObyByZXN1bHRzIGZvdW5kJyA6ICdLZWluZSBFcmdlYm5pc3NlIGdlZnVuZGVuJyxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0b3RhbEhpdHMgPT09IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgbGFiZWw6IGxvY2FsZSA9PT0gJ2VuJyA/ICdTaG93IG9uZSByZXN1bHQnIDogJ1plaWdlIGVpbiBFcmdlYm5pcycsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodG90YWxIaXRzID4gMjUwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGxhYmVsOiBsb2NhbGUgPT09ICdlbicgPyAnU2hvdyBtb3JlIHRoYW4gMjUwIHJlc3VsdHMnIDogJ1plaWdlIG1laHIgYWxzIDI1MCBFcmdlYm5pc3NlJyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgbGFiZWw6IGxvY2FsZSA9PT0gJ2VuJyA/IGBTaG93ICR7dG90YWxIaXRzfSByZXN1bHRzYCA6IGBaZWlnZSAke3RvdGFsSGl0c30gRXJnZWJuaXNzZWAsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc0Rldk1vZGUoKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnVGhlIGRlZmF1bHQgc3VibWl0IGJ1dHRvbiBjb25maWcgZnVuY3Rpb24gcmVzdWx0ZWQgaW4gYW4gdW5rbm93biBzdGF0ZS4gVGhlIGZhbGxiYWNrIHN0YXRlIG1pZ2h0IGJlIGludmFsaWQgYW5kIHNob3VsZCBiZSBjaGVja2VkLicsXG4gICAgICBjb25maWcsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICByZXR1cm4ge1xuICAgIGRpc2FibGVkOiB0cnVlLFxuICAgIGxhYmVsOiBsb2NhbGUgPT09ICdlbicgPyAnTm8gcmVzdWx0cyBmb3VuZCcgOiAnS2VpbmUgRXJnZWJuaXNzZSBnZWZ1bmRlbicsXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJPdmVybGF5UmVzdWx0PEZvcm1WYWx1ZSA9IHVua25vd24+ID1cbiAgfCB7XG4gICAgICBkaWRVcGRhdGU6IGZhbHNlO1xuICAgIH1cbiAgfCB7XG4gICAgICBkaWRVcGRhdGU6IHRydWU7XG4gICAgICBmb3JtVmFsdWU6IEZvcm1WYWx1ZTtcbiAgICB9O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsdGVyT3ZlcmxheVNlcnZpY2U8RiBleHRlbmRzIEZvcm1Hcm91cCwgQyBleHRlbmRzIENvbXBvbmVudFR5cGU8dW5rbm93bj4+IHtcbiAgY29uZmlnID0gaW5qZWN0PEZpbHRlck92ZXJsYXlDb25maWc8Rj4+KEZJTFRFUl9PVkVSTEFZX0NPTkZJRyk7XG4gIG92ZXJsYXlSZWYgPSBpbmplY3Q8T3ZlcmxheVJlZjxDLCBGaWx0ZXJPdmVybGF5UmVzdWx0Pj4oT3ZlcmxheVJlZik7XG5cbiAgZm9ybSA9IGNsb25lRm9ybUdyb3VwKHRoaXMuY29uZmlnLmZvcm0gYXMgRik7XG5cbiAgc2VhcmNoUHJldmlld1F1ZXJ5ID0gdG9TaWduYWwoXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSwgdGFrZSgxKSksXG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLFxuICAgICkucGlwZShtYXAoKHZhbHVlKSA9PiB0aGlzLmNvbmZpZy5zZWFyY2hQcmV2aWV3UXVlcnlGbj8uKHZhbHVlKSA/PyBudWxsKSksXG4gICAgeyBpbml0aWFsVmFsdWU6IG51bGwgfSxcbiAgKTtcblxuICBzZWFyY2hQcmV2aWV3UXVlcnlTdGF0ZSA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLnNlYXJjaFByZXZpZXdRdWVyeSkucGlwZShzd2l0Y2hRdWVyeVN0YXRlKCkpLCB7XG4gICAgaW5pdGlhbFZhbHVlOiBudWxsLFxuICB9KTtcblxuICBzZWFyY2hQcmV2aWV3VG90YWxIaXRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zZWFyY2hQcmV2aWV3UXVlcnlTdGF0ZSgpO1xuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICBpZiAodGhpcy5jb25maWcudG90YWxIaXRzRXh0cmFjdG9yRm4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRvdGFsSGl0c0V4dHJhY3RvckZuKHN0YXRlLnJlc3BvbnNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0ZS5yZXNwb25zZSB8fCB0eXBlb2Ygc3RhdGUucmVzcG9uc2UgIT09ICdvYmplY3QnIHx8ICEoJ3RvdGFsSGl0cycgaW4gc3RhdGUucmVzcG9uc2UpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSByZXNwb25zZSBkb2VzIG5vdCBjb250YWluIGEgdG90YWxIaXRzIHByb3BlcnR5LmAsIHN0YXRlLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdGF0ZS5yZXNwb25zZS50b3RhbEhpdHMgYXMgbnVtYmVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9KTtcblxuICBzdWJtaXRCdXR0b25Db25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNlYXJjaFByZXZpZXdRdWVyeVN0YXRlKCk7XG4gICAgY29uc3QgdG90YWxIaXRzID0gdGhpcy5zZWFyY2hQcmV2aWV3VG90YWxIaXRzKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb25maWcuc3VibWl0QnV0dG9uQ29uZmlnRm4/Lih7IHF1ZXJ5U3RhdGU6IHN0YXRlLCB0b3RhbEhpdHMgfSkgPz9cbiAgICAgIGRlZmF1bHRTdWJtaXRCdXR0b25Db25maWdGbih7IHF1ZXJ5U3RhdGU6IHN0YXRlLCB0b3RhbEhpdHMgfSlcbiAgICApO1xuICB9KTtcblxuICBzdWJtaXQoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRGb3JtR3JvdXBWYWx1ZSh0aGlzLmZvcm0pO1xuICAgIHRoaXMuY29uZmlnLmZvcm0uc2V0VmFsdWUodmFsdWUpO1xuXG4gICAgdGhpcy5jbG9zZSh7IGRpZFVwZGF0ZTogdHJ1ZSwgZm9ybVZhbHVlOiB2YWx1ZSB9KTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIGlmICghdGhpcy5jb25maWcuZGVmYXVsdHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGRlZmF1bHQgZm9ybSB2YWx1ZSBpcyBub3QgZGVmaW5lZC5gKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmNvbmZpZy5kZWZhdWx0cyk7XG4gIH1cblxuICBjbG9zZShkYXRhPzogRmlsdGVyT3ZlcmxheVJlc3VsdCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uY2xvc2UoZGF0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVGaWx0ZXJPdmVybGF5Q29uZmlnID0gKGNvbmZpZzogRmlsdGVyT3ZlcmxheUNvbmZpZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZJTFRFUl9PVkVSTEFZX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiBjb25maWcsXG4gICAgfSxcbiAgICBGaWx0ZXJPdmVybGF5U2VydmljZSxcbiAgXTtcbn07XG4iXX0=
@@ -1,5 +1,8 @@
1
+ export * from './filter-overlay';
1
2
  export * from './overlay-config';
2
3
  export * from './overlay-position-builder';
3
4
  export * from './overlay-ref';
5
+ export * from './overlay-router';
4
6
  export * from './overlay.utils';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL292ZXJsYXktY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS1wb3NpdGlvbi1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5LnV0aWxzJztcbiJdfQ==
7
+ export * from './sidebar-overlay';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpbHRlci1vdmVybGF5JztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5LXBvc2l0aW9uLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5LXJlZic7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXktcm91dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NpZGViYXItb3ZlcmxheSc7XG4iXX0=
@@ -110,6 +110,18 @@ export class OverlayPositionBuilder {
110
110
  ];
111
111
  return data;
112
112
  }
113
+ transformingFullScreenDialogToDialog(customConfig) {
114
+ const data = [
115
+ {
116
+ config: this.mergeConfigs(this.DEFAULTS.fullScreenDialog, customConfig?.fullScreenDialog ?? {}),
117
+ },
118
+ {
119
+ breakpoint: 'md',
120
+ config: this.mergeConfigs(this.DEFAULTS.dialog, customConfig?.dialog ?? {}),
121
+ },
122
+ ];
123
+ return data;
124
+ }
113
125
  dialog(customConfig) {
114
126
  const data = [
115
127
  {
@@ -168,4 +180,4 @@ export class OverlayPositionBuilder {
168
180
  return config;
169
181
  }
170
182
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktcG9zaXRpb24tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyx3QkFBd0IsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyx5QkFBeUIsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyx1QkFBdUIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRywwQkFBMEIsQ0FBQztBQUN4RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxnQ0FBZ0MsQ0FBQztBQUVwRixNQUFNLE9BQU8sc0JBQXNCO0lBQW5DO1FBQ21CLGFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2xCLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsU0FBUztnQkFDaEIsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixjQUFjLEVBQUUsdUJBQXVCO2dCQUN2QyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLEVBQUU7YUFDbEc7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLGNBQWMsRUFBRSxtQ0FBbUM7Z0JBQ25ELGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDbkcsYUFBYSxFQUFFLHlDQUF5QztnQkFDeEQsb0JBQW9CLEVBQUUsSUFBSTthQUMzQjtZQUNELFdBQVcsRUFBRTtnQkFDWCxLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsU0FBUztnQkFDakIsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsY0FBYyxFQUFFLDZCQUE2QjtnQkFDN0MsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQzFGLGFBQWEsRUFBRTtvQkFDYixTQUFTLEVBQUUsV0FBVztpQkFDdkI7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsU0FBUztnQkFDakIsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsY0FBYyxFQUFFLDBCQUEwQjtnQkFDMUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZGLGFBQWEsRUFBRTtvQkFDYixTQUFTLEVBQUUsUUFBUTtpQkFDcEI7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsY0FBYyxFQUFFLDJCQUEyQjtnQkFDM0MsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3RGLGFBQWEsRUFBRTtvQkFDYixTQUFTLEVBQUUsU0FBUztpQkFDckI7YUFDRjtZQUNELFVBQVUsRUFBRTtnQkFDVixLQUFLLEVBQUUsTUFBTTtnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsY0FBYyxFQUFFLDRCQUE0QjtnQkFDNUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3ZGLGFBQWEsRUFBRTtvQkFDYixTQUFTLEVBQUUsVUFBVTtpQkFDdEI7YUFDRjtTQUNnRCxDQUFDO0lBMEd0RCxDQUFDO0lBeEdDLCtCQUErQixDQUFDLFlBRy9CO1FBQ0MsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO2FBQ3RGO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO2FBQzVFO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdDQUF3QyxDQUFDLFlBR3hDO1FBQ0MsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixJQUFJLEVBQUUsQ0FBQzthQUNoRztZQUNEO2dCQUNFLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQzthQUNwRjtTQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBc0M7UUFDM0MsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDcEU7U0FDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBc0M7UUFDckQsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQzthQUM5RTtTQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsWUFBc0M7UUFDaEQsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDekU7U0FDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLFlBQXNDO1FBQzdDLE1BQU0sSUFBSSxHQUFtQztZQUMzQztnQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO2FBQ3RFO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUFzQztRQUM5QyxNQUFNLElBQUksR0FBbUM7WUFDM0M7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQzthQUN2RTtTQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsWUFBc0M7UUFDL0MsTUFBTSxJQUFJLEdBQW1DO1lBQzNDO2dCQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDeEU7U0FDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQUcsT0FBa0M7UUFDaEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUMxQyxPQUFPO2dCQUNMLEdBQUcsR0FBRztnQkFDTixHQUFHLElBQUk7YUFDUixDQUFDO1FBQ0osQ0FBQyxFQUFFLEVBQTZCLENBQUMsQ0FBQztRQUVsQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5QnJlYWtwb2ludENvbmZpZywgT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEVUX09WRVJMQVlfTEVGVF9TSEVFVF9DTEFTUyA9ICdldC1vdmVybGF5LS1sZWZ0LXNoZWV0JztcbmV4cG9ydCBjb25zdCBFVF9PVkVSTEFZX1JJR0hUX1NIRUVUX0NMQVNTID0gJ2V0LW92ZXJsYXktLXJpZ2h0LXNoZWV0JztcbmV4cG9ydCBjb25zdCBFVF9PVkVSTEFZX1RPUF9TSEVFVF9DTEFTUyA9ICdldC1vdmVybGF5LS10b3Atc2hlZXQnO1xuZXhwb3J0IGNvbnN0IEVUX09WRVJMQVlfQk9UVE9NX1NIRUVUX0NMQVNTID0gJ2V0LW92ZXJsYXktLWJvdHRvbS1zaGVldCc7XG5leHBvcnQgY29uc3QgRVRfT1ZFUkxBWV9ESUFMT0dfQ0xBU1MgPSAnZXQtb3ZlcmxheS0tZGlhbG9nJztcbmV4cG9ydCBjb25zdCBFVF9PVkVSTEFZX0ZVTExfU0NSRUVOX0RJQUxPR19DTEFTUyA9ICdldC1vdmVybGF5LS1mdWxsLXNjcmVlbi1kaWFsb2cnO1xuXG5leHBvcnQgY2xhc3MgT3ZlcmxheVBvc2l0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG5cbiAgcmVhZG9ubHkgREVGQVVMVFMgPSB7XG4gICAgZGlhbG9nOiB7XG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgIG1heFdpZHRoOiAnODB2dycsXG4gICAgICBtaW5IZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1pbldpZHRoOiB1bmRlZmluZWQsXG4gICAgICBjb250YWluZXJDbGFzczogRVRfT1ZFUkxBWV9ESUFMT0dfQ0xBU1MsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiAoKSA9PiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgIH0sXG4gICAgZnVsbFNjcmVlbkRpYWxvZzoge1xuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgbWF4SGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtYXhXaWR0aDogdW5kZWZpbmVkLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IEVUX09WRVJMQVlfRlVMTF9TQ1JFRU5fRElBTE9HX0NMQVNTLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogKCkgPT4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmxlZnQoJzAnKS50b3AoJzAnKS5ib3R0b20oJzAnKS5yaWdodCgnMCcpLFxuICAgICAgZG9jdW1lbnRDbGFzczogJ2V0LW92ZXJsYXktLWZ1bGwtc2NyZWVuLWRpYWxvZy1kb2N1bWVudCcsXG4gICAgICBhcHBseVRyYW5zZm9ybU9yaWdpbjogdHJ1ZSxcbiAgICB9LFxuICAgIGJvdHRvbVNoZWV0OiB7XG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtYXhIZWlnaHQ6ICdjYWxjKDEwMCUgLSA3MnB4KScsXG4gICAgICBtYXhXaWR0aDogJzY0MHB4JyxcbiAgICAgIG1pbkhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWluV2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRhaW5lckNsYXNzOiBFVF9PVkVSTEFZX0JPVFRPTV9TSEVFVF9DTEFTUyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6ICgpID0+IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5ib3R0b20oJzAnKSxcbiAgICAgIGRyYWdUb0Rpc21pc3M6IHtcbiAgICAgICAgZGlyZWN0aW9uOiAndG8tYm90dG9tJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0b3BTaGVldDoge1xuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWF4SGVpZ2h0OiAnY2FsYygxMDAlIC0gNzJweCknLFxuICAgICAgbWF4V2lkdGg6ICc2NDBweCcsXG4gICAgICBtaW5IZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1pbldpZHRoOiB1bmRlZmluZWQsXG4gICAgICBjb250YWluZXJDbGFzczogRVRfT1ZFUkxBWV9UT1BfU0hFRVRfQ0xBU1MsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiAoKSA9PiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkudG9wKCcwJyksXG4gICAgICBkcmFnVG9EaXNtaXNzOiB7XG4gICAgICAgIGRpcmVjdGlvbjogJ3RvLXRvcCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgbGVmdFNoZWV0OiB7XG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBtYXhIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1heFdpZHRoOiAnNjQwcHgnLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IEVUX09WRVJMQVlfTEVGVF9TSEVFVF9DTEFTUyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6ICgpID0+IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5sZWZ0KCcwJykuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgZHJhZ1RvRGlzbWlzczoge1xuICAgICAgICBkaXJlY3Rpb246ICd0by1sZWZ0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByaWdodFNoZWV0OiB7XG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBtYXhIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1heFdpZHRoOiAnNjQwcHgnLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IEVUX09WRVJMQVlfUklHSFRfU0hFRVRfQ0xBU1MsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiAoKSA9PiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkucmlnaHQoJzAnKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICBkcmFnVG9EaXNtaXNzOiB7XG4gICAgICAgIGRpcmVjdGlvbjogJ3RvLXJpZ2h0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgT3ZlcmxheUJyZWFrcG9pbnRDb25maWc+O1xuXG4gIHRyYW5zZm9ybWluZ0JvdHRvbVNoZWV0VG9EaWFsb2coY3VzdG9tQ29uZmlnPzoge1xuICAgIGJvdHRvbVNoZWV0PzogT3ZlcmxheUJyZWFrcG9pbnRDb25maWc7XG4gICAgZGlhbG9nPzogT3ZlcmxheUJyZWFrcG9pbnRDb25maWc7XG4gIH0pIHtcbiAgICBjb25zdCBkYXRhOiBPdmVybGF5QnJlYWtwb2ludENvbmZpZ0VudHJ5W10gPSBbXG4gICAgICB7XG4gICAgICAgIGNvbmZpZzogdGhpcy5tZXJnZUNvbmZpZ3ModGhpcy5ERUZBVUxUUy5ib3R0b21TaGVldCwgY3VzdG9tQ29uZmlnPy5ib3R0b21TaGVldCA/PyB7fSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBicmVha3BvaW50OiAnbWQnLFxuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuZGlhbG9nLCBjdXN0b21Db25maWc/LmRpYWxvZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHRyYW5zZm9ybWluZ0Z1bGxTY3JlZW5EaWFsb2dUb1JpZ2h0U2hlZXQoY3VzdG9tQ29uZmlnPzoge1xuICAgIGZ1bGxTY3JlZW5EaWFsb2c/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZztcbiAgICByaWdodFNoZWV0PzogT3ZlcmxheUJyZWFrcG9pbnRDb25maWc7XG4gIH0pIHtcbiAgICBjb25zdCBkYXRhOiBPdmVybGF5QnJlYWtwb2ludENvbmZpZ0VudHJ5W10gPSBbXG4gICAgICB7XG4gICAgICAgIGNvbmZpZzogdGhpcy5tZXJnZUNvbmZpZ3ModGhpcy5ERUZBVUxUUy5mdWxsU2NyZWVuRGlhbG9nLCBjdXN0b21Db25maWc/LmZ1bGxTY3JlZW5EaWFsb2cgPz8ge30pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYnJlYWtwb2ludDogJ21kJyxcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLnJpZ2h0U2hlZXQsIGN1c3RvbUNvbmZpZz8ucmlnaHRTaGVldCA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRpYWxvZyhjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmRpYWxvZywgY3VzdG9tQ29uZmlnID8/IHt9KSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZnVsbFNjcmVlbkRpYWxvZyhjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmZ1bGxTY3JlZW5EaWFsb2csIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGJvdHRvbVNoZWV0KGN1c3RvbUNvbmZpZz86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnKSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuYm90dG9tU2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHRvcFNoZWV0KGN1c3RvbUNvbmZpZz86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnKSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMudG9wU2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGxlZnRTaGVldChjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmxlZnRTaGVldCwgY3VzdG9tQ29uZmlnID8/IHt9KSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcmlnaHRTaGVldChjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLnJpZ2h0U2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIG1lcmdlQ29uZmlncyguLi5jb25maWdzOiBPdmVybGF5QnJlYWtwb2ludENvbmZpZ1tdKSB7XG4gICAgY29uc3QgY29uZmlnID0gY29uZmlncy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICAuLi5jdXJyLFxuICAgICAgfTtcbiAgICB9LCB7fSBhcyBPdmVybGF5QnJlYWtwb2ludENvbmZpZyk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktcG9zaXRpb24tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyx3QkFBd0IsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyx5QkFBeUIsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyx1QkFBdUIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRywwQkFBMEIsQ0FBQztBQUN4RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxnQ0FBZ0MsQ0FBQztBQUVwRixNQUFNLE9BQU8sc0JBQXNCO0lBQW5DO1FBQ21CLGFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2xCLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsU0FBUztnQkFDaEIsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixjQUFjLEVBQUUsdUJBQXVCO2dCQUN2QyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFD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RUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDdkU7U0FDRixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQXNDO1FBQy9DLE1BQU0sSUFBSSxHQUFtQztZQUMzQztnQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO2FBQ3hFO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHLE9BQWtDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDMUMsT0FBTztnQkFDTCxHQUFHLEdBQUc7Z0JBQ04sR0FBRyxJQUFJO2FBQ1IsQ0FBQztRQUNKLENBQUMsRUFBRSxFQUE2QixDQUFDLENBQUM7UUFFbEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheUJyZWFrcG9pbnRDb25maWcsIE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnkgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBFVF9PVkVSTEFZX0xFRlRfU0hFRVRfQ0xBU1MgPSAnZXQtb3ZlcmxheS0tbGVmdC1zaGVldCc7XG5leHBvcnQgY29uc3QgRVRfT1ZFUkxBWV9SSUdIVF9TSEVFVF9DTEFTUyA9ICdldC1vdmVybGF5LS1yaWdodC1zaGVldCc7XG5leHBvcnQgY29uc3QgRVRfT1ZFUkxBWV9UT1BfU0hFRVRfQ0xBU1MgPSAnZXQtb3ZlcmxheS0tdG9wLXNoZWV0JztcbmV4cG9ydCBjb25zdCBFVF9PVkVSTEFZX0JPVFRPTV9TSEVFVF9DTEFTUyA9ICdldC1vdmVybGF5LS1ib3R0b20tc2hlZXQnO1xuZXhwb3J0IGNvbnN0IEVUX09WRVJMQVlfRElBTE9HX0NMQVNTID0gJ2V0LW92ZXJsYXktLWRpYWxvZyc7XG5leHBvcnQgY29uc3QgRVRfT1ZFUkxBWV9GVUxMX1NDUkVFTl9ESUFMT0dfQ0xBU1MgPSAnZXQtb3ZlcmxheS0tZnVsbC1zY3JlZW4tZGlhbG9nJztcblxuZXhwb3J0IGNsYXNzIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuXG4gIHJlYWRvbmx5IERFRkFVTFRTID0ge1xuICAgIGRpYWxvZzoge1xuICAgICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWF4SGVpZ2h0OiAnODB2aCcsXG4gICAgICBtYXhXaWR0aDogJzgwdncnLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IEVUX09WRVJMQVlfRElBTE9HX0NMQVNTLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogKCkgPT4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICB9LFxuICAgIGZ1bGxTY3JlZW5EaWFsb2c6IHtcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIG1heEhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWF4V2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIG1pbkhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWluV2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRhaW5lckNsYXNzOiBFVF9PVkVSTEFZX0ZVTExfU0NSRUVOX0RJQUxPR19DTEFTUyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6ICgpID0+IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5sZWZ0KCcwJykudG9wKCcwJykuYm90dG9tKCcwJykucmlnaHQoJzAnKSxcbiAgICAgIGRvY3VtZW50Q2xhc3M6ICdldC1vdmVybGF5LS1mdWxsLXNjcmVlbi1kaWFsb2ctZG9jdW1lbnQnLFxuICAgICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW46IHRydWUsXG4gICAgfSxcbiAgICBib3R0b21TaGVldDoge1xuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWF4SGVpZ2h0OiAnY2FsYygxMDAlIC0gNzJweCknLFxuICAgICAgbWF4V2lkdGg6ICc2NDBweCcsXG4gICAgICBtaW5IZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1pbldpZHRoOiB1bmRlZmluZWQsXG4gICAgICBjb250YWluZXJDbGFzczogRVRfT1ZFUkxBWV9CT1RUT01fU0hFRVRfQ0xBU1MsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiAoKSA9PiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuYm90dG9tKCcwJyksXG4gICAgICBkcmFnVG9EaXNtaXNzOiB7XG4gICAgICAgIGRpcmVjdGlvbjogJ3RvLWJvdHRvbScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdG9wU2hlZXQ6IHtcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1heEhlaWdodDogJ2NhbGMoMTAwJSAtIDcycHgpJyxcbiAgICAgIG1heFdpZHRoOiAnNjQwcHgnLFxuICAgICAgbWluSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtaW5XaWR0aDogdW5kZWZpbmVkLFxuICAgICAgY29udGFpbmVyQ2xhc3M6IEVUX09WRVJMQVlfVE9QX1NIRUVUX0NMQVNTLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogKCkgPT4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLnRvcCgnMCcpLFxuICAgICAgZHJhZ1RvRGlzbWlzczoge1xuICAgICAgICBkaXJlY3Rpb246ICd0by10b3AnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGxlZnRTaGVldDoge1xuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgbWF4SGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtYXhXaWR0aDogJzY0MHB4JyxcbiAgICAgIG1pbkhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWluV2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRhaW5lckNsYXNzOiBFVF9PVkVSTEFZX0xFRlRfU0hFRVRfQ0xBU1MsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiAoKSA9PiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkubGVmdCgnMCcpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICAgIGRyYWdUb0Rpc21pc3M6IHtcbiAgICAgICAgZGlyZWN0aW9uOiAndG8tbGVmdCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmlnaHRTaGVldDoge1xuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgbWF4SGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtYXhXaWR0aDogJzY0MHB4JyxcbiAgICAgIG1pbkhlaWdodDogdW5kZWZpbmVkLFxuICAgICAgbWluV2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRhaW5lckNsYXNzOiBFVF9PVkVSTEFZX1JJR0hUX1NIRUVUX0NMQVNTLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogKCkgPT4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnJpZ2h0KCcwJykuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgZHJhZ1RvRGlzbWlzczoge1xuICAgICAgICBkaXJlY3Rpb246ICd0by1yaWdodCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0gc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIE92ZXJsYXlCcmVha3BvaW50Q29uZmlnPjtcblxuICB0cmFuc2Zvcm1pbmdCb3R0b21TaGVldFRvRGlhbG9nKGN1c3RvbUNvbmZpZz86IHtcbiAgICBib3R0b21TaGVldD86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnO1xuICAgIGRpYWxvZz86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnO1xuICB9KSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuYm90dG9tU2hlZXQsIGN1c3RvbUNvbmZpZz8uYm90dG9tU2hlZXQgPz8ge30pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYnJlYWtwb2ludDogJ21kJyxcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmRpYWxvZywgY3VzdG9tQ29uZmlnPy5kaWFsb2cgPz8ge30pLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB0cmFuc2Zvcm1pbmdGdWxsU2NyZWVuRGlhbG9nVG9SaWdodFNoZWV0KGN1c3RvbUNvbmZpZz86IHtcbiAgICBmdWxsU2NyZWVuRGlhbG9nPzogT3ZlcmxheUJyZWFrcG9pbnRDb25maWc7XG4gICAgcmlnaHRTaGVldD86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnO1xuICB9KSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuZnVsbFNjcmVlbkRpYWxvZywgY3VzdG9tQ29uZmlnPy5mdWxsU2NyZWVuRGlhbG9nID8/IHt9KSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJyZWFrcG9pbnQ6ICdtZCcsXG4gICAgICAgIGNvbmZpZzogdGhpcy5tZXJnZUNvbmZpZ3ModGhpcy5ERUZBVUxUUy5yaWdodFNoZWV0LCBjdXN0b21Db25maWc/LnJpZ2h0U2hlZXQgPz8ge30pLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB0cmFuc2Zvcm1pbmdGdWxsU2NyZWVuRGlhbG9nVG9EaWFsb2coY3VzdG9tQ29uZmlnPzoge1xuICAgIGZ1bGxTY3JlZW5EaWFsb2c/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZztcbiAgICBkaWFsb2c/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZztcbiAgfSkge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmZ1bGxTY3JlZW5EaWFsb2csIGN1c3RvbUNvbmZpZz8uZnVsbFNjcmVlbkRpYWxvZyA/PyB7fSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBicmVha3BvaW50OiAnbWQnLFxuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuZGlhbG9nLCBjdXN0b21Db25maWc/LmRpYWxvZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRpYWxvZyhjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmRpYWxvZywgY3VzdG9tQ29uZmlnID8/IHt9KSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZnVsbFNjcmVlbkRpYWxvZyhjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmZ1bGxTY3JlZW5EaWFsb2csIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGJvdHRvbVNoZWV0KGN1c3RvbUNvbmZpZz86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnKSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMuYm90dG9tU2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHRvcFNoZWV0KGN1c3RvbUNvbmZpZz86IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnKSB7XG4gICAgY29uc3QgZGF0YTogT3ZlcmxheUJyZWFrcG9pbnRDb25maWdFbnRyeVtdID0gW1xuICAgICAge1xuICAgICAgICBjb25maWc6IHRoaXMubWVyZ2VDb25maWdzKHRoaXMuREVGQVVMVFMudG9wU2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGxlZnRTaGVldChjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLmxlZnRTaGVldCwgY3VzdG9tQ29uZmlnID8/IHt9KSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcmlnaHRTaGVldChjdXN0b21Db25maWc/OiBPdmVybGF5QnJlYWtwb2ludENvbmZpZykge1xuICAgIGNvbnN0IGRhdGE6IE92ZXJsYXlCcmVha3BvaW50Q29uZmlnRW50cnlbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm1lcmdlQ29uZmlncyh0aGlzLkRFRkFVTFRTLnJpZ2h0U2hlZXQsIGN1c3RvbUNvbmZpZyA/PyB7fSksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIG1lcmdlQ29uZmlncyguLi5jb25maWdzOiBPdmVybGF5QnJlYWtwb2ludENvbmZpZ1tdKSB7XG4gICAgY29uc3QgY29uZmlnID0gY29uZmlncy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICAuLi5jdXJyLFxuICAgICAgfTtcbiAgICB9LCB7fSBhcyBPdmVybGF5QnJlYWtwb2ludENvbmZpZyk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG4iXX0=