desy-angular 11.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -3
  2. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +15 -5
  3. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +3 -3
  4. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -3
  5. package/esm2022/lib/desy-commons/interfaces/divider-data.mjs +1 -1
  6. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +30 -4
  7. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +3 -3
  8. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +28 -2
  9. package/esm2022/lib/desy-forms/components/fieldset/legend/legend.component.mjs +17 -6
  10. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +3 -3
  11. package/esm2022/lib/desy-forms/components/input/input.component.mjs +17 -8
  12. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +28 -2
  13. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +3 -3
  14. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +3 -3
  15. package/esm2022/lib/desy-forms/components/select/select.component.mjs +5 -5
  16. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +3 -3
  17. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  18. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +5 -5
  19. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +1 -1
  20. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +9 -7
  21. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +6 -2
  22. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +6 -2
  23. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +18 -6
  24. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +6 -2
  25. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +3 -3
  26. package/esm2022/lib/desy-nav/components/header/header.component.mjs +3 -3
  27. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +1 -1
  28. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +7 -3
  29. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +7 -3
  30. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +7 -3
  31. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +7 -3
  32. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +5 -3
  33. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +4 -3
  34. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +4 -2
  35. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +3 -3
  36. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +8 -2
  37. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +8 -2
  38. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +8 -7
  39. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +4 -2
  40. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +3 -3
  41. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +8 -13
  42. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  43. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +9 -0
  44. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  45. package/esm2022/lib/desy-nav/interfaces/index.mjs +4 -3
  46. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  47. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  48. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  49. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  50. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  51. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +1 -1
  52. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +17 -2
  53. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +5 -3
  54. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +3 -3
  55. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +3 -3
  56. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +16 -5
  57. package/esm2022/lib/desy-views/components/details/details.component.mjs +15 -4
  58. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +10 -6
  59. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +5 -1
  60. package/esm2022/lib/desy-views/components/status/status.component.mjs +13 -5
  61. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +11 -7
  62. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +6 -4
  63. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +5 -5
  64. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +6 -16
  65. package/esm2022/public-api.mjs +4 -1
  66. package/fesm2022/desy-angular.mjs +424 -214
  67. package/fesm2022/desy-angular.mjs.map +1 -1
  68. package/lib/desy-buttons/components/button/button.component.d.ts +2 -1
  69. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +4 -2
  70. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +1 -1
  71. package/lib/desy-buttons/components/pill/pill.component.d.ts +2 -1
  72. package/lib/desy-commons/interfaces/divider-data.d.ts +1 -0
  73. package/lib/desy-forms/components/character-count/character-count.component.d.ts +7 -1
  74. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +2 -3
  75. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +14 -1
  76. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +6 -2
  77. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +1 -1
  78. package/lib/desy-forms/components/input/input.component.d.ts +8 -3
  79. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +14 -1
  80. package/lib/desy-forms/components/input-group/input-group.component.d.ts +1 -1
  81. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +1 -1
  82. package/lib/desy-forms/components/select/select.component.d.ts +1 -1
  83. package/lib/desy-forms/components/textarea/textarea.component.d.ts +1 -1
  84. package/lib/desy-forms/interfaces/label-data.d.ts +1 -0
  85. package/lib/desy-modals/components/dialog/dialog.component.d.ts +3 -3
  86. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +4 -3
  87. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +4 -2
  88. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +4 -2
  89. package/lib/desy-nav/components/footer/footer.component.d.ts +12 -7
  90. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +3 -1
  91. package/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.d.ts +3 -1
  92. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +3 -1
  93. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +3 -1
  94. package/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.d.ts +3 -1
  95. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +3 -2
  96. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +3 -2
  97. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +4 -1
  98. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +4 -1
  99. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -1
  100. package/lib/desy-nav/components/notification/notification.component.d.ts +5 -7
  101. package/lib/desy-nav/interfaces/footer-data.d.ts +4 -0
  102. package/lib/desy-nav/interfaces/footer-logo.d.ts +7 -0
  103. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +1 -0
  104. package/lib/desy-nav/interfaces/index.d.ts +3 -2
  105. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +1 -0
  106. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +3 -0
  107. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +3 -0
  108. package/lib/desy-nav/interfaces/menu-navigation.d.ts +3 -0
  109. package/lib/desy-nav/interfaces/nav-item.data.d.ts +1 -0
  110. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +8 -3
  111. package/lib/desy-views/components/alert/alert.component.d.ts +1 -1
  112. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +3 -1
  113. package/lib/desy-views/components/details/details.component.d.ts +3 -1
  114. package/lib/desy-views/components/media-object/media-object.component.d.ts +4 -4
  115. package/lib/desy-views/components/status/status.component.d.ts +1 -1
  116. package/lib/desy-views/components/status-item/status-item.component.d.ts +6 -6
  117. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +4 -3
  118. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +1 -5
  119. package/package.json +2 -2
  120. package/public-api.d.ts +3 -0
@@ -73,11 +73,11 @@ export class ButtonComponent extends ContentBaseComponent {
73
73
  return ButtonComponent.ELEMENT_INPUT;
74
74
  }
75
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "desy-button", inputs: { id: "id", classes: "classes", html: "html", text: "text", element: "element", name: "name", type: "type", value: "value", disabled: "disabled", href: "href", target: "target", preventDoubleClick: "preventDoubleClick", routerLink: "routerLink", routerLinkActiveClasses: "routerLinkActiveClasses" }, outputs: { clickEvent: "clickEvent" }, host: { properties: { "attr.tabindex": "this.hostTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3.InnerContentDirective, selector: "[desyInnerContent]", inputs: ["desyInnerContent", "isHtml", "deleteContentIfEmpty"] }, { kind: "pipe", type: i4.ExternalHrefPipe, name: "externalHref" }] }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "desy-button", inputs: { id: "id", classes: "classes", html: "html", text: "text", element: "element", name: "name", type: "type", value: "value", disabled: "disabled", href: "href", target: "target", preventDoubleClick: "preventDoubleClick", fragment: "fragment", routerLink: "routerLink", routerLinkActiveClasses: "routerLinkActiveClasses" }, outputs: { clickEvent: "clickEvent" }, host: { properties: { "attr.tabindex": "this.hostTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3.InnerContentDirective, selector: "[desyInnerContent]", inputs: ["desyInnerContent", "isHtml", "deleteContentIfEmpty"] }, { kind: "pipe", type: i4.ExternalHrefPipe, name: "externalHref" }] }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
79
79
  type: Component,
80
- args: [{ selector: 'desy-button', template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n" }]
80
+ args: [{ selector: 'desy-button', template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\" [fragment]=\"fragment\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n" }]
81
81
  }], propDecorators: { hostTabIndex: [{
82
82
  type: HostBinding,
83
83
  args: ['attr.tabindex']
@@ -105,6 +105,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
105
105
  type: Input
106
106
  }], preventDoubleClick: [{
107
107
  type: Input
108
+ }], fragment: [{
109
+ type: Input
108
110
  }], routerLink: [{
109
111
  type: Input
110
112
  }], routerLinkActiveClasses: [{
@@ -112,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
112
114
  }], clickEvent: [{
113
115
  type: Output
114
116
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktYnV0dG9ucy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQTBCLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQU16RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxvQkFBb0I7SUFKekQ7O1FBV3lDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBbUJqRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7S0ErRDdCO2FBekZ3QixjQUFTLEdBQVcsR0FBRyxDQUFDO2FBQ3hCLG1CQUFjLEdBQVcsUUFBUSxDQUFDO2FBQ2xDLGtCQUFhLEdBQVcsT0FBTyxDQUFDO0lBMkJ2RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFDO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVDO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixVQUFVLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsVUFBVSxJQUFJLHFCQUFxQixDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7K0dBMUZVLGVBQWU7bUdBQWYsZUFBZSxxZUNQNUIsaTFLQXVEQTs7NEZEaERhLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsYUFBYTs4QkFVZ0IsWUFBWTtzQkFBbEQsV0FBVzt1QkFBQyxlQUFlO2dCQUVuQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCwgQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBDb250ZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0E6IHN0cmluZyA9ICdhJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0JVVFRPTjogc3RyaW5nID0gJ2J1dHRvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRUxFTUVOVF9JTlBVVDogc3RyaW5nID0gJ2lucHV0JztcblxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHJlYWRvbmx5IGhvc3RUYWJJbmRleCA9IG51bGw7IC8vIEZpeCBwYXJhIGV2aXRhciBlbCB0YWItaW5kZXggYWdyZWdhZG8gcG9yIHJvdXRlckxpbmsgZW4gZWwgaG9zdFxuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgaHRtbDogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZWxlbWVudDogc3RyaW5nOyAvLyAnYScsICdidXR0b24nIG8gJ2lucHV0J1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhyZWY6IHN0cmluZztcbiAgQElucHV0KCkgdGFyZ2V0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZXZlbnREb3VibGVDbGljazogYm9vbGVhbjtcblxuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmd8YW55W107XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzOiBzdHJpbmd8c3RyaW5nW107XG5cbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXZvaWRpbmdEb3VibGVDbGljayA9IGZhbHNlO1xuICBpc0h0bWw6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0h0bWwgPSBCb29sZWFuKHRoaXMuaHRtbCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50RG91YmxlQ2xpY2spIHtcbiAgICAgIGlmICghdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrKXtcbiAgICAgICAgdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF2b2lkaW5nRG91YmxlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBldml0YW1vcyBwcm9wYWdhciBlbCBldmVudG8gcG9yIGVqZW1wbG8gdW4gc3VibWl0IGVuIHVuIGZvcm11bGFyaW9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVsZW1lbnQoKTogc3RyaW5nIHtcbiAgICBsZXQgZWxlbWVudDogc3RyaW5nO1xuICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaHJlZikge1xuICAgICAgICBlbGVtZW50ID0gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQgPSBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lcygpOiBzdHJpbmcge1xuICAgIGxldCBjbGFzc05hbWVzID0gJ2MtYnV0dG9uJztcbiAgICBpZiAodGhpcy5jbGFzc2VzKSB7XG4gICAgICBjbGFzc05hbWVzICs9ICcgJyArIHRoaXMuY2xhc3NlcztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNsYXNzTmFtZXMgKz0gJyBjLWJ1dHRvbi0tZGlzYWJsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgfVxuXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUEoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUJ1dHRvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gIH1cblxuICBnZXQgc3RhdGljRWxlbWVudFR5cGVJbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9JTlBVVDtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJnZXRFbGVtZW50KClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3RhdGljRWxlbWVudFR5cGVBXCI+XG4gIDwhLS0gcm91dGVyTGluayBtb2RpZmljYSBocmVmLCBwb3IgZXNvIHNlIGR1cGxpY2EgcGFyYSBxdWUgbm8gY29udml2YW4gZW4gdW4gbWlzbW8gaHRtbCAtLT5cbiAgICAgPGEgKm5nSWY9XCJyb3V0ZXJMaW5rXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGlua1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInJvdXRlckxpbmtBY3RpdmVDbGFzc2VzID8gcm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgOiBbXVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiAoaXNEaXNhYmxlZCgpID8gLTEgOiBudWxsKVwiXG4gICAgICAgIFtkZXN5SW5uZXJDb250ZW50XT1cImh0bWwgPyBodG1sIDogdGV4dFwiIFtpc0h0bWxdPVwiaXNIdG1sXCIgW2RlbGV0ZUNvbnRlbnRJZkVtcHR5XT1cImZhbHNlXCJcbiAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiPlxuICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPC9hPlxuXG4gICAgIDxhICpuZ0lmPVwiIXJvdXRlckxpbmtcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICBbaHJlZl09XCJocmVmIHwgZXh0ZXJuYWxIcmVmXCJcbiAgICAgICAgW2F0dHIudGFyZ2V0XT1cInRhcmdldCA/IHRhcmdldCA6IG51bGxcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleCA/IHRhYmluZGV4IDogKGlzRGlzYWJsZWQoKSA/IC0xIDogbnVsbClcIlxuICAgICAgICBbZGVzeUlubmVyQ29udGVudF09XCJodG1sID8gaHRtbCA6IHRleHRcIiBbaXNIdG1sXT1cImlzSHRtbFwiIFtkZWxldGVDb250ZW50SWZFbXB0eV09XCJmYWxzZVwiXG4gICAgICAgIFtjbGFzc109XCJnZXRDbGFzc05hbWVzKClcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIiBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIj5cbiAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgIDwvYT5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uICpuZ1N3aXRjaENhc2U9XCJzdGF0aWNFbGVtZW50VHlwZUJ1dHRvblwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmsgPyByb3V0ZXJMaW5rIDogbnVsbFwiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInJvdXRlckxpbmtBY3RpdmVDbGFzc2VzID8gcm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgOiBbXVwiXG4gICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lID8gbmFtZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlID8gdmFsdWUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICd0cnVlJyA6IChhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1wcmV2ZW50LWRvdWJsZS1jbGlja109XCJwcmV2ZW50RG91YmxlQ2xpY2sgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci50eXBlXT1cInR5cGUgPyB0eXBlIDogbnVsbFwiXG4gICAgICAgICAgW2Rlc3lJbm5lckNvbnRlbnRdPVwiaHRtbCA/IGh0bWwgOiB0ZXh0XCIgW2lzSHRtbF09XCJpc0h0bWxcIiBbZGVsZXRlQ29udGVudElmRW1wdHldPVwiZmFsc2VcIlxuICAgICAgICAgIFtjbGFzc109XCJnZXRDbGFzc05hbWVzKClcIlxuICAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCIgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwic3RhdGljRWxlbWVudFR5cGVJbnB1dFwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGluayA/IHJvdXRlckxpbmsgOiBudWxsXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwicm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgPyByb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA6IFtdXCJcbiAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZSA/IG5hbWUgOiBudWxsXCJcbiAgICAgICAgIFt2YWx1ZV09XCJ0ZXh0ID8gdGV4dCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmRhdGEtcHJldmVudC1kb3VibGUtY2xpY2tdPVwicHJldmVudERvdWJsZUNsaWNrID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci50eXBlXT1cInR5cGUgPyB0eXBlIDogJ3N1Ym1pdCdcIlxuICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktYnV0dG9ucy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTWxFLE1BQU0sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQUp6RDs7UUFXeUMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFtQmpELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztLQStEN0I7YUF6RndCLGNBQVMsR0FBVyxHQUFHLENBQUM7YUFDeEIsbUJBQWMsR0FBVyxRQUFRLENBQUM7YUFDbEMsa0JBQWEsR0FBVyxPQUFPLENBQUM7SUEyQnZELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUM7Z0JBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7Z0JBQ25DLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNWO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN4QjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUM7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixPQUFPLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxPQUFPLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQzthQUMxQztTQUNGO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFVBQVUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixVQUFVLElBQUkscUJBQXFCLENBQUM7U0FDckM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLGVBQWUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQzsrR0ExRlUsZUFBZTttR0FBZixlQUFlLDJmQ1A1Qix5NUtBdURBOzs0RkRoRGEsZUFBZTtrQkFKM0IsU0FBUzsrQkFDRSxhQUFhOzhCQVVnQixZQUFZO3NCQUFsRCxXQUFXO3VCQUFDLGVBQWU7Z0JBRW5CLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQ29udGVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRUxFTUVOVF9BOiBzdHJpbmcgPSAnYSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRUxFTUVOVF9CVVRUT046IHN0cmluZyA9ICdidXR0b24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVMRU1FTlRfSU5QVVQ6IHN0cmluZyA9ICdpbnB1dCc7XG5cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSByZWFkb25seSBob3N0VGFiSW5kZXggPSBudWxsOyAvLyBGaXggcGFyYSBldml0YXIgZWwgdGFiLWluZGV4IGFncmVnYWRvIHBvciByb3V0ZXJMaW5rIGVuIGVsIGhvc3RcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGh0bWw6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGVsZW1lbnQ6IHN0cmluZzsgLy8gJ2EnLCAnYnV0dG9uJyBvICdpbnB1dCdcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBocmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhcmdldDogc3RyaW5nO1xuICBASW5wdXQoKSBwcmV2ZW50RG91YmxlQ2xpY2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZyYWdtZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvdXRlckxpbms6IHN0cmluZ3xhbnlbXTtcbiAgQElucHV0KCkgcm91dGVyTGlua0FjdGl2ZUNsYXNzZXM6IHN0cmluZ3xzdHJpbmdbXTtcblxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBhdm9pZGluZ0RvdWJsZUNsaWNrID0gZmFsc2U7XG4gIGlzSHRtbDogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSHRtbCA9IEJvb2xlYW4odGhpcy5odG1sKTtcbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXZlbnREb3VibGVDbGljaykge1xuICAgICAgaWYgKCF0aGlzLmF2b2lkaW5nRG91YmxlQ2xpY2spe1xuICAgICAgICB0aGlzLmF2b2lkaW5nRG91YmxlQ2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXZvaWRpbmdEb3VibGVDbGljayA9IGZhbHNlO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIGV2aXRhbW9zIHByb3BhZ2FyIGVsIGV2ZW50byBwb3IgZWplbXBsbyB1biBzdWJtaXQgZW4gdW4gZm9ybXVsYXJpb1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RWxlbWVudCgpOiBzdHJpbmcge1xuICAgIGxldCBlbGVtZW50OiBzdHJpbmc7XG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IHRoaXMuZWxlbWVudC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5ocmVmKSB7XG4gICAgICAgIGVsZW1lbnQgPSBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9BO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudCA9IEJ1dHRvbkNvbXBvbmVudC5FTEVNRU5UX0JVVFRPTjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBnZXRDbGFzc05hbWVzKCk6IHN0cmluZyB7XG4gICAgbGV0IGNsYXNzTmFtZXMgPSAnYy1idXR0b24nO1xuICAgIGlmICh0aGlzLmNsYXNzZXMpIHtcbiAgICAgIGNsYXNzTmFtZXMgKz0gJyAnICsgdGhpcy5jbGFzc2VzO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgY2xhc3NOYW1lcyArPSAnIGMtYnV0dG9uLS1kaXNhYmxlZCc7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWVzO1xuICB9XG5cbiAgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YXRpY0VsZW1lbnRUeXBlQSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9BO1xuICB9XG5cbiAgZ2V0IHN0YXRpY0VsZW1lbnRUeXBlQnV0dG9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1dHRvbkNvbXBvbmVudC5FTEVNRU5UX0JVVFRPTjtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUlucHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1dHRvbkNvbXBvbmVudC5FTEVNRU5UX0lOUFVUO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImdldEVsZW1lbnQoKVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdGF0aWNFbGVtZW50VHlwZUFcIj5cbiAgPCEtLSByb3V0ZXJMaW5rIG1vZGlmaWNhIGhyZWYsIHBvciBlc28gc2UgZHVwbGljYSBwYXJhIHF1ZSBubyBjb252aXZhbiBlbiB1biBtaXNtbyBodG1sIC0tPlxuICAgICA8YSAqbmdJZj1cInJvdXRlckxpbmtcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwicm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgPyByb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA6IFtdXCIgW2ZyYWdtZW50XT1cImZyYWdtZW50XCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IChpc0Rpc2FibGVkKCkgPyAtMSA6IG51bGwpXCJcbiAgICAgICAgW2Rlc3lJbm5lckNvbnRlbnRdPVwiaHRtbCA/IGh0bWwgOiB0ZXh0XCIgW2lzSHRtbF09XCJpc0h0bWxcIiBbZGVsZXRlQ29udGVudElmRW1wdHldPVwiZmFsc2VcIlxuICAgICAgICBbY2xhc3NdPVwiZ2V0Q2xhc3NOYW1lcygpXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIiAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCIgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCI+XG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICA8L2E+XG5cbiAgICAgPGEgKm5nSWY9XCIhcm91dGVyTGlua1wiIGRyYWdnYWJsZT1cImZhbHNlXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIFtocmVmXT1cImhyZWYgfCBleHRlcm5hbEhyZWZcIlxuICAgICAgICBbYXR0ci50YXJnZXRdPVwidGFyZ2V0ID8gdGFyZ2V0IDogbnVsbFwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiAoaXNEaXNhYmxlZCgpID8gLTEgOiBudWxsKVwiXG4gICAgICAgIFtkZXN5SW5uZXJDb250ZW50XT1cImh0bWwgPyBodG1sIDogdGV4dFwiIFtpc0h0bWxdPVwiaXNIdG1sXCIgW2RlbGV0ZUNvbnRlbnRJZkVtcHR5XT1cImZhbHNlXCJcbiAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiPlxuICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPC9hPlxuXG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cInN0YXRpY0VsZW1lbnRUeXBlQnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGluayA/IHJvdXRlckxpbmsgOiBudWxsXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwicm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgPyByb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA6IFtdXCIgW2ZyYWdtZW50XT1cImZyYWdtZW50XCJcbiAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWUgPyBuYW1lIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWUgPyB2YWx1ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXByZXZlbnQtZG91YmxlLWNsaWNrXT1cInByZXZlbnREb3VibGVDbGljayA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnR5cGVdPVwidHlwZSA/IHR5cGUgOiBudWxsXCJcbiAgICAgICAgICBbZGVzeUlubmVyQ29udGVudF09XCJodG1sID8gaHRtbCA6IHRleHRcIiBbaXNIdG1sXT1cImlzSHRtbFwiIFtkZWxldGVDb250ZW50SWZFbXB0eV09XCJmYWxzZVwiXG4gICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIiBbYXR0ci5hcmlhLWxpdmVdPVwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIiBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleCA/IHRhYmluZGV4IDogbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG5cbiAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJzdGF0aWNFbGVtZW50VHlwZUlucHV0XCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rID8gcm91dGVyTGluayA6IG51bGxcIiBbcm91dGVyTGlua0FjdGl2ZV09XCJyb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA/IHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzIDogW11cIiBbZnJhZ21lbnRdPVwiZnJhZ21lbnRcIlxuICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lID8gbmFtZSA6IG51bGxcIlxuICAgICAgICAgW3ZhbHVlXT1cInRleHQgPyB0ZXh0IDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKCkgPyAndHJ1ZScgOiAoYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbClcIlxuICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuZGF0YS1wcmV2ZW50LWRvdWJsZS1jbGlja109XCJwcmV2ZW50RG91YmxlQ2xpY2sgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnR5cGVdPVwidHlwZSA/IHR5cGUgOiAnc3VibWl0J1wiXG4gICAgICAgICBbY2xhc3NdPVwiZ2V0Q2xhc3NOYW1lcygpXCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCIgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,7 +1,10 @@
1
- import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ElementRef, HostBinding, HostListener, } from '@angular/core';
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
3
+ import { inlinePositioning } from 'tippy.js';
4
+ import { ContentComponent } from '../../../desy-commons/components/content/content.component';
2
5
  import { AccessibilityAndContentRequiredComponent } from '../../../shared/components';
6
+ import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
3
7
  import { FocusUtils } from '../../../shared/utils/focus-utils';
4
- import { inlinePositioning } from 'tippy.js';
5
8
  import * as i0 from "@angular/core";
6
9
  import * as i1 from "@angular/common";
7
10
  import * as i2 from "../../../shared/directives/custom-inner-content.directive";
@@ -106,11 +109,15 @@ export class DropdownComponent extends AccessibilityAndContentRequiredComponent
106
109
  return this.disabled ? true : null;
107
110
  }
108
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
109
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "desy-dropdown", inputs: { id: "id", disabled: "disabled", hiddenText: "hiddenText", classesContainer: "classesContainer", classesTooltip: "classesTooltip", caller: "caller", classes: "classes" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "click": "detectClickToFocusBtn($event.target)" }, properties: { "class": "this.classesContainer" } }, viewQueries: [{ propertyName: "dropdownContent", first: true, predicate: ["dropdownContent"], descendants: true, read: ElementRef, static: true }, { propertyName: "dropdownBtn", first: true, predicate: ["dropdownBtn"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<button #dropdownBtn (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownComponent, selector: "desy-dropdown", inputs: { id: "id", disabled: "disabled", hiddenText: "hiddenText", classesContainer: "classesContainer", classesTooltip: "classesTooltip", caller: "caller", classes: "classes" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "click": "detectClickToFocusBtn($event.target)" }, properties: { "class": "this.classesContainer" } }, queries: [{ propertyName: "contentComponent", predicate: ContentComponent }], viewQueries: [{ propertyName: "dropdownContent", first: true, predicate: ["dropdownContent"], descendants: true, read: ElementRef, static: true }, { propertyName: "dropdownBtn", first: true, predicate: ["dropdownBtn"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<button #dropdownBtn (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent }\"></ng-container>\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
110
113
  }
114
+ __decorate([
115
+ DesyContentChild(),
116
+ __metadata("design:type", ContentComponent)
117
+ ], DropdownComponent.prototype, "contentComponent", void 0);
111
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownComponent, decorators: [{
112
119
  type: Component,
113
- args: [{ selector: 'desy-dropdown', template: "<button #dropdownBtn (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n</div>" }]
120
+ args: [{ selector: 'desy-dropdown', template: "<button #dropdownBtn (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent }\"></ng-container>\n</div>" }]
114
121
  }], propDecorators: { dropdownContent: [{
115
122
  type: ViewChild,
116
123
  args: ['dropdownContent', { read: ElementRef, static: true }]
@@ -134,10 +141,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
134
141
  type: Input
135
142
  }], classes: [{
136
143
  type: Input
144
+ }], contentComponent: [{
145
+ type: ContentChildren,
146
+ args: [ContentComponent]
137
147
  }], clickEvent: [{
138
148
  type: Output
139
149
  }], detectClickToFocusBtn: [{
140
150
  type: HostListener,
141
151
  args: ['click', ['$event.target']]
142
152
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFJVixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU03QyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsd0NBQXdDO0lBSi9FOztRQW1CWSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWExQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysd0JBQW1CLEdBQUcsS0FBSyxDQUFDO0tBNEY3QjthQXZIaUIsaUJBQVksR0FBRyxRQUFRLENBQUM7SUFnQnhDLHFCQUFxQixDQUFDLEtBQVU7UUFDOUIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUN2QixRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRTtnQkFDbEQsS0FBSyxFQUFFLFFBQVE7YUFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDSixV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VSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBZTtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQzsrR0F4SFUsaUJBQWlCO21HQUFqQixpQkFBaUIsMmVBSVUsVUFBVSxtSEFDZCxVQUFVLHVGQzNCOUMsK3pEQTJCTTs7NEZETE8saUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7OEJBT3lDLGVBQWU7c0JBQWhGLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0YsV0FBVztzQkFBeEUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5ELEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ3lCLGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUNwQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFHUCxxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlBbmRDb250ZW50UmVxdWlyZWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb2N1c1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2ZvY3VzLXV0aWxzJztcbmltcG9ydCB7IGlubGluZVBvc2l0aW9uaW5nIH0gZnJvbSAndGlwcHkuanMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlBbmRDb250ZW50UmVxdWlyZWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IEtFWV9DT0RFX0VTQyA9ICdFc2NhcGUnO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29udGVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGRyb3Bkb3duQ29udGVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25CdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkJ0bjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaGlkZGVuVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3Nlc0NvbnRhaW5lcjogYW55O1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBjYWxsZXI6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcblxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBkZXRlY3RDbGlja1RvRm9jdXNCdG4oZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCAmJiBldmVudC5ocmVmKSB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KFwia2V5ZG93blwiLCB7XG4gICAgICAgICdrZXknOiAnRXNjYXBlJ1xuICAgICAgfSkpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25CdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuICBpc09wZW4gPSBmYWxzZTtcbiAgY2xpY2tPdXRzaWRlRW5hYmxlZCA9IGZhbHNlO1xuXG4gIHRpcHB5UHJvcGVydGllczogYW55O1xuXG4gIG5nT25Jbml0KCk6IGFueSB7XG4gICAgbGV0IGNvbnRlbnRUb29sdGlwOiBIVE1MRWxlbWVudDtcbiAgICBpZiAodGhpcy5kcm9wZG93bkNvbnRlbnQgJiYgdGhpcy5kcm9wZG93bkNvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29udGVudFRvb2x0aXAgPSB0aGlzLmRyb3Bkb3duQ29udGVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy50aXBweVByb3BlcnRpZXMgPSB7XG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICAgIGlubGluZVBvc2l0aW9uaW5nOiB0cnVlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50VG9vbHRpcCxcbiAgICAgICAgYWxsb3dIVE1MOiB0cnVlLCAvLyBNYWtlIHN1cmUgeW91IGFyZSBzYW5pdGl6aW5nIGFueSB1c2VyIGRhdGEgaWYgcmVuZGVyaW5nIEhUTUwgdG8gcHJldmVudCBYU1MgYXR0YWNrcy5cbiAgICAgICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICAgICAgaGlkZU9uQ2xpY2s6IHRydWUsXG4gICAgICAgIGludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgICBhcnJvdzogZmFsc2UsXG4gICAgICAgIG9mZnNldDogWzAsIC0xMF0sXG4gICAgICAgIHRoZW1lOiAnJyxcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRlT25Qb3BwZXJCbHVyJyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGZuKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb25DcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgICBpbnN0YW5jZS5wb3BwZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BzLmhpZGVPblBvcHBlckJsdXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5yZWxhdGVkVGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWluc3RhbmNlLnBvcHBlci5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2hpZGVPbkVzYycsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgICBmbih7IGhpZGUgfSk6IGFueSB7XG5cbiAgICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gRHJvcGRvd25Db21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvblNob3coKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uSGlkZSgpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5saW5lUG9zaXRpb25pbmdcbiAgICAgICAgXSxcbiAgICAgICAgcm9sZTogZmFsc2UsXG4gICAgICAgIGFyaWE6IHtcbiAgICAgICAgICBjb250ZW50OiAnYXV0bycsXG4gICAgICAgIH0sXG4gICAgICAgIG9uU2hvd24oaW5zdGFuY2UpOiB2b2lkIHtcbiAgICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IEZvY3VzVXRpbHMuZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KGNvbnRlbnRUb29sdGlwKTtcbiAgICAgICAgICBpZiAoZmlyc3RGb2N1c2FibGUpIHtcbiAgICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzZXNDb250YWluZXIgPSB0aGlzLmNsYXNzZXNDb250YWluZXIgPyB0aGlzLmNsYXNzZXNDb250YWluZXIgOiAncmVsYXRpdmUgYmxvY2snO1xuICB9XG5cbiAgb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wZW4oaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gIH1cblxuICBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gdHJ1ZSA6IG51bGw7XG4gIH1cbn1cbiIsIjxidXR0b24gI2Ryb3Bkb3duQnRuIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgbmd4VGlwcHkgW3RpcHB5UHJvcHNdPVwidGlwcHlQcm9wZXJ0aWVzXCJcbiAgICAgIFtjbGFzc109XCJbJ2MtZHJvcGRvd24nLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKCkgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICd0cnVlJyA6IChhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCJcbiAgICAgIFthdHRyLnRhYkluZGV4XT1cImlzRGlzYWJsZWQoKSA/ICctMScgOiB0YWJpbmRleFwiPlxuICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IHNlbGYtY2VudGVyIG1heC13LXhzIGFsaWduLW1pZGRsZSB0cnVuY2F0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGh0bWw6IGh0bWwsIHRleHQ6IHRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zcGFuPlxuICA8c3ZnIGNsYXNzPVwiaW5saW5lLWJsb2NrIC1tci0yICBhbGlnbi1taWRkbGUgLW15LXB4XCIgdmlld0JveD1cIjAgMCA5NiA5NlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiIHdpZHRoPVwiMS41ZW1cIiBoZWlnaHQ9XCIxLjVlbVwiPjxnPjxwYXRoIGQ9XCJNNDYuNzEgNTguMDM3YTEuODIzIDEuODIzIDAgMDAyLjU4MSAwTDYyLjA0OCA0NS4yOGExLjgyMyAxLjgyMyAwIDAwLTEuMjktMy4xMTNIMzUuMjQzYTEuODIzIDEuODIzIDAgMDAtMS4yOTEgMy4xMTN6XCIvPjwvZz48L3N2Zz5cbjwvYnV0dG9uPlxuPHNwYW4gKm5nSWY9XCJoaWRkZW5UZXh0XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgaGlkZGVuVGV4dCB9fTwvc3Bhbj5cbjxkaXYgI2Ryb3Bkb3duQ29udGVudCBbY2xhc3NdPVwiWyctbWwtc20gbXQtMiBib3JkZXIgYm9yZGVyLW5ldXRyYWwtYmFzZSBzaGFkb3ctbWQgYmctd2hpdGUnLCBjbGFzc2VzVG9vbHRpcF0gfCBtYWtlSHRtbExpc3RcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbGxlclwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBTS9ELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSx3Q0FBd0M7SUFKL0U7O1FBc0JZLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBYTFDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZix3QkFBbUIsR0FBRyxLQUFLLENBQUM7S0E0RjdCO2FBMUhpQixpQkFBWSxHQUFHLFFBQVEsQ0FBQztJQW1CeEMscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFF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O3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlubGluZVBvc2l0aW9uaW5nIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUFuZENvbnRlbnRSZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IEZvY3VzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZm9jdXMtdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlBbmRDb250ZW50UmVxdWlyZWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIHJlYWRvbmx5IEtFWV9DT0RFX0VTQyA9ICdFc2NhcGUnO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29udGVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGRyb3Bkb3duQ29udGVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25CdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkJ0bjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaGlkZGVuVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3Nlc0NvbnRhaW5lcjogYW55O1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBjYWxsZXI6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29udGVudENvbXBvbmVudCkgY29udGVudENvbXBvbmVudDogQ29udGVudENvbXBvbmVudDtcbiAgXG4gIEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIGRldGVjdENsaWNrVG9Gb2N1c0J0bihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmhyZWYpIHtcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHtcbiAgICAgICAgJ2tleSc6ICdFc2NhcGUnXG4gICAgICB9KSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBjbGlja091dHNpZGVFbmFibGVkID0gZmFsc2U7XG5cbiAgdGlwcHlQcm9wZXJ0aWVzOiBhbnk7XG5cbiAgbmdPbkluaXQoKTogYW55IHtcbiAgICBsZXQgY29udGVudFRvb2x0aXA6IEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQ29udGVudCAmJiB0aGlzLmRyb3Bkb3duQ29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb250ZW50VG9vbHRpcCA9IHRoaXMuZHJvcGRvd25Db250ZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICB0aGlzLnRpcHB5UHJvcGVydGllcyA9IHtcbiAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgICAgaW5saW5lUG9zaXRpb25pbmc6IHRydWUsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRUb29sdGlwLFxuICAgICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgICB0cmlnZ2VyOiAnY2xpY2snLFxuICAgICAgICBoaWRlT25DbGljazogdHJ1ZSxcbiAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgIGFycm93OiBmYWxzZSxcbiAgICAgICAgb2Zmc2V0OiBbMCwgLTEwXSxcbiAgICAgICAgdGhlbWU6ICcnLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZm4oaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvbkNyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMuaGlkZU9uUG9wcGVyQmx1ciAmJlxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGZuKHsgaGlkZSB9KTogYW55IHtcblxuICAgICAgICAgICAgICBmdW5jdGlvbiBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBEcm9wZG93bkNvbXBvbmVudC5LRVlfQ09ERV9FU0MpIHtcbiAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9uU2hvdygpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25IaWRlKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmxpbmVQb3NpdGlvbmluZ1xuICAgICAgICBdLFxuICAgICAgICByb2xlOiBmYWxzZSxcbiAgICAgICAgYXJpYToge1xuICAgICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgICAgfSxcbiAgICAgICAgb25TaG93bihpbnN0YW5jZSk6IHZvaWQge1xuICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gRm9jdXNVdGlscy5nZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQoY29udGVudFRvb2x0aXApO1xuICAgICAgICAgIGlmIChmaXJzdEZvY3VzYWJsZSkge1xuICAgICAgICAgICAgZmlyc3RGb2N1c2FibGUuZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3Nlc0NvbnRhaW5lciA9IHRoaXMuY2xhc3Nlc0NvbnRhaW5lciA/IHRoaXMuY2xhc3Nlc0NvbnRhaW5lciA6ICdyZWxhdGl2ZSBibG9jayc7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3Blbihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxufVxuIiwiPGJ1dHRvbiAjZHJvcGRvd25CdG4gKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICBuZ3hUaXBweSBbdGlwcHlQcm9wc109XCJ0aXBweVByb3BlcnRpZXNcIlxuICAgICAgW2NsYXNzXT1cIlsnYy1kcm9wZG93bicsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgICBbYXR0ci5yb2xlXT1cInJvbGUgPyByb2xlIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgW2F0dHIudGFiSW5kZXhdPVwiaXNEaXNhYmxlZCgpID8gJy0xJyA6IHRhYmluZGV4XCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggc2VsZi1jZW50ZXIgbWF4LXcteHMgYWxpZ24tbWlkZGxlIHRydW5jYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgaHRtbDogaHRtbCwgdGV4dDogdGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG4gIDxzdmcgY2xhc3M9XCJpbmxpbmUtYmxvY2sgLW1yLTIgIGFsaWduLW1pZGRsZSAtbXktcHhcIiB2aWV3Qm94PVwiMCAwIDk2IDk2XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxLjVlbVwiIGhlaWdodD1cIjEuNWVtXCI+PGc+PHBhdGggZD1cIk00Ni43MSA1OC4wMzdhMS44MjMgMS44MjMgMCAwMDIuNTgxIDBMNjIuMDQ4IDQ1LjI4YTEuODIzIDEuODIzIDAgMDAtMS4yOS0zLjExM0gzNS4yNDNhMS44MjMgMS44MjMgMCAwMC0xLjI5MSAzLjExM3pcIi8+PC9nPjwvc3ZnPlxuPC9idXR0b24+XG48c3BhbiAqbmdJZj1cImhpZGRlblRleHRcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBoaWRkZW5UZXh0IH19PC9zcGFuPlxuPGRpdiAjZHJvcGRvd25Db250ZW50IFtjbGFzc109XCJbJy1tbC1zbSBtdC0yIGJvcmRlciBib3JkZXItbmV1dHJhbC1iYXNlIHNoYWRvdy1tZCBiZy13aGl0ZScsIGNsYXNzZXNUb29sdGlwXSB8IG1ha2VIdG1sTGlzdFwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FsbGVyXCI+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogY29udGVudENvbXBvbmVudCB9XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
@@ -279,7 +279,7 @@ export class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponen
279
279
  };
280
280
  }
281
281
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListboxComponent, selector: "desy-listbox", inputs: { id: "id", isMultiselectable: "isMultiselectable", doesChangeButtonText: "doesChangeButtonText", label: "label", classes: "classes", classesContainer: "classesContainer", classesTooltip: "classesTooltip", idPrefix: "idPrefix", disabled: "disabled", items: "items" }, outputs: { itemsChange: "itemsChange", activeItemChange: "activeItemChange" }, queries: [{ propertyName: "labelComponent", predicate: ListboxLabelComponent }, { propertyName: "itemComponentList", predicate: ListboxItemComponent }], viewQueries: [{ propertyName: "listboxButton", first: true, predicate: ["button"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxList", first: true, predicate: ["list"], descendants: true, read: ElementRef }, { propertyName: "listboxContent", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxOptions", predicate: ["option"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AttributeChangeDirective, selector: "[desyAttributeChange]", inputs: ["attributesToCheck", "desyAttributeChangeEnabled"], outputs: ["desyAttributeChange", "desyAttributeChangeMutation"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i5.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
282
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListboxComponent, selector: "desy-listbox", inputs: { id: "id", isMultiselectable: "isMultiselectable", doesChangeButtonText: "doesChangeButtonText", label: "label", classes: "classes", classesContainer: "classesContainer", classesTooltip: "classesTooltip", idPrefix: "idPrefix", disabled: "disabled", items: "items" }, outputs: { itemsChange: "itemsChange", activeItemChange: "activeItemChange" }, queries: [{ propertyName: "labelComponent", predicate: ListboxLabelComponent }, { propertyName: "itemComponentList", predicate: ListboxItemComponent }], viewQueries: [{ propertyName: "listboxButton", first: true, predicate: ["button"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxList", first: true, predicate: ["list"], descendants: true, read: ElementRef }, { propertyName: "listboxContent", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxOptions", predicate: ["option"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *ngIf=\"!buttonContentHtml\">\n <ng-content></ng-content> \n </ng-container>\n <ng-container *ngIf=\"buttonContentHtml||text\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AttributeChangeDirective, selector: "[desyAttributeChange]", inputs: ["attributesToCheck", "desyAttributeChangeEnabled"], outputs: ["desyAttributeChange", "desyAttributeChangeMutation"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i5.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
283
283
  }
284
284
  __decorate([
285
285
  DesyContentChild(),
@@ -287,7 +287,7 @@ __decorate([
287
287
  ], ListboxComponent.prototype, "labelComponent", void 0);
288
288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListboxComponent, decorators: [{
289
289
  type: Component,
290
- args: [{ selector: 'desy-listbox', template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>" }]
290
+ args: [{ selector: 'desy-listbox', template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *ngIf=\"!buttonContentHtml\">\n <ng-content></ng-content> \n </ng-container>\n <ng-container *ngIf=\"buttonContentHtml||text\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>" }]
291
291
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { listboxButton: [{
292
292
  type: ViewChild,
293
293
  args: ['button', { read: ElementRef, static: true }]
@@ -331,4 +331,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
331
331
  }], activeItemChange: [{
332
332
  type: Output
333
333
  }] } });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWJ1dHRvbnMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywyQ0FBMkMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLDJDQUEyQzthQUUvRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQztJQXNDeEMsWUFBb0IsaUJBQW9DO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRFUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWpCOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLHFCQUFnQixH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REFDckIsb0JBQW9CLGlIQVBSLFVBQVUsNEdBQ1osVUFBVSxvR0FDUCxVQUFVLG9HQUNSLFVBQVUseUVDdEM1Qyw2OEtBNkVNOztBRHJDSjtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxxQkFBcUI7d0RBQUM7NEZBVm5FLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxjQUFjO3dHQU9pQyxhQUFhO3NCQUFyRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxXQUFXO3NCQUFuRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ21CLGNBQWM7c0JBQXZFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNWLGNBQWM7c0JBQTNELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHSixjQUFjO3NCQUFyRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDQyxpQkFBaUI7c0JBQXZELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUU1QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7TGlzdGJveExhYmVsRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9saXN0Ym94LWxhYmVsLWRhdGEnO1xuaW1wb3J0IHtMaXN0Ym94SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGlzdGJveC1pdGVtLWRhdGEnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQge0xpc3Rib3hMYWJlbENvbXBvbmVudH0gZnJvbSAnLi9saXN0Ym94LWxhYmVsL2xpc3Rib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdGJveEl0ZW1Db21wb25lbnR9IGZyb20gJy4vbGlzdGJveC1pdGVtL2xpc3Rib3gtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7aW5saW5lUG9zaXRpb25pbmd9IGZyb20gJ3RpcHB5LmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1saXN0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Rib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3hDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIHN0YXRpYyByZWFkb25seSBLRVlfQ09ERV9FU0MgPSAnRXNjYXBlJztcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBsaXN0Ym94QnV0dG9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxpc3Rib3hMaXN0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0b29sdGlwJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgbGlzdGJveENvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsaXN0Ym94T3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Ym94TGFiZWxDb21wb25lbnQpIGxhYmVsQ29tcG9uZW50OiBMaXN0Ym94TGFiZWxDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdGJveEl0ZW1Db21wb25lbnQpIGl0ZW1Db21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8TGlzdGJveEl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGlzTXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBkb2VzQ2hhbmdlQnV0dG9uVGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgbGFiZWw6IExpc3Rib3hMYWJlbERhdGE7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlc0NvbnRhaW5lcjogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXRlbXM6IExpc3Rib3hJdGVtRGF0YVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHRpcHB5UHJvcGVydGllczogYW55OyAgICAgIC8vIFByb3BpZWRhZGVzIGRlIHRpcHB5XG4gIGN1cnJlbnRGb2N1c0luZGV4OiBudW1iZXI7IC8vIMONbmRpY2UgZGVsIGVsZW1lbnRvIGFjdHVhbCBjb24gZm9jdXNcbiAgYnV0dG9uQ29udGVudEh0bWw6IHN0cmluZzsgLy8gUHVlZGUgc2VyIGVsIHBhc2FkbyBwb3IgcGFyw6FtZXRybyBvIGVsIGl0ZW0gc2VsZWNjaW9uYWRvIGVuIGNhc28gZGUgY3VycmVudEZvY3VzSW5kZXg9dHJ1ZVxuICBpc0xpc3RWaXNpYmxlID0gZmFsc2U7ICAgICAvLyBJbmRpY2Egc2kgbGEgbGlzdGEgc2UgZXN0w6EgbW9zdHJhbmRvXG4gIGNvbnRlbnRJbml0ID0gZmFsc2U7ICAgICAgIC8vIFNlIGhhIGluaWNpYWRvIGVsIGNvbnRlbmlkb1xuICBwZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSBmYWxzZTtcbiAgcGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG5cbiAgLy8gY29uZGl0aW9uYWxJZCB5IGNvbmRpdGlvbmFsSXRlbSByZXByZXNlbnRhbiBlbiBkZXN5LWh0bWwgZWwgaXRlbSBhY3Rpdm8uIEFxdcOtIGVzIG1lam9yIG9idGVuZXJsbyBjdWFuZG8gc2UgbmVjZXNpdGFcbiAgbGFzdEFjdGl2ZUl0ZW1zOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W107XG4gIGl0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBpdGVtTGlzdDogTGlzdGJveEl0ZW1EYXRhW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGJveENvbnRlbnQgJiYgdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmluaXRUaXBweSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pdGVtTGlzdCA9IHRoaXMuaXRlbXM7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgICB0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgJiYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QpIHtcbiAgICAgIHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG4gICAgICB0aGlzLmxpc3Rib3hMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBzZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zID0gW107XG4gICAgdGhpcy5pdGVtTGlzdCA9IFtdO1xuICAgIHRoaXMuaXRlbUNvbXBvbmVudExpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBpdGVtLml0ZW1DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpKTtcbiAgICAgIHRoaXMuaXRlbUNvbXBvbmVudFN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICAgICAgXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZUl0ZW1zRGF0YSgpOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1MaXN0XG4gICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gaXRlbS5hY3RpdmUgPyB7aXRlbSwgaW5kZXh9IDogbnVsbClcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlSXRlbUNoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjaGVja0FjdGl2ZUl0ZW1zKCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVJdGVtczogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdID0gdGhpcy5pdGVtTGlzdFxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IGl0ZW0uYWN0aXZlID8ge2l0ZW0sIGluZGV4fSA6IG51bGwpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG5cbiAgICAvLyBzZSBjb21wcnVlYmEgc2kgYWxnw7puIGl0ZW0gaGEgY2FtYmlhZG8gc3UgZXN0YWRvIGRlIGFjdGl2ZVxuICAgIGxldCBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5sYXN0QWN0aXZlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhY3RpdmVJdGVtc1tpXS5pbmRleCAhPT0gdGhpcy5sYXN0QWN0aXZlSXRlbXNbaV0uaW5kZXgpIHtcbiAgICAgICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTaSBoYXkgY2FtYmlvcyBleHRlcm5vcyB5IGVzIHNlbGVjY2nDs24gw7puaWNhLCBhbnVsYW1vcyBsYSBzZWxlY2Npw7NuIGFudGVyaW9yXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmICF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlICYmIGhhc0FjdGl2ZUl0ZW1DaGFuZ2UpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtcy5sZW5ndGggIT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2ZUl0ZW0gb2YgYWN0aXZlSXRlbXMpIHtcbiAgICAgICAgICBpZiAodGhpcy5sYXN0QWN0aXZlSXRlbXMuZmluZEluZGV4KGkgPT4gaS5pbmRleCA9PT0gYWN0aXZlSXRlbS5pbmRleCkgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoYWN0aXZlSXRlbS5pbmRleCwgZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFjdGl2ZUl0ZW1zID0gYWN0aXZlSXRlbXMuZmlsdGVyKGFjdGl2ZUl0ZW0gPT4gYWN0aXZlSXRlbS5pdGVtLmFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RBY3RpdmVJdGVtcyA9IGFjdGl2ZUl0ZW1zO1xuXG4gICAgLy8gU2UgY2FtYmlhIGVsIGNvbnRlbmlkbyBkZWwgYm90w7NuXG4gICAgaWYgKHRoaXMuZG9lc0NoYW5nZUJ1dHRvblRleHQgJiYgIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUgJiYgYWN0aXZlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWN0aXZlSXRlbU9wdGlvbiA9IHRoaXMubGlzdGJveE9wdGlvbnMuZmluZCgoaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBhY3RpdmVJdGVtc1swXS5pbmRleCk7XG4gICAgICBpZiAoYWN0aXZlSXRlbU9wdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbkNvbnRlbnRIdG1sID0gYWN0aXZlSXRlbU9wdGlvbi5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25Db250ZW50SHRtbCA9IHRoaXMuaHRtbCA/IHRoaXMuaHRtbCA6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGNhbWJpb3MsIHNlIGVtaXRlblxuICAgIGlmIChoYXNBY3RpdmVJdGVtQ2hhbmdlKSB7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtTGlzdCk7XG4gICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdChhY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gYWN0aXZlSXRlbXNbMF0uaXRlbSA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlzdFNob3coKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RWaXNpYmxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5saXN0Ym94TGlzdCkge1xuICAgICAgdGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QgPSB0cnVlO1xuICAgICAgLy9zZXRUaW1lb3V0KCgpID0+IHRoaXMubGlzdGJveExpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBvbkxpc3RDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlzdFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTGlzdEZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1zRGF0YSA9IHRoaXMuZ2V0QWN0aXZlSXRlbXNEYXRhKCk7XG4gICAgaWYgKGFjdGl2ZUl0ZW1zRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoYWN0aXZlSXRlbXNEYXRhWzBdLml0ZW0sIGFjdGl2ZUl0ZW1zRGF0YVswXS5pbmRleCkpO1xuICAgICAgaWYgKGFjdGl2ZUVsZW0pIHtcbiAgICAgICAgYWN0aXZlRWxlbS5mb2N1cygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gYWN0aXZlSXRlbXNEYXRhWzBdLmluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtTGlzdCAmJiB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSAwO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbSgwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlbGVtZW50IHRvIGZvY3VzJyk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvY3VzKHBvc2l0aW9uOiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHBvc2l0aW9uID49IDAgJiYgcG9zaXRpb24gPCB0aGlzLml0ZW1MaXN0Lmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9jdXNJbmRleCA9IHBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNwYWNlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbSh0aGlzLmN1cnJlbnRGb2N1c0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4LCBmYWxzZSkpO1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXgsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEl0ZW1BY3RpdmVWYWx1ZShpbmRleCwgIXRoaXMuaXRlbUxpc3RbaW5kZXhdLmFjdGl2ZSk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXg6IG51bWJlciwgYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgIT09IG51bGwgJiYgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWFjdGl2YXRlZEl0ZW0gPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmdldChpbmRleCk7XG4gICAgICBkZWFjdGl2YXRlZEl0ZW0/LnNldEFjdGl2ZShhY3RpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1MaXN0W2luZGV4XS5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogTcOpdG9kb3MgcGFyYSBmYWNpbGl0YXIgY29udGVuaWRvIGFsIHRlbXBsYXRlXG4gICAqL1xuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogdGhpcy5pZCArICctbGlzdGJveC1pdGVtJztcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBpdGVtSWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgaXRlbUlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbUlkID0gdGhpcy5nZXRJZFByZWZpeCgpO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBpdGVtSWQgKz0gYC0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtSWQ7XG4gIH1cblxuICBoYXNMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5sYWJlbCB8fCB0aGlzLmxhYmVsQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldExhYmVsQ29udGVudChsYWJlbDogTGlzdGJveExhYmVsRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhYmVsLmh0bWwgPyBsYWJlbC5odG1sIDogYDxwPiR7IFN0cmluZ1V0aWxzLmVzY2FwZUh0bWwobGFiZWwudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaW5pdFRpcHB5KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnRUb29sdGlwID0gdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxpc3Rib3hCdXR0b25FbGVtZW50ID0gdGhpcy5saXN0Ym94QnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy50aXBweVByb3BlcnRpZXMgPSB7ICAgICAgICBcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICBpbmxpbmVQb3NpdGlvbmluZzogdHJ1ZSwgICAgICAgIFxuICAgICAgY29udGVudDogY29udGVudFRvb2x0aXAsXG4gICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICAgIGhpZGVPbkNsaWNrOiB0cnVlLFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCAtMTBdLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBmbihpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25DcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BzLmhpZGVPblBvcHBlckJsdXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgZm4oe2hpZGV9KTogYW55IHtcblxuICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IExpc3Rib3hDb21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIGxpc3Rib3hCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25TaG93KCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkhpZGUoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlubGluZVBvc2l0aW9uaW5nXG4gICAgICBdLFxuICAgICAgcm9sZTogZmFsc2UsXG4gICAgICBhcmlhOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgICBvblNob3c6IHRoaXMub25MaXN0U2hvdy5iaW5kKHRoaXMpLFxuICAgICAgb25IaWRkZW46IHRoaXMub25MaXN0Q2xvc2UuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cbiAgXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzZXNDb250YWluZXIgPyBjbGFzc2VzQ29udGFpbmVyIDogJ3JlbGF0aXZlJ1wiIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCI+XG4gIDxkaXYgW2lkXT1cImlkICsgJy1sYWJlbCdcIiBbY2xhc3NdPVwiWydtYi1zbScsIGxhYmVsQ29tcG9uZW50Py5jbGFzc2VzLCBsYWJlbD8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGxhYmVsQ29tcG9uZW50LCBodG1sOiBsYWJlbCA/IGdldExhYmVsQ29udGVudChsYWJlbCkgOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxidXR0b24gI2J1dHRvbiBbaWRdPVwiaWQgKyAnLWJ1dHRvbidcIlxuICAgICAgICAgIFtjbGFzc109XCJbJ2MtbGlzdGJveCcsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBuZ3hUaXBweSBbdGlwcHlQcm9wc109XCJ0aXBweVByb3BlcnRpZXNcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiW2hhc0xhYmVsKCkgPyBpZCArICctbGFiZWwnIDogbnVsbCwgaWQgKyAnLWJ1dHRvbiddIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXJvbGVdID0gXCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSA9IFwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1saXZlXSA9IFwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWVycm9yTWVzc2FnZV0gPSBcImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oYXNwcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS10YWJpbmRleF0gPSBcInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggc2VsZi1jZW50ZXIgbWF4LXcteHMgYWxpZ24tbWlkZGxlIHRydW5jYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgaHRtbDogYnV0dG9uQ29udGVudEh0bWwsIHRleHQ6IHRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgPHN2ZyBjbGFzcz1cImlubGluZS1ibG9jayAtbXItMiAgYWxpZ24tbWlkZGxlIC1teS1weFwiIHZpZXdCb3g9XCIwIDAgOTYgOTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiB3aWR0aD1cIjEuNWVtXCIgaGVpZ2h0PVwiMS41ZW1cIj48Zz48cGF0aCBkPVwiTTQ2LjcxIDU4LjAzN2ExLjgyMyAxLjgyMyAwIDAwMi41ODEgMEw2Mi4wNDggNDUuMjhhMS44MjMgMS44MjMgMCAwMC0xLjI5LTMuMTEzSDM1LjI0M2ExLjgyMyAxLjgyMyAwIDAwLTEuMjkxIDMuMTEzelwiLz48L2c+PC9zdmc+XG4gIDwvYnV0dG9uPlxuICA8ZGl2ICN0b29sdGlwIFtjbGFzc109XCJbJ2MtbGlzdGJveF9fdG9vbHRpcCAtbWwtc20gbXQtMiBib3JkZXIgYm9yZGVyLW5ldXRyYWwtYmFzZSBzaGFkb3ctbWQgYmctd2hpdGUnLCBjbGFzc2VzVG9vbHRpcF0gfCBtYWtlSHRtbExpc3RcIj5cbiAgICA8dWwgKm5nSWY9XCJpdGVtTGlzdFwiXG4gICAgICAgICNsaXN0IFtpZF09XCJpZFwiXG4gICAgICAgIChmb2N1cyk9XCJvbkxpc3RGb2N1cygpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJtb3ZlRm9jdXMoY3VycmVudEZvY3VzSW5kZXggLSAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm1vdmVGb2N1cyhjdXJyZW50Rm9jdXNJbmRleCArIDEsICRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5ob21lKT1cIm1vdmVGb2N1cygwLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uZW5kKT1cIm1vdmVGb2N1cyhpdGVtcy5sZW5ndGggLSAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25TcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIG91dGxpbmUtbm9uZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoYXNMYWJlbCgpID8gaWQgOiAoYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGwpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwiaXNNdWx0aXNlbGVjdGFibGUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF0gPSBcImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSA9IFwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXSA9IFwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc10gPSBcImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF0gPSBcImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV0gPSBcImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdID0gXCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSA9IFwibGFzdEFjdGl2ZUl0ZW1zICYmIGxhc3RBY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gZ2V0SXRlbUlkKGxhc3RBY3RpdmVJdGVtc1swXS5pdGVtLCBsYXN0QWN0aXZlSXRlbXNbMF0uaW5kZXgpIDogbnVsbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtTGlzdDsgaW5kZXggYXMgaW5kZXhcIj5cbiAgICAgICAgPGxpICNvcHRpb24gKm5nSWY9XCJpdGVtXCIgcm9sZT1cIm9wdGlvblwiIChjbGljayk9XCJzZWxlY3RJdGVtKGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiWydmbGV4IGl0ZW1zLWNlbnRlciBwci1iYXNlIHBsLWxnIHB5LXNtIGhvdmVyOmJnLXByaW1hcnktYmFzZSBob3Zlcjp0ZXh0LXdoaXRlIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMgZm9jdXM6dGV4dC1ibGFjaycsIGl0ZW0uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaW5kZXggPT09IGN1cnJlbnRGb2N1c0luZGV4fVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYWN0aXZlID8gJ3RydWUnIDogKGl0ZW0uYXJpYUxhYmVsID8gaXRlbS5hcmlhTGFiZWwgOiBudWxsKVwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SXRlbUlkKGl0ZW0sIGluZGV4KVwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlID8gaXRlbS50aXRsZSA6IG51bGxcIlxuICAgICAgICAgICAgKGRlc3lBdHRyaWJ1dGVDaGFuZ2UpPVwib25DaGFuZ2VJdGVtQ2hlY2tlZCgpXCIgW2F0dHJpYnV0ZXNUb0NoZWNrXT1cIidhcmlhLXNlbGVjdGVkJ1wiIFtkZXN5QXR0cmlidXRlQ2hhbmdlRW5hYmxlZF09XCJpdGVtcyAmJiBpdGVtcy5sZW5ndGggPiAwXCJcblxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpdGVtLmFyaWFEZXNjcmliZWRCeSA/IGl0ZW0uYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl0gPSBcIml0ZW0uYXJpYUhpZGRlbiA/IGl0ZW0uYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpdGVtLmFyaWFDb250cm9scyA/IGl0ZW0uYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJpdGVtLmFyaWFDdXJyZW50ID8gaXRlbS5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXSA9IFwiaXRlbS5hcmlhTGl2ZSA/IGl0ZW0uYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWQgPyBpdGVtLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlID8gaXRlbS5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXSA9IFwiaXRlbS5hcmlhSGFzUG9wdXAgPyBpdGVtLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS10YWJpbmRleF0gPSBcIml0ZW0udGFiaW5kZXggPyBpdGVtLnRhYmluZGV4IDogbnVsbFwiXG5cbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5hY3RpdmVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyB0ZW1wbGF0ZTogaXRlbVsnY29udGVudCddLCBodG1sOiBpdGVtLmh0bWwsIHRleHQ6IGl0ZW0udGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWJ1dHRvbnMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywyQ0FBMkMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLDJDQUEyQzthQUUvRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQztJQXNDeEMsWUFBb0IsaUJBQW9DO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRFUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWpCOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLHFCQUFnQixH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REFDckIsb0JBQW9CLGlIQVBSLFVBQVUsNEdBQ1osVUFBVSxvR0FDUCxVQUFVLG9HQUNSLFVBQVUseUVDdEM1QyxncUxBa0ZNOztBRDFDSjtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxxQkFBcUI7d0RBQUM7NEZBVm5FLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxjQUFjO3dHQU9pQyxhQUFhO3NCQUFyRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxXQUFXO3NCQUFuRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ21CLGNBQWM7c0JBQXZFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNWLGNBQWM7c0JBQTNELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHSixjQUFjO3NCQUFyRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDQyxpQkFBaUI7c0JBQXZELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUU1QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7TGlzdGJveExhYmVsRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9saXN0Ym94LWxhYmVsLWRhdGEnO1xuaW1wb3J0IHtMaXN0Ym94SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGlzdGJveC1pdGVtLWRhdGEnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQge0xpc3Rib3hMYWJlbENvbXBvbmVudH0gZnJvbSAnLi9saXN0Ym94LWxhYmVsL2xpc3Rib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdGJveEl0ZW1Db21wb25lbnR9IGZyb20gJy4vbGlzdGJveC1pdGVtL2xpc3Rib3gtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7aW5saW5lUG9zaXRpb25pbmd9IGZyb20gJ3RpcHB5LmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1saXN0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Rib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3hDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIHN0YXRpYyByZWFkb25seSBLRVlfQ09ERV9FU0MgPSAnRXNjYXBlJztcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBsaXN0Ym94QnV0dG9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxpc3Rib3hMaXN0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0b29sdGlwJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgbGlzdGJveENvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsaXN0Ym94T3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Ym94TGFiZWxDb21wb25lbnQpIGxhYmVsQ29tcG9uZW50OiBMaXN0Ym94TGFiZWxDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdGJveEl0ZW1Db21wb25lbnQpIGl0ZW1Db21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8TGlzdGJveEl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGlzTXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBkb2VzQ2hhbmdlQnV0dG9uVGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgbGFiZWw6IExpc3Rib3hMYWJlbERhdGE7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlc0NvbnRhaW5lcjogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXRlbXM6IExpc3Rib3hJdGVtRGF0YVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHRpcHB5UHJvcGVydGllczogYW55OyAgICAgIC8vIFByb3BpZWRhZGVzIGRlIHRpcHB5XG4gIGN1cnJlbnRGb2N1c0luZGV4OiBudW1iZXI7IC8vIMONbmRpY2UgZGVsIGVsZW1lbnRvIGFjdHVhbCBjb24gZm9jdXNcbiAgYnV0dG9uQ29udGVudEh0bWw6IHN0cmluZzsgLy8gUHVlZGUgc2VyIGVsIHBhc2FkbyBwb3IgcGFyw6FtZXRybyBvIGVsIGl0ZW0gc2VsZWNjaW9uYWRvIGVuIGNhc28gZGUgY3VycmVudEZvY3VzSW5kZXg9dHJ1ZVxuICBpc0xpc3RWaXNpYmxlID0gZmFsc2U7ICAgICAvLyBJbmRpY2Egc2kgbGEgbGlzdGEgc2UgZXN0w6EgbW9zdHJhbmRvXG4gIGNvbnRlbnRJbml0ID0gZmFsc2U7ICAgICAgIC8vIFNlIGhhIGluaWNpYWRvIGVsIGNvbnRlbmlkb1xuICBwZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSBmYWxzZTtcbiAgcGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG5cbiAgLy8gY29uZGl0aW9uYWxJZCB5IGNvbmRpdGlvbmFsSXRlbSByZXByZXNlbnRhbiBlbiBkZXN5LWh0bWwgZWwgaXRlbSBhY3Rpdm8uIEFxdcOtIGVzIG1lam9yIG9idGVuZXJsbyBjdWFuZG8gc2UgbmVjZXNpdGFcbiAgbGFzdEFjdGl2ZUl0ZW1zOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W107XG4gIGl0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBpdGVtTGlzdDogTGlzdGJveEl0ZW1EYXRhW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGJveENvbnRlbnQgJiYgdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmluaXRUaXBweSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pdGVtTGlzdCA9IHRoaXMuaXRlbXM7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgICB0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgJiYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QpIHtcbiAgICAgIHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG4gICAgICB0aGlzLmxpc3Rib3hMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBzZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zID0gW107XG4gICAgdGhpcy5pdGVtTGlzdCA9IFtdO1xuICAgIHRoaXMuaXRlbUNvbXBvbmVudExpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBpdGVtLml0ZW1DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpKTtcbiAgICAgIHRoaXMuaXRlbUNvbXBvbmVudFN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICAgICAgXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZUl0ZW1zRGF0YSgpOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1MaXN0XG4gICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gaXRlbS5hY3RpdmUgPyB7aXRlbSwgaW5kZXh9IDogbnVsbClcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlSXRlbUNoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjaGVja0FjdGl2ZUl0ZW1zKCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVJdGVtczogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdID0gdGhpcy5pdGVtTGlzdFxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IGl0ZW0uYWN0aXZlID8ge2l0ZW0sIGluZGV4fSA6IG51bGwpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG5cbiAgICAvLyBzZSBjb21wcnVlYmEgc2kgYWxnw7puIGl0ZW0gaGEgY2FtYmlhZG8gc3UgZXN0YWRvIGRlIGFjdGl2ZVxuICAgIGxldCBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5sYXN0QWN0aXZlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhY3RpdmVJdGVtc1tpXS5pbmRleCAhPT0gdGhpcy5sYXN0QWN0aXZlSXRlbXNbaV0uaW5kZXgpIHtcbiAgICAgICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTaSBoYXkgY2FtYmlvcyBleHRlcm5vcyB5IGVzIHNlbGVjY2nDs24gw7puaWNhLCBhbnVsYW1vcyBsYSBzZWxlY2Npw7NuIGFudGVyaW9yXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmICF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlICYmIGhhc0FjdGl2ZUl0ZW1DaGFuZ2UpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtcy5sZW5ndGggIT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2ZUl0ZW0gb2YgYWN0aXZlSXRlbXMpIHtcbiAgICAgICAgICBpZiAodGhpcy5sYXN0QWN0aXZlSXRlbXMuZmluZEluZGV4KGkgPT4gaS5pbmRleCA9PT0gYWN0aXZlSXRlbS5pbmRleCkgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoYWN0aXZlSXRlbS5pbmRleCwgZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFjdGl2ZUl0ZW1zID0gYWN0aXZlSXRlbXMuZmlsdGVyKGFjdGl2ZUl0ZW0gPT4gYWN0aXZlSXRlbS5pdGVtLmFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RBY3RpdmVJdGVtcyA9IGFjdGl2ZUl0ZW1zO1xuXG4gICAgLy8gU2UgY2FtYmlhIGVsIGNvbnRlbmlkbyBkZWwgYm90w7NuXG4gICAgaWYgKHRoaXMuZG9lc0NoYW5nZUJ1dHRvblRleHQgJiYgIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUgJiYgYWN0aXZlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWN0aXZlSXRlbU9wdGlvbiA9IHRoaXMubGlzdGJveE9wdGlvbnMuZmluZCgoaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBhY3RpdmVJdGVtc1swXS5pbmRleCk7XG4gICAgICBpZiAoYWN0aXZlSXRlbU9wdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbkNvbnRlbnRIdG1sID0gYWN0aXZlSXRlbU9wdGlvbi5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25Db250ZW50SHRtbCA9IHRoaXMuaHRtbCA/IHRoaXMuaHRtbCA6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGNhbWJpb3MsIHNlIGVtaXRlblxuICAgIGlmIChoYXNBY3RpdmVJdGVtQ2hhbmdlKSB7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtTGlzdCk7XG4gICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdChhY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gYWN0aXZlSXRlbXNbMF0uaXRlbSA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlzdFNob3coKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RWaXNpYmxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5saXN0Ym94TGlzdCkge1xuICAgICAgdGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QgPSB0cnVlO1xuICAgICAgLy9zZXRUaW1lb3V0KCgpID0+IHRoaXMubGlzdGJveExpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBvbkxpc3RDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlzdFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTGlzdEZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1zRGF0YSA9IHRoaXMuZ2V0QWN0aXZlSXRlbXNEYXRhKCk7XG4gICAgaWYgKGFjdGl2ZUl0ZW1zRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoYWN0aXZlSXRlbXNEYXRhWzBdLml0ZW0sIGFjdGl2ZUl0ZW1zRGF0YVswXS5pbmRleCkpO1xuICAgICAgaWYgKGFjdGl2ZUVsZW0pIHtcbiAgICAgICAgYWN0aXZlRWxlbS5mb2N1cygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gYWN0aXZlSXRlbXNEYXRhWzBdLmluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtTGlzdCAmJiB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSAwO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbSgwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlbGVtZW50IHRvIGZvY3VzJyk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvY3VzKHBvc2l0aW9uOiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHBvc2l0aW9uID49IDAgJiYgcG9zaXRpb24gPCB0aGlzLml0ZW1MaXN0Lmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9jdXNJbmRleCA9IHBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNwYWNlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbSh0aGlzLmN1cnJlbnRGb2N1c0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4LCBmYWxzZSkpO1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXgsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEl0ZW1BY3RpdmVWYWx1ZShpbmRleCwgIXRoaXMuaXRlbUxpc3RbaW5kZXhdLmFjdGl2ZSk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXg6IG51bWJlciwgYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgIT09IG51bGwgJiYgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWFjdGl2YXRlZEl0ZW0gPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmdldChpbmRleCk7XG4gICAgICBkZWFjdGl2YXRlZEl0ZW0/LnNldEFjdGl2ZShhY3RpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1MaXN0W2luZGV4XS5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogTcOpdG9kb3MgcGFyYSBmYWNpbGl0YXIgY29udGVuaWRvIGFsIHRlbXBsYXRlXG4gICAqL1xuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogdGhpcy5pZCArICctbGlzdGJveC1pdGVtJztcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBpdGVtSWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgaXRlbUlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbUlkID0gdGhpcy5nZXRJZFByZWZpeCgpO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBpdGVtSWQgKz0gYC0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtSWQ7XG4gIH1cblxuICBoYXNMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5sYWJlbCB8fCB0aGlzLmxhYmVsQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldExhYmVsQ29udGVudChsYWJlbDogTGlzdGJveExhYmVsRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhYmVsLmh0bWwgPyBsYWJlbC5odG1sIDogYDxwPiR7IFN0cmluZ1V0aWxzLmVzY2FwZUh0bWwobGFiZWwudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaW5pdFRpcHB5KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnRUb29sdGlwID0gdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxpc3Rib3hCdXR0b25FbGVtZW50ID0gdGhpcy5saXN0Ym94QnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy50aXBweVByb3BlcnRpZXMgPSB7ICAgICAgICBcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICBpbmxpbmVQb3NpdGlvbmluZzogdHJ1ZSwgICAgICAgIFxuICAgICAgY29udGVudDogY29udGVudFRvb2x0aXAsXG4gICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICAgIGhpZGVPbkNsaWNrOiB0cnVlLFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCAtMTBdLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBmbihpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25DcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BzLmhpZGVPblBvcHBlckJsdXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgZm4oe2hpZGV9KTogYW55IHtcblxuICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IExpc3Rib3hDb21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIGxpc3Rib3hCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25TaG93KCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkhpZGUoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlubGluZVBvc2l0aW9uaW5nXG4gICAgICBdLFxuICAgICAgcm9sZTogZmFsc2UsXG4gICAgICBhcmlhOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgICBvblNob3c6IHRoaXMub25MaXN0U2hvdy5iaW5kKHRoaXMpLFxuICAgICAgb25IaWRkZW46IHRoaXMub25MaXN0Q2xvc2UuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cbiAgXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzZXNDb250YWluZXIgPyBjbGFzc2VzQ29udGFpbmVyIDogJ3JlbGF0aXZlJ1wiIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCI+XG4gIDxkaXYgW2lkXT1cImlkICsgJy1sYWJlbCdcIiBbY2xhc3NdPVwiWydtYi1zbScsIGxhYmVsQ29tcG9uZW50Py5jbGFzc2VzLCBsYWJlbD8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGxhYmVsQ29tcG9uZW50LCBodG1sOiBsYWJlbCA/IGdldExhYmVsQ29udGVudChsYWJlbCkgOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxidXR0b24gI2J1dHRvbiBbaWRdPVwiaWQgKyAnLWJ1dHRvbidcIlxuICAgICAgICAgIFtjbGFzc109XCJbJ2MtbGlzdGJveCcsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBuZ3hUaXBweSBbdGlwcHlQcm9wc109XCJ0aXBweVByb3BlcnRpZXNcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiW2hhc0xhYmVsKCkgPyBpZCArICctbGFiZWwnIDogbnVsbCwgaWQgKyAnLWJ1dHRvbiddIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXJvbGVdID0gXCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSA9IFwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1saXZlXSA9IFwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWVycm9yTWVzc2FnZV0gPSBcImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oYXNwcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS10YWJpbmRleF0gPSBcInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggc2VsZi1jZW50ZXIgbWF4LXcteHMgYWxpZ24tbWlkZGxlIHRydW5jYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXR0b25Db250ZW50SHRtbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiBcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9uQ29udGVudEh0bWx8fHRleHRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGh0bWw6IGJ1dHRvbkNvbnRlbnRIdG1sLCB0ZXh0OiB0ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDxzdmcgY2xhc3M9XCJpbmxpbmUtYmxvY2sgLW1yLTIgIGFsaWduLW1pZGRsZSAtbXktcHhcIiB2aWV3Qm94PVwiMCAwIDk2IDk2XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxLjVlbVwiIGhlaWdodD1cIjEuNWVtXCI+PGc+PHBhdGggZD1cIk00Ni43MSA1OC4wMzdhMS44MjMgMS44MjMgMCAwMDIuNTgxIDBMNjIuMDQ4IDQ1LjI4YTEuODIzIDEuODIzIDAgMDAtMS4yOS0zLjExM0gzNS4yNDNhMS44MjMgMS44MjMgMCAwMC0xLjI5MSAzLjExM3pcIi8+PC9nPjwvc3ZnPlxuICA8L2J1dHRvbj5cbiAgPGRpdiAjdG9vbHRpcCBbY2xhc3NdPVwiWydjLWxpc3Rib3hfX3Rvb2x0aXAgLW1sLXNtIG10LTIgYm9yZGVyIGJvcmRlci1uZXV0cmFsLWJhc2Ugc2hhZG93LW1kIGJnLXdoaXRlJywgY2xhc3Nlc1Rvb2x0aXBdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgPHVsICpuZ0lmPVwiaXRlbUxpc3RcIlxuICAgICAgICAjbGlzdCBbaWRdPVwiaWRcIlxuICAgICAgICAoZm9jdXMpPVwib25MaXN0Rm9jdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93VXApPVwibW92ZUZvY3VzKGN1cnJlbnRGb2N1c0luZGV4IC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJtb3ZlRm9jdXMoY3VycmVudEZvY3VzSW5kZXggKyAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uaG9tZSk9XCJtb3ZlRm9jdXMoMCwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVuZCk9XCJtb3ZlRm9jdXMoaXRlbXMubGVuZ3RoIC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uU3BhY2UoJGV2ZW50KVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGFzTGFiZWwoKSA/IGlkIDogKGFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cImlzTXVsdGlzZWxlY3RhYmxlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV0gPSBcImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl0gPSBcImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxpdmVdID0gXCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdID0gXCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0gPSBcImxhc3RBY3RpdmVJdGVtcyAmJiBsYXN0QWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IGdldEl0ZW1JZChsYXN0QWN0aXZlSXRlbXNbMF0uaXRlbSwgbGFzdEFjdGl2ZUl0ZW1zWzBdLmluZGV4KSA6IG51bGxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbUxpc3Q7IGluZGV4IGFzIGluZGV4XCI+XG4gICAgICAgIDxsaSAjb3B0aW9uICpuZ0lmPVwiaXRlbVwiIHJvbGU9XCJvcHRpb25cIiAoY2xpY2spPVwic2VsZWN0SXRlbShpbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnZmxleCBpdGVtcy1jZW50ZXIgcHItYmFzZSBwbC1sZyBweS1zbSBob3ZlcjpiZy1wcmltYXJ5LWJhc2UgaG92ZXI6dGV4dC13aGl0ZSBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIGZvY3VzOnRleHQtYmxhY2snLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGluZGV4ID09PSBjdXJyZW50Rm9jdXNJbmRleH1cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFjdGl2ZSA/ICd0cnVlJyA6IChpdGVtLmFyaWFMYWJlbCA/IGl0ZW0uYXJpYUxhYmVsIDogbnVsbClcIlxuICAgICAgICAgICAgW2lkXT1cImdldEl0ZW1JZChpdGVtLCBpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZSA/IGl0ZW0udGl0bGUgOiBudWxsXCJcbiAgICAgICAgICAgIChkZXN5QXR0cmlidXRlQ2hhbmdlKT1cIm9uQ2hhbmdlSXRlbUNoZWNrZWQoKVwiIFthdHRyaWJ1dGVzVG9DaGVja109XCInYXJpYS1zZWxlY3RlZCdcIiBbZGVzeUF0dHJpYnV0ZUNoYW5nZUVuYWJsZWRdPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMFwiXG5cbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5hcmlhRGVzY3JpYmVkQnkgPyBpdGVtLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJpdGVtLmFyaWFIaWRkZW4gPyBpdGVtLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHMgPyBpdGVtLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiaXRlbS5hcmlhQ3VycmVudCA/IGl0ZW0uYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcIml0ZW0uYXJpYUxpdmUgPyBpdGVtLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkID8gaXRlbS5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIml0ZW0uYXJpYUVycm9yTWVzc2FnZSA/IGl0ZW0uYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF0gPSBcIml0ZW0uYXJpYUhhc1BvcHVwID8gaXRlbS5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtdGFiaW5kZXhdID0gXCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6IG51bGxcIlxuXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0uYWN0aXZlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgdGVtcGxhdGU6IGl0ZW1bJ2NvbnRlbnQnXSwgaHRtbDogaXRlbS5odG1sLCB0ZXh0OiBpdGVtLnRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=