@pepperi-addons/ngx-lib 0.4.2-beta.321 → 0.4.2-beta.323

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 (26) hide show
  1. package/core/common/services/addon.service.d.ts +3 -0
  2. package/esm2020/core/common/services/addon.service.mjs +58 -13
  3. package/esm2020/core/common/services/utilities.service.mjs +8 -13
  4. package/esm2020/group-buttons/group-buttons.component.mjs +19 -6
  5. package/esm2020/list/list.component.mjs +23 -6
  6. package/esm2020/remote-loader/remote-loader-element.component.mjs +57 -1
  7. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
  8. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  9. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +23 -5
  10. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  11. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +61 -5
  12. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  13. package/fesm2015/pepperi-addons-ngx-lib.mjs +65 -24
  14. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  15. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
  16. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  17. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +22 -5
  18. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  19. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +56 -1
  20. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  21. package/fesm2020/pepperi-addons-ngx-lib.mjs +64 -24
  22. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  23. package/group-buttons/group-buttons.component.d.ts +4 -2
  24. package/list/list.component.d.ts +5 -0
  25. package/package.json +1 -1
  26. package/remote-loader/remote-loader-element.component.d.ts +1 -0
@@ -8,8 +8,9 @@ import * as i4 from "@angular/material/menu";
8
8
  import * as i5 from "@angular/material/icon";
9
9
  import * as i6 from "@pepperi-addons/ngx-lib/icon";
10
10
  export class PepGroupButtonsComponent {
11
- constructor(layoutService) {
11
+ constructor(layoutService, changeDetectorRef) {
12
12
  this.layoutService = layoutService;
13
+ this.changeDetectorRef = changeDetectorRef;
13
14
  this.PepScreenSizeType = PepScreenSizeType;
14
15
  this.viewType = 'regular';
15
16
  this.styleType = 'weak';
@@ -29,6 +30,18 @@ export class PepGroupButtonsComponent {
29
30
  // this.buttonClick.unsubscribe();
30
31
  // }
31
32
  }
33
+ // MatMenu's own trigger sets its internal `_panelAnimationState` to 'enter' synchronously
34
+ // right after this click is handled (see MatMenuTrigger.openMenu()), but MatMenu is an
35
+ // OnPush component, so that mutation alone never schedules a re-check of its view when this
36
+ // whole tree is bootstrapped via Angular Elements (createCustomElement) rather than a
37
+ // normally-bootstrapped app — the panel gets created and correctly positioned by CDK Overlay,
38
+ // but stays rendered at its initial 'void' (opacity: 0, scale(0.8)) keyframe forever. A plain
39
+ // Angular app happens to pick up the change through other CD activity elsewhere in the tree;
40
+ // Angular Elements doesn't, so nudge it explicitly, once the current synchronous click
41
+ // dispatch (which is what flips the animation state) has finished.
42
+ onMenuTriggerClicked() {
43
+ setTimeout(() => this.changeDetectorRef.detectChanges());
44
+ }
32
45
  onButtonClicked(event, button) {
33
46
  const unselect = this.supportUnselect && this.selectedButtonKey === button?.key;
34
47
  this.selectedButtonKey = unselect ? '' : button?.key;
@@ -44,12 +57,12 @@ export class PepGroupButtonsComponent {
44
57
  }
45
58
  }
46
59
  }
47
- PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }], target: i0.ɵɵFactoryTarget.Component });
48
- PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i6.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
60
+ PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
61
+ PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i6.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
49
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, decorators: [{
50
63
  type: Component,
51
- args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
52
- }], ctorParameters: function () { return [{ type: i1.PepLayoutService }]; }, propDecorators: { viewType: [{
64
+ args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
65
+ }], ctorParameters: function () { return [{ type: i1.PepLayoutService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { viewType: [{
53
66
  type: Input
54
67
  }], styleType: [{
55
68
  type: Input
@@ -68,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
68
81
  }], buttonClick: [{
69
82
  type: Output
70
83
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDZSxpQkFBaUIsRUFDdEMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFZakMsTUFBTSxPQUFPLHdCQUF3QjtJQWlCakMsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBaEJsRCxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUc3QixhQUFRLEdBQTRCLFNBQVMsQ0FBQztRQUM5QyxjQUFTLEdBQWlCLE1BQU0sQ0FBQztRQUNqQyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQUM3QixZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUd6QixnQkFBVyxHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUl2RixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsMEJBQTBCO1FBQzFCLHNDQUFzQztRQUN0QyxJQUFJO0lBQ1IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZLEVBQUUsTUFBaUI7UUFDM0MsTUFBTSxRQUFRLEdBQVksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUV6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQUc7WUFDaEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ2hDLEtBQUs7U0FDUixDQUFDO1FBRUYsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7cUhBNUNRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDBVQ3JCckMsdTlJQThFYzsyRkR6REQsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG1CQUFtQjt1R0FRcEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0U2VydmljZSwgUGVwU2NyZWVuU2l6ZVR5cGUsIFBlcFN0eWxlVHlwZSwgUGVwU2l6ZVR5cGVcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBCdXR0b24sXG4gICAgSVBlcEJ1dHRvbkNsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5cbmV4cG9ydCB0eXBlIFBlcEdyb3VwQnV0dG9uc1ZpZXdUeXBlID0gJ3JlZ3VsYXInIHwgJ2Ryb3Bkb3duJyB8ICdzcGxpdCcgfCAndG9nZ2xlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdyb3VwLWJ1dHRvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5zY3NzJywgJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudGhlbWUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBHcm91cEJ1dHRvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIFBlcFNjcmVlblNpemVUeXBlID0gUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgc2NyZWVuU2l6ZTogUGVwU2NyZWVuU2l6ZVR5cGU7XG5cbiAgICBASW5wdXQoKSB2aWV3VHlwZTogUGVwR3JvdXBCdXR0b25zVmlld1R5cGUgPSAncmVndWxhcic7XG4gICAgQElucHV0KCkgc3R5bGVUeXBlOiBQZXBTdHlsZVR5cGUgPSAnd2Vhayc7XG4gICAgQElucHV0KCkgc2l6ZVR5cGU6IFBlcFNpemVUeXBlID0gJ21kJztcbiAgICBASW5wdXQoKSBidXR0b25zOiBBcnJheTxQZXBCdXR0b24+ID0gW107XG4gICAgQElucHV0KCkgYnV0dG9uc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgc3VwcG9ydFVuc2VsZWN0ID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRCdXR0b25LZXkgPSAnJztcbiAgICBASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPElQZXBCdXR0b25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEJ1dHRvbkNsaWNrRXZlbnQ+KCk7XG5cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKChzaXplKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuYnV0dG9uQ2xpY2spIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYnV0dG9uQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2tlZChldmVudDogRXZlbnQsIGJ1dHRvbjogUGVwQnV0dG9uKTogdm9pZCB7ICAgICAgIFxuICAgICAgICBjb25zdCB1bnNlbGVjdDogYm9vbGVhbiA9IHRoaXMuc3VwcG9ydFVuc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPT09IGJ1dHRvbj8ua2V5O1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPSB1bnNlbGVjdCA/ICcnIDogYnV0dG9uPy5rZXk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidXR0b25DbGljayA9IHtcbiAgICAgICAgICAgIHNvdXJjZTogdW5zZWxlY3QgPyBudWxsIDogYnV0dG9uLCBcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChidXR0b24/LmNhbGxiYWNrKSB7XG4gICAgICAgICAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uQ2xpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGJ1dHRvbkNsaWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncm91cC1idXR0b25zLWNvbnRhaW5lclwiIHBlcFJ0bERpcmVjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1R5cGUgPT09ICdyZWd1bGFyJ1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gcGVwLXNwYWNpbmctZWxlbWVudCBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImJ1dHRvbj8udmFsdWVcIj57eyBidXR0b24/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9ucyBwZXAtc3BhY2luZy1lbGVtZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie2Ryb3B1cDogc2NyZWVuU2l6ZSA+PSBQZXBTY3JlZW5TaXplVHlwZS5NRH1cIj5cbiAgICAgICAgPGJ1dHRvbiBbcGVwRGF0YVFhXT1cImJ1dHRvbnNbMF0/LnZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b25zWzBdKVwiIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uc1swXS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiIFt0aXRsZV09XCJidXR0b25zWzBdPy52YWx1ZVwiPnt7IGJ1dHRvbnNbMF0/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gcHVsbC1yaWdodCBmbGlwIGxhc3QtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc01lbnVcIiBbZGlzYWJsZWRdPVwiYnV0dG9uc0Rpc2FibGVkXCIgcGVwTWVudUJsdXIgbWF0LWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInt7IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdhcnJvd19kb3duJyA6ICdhcnJvd191cCcgfX1cIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1tZW51ICNhY3Rpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaSA9IGluZGV4OyBmaXJzdCBhcyBpc0ZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0ZpcnN0XCIgbWF0LW1lbnUtaXRlbSBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiYnV0dG9uPy52YWx1ZVwiPnt7IGJ1dHRvbj8udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwic3BsaXQtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0OyBsZXQgaXNMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIiBtYXQtYnV0dG9uIHBlcEJ1dHRvbkJsdXJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgYnV0dG9uPy5jbGFzc05hbWVzIH19IHB1bGwtbGVmdCBmbGlwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdmaXJzdC1idXR0b24nOiBpc0ZpcnN0LCBcbiAgICAgICAgICAgICAgICAnbWlkZGxlLWJ1dHRvbic6ICFpc0ZpcnN0ICYmICFpc0xhc3QsIFxuICAgICAgICAgICAgICAgICdsYXN0LWJ1dHRvbic6IGlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZX1cIiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7YnV0dG9uOiBidXR0b259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInZpZXdUeXBlID09PSAndG9nZ2xlJ1wiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbnNcIiBbbmdDbGFzc109XCJ7ICdzdHJldGNoJzogc3RyZXRjaCB9XCI+XG4gICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaW5kZXg7IGxldCBpc0ZpcnN0ID0gZmlyc3Q7IGxldCBpc0xhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiIG1hdC1idXR0b24gcGVwQnV0dG9uQmx1clxuICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBidXR0b24/LmNsYXNzTmFtZXMgfX0gcHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZCB8fCBidXR0b24uZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZpcnN0LWJ1dHRvbic6IGlzRmlyc3QgJiYgIWlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ21pZGRsZS1idXR0b24nOiAhaXNGaXJzdCAmJiAhaXNMYXN0LCBcbiAgICAgICAgICAgICAgICAnbGFzdC1idXR0b24nOiBpc0xhc3QgJiYgIWlzRmlyc3QsXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAnaXMtc2VsZWN0ZWQnOiBidXR0b24/LmtleSAhPT0gJycgJiYgYnV0dG9uPy5rZXkgPT09IHNlbGVjdGVkQnV0dG9uS2V5fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZTsgY29udGV4dDoge2J1dHRvbjogYnV0dG9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBsZXQtYnV0dG9uPVwiYnV0dG9uXCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25OYW1lICYmICghYnV0dG9uLmljb25Qb3NpdGlvbiB8fCBidXR0b24uaWNvblBvc2l0aW9uID09PSAnc3RhcnQnKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogYnV0dG9uLnZhbHVlIH1cIj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ7e2J1dHRvbi5pY29uTmFtZX19XCI+PC9wZXAtaWNvbj5cbiAgICA8L21hdC1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uLnZhbHVlXCIgY2xhc3M9XCJlbGxpcHNpcyBwdWxsLWxlZnQgZmxpcFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J1dHRvbi10aXRsZS13aXRoLWljb24nOiBidXR0b24uaWNvbk5hbWUsICdpY29uLWJlZm9yZSc6IGJ1dHRvbi5pY29uUG9zaXRpb24gPT09ICdzdGFydCcgfVwiXG4gICAgICAgIFt0aXRsZV09XCJidXR0b24udmFsdWVcIj5cbiAgICAgICAge3tidXR0b24udmFsdWV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b24uaWNvbk5hbWUgJiYgYnV0dG9uLmljb25Qb3NpdGlvbiA9PT0gJ2VuZCdcIiBbbmdDbGFzc109XCJ7ICdwdWxsLWxlZnQgZmxpcCc6IGJ1dHRvbi52YWx1ZSB9XCI+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwie3tidXR0b24uaWNvbk5hbWV9fVwiPjwvcGVwLWljb24+XG4gICAgPC9tYXQtaWNvbj5cbjwvbmctdGVtcGxhdGU+Il19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDZSxpQkFBaUIsRUFDdEMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFZakMsTUFBTSxPQUFPLHdCQUF3QjtJQWlCakMsWUFBbUIsYUFBK0IsRUFBVSxpQkFBb0M7UUFBN0Usa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWhCaEcsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFHN0IsYUFBUSxHQUE0QixTQUFTLENBQUM7UUFDOUMsY0FBUyxHQUFpQixNQUFNLENBQUM7UUFDakMsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFDN0IsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHekIsZ0JBQVcsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFJdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLDBCQUEwQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSTtJQUNSLENBQUM7SUFFRCwwRkFBMEY7SUFDMUYsdUZBQXVGO0lBQ3ZGLDRGQUE0RjtJQUM1RixzRkFBc0Y7SUFDdEYsOEZBQThGO0lBQzlGLDhGQUE4RjtJQUM5Riw2RkFBNkY7SUFDN0YsdUZBQXVGO0lBQ3ZGLG1FQUFtRTtJQUNuRSxvQkFBb0I7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWSxFQUFFLE1BQWlCO1FBQzNDLE1BQU0sUUFBUSxHQUFZLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFFekYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBRXJELE1BQU0sV0FBVyxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUNoQyxLQUFLO1NBQ1IsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUNsQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7O3FIQXpEUSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwwVUN0QnJDLHVnSkErRWM7MkZEekRELHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxtQkFBbUI7dUlBUXBCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcExheW91dFNlcnZpY2UsIFBlcFNjcmVlblNpemVUeXBlLCBQZXBTdHlsZVR5cGUsIFBlcFNpemVUeXBlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwQnV0dG9uLFxuICAgIElQZXBCdXR0b25DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9idXR0b24nO1xuXG5leHBvcnQgdHlwZSBQZXBHcm91cEJ1dHRvbnNWaWV3VHlwZSA9ICdyZWd1bGFyJyB8ICdkcm9wZG93bicgfCAnc3BsaXQnIHwgJ3RvZ2dsZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1ncm91cC1idXR0b25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuc2NzcycsICcuL2dyb3VwLWJ1dHRvbnMuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwR3JvdXBCdXR0b25zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBQZXBTY3JlZW5TaXplVHlwZSA9IFBlcFNjcmVlblNpemVUeXBlO1xuICAgIHNjcmVlblNpemU6IFBlcFNjcmVlblNpemVUeXBlO1xuXG4gICAgQElucHV0KCkgdmlld1R5cGU6IFBlcEdyb3VwQnV0dG9uc1ZpZXdUeXBlID0gJ3JlZ3VsYXInO1xuICAgIEBJbnB1dCgpIHN0eWxlVHlwZTogUGVwU3R5bGVUeXBlID0gJ3dlYWsnO1xuICAgIEBJbnB1dCgpIHNpemVUeXBlOiBQZXBTaXplVHlwZSA9ICdtZCc7XG4gICAgQElucHV0KCkgYnV0dG9uczogQXJyYXk8UGVwQnV0dG9uPiA9IFtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbnNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHN1cHBvcnRVbnNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQnV0dG9uS2V5ID0gJyc7XG4gICAgQElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCdXR0b25DbGlja0V2ZW50PigpO1xuXG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5idXR0b25DbGljaykge1xuICAgICAgICAvLyAgICAgdGhpcy5idXR0b25DbGljay51bnN1YnNjcmliZSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLy8gTWF0TWVudSdzIG93biB0cmlnZ2VyIHNldHMgaXRzIGludGVybmFsIGBfcGFuZWxBbmltYXRpb25TdGF0ZWAgdG8gJ2VudGVyJyBzeW5jaHJvbm91c2x5XG4gICAgLy8gcmlnaHQgYWZ0ZXIgdGhpcyBjbGljayBpcyBoYW5kbGVkIChzZWUgTWF0TWVudVRyaWdnZXIub3Blbk1lbnUoKSksIGJ1dCBNYXRNZW51IGlzIGFuXG4gICAgLy8gT25QdXNoIGNvbXBvbmVudCwgc28gdGhhdCBtdXRhdGlvbiBhbG9uZSBuZXZlciBzY2hlZHVsZXMgYSByZS1jaGVjayBvZiBpdHMgdmlldyB3aGVuIHRoaXNcbiAgICAvLyB3aG9sZSB0cmVlIGlzIGJvb3RzdHJhcHBlZCB2aWEgQW5ndWxhciBFbGVtZW50cyAoY3JlYXRlQ3VzdG9tRWxlbWVudCkgcmF0aGVyIHRoYW4gYVxuICAgIC8vIG5vcm1hbGx5LWJvb3RzdHJhcHBlZCBhcHAg4oCUIHRoZSBwYW5lbCBnZXRzIGNyZWF0ZWQgYW5kIGNvcnJlY3RseSBwb3NpdGlvbmVkIGJ5IENESyBPdmVybGF5LFxuICAgIC8vIGJ1dCBzdGF5cyByZW5kZXJlZCBhdCBpdHMgaW5pdGlhbCAndm9pZCcgKG9wYWNpdHk6IDAsIHNjYWxlKDAuOCkpIGtleWZyYW1lIGZvcmV2ZXIuIEEgcGxhaW5cbiAgICAvLyBBbmd1bGFyIGFwcCBoYXBwZW5zIHRvIHBpY2sgdXAgdGhlIGNoYW5nZSB0aHJvdWdoIG90aGVyIENEIGFjdGl2aXR5IGVsc2V3aGVyZSBpbiB0aGUgdHJlZTtcbiAgICAvLyBBbmd1bGFyIEVsZW1lbnRzIGRvZXNuJ3QsIHNvIG51ZGdlIGl0IGV4cGxpY2l0bHksIG9uY2UgdGhlIGN1cnJlbnQgc3luY2hyb25vdXMgY2xpY2tcbiAgICAvLyBkaXNwYXRjaCAod2hpY2ggaXMgd2hhdCBmbGlwcyB0aGUgYW5pbWF0aW9uIHN0YXRlKSBoYXMgZmluaXNoZWQuXG4gICAgb25NZW51VHJpZ2dlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2tlZChldmVudDogRXZlbnQsIGJ1dHRvbjogUGVwQnV0dG9uKTogdm9pZCB7ICAgICAgIFxuICAgICAgICBjb25zdCB1bnNlbGVjdDogYm9vbGVhbiA9IHRoaXMuc3VwcG9ydFVuc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPT09IGJ1dHRvbj8ua2V5O1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPSB1bnNlbGVjdCA/ICcnIDogYnV0dG9uPy5rZXk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidXR0b25DbGljayA9IHtcbiAgICAgICAgICAgIHNvdXJjZTogdW5zZWxlY3QgPyBudWxsIDogYnV0dG9uLCBcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChidXR0b24/LmNhbGxiYWNrKSB7XG4gICAgICAgICAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uQ2xpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGJ1dHRvbkNsaWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncm91cC1idXR0b25zLWNvbnRhaW5lclwiIHBlcFJ0bERpcmVjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1R5cGUgPT09ICdyZWd1bGFyJ1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gcGVwLXNwYWNpbmctZWxlbWVudCBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImJ1dHRvbj8udmFsdWVcIj57eyBidXR0b24/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9ucyBwZXAtc3BhY2luZy1lbGVtZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie2Ryb3B1cDogc2NyZWVuU2l6ZSA+PSBQZXBTY3JlZW5TaXplVHlwZS5NRH1cIj5cbiAgICAgICAgPGJ1dHRvbiBbcGVwRGF0YVFhXT1cImJ1dHRvbnNbMF0/LnZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b25zWzBdKVwiIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uc1swXS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiIFt0aXRsZV09XCJidXR0b25zWzBdPy52YWx1ZVwiPnt7IGJ1dHRvbnNbMF0/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gcHVsbC1yaWdodCBmbGlwIGxhc3QtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc01lbnVcIiBbZGlzYWJsZWRdPVwiYnV0dG9uc0Rpc2FibGVkXCIgcGVwTWVudUJsdXIgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudVRyaWdnZXJDbGlja2VkKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInt7IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdhcnJvd19kb3duJyA6ICdhcnJvd191cCcgfX1cIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1tZW51ICNhY3Rpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaSA9IGluZGV4OyBmaXJzdCBhcyBpc0ZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0ZpcnN0XCIgbWF0LW1lbnUtaXRlbSBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiYnV0dG9uPy52YWx1ZVwiPnt7IGJ1dHRvbj8udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwic3BsaXQtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0OyBsZXQgaXNMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIiBtYXQtYnV0dG9uIHBlcEJ1dHRvbkJsdXJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgYnV0dG9uPy5jbGFzc05hbWVzIH19IHB1bGwtbGVmdCBmbGlwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdmaXJzdC1idXR0b24nOiBpc0ZpcnN0LCBcbiAgICAgICAgICAgICAgICAnbWlkZGxlLWJ1dHRvbic6ICFpc0ZpcnN0ICYmICFpc0xhc3QsIFxuICAgICAgICAgICAgICAgICdsYXN0LWJ1dHRvbic6IGlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZX1cIiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7YnV0dG9uOiBidXR0b259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInZpZXdUeXBlID09PSAndG9nZ2xlJ1wiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbnNcIiBbbmdDbGFzc109XCJ7ICdzdHJldGNoJzogc3RyZXRjaCB9XCI+XG4gICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaW5kZXg7IGxldCBpc0ZpcnN0ID0gZmlyc3Q7IGxldCBpc0xhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiIG1hdC1idXR0b24gcGVwQnV0dG9uQmx1clxuICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBidXR0b24/LmNsYXNzTmFtZXMgfX0gcHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZCB8fCBidXR0b24uZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZpcnN0LWJ1dHRvbic6IGlzRmlyc3QgJiYgIWlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ21pZGRsZS1idXR0b24nOiAhaXNGaXJzdCAmJiAhaXNMYXN0LCBcbiAgICAgICAgICAgICAgICAnbGFzdC1idXR0b24nOiBpc0xhc3QgJiYgIWlzRmlyc3QsXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAnaXMtc2VsZWN0ZWQnOiBidXR0b24/LmtleSAhPT0gJycgJiYgYnV0dG9uPy5rZXkgPT09IHNlbGVjdGVkQnV0dG9uS2V5fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZTsgY29udGV4dDoge2J1dHRvbjogYnV0dG9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBsZXQtYnV0dG9uPVwiYnV0dG9uXCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25OYW1lICYmICghYnV0dG9uLmljb25Qb3NpdGlvbiB8fCBidXR0b24uaWNvblBvc2l0aW9uID09PSAnc3RhcnQnKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogYnV0dG9uLnZhbHVlIH1cIj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ7e2J1dHRvbi5pY29uTmFtZX19XCI+PC9wZXAtaWNvbj5cbiAgICA8L21hdC1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uLnZhbHVlXCIgY2xhc3M9XCJlbGxpcHNpcyBwdWxsLWxlZnQgZmxpcFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J1dHRvbi10aXRsZS13aXRoLWljb24nOiBidXR0b24uaWNvbk5hbWUsICdpY29uLWJlZm9yZSc6IGJ1dHRvbi5pY29uUG9zaXRpb24gPT09ICdzdGFydCcgfVwiXG4gICAgICAgIFt0aXRsZV09XCJidXR0b24udmFsdWVcIj5cbiAgICAgICAge3tidXR0b24udmFsdWV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b24uaWNvbk5hbWUgJiYgYnV0dG9uLmljb25Qb3NpdGlvbiA9PT0gJ2VuZCdcIiBbbmdDbGFzc109XCJ7ICdwdWxsLWxlZnQgZmxpcCc6IGJ1dHRvbi52YWx1ZSB9XCI+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwie3tidXR0b24uaWNvbk5hbWV9fVwiPjwvcGVwLWljb24+XG4gICAgPC9tYXQtaWNvbj5cbjwvbmctdGVtcGxhdGU+Il19