ng-tailwind 4.3.34 → 4.4.35

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 (38) hide show
  1. package/components/ngt-action/ngt-action.component.d.ts +12 -9
  2. package/components/ngt-button/ngt-button.component.d.ts +11 -4
  3. package/components/ngt-checkbox/ngt-checkbox.component.d.ts +9 -7
  4. package/components/ngt-date/ngt-date.component.d.ts +10 -4
  5. package/components/ngt-dropzone/ngt-dropzone.component.d.ts +11 -3
  6. package/components/ngt-form/ngt-form.component.d.ts +11 -9
  7. package/components/ngt-input/ngt-input.component.d.ts +17 -9
  8. package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +10 -3
  9. package/components/ngt-modal/ngt-modal.component.d.ts +9 -5
  10. package/components/ngt-multi-select/ngt-multi-select.component.d.ts +10 -4
  11. package/components/ngt-radio-button/ngt-radio-button.component.d.ts +10 -9
  12. package/components/ngt-section/ngt-section.component.d.ts +11 -7
  13. package/components/ngt-select/ngt-select.component.d.ts +10 -6
  14. package/esm2020/components/ngt-action/ngt-action.component.mjs +31 -39
  15. package/esm2020/components/ngt-button/ngt-button.component.mjs +37 -23
  16. package/esm2020/components/ngt-checkbox/ngt-checkbox.component.mjs +24 -36
  17. package/esm2020/components/ngt-datatable/ngt-datatable.component.mjs +3 -3
  18. package/esm2020/components/ngt-datatable/ngt-th/ngt-th.component.mjs +3 -3
  19. package/esm2020/components/ngt-date/ngt-date.component.mjs +41 -21
  20. package/esm2020/components/ngt-dropzone/ngt-dropzone.component.mjs +41 -15
  21. package/esm2020/components/ngt-form/ngt-form.component.mjs +24 -20
  22. package/esm2020/components/ngt-input/ngt-input.component.mjs +94 -66
  23. package/esm2020/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.mjs +21 -6
  24. package/esm2020/components/ngt-modal/ngt-modal.component.mjs +21 -9
  25. package/esm2020/components/ngt-multi-select/ngt-multi-select.component.mjs +50 -30
  26. package/esm2020/components/ngt-pagination/ngt-pagination.component.mjs +3 -3
  27. package/esm2020/components/ngt-radio-button/ngt-radio-button.component.mjs +33 -47
  28. package/esm2020/components/ngt-section/ngt-section.component.mjs +29 -16
  29. package/esm2020/components/ngt-select/ngt-select.component.mjs +39 -44
  30. package/esm2020/public-api.mjs +3 -1
  31. package/esm2020/services/validation/ngt-ability-validation.service.mjs +3 -0
  32. package/fesm2015/ng-tailwind.mjs +660 -561
  33. package/fesm2015/ng-tailwind.mjs.map +1 -1
  34. package/fesm2020/ng-tailwind.mjs +650 -554
  35. package/fesm2020/ng-tailwind.mjs.map +1 -1
  36. package/package.json +1 -1
  37. package/public-api.d.ts +1 -0
  38. package/services/validation/ngt-ability-validation.service.d.ts +5 -0
@@ -3,17 +3,20 @@ import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular
3
3
  import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../directives/ngt-stylizable/ngt-stylizable.directive";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../ngt-svg/ngt-svg.component";
8
- import * as i4 from "../ngt-helper/ngt-helper.component";
6
+ import * as i2 from "../../services/validation/ngt-ability-validation.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "../ngt-svg/ngt-svg.component";
9
+ import * as i5 from "../ngt-helper/ngt-helper.component";
10
+ ;
9
11
  export class NgtSectionComponent {
10
- constructor(injector, ngtStylizableDirective) {
12
+ constructor(injector, changeDetector, ngtStylizableDirective, ngtAbilityValidationService) {
11
13
  this.injector = injector;
14
+ this.changeDetector = changeDetector;
12
15
  this.ngtStylizableDirective = ngtStylizableDirective;
16
+ this.ngtAbilityValidationService = ngtAbilityValidationService;
13
17
  this.showSection = true;
14
18
  this.onRemove = new EventEmitter();
15
19
  this.onToggleSection = new EventEmitter();
16
- this.onIsDisabledChange = new EventEmitter;
17
20
  this.ngtCaptionStyle = new NgtStylizableService();
18
21
  this.ngtSubtitleStyle = new NgtStylizableService();
19
22
  if (this.ngtStylizableDirective) {
@@ -54,10 +57,18 @@ export class NgtSectionComponent {
54
57
  }
55
58
  });
56
59
  }
57
- ngOnChanges(changes) {
58
- if (changes.isDisabled) {
59
- this.onIsDisabledChange.emit(changes.isDisabled.currentValue);
60
+ async ngAfterViewInit() {
61
+ if (!this.ngtAbilityValidationService || !this.name) {
62
+ this.canDisplay = true;
63
+ this.changeDetector.detectChanges();
60
64
  }
65
+ if (this.ngtAbilityValidationService && this.name) {
66
+ if (this.isDisabled === undefined) {
67
+ this.isDisabled = !(await this.ngtAbilityValidationService.isSectionEnabled(this.name));
68
+ }
69
+ this.canDisplay = !(await this.ngtAbilityValidationService.isSectionHidden(this.name));
70
+ }
71
+ this.changeDetector.detectChanges();
61
72
  }
62
73
  open() {
63
74
  this.showSection = true;
@@ -76,8 +87,8 @@ export class NgtSectionComponent {
76
87
  this.onRemove.emit();
77
88
  }
78
89
  }
79
- NgtSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSectionComponent, deps: [{ token: i0.Injector }, { token: i1.NgtStylizableDirective, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
80
- NgtSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSectionComponent, selector: "ngt-section", inputs: { icon: "icon", caption: "caption", subtitle: "subtitle", accordion: "accordion", showSection: "showSection", removable: "removable", helpTitle: "helpTitle", helpText: "helpText", helpIconColor: "helpIconColor", isDisabled: "isDisabled" }, outputs: { onRemove: "onRemove", onToggleSection: "onToggleSection", onIsDisabledChange: "onIsDisabledChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex mb-6\">\n <ngt-svg *ngIf=\"icon\" [src]='icon'\n class=\"hidden md:block {{ ngtSectionStyle.compile(['color.text', 'h', 'w', 'my', 'pr']) }}\">\n </ngt-svg>\n\n <div\n class=\"w-full pb-4 md:pb-0 border-b-4 md:border-b-0 border-dashed md:border-solid md:border-l {{ accordion && !showSection ? 'flex' : '' }}\">\n <div *ngIf=\"!accordion && caption\" class=\"flex\">\n <span class=\"pl-5 {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n class=\"self-center {{ ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml']) }}\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1 hover:opacity-100 opacity-100\"\n [iconColor]=\"helpIconColor\">\n {{ helpText }}\n </ngt-helper>\n </div>\n\n <ng-container *ngIf=\"accordion\">\n <div class=\"flex flex-wrap items-center px-5 cursor-pointer {{ helpText ? '' : 'hover:opacity-75' }} {{ accordion && showSection ? ngtCaptionStyle.compile(['pb']) : ngtCaptionStyle.compile(['py']) }}\"\n (click)='toggle()' style=\"max-width: fit-content;\">\n <div *ngIf=\"!showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 4.59l9.18 9.16 9.18 -9.16 2.82 2.82 -12 12 -12 -12 2.82 -2.82z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 19.41l9.18 -9.16 9.18 9.16 2.82 -2.82 -12 -12 -12 12 2.82 2.82z\" />\n </svg>\n </div>\n\n <span [class]=\"ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n [class]=\"ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1\" [iconColor]=\"helpIconColor\"\n class=\"ml-1 hover:opacity-100 opacity-100\">\n {{ helpText }}\n </ngt-helper>\n\n <div *ngIf=\"removable\"\n class=\"flex items-center justify-center h-8 w-8 ml-2 rounded-full hover:bg-red-500 hover:text-white text-gray-600 text-xl\"\n (click)='remove($event)'>\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 21.33c0,1.47 1.2,2.67 2.67,2.67l10.66 0c1.47,0 2.67,-1.2 2.67,-2.67l0 -16 -16 0 0 16zm17.33 -20l-4.66 0 -1.34 -1.33 -6.66 0 -1.34 1.33 -4.66 0 0 2.67 18.66 0 0 -2.67z\" />\n </svg>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf='showSection' class=\"{{ ngtSectionStyle.compile(['px']) }}\" [@enterAnimation]='!showSection'>\n <fieldset [disabled]=\"isDisabled\">\n <ng-content></ng-content>\n </fieldset>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }, { kind: "component", type: i4.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], animations: [
90
+ NgtSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtSectionComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i2.NgtAbilityValidationService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
91
+ NgtSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtSectionComponent, selector: "ngt-section", inputs: { name: "name", icon: "icon", caption: "caption", subtitle: "subtitle", accordion: "accordion", showSection: "showSection", removable: "removable", helpTitle: "helpTitle", helpText: "helpText", helpIconColor: "helpIconColor", isDisabled: "isDisabled" }, outputs: { onRemove: "onRemove", onToggleSection: "onToggleSection" }, ngImport: i0, template: "<div *ngIf=\"canDisplay\" class=\"flex mb-6\">\n <ngt-svg *ngIf=\"icon\" [src]='icon'\n class=\"hidden md:block {{ ngtSectionStyle.compile(['color.text', 'h', 'w', 'my', 'pr']) }}\">\n </ngt-svg>\n\n <div\n class=\"w-full pb-4 md:pb-0 border-b-4 md:border-b-0 border-dashed md:border-solid md:border-l {{ accordion && !showSection ? 'flex' : '' }}\">\n <div *ngIf=\"!accordion && caption\" class=\"flex\">\n <span class=\"pl-5 {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n class=\"self-center {{ ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml']) }}\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1 hover:opacity-100 opacity-100\"\n [iconColor]=\"helpIconColor\">\n {{ helpText }}\n </ngt-helper>\n </div>\n\n <ng-container *ngIf=\"accordion\">\n <div class=\"flex flex-wrap items-center px-5 cursor-pointer {{ helpText ? '' : 'hover:opacity-75' }} {{ accordion && showSection ? ngtCaptionStyle.compile(['pb']) : ngtCaptionStyle.compile(['py']) }}\"\n (click)='toggle()' style=\"max-width: fit-content;\">\n <div *ngIf=\"!showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 4.59l9.18 9.16 9.18 -9.16 2.82 2.82 -12 12 -12 -12 2.82 -2.82z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 19.41l9.18 -9.16 9.18 9.16 2.82 -2.82 -12 -12 -12 12 2.82 2.82z\" />\n </svg>\n </div>\n\n <span [class]=\"ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n [class]=\"ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1\" [iconColor]=\"helpIconColor\"\n class=\"ml-1 hover:opacity-100 opacity-100\">\n {{ helpText }}\n </ngt-helper>\n\n <div *ngIf=\"removable\"\n class=\"flex items-center justify-center h-8 w-8 ml-2 rounded-full hover:bg-red-500 hover:text-white text-gray-600 text-xl\"\n (click)='remove($event)'>\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 21.33c0,1.47 1.2,2.67 2.67,2.67l10.66 0c1.47,0 2.67,-1.2 2.67,-2.67l0 -16 -16 0 0 16zm17.33 -20l-4.66 0 -1.34 -1.33 -6.66 0 -1.34 1.33 -4.66 0 0 2.67 18.66 0 0 -2.67z\" />\n </svg>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf='showSection' class=\"{{ ngtSectionStyle.compile(['px']) }}\" [@enterAnimation]='!showSection'>\n <fieldset class=\"w-full\" [disabled]=\"isDisabled\">\n <ng-content></ng-content>\n </fieldset>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }, { kind: "component", type: i5.NgtHelperComponent, selector: "ngt-helper", inputs: ["helpTextColor", "helpText", "helpTitle", "icon", "iconSize", "iconColor", "iconTitle", "tooltipSize", "autoXReverse", "helperReverseYPosition"] }], animations: [
81
92
  trigger('enterAnimation', [
82
93
  state('void', style({ transform: 'translateY(-20px)', opacity: 0 })),
83
94
  transition(':enter', [
@@ -94,12 +105,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
94
105
  animate(400)
95
106
  ])
96
107
  ]),
97
- ], template: "<div class=\"flex mb-6\">\n <ngt-svg *ngIf=\"icon\" [src]='icon'\n class=\"hidden md:block {{ ngtSectionStyle.compile(['color.text', 'h', 'w', 'my', 'pr']) }}\">\n </ngt-svg>\n\n <div\n class=\"w-full pb-4 md:pb-0 border-b-4 md:border-b-0 border-dashed md:border-solid md:border-l {{ accordion && !showSection ? 'flex' : '' }}\">\n <div *ngIf=\"!accordion && caption\" class=\"flex\">\n <span class=\"pl-5 {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n class=\"self-center {{ ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml']) }}\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1 hover:opacity-100 opacity-100\"\n [iconColor]=\"helpIconColor\">\n {{ helpText }}\n </ngt-helper>\n </div>\n\n <ng-container *ngIf=\"accordion\">\n <div class=\"flex flex-wrap items-center px-5 cursor-pointer {{ helpText ? '' : 'hover:opacity-75' }} {{ accordion && showSection ? ngtCaptionStyle.compile(['pb']) : ngtCaptionStyle.compile(['py']) }}\"\n (click)='toggle()' style=\"max-width: fit-content;\">\n <div *ngIf=\"!showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 4.59l9.18 9.16 9.18 -9.16 2.82 2.82 -12 12 -12 -12 2.82 -2.82z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 19.41l9.18 -9.16 9.18 9.16 2.82 -2.82 -12 -12 -12 12 2.82 2.82z\" />\n </svg>\n </div>\n\n <span [class]=\"ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n [class]=\"ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1\" [iconColor]=\"helpIconColor\"\n class=\"ml-1 hover:opacity-100 opacity-100\">\n {{ helpText }}\n </ngt-helper>\n\n <div *ngIf=\"removable\"\n class=\"flex items-center justify-center h-8 w-8 ml-2 rounded-full hover:bg-red-500 hover:text-white text-gray-600 text-xl\"\n (click)='remove($event)'>\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 21.33c0,1.47 1.2,2.67 2.67,2.67l10.66 0c1.47,0 2.67,-1.2 2.67,-2.67l0 -16 -16 0 0 16zm17.33 -20l-4.66 0 -1.34 -1.33 -6.66 0 -1.34 1.33 -4.66 0 0 2.67 18.66 0 0 -2.67z\" />\n </svg>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf='showSection' class=\"{{ ngtSectionStyle.compile(['px']) }}\" [@enterAnimation]='!showSection'>\n <fieldset [disabled]=\"isDisabled\">\n <ng-content></ng-content>\n </fieldset>\n </div>\n </div>\n</div>" }]
98
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NgtStylizableDirective, decorators: [{
108
+ ], template: "<div *ngIf=\"canDisplay\" class=\"flex mb-6\">\n <ngt-svg *ngIf=\"icon\" [src]='icon'\n class=\"hidden md:block {{ ngtSectionStyle.compile(['color.text', 'h', 'w', 'my', 'pr']) }}\">\n </ngt-svg>\n\n <div\n class=\"w-full pb-4 md:pb-0 border-b-4 md:border-b-0 border-dashed md:border-solid md:border-l {{ accordion && !showSection ? 'flex' : '' }}\">\n <div *ngIf=\"!accordion && caption\" class=\"flex\">\n <span class=\"pl-5 {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n class=\"self-center {{ ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml']) }}\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1 hover:opacity-100 opacity-100\"\n [iconColor]=\"helpIconColor\">\n {{ helpText }}\n </ngt-helper>\n </div>\n\n <ng-container *ngIf=\"accordion\">\n <div class=\"flex flex-wrap items-center px-5 cursor-pointer {{ helpText ? '' : 'hover:opacity-75' }} {{ accordion && showSection ? ngtCaptionStyle.compile(['pb']) : ngtCaptionStyle.compile(['py']) }}\"\n (click)='toggle()' style=\"max-width: fit-content;\">\n <div *ngIf=\"!showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 4.59l9.18 9.16 9.18 -9.16 2.82 2.82 -12 12 -12 -12 2.82 -2.82z\" />\n </svg>\n </div>\n\n <div *ngIf=\"showSection\"\n class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M2.82 19.41l9.18 -9.16 9.18 9.16 2.82 -2.82 -12 -12 -12 12 2.82 2.82z\" />\n </svg>\n </div>\n\n <span [class]=\"ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ caption }}\n </span>\n\n <span *ngIf=\"subtitle\"\n [class]=\"ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n {{ subtitle }}\n </span>\n\n <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1\" [iconColor]=\"helpIconColor\"\n class=\"ml-1 hover:opacity-100 opacity-100\">\n {{ helpText }}\n </ngt-helper>\n\n <div *ngIf=\"removable\"\n class=\"flex items-center justify-center h-8 w-8 ml-2 rounded-full hover:bg-red-500 hover:text-white text-gray-600 text-xl\"\n (click)='remove($event)'>\n <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M4 21.33c0,1.47 1.2,2.67 2.67,2.67l10.66 0c1.47,0 2.67,-1.2 2.67,-2.67l0 -16 -16 0 0 16zm17.33 -20l-4.66 0 -1.34 -1.33 -6.66 0 -1.34 1.33 -4.66 0 0 2.67 18.66 0 0 -2.67z\" />\n </svg>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf='showSection' class=\"{{ ngtSectionStyle.compile(['px']) }}\" [@enterAnimation]='!showSection'>\n <fieldset class=\"w-full\" [disabled]=\"isDisabled\">\n <ng-content></ng-content>\n </fieldset>\n </div>\n </div>\n</div>" }]
109
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.NgtStylizableDirective, decorators: [{
99
110
  type: Self
100
111
  }, {
101
112
  type: Optional
102
- }] }]; }, propDecorators: { icon: [{
113
+ }] }, { type: i2.NgtAbilityValidationService, decorators: [{
114
+ type: Optional
115
+ }] }]; }, propDecorators: { name: [{
116
+ type: Input
117
+ }], icon: [{
103
118
  type: Input
104
119
  }], caption: [{
105
120
  type: Input
@@ -123,7 +138,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
123
138
  type: Output
124
139
  }], onToggleSection: [{
125
140
  type: Output
126
- }], onIsDisabledChange: [{
127
- type: Output
128
141
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBWSxLQUFLLEVBQWEsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRzNILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7QUFjNUYsTUFBTSxPQUFPLG1CQUFtQjtJQW9CNUIsWUFDWSxRQUFrQixFQUNFLHNCQUE4QztRQURsRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0UsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQWpCOUQsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFPM0IsYUFBUSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELG9CQUFlLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsdUJBQWtCLEdBQTBCLElBQUksWUFBWSxDQUFDO1FBVTFFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGVB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RUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEUsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDZixDQUFDO3lCQUNMLENBQUM7cUJBQ0w7OzBCQXdCSSxJQUFJOzswQkFBSSxRQUFROzRDQXJCTCxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVXLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFDVSxrQkFBa0I7c0JBQWxDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3Qtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2VudGVyQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwcHgpJywgb3BhY2l0eTogMCB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSg0MDApXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5ndFNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGNhcHRpb246IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VidGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgYWNjb3JkaW9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93U2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHJlbW92YWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBJY29uQ29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uVG9nZ2xlU2VjdGlvbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Jc0Rpc2FibGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyO1xuXG4gICAgcHVibGljIG5ndFNlY3Rpb25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndENhcHRpb25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFN1YnRpdGxlU3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIG5ndFN0eWxpemFibGVEaXJlY3RpdmU6IE5ndFN0eWxpemFibGVEaXJlY3RpdmVcbiAgICApIHtcbiAgICAgICAgdGhpcy5uZ3RDYXB0aW9uU3R5bGUgPSBuZXcgTmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5uZ3RTdWJ0aXRsZVN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTZWN0aW9uU3R5bGUgPSB0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUuZ2V0Tmd0U3R5bGl6YWJsZVNlcnZpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmd0U2VjdGlvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5ndFNlY3Rpb25TdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RTZWN0aW9uJywge1xuICAgICAgICAgICAgaDogJ2gtMTInLFxuICAgICAgICAgICAgdzogJ3ctMTInLFxuICAgICAgICAgICAgbXk6ICdteS0xJyxcbiAgICAgICAgICAgIHByOiAncHItMScsXG4gICAgICAgICAgICBweDogJ21kOnB4LTUnLFxuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC1ncmF5LTgwMCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ3RDYXB0aW9uU3R5bGUubG9hZCh0aGlzLmluamVjdG9yLCAnTmd0U2VjdGlvbkNhcHRpb24nLCB7XG4gICAgICAgICAgICB0ZXh0OiAndGV4dC1zbScsXG4gICAgICAgICAgICBmb250OiAnZm9udC1ub3JtYWwnLFxuICAgICAgICAgICAgbWw6ICdtbC0yJyxcbiAgICAgICAgICAgIHBiOiAncGItMicsXG4gICAgICAgICAgICBib3JkZXI6ICdib3JkZXItbm9uZScsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LWdyYXktODAwJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0U3VidGl0bGVTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RTZWN0aW9uU3VidGl0bGUnLCB7XG4gICAgICAgICAgICB0ZXh0OiAndGV4dC14cycsXG4gICAgICAgICAgICBmb250OiAnZm9udC1ub3JtYWwnLFxuICAgICAgICAgICAgYm9yZGVyOiAnYm9yZGVyLW5vbmUnLFxuICAgICAgICAgICAgbWw6ICdtbC0yJyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtZ3JheS01MDAnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5vbklzRGlzYWJsZWRDaGFuZ2UuZW1pdChjaGFuZ2VzLmlzRGlzYWJsZWQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dTZWN0aW9uID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLm9uVG9nZ2xlU2VjdGlvbi5lbWl0KHRoaXMuc2hvd1NlY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93U2VjdGlvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMub25Ub2dnbGVTZWN0aW9uLmVtaXQodGhpcy5zaG93U2VjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93U2VjdGlvbiA9ICF0aGlzLnNob3dTZWN0aW9uO1xuXG4gICAgICAgIHRoaXMub25Ub2dnbGVTZWN0aW9uLmVtaXQodGhpcy5zaG93U2VjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggbWItNlwiPlxuICAgIDxuZ3Qtc3ZnICpuZ0lmPVwiaWNvblwiIFtzcmNdPSdpY29uJ1xuICAgICAgICBjbGFzcz1cImhpZGRlbiBtZDpibG9jayB7eyBuZ3RTZWN0aW9uU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnaCcsICd3JywgJ215JywgJ3ByJ10pIH19XCI+XG4gICAgPC9uZ3Qtc3ZnPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInctZnVsbCBwYi00IG1kOnBiLTAgYm9yZGVyLWItNCBtZDpib3JkZXItYi0wIGJvcmRlci1kYXNoZWQgbWQ6Ym9yZGVyLXNvbGlkIG1kOmJvcmRlci1sIHt7IGFjY29yZGlvbiAmJiAhc2hvd1NlY3Rpb24gPyAnZmxleCcgOiAnJyB9fVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFjY29yZGlvbiAmJiBjYXB0aW9uXCIgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTUge3sgbmd0Q2FwdGlvblN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ2NvbG9yLmJvcmRlcicsICd0ZXh0JywgJ2JvcmRlcicsICdmb250J10pIH19XCI+XG4gICAgICAgICAgICAgICAge3sgY2FwdGlvbiB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyIHt7IG5ndFN1YnRpdGxlU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnY29sb3IuYm9yZGVyJywgJ3RleHQnLCAnYm9yZGVyJywgJ2ZvbnQnLCAnbWwnXSkgfX1cIj5cbiAgICAgICAgICAgICAgICB7eyBzdWJ0aXRsZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBjbGFzcz1cIm1sLTEgaG92ZXI6b3BhY2l0eS0xMDAgb3BhY2l0eS0xMDBcIlxuICAgICAgICAgICAgICAgIFtpY29uQ29sb3JdPVwiaGVscEljb25Db2xvclwiPlxuICAgICAgICAgICAgICAgIHt7IGhlbHBUZXh0IH19XG4gICAgICAgICAgICA8L25ndC1oZWxwZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY2NvcmRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgcHgtNSBjdXJzb3ItcG9pbnRlciB7eyBoZWxwVGV4dCA/ICcnIDogJ2hvdmVyOm9wYWNpdHktNzUnIH19IHt7IGFjY29yZGlvbiAmJiBzaG93U2VjdGlvbiA/IG5ndENhcHRpb25TdHlsZS5jb21waWxlKFsncGInXSkgOiBuZ3RDYXB0aW9uU3R5bGUuY29tcGlsZShbJ3B5J10pIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPSd0b2dnbGUoKScgc3R5bGU9XCJtYXgtd2lkdGg6IGZpdC1jb250ZW50O1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd1NlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgge3sgbmd0Q2FwdGlvblN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ2NvbG9yLmJvcmRlcicsICd0ZXh0JywgJ2JvcmRlcicsICdmb250J10pIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjgyIDQuNTlsOS4xOCA5LjE2IDkuMTggLTkuMTYgMi44MiAyLjgyIC0xMiAxMiAtMTIgLTEyIDIuODIgLTIuODJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1NlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgge3sgbmd0Q2FwdGlvblN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ2NvbG9yLmJvcmRlcicsICd0ZXh0JywgJ2JvcmRlcicsICdmb250J10pIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjgyIDE5LjQxbDkuMTggLTkuMTYgOS4xOCA5LjE2IDIuODIgLTIuODIgLTEyIC0xMiAtMTIgMTIgMi44MiAyLjgyelwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIm5ndENhcHRpb25TdHlsZS5jb21waWxlKFsnY29sb3IudGV4dCcsICdjb2xvci5ib3JkZXInLCAndGV4dCcsICdib3JkZXInLCAnZm9udCcsICdtbCddKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBjYXB0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJuZ3RTdWJ0aXRsZVN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ2NvbG9yLmJvcmRlcicsICd0ZXh0JywgJ2JvcmRlcicsICdmb250JywgJ21sJ10pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHN1YnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPG5ndC1oZWxwZXIgKm5nSWY9XCJoZWxwVGV4dFwiIFtoZWxwVGl0bGVdPVwiaGVscFRpdGxlXCIgY2xhc3M9XCJtbC0xXCIgW2ljb25Db2xvcl09XCJoZWxwSWNvbkNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0xIGhvdmVyOm9wYWNpdHktMTAwIG9wYWNpdHktMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGhlbHBUZXh0IH19XG4gICAgICAgICAgICAgICAgPC9uZ3QtaGVscGVyPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlbW92YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC04IHctOCBtbC0yIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1yZWQtNTAwIGhvdmVyOnRleHQtd2hpdGUgdGV4dC1ncmF5LTYwMCB0ZXh0LXhsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT0ncmVtb3ZlKCRldmVudCknPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZmlsbC1jdXJyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDIxLjMzYzAsMS40NyAxLjIsMi42NyAyLjY3LDIuNjdsMTAuNjYgMGMxLjQ3LDAgMi42NywtMS4yIDIuNjcsLTIuNjdsMCAtMTYgLTE2IDAgMCAxNnptMTcuMzMgLTIwbC00LjY2IDAgLTEuMzQgLTEuMzMgLTYuNjYgMCAtMS4zNCAxLjMzIC00LjY2IDAgMCAyLjY3IDE4LjY2IDAgMCAtMi42N3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPSdzaG93U2VjdGlvbicgY2xhc3M9XCJ7eyBuZ3RTZWN0aW9uU3R5bGUuY29tcGlsZShbJ3B4J10pIH19XCIgW0BlbnRlckFuaW1hdGlvbl09JyFzaG93U2VjdGlvbic+XG4gICAgICAgICAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LXNlY3Rpb24vbmd0LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQW9DLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25JLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7O0FBQ1csQ0FBQztBQWN4RyxNQUFNLE9BQU8sbUJBQW1CO0lBc0I1QixZQUNZLFFBQWtCLEVBQ2xCLGNBQWlDLEVBR2pDLHNCQUE4QyxFQUc5QywyQkFBd0Q7UUFQeEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFHakMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUc5QyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBeEJwRCxnQkFBVyxHQUFZLElBQUksQ0FBQztRQU8zQixhQUFRLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWtCekUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksb0JB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QUNVLGVBQWU7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5ndFN0eWxpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25ndC1zdHlsaXphYmxlL25ndC1zdHlsaXphYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd0QWJpbGl0eVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi9uZ3QtYWJpbGl0eS12YWxpZGF0aW9uLnNlcnZpY2UnOztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3Qtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2VudGVyQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwcHgpJywgb3BhY2l0eTogMCB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSg0MDApXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5ndFNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGNhcHRpb246IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VidGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgYWNjb3JkaW9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93U2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHJlbW92YWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVscFRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGhlbHBJY29uQ29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uVG9nZ2xlU2VjdGlvbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIG5ndFNlY3Rpb25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndENhcHRpb25TdHlsZTogTmd0U3R5bGl6YWJsZVNlcnZpY2U7XG4gICAgcHVibGljIG5ndFN1YnRpdGxlU3R5bGU6IE5ndFN0eWxpemFibGVTZXJ2aWNlO1xuXG4gICAgcHVibGljIGNhbkRpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcblxuICAgICAgICBAU2VsZigpIEBPcHRpb25hbCgpXG4gICAgICAgIHByaXZhdGUgbmd0U3R5bGl6YWJsZURpcmVjdGl2ZTogTmd0U3R5bGl6YWJsZURpcmVjdGl2ZSxcblxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBwcml2YXRlIG5ndEFiaWxpdHlWYWxpZGF0aW9uU2VydmljZTogTmd0QWJpbGl0eVZhbGlkYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMubmd0Q2FwdGlvblN0eWxlID0gbmV3IE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubmd0U3VidGl0bGVTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm5ndFN0eWxpemFibGVEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMubmd0U2VjdGlvblN0eWxlID0gdGhpcy5uZ3RTdHlsaXphYmxlRGlyZWN0aXZlLmdldE5ndFN0eWxpemFibGVTZXJ2aWNlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5ndFNlY3Rpb25TdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTZWN0aW9uU3R5bGUubG9hZCh0aGlzLmluamVjdG9yLCAnTmd0U2VjdGlvbicsIHtcbiAgICAgICAgICAgIGg6ICdoLTEyJyxcbiAgICAgICAgICAgIHc6ICd3LTEyJyxcbiAgICAgICAgICAgIG15OiAnbXktMScsXG4gICAgICAgICAgICBwcjogJ3ByLTEnLFxuICAgICAgICAgICAgcHg6ICdtZDpweC01JyxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgdGV4dDogJ3RleHQtZ3JheS04MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubmd0Q2FwdGlvblN0eWxlLmxvYWQodGhpcy5pbmplY3RvciwgJ05ndFNlY3Rpb25DYXB0aW9uJywge1xuICAgICAgICAgICAgdGV4dDogJ3RleHQtc20nLFxuICAgICAgICAgICAgZm9udDogJ2ZvbnQtbm9ybWFsJyxcbiAgICAgICAgICAgIG1sOiAnbWwtMicsXG4gICAgICAgICAgICBwYjogJ3BiLTInLFxuICAgICAgICAgICAgYm9yZGVyOiAnYm9yZGVyLW5vbmUnLFxuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC1ncmF5LTgwMCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm5ndFN1YnRpdGxlU3R5bGUubG9hZCh0aGlzLmluamVjdG9yLCAnTmd0U2VjdGlvblN1YnRpdGxlJywge1xuICAgICAgICAgICAgdGV4dDogJ3RleHQteHMnLFxuICAgICAgICAgICAgZm9udDogJ2ZvbnQtbm9ybWFsJyxcbiAgICAgICAgICAgIGJvcmRlcjogJ2JvcmRlci1ub25lJyxcbiAgICAgICAgICAgIG1sOiAnbWwtMicsXG4gICAgICAgICAgICBjb2xvcjoge1xuICAgICAgICAgICAgICAgIHRleHQ6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBuZ0FmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5uZ3RBYmlsaXR5VmFsaWRhdGlvblNlcnZpY2UgfHwgIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5jYW5EaXNwbGF5ID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ3RBYmlsaXR5VmFsaWRhdGlvblNlcnZpY2UgJiYgdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSAhKGF3YWl0IHRoaXMubmd0QWJpbGl0eVZhbGlkYXRpb25TZXJ2aWNlLmlzU2VjdGlvbkVuYWJsZWQodGhpcy5uYW1lKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2FuRGlzcGxheSA9ICEoYXdhaXQgdGhpcy5uZ3RBYmlsaXR5VmFsaWRhdGlvblNlcnZpY2UuaXNTZWN0aW9uSGlkZGVuKHRoaXMubmFtZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1NlY3Rpb24gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMub25Ub2dnbGVTZWN0aW9uLmVtaXQodGhpcy5zaG93U2VjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dTZWN0aW9uID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vblRvZ2dsZVNlY3Rpb24uZW1pdCh0aGlzLnNob3dTZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dTZWN0aW9uID0gIXRoaXMuc2hvd1NlY3Rpb247XG5cbiAgICAgICAgdGhpcy5vblRvZ2dsZVNlY3Rpb24uZW1pdCh0aGlzLnNob3dTZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoKTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiY2FuRGlzcGxheVwiIGNsYXNzPVwiZmxleCBtYi02XCI+XG4gICAgPG5ndC1zdmcgKm5nSWY9XCJpY29uXCIgW3NyY109J2ljb24nXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrIHt7IG5ndFNlY3Rpb25TdHlsZS5jb21waWxlKFsnY29sb3IudGV4dCcsICdoJywgJ3cnLCAnbXknLCAncHInXSkgfX1cIj5cbiAgICA8L25ndC1zdmc+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidy1mdWxsIHBiLTQgbWQ6cGItMCBib3JkZXItYi00IG1kOmJvcmRlci1iLTAgYm9yZGVyLWRhc2hlZCBtZDpib3JkZXItc29saWQgbWQ6Ym9yZGVyLWwge3sgYWNjb3JkaW9uICYmICFzaG93U2VjdGlvbiA/ICdmbGV4JyA6ICcnIH19XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYWNjb3JkaW9uICYmIGNhcHRpb25cIiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtNSB7eyBuZ3RDYXB0aW9uU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnY29sb3IuYm9yZGVyJywgJ3RleHQnLCAnYm9yZGVyJywgJ2ZvbnQnXSkgfX1cIj5cbiAgICAgICAgICAgICAgICB7eyBjYXB0aW9uIH19XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3VidGl0bGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXIge3sgbmd0U3VidGl0bGVTdHlsZS5jb21waWxlKFsnY29sb3IudGV4dCcsICdjb2xvci5ib3JkZXInLCAndGV4dCcsICdib3JkZXInLCAnZm9udCcsICdtbCddKSB9fVwiPlxuICAgICAgICAgICAgICAgIHt7IHN1YnRpdGxlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxuZ3QtaGVscGVyICpuZ0lmPVwiaGVscFRleHRcIiBbaGVscFRpdGxlXT1cImhlbHBUaXRsZVwiIGNsYXNzPVwibWwtMSBob3ZlcjpvcGFjaXR5LTEwMCBvcGFjaXR5LTEwMFwiXG4gICAgICAgICAgICAgICAgW2ljb25Db2xvcl09XCJoZWxwSWNvbkNvbG9yXCI+XG4gICAgICAgICAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICAgICAgICAgIDwvbmd0LWhlbHBlcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjY29yZGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBweC01IGN1cnNvci1wb2ludGVyIHt7IGhlbHBUZXh0ID8gJycgOiAnaG92ZXI6b3BhY2l0eS03NScgfX0ge3sgYWNjb3JkaW9uICYmIHNob3dTZWN0aW9uID8gbmd0Q2FwdGlvblN0eWxlLmNvbXBpbGUoWydwYiddKSA6IG5ndENhcHRpb25TdHlsZS5jb21waWxlKFsncHknXSkgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9J3RvZ2dsZSgpJyBzdHlsZT1cIm1heC13aWR0aDogZml0LWNvbnRlbnQ7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93U2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCB7eyBuZ3RDYXB0aW9uU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnY29sb3IuYm9yZGVyJywgJ3RleHQnLCAnYm9yZGVyJywgJ2ZvbnQnXSkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGwtY3VycmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuODIgNC41OWw5LjE4IDkuMTYgOS4xOCAtOS4xNiAyLjgyIDIuODIgLTEyIDEyIC0xMiAtMTIgMi44MiAtMi44MnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCB7eyBuZ3RDYXB0aW9uU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnY29sb3IuYm9yZGVyJywgJ3RleHQnLCAnYm9yZGVyJywgJ2ZvbnQnXSkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImZpbGwtY3VycmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuODIgMTkuNDFsOS4xOCAtOS4xNiA5LjE4IDkuMTYgMi44MiAtMi44MiAtMTIgLTEyIC0xMiAxMiAyLjgyIDIuODJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwibmd0Q2FwdGlvblN0eWxlLmNvbXBpbGUoWydjb2xvci50ZXh0JywgJ2NvbG9yLmJvcmRlcicsICd0ZXh0JywgJ2JvcmRlcicsICdmb250JywgJ21sJ10pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIm5ndFN1YnRpdGxlU3R5bGUuY29tcGlsZShbJ2NvbG9yLnRleHQnLCAnY29sb3IuYm9yZGVyJywgJ3RleHQnLCAnYm9yZGVyJywgJ2ZvbnQnLCAnbWwnXSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8bmd0LWhlbHBlciAqbmdJZj1cImhlbHBUZXh0XCIgW2hlbHBUaXRsZV09XCJoZWxwVGl0bGVcIiBjbGFzcz1cIm1sLTFcIiBbaWNvbkNvbG9yXT1cImhlbHBJY29uQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTEgaG92ZXI6b3BhY2l0eS0xMDAgb3BhY2l0eS0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaGVscFRleHQgfX1cbiAgICAgICAgICAgICAgICA8L25ndC1oZWxwZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVtb3ZhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTggdy04IG1sLTIgcm91bmRlZC1mdWxsIGhvdmVyOmJnLXJlZC01MDAgaG92ZXI6dGV4dC13aGl0ZSB0ZXh0LWdyYXktNjAwIHRleHQteGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPSdyZW1vdmUoJGV2ZW50KSc+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJmaWxsLWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMjEuMzNjMCwxLjQ3IDEuMiwyLjY3IDIuNjcsMi42N2wxMC42NiAwYzEuNDcsMCAyLjY3LC0xLjIgMi42NywtMi42N2wwIC0xNiAtMTYgMCAwIDE2em0xNy4zMyAtMjBsLTQuNjYgMCAtMS4zNCAtMS4zMyAtNi42NiAwIC0xLjM0IDEuMzMgLTQuNjYgMCAwIDIuNjcgMTguNjYgMCAwIC0yLjY3elwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9J3Nob3dTZWN0aW9uJyBjbGFzcz1cInt7IG5ndFNlY3Rpb25TdHlsZS5jb21waWxlKFsncHgnXSkgfX1cIiBbQGVudGVyQW5pbWF0aW9uXT0nIXNob3dTZWN0aW9uJz5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInctZnVsbFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=