@eui/components 18.0.0-next.63 → 18.0.0-next.64

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 (143) hide show
  1. package/docs/components/CollapsedBreadcrumbComponent.html +1 -1
  2. package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +1 -1
  3. package/docs/components/EuiAppTopMessageComponent.html +1 -1
  4. package/docs/components/EuiBreadcrumbItemComponent.html +1 -1
  5. package/docs/components/EuiCardFooterMenuContentComponent.html +1 -1
  6. package/docs/components/EuiCardHeaderComponent.html +1 -1
  7. package/docs/components/EuiChipListComponent.html +1 -1
  8. package/docs/components/EuiDialogContainerComponent.html +1 -1
  9. package/docs/components/EuiDiscussionThreadItemComponent.html +1 -1
  10. package/docs/components/EuiDropdownItemComponent.html +1 -1
  11. package/docs/components/EuiEditorComponent.html +1 -1
  12. package/docs/components/EuiFilePreviewComponent.html +1 -1
  13. package/docs/components/EuiGrowlComponent.html +1 -1
  14. package/docs/components/EuiIconButtonExpanderComponent.html +1 -1
  15. package/docs/components/EuiListItemComponent.html +1 -1
  16. package/docs/components/EuiMenuComponent.html +1 -1
  17. package/docs/components/EuiMenuItemComponent.html +1 -1
  18. package/docs/components/EuiNotificationItemComponent.html +1 -1
  19. package/docs/components/EuiNotificationItemV2Component.html +1 -1
  20. package/docs/components/EuiNotificationsComponent.html +1 -1
  21. package/docs/components/EuiNotificationsV2Component.html +1 -1
  22. package/docs/components/EuiOverlayHeaderTitleComponent.html +1 -1
  23. package/docs/components/EuiPageColumnComponent.html +1 -1
  24. package/docs/components/EuiPageHeaderComponent.html +1 -1
  25. package/docs/components/EuiPaginatorComponent.html +1 -1
  26. package/docs/components/EuiPopoverComponent.html +1 -1
  27. package/docs/components/EuiSearchComponent.html +1 -1
  28. package/docs/components/EuiTableFilterComponent.html +1 -1
  29. package/docs/components/EuiTableSortableColComponent.html +1 -1
  30. package/docs/components/EuiTableV2FilterComponent.html +1 -1
  31. package/docs/components/EuiTableV2SortableColComponent.html +1 -1
  32. package/docs/components/EuiTabsComponent.html +1 -1
  33. package/docs/components/EuiTimebarComponent.html +1 -1
  34. package/docs/components/EuiTimepickerComponent.html +1 -1
  35. package/docs/components/EuiToolbarMenuComponent.html +1 -1
  36. package/docs/components/EuiToolbarNavbarComponent.html +1 -1
  37. package/docs/components/EuiTreeComponent.html +3 -3
  38. package/docs/components/EuiTreeListToolbarComponent.html +1 -1
  39. package/docs/components/EuiUserProfileCardComponent.html +1 -1
  40. package/docs/components/EuiUserProfileComponent.html +1 -1
  41. package/docs/components/EuiWizardComponent.html +1 -1
  42. package/docs/dependencies.html +1 -1
  43. package/docs/js/menu-wc.js +3 -3
  44. package/docs/js/menu-wc_es5.js +1 -1
  45. package/docs/js/search/search_index.js +2 -2
  46. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +3 -3
  47. package/esm2022/eui-card/components/eui-card-header/eui-card-header.component.mjs +3 -3
  48. package/esm2022/eui-card/eui-card.component.mjs +2 -2
  49. package/esm2022/eui-chip-list/eui-chip-list.component.mjs +3 -3
  50. package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +3 -3
  51. package/esm2022/eui-dialog/eui-dialog.component.mjs +2 -2
  52. package/esm2022/eui-discussion-thread/eui-discussion-thread-item.component.mjs +3 -3
  53. package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +3 -3
  54. package/esm2022/eui-file-upload/file-preview/file-preview.component.mjs +3 -3
  55. package/esm2022/eui-growl/eui-growl.component.mjs +3 -3
  56. package/esm2022/eui-icon/eui-icon-button-expander/eui-icon-button-expander.component.mjs +3 -3
  57. package/esm2022/eui-icon/eui-icon-svg.component.mjs +2 -2
  58. package/esm2022/eui-list/eui-list-item/eui-list-item.component.mjs +3 -3
  59. package/esm2022/eui-list/eui-list.component.mjs +2 -2
  60. package/esm2022/eui-menu/eui-menu-item.component.mjs +3 -3
  61. package/esm2022/eui-menu/eui-menu.component.mjs +3 -3
  62. package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header-title/eui-overlay-header-title.component.mjs +3 -3
  63. package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +3 -3
  64. package/esm2022/eui-page/components/eui-page-header/eui-page-header.component.mjs +3 -3
  65. package/esm2022/eui-paginator/eui-paginator.component.mjs +3 -3
  66. package/esm2022/eui-popover/eui-popover.component.mjs +3 -3
  67. package/esm2022/eui-table/filter/eui-table-filter.component.mjs +3 -3
  68. package/esm2022/eui-table/sortable-col/eui-table-sortable-col.component.mjs +3 -3
  69. package/esm2022/eui-table-v2/filter/eui-table-v2-filter.component.mjs +3 -3
  70. package/esm2022/eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.mjs +3 -3
  71. package/esm2022/eui-tabs/eui-tabs.component.mjs +3 -3
  72. package/esm2022/eui-timebar/eui-timebar.component.mjs +3 -3
  73. package/esm2022/eui-timepicker/eui-timepicker.component.mjs +3 -3
  74. package/esm2022/eui-tree/eui-tree.component.mjs +5 -5
  75. package/esm2022/eui-tree-list/toolbar/toolbar.component.mjs +3 -3
  76. package/esm2022/eui-user-profile/user-profile-card/user-profile-card.component.mjs +3 -3
  77. package/esm2022/eui-user-profile/user-profile.component.mjs +3 -3
  78. package/esm2022/eui-wizard/eui-wizard.component.mjs +3 -3
  79. package/esm2022/externals/eui-editor/eui-editor.component.mjs +3 -3
  80. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.mjs +3 -3
  81. package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +3 -3
  82. package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs +3 -3
  83. package/esm2022/layout/eui-breadcrumb/item/breadcrumb-item.component.mjs +3 -3
  84. package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +3 -3
  85. package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +3 -3
  86. package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +3 -3
  87. package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +3 -3
  88. package/esm2022/layout/eui-search/search.component.mjs +3 -3
  89. package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +3 -3
  90. package/esm2022/layout/eui-toolbar/toolbar-navbar/toolbar-navbar.component.mjs +3 -3
  91. package/eui-list/eui-list-item/eui-list-item.component.d.ts +1 -1
  92. package/eui-tree/eui-tree.component.d.ts.map +1 -1
  93. package/fesm2022/eui-components-eui-card.mjs +6 -6
  94. package/fesm2022/eui-components-eui-card.mjs.map +2 -2
  95. package/fesm2022/eui-components-eui-chip-list.mjs +4 -4
  96. package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
  97. package/fesm2022/eui-components-eui-dialog.mjs +18 -18
  98. package/fesm2022/eui-components-eui-dialog.mjs.map +2 -2
  99. package/fesm2022/eui-components-eui-discussion-thread.mjs +8 -8
  100. package/fesm2022/eui-components-eui-discussion-thread.mjs.map +1 -1
  101. package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
  102. package/fesm2022/eui-components-eui-dropdown.mjs.map +2 -2
  103. package/fesm2022/eui-components-eui-file-upload.mjs +2 -2
  104. package/fesm2022/eui-components-eui-file-upload.mjs.map +2 -2
  105. package/fesm2022/eui-components-eui-growl.mjs +2 -2
  106. package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
  107. package/fesm2022/eui-components-eui-icon.mjs +10 -10
  108. package/fesm2022/eui-components-eui-icon.mjs.map +2 -2
  109. package/fesm2022/eui-components-eui-list.mjs +4 -4
  110. package/fesm2022/eui-components-eui-list.mjs.map +2 -2
  111. package/fesm2022/eui-components-eui-menu.mjs +18 -18
  112. package/fesm2022/eui-components-eui-menu.mjs.map +2 -2
  113. package/fesm2022/eui-components-eui-overlay.mjs +2 -2
  114. package/fesm2022/eui-components-eui-overlay.mjs.map +2 -2
  115. package/fesm2022/eui-components-eui-page.mjs +4 -4
  116. package/fesm2022/eui-components-eui-page.mjs.map +2 -2
  117. package/fesm2022/eui-components-eui-paginator.mjs +8 -8
  118. package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
  119. package/fesm2022/eui-components-eui-popover.mjs +2 -2
  120. package/fesm2022/eui-components-eui-popover.mjs.map +2 -2
  121. package/fesm2022/eui-components-eui-table-v2.mjs +8 -8
  122. package/fesm2022/eui-components-eui-table-v2.mjs.map +1 -1
  123. package/fesm2022/eui-components-eui-table.mjs +14 -14
  124. package/fesm2022/eui-components-eui-table.mjs.map +1 -1
  125. package/fesm2022/eui-components-eui-tabs.mjs +2 -2
  126. package/fesm2022/eui-components-eui-tabs.mjs.map +2 -2
  127. package/fesm2022/eui-components-eui-timebar.mjs +6 -6
  128. package/fesm2022/eui-components-eui-timebar.mjs.map +1 -1
  129. package/fesm2022/eui-components-eui-timepicker.mjs +12 -12
  130. package/fesm2022/eui-components-eui-timepicker.mjs.map +1 -1
  131. package/fesm2022/eui-components-eui-tree-list.mjs +6 -6
  132. package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
  133. package/fesm2022/eui-components-eui-tree.mjs +6 -6
  134. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  135. package/fesm2022/eui-components-eui-user-profile.mjs +4 -4
  136. package/fesm2022/eui-components-eui-user-profile.mjs.map +2 -2
  137. package/fesm2022/eui-components-eui-wizard.mjs +2 -2
  138. package/fesm2022/eui-components-eui-wizard.mjs.map +2 -2
  139. package/fesm2022/eui-components-externals-eui-editor.mjs +8 -8
  140. package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
  141. package/fesm2022/eui-components-layout.mjs +36 -36
  142. package/fesm2022/eui-components-layout.mjs.map +2 -2
  143. package/package.json +21 -21
@@ -306,11 +306,11 @@ export class EuiTabsComponent {
306
306
  this.cd.detectChanges();
307
307
  }
308
308
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: EuiTabsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.AnimationBuilder }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
309
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.1", type: EuiTabsComponent, selector: "eui-tabs", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", e2eAttr: "e2eAttr", pathMatch: "pathMatch", isMainNavigation: ["isMainNavigation", "isMainNavigation", booleanAttribute], isHandleChangeTab: ["isHandleChangeTab", "isHandleChangeTab", booleanAttribute], isSubTabs: ["isSubTabs", "isSubTabs", booleanAttribute], isVerticalTabs: ["isVerticalTabs", "isVerticalTabs", booleanAttribute] }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.elementClass", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "_tabs", predicate: i0.forwardRef(() => EuiTabComponent) }], viewQueries: [{ propertyName: "euiTabsItems", first: true, predicate: ["euiTabsItems"], descendants: true }, { propertyName: "euiTabsItemsWrapper", first: true, predicate: ["euiTabsItemsWrapper"], descendants: true }, { propertyName: "euiTabLabelItems", predicate: ["euiTabLabelItem"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-u-flex\" [class.eui-tabs__wrapper--horizontal]=\"!isVerticalTabs\" [class.eui-tabs__wrapper--vertical]=\"isVerticalTabs\">\n <div\n #euiTabsItems\n class=\"eui-tabs__items\"\n [class.eui-tabs__items--horizontal]=\"!isVerticalTabs\"\n [class.eui-tabs__items--scrolling]=\"scrolling\"\n (cdkObserveContent)=\"onContentChanges()\">\n <div #euiTabsItemsWrapper class=\"eui-tabs__items-wrapper\" [attr.data-offset]=\"currentOffset\" role=\"tablist\">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex=\"0\"\n role=\"tab\"\n class=\"eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}\"\n [class.eui-tab-item--closable]=\"tab.isClosable\"\n [class.eui-tab-item--active]=\"activeTabIndex === i\"\n [class.eui-tab-item--disabled]=\"tab.isDisabled\"\n [class.eui-tab-item--background-filled]=\"tab.hasBackgroundFilled\"\n [attr.aria-disabled]=\"tab.isDisabled\"\n (click)=\"changeTab(i)\"\n [euiTooltip]=\"tab.tooltip\"\n (keyup)=\"onKeyUp($event, i)\">\n <div class=\"eui-tab-item__label\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel.templatePortal\"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)=\"closeTab(i, $event)\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type=\"button\"\n aria-label=\"Close tab button\"\n class=\"eui-u-ml-s\">\n <eui-icon-svg\n icon=\"eui-ecl-close-outline\"\n size=\"l\"\n fillColor=\"neutral-light\"\n class=\"eui-tab__close-icon\"\n aria-label=\"Close icon\">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"eui-tabs__navigation\">\n <div class=\"eui-tabs__navigation__left-item\">\n <button\n (click)=\"goToLeft()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationLeftButtonDisabled\"\n aria-label=\"Scroll left\">\n <eui-icon-svg icon=\"eui-chevron-back\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"eui-tabs__navigation__right-item\">\n <button\n (click)=\"goToRight()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationRightButtonDisabled\"\n aria-label=\"Scroll right\">\n <eui-icon-svg icon=\"eui-chevron-forward\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"eui-tabs__right-content\">\n <ng-content select=\"euiTabsRightContent\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class=\"eui-tab-content-wrapper\" tabindex=\"0\">\n <ng-template [cdkPortalOutlet]=\"tab.templateContent.templatePortal\"></ng-template>\n </div>\n }\n}\n", styles: [".eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n"], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "directive", type: i7.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], encapsulation: i0.ViewEncapsulation.None }); }
309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.1", type: EuiTabsComponent, selector: "eui-tabs", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", e2eAttr: "e2eAttr", pathMatch: "pathMatch", isMainNavigation: ["isMainNavigation", "isMainNavigation", booleanAttribute], isHandleChangeTab: ["isHandleChangeTab", "isHandleChangeTab", booleanAttribute], isSubTabs: ["isSubTabs", "isSubTabs", booleanAttribute], isVerticalTabs: ["isVerticalTabs", "isVerticalTabs", booleanAttribute] }, outputs: { tabClose: "tabClose", tabSelect: "tabSelect" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.elementClass", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "_tabs", predicate: i0.forwardRef(() => EuiTabComponent) }], viewQueries: [{ propertyName: "euiTabsItems", first: true, predicate: ["euiTabsItems"], descendants: true }, { propertyName: "euiTabsItemsWrapper", first: true, predicate: ["euiTabsItemsWrapper"], descendants: true }, { propertyName: "euiTabLabelItems", predicate: ["euiTabLabelItem"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-u-flex\" [class.eui-tabs__wrapper--horizontal]=\"!isVerticalTabs\" [class.eui-tabs__wrapper--vertical]=\"isVerticalTabs\">\n <div\n #euiTabsItems\n class=\"eui-tabs__items\"\n [class.eui-tabs__items--horizontal]=\"!isVerticalTabs\"\n [class.eui-tabs__items--scrolling]=\"scrolling\"\n (cdkObserveContent)=\"onContentChanges()\">\n <div #euiTabsItemsWrapper class=\"eui-tabs__items-wrapper\" [attr.data-offset]=\"currentOffset\" role=\"tablist\">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex=\"0\"\n role=\"tab\"\n class=\"eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}\"\n [class.eui-tab-item--closable]=\"tab.isClosable\"\n [class.eui-tab-item--active]=\"activeTabIndex === i\"\n [class.eui-tab-item--disabled]=\"tab.isDisabled\"\n [class.eui-tab-item--background-filled]=\"tab.hasBackgroundFilled\"\n [attr.aria-disabled]=\"tab.isDisabled\"\n (click)=\"changeTab(i)\"\n [euiTooltip]=\"tab.tooltip\"\n (keyup)=\"onKeyUp($event, i)\">\n <div class=\"eui-tab-item__label\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel.templatePortal\"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)=\"closeTab(i, $event)\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type=\"button\"\n aria-label=\"Close tab button\"\n class=\"eui-u-ml-s\">\n <eui-icon-svg\n icon=\"eui-ecl-close-outline\"\n size=\"l\"\n fillColor=\"neutral-light\"\n class=\"eui-tab__close-icon\"\n aria-label=\"Close icon\">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"eui-tabs__navigation\">\n <div class=\"eui-tabs__navigation__left-item\">\n <button\n (click)=\"goToLeft()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationLeftButtonDisabled\"\n aria-label=\"Scroll left\">\n <eui-icon-svg icon=\"chevron-back:sharp\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"eui-tabs__navigation__right-item\">\n <button\n (click)=\"goToRight()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationRightButtonDisabled\"\n aria-label=\"Scroll right\">\n <eui-icon-svg icon=\"chevron-forward:sharp\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"eui-tabs__right-content\">\n <ng-content select=\"euiTabsRightContent\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class=\"eui-tab-content-wrapper\" tabindex=\"0\">\n <ng-template [cdkPortalOutlet]=\"tab.templateContent.templatePortal\"></ng-template>\n </div>\n }\n}\n", styles: [".eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n"], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "directive", type: i7.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], encapsulation: i0.ViewEncapsulation.None }); }
310
310
  }
311
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: EuiTabsComponent, decorators: [{
312
312
  type: Component,
313
- args: [{ selector: 'eui-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-u-flex\" [class.eui-tabs__wrapper--horizontal]=\"!isVerticalTabs\" [class.eui-tabs__wrapper--vertical]=\"isVerticalTabs\">\n <div\n #euiTabsItems\n class=\"eui-tabs__items\"\n [class.eui-tabs__items--horizontal]=\"!isVerticalTabs\"\n [class.eui-tabs__items--scrolling]=\"scrolling\"\n (cdkObserveContent)=\"onContentChanges()\">\n <div #euiTabsItemsWrapper class=\"eui-tabs__items-wrapper\" [attr.data-offset]=\"currentOffset\" role=\"tablist\">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex=\"0\"\n role=\"tab\"\n class=\"eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}\"\n [class.eui-tab-item--closable]=\"tab.isClosable\"\n [class.eui-tab-item--active]=\"activeTabIndex === i\"\n [class.eui-tab-item--disabled]=\"tab.isDisabled\"\n [class.eui-tab-item--background-filled]=\"tab.hasBackgroundFilled\"\n [attr.aria-disabled]=\"tab.isDisabled\"\n (click)=\"changeTab(i)\"\n [euiTooltip]=\"tab.tooltip\"\n (keyup)=\"onKeyUp($event, i)\">\n <div class=\"eui-tab-item__label\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel.templatePortal\"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)=\"closeTab(i, $event)\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type=\"button\"\n aria-label=\"Close tab button\"\n class=\"eui-u-ml-s\">\n <eui-icon-svg\n icon=\"eui-ecl-close-outline\"\n size=\"l\"\n fillColor=\"neutral-light\"\n class=\"eui-tab__close-icon\"\n aria-label=\"Close icon\">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"eui-tabs__navigation\">\n <div class=\"eui-tabs__navigation__left-item\">\n <button\n (click)=\"goToLeft()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationLeftButtonDisabled\"\n aria-label=\"Scroll left\">\n <eui-icon-svg icon=\"eui-chevron-back\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"eui-tabs__navigation__right-item\">\n <button\n (click)=\"goToRight()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationRightButtonDisabled\"\n aria-label=\"Scroll right\">\n <eui-icon-svg icon=\"eui-chevron-forward\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"eui-tabs__right-content\">\n <ng-content select=\"euiTabsRightContent\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class=\"eui-tab-content-wrapper\" tabindex=\"0\">\n <ng-template [cdkPortalOutlet]=\"tab.templateContent.templatePortal\"></ng-template>\n </div>\n }\n}\n", styles: [".eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n"] }]
313
+ args: [{ selector: 'eui-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-u-flex\" [class.eui-tabs__wrapper--horizontal]=\"!isVerticalTabs\" [class.eui-tabs__wrapper--vertical]=\"isVerticalTabs\">\n <div\n #euiTabsItems\n class=\"eui-tabs__items\"\n [class.eui-tabs__items--horizontal]=\"!isVerticalTabs\"\n [class.eui-tabs__items--scrolling]=\"scrolling\"\n (cdkObserveContent)=\"onContentChanges()\">\n <div #euiTabsItemsWrapper class=\"eui-tabs__items-wrapper\" [attr.data-offset]=\"currentOffset\" role=\"tablist\">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible) {\n <div\n tabindex=\"0\"\n role=\"tab\"\n class=\"eui-tab-item eui-tab-item--{{ tab.baseStatesDirective.euiVariant }}\"\n [class.eui-tab-item--closable]=\"tab.isClosable\"\n [class.eui-tab-item--active]=\"activeTabIndex === i\"\n [class.eui-tab-item--disabled]=\"tab.isDisabled\"\n [class.eui-tab-item--background-filled]=\"tab.hasBackgroundFilled\"\n [attr.aria-disabled]=\"tab.isDisabled\"\n (click)=\"changeTab(i)\"\n [euiTooltip]=\"tab.tooltip\"\n (keyup)=\"onKeyUp($event, i)\">\n <div class=\"eui-tab-item__label\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel.templatePortal\"></ng-template>\n </div>\n @if (tab.isClosable) {\n <button\n (click)=\"closeTab(i, $event)\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeXS\n type=\"button\"\n aria-label=\"Close tab button\"\n class=\"eui-u-ml-s\">\n <eui-icon-svg\n icon=\"eui-ecl-close-outline\"\n size=\"l\"\n fillColor=\"neutral-light\"\n class=\"eui-tab__close-icon\"\n aria-label=\"Close icon\">\n </eui-icon-svg>\n </button>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"eui-tabs__navigation\">\n <div class=\"eui-tabs__navigation__left-item\">\n <button\n (click)=\"goToLeft()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationLeftButtonDisabled\"\n aria-label=\"Scroll left\">\n <eui-icon-svg icon=\"chevron-back:sharp\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"eui-tabs__navigation__right-item\">\n <button\n (click)=\"goToRight()\"\n euiButton\n euiIconButton\n euiBasicButton\n type=\"button\"\n [euiDisabled]=\"navigationRightButtonDisabled\"\n aria-label=\"Scroll right\">\n <eui-icon-svg icon=\"chevron-forward:sharp\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"eui-tabs__right-content\">\n <ng-content select=\"euiTabsRightContent\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && tab.templateContent) {\n <div class=\"eui-tab-content-wrapper\" tabindex=\"0\">\n <ng-template [cdkPortalOutlet]=\"tab.templateContent.templatePortal\"></ng-template>\n </div>\n }\n}\n", styles: [".eui-tabs__items{display:flex!important;flex-direction:row;position:relative;width:100%}.eui-tabs .eui-tabs__wrapper--vertical{flex:1 1 25%;flex-direction:column}.eui-tabs .eui-tabs__items-wrapper{display:flex;flex-shrink:0}.eui-tabs .eui-tabs__items{justify-content:space-between;overflow:hidden}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:3px 0 6px 1px #00000040;display:none;height:100%;left:0;position:absolute;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__left-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item{background-color:var(--eui-c-neutral-bg-light);box-shadow:-3px 0 6px 1px #00000040;display:none;height:100%;position:absolute;right:0;top:0}.eui-tabs .eui-tabs__items .eui-tabs__navigation .eui-tabs__navigation__right-item .eui-button.eui-button--icon-only{height:100%}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__items-wrapper{padding-left:var(--eui-s-3xl);padding-right:var(--eui-s-m)}.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__left-item,.eui-tabs .eui-tabs__items--scrolling .eui-tabs__navigation__right-item{display:block!important;padding:0 2px 2px}.eui-tabs__right-content{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-tabs__right-content .eui-tabs__right-content-wrapper{display:flex;align-items:center}.eui-tabs .eui-tabs__wrapper--vertical .eui-tab-item__label{align-items:center;display:flex}.eui-tabs .eui-tab-item{align-items:center;background-color:inherit;border:var(--eui-bw-none);border-bottom:3px solid transparent;box-shadow:0 2px 1px #00000080,inset 0 1px 0 var(--eui-c-white);color:var(--eui-c-neutral);cursor:pointer;display:flex;padding:var(--eui-s-s) var(--eui-s-m) var(--eui-s-s) var(--eui-s-m);position:relative;text-align:center;transition:.5s cubic-bezier(.35,0,.25,1)}.eui-tabs .eui-tab-item__label{font:var(--eui-f-m-bold)}.eui-tabs .eui-tab-item__label .eui-tab-item__sublabel{align-items:center;display:flex;font:var(--eui-f-s-compact)}.eui-tabs .eui-tab-item:focus{border-bottom:3px solid var(--eui-c-accent);background:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--active{border-bottom:3px solid var(--eui-c-primary);color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--hidden{display:none}.eui-tabs .eui-tab-item .eui-tab__close-icon{cursor:pointer;color:var(--eui-c-neutral-light);fill:var(--eui-c-neutral-light);opacity:.7}.eui-tabs .eui-tab-item .eui-tab__close-icon:hover>svg{color:var(--eui-c-primary);fill:var(--eui-c-primary);opacity:1}.eui-tabs .eui-tab-item.eui-tab-item--disabled{color:var(--eui-c-neutral-lighter);cursor:not-allowed;pointer-events:none}.eui-tabs .eui-tab-item.eui-tab-item--disabled:hover{border-bottom:3px solid transparent;color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-content-wrapper{border-top:1px solid var(--eui-c-neutral-lightest)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s) 0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs.eui-tabs--vertical{display:flex;flex-direction:row}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items .eui-tabs__items-wrapper{display:flex;flex-direction:column;height:100%}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal){border-bottom:0;flex:1 1 25%;flex-direction:column;position:relative}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item{border-bottom-color:transparent;border-left:3px solid transparent;box-shadow:0 0 1px #000000a6,inset 0 1px 0 var(--eui-c-white)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item--active,.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:active{border-left:3px solid var(--eui-c-primary)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:hover:not(.eui-tab-item--active){background:var(--eui-c-neutral-bg-light);border-left:3px solid var(--eui-c-primary);color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus{border-left:3px solid transparent}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tabs__wrapper--vertical .eui-tabs__items:not(.eui-tabs__items--horizontal) .eui-tab-item:focus [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper{border-top:none;flex:1 1 75%;flex-direction:column}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content{padding:var(--eui-s-s);position:relative}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-tabs.eui-tabs--vertical .eui-tab-content-wrapper .eui-tab-content.eui-tab-content--no-padding{padding:0}.eui-tabs--main-navigation .eui-tabs__items,.eui-tabs--main-navigation .eui-tabs__items-wrapper{width:100%}.eui-tabs--main-navigation .eui-tab-item{flex-grow:1;justify-content:center}.eui-tabs--main-navigation .eui-tab-item--active,.eui-tabs--main-navigation .eui-tab-item :active{background-color:var(--eui-c-active)}.eui-tabs .eui-tab-item:hover,.eui-tabs .eui-tab-item.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary{color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--primary.eui-tab-item--active,.eui-tabs .eui-tab-item--primary:hover{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item--secondary{color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item--secondary.eui-tab-item--active,.eui-tabs .eui-tab-item--secondary:hover{border-bottom-color:var(--eui-c-neutral-light)}.eui-tabs .eui-tab-item--info{color:var(--eui-c-info)}.eui-tabs .eui-tab-item--info.eui-tab-item--active,.eui-tabs .eui-tab-item--info:hover{border-bottom-color:var(--eui-c-info)}.eui-tabs .eui-tab-item--success{color:var(--eui-c-success)}.eui-tabs .eui-tab-item--success.eui-tab-item--active,.eui-tabs .eui-tab-item--success:hover{border-bottom-color:var(--eui-c-success)}.eui-tabs .eui-tab-item--warning{color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--warning.eui-tab-item--active,.eui-tabs .eui-tab-item--warning:hover{border-bottom-color:var(--eui-c-warning)}.eui-tabs .eui-tab-item--danger{color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--danger.eui-tab-item--active,.eui-tabs .eui-tab-item--danger:hover{border-bottom-color:var(--eui-c-danger)}.eui-tabs .eui-tab-item--accent{color:var(--eui-c-accent-bg)}.eui-tabs .eui-tab-item--accent.eui-tab-item--active,.eui-tabs .eui-tab-item--accent:hover{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled{background:none}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary{background-color:var(--eui-c-primary);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--primary.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary{background-color:var(--eui-c-neutral-bg-light);color:var(--eui-c-neutral)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--secondary.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info{background-color:var(--eui-c-info);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--info.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success{background-color:var(--eui-c-success);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--success.eui-tab-item--active{border-bottom-color:var(--eui-c-accent)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning{background-color:var(--eui-c-warning);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--warning.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger{background-color:var(--eui-c-danger);color:var(--eui-c-white)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--danger.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent{background-color:var(--eui-c-accent);color:var(--eui-c-black)}.eui-tabs .eui-tab-item.eui-tab-item--background-filled.eui-tab-item--accent.eui-tab-item--active{border-bottom-color:var(--eui-c-primary)}\n"] }]
314
314
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.AnimationBuilder }, { type: i0.ElementRef }], propDecorators: { elementClass: [{
315
315
  type: HostBinding,
316
316
  args: ['class']
@@ -372,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ng
372
372
  type: HostBinding,
373
373
  args: ['class']
374
374
  }] } });
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBdUQsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsSUFDSSxZQUFZO1FBQ1osT0FBTztZQUNILFVBQVU7WUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFBLENBQUMsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFBLENBQUMsQ0FBQyxFQUFFO1NBQ2pELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUE0Q0QsWUFDWSxFQUFxQixFQUNyQixNQUFjLEVBQ2QsT0FBeUIsRUFDekIsVUFBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUs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QUFoRixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2IsZ0JBQWdCO3NCQUE1RSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoQyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1MsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFPUSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsaUJBQWlCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFpSXRDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBK003QyxvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLCtCQUErQjtJQUQ1QztRQUUwQixpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO0tBQzFFO21IQUZZLCtCQUErQjt1R0FBL0IsK0JBQStCOztnR0FBL0IsK0JBQStCO2tCQUQzQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFOzhCQUVwQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uRmFjdG9yeSwgQW5pbWF0aW9uUGxheWVyLCBzdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBFdWlUYWJDb21wb25lbnQgfSBmcm9tICcuL2V1aS10YWIvZXVpLXRhYi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGVsZW1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2V1aS10YWJzJyxcbiAgICAgICAgICAgIHRoaXMuaXNNYWluTmF2aWdhdGlvbiA/ICdldWktdGFicy0tbWFpbi1uYXZpZ2F0aW9uJzogJycsXG4gICAgICAgICAgICB0aGlzLmlzVmVydGljYWxUYWJzID8gJ2V1aS10YWJzLS12ZXJ0aWNhbCc6ICcnLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHRhYnM6IEV1aVRhYkNvbXBvbmVudFtdID0gW107XG4gICAgQElucHV0KCkgYWN0aXZlVGFiSW5kZXggPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWUyZScpXG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdGFicyc7XG4gICAgQElucHV0KCkgcGF0aE1hdGNoOiAncHJlZml4JyB8ICdmdWxsJyA9ICdwcmVmaXgnO1xuXG4gICAgQE91dHB1dCgpIHRhYkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0+KCk7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWI6IEV1aVRhYkNvbXBvbmVudDsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRhYkNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIF90YWJzOiBRdWVyeUxpc3Q8RXVpVGFiQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlUYWJMYWJlbEl0ZW0nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZXVpVGFiTGFiZWxJdGVtczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xuICAgIEBWaWV3Q2hpbGQoJ2V1aVRhYnNJdGVtcycpIGV1aVRhYnNJdGVtczogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdldWlUYWJzSXRlbXNXcmFwcGVyJykgZXVpVGFic0l0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBzY3JvbGxpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgcHVibGljIG5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIGN1cnJlbnRPZmZzZXQgPSAwO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTWFpbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNIYW5kbGVDaGFuZ2VUYWIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTdWJUYWJzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVmVydGljYWxUYWJzID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBzdGVwTW92ZSA9IDQwMDtcbiAgICBwcml2YXRlIHNjcm9sbE9mZnNldCA9IDMyO1xuICAgIC8qKlxuICAgICAqIEZvciByYWNlIGNvbmRpdGlvbiByZWFzb24sIHRoZSB3cmFwcGVyIHdpZHRoIGlzIG5vdCBjb3JyZWN0bHkgY2FsY3VsYXRlZCB3aGVuIHRoZSBjb21wb25lbnQgcGFzc2VzIGZyb20gbm8tc2Nyb2xsIHN0YXRlIHRvIHNjcm9sbFxuICAgICAqIHN0YXRlLiBUbyBmaXggdGhpcyBpc3N1ZSwgd2UgY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZ2V0U2Nyb2xsaW5nU3RhdHVzIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBTY2VuYXJpbyAxOiBUaGUgbnVtYmVyIG9mIHRhYnMgZG9lcyBub3QgcmVxdWlyZSBhbnkgc2Nyb2xsOlxuICAgICAqIC0gV2l0aG91dCBhbnkgZml4IHRoZSBzY3JvbGwgd2lsbCBoYXZlIGEgZGVsdGEgb2YgNjQgYXQgdGhlIGZpcnN0IGFjdGl2YXRpb24sIHRoZW4gb24gdGhlIGZpcnN0IG5vLXNjcm9sbCB0byBzY3JvbGwgc3RhdGUsXG4gICAgICogLSB3ZSBoYWQgNjQgdG8gdGhlIG1vdmVcbiAgICAgKlxuICAgICAqIFNjZW5hcmlvIDI6IFRoZSBudW1iZXIgb2YgdGFicyByZXF1aXJlcyBhIHNjcm9sbDpcbiAgICAgKiAtIEluIHRoaXMgY2FzZSB0aGUgd3JhcHBlciB3aWR0aCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBhZGQgdGhlIGRlbHRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBzY3JvbGxpbmdDb3VudCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGMuYWN0aXZlVGFiSW5kZXguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICYmICF0aGlzLmlzQWN0aXZlVGFiRnVsbHlWaXNpYmxlKGFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2V0V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWU7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvID0gY29udGFpbmVyV2lkdGggLyAyIC0gc3Vic2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgdGhpcy5zY3JvbGxPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwID8gNTAwIDogMCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxpbmdTdGF0dXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX3RhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdGFicy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRPRE8gdjE4IGNoZWNrIG5hdmlnYXRpb25FbmQgKGRlcHJlY2F0aW9uKVxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHsgdXJsOiB0aGlzLnJvdXRlci51cmwgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFic1dpdGhVcmwgPSB0aGlzLnRhYnMuZmlsdGVyKCh0KSA9PiB0LnVybCAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWJzV2l0aFVybC5sZW5ndGggPT09IHRoaXMudGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGF0aE1hdGNoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleCA9IHRhYnNXaXRoVXJsLmZpbmRJbmRleCgodCkgPT4gZS51cmwgPT09IHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXggPSB0YWJzV2l0aFVybC5maW5kSW5kZXgoKHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHQudXJsICsgJygvPyknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZS51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMubWFwKCh0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4ID09PSBpID8gT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiB0cnVlIH0pIDogT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJJbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSAhPT0gLTEgPyB0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSA6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29udGVudENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9MZWZ0KCk6IHZvaWQge1xuICAgICAgICBsZXQgc2Nyb2xsVG8gPSB0aGlzLmN1cnJlbnRPZmZzZXQgKyB0aGlzLnN0ZXBNb3ZlO1xuICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ29Ub1JpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIGxldCBzY3JvbGxUbyA9IHRoaXMuY3VycmVudE9mZnNldCAtIHRoaXMuc3RlcE1vdmU7XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvKSA+IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGgpIC0gdGhpcy5zY3JvbGxPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIYW5kbGVDaGFuZ2VUYWIpIHtcbiAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tpbmRleF0gJiYgIXRoaXMudGFic1tpbmRleF0uaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzW3RoaXMuYWN0aXZlVGFiSW5kZXhdLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudGFic1tpbmRleF0uaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4uaXRlbShpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYiAmJiAhdGhpcy5pc0FjdGl2ZVRhYkZ1bGx5VmlzaWJsZShhY3RpdmVUYWIpICYmICF0aGlzLmlzVmVydGljYWxUYWJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJzZXRXaWR0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IGNvbnRhaW5lcldpZHRoIC8gMiAtIHN1YnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyB0aGlzLnNjcm9sbE9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJTZWxlY3QuZW1pdCh7IHRhYjogdGhpcy50YWJzW2luZGV4XSwgaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudGFic1tpbmRleF0udXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXlVcChlOiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFbnRlcicgfHwgZS5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJzW2luZGV4XSAmJiAhdGhpcy50YWJzW2luZGV4XS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzLm1hcCgodCwgaSkgPT4gKGkgPT09IGluZGV4ID8gT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiB0cnVlIH0pIDogT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiBmYWxzZSB9KSkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRhYnNbaW5kZXhdLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnRhYnNbaW5kZXhdLnVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0uaXNIYW5kbGVDbG9zZU9uQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoZS5pbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMuZmlsdGVyKCh0LCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYkNsb3NlLmVtaXQoeyB0YWIsIGluZGV4IH0pO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgdGFiIHBhc3MgaW4gcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogQHVzYWdlTm90ZXNcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGV1aS10YWJzICN0YWJzPlxuICAgICAqICAgICA8ZXVpLXRhYiBpc0Nsb3NhYmxlIGlzSGFuZGxlQ2xvc2VPbkNsb3NlPlxuICAgICAqICAgICAgICAgPGV1aS10YWItbGFiZWw+VGFiIGxhYmVsPC9ldWktdGFiLWxhYmVsPlxuICAgICAqICAgICAgICAgPGV1aS10YWItY29udGVudD5UYWIgY29udGVudDwvZXVpLXRhYi1jb250ZW50PlxuICAgICAqICAgICA8L2V1aS10YWI+XG4gICAgICogPC9ldWktdGFicz5cbiAgICAgKiBgYGBcbiAgICAgKiAuLi5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50YWJzLmNsb3NlKDEpO1xuICAgICAqIGBgYFxuICAgICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgdGFiIHRvIGNsb3NlXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1Zpc2libGVJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRoaXMudGFic1tpbmRleCAtIDFdKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzVmlzaWJsZUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVGFiKDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRhYihwcmV2aW91c1Zpc2libGVJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMuYWN0aXZlVGFiSW5kZXggLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigodCwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3RpdmVUYWJGdWxseVZpc2libGUoYWN0aXZlVGFiOiBIVE1MRGl2RWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIHJldHVybiBhY3RpdmVUYWIub2Zmc2V0TGVmdCAtIDQ4ID49IDAgJiYgYWN0aXZlVGFiLm9mZnNldExlZnQgKyBhY3RpdmVUYWIuY2xpZW50V2lkdGggPCBjb250YWluZXJXaWR0aCAtIDQ4O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2Nyb2xsVG8oc2Nyb2xsVG86IG51bWJlciwgaXNBbmltYXRlZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICBjb25zdCB0aW1pbmdzID0gaXNBbmltYXRlZCA/ICc1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSknIDogMDtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uOiBBbmltYXRpb25GYWN0b3J5ID0gdGhpcy5idWlsZGVyLmJ1aWxkKFthbmltYXRlKHRpbWluZ3MsIHN0eWxlKHsgJ21hcmdpbi1sZWZ0JzogK3Njcm9sbFRvICsgJ3B4JyB9KSldKTtcblxuICAgICAgICB0aGlzLnBsYXllciA9IGFuaW1hdGlvbi5jcmVhdGUodGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnBsYXllci5wbGF5KCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50T2Zmc2V0ID0gc2Nyb2xsVG87XG5cbiAgICAgICAgaWYgKHNjcm9sbFRvID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmN1cnJlbnRPZmZzZXQpIDwgd3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyB0aGlzLnNjcm9sbE9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG8pID09PSB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2Nyb2xsaW5nU3RhdHVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsaW5nID0gY29udGFpbmVyV2lkdGggPCB3cmFwcGVyV2lkdGg7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdDb3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoIDw9IE1hdGguYWJzKHRoaXMuY3VycmVudE9mZnNldCkgKyB0aGlzLnNjcm9sbE9mZnNldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhRml4ID0gdGhpcy5zY3JvbGxpbmdDb3VudCA9PT0gMCA/IHRoaXMuc2Nyb2xsT2Zmc2V0ICogMiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSAtIHRoaXMuc2Nyb2xsT2Zmc2V0IC0gZGVsdGFGaXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE9mZnNldCA9IHNjcm9sbFRvO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jdXJyZW50T2Zmc2V0KSA8IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgdGhpcy5zY3JvbGxPZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50T2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsaW5nQ291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aVRhYnNSaWdodENvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpVGFic1JpZ2h0Q29udGVudFRhZ0RpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGVsZW1lbnRDbGFzcyA9ICdldWktdGFic19fcmlnaHQtY29udGVudC13cmFwcGVyJztcbn1cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxkaXYgY2xhc3M9XCJldWktdS1mbGV4XCIgW2NsYXNzLmV1aS10YWJzX193cmFwcGVyLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiIFtjbGFzcy5ldWktdGFic19fd3JhcHBlci0tdmVydGljYWxdPVwiaXNWZXJ0aWNhbFRhYnNcIj5cbiAgICA8ZGl2XG4gICAgICAgICNldWlUYWJzSXRlbXNcbiAgICAgICAgY2xhc3M9XCJldWktdGFic19faXRlbXNcIlxuICAgICAgICBbY2xhc3MuZXVpLXRhYnNfX2l0ZW1zLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiXG4gICAgICAgIFtjbGFzcy5ldWktdGFic19faXRlbXMtLXNjcm9sbGluZ109XCJzY3JvbGxpbmdcIlxuICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwib25Db250ZW50Q2hhbmdlcygpXCI+XG4gICAgICAgIDxkaXYgI2V1aVRhYnNJdGVtc1dyYXBwZXIgY2xhc3M9XCJldWktdGFic19faXRlbXMtd3JhcHBlclwiIFthdHRyLmRhdGEtb2Zmc2V0XT1cImN1cnJlbnRPZmZzZXRcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgQGZvciAodGFiIG9mIHRhYnM7IGxldCBpID0gJGluZGV4OyB0cmFjayB0YWIpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHRhYi5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdGFiLWl0ZW0gZXVpLXRhYi1pdGVtLS17eyB0YWIuYmFzZVN0YXRlc0RpcmVjdGl2ZS5ldWlWYXJpYW50IH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWNsb3NhYmxlXT1cInRhYi5pc0Nsb3NhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWFjdGl2ZV09XCJhY3RpdmVUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1kaXNhYmxlZF09XCJ0YWIuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1iYWNrZ3JvdW5kLWZpbGxlZF09XCJ0YWIuaGFzQmFja2dyb3VuZEZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWIoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwidGFiLnRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWItaXRlbV9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbC50ZW1wbGF0ZVBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGFiLmlzQ2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYihpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlTaXplWFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSB0YWIgYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdS1tbC1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJldWktZWNsLWNsb3NlLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwibmV1dHJhbC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10YWJfX2Nsb3NlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25fX2xlZnQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9MZWZ0KClcIlxuICAgICAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cIm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Nyb2xsIGxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNoZXZyb24tYmFja1wiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25fX3JpZ2h0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUmlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwibmF2aWdhdGlvblJpZ2h0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Nyb2xsIHJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJldWktdGFic19fcmlnaHQtY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlUYWJzUmlnaHRDb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbkBmb3IgKHRhYiBvZiB0YWJzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgdGFiKSB7XG4gICAgQGlmIChpID09PSBhY3RpdmVUYWJJbmRleCAmJiB0YWIudGVtcGxhdGVDb250ZW50KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGFiLWNvbnRlbnQtd3JhcHBlclwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwidGFiLnRlbXBsYXRlQ29udGVudC50ZW1wbGF0ZVBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbn1cbiJdfQ==
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUlULFdBQVcsRUFDWCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBdUQsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsSUFDSSxZQUFZO1FBQ1osT0FBTztZQUNILFVBQVU7WUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFBLENBQUMsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFBLENBQUMsQ0FBQyxFQUFFO1NBQ2pELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUE0Q0QsWUFDWSxFQUFxQixFQUNyQixNQUFjLEVBQ2QsT0FBeUIsRUFDekIsVUFBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUs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QUFoRixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2IsZ0JBQWdCO3NCQUE1RSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoQyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1MsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFPUSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsaUJBQWlCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFpSXRDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBK003QyxvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLCtCQUErQjtJQUQ1QztRQUUwQixpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO0tBQzFFO21IQUZZLCtCQUErQjt1R0FBL0IsK0JBQStCOztnR0FBL0IsK0JBQStCO2tCQUQzQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFOzhCQUVwQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uRmFjdG9yeSwgQW5pbWF0aW9uUGxheWVyLCBzdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBFdWlUYWJDb21wb25lbnQgfSBmcm9tICcuL2V1aS10YWIvZXVpLXRhYi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGVsZW1lbnRDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2V1aS10YWJzJyxcbiAgICAgICAgICAgIHRoaXMuaXNNYWluTmF2aWdhdGlvbiA/ICdldWktdGFicy0tbWFpbi1uYXZpZ2F0aW9uJzogJycsXG4gICAgICAgICAgICB0aGlzLmlzVmVydGljYWxUYWJzID8gJ2V1aS10YWJzLS12ZXJ0aWNhbCc6ICcnLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHRhYnM6IEV1aVRhYkNvbXBvbmVudFtdID0gW107XG4gICAgQElucHV0KCkgYWN0aXZlVGFiSW5kZXggPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWUyZScpXG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdGFicyc7XG4gICAgQElucHV0KCkgcGF0aE1hdGNoOiAncHJlZml4JyB8ICdmdWxsJyA9ICdwcmVmaXgnO1xuXG4gICAgQE91dHB1dCgpIHRhYkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0+KCk7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWI6IEV1aVRhYkNvbXBvbmVudDsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRhYkNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIF90YWJzOiBRdWVyeUxpc3Q8RXVpVGFiQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlUYWJMYWJlbEl0ZW0nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZXVpVGFiTGFiZWxJdGVtczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xuICAgIEBWaWV3Q2hpbGQoJ2V1aVRhYnNJdGVtcycpIGV1aVRhYnNJdGVtczogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdldWlUYWJzSXRlbXNXcmFwcGVyJykgZXVpVGFic0l0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBzY3JvbGxpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgcHVibGljIG5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIGN1cnJlbnRPZmZzZXQgPSAwO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTWFpbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNIYW5kbGVDaGFuZ2VUYWIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTdWJUYWJzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVmVydGljYWxUYWJzID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBzdGVwTW92ZSA9IDQwMDtcbiAgICBwcml2YXRlIHNjcm9sbE9mZnNldCA9IDMyO1xuICAgIC8qKlxuICAgICAqIEZvciByYWNlIGNvbmRpdGlvbiByZWFzb24sIHRoZSB3cmFwcGVyIHdpZHRoIGlzIG5vdCBjb3JyZWN0bHkgY2FsY3VsYXRlZCB3aGVuIHRoZSBjb21wb25lbnQgcGFzc2VzIGZyb20gbm8tc2Nyb2xsIHN0YXRlIHRvIHNjcm9sbFxuICAgICAqIHN0YXRlLiBUbyBmaXggdGhpcyBpc3N1ZSwgd2UgY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZ2V0U2Nyb2xsaW5nU3RhdHVzIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBTY2VuYXJpbyAxOiBUaGUgbnVtYmVyIG9mIHRhYnMgZG9lcyBub3QgcmVxdWlyZSBhbnkgc2Nyb2xsOlxuICAgICAqIC0gV2l0aG91dCBhbnkgZml4IHRoZSBzY3JvbGwgd2lsbCBoYXZlIGEgZGVsdGEgb2YgNjQgYXQgdGhlIGZpcnN0IGFjdGl2YXRpb24sIHRoZW4gb24gdGhlIGZpcnN0IG5vLXNjcm9sbCB0byBzY3JvbGwgc3RhdGUsXG4gICAgICogLSB3ZSBoYWQgNjQgdG8gdGhlIG1vdmVcbiAgICAgKlxuICAgICAqIFNjZW5hcmlvIDI6IFRoZSBudW1iZXIgb2YgdGFicyByZXF1aXJlcyBhIHNjcm9sbDpcbiAgICAgKiAtIEluIHRoaXMgY2FzZSB0aGUgd3JhcHBlciB3aWR0aCBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBhZGQgdGhlIGRlbHRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBzY3JvbGxpbmdDb3VudCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGMuYWN0aXZlVGFiSW5kZXguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICYmICF0aGlzLmlzQWN0aXZlVGFiRnVsbHlWaXNpYmxlKGFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2V0V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWU7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvID0gY29udGFpbmVyV2lkdGggLyAyIC0gc3Vic2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgdGhpcy5zY3JvbGxPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwID8gNTAwIDogMCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxpbmdTdGF0dXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX3RhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdGFicy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRPRE8gdjE4IGNoZWNrIG5hdmlnYXRpb25FbmQgKGRlcHJlY2F0aW9uKVxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHsgdXJsOiB0aGlzLnJvdXRlci51cmwgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFic1dpdGhVcmwgPSB0aGlzLnRhYnMuZmlsdGVyKCh0KSA9PiB0LnVybCAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWJzV2l0aFVybC5sZW5ndGggPT09IHRoaXMudGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGF0aE1hdGNoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleCA9IHRhYnNXaXRoVXJsLmZpbmRJbmRleCgodCkgPT4gZS51cmwgPT09IHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXggPSB0YWJzV2l0aFVybC5maW5kSW5kZXgoKHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHQudXJsICsgJygvPyknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZS51cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMubWFwKCh0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4ID09PSBpID8gT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiB0cnVlIH0pIDogT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5hY3RpdmVUYWJJbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSAhPT0gLTEgPyB0aGlzLnRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlzQWN0aXZlKSA6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29udGVudENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9MZWZ0KCk6IHZvaWQge1xuICAgICAgICBsZXQgc2Nyb2xsVG8gPSB0aGlzLmN1cnJlbnRPZmZzZXQgKyB0aGlzLnN0ZXBNb3ZlO1xuICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ29Ub1JpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIGxldCBzY3JvbGxUbyA9IHRoaXMuY3VycmVudE9mZnNldCAtIHRoaXMuc3RlcE1vdmU7XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvKSA+IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGgpIC0gdGhpcy5zY3JvbGxPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIYW5kbGVDaGFuZ2VUYWIpIHtcbiAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tpbmRleF0gJiYgIXRoaXMudGFic1tpbmRleF0uaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzW3RoaXMuYWN0aXZlVGFiSW5kZXhdLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudGFic1tpbmRleF0uaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4uaXRlbShpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYiAmJiAhdGhpcy5pc0FjdGl2ZVRhYkZ1bGx5VmlzaWJsZShhY3RpdmVUYWIpICYmICF0aGlzLmlzVmVydGljYWxUYWJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJzZXRXaWR0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IGNvbnRhaW5lcldpZHRoIC8gMiAtIHN1YnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyB0aGlzLnNjcm9sbE9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJTZWxlY3QuZW1pdCh7IHRhYjogdGhpcy50YWJzW2luZGV4XSwgaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudGFic1tpbmRleF0udXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXlVcChlOiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFbnRlcicgfHwgZS5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJzW2luZGV4XSAmJiAhdGhpcy50YWJzW2luZGV4XS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzLm1hcCgodCwgaSkgPT4gKGkgPT09IGluZGV4ID8gT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiB0cnVlIH0pIDogT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiBmYWxzZSB9KSkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRhYnNbaW5kZXhdLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnRhYnNbaW5kZXhdLnVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0uaXNIYW5kbGVDbG9zZU9uQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoZS5pbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMuZmlsdGVyKCh0LCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYkNsb3NlLmVtaXQoeyB0YWIsIGluZGV4IH0pO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgdGFiIHBhc3MgaW4gcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogQHVzYWdlTm90ZXNcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGV1aS10YWJzICN0YWJzPlxuICAgICAqICAgICA8ZXVpLXRhYiBpc0Nsb3NhYmxlIGlzSGFuZGxlQ2xvc2VPbkNsb3NlPlxuICAgICAqICAgICAgICAgPGV1aS10YWItbGFiZWw+VGFiIGxhYmVsPC9ldWktdGFiLWxhYmVsPlxuICAgICAqICAgICAgICAgPGV1aS10YWItY29udGVudD5UYWIgY29udGVudDwvZXVpLXRhYi1jb250ZW50PlxuICAgICAqICAgICA8L2V1aS10YWI+XG4gICAgICogPC9ldWktdGFicz5cbiAgICAgKiBgYGBcbiAgICAgKiAuLi5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50YWJzLmNsb3NlKDEpO1xuICAgICAqIGBgYFxuICAgICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgdGFiIHRvIGNsb3NlXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1Zpc2libGVJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRoaXMudGFic1tpbmRleCAtIDFdKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzVmlzaWJsZUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVGFiKDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRhYihwcmV2aW91c1Zpc2libGVJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMuYWN0aXZlVGFiSW5kZXggLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigodCwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3RpdmVUYWJGdWxseVZpc2libGUoYWN0aXZlVGFiOiBIVE1MRGl2RWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIHJldHVybiBhY3RpdmVUYWIub2Zmc2V0TGVmdCAtIDQ4ID49IDAgJiYgYWN0aXZlVGFiLm9mZnNldExlZnQgKyBhY3RpdmVUYWIuY2xpZW50V2lkdGggPCBjb250YWluZXJXaWR0aCAtIDQ4O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2Nyb2xsVG8oc2Nyb2xsVG86IG51bWJlciwgaXNBbmltYXRlZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICBjb25zdCB0aW1pbmdzID0gaXNBbmltYXRlZCA/ICc1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSknIDogMDtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uOiBBbmltYXRpb25GYWN0b3J5ID0gdGhpcy5idWlsZGVyLmJ1aWxkKFthbmltYXRlKHRpbWluZ3MsIHN0eWxlKHsgJ21hcmdpbi1sZWZ0JzogK3Njcm9sbFRvICsgJ3B4JyB9KSldKTtcblxuICAgICAgICB0aGlzLnBsYXllciA9IGFuaW1hdGlvbi5jcmVhdGUodGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnBsYXllci5wbGF5KCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50T2Zmc2V0ID0gc2Nyb2xsVG87XG5cbiAgICAgICAgaWYgKHNjcm9sbFRvID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmN1cnJlbnRPZmZzZXQpIDwgd3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyB0aGlzLnNjcm9sbE9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG8pID09PSB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIHRoaXMuc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2Nyb2xsaW5nU3RhdHVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsaW5nID0gY29udGFpbmVyV2lkdGggPCB3cmFwcGVyV2lkdGg7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdDb3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoIDw9IE1hdGguYWJzKHRoaXMuY3VycmVudE9mZnNldCkgKyB0aGlzLnNjcm9sbE9mZnNldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhRml4ID0gdGhpcy5zY3JvbGxpbmdDb3VudCA9PT0gMCA/IHRoaXMuc2Nyb2xsT2Zmc2V0ICogMiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSAtIHRoaXMuc2Nyb2xsT2Zmc2V0IC0gZGVsdGFGaXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE9mZnNldCA9IHNjcm9sbFRvO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jdXJyZW50T2Zmc2V0KSA8IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgdGhpcy5zY3JvbGxPZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50T2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsaW5nQ291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aVRhYnNSaWdodENvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpVGFic1JpZ2h0Q29udGVudFRhZ0RpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGVsZW1lbnRDbGFzcyA9ICdldWktdGFic19fcmlnaHQtY29udGVudC13cmFwcGVyJztcbn1cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxkaXYgY2xhc3M9XCJldWktdS1mbGV4XCIgW2NsYXNzLmV1aS10YWJzX193cmFwcGVyLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiIFtjbGFzcy5ldWktdGFic19fd3JhcHBlci0tdmVydGljYWxdPVwiaXNWZXJ0aWNhbFRhYnNcIj5cbiAgICA8ZGl2XG4gICAgICAgICNldWlUYWJzSXRlbXNcbiAgICAgICAgY2xhc3M9XCJldWktdGFic19faXRlbXNcIlxuICAgICAgICBbY2xhc3MuZXVpLXRhYnNfX2l0ZW1zLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiXG4gICAgICAgIFtjbGFzcy5ldWktdGFic19faXRlbXMtLXNjcm9sbGluZ109XCJzY3JvbGxpbmdcIlxuICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwib25Db250ZW50Q2hhbmdlcygpXCI+XG4gICAgICAgIDxkaXYgI2V1aVRhYnNJdGVtc1dyYXBwZXIgY2xhc3M9XCJldWktdGFic19faXRlbXMtd3JhcHBlclwiIFthdHRyLmRhdGEtb2Zmc2V0XT1cImN1cnJlbnRPZmZzZXRcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgQGZvciAodGFiIG9mIHRhYnM7IGxldCBpID0gJGluZGV4OyB0cmFjayB0YWIpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHRhYi5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdGFiLWl0ZW0gZXVpLXRhYi1pdGVtLS17eyB0YWIuYmFzZVN0YXRlc0RpcmVjdGl2ZS5ldWlWYXJpYW50IH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWNsb3NhYmxlXT1cInRhYi5pc0Nsb3NhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWFjdGl2ZV09XCJhY3RpdmVUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1kaXNhYmxlZF09XCJ0YWIuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1iYWNrZ3JvdW5kLWZpbGxlZF09XCJ0YWIuaGFzQmFja2dyb3VuZEZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWIoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwidGFiLnRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWItaXRlbV9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbC50ZW1wbGF0ZVBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGFiLmlzQ2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYihpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlTaXplWFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSB0YWIgYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdS1tbC1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJldWktZWNsLWNsb3NlLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwibmV1dHJhbC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10YWJfX2Nsb3NlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25fX2xlZnQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9MZWZ0KClcIlxuICAgICAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cIm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Nyb2xsIGxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiY2hldnJvbi1iYWNrOnNoYXJwXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGFic19fbmF2aWdhdGlvbl9fcmlnaHQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9SaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJuYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTY3JvbGwgcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiY2hldnJvbi1mb3J3YXJkOnNoYXJwXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX3JpZ2h0LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpVGFic1JpZ2h0Q29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG5AZm9yICh0YWIgb2YgdGFiczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIHRhYikge1xuICAgIEBpZiAoaSA9PT0gYWN0aXZlVGFiSW5kZXggJiYgdGFiLnRlbXBsYXRlQ29udGVudCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYi1jb250ZW50LXdyYXBwZXJcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInRhYi50ZW1wbGF0ZUNvbnRlbnQudGVtcGxhdGVQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59XG4iXX0=