@eui/components 17.0.0-next.11 → 17.0.0-next.12

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 (112) hide show
  1. package/directives/eui-scroll-handler.directive.d.ts +6 -6
  2. package/directives/eui-scroll-handler.directive.d.ts.map +1 -1
  3. package/directives/eui-smooth-scroll.directive.d.ts +1 -1
  4. package/directives/eui-smooth-scroll.directive.d.ts.map +1 -1
  5. package/directives/eui-tooltip/eui-tooltip.directive.d.ts +1 -3
  6. package/directives/eui-tooltip/eui-tooltip.directive.d.ts.map +1 -1
  7. package/esm2022/directives/eui-scroll-handler.directive.mjs +12 -12
  8. package/esm2022/directives/eui-smooth-scroll.directive.mjs +3 -3
  9. package/esm2022/directives/eui-tooltip/eui-tooltip.directive.mjs +2 -7
  10. package/esm2022/eui-alert/eui-alert.component.mjs +2 -7
  11. package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +2 -17
  12. package/esm2022/eui-buttons/eui-buttons.component.mjs +2 -7
  13. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +1 -1
  14. package/esm2022/eui-chip-list/eui-chip-list.component.mjs +2 -38
  15. package/esm2022/eui-dashboard-card/eui-dashboard-card.component.mjs +2 -7
  16. package/esm2022/eui-dialog/eui-dialog.component.mjs +2 -12
  17. package/esm2022/eui-fieldset/eui-fieldset.component.mjs +2 -7
  18. package/esm2022/eui-file-upload/eui-file-upload.component.mjs +2 -7
  19. package/esm2022/eui-growl/eui-growl.component.mjs +2 -7
  20. package/esm2022/eui-menu/eui-menu-item.component.mjs +2 -13
  21. package/esm2022/eui-menu/eui-menu.component.mjs +1 -1
  22. package/esm2022/eui-message-box/eui-message-box.component.mjs +2 -12
  23. package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +2 -13
  24. package/esm2022/eui-popover/eui-popover.component.mjs +2 -13
  25. package/esm2022/eui-sidebar-menu/eui-sidebar-menu.component.mjs +2 -18
  26. package/esm2022/eui-slide-toggle/eui-slide-toggle.component.mjs +2 -7
  27. package/esm2022/eui-tabs/eui-tabs.component.mjs +1 -1
  28. package/esm2022/externals/eui-editor/eui-editor.component.mjs +1 -1
  29. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.mjs +2 -7
  30. package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +2 -7
  31. package/esm2022/layout/eui-app/eui-app.component.mjs +1 -1
  32. package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +2 -10
  33. package/esm2022/shared/eui-common-header/common-header.component.mjs +1 -1
  34. package/eui-alert/eui-alert.component.d.ts +1 -3
  35. package/eui-alert/eui-alert.component.d.ts.map +1 -1
  36. package/eui-autocomplete/eui-autocomplete.component.d.ts +1 -7
  37. package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
  38. package/eui-buttons/eui-buttons.component.d.ts +1 -3
  39. package/eui-buttons/eui-buttons.component.d.ts.map +1 -1
  40. package/eui-chip-list/eui-chip-list.component.d.ts +1 -7
  41. package/eui-chip-list/eui-chip-list.component.d.ts.map +1 -1
  42. package/eui-dashboard-card/eui-dashboard-card.component.d.ts +1 -3
  43. package/eui-dashboard-card/eui-dashboard-card.component.d.ts.map +1 -1
  44. package/eui-dialog/eui-dialog.component.d.ts +1 -5
  45. package/eui-dialog/eui-dialog.component.d.ts.map +1 -1
  46. package/eui-fieldset/eui-fieldset.component.d.ts +1 -3
  47. package/eui-fieldset/eui-fieldset.component.d.ts.map +1 -1
  48. package/eui-file-upload/eui-file-upload.component.d.ts +1 -3
  49. package/eui-file-upload/eui-file-upload.component.d.ts.map +1 -1
  50. package/eui-growl/eui-growl.component.d.ts +1 -3
  51. package/eui-growl/eui-growl.component.d.ts.map +1 -1
  52. package/eui-menu/eui-menu-item.component.d.ts +1 -5
  53. package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
  54. package/eui-message-box/eui-message-box.component.d.ts +1 -5
  55. package/eui-message-box/eui-message-box.component.d.ts.map +1 -1
  56. package/eui-page/components/eui-page-column/eui-page-column.component.d.ts +1 -5
  57. package/eui-page/components/eui-page-column/eui-page-column.component.d.ts.map +1 -1
  58. package/eui-popover/eui-popover.component.d.ts +1 -6
  59. package/eui-popover/eui-popover.component.d.ts.map +1 -1
  60. package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts +1 -11
  61. package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts.map +1 -1
  62. package/eui-slide-toggle/eui-slide-toggle.component.d.ts +1 -3
  63. package/eui-slide-toggle/eui-slide-toggle.component.d.ts.map +1 -1
  64. package/fesm2022/eui-components-directives.mjs +14 -19
  65. package/fesm2022/eui-components-directives.mjs.map +1 -1
  66. package/fesm2022/eui-components-eui-alert.mjs +1 -6
  67. package/fesm2022/eui-components-eui-alert.mjs.map +1 -1
  68. package/fesm2022/eui-components-eui-autocomplete.mjs +1 -16
  69. package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
  70. package/fesm2022/eui-components-eui-buttons.mjs +1 -6
  71. package/fesm2022/eui-components-eui-buttons.mjs.map +1 -1
  72. package/fesm2022/eui-components-eui-card.mjs +1 -1
  73. package/fesm2022/eui-components-eui-card.mjs.map +1 -1
  74. package/fesm2022/eui-components-eui-chip-list.mjs +1 -37
  75. package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
  76. package/fesm2022/eui-components-eui-dashboard-card.mjs +1 -6
  77. package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
  78. package/fesm2022/eui-components-eui-dialog.mjs +1 -11
  79. package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
  80. package/fesm2022/eui-components-eui-fieldset.mjs +1 -6
  81. package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
  82. package/fesm2022/eui-components-eui-file-upload.mjs +1 -6
  83. package/fesm2022/eui-components-eui-file-upload.mjs.map +1 -1
  84. package/fesm2022/eui-components-eui-growl.mjs +1 -6
  85. package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
  86. package/fesm2022/eui-components-eui-menu.mjs +2 -13
  87. package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
  88. package/fesm2022/eui-components-eui-message-box.mjs +1 -11
  89. package/fesm2022/eui-components-eui-message-box.mjs.map +1 -1
  90. package/fesm2022/eui-components-eui-page.mjs +1 -12
  91. package/fesm2022/eui-components-eui-page.mjs.map +1 -1
  92. package/fesm2022/eui-components-eui-popover.mjs +1 -12
  93. package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
  94. package/fesm2022/eui-components-eui-sidebar-menu.mjs +1 -17
  95. package/fesm2022/eui-components-eui-sidebar-menu.mjs.map +1 -1
  96. package/fesm2022/eui-components-eui-slide-toggle.mjs +1 -6
  97. package/fesm2022/eui-components-eui-slide-toggle.mjs.map +1 -1
  98. package/fesm2022/eui-components-eui-tabs.mjs +1 -1
  99. package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
  100. package/fesm2022/eui-components-externals-eui-editor.mjs +1 -1
  101. package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
  102. package/fesm2022/eui-components-layout.mjs +4 -22
  103. package/fesm2022/eui-components-layout.mjs.map +1 -1
  104. package/fesm2022/eui-components-shared.mjs +1 -1
  105. package/fesm2022/eui-components-shared.mjs.map +1 -1
  106. package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts +1 -3
  107. package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts.map +1 -1
  108. package/layout/eui-app/eui-app-top-message/top-message.component.d.ts +1 -3
  109. package/layout/eui-app/eui-app-top-message/top-message.component.d.ts.map +1 -1
  110. package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts +1 -3
  111. package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts.map +1 -1
  112. package/package.json +7 -7
@@ -45,8 +45,6 @@ export class EuiButtonsComponent extends BaseDirective {
45
45
  super();
46
46
  this.asService = asService;
47
47
  this.router = router;
48
- /**@deprecated will be replaced in the next eUI version by bookmark */
49
- this.bookmarked = new EventEmitter();
50
48
  this.bookmark = new EventEmitter();
51
49
  this._hasLocalMenu = false;
52
50
  this._isBookmarkable = false;
@@ -65,7 +63,6 @@ export class EuiButtonsComponent extends BaseDirective {
65
63
  }
66
64
  onBookmarkToggle() {
67
65
  this.isBookmarked = !this.isBookmarked;
68
- this.bookmarked.emit({ isBookmarked: this.isBookmarked, url: this.currentRoute });
69
66
  this.bookmark.emit({ isBookmarked: this.isBookmarked, url: this.currentRoute });
70
67
  }
71
68
  onPrint() {
@@ -75,7 +72,7 @@ export class EuiButtonsComponent extends BaseDirective {
75
72
  return window.location.origin + currentRoute;
76
73
  }
77
74
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiButtonsComponent, deps: [{ token: i1.EuiAppShellService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
78
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiButtonsComponent, selector: "eui-buttons", inputs: { localMenuLabel: "localMenuLabel", hasLocalMenu: "hasLocalMenu", isBookmarkable: "isBookmarkable", isBookmarked: "isBookmarked" }, outputs: { bookmarked: "bookmarked", bookmark: "bookmark" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "customActionsContent", first: true, predicate: i0.forwardRef(() => EuiButtonsActionsContentTagDirective), descendants: true }, { propertyName: "customLocalMenuContent", first: true, predicate: i0.forwardRef(() => EuiButtonsLocalMenuContentTagDirective), descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"eui-buttons-wrapper\"\n [class.eui-buttons-wrapper--mobile]=\"(asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\">\n <div class=\"eui-buttons__actions-container\">\n <!-- ACTION BUTTONS -->\n <ng-container *ngIf=\"!((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\">\n <ng-container *ngTemplateOutlet=\"actionsButtons\"></ng-container>\n </ng-container>\n\n <!-- BOOKMARK BUTTON -->\n <button\n *ngIf=\"isBookmarkable && !((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\"\n euiButton\n euiOutline\n euiSecondary\n type=\"button\"\n [title]=\"\n isBookmarked ? ('eui.pageHeader.REMOVE-BOOKMARK.tooltip' | translate) : ('eui.pageHeader.ADD-BOOKMARK.tooltip' | translate)\n \"\n [attr.aria-label]=\"\n isBookmarked ? ('eui.pageHeader.REMOVE-BOOKMARK.tooltip' | translate) : ('eui.pageHeader.ADD-BOOKMARK.tooltip' | translate)\n \"\n (click)=\"onBookmarkToggle()\">\n <eui-icon-svg *ngIf=\"isBookmarked\" icon=\"eui-bookmark\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isBookmarked\" icon=\"eui-bookmark-outline\"></eui-icon-svg>\n <span *ngIf=\"isBookmarked\">{{ 'eui.pageHeader.REMOVE-BOOKMARK' | translate }}</span>\n <span *ngIf=\"!isBookmarked\">{{ 'eui.pageHeader.ADD-BOOKMARK' | translate }}</span>\n </button>\n\n <!-- LOCAL MENU WHEN IN MOBILE/TABLET MODE -->\n <div\n *ngIf=\"hasLocalMenu || (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\"\n class=\"eui-buttons__local-menu\"\n [class.eui-buttons__local-menu--mobile]=\"(asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\"\n euiSizeS>\n <eui-dropdown>\n <button\n euiButton\n euiPrimary\n type=\"button\"\n [euiOutline]=\"localMenuLabel\"\n [euiBasicButton]=\"!localMenuLabel\"\n [euiRounded]=\"!localMenuLabel\"\n [euiIconButton]=\"!localMenuLabel\">\n <span *ngIf=\"localMenuLabel\" euiLabel>{{ localMenuLabel }}</span>\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <!-- Action buttons -->\n <ng-container\n *ngIf=\"\n customActionsContent && ((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\n \">\n <ng-container *ngTemplateOutlet=\"actionsButtons\"></ng-container>\n </ng-container>\n\n <!-- Local menu items -->\n <ng-container *ngIf=\"hasLocalMenu && customLocalMenuContent && customLocalMenuContent.length !== 0\">\n <ng-container *ngTemplateOutlet=\"localMenu\"></ng-container>\n </ng-container>\n\n <!-- Extra menu items -->\n <ul euiList class=\"eui-buttons__local-menu-extras\">\n <li\n *ngIf=\"\n isBookmarkable && ((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\n \"\n euiListItem\n [title]=\"\n isBookmarked\n ? ('eui.pageHeader.REMOVE-BOOKMARK-TOOLTIP' | translate)\n : ('eui.pageHeader.ADD-BOOKMARK-TOOLTIP' | translate)\n \"\n [attr.aria-label]=\"\n isBookmarked\n ? ('eui.pageHeader.REMOVE-BOOKMARK-TOOLTIP' | translate)\n : ('eui.pageHeader.ADD-BOOKMARK-TOOLTIP' | translate)\n \"\n (click)=\"onBookmarkToggle()\">\n <eui-icon-svg *ngIf=\"isBookmarked\" icon=\"eui-bookmark\" fillColor=\"info-100\" size=\"s\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isBookmarked\" icon=\"eui-bookmark-outline\" fillColor=\"info-100\" size=\"s\"></eui-icon-svg>\n <span *ngIf=\"isBookmarked\" euiLabel>{{ 'eui.pageHeader.REMOVE-BOOKMARK' | translate }}</span>\n <span *ngIf=\"!isBookmarked\" euiLabel>{{ 'eui.pageHeader.ADD-BOOKMARK' | translate }}</span>\n </li>\n </ul>\n </eui-dropdown-content>\n </eui-dropdown>\n </div>\n </div>\n</div>\n\n<ng-template #actionsButtons>\n <div\n class=\"eui-buttons__actions-content\"\n [class.eui-buttons__actions-content--mobile]=\"\n (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\n \">\n <ng-content select=\"euiButtonsActionsContent\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #localMenu>\n <div\n class=\"eui-buttons__local-menu-content\"\n [class.eui-buttons__local-menu-content--mobile]=\"\n (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\n \">\n <ng-content select=\"euiButtonsLocalMenuContent\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-buttons{display:flex;flex-direction:column;width:100%}.eui-buttons-wrapper{max-width:100%;align-items:center;display:flex;width:100%}.eui-buttons__actions-container{align-items:center;display:flex;flex:1 0 auto;justify-content:flex-end}.eui-buttons__actions-container button{margin-left:var(--eui-base-spacing-xs)}.eui-buttons__actions-content{align-items:center;display:flex;flex-direction:row;overflow:visible}.eui-buttons__actions-content--mobile{display:block;width:100%}.eui-buttons__actions-content--mobile euibuttonsactionscontent{display:block;margin:var(--eui-base-spacing-xs);position:relative}.eui-buttons__actions-content--mobile euibuttonsactionscontent button{align-items:center;display:flex;margin-bottom:var(--eui-base-spacing-xs);min-height:calc(2 * var(--eui-base-spacing-m));width:100%}.eui-buttons__local-menu{align-items:center;display:flex}.eui-buttons__local-menu__action-buttons{margin:0 var(--eui-base-spacing-s)}.eui-buttons__local-menu__action-buttons button,.eui-buttons__local-menu__action-buttons div{margin-bottom:var(--eui-base-spacing-xs)}.eui-buttons__local-menu__action-buttons--mobile,.eui-buttons__local-menu-content{display:block;width:100%}.eui-buttons__local-menu-content euibuttonslocalmenucontent{display:block;position:relative;width:100%}.eui-buttons__local-menu-content euibuttonslocalmenucontent button{align-items:center;display:flex;margin-bottom:var(--eui-base-spacing-xs);margin-top:var(--eui-base-spacing-xs);min-height:calc(2 * var(--eui-base-spacing-m));width:100%}.eui-buttons__local-menu-content--mobile .container{padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.eui-buttons__local-menu-extras{border-top:1px ridge var(--eui-base-color-grey-20);color:var(--eui-base-color-info-100)}.eui-buttons--size-s .eui-button{min-height:calc(2 * var(--eui-base-spacing-m))}.eui-buttons--size-m .eui-button{min-height:42px;min-width:42px}.eui-buttons--size-l .eui-button{height:calc(3.25 * var(--eui-base-spacing-m));min-height:calc(3.25 * var(--eui-base-spacing-m))}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i8.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }, { kind: "component", type: i8.EuiListItemComponent, selector: "[euiListItem], eui-list-item", inputs: ["disabled", "isCollapsible", "isCollapsed", "isActive"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
75
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiButtonsComponent, selector: "eui-buttons", inputs: { localMenuLabel: "localMenuLabel", hasLocalMenu: "hasLocalMenu", isBookmarkable: "isBookmarkable", isBookmarked: "isBookmarked" }, outputs: { bookmark: "bookmark" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "customActionsContent", first: true, predicate: i0.forwardRef(() => EuiButtonsActionsContentTagDirective), descendants: true }, { propertyName: "customLocalMenuContent", first: true, predicate: i0.forwardRef(() => EuiButtonsLocalMenuContentTagDirective), descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"eui-buttons-wrapper\"\n [class.eui-buttons-wrapper--mobile]=\"(asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\">\n <div class=\"eui-buttons__actions-container\">\n <!-- ACTION BUTTONS -->\n <ng-container *ngIf=\"!((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\">\n <ng-container *ngTemplateOutlet=\"actionsButtons\"></ng-container>\n </ng-container>\n\n <!-- BOOKMARK BUTTON -->\n <button\n *ngIf=\"isBookmarkable && !((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\"\n euiButton\n euiOutline\n euiSecondary\n type=\"button\"\n [title]=\"\n isBookmarked ? ('eui.pageHeader.REMOVE-BOOKMARK.tooltip' | translate) : ('eui.pageHeader.ADD-BOOKMARK.tooltip' | translate)\n \"\n [attr.aria-label]=\"\n isBookmarked ? ('eui.pageHeader.REMOVE-BOOKMARK.tooltip' | translate) : ('eui.pageHeader.ADD-BOOKMARK.tooltip' | translate)\n \"\n (click)=\"onBookmarkToggle()\">\n <eui-icon-svg *ngIf=\"isBookmarked\" icon=\"eui-bookmark\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isBookmarked\" icon=\"eui-bookmark-outline\"></eui-icon-svg>\n <span *ngIf=\"isBookmarked\">{{ 'eui.pageHeader.REMOVE-BOOKMARK' | translate }}</span>\n <span *ngIf=\"!isBookmarked\">{{ 'eui.pageHeader.ADD-BOOKMARK' | translate }}</span>\n </button>\n\n <!-- LOCAL MENU WHEN IN MOBILE/TABLET MODE -->\n <div\n *ngIf=\"hasLocalMenu || (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\"\n class=\"eui-buttons__local-menu\"\n [class.eui-buttons__local-menu--mobile]=\"(asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\"\n euiSizeS>\n <eui-dropdown>\n <button\n euiButton\n euiPrimary\n type=\"button\"\n [euiOutline]=\"localMenuLabel\"\n [euiBasicButton]=\"!localMenuLabel\"\n [euiRounded]=\"!localMenuLabel\"\n [euiIconButton]=\"!localMenuLabel\">\n <span *ngIf=\"localMenuLabel\" euiLabel>{{ localMenuLabel }}</span>\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <!-- Action buttons -->\n <ng-container\n *ngIf=\"\n customActionsContent && ((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\n \">\n <ng-container *ngTemplateOutlet=\"actionsButtons\"></ng-container>\n </ng-container>\n\n <!-- Local menu items -->\n <ng-container *ngIf=\"hasLocalMenu && customLocalMenuContent && customLocalMenuContent.length !== 0\">\n <ng-container *ngTemplateOutlet=\"localMenu\"></ng-container>\n </ng-container>\n\n <!-- Extra menu items -->\n <ul euiList class=\"eui-buttons__local-menu-extras\">\n <li\n *ngIf=\"\n isBookmarkable && ((asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet)\n \"\n euiListItem\n [title]=\"\n isBookmarked\n ? ('eui.pageHeader.REMOVE-BOOKMARK-TOOLTIP' | translate)\n : ('eui.pageHeader.ADD-BOOKMARK-TOOLTIP' | translate)\n \"\n [attr.aria-label]=\"\n isBookmarked\n ? ('eui.pageHeader.REMOVE-BOOKMARK-TOOLTIP' | translate)\n : ('eui.pageHeader.ADD-BOOKMARK-TOOLTIP' | translate)\n \"\n (click)=\"onBookmarkToggle()\">\n <eui-icon-svg *ngIf=\"isBookmarked\" icon=\"eui-bookmark\" fillColor=\"info-100\" size=\"s\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isBookmarked\" icon=\"eui-bookmark-outline\" fillColor=\"info-100\" size=\"s\"></eui-icon-svg>\n <span *ngIf=\"isBookmarked\" euiLabel>{{ 'eui.pageHeader.REMOVE-BOOKMARK' | translate }}</span>\n <span *ngIf=\"!isBookmarked\" euiLabel>{{ 'eui.pageHeader.ADD-BOOKMARK' | translate }}</span>\n </li>\n </ul>\n </eui-dropdown-content>\n </eui-dropdown>\n </div>\n </div>\n</div>\n\n<ng-template #actionsButtons>\n <div\n class=\"eui-buttons__actions-content\"\n [class.eui-buttons__actions-content--mobile]=\"\n (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\n \">\n <ng-content select=\"euiButtonsActionsContent\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #localMenu>\n <div\n class=\"eui-buttons__local-menu-content\"\n [class.eui-buttons__local-menu-content--mobile]=\"\n (asService.breakpoints$ | async).isMobile || (asService.breakpoints$ | async).isTablet\n \">\n <ng-content select=\"euiButtonsLocalMenuContent\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-buttons{display:flex;flex-direction:column;width:100%}.eui-buttons-wrapper{max-width:100%;align-items:center;display:flex;width:100%}.eui-buttons__actions-container{align-items:center;display:flex;flex:1 0 auto;justify-content:flex-end}.eui-buttons__actions-container button{margin-left:var(--eui-base-spacing-xs)}.eui-buttons__actions-content{align-items:center;display:flex;flex-direction:row;overflow:visible}.eui-buttons__actions-content--mobile{display:block;width:100%}.eui-buttons__actions-content--mobile euibuttonsactionscontent{display:block;margin:var(--eui-base-spacing-xs);position:relative}.eui-buttons__actions-content--mobile euibuttonsactionscontent button{align-items:center;display:flex;margin-bottom:var(--eui-base-spacing-xs);min-height:calc(2 * var(--eui-base-spacing-m));width:100%}.eui-buttons__local-menu{align-items:center;display:flex}.eui-buttons__local-menu__action-buttons{margin:0 var(--eui-base-spacing-s)}.eui-buttons__local-menu__action-buttons button,.eui-buttons__local-menu__action-buttons div{margin-bottom:var(--eui-base-spacing-xs)}.eui-buttons__local-menu__action-buttons--mobile,.eui-buttons__local-menu-content{display:block;width:100%}.eui-buttons__local-menu-content euibuttonslocalmenucontent{display:block;position:relative;width:100%}.eui-buttons__local-menu-content euibuttonslocalmenucontent button{align-items:center;display:flex;margin-bottom:var(--eui-base-spacing-xs);margin-top:var(--eui-base-spacing-xs);min-height:calc(2 * var(--eui-base-spacing-m));width:100%}.eui-buttons__local-menu-content--mobile .container{padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.eui-buttons__local-menu-extras{border-top:1px ridge var(--eui-base-color-grey-20);color:var(--eui-base-color-info-100)}.eui-buttons--size-s .eui-button{min-height:calc(2 * var(--eui-base-spacing-m))}.eui-buttons--size-m .eui-button{min-height:42px;min-width:42px}.eui-buttons--size-l .eui-button{height:calc(3.25 * var(--eui-base-spacing-m));min-height:calc(3.25 * var(--eui-base-spacing-m))}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i8.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }, { kind: "component", type: i8.EuiListItemComponent, selector: "[euiListItem], eui-list-item", inputs: ["disabled", "isCollapsible", "isCollapsed", "isActive"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
79
76
  }
80
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiButtonsComponent, decorators: [{
81
78
  type: Component,
@@ -85,8 +82,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
85
82
  args: ['class']
86
83
  }], localMenuLabel: [{
87
84
  type: Input
88
- }], bookmarked: [{
89
- type: Output
90
85
  }], bookmark: [{
91
86
  type: Output
92
87
  }], customActionsContent: [{
@@ -133,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
133
128
  exports: [EuiButtonsComponent, EuiButtonsActionsContentTagDirective, EuiButtonsLocalMenuContentTagDirective],
134
129
  }]
135
130
  }] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWJ1dHRvbnMvZXVpLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWJ1dHRvbnMvZXVpLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUVWLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBQ2xELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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LEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDO29CQUMxSCxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxvQ0FBb0MsRUFBRSxzQ0FBc0MsQ0FBQztvQkFDakgsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsb0NBQW9DLEVBQUUsc0NBQXNDLENBQUM7aUJBQy9HIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBRdWVyeUxpc3QsXG4gICAgZm9yd2FyZFJlZixcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgRXVpQXBwU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcbmltcG9ydCB7IEV1aUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktYnV0dG9uJztcbmltcG9ydCB7IEV1aURyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1kcm9wZG93bic7XG5pbXBvcnQgeyBFdWlMaXN0TW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1saXN0JztcbmltcG9ydCB7IEV1aUljb25Nb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWljb24nO1xuaW1wb3J0IHsgRXVpTGFiZWxNb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWxhYmVsJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktYnV0dG9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlCdXR0b25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZXVpLWJ1dHRvbnMnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQElucHV0KCkgbG9jYWxNZW51TGFiZWw6IHN0cmluZztcbiAgICAvKipAZGVwcmVjYXRlZCB3aWxsIGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0IGVVSSB2ZXJzaW9uIGJ5IGJvb2ttYXJrICovXG4gICAgQE91dHB1dCgpIGJvb2ttYXJrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBib29rbWFyazogRXZlbnRFbWl0dGVyPHtpc0Jvb2ttYXJrZWQ6IGJvb2xlYW47IHVybDogc3RyaW5nfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aUJ1dHRvbnNBY3Rpb25zQ29udGVudFRhZ0RpcmVjdGl2ZSksIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGN1c3RvbUFjdGlvbnNDb250ZW50OiBRdWVyeUxpc3Q8RXVpQnV0dG9uc0FjdGlvbnNDb250ZW50VGFnRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRUYWdEaXJlY3RpdmUpLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBjdXN0b21Mb2NhbE1lbnVDb250ZW50OiBRdWVyeUxpc3Q8RXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRUYWdEaXJlY3RpdmU+O1xuXG4gICAgcHVibGljIGN1cnJlbnRSb3V0ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzTG9jYWxNZW51KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTG9jYWxNZW51O1xuICAgIH1cbiAgICBzZXQgaGFzTG9jYWxNZW51KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzTG9jYWxNZW51ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzTG9jYWxNZW51ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNCb29rbWFya2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Jvb2ttYXJrYWJsZTtcbiAgICB9XG4gICAgc2V0IGlzQm9va21hcmthYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNCb29rbWFya2FibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0Jvb2ttYXJrYWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQm9va21hcmtlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQm9va21hcmtlZDtcbiAgICB9XG4gICAgc2V0IGlzQm9va21hcmtlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQm9va21hcmtlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQm9va21hcmtlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBhc1NlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGUgPSB0aGlzLl9nZXRDdXJyZW50VXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Um91dGUgPSB0aGlzLl9nZXRDdXJyZW50VXJsKGV2ZW50LnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmUyZUF0dHIpIHtcbiAgICAgICAgICAgIHRoaXMuZTJlQXR0ciA9ICdldWktYnV0dG9ucyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Cb29rbWFya1RvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Jvb2ttYXJrZWQgPSAhdGhpcy5pc0Jvb2ttYXJrZWQ7XG4gICAgICAgIHRoaXMuYm9va21hcmtlZC5lbWl0KHsgaXNCb29rbWFya2VkOiB0aGlzLmlzQm9va21hcmtlZCwgdXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9KTtcbiAgICAgICAgdGhpcy5ib29rbWFyay5lbWl0KHsgaXNCb29rbWFya2VkOiB0aGlzLmlzQm9va21hcmtlZCwgdXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QcmludCgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnByaW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFVybChjdXJyZW50Um91dGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgY3VycmVudFJvdXRlO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aUJ1dHRvbnNBY3Rpb25zQ29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlCdXR0b25zQWN0aW9uc0NvbnRlbnRUYWdEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRUYWdEaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgKi9cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEV1aUJ1dHRvbk1vZHVsZSwgRXVpRHJvcGRvd25Nb2R1bGUsIEV1aUljb25Nb2R1bGUsIEV1aUxhYmVsTW9kdWxlLCBFdWlMaXN0TW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtFdWlCdXR0b25zQ29tcG9uZW50LCBFdWlCdXR0b25zQWN0aW9uc0NvbnRlbnRUYWdEaXJlY3RpdmUsIEV1aUJ1dHRvbnNMb2NhbE1lbnVDb250ZW50VGFnRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbRXVpQnV0dG9uc0NvbXBvbmVudCwgRXVpQnV0dG9uc0FjdGlvbnNDb250ZW50VGFnRGlyZWN0aXZlLCBFdWlCdXR0b25zTG9jYWxNZW51Q29udGVudFRhZ0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aUJ1dHRvbnNNb2R1bGUge31cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1idXR0b25zLXdyYXBwZXJcIlxuICAgIFtjbGFzcy5ldWktYnV0dG9ucy13cmFwcGVyLS1tb2JpbGVdPVwiKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2FjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDwhLS0gQUNUSU9OIEJVVFRPTlMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNCdXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQk9PS01BUksgQlVUVE9OIC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImlzQm9va21hcmthYmxlICYmICEoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpT3V0bGluZVxuICAgICAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICBpc0Jvb2ttYXJrZWQgPyAoJ2V1aS5wYWdlSGVhZGVyLlJFTU9WRS1CT09LTUFSSy50b29sdGlwJyB8IHRyYW5zbGF0ZSkgOiAoJ2V1aS5wYWdlSGVhZGVyLkFERC1CT09LTUFSSy50b29sdGlwJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGlzQm9va21hcmtlZCA/ICgnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLLnRvb2x0aXAnIHwgdHJhbnNsYXRlKSA6ICgnZXVpLnBhZ2VIZWFkZXIuQURELUJPT0tNQVJLLnRvb2x0aXAnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJvb2ttYXJrVG9nZ2xlKClcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIiBpY29uPVwiZXVpLWJvb2ttYXJrXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiIWlzQm9va21hcmtlZFwiIGljb249XCJldWktYm9va21hcmstb3V0bGluZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIj57eyAnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQm9va21hcmtlZFwiPnt7ICdldWkucGFnZUhlYWRlci5BREQtQk9PS01BUksnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIExPQ0FMIE1FTlUgV0hFTiBJTiBNT0JJTEUvVEFCTEVUIE1PREUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzTG9jYWxNZW51IHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnVcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS1idXR0b25zX19sb2NhbC1tZW51LS1tb2JpbGVdPVwiKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXRcIlxuICAgICAgICAgICAgZXVpU2l6ZVM+XG4gICAgICAgICAgICA8ZXVpLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImxvY2FsTWVudUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUJhc2ljQnV0dG9uXT1cIiFsb2NhbE1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlSb3VuZGVkXT1cIiFsb2NhbE1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlJY29uQnV0dG9uXT1cIiFsb2NhbE1lbnVMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvY2FsTWVudUxhYmVsXCIgZXVpTGFiZWw+e3sgbG9jYWxNZW51TGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxldWktZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gYnV0dG9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21BY3Rpb25zQ29udGVudCAmJiAoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY3Rpb25zQnV0dG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIExvY2FsIG1lbnUgaXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNMb2NhbE1lbnUgJiYgY3VzdG9tTG9jYWxNZW51Q29udGVudCAmJiBjdXN0b21Mb2NhbE1lbnVDb250ZW50Lmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvY2FsTWVudVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEV4dHJhIG1lbnUgaXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBldWlMaXN0IGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnUtZXh0cmFzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Jvb2ttYXJrYWJsZSAmJiAoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlMaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCb29rbWFya2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICgnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLLVRPT0xUSVAnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2V1aS5wYWdlSGVhZGVyLkFERC1CT09LTUFSSy1UT09MVElQJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQm9va21hcmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoJ2V1aS5wYWdlSGVhZGVyLlJFTU9WRS1CT09LTUFSSy1UT09MVElQJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdldWkucGFnZUhlYWRlci5BREQtQk9PS01BUkstVE9PTFRJUCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Cb29rbWFya1RvZ2dsZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cImlzQm9va21hcmtlZFwiIGljb249XCJldWktYm9va21hcmtcIiBmaWxsQ29sb3I9XCJpbmZvLTEwMFwiIHNpemU9XCJzXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cIiFpc0Jvb2ttYXJrZWRcIiBpY29uPVwiZXVpLWJvb2ttYXJrLW91dGxpbmVcIiBmaWxsQ29sb3I9XCJpbmZvLTEwMFwiIHNpemU9XCJzXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIiBldWlMYWJlbD57eyAnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0Jvb2ttYXJrZWRcIiBldWlMYWJlbD57eyAnZXVpLnBhZ2VIZWFkZXIuQURELUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9ldWktZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgICAgIDwvZXVpLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FjdGlvbnNCdXR0b25zPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJldWktYnV0dG9uc19fYWN0aW9ucy1jb250ZW50XCJcbiAgICAgICAgW2NsYXNzLmV1aS1idXR0b25zX19hY3Rpb25zLWNvbnRlbnQtLW1vYmlsZV09XCJcbiAgICAgICAgICAgIChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0XG4gICAgICAgIFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlCdXR0b25zQWN0aW9uc0NvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvY2FsTWVudT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnUtY29udGVudFwiXG4gICAgICAgIFtjbGFzcy5ldWktYnV0dG9uc19fbG9jYWwtbWVudS1jb250ZW50LS1tb2JpbGVdPVwiXG4gICAgICAgICAgICAoYXNTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc01vYmlsZSB8fCAoYXNTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc1RhYmxldFxuICAgICAgICBcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWJ1dHRvbnMvZXVpLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWJ1dHRvbnMvZXVpLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUVWLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7O0FBUzVFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBQ2xELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgQ29udGVudENoaWxkLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBFdWlBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgRXVpQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1idXR0b24nO1xuaW1wb3J0IHsgRXVpRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWRyb3Bkb3duJztcbmltcG9ydCB7IEV1aUxpc3RNb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWxpc3QnO1xuaW1wb3J0IHsgRXVpSWNvbk1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaWNvbic7XG5pbXBvcnQgeyBFdWlMYWJlbE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktbGFiZWwnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1idXR0b25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUJ1dHRvbnNDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktYnV0dG9ucycpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBsb2NhbE1lbnVMYWJlbDogc3RyaW5nO1xuICAgIEBPdXRwdXQoKSBib29rbWFyazogRXZlbnRFbWl0dGVyPHtpc0Jvb2ttYXJrZWQ6IGJvb2xlYW47IHVybDogc3RyaW5nfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpQnV0dG9uc0FjdGlvbnNDb250ZW50VGFnRGlyZWN0aXZlKSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY3VzdG9tQWN0aW9uc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlCdXR0b25zQWN0aW9uc0NvbnRlbnRUYWdEaXJlY3RpdmU+O1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlCdXR0b25zTG9jYWxNZW51Q29udGVudFRhZ0RpcmVjdGl2ZSksIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGN1c3RvbUxvY2FsTWVudUNvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlCdXR0b25zTG9jYWxNZW51Q29udGVudFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBwdWJsaWMgY3VycmVudFJvdXRlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNMb2NhbE1lbnUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNMb2NhbE1lbnU7XG4gICAgfVxuICAgIHNldCBoYXNMb2NhbE1lbnUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNMb2NhbE1lbnUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNMb2NhbE1lbnUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0Jvb2ttYXJrYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQm9va21hcmthYmxlO1xuICAgIH1cbiAgICBzZXQgaXNCb29rbWFya2FibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0Jvb2ttYXJrYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQm9va21hcmthYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNCb29rbWFya2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNCb29rbWFya2VkO1xuICAgIH1cbiAgICBzZXQgaXNCb29rbWFya2VkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNCb29rbWFya2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNCb29rbWFya2VkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IHRoaXMuX2dldEN1cnJlbnRVcmwodGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IHRoaXMuX2dldEN1cnJlbnRVcmwoZXZlbnQudXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZTJlQXR0cikge1xuICAgICAgICAgICAgdGhpcy5lMmVBdHRyID0gJ2V1aS1idXR0b25zJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkJvb2ttYXJrVG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQm9va21hcmtlZCA9ICF0aGlzLmlzQm9va21hcmtlZDtcbiAgICAgICAgdGhpcy5ib29rbWFyay5lbWl0KHsgaXNCb29rbWFya2VkOiB0aGlzLmlzQm9va21hcmtlZCwgdXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QcmludCgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnByaW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFVybChjdXJyZW50Um91dGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgY3VycmVudFJvdXRlO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aUJ1dHRvbnNBY3Rpb25zQ29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlCdXR0b25zQWN0aW9uc0NvbnRlbnRUYWdEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRUYWdEaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgKi9cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEV1aUJ1dHRvbk1vZHVsZSwgRXVpRHJvcGRvd25Nb2R1bGUsIEV1aUljb25Nb2R1bGUsIEV1aUxhYmVsTW9kdWxlLCBFdWlMaXN0TW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtFdWlCdXR0b25zQ29tcG9uZW50LCBFdWlCdXR0b25zQWN0aW9uc0NvbnRlbnRUYWdEaXJlY3RpdmUsIEV1aUJ1dHRvbnNMb2NhbE1lbnVDb250ZW50VGFnRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbRXVpQnV0dG9uc0NvbXBvbmVudCwgRXVpQnV0dG9uc0FjdGlvbnNDb250ZW50VGFnRGlyZWN0aXZlLCBFdWlCdXR0b25zTG9jYWxNZW51Q29udGVudFRhZ0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aUJ1dHRvbnNNb2R1bGUge31cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1idXR0b25zLXdyYXBwZXJcIlxuICAgIFtjbGFzcy5ldWktYnV0dG9ucy13cmFwcGVyLS1tb2JpbGVdPVwiKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2FjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDwhLS0gQUNUSU9OIEJVVFRPTlMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNCdXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQk9PS01BUksgQlVUVE9OIC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImlzQm9va21hcmthYmxlICYmICEoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpT3V0bGluZVxuICAgICAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICBpc0Jvb2ttYXJrZWQgPyAoJ2V1aS5wYWdlSGVhZGVyLlJFTU9WRS1CT09LTUFSSy50b29sdGlwJyB8IHRyYW5zbGF0ZSkgOiAoJ2V1aS5wYWdlSGVhZGVyLkFERC1CT09LTUFSSy50b29sdGlwJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGlzQm9va21hcmtlZCA/ICgnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLLnRvb2x0aXAnIHwgdHJhbnNsYXRlKSA6ICgnZXVpLnBhZ2VIZWFkZXIuQURELUJPT0tNQVJLLnRvb2x0aXAnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJvb2ttYXJrVG9nZ2xlKClcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIiBpY29uPVwiZXVpLWJvb2ttYXJrXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiIWlzQm9va21hcmtlZFwiIGljb249XCJldWktYm9va21hcmstb3V0bGluZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIj57eyAnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQm9va21hcmtlZFwiPnt7ICdldWkucGFnZUhlYWRlci5BREQtQk9PS01BUksnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIExPQ0FMIE1FTlUgV0hFTiBJTiBNT0JJTEUvVEFCTEVUIE1PREUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzTG9jYWxNZW51IHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnVcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS1idXR0b25zX19sb2NhbC1tZW51LS1tb2JpbGVdPVwiKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXRcIlxuICAgICAgICAgICAgZXVpU2l6ZVM+XG4gICAgICAgICAgICA8ZXVpLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImxvY2FsTWVudUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUJhc2ljQnV0dG9uXT1cIiFsb2NhbE1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlSb3VuZGVkXT1cIiFsb2NhbE1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlJY29uQnV0dG9uXT1cIiFsb2NhbE1lbnVMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvY2FsTWVudUxhYmVsXCIgZXVpTGFiZWw+e3sgbG9jYWxNZW51TGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxldWktZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gYnV0dG9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21BY3Rpb25zQ29udGVudCAmJiAoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY3Rpb25zQnV0dG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIExvY2FsIG1lbnUgaXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNMb2NhbE1lbnUgJiYgY3VzdG9tTG9jYWxNZW51Q29udGVudCAmJiBjdXN0b21Mb2NhbE1lbnVDb250ZW50Lmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvY2FsTWVudVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEV4dHJhIG1lbnUgaXRlbXMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBldWlMaXN0IGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnUtZXh0cmFzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Jvb2ttYXJrYWJsZSAmJiAoKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGUgfHwgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNUYWJsZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlMaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCb29rbWFya2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICgnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLLVRPT0xUSVAnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2V1aS5wYWdlSGVhZGVyLkFERC1CT09LTUFSSy1UT09MVElQJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQm9va21hcmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoJ2V1aS5wYWdlSGVhZGVyLlJFTU9WRS1CT09LTUFSSy1UT09MVElQJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdldWkucGFnZUhlYWRlci5BREQtQk9PS01BUkstVE9PTFRJUCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Cb29rbWFya1RvZ2dsZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cImlzQm9va21hcmtlZFwiIGljb249XCJldWktYm9va21hcmtcIiBmaWxsQ29sb3I9XCJpbmZvLTEwMFwiIHNpemU9XCJzXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cIiFpc0Jvb2ttYXJrZWRcIiBpY29uPVwiZXVpLWJvb2ttYXJrLW91dGxpbmVcIiBmaWxsQ29sb3I9XCJpbmZvLTEwMFwiIHNpemU9XCJzXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0Jvb2ttYXJrZWRcIiBldWlMYWJlbD57eyAnZXVpLnBhZ2VIZWFkZXIuUkVNT1ZFLUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0Jvb2ttYXJrZWRcIiBldWlMYWJlbD57eyAnZXVpLnBhZ2VIZWFkZXIuQURELUJPT0tNQVJLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9ldWktZHJvcGRvd24tY29udGVudD5cbiAgICAgICAgICAgIDwvZXVpLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FjdGlvbnNCdXR0b25zPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJldWktYnV0dG9uc19fYWN0aW9ucy1jb250ZW50XCJcbiAgICAgICAgW2NsYXNzLmV1aS1idXR0b25zX19hY3Rpb25zLWNvbnRlbnQtLW1vYmlsZV09XCJcbiAgICAgICAgICAgIChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlIHx8IChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzVGFibGV0XG4gICAgICAgIFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlCdXR0b25zQWN0aW9uc0NvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvY2FsTWVudT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZXVpLWJ1dHRvbnNfX2xvY2FsLW1lbnUtY29udGVudFwiXG4gICAgICAgIFtjbGFzcy5ldWktYnV0dG9uc19fbG9jYWwtbWVudS1jb250ZW50LS1tb2JpbGVdPVwiXG4gICAgICAgICAgICAoYXNTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc01vYmlsZSB8fCAoYXNTZXJ2aWNlLmJyZWFrcG9pbnRzJCB8IGFzeW5jKS5pc1RhYmxldFxuICAgICAgICBcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpQnV0dG9uc0xvY2FsTWVudUNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -10,7 +10,7 @@ export class EuiCardFooterMenuContentComponent {
10
10
  this.string = 'eui-card-footer-menu-content';
11
11
  }
12
12
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiCardFooterMenuContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiCardFooterMenuContentComponent, selector: "eui-card-footer-menu-content", inputs: { tooltipText: "tooltipText" }, host: { properties: { "class": "this.string" } }, ngImport: i0, template: "<eui-dropdown>\n <button\n euiButton\n euiRounded\n euiIconButton\n euiBasicButton\n euiSecondary\n type=\"button\"\n euiTooltip=\"{{ tooltipText }}\"\n [attr.aria-label]=\"tooltipText\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-content></ng-content>\n </eui-dropdown-content>\n</eui-dropdown>\n", dependencies: [{ kind: "component", type: i1.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i3.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i4.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "content", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiCardFooterMenuContentComponent, selector: "eui-card-footer-menu-content", inputs: { tooltipText: "tooltipText" }, host: { properties: { "class": "this.string" } }, ngImport: i0, template: "<eui-dropdown>\n <button\n euiButton\n euiRounded\n euiIconButton\n euiBasicButton\n euiSecondary\n type=\"button\"\n euiTooltip=\"{{ tooltipText }}\"\n [attr.aria-label]=\"tooltipText\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-content></ng-content>\n </eui-dropdown-content>\n</eui-dropdown>\n", dependencies: [{ kind: "component", type: i1.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i3.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i4.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiCardFooterMenuContentComponent, decorators: [{
16
16
  type: Component,
@@ -83,12 +83,6 @@ export class EuiChipListComponent extends BaseDirective {
83
83
  this.dropListOrientation = 'horizontal';
84
84
  this.chipsInit = new EventEmitter();
85
85
  this.chipRemove = new EventEmitter();
86
- /**@deprecated it will be replaced in the next eUI version by chipDragStart*/
87
- this.chipDragStarted = new EventEmitter();
88
- /**@deprecated it will be replaced in the next eUI version by chipDragRelease*/
89
- this.chipDragReleased = new EventEmitter();
90
- /**@deprecated it will be replaced in the next eUI version by chipDrop*/
91
- this.chipDropped = new EventEmitter();
92
86
  this.chipDragStart = new EventEmitter();
93
87
  this.chipDragRelease = new EventEmitter();
94
88
  this.chipDrop = new EventEmitter();
@@ -192,12 +186,6 @@ export class EuiChipListComponent extends BaseDirective {
192
186
  moveItemInArray(this.chips, event.item.data.index, event.container.data.index);
193
187
  }
194
188
  onDropGrid(e) {
195
- this.chipDropped.emit(new EuiChipDragDrop({
196
- type: 'dropped',
197
- sourceName: this.dragAndDropSourceName,
198
- chip: e.item.data.chip,
199
- chips: this.chips,
200
- }));
201
189
  this.chipDrop.emit(new EuiChipDragDrop({
202
190
  type: 'dropped',
203
191
  sourceName: this.dragAndDropSourceName,
@@ -213,12 +201,6 @@ export class EuiChipListComponent extends BaseDirective {
213
201
  transferArrayItem(e.previousContainer.data['chips'], e.container.data['chips'], e.previousContainer.data['chips'].indexOf(e.item.data), e.currentIndex);
214
202
  this.chips = e.container.data['chips'].map((item) => item);
215
203
  }
216
- this.chipDropped.emit(new EuiChipDragDrop({
217
- type: 'dropped',
218
- sourceName: this.dragAndDropSourceName,
219
- chip: e.item.data,
220
- chips: e.container.data['chips'],
221
- }));
222
204
  this.chipDrop.emit(new EuiChipDragDrop({
223
205
  type: 'dropped',
224
206
  sourceName: this.dragAndDropSourceName,
@@ -227,12 +209,6 @@ export class EuiChipListComponent extends BaseDirective {
227
209
  }));
228
210
  }
229
211
  onDragStarted(event) {
230
- this.chipDragStarted.emit(new EuiChipDragDrop({
231
- type: 'started',
232
- sourceName: this.dragAndDropSourceName,
233
- chip: event['source'].data instanceof EuiChipComponent ? event['source'].data : event['source'].data.chip,
234
- chips: this.chips,
235
- }));
236
212
  this.chipDragStart.emit(new EuiChipDragDrop({
237
213
  type: 'started',
238
214
  sourceName: this.dragAndDropSourceName,
@@ -241,12 +217,6 @@ export class EuiChipListComponent extends BaseDirective {
241
217
  }));
242
218
  }
243
219
  onDragReleased(event) {
244
- this.chipDragReleased.emit(new EuiChipDragDrop({
245
- type: 'released',
246
- sourceName: this.dragAndDropSourceName,
247
- chip: event['source'].data instanceof EuiChipComponent ? event['source'].data : event['source'].data.chip,
248
- chips: this.chips,
249
- }));
250
220
  this.chipDragRelease.emit(new EuiChipDragDrop({
251
221
  type: 'released',
252
222
  sourceName: this.dragAndDropSourceName,
@@ -286,7 +256,7 @@ export class EuiChipListComponent extends BaseDirective {
286
256
  return tab;
287
257
  }
288
258
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiChipListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EuiChipListDragService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
289
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: "isSquared", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", isChipsSorted: "isChipsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isGrid: "isGrid" }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStarted: "chipDragStarted", chipDragReleased: "chipDragReleased", chipDropped: "chipDropped", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses", "attr.role": "this.attr_Role" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chips }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'option'\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <!-- v15 OK -->\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'option'\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <!-- v15 OK -->\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "content", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
259
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: "isSquared", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", isChipsSorted: "isChipsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isGrid: "isGrid" }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses", "attr.role": "this.attr_Role" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chips }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'option'\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <!-- v15 OK -->\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'option'\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <!-- v15 OK -->\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
290
260
  }
291
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiChipListComponent, decorators: [{
292
262
  type: Component,
@@ -314,12 +284,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
314
284
  type: Output
315
285
  }], chipRemove: [{
316
286
  type: Output
317
- }], chipDragStarted: [{
318
- type: Output
319
- }], chipDragReleased: [{
320
- type: Output
321
- }], chipDropped: [{
322
- type: Output
323
287
  }], chipDragStart: [{
324
288
  type: Output
325
289
  }], chipDragRelease: [{
@@ -372,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ng
372
336
  type: Directive,
373
337
  args: [{ selector: 'euiChipListAppendContent' }]
374
338
  }] });
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUlmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUE2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUgsZUFBZSxFQUNmLFdBQVcsRUFDWCxpQkFBaUIsR0FLcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUF1Qm5ELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFZRCxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQW1CO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUdELElBQ0ksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBR0QsSUFDSSxvQkFBb0I7UUFDcEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksb0JBQW9CLENBQUMsS0FBa0I7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFHRCxJQUNJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxLQUFrQjtRQUMxQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUdELElBQ0ksdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLHVCQUF1QixDQUFDLEtBQW1CO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBR0QsSUFDSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFHRCxJQUNJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxLQUFtQjtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUdELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBbUI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFDWSxFQUFxQixFQUNyQixzQkFBOEMsRUFDOUMsWUFBMEI7UUFFbEMsS0FBSyxFQUFFLENBQUM7UUFKQSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBakg3Qix3QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDbkMsd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQ25DLG1CQUFjLEdBQW1CLEtBQUssQ0FBQztRQUV2QywyQkFBc0IsR0FBYSxFQUFFLENBQUM7UUFDTixjQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVELHdCQUFtQixHQUE4QixZQUFZLENBQUM7UUFFN0QsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDNUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUE0RSxDQUFDO1FBQ3BILDhFQUE4RTtRQUNwRSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ2hFLGdGQUFnRjtRQUN0RSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRSx5RUFBeUU7UUFDL0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ3BELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDdEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQy9DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU01QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBR3pDLHFCQUFnQixHQUFrQixFQUFFLENBQUM7UUFDckMsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQWN6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBU25CLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQVMxQiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFTN0IsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBU2hDLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQVNqQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVN2Qix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFTNUIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFRNUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFnQjtRQUN4QixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEMsR0FBRyxJQUFJO1lBQ1AsT0FBTyxFQUFFLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDNUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNqRjtRQUVELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDakcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hGLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXJILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUNqRTtnQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQzNCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ2pFLENBQUM7SUFFTSxjQUFjLENBQUMsT0FBWTtRQUM5QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDcEksQ0FBQztJQUVNLFlBQVksQ0FBQyxPQUFZO1FBQzVCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzNGLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBWTtRQUNoQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUErRjtRQUMzRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckcsTUFBTSxXQUFXLEdBQUcsT0FBMEMsQ0FBQztRQUMvRCxJQUFJLEtBQUssR0FBRyxXQUFXLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxRyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM1RDtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUM3RixPQUFPLEVBQUUsV0FBVztTQUN2QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWEsRUFBRSxPQUFZO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQW1CO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3JFLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLFVBQVUsQ0FBQyxDQUE0QztRQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDakIsSUFBSSxlQUFlLENBQUM7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxJQUFJLGVBQWUsQ0FBQztZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3RDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSxJQUFJLENBQUMsQ0FBZ0M7UUFDeEMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRTtZQUNyQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDL0U7YUFBTTtZQUNILGlCQUFpQixDQUNiLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUN6QixDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN0RCxDQUFDLENBQUMsWUFBWSxDQUNqQixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ2pCLElBQUksZUFBZSxDQUFDO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7WUFDdEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ25DLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsSUFBSSxlQUFlLENBQUM7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ2pCLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbkMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNyQixJQUFJLGVBQWUsQ0FBQztZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekcsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLElBQUksZUFBZSxDQUFDO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7WUFDdEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLFlBQVksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN6RyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQXFCO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3RCLElBQUksZUFBZSxDQUFDO1lBQ2hCLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekcsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3JCLElBQUksZUFBZSxDQUFDO1lBQ2hCLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekcsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sVUFBVTtRQUNkLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVEsRUFBRSxTQUFpQjtRQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFdkcsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFO2dCQUNyQixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDYjtnQkFDRCxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLENBQUM7aUJBQ1o7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7YUFDWjtpQkFBTTtnQkFDSCxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDYjtnQkFDRCxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLENBQUM7aUJBQ1o7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7YUFDWjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO3NJQTNWUSxvQkFBb0I7MEhBQXBCLG9CQUFvQixpcENBaUNLLGdCQUFnQiwrSEFDWCxXQUFXLCtIQUNILFdBQVcseUZBQ3JCLFVBQVUseUVDdEZuRCw2blRBd0tBOztnR0R0SGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUVJLGtEQUFrRCxtQkFFM0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtzSkFHNUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNtQyxTQUFTO3NCQUFqRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDOUIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBR0gsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBSU0sU0FBUztzQkFBbEMsV0FBVzt1QkFBQyxXQUFXO2dCQU02QixlQUFlO3NCQUFuRSxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDRyxnQkFBZ0I7c0JBQXJFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNVLHdCQUF3QjtzQkFBckYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ1QsWUFBWTtzQkFBOUQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUc3QyxTQUFTO3NCQURaLEtBQUs7Z0JBVUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVVGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFVRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBVUYsdUJBQXVCO3NCQUQxQixLQUFLO2dCQVVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSzs7QUF5UFYsb0JBQW9CO0FBRXBCLE1BQU0sT0FBTyxpQ0FBaUM7c0lBQWpDLGlDQUFpQzswSEFBakMsaUNBQWlDOztnR0FBakMsaUNBQWlDO2tCQUQ3QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgVmlld0NoaWxkLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBPbkluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBEaXJlY3RpdmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5LCBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBDZGtEcmFnRHJvcCxcbiAgICBtb3ZlSXRlbUluQXJyYXksXG4gICAgQ2RrRHJvcExpc3QsXG4gICAgdHJhbnNmZXJBcnJheUl0ZW0sXG4gICAgQ2RrRHJhZyxcbiAgICBDZGtEcmFnU3RhcnQsXG4gICAgQ2RrRHJhZ0VudGVyLFxuICAgIENka0RyYWdSZWxlYXNlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgRXVpQ2hpcENvbXBvbmVudCwgRXVpQ2hpcCwgRXVpQ2hpcFRvb2x0aXAgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWNoaXAnO1xuXG5pbXBvcnQgeyBFdWlDaGlwRHJhZ0Ryb3AgfSBmcm9tICcuL21vZGVscy9ldWktY2hpcC1kcmFnLWRyb3AubW9kZWwnO1xuaW1wb3J0IHsgRXVpQ2hpcExpc3REcmFnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLWNoaXAtbGlzdC1kcmFnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc2VsZWN0b3I6ICdldWktY2hpcC1saXN0LCBkaXZbZXVpQ2hpcExpc3RdLCB1bFtldWlDaGlwTGlzdF0nLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUNoaXBMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNoaXBzOiBhbnlbXTtcbiAgICBASW5wdXQoKSB0b2dnbGVMaW5rTW9yZUxhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtMZXNzTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgY2hpcHNTb3J0T3JkZXI6ICdBU0MnIHwgJ0RFU0MnID0gJ0FTQyc7XG4gICAgQElucHV0KCkgZHJhZ0FuZERyb3BTb3VyY2VOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZHJhZ0FuZERyb3BDb25uZWN0ZWRUbzogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpIGFyaWFMYWJlbCA9ICdlVUkgQ2hpcCBMaXN0JztcbiAgICBASW5wdXQoKSBkcm9wTGlzdE9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXG4gICAgQE91dHB1dCgpIGNoaXBzSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2RrRHJvcExpc3Q+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY2hpcHM6IEV1aUNoaXBbXTsgcmVtb3ZlZDogRXVpQ2hpcCB8IHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH0gfT4oKTtcbiAgICAvKipAZGVwcmVjYXRlZCBpdCB3aWxsIGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0IGVVSSB2ZXJzaW9uIGJ5ICBjaGlwRHJhZ1N0YXJ0Ki9cbiAgICBAT3V0cHV0KCkgY2hpcERyYWdTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgLyoqQGRlcHJlY2F0ZWQgaXQgd2lsbCBiZSByZXBsYWNlZCBpbiB0aGUgbmV4dCBlVUkgdmVyc2lvbiBieSAgY2hpcERyYWdSZWxlYXNlKi9cbiAgICBAT3V0cHV0KCkgY2hpcERyYWdSZWxlYXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIC8qKkBkZXByZWNhdGVkIGl0IHdpbGwgYmUgcmVwbGFjZWQgaW4gdGhlIG5leHQgZVVJIHZlcnNpb24gYnkgIGNoaXBEcm9wKi9cbiAgICBAT3V0cHV0KCkgY2hpcERyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJhZ1JlbGVhc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcGxpc3RGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZXVpLWNoaXAtbGlzdCcpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIGF0dHJfUm9sZSA9ICdsaXN0Ym94JztcblxuICAgIHB1YmxpYyBkcm9wcGFibGVBcmVhOiAoQ2RrRHJvcExpc3QgfCBzdHJpbmcpW107XG4gICAgcHVibGljIGNvbm5lY3RDb21wb25lbnQ6IENka0Ryb3BMaXN0W10gPSBbXTtcbiAgICBwdWJsaWMgZTJlQXR0ciA9ICdldWktY2hpcC1saXN0JztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBFdWlDaGlwQ29tcG9uZW50KSkgZXVpQ2hpcHNDb250ZW50OiBRdWVyeUxpc3Q8RXVpQ2hpcENvbXBvbmVudD47XG4gICAgQFZpZXdDaGlsZCgnY2hpcExpc3REcm9wTGlzdCcsIHsgcmVhZDogQ2RrRHJvcExpc3QgfSkgY2hpcExpc3REcm9wTGlzdDogQ2RrRHJvcExpc3Q7XG4gICAgQFZpZXdDaGlsZCgnY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zJywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KSBjaGlwTGlzdERyYWdBbmREcm9wSXRlbXM6IENka0Ryb3BMaXN0O1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2V1aUNoaXBJdGVtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGV1aUNoaXBJdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTcXVhcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTcXVhcmVkO1xuICAgIH1cbiAgICBzZXQgaXNTcXVhcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTcXVhcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTcXVhcmVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NoaXBzUmVtb3ZhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDaGlwc1JlbW92YWJsZTtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNSZW1vdmFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NoaXBzUmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDaGlwc1JlbW92YWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgbWF4VmlzaWJsZUNoaXBzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFZpc2libGVDaGlwc0NvdW50O1xuICAgIH1cbiAgICBzZXQgbWF4VmlzaWJsZUNoaXBzQ291bnQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIHRoaXMuX21heFZpc2libGVDaGlwc0NvdW50ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9tYXhWaXNpYmxlQ2hpcHNDb3VudCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpcHNMYWJlbFRydW5jYXRlQ291bnQ7XG4gICAgfVxuICAgIHNldCBjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoaXBzTGFiZWxUcnVuY2F0ZUNvdW50ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuICAgIHNldCBpc01heFZpc2libGVDaGlwc09wZW5lZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNTb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NoaXBzU29ydGVkO1xuICAgIH1cbiAgICBzZXQgaXNDaGlwc1NvcnRlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNTb3J0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoaXBzU29ydGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NoaXBzRHJhZ0FuZERyb3AoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NoaXBzRHJhZ0FuZERyb3A7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzRHJhZ0FuZERyb3AodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NoaXBzRHJhZ0FuZERyb3AgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoaXBzRHJhZ0FuZERyb3AgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzR3JpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzR3JpZDtcbiAgICB9XG4gICAgc2V0IGlzR3JpZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzR3JpZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzR3JpZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZXVpQ2hpcExpc3REcmFnU2VydmljZTogRXVpQ2hpcExpc3REcmFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjLmNoaXBzICYmIHRoaXMuaXNDaGlwc1NvcnRlZCkge1xuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMub3JkZXJJdGVtcyh0aGlzLmNoaXBzLCB0aGlzLmNoaXBzU29ydE9yZGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5jaGlwcz8ubWFwKChjaGlwKSA9PiAoe1xuICAgICAgICAgICAgLi4uY2hpcCxcbiAgICAgICAgICAgIHRvb2x0aXA6IG5ldyBFdWlDaGlwVG9vbHRpcChjaGlwLnRvb2x0aXApLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBzSW5pdC5lbWl0KHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDaGlwc1NvcnRlZCAmJiB0aGlzLmNoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2Uuc2V0Q29tcG9uZW50Q29ubmVjdG9yKHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXREcm9wcGFibGVBcmVhKHRoaXMuY2hpcExpc3REcm9wTGlzdCwgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUby5mb3JFYWNoKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RDb21wb25lbnQgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuY29tcG9uZW50Q29ubmVjdG9yW2Nvbm5lY3RUb107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wcGFibGVBcmVhID0gdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmRyb3BwYWJsZUFyZWFbdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWVdO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3IpLm1hcCgoY29ubmVjdFRvKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuY29tcG9uZW50Q29ubmVjdG9yW2Nvbm5lY3RUb10ucHVzaCh0aGlzLmNoaXBMaXN0RHJhZ0FuZERyb3BJdGVtcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXVpQ2hpcHNDb250ZW50LmNoYW5nZXMucGlwZShzdGFydFdpdGgodHJ1ZSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubWFwKChjaGlwKSA9PiBPYmplY3QuYXNzaWduKGNoaXAsIHsgZXVpSW50ZXJuYWxJZDogdGhpcy5nZW5lcmF0ZUlkKCkgfSkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDaGlwc1NvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5yZXNldENvbm5lY3RvcigpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlVGFncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc01heFZpc2libGVDaGlwc09wZW5lZCA9ICF0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlwQ29udGVudChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgOiBldWlDaGlwLmxhYmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlwTGFiZWwoZXVpQ2hpcDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGV1aUNoaXAuY2hpcExhYmVsID8gZXVpQ2hpcC5jaGlwTGFiZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaXBJY29uQmVmb3JlKGV1aUNoaXA6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5pY29uQmVmb3JlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlwSWNvbkFmdGVyKGV1aUNoaXA6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5pY29uQWZ0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlKHJlbW92ZWQ6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwIHwgeyBjaGlwOiBFdWlDaGlwQ29tcG9uZW50IHwgRXVpQ2hpcDsgZXZlbnQ/OiBFdmVudCB9IHwgYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoaXBzID0gdGhpcy5ldWlDaGlwc0NvbnRlbnQudG9BcnJheSgpLmxlbmd0aCA+IDAgPyB0aGlzLmNoaXBzLm1hcCgoYykgPT4gYy5kYXRhKSA6IHRoaXMuY2hpcHM7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRDaGlwID0gcmVtb3ZlZCBhcyB7IGNoaXA6IEV1aUNoaXA7IGV2ZW50OiBFdmVudCB9O1xuICAgICAgICBsZXQgaW5kZXggPSByZW1vdmVkQ2hpcCBpbnN0YW5jZW9mIEV1aUNoaXAgPyBjaGlwcy5pbmRleE9mKHJlbW92ZWRDaGlwKSA6IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXAuY2hpcCk7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSAmJiByZW1vdmVkLmlkKSB7XG4gICAgICAgICAgICBpbmRleCA9IGNoaXBzLm1hcCgoY2hpcCkgPT4gY2hpcC5pZCkuaW5kZXhPZihyZW1vdmVkLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hpcHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICB0aGlzLmNoaXBSZW1vdmUuZW1pdCh7XG4gICAgICAgICAgICBjaGlwczogdGhpcy5ldWlDaGlwc0NvbnRlbnQudG9BcnJheSgpLmxlbmd0aCA+IDAgPyB0aGlzLmNoaXBzLm1hcCgoYykgPT4gYy5kYXRhKSA6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICByZW1vdmVkOiByZW1vdmVkQ2hpcCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5ldWlJbnRlcm5hbElkID8gZXVpQ2hpcC5ldWlJbnRlcm5hbElkIDogZXVpQ2hpcC5pZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IENka0RyYWdFbnRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcm9wTGlzdCA9IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgcGhDb250YWluZXIgPSBkcm9wTGlzdC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBoRWxlbWVudCA9IHBoQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jZGstZHJhZy1wbGFjZWhvbGRlcicpO1xuICAgICAgICBwaENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShwaEVsZW1lbnQsIHBoQ29udGFpbmVyKTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY2hpcHMsIGV2ZW50Lml0ZW0uZGF0YS5pbmRleCwgZXZlbnQuY29udGFpbmVyLmRhdGEuaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyb3BHcmlkKGU6IENka0RyYWdEcm9wPHsgY2hpcDogYW55OyBpbmRleDogbnVtYmVyIH0+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyb3BwZWQuZW1pdChcbiAgICAgICAgICAgIG5ldyBFdWlDaGlwRHJhZ0Ryb3Aoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wcGVkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBlLml0ZW0uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jaGlwRHJvcC5lbWl0KFxuICAgICAgICAgICAgbmV3IEV1aUNoaXBEcmFnRHJvcCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Ryb3BwZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGUuaXRlbS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wKGU6IENka0RyYWdEcm9wPHsgY2hpcHM6IGFueVtdIH0+KTogdm9pZCB7XG4gICAgICAgIGlmIChlLnByZXZpb3VzQ29udGFpbmVyID09PSBlLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sIGUucHJldmlvdXNJbmRleCwgZS5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZS5wcmV2aW91c0NvbnRhaW5lci5kYXRhWydjaGlwcyddLFxuICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICAgICAgZS5wcmV2aW91c0NvbnRhaW5lci5kYXRhWydjaGlwcyddLmluZGV4T2YoZS5pdGVtLmRhdGEpLFxuICAgICAgICAgICAgICAgIGUuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hpcERyb3BwZWQuZW1pdChcbiAgICAgICAgICAgIG5ldyBFdWlDaGlwRHJhZ0Ryb3Aoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wcGVkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBlLml0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgICBjaGlwczogZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNoaXBEcm9wLmVtaXQoXG4gICAgICAgICAgICBuZXcgRXVpQ2hpcERyYWdEcm9wKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHJvcHBlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZS5pdGVtLmRhdGEsXG4gICAgICAgICAgICAgICAgY2hpcHM6IGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyYWdTdGFydGVkLmVtaXQoXG4gICAgICAgICAgICBuZXcgRXVpQ2hpcERyYWdEcm9wKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2hpcERyYWdTdGFydC5lbWl0KFxuICAgICAgICAgICAgbmV3IEV1aUNoaXBEcmFnRHJvcCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N0YXJ0ZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhIGluc3RhbmNlb2YgRXVpQ2hpcENvbXBvbmVudCA/IGV2ZW50Wydzb3VyY2UnXS5kYXRhIDogZXZlbnRbJ3NvdXJjZSddLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdSZWxlYXNlZChldmVudDogQ2RrRHJhZ1JlbGVhc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1JlbGVhc2VkLmVtaXQoXG4gICAgICAgICAgICBuZXcgRXVpQ2hpcERyYWdEcm9wKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVsZWFzZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhIGluc3RhbmNlb2YgRXVpQ2hpcENvbXBvbmVudCA/IGV2ZW50Wydzb3VyY2UnXS5kYXRhIDogZXZlbnRbJ3NvdXJjZSddLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNoaXBEcmFnUmVsZWFzZS5lbWl0KFxuICAgICAgICAgICAgbmV3IEV1aUNoaXBEcmFnRHJvcCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JlbGVhc2VkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBldmVudFsnc291cmNlJ10uZGF0YSBpbnN0YW5jZW9mIEV1aUNoaXBDb21wb25lbnQgPyBldmVudFsnc291cmNlJ10uZGF0YSA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBsaXN0Rm9jdXMuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9yZGVySXRlbXModGFiOiBhbnksIHNvcnRPcmRlcjogc3RyaW5nKTogYW55W10ge1xuICAgICAgICB0YWIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFPYmogPSBhLmNoaXBMYWJlbCA/IGEuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKSA6IGEubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGJPYmogPSBiLmNoaXBMYWJlbCA/IGIuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKSA6IGIubGFiZWwudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHNvcnRPcmRlciA9PT0gJ0FTQycpIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGFiO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlDaGlwTGlzdEFwcGVuZENvbnRlbnREaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxkaXYgKm5nSWY9XCIhaXNHcmlkXCIgY2xhc3M9XCJldWktY2hpcC1saXN0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAjY2hpcExpc3REcm9wTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJhZ0FuZERyb3BJdGVtc1xuICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdE9yaWVudGF0aW9uXT1cImRyb3BMaXN0T3JpZW50YXRpb25cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInsgY2hpcHMgfVwiXG4gICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcm9wcGFibGVBcmVhXCJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19saXN0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgI2V1aUNoaXBJdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgbWF4VmlzaWJsZUNoaXBzQ291bnQgPiBpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIW1heFZpc2libGVDaGlwc0NvdW50XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImNoaXAuZGF0YSA/IGNoaXAuZGF0YSA6IGNoaXBcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidvcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2hpcFJlbW92YWJsZV09XCJjaGlwLmlzQ2hpcFJlbW92YWJsZSB8fCAoaXNDaGlwc1JlbW92YWJsZSAmJiBjaGlwLmlzUmVtb3ZhYmxlKSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpT3V0bGluZV09XCJjaGlwLmV1aU91dGxpbmUgfHwgZXVpT3V0bGluZSB8fCBjaGlwLmlzT3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNpemVNXT1cImNoaXAuZXVpU2l6ZU0gfHwgZXVpU2l6ZU0gfHwgY2hpcC5zaXplQ2xhc3MgPT09ICdldWlTaXplTSdcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZUxdPVwiY2hpcC5ldWlTaXplTCB8fCBldWlTaXplTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemVMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplMlhMXT1cImNoaXAuZXVpU2l6ZTJYTCB8fCBldWlTaXplMlhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZTJYTCdcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTcXVhcmVkXT1cImNoaXAuaXNTcXVhcmVkIHx8IGlzU3F1YXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlQcmltYXJ5XT1cImNoaXAuZXVpUHJpbWFyeSB8fCBldWlQcmltYXJ5IHx8IGNoaXAudHlwZUNsYXNzID09PSAncHJpbWFyeScgfHwgIWNoaXAudHlwZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNlY29uZGFyeV09XCJjaGlwLmV1aVNlY29uZGFyeSB8fCBldWlTZWNvbmRhcnkgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cImNoaXAuZXVpU3VjY2VzcyB8fCBldWlTdWNjZXNzIHx8IGNoaXAudHlwZUNsYXNzID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpV2FybmluZ109XCJjaGlwLmV1aVdhcm5pbmcgfHwgZXVpV2FybmluZyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUFjY2VudF09XCJjaGlwLmV1aUFjY2VudCB8fCBldWlBY2NlbnQgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwiY2hpcC50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRBbGlnbm1lbnRdPVwiY2hpcC50b29sdGlwPy5jb250ZW50QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gdjE1IE9LIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiY2hpcC5pY29uU3ZnTmFtZVwiIFtpY29uXT1cImNoaXAuaWNvblN2Z05hbWVcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XCIgdGl0bGU9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZXVpLWNoaXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJldWlDaGlwTGlzdEFwcGVuZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZGl0aW9uYWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImlzR3JpZFwiIGNsYXNzPVwiZXVpLWNoaXAtbGlzdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0X19ncm91cFwiIGNka0Ryb3BMaXN0R3JvdXA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICAgICAjY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXA6IGNoaXAsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2N1c3RvbVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ0VudGVyZWQpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4VmlzaWJsZUNoaXBzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoaXBSZW1vdmFibGVdPVwiY2hpcC5pc0NoaXBSZW1vdmFibGUgfHwgKGlzQ2hpcHNSZW1vdmFibGUgJiYgY2hpcC5pc1JlbW92YWJsZSkgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCBldWlPdXRsaW5lIHx8IGNoaXAuaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTV09XCJjaGlwLmV1aVNpemVNIHx8IGV1aVNpemVNIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZU0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTF09XCJjaGlwLmV1aVNpemVMIHx8IGV1aVNpemVMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZTJYTF09XCJjaGlwLmV1aVNpemUyWEwgfHwgZXVpU2l6ZTJYTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemUyWEwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NxdWFyZWRdPVwiY2hpcC5pc1NxdWFyZWQgfHwgaXNTcXVhcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpUHJpbWFyeV09XCJjaGlwLmV1aVByaW1hcnkgfHwgZXVpUHJpbWFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3ByaW1hcnknIHx8ICFjaGlwLnR5cGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2Vjb25kYXJ5XT1cImNoaXAuZXVpU2Vjb25kYXJ5IHx8IGV1aVNlY29uZGFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU3VjY2Vzc109XCJjaGlwLmV1aVN1Y2Nlc3MgfHwgZXVpU3VjY2VzcyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cImNoaXAuZXVpV2FybmluZyB8fCBldWlXYXJuaW5nIHx8IGNoaXAudHlwZUNsYXNzID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlBY2NlbnRdPVwiY2hpcC5ldWlBY2NlbnQgfHwgZXVpQWNjZW50IHx8IGNoaXAudHlwZUNsYXNzID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50QWxpZ25tZW50XT1cImNoaXAudG9vbHRpcD8uY29udGVudEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHYxNSBPSyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJjaGlwLmljb25TdmdOYW1lXCIgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudFwiIHRpdGxlPVwie3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlwTGFiZWwoY2hpcCkgfCBldWlUcnVuY2F0ZTogY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkaXRpb25hbENvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1heFZpc2libGVDaGlwc0NvdW50ICYmIGNoaXBzICYmIGNoaXBzLmxlbmd0aCA+IG1heFZpc2libGVDaGlwc0NvdW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0X19leHBhbmQtYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19leHBhbmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVGFncygpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNoZXZyb24tYmFja1wiIGFyaWEtbGFiZWw9XCJDb2xsYXBzZSBpY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWwgKm5nSWY9XCJ0b2dnbGVMaW5rTGVzc0xhYmVsXCI+e3sgdG9nZ2xlTGlua0xlc3NMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2V4cGFuZC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUYWdzKClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWwgKm5nSWY9XCJ0b2dnbGVMaW5rTW9yZUxhYmVsXCI+e3sgdG9nZ2xlTGlua01vcmVMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hldnJvbi1mb3J3YXJkXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBpY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUlmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUE2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUgsZUFBZSxFQUNmLFdBQVcsRUFDWCxpQkFBaUIsR0FLcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFpQm5ELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lB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LGlDQUFpQztzSUFBakMsaUNBQWlDOzBIQUFqQyxpQ0FBaUM7O2dHQUFqQyxpQ0FBaUM7a0JBRDdDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBWaWV3Q2hpbGQsXG4gICAgUXVlcnlMaXN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25EZXN0cm95LFxuICAgIERpcmVjdGl2ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENka0RyYWdEcm9wLFxuICAgIG1vdmVJdGVtSW5BcnJheSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICB0cmFuc2ZlckFycmF5SXRlbSxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdTdGFydCxcbiAgICBDZGtEcmFnRW50ZXIsXG4gICAgQ2RrRHJhZ1JlbGVhc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlDaGlwQ29tcG9uZW50LCBFdWlDaGlwLCBFdWlDaGlwVG9vbHRpcCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktY2hpcCc7XG5cbmltcG9ydCB7IEV1aUNoaXBEcmFnRHJvcCB9IGZyb20gJy4vbW9kZWxzL2V1aS1jaGlwLWRyYWctZHJvcC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldWktY2hpcC1saXN0LWRyYWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2V1aS1jaGlwLWxpc3QsIGRpdltldWlDaGlwTGlzdF0sIHVsW2V1aUNoaXBMaXN0XScsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpQ2hpcExpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY2hpcHM6IGFueVtdO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBjaGlwc1NvcnRPcmRlcjogJ0FTQycgfCAnREVTQycgPSAnQVNDJztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJ2VVSSBDaGlwIExpc3QnO1xuICAgIEBJbnB1dCgpIGRyb3BMaXN0T3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBAT3V0cHV0KCkgY2hpcHNJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcm9wTGlzdD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjaGlwczogRXVpQ2hpcFtdOyByZW1vdmVkOiBFdWlDaGlwIHwgeyBjaGlwOiBFdWlDaGlwOyBldmVudDogRXZlbnQgfSB9PigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnUmVsZWFzZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwbGlzdEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktY2hpcC1saXN0JyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgYXR0cl9Sb2xlID0gJ2xpc3Rib3gnO1xuXG4gICAgcHVibGljIGRyb3BwYWJsZUFyZWE6IChDZGtEcm9wTGlzdCB8IHN0cmluZylbXTtcbiAgICBwdWJsaWMgY29ubmVjdENvbXBvbmVudDogQ2RrRHJvcExpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBlMmVBdHRyID0gJ2V1aS1jaGlwLWxpc3QnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aUNoaXBDb21wb25lbnQpKSBldWlDaGlwc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlDaGlwQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyb3BMaXN0JywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KSBjaGlwTGlzdERyb3BMaXN0OiBDZGtEcm9wTGlzdDtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyYWdBbmREcm9wSXRlbXMnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pIGNoaXBMaXN0RHJhZ0FuZERyb3BJdGVtczogQ2RrRHJvcExpc3Q7XG4gICAgQFZpZXdDaGlsZHJlbignZXVpQ2hpcEl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZXVpQ2hpcEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1NxdWFyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NxdWFyZWQ7XG4gICAgfVxuICAgIHNldCBpc1NxdWFyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1NxdWFyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1NxdWFyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNSZW1vdmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NoaXBzUmVtb3ZhYmxlO1xuICAgIH1cbiAgICBzZXQgaXNDaGlwc1JlbW92YWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNSZW1vdmFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoaXBzUmVtb3ZhYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQ7XG4gICAgfVxuICAgIHNldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX21heFZpc2libGVDaGlwc0NvdW50ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudDtcbiAgICB9XG4gICAgc2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01heFZpc2libGVDaGlwc09wZW5lZDtcbiAgICB9XG4gICAgc2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc01heFZpc2libGVDaGlwc09wZW5lZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc1NvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNTb3J0ZWQ7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzU29ydGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc1NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNTb3J0ZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcDtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNHcmlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNHcmlkO1xuICAgIH1cbiAgICBzZXQgaXNHcmlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNHcmlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNHcmlkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBldWlDaGlwTGlzdERyYWdTZXJ2aWNlOiBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuY2hpcHMgJiYgdGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHNJbml0LmVtaXQodGhpcy5jaGlwTGlzdERyYWdBbmREcm9wSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkICYmIHRoaXMuY2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXRDb21wb25lbnRDb25uZWN0b3IodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUbykge1xuICAgICAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnNldERyb3BwYWJsZUFyZWEodGhpcy5jaGlwTGlzdERyb3BMaXN0LCB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvLmZvckVhY2goKGNvbm5lY3RUbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCA9IHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwYWJsZUFyZWEgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuZHJvcHBhYmxlQXJlYVt0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZV07XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmNvbXBvbmVudENvbm5lY3RvcikubWFwKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXS5wdXNoKHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ldWlDaGlwc0NvbnRlbnQuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5tYXAoKGNoaXApID0+IE9iamVjdC5hc3NpZ24oY2hpcCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnJlc2V0Q29ubmVjdG9yKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUYWdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gIXRoaXMuaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaXBDb250ZW50KGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmNoaXBMYWJlbCA/IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGV1aUNoaXAuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaXBMYWJlbChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyBldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IDogZXVpQ2hpcC5sYWJlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpcEljb25CZWZvcmUoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25CZWZvcmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaXBJY29uQWZ0ZXIoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25BZnRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmUocmVtb3ZlZDogRXVpQ2hpcENvbXBvbmVudCB8IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwOyBldmVudD86IEV2ZW50IH0gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcztcbiAgICAgICAgY29uc3QgcmVtb3ZlZENoaXAgPSByZW1vdmVkIGFzIHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH07XG4gICAgICAgIGxldCBpbmRleCA9IHJlbW92ZWRDaGlwIGluc3RhbmNlb2YgRXVpQ2hpcCA/IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXApIDogY2hpcHMuaW5kZXhPZihyZW1vdmVkQ2hpcC5jaGlwKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xICYmIHJlbW92ZWQuaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hpcHMubWFwKChjaGlwKSA9PiBjaGlwLmlkKS5pbmRleE9mKHJlbW92ZWQuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuY2hpcFJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGNoaXBzOiB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIHJlbW92ZWQ6IHJlbW92ZWRDaGlwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmV1aUludGVybmFsSWQgPyBldWlDaGlwLmV1aUludGVybmFsSWQgOiBldWlDaGlwLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdFbnRlcihldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyb3BMaXN0ID0gZXZlbnQuY29udGFpbmVyO1xuICAgICAgICBjb25zdCBwaENvbnRhaW5lciA9IGRyb3BMaXN0LmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgcGhFbGVtZW50ID0gcGhDb250YWluZXIucXVlcnlTZWxlY3RvcignLmNkay1kcmFnLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIHBoQ29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBoRWxlbWVudCwgcGhDb250YWluZXIpO1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jaGlwcywgZXZlbnQuaXRlbS5kYXRhLmluZGV4LCBldmVudC5jb250YWluZXIuZGF0YS5pbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJvcEdyaWQoZTogQ2RrRHJhZ0Ryb3A8eyBjaGlwOiBhbnk7IGluZGV4OiBudW1iZXIgfT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJvcC5lbWl0KFxuICAgICAgICAgICAgbmV3IEV1aUNoaXBEcmFnRHJvcCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Ryb3BwZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGUuaXRlbS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wKGU6IENka0RyYWdEcm9wPHsgY2hpcHM6IGFueVtdIH0+KTogdm9pZCB7XG4gICAgICAgIGlmIChlLnByZXZpb3VzQ29udGFpbmVyID09PSBlLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sIGUucHJldmlvdXNJbmRleCwgZS5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZS5wcmV2aW91c0NvbnRhaW5lci5kYXRhWydjaGlwcyddLFxuICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICAgICAgZS5wcmV2aW91c0NvbnRhaW5lci5kYXRhWydjaGlwcyddLmluZGV4T2YoZS5pdGVtLmRhdGEpLFxuICAgICAgICAgICAgICAgIGUuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hpcERyb3AuZW1pdChcbiAgICAgICAgICAgIG5ldyBFdWlDaGlwRHJhZ0Ryb3Aoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wcGVkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBlLml0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgICBjaGlwczogZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1N0YXJ0LmVtaXQoXG4gICAgICAgICAgICBuZXcgRXVpQ2hpcERyYWdEcm9wKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ1JlbGVhc2VkKGV2ZW50OiBDZGtEcmFnUmVsZWFzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnUmVsZWFzZS5lbWl0KFxuICAgICAgICAgICAgbmV3IEV1aUNoaXBEcmFnRHJvcCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JlbGVhc2VkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBldmVudFsnc291cmNlJ10uZGF0YSBpbnN0YW5jZW9mIEV1aUNoaXBDb21wb25lbnQgPyBldmVudFsnc291cmNlJ10uZGF0YSA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBsaXN0Rm9jdXMuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9yZGVySXRlbXModGFiOiBhbnksIHNvcnRPcmRlcjogc3RyaW5nKTogYW55W10ge1xuICAgICAgICB0YWIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFPYmogPSBhLmNoaXBMYWJlbCA/IGEuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKSA6IGEubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGJPYmogPSBiLmNoaXBMYWJlbCA/IGIuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKSA6IGIubGFiZWwudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHNvcnRPcmRlciA9PT0gJ0FTQycpIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGFiO1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlDaGlwTGlzdEFwcGVuZENvbnRlbnREaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgKi9cbiIsIjxkaXYgKm5nSWY9XCIhaXNHcmlkXCIgY2xhc3M9XCJldWktY2hpcC1saXN0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAjY2hpcExpc3REcm9wTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJhZ0FuZERyb3BJdGVtc1xuICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdE9yaWVudGF0aW9uXT1cImRyb3BMaXN0T3JpZW50YXRpb25cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInsgY2hpcHMgfVwiXG4gICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcm9wcGFibGVBcmVhXCJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19saXN0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgI2V1aUNoaXBJdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgbWF4VmlzaWJsZUNoaXBzQ291bnQgPiBpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIW1heFZpc2libGVDaGlwc0NvdW50XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImNoaXAuZGF0YSA/IGNoaXAuZGF0YSA6IGNoaXBcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidvcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2hpcFJlbW92YWJsZV09XCJjaGlwLmlzQ2hpcFJlbW92YWJsZSB8fCAoaXNDaGlwc1JlbW92YWJsZSAmJiBjaGlwLmlzUmVtb3ZhYmxlKSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpT3V0bGluZV09XCJjaGlwLmV1aU91dGxpbmUgfHwgZXVpT3V0bGluZSB8fCBjaGlwLmlzT3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNpemVNXT1cImNoaXAuZXVpU2l6ZU0gfHwgZXVpU2l6ZU0gfHwgY2hpcC5zaXplQ2xhc3MgPT09ICdldWlTaXplTSdcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZUxdPVwiY2hpcC5ldWlTaXplTCB8fCBldWlTaXplTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemVMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplMlhMXT1cImNoaXAuZXVpU2l6ZTJYTCB8fCBldWlTaXplMlhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZTJYTCdcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTcXVhcmVkXT1cImNoaXAuaXNTcXVhcmVkIHx8IGlzU3F1YXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlQcmltYXJ5XT1cImNoaXAuZXVpUHJpbWFyeSB8fCBldWlQcmltYXJ5IHx8IGNoaXAudHlwZUNsYXNzID09PSAncHJpbWFyeScgfHwgIWNoaXAudHlwZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNlY29uZGFyeV09XCJjaGlwLmV1aVNlY29uZGFyeSB8fCBldWlTZWNvbmRhcnkgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cImNoaXAuZXVpU3VjY2VzcyB8fCBldWlTdWNjZXNzIHx8IGNoaXAudHlwZUNsYXNzID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpV2FybmluZ109XCJjaGlwLmV1aVdhcm5pbmcgfHwgZXVpV2FybmluZyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUFjY2VudF09XCJjaGlwLmV1aUFjY2VudCB8fCBldWlBY2NlbnQgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwiY2hpcC50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRBbGlnbm1lbnRdPVwiY2hpcC50b29sdGlwPy5jb250ZW50QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gdjE1IE9LIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiY2hpcC5pY29uU3ZnTmFtZVwiIFtpY29uXT1cImNoaXAuaWNvblN2Z05hbWVcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XCIgdGl0bGU9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZXVpLWNoaXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJldWlDaGlwTGlzdEFwcGVuZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZGl0aW9uYWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImlzR3JpZFwiIGNsYXNzPVwiZXVpLWNoaXAtbGlzdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0X19ncm91cFwiIGNka0Ryb3BMaXN0R3JvdXA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICAgICAjY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXA6IGNoaXAsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2N1c3RvbVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ0VudGVyZWQpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4VmlzaWJsZUNoaXBzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoaXBSZW1vdmFibGVdPVwiY2hpcC5pc0NoaXBSZW1vdmFibGUgfHwgKGlzQ2hpcHNSZW1vdmFibGUgJiYgY2hpcC5pc1JlbW92YWJsZSkgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCBldWlPdXRsaW5lIHx8IGNoaXAuaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTV09XCJjaGlwLmV1aVNpemVNIHx8IGV1aVNpemVNIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZU0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTF09XCJjaGlwLmV1aVNpemVMIHx8IGV1aVNpemVMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZTJYTF09XCJjaGlwLmV1aVNpemUyWEwgfHwgZXVpU2l6ZTJYTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemUyWEwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NxdWFyZWRdPVwiY2hpcC5pc1NxdWFyZWQgfHwgaXNTcXVhcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpUHJpbWFyeV09XCJjaGlwLmV1aVByaW1hcnkgfHwgZXVpUHJpbWFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3ByaW1hcnknIHx8ICFjaGlwLnR5cGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2Vjb25kYXJ5XT1cImNoaXAuZXVpU2Vjb25kYXJ5IHx8IGV1aVNlY29uZGFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU3VjY2Vzc109XCJjaGlwLmV1aVN1Y2Nlc3MgfHwgZXVpU3VjY2VzcyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cImNoaXAuZXVpV2FybmluZyB8fCBldWlXYXJuaW5nIHx8IGNoaXAudHlwZUNsYXNzID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlBY2NlbnRdPVwiY2hpcC5ldWlBY2NlbnQgfHwgZXVpQWNjZW50IHx8IGNoaXAudHlwZUNsYXNzID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50QWxpZ25tZW50XT1cImNoaXAudG9vbHRpcD8uY29udGVudEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHYxNSBPSyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJjaGlwLmljb25TdmdOYW1lXCIgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudFwiIHRpdGxlPVwie3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlwTGFiZWwoY2hpcCkgfCBldWlUcnVuY2F0ZTogY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkaXRpb25hbENvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1heFZpc2libGVDaGlwc0NvdW50ICYmIGNoaXBzICYmIGNoaXBzLmxlbmd0aCA+IG1heFZpc2libGVDaGlwc0NvdW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0X19leHBhbmQtYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19leHBhbmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVGFncygpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNoZXZyb24tYmFja1wiIGFyaWEtbGFiZWw9XCJDb2xsYXBzZSBpY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWwgKm5nSWY9XCJ0b2dnbGVMaW5rTGVzc0xhYmVsXCI+e3sgdG9nZ2xlTGlua0xlc3NMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2V4cGFuZC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUYWdzKClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZXVpTGFiZWwgKm5nSWY9XCJ0b2dnbGVMaW5rTW9yZUxhYmVsXCI+e3sgdG9nZ2xlTGlua01vcmVMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hldnJvbi1mb3J3YXJkXCIgYXJpYS1sYWJlbD1cIkV4cGFuZCBpY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19