lib-portal-angular 0.0.73 → 0.0.75

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 (28) hide show
  1. package/esm2022/lib/components/accordion/accordion.component.mjs +2 -2
  2. package/esm2022/lib/components/badge/badge.component.mjs +43 -66
  3. package/esm2022/lib/components/button/button.component.mjs +82 -105
  4. package/esm2022/lib/components/calendar-argenta/calendar-argenta.component.mjs +2 -2
  5. package/esm2022/lib/components/confirmation/confirmation.component.mjs +2 -2
  6. package/esm2022/lib/components/custom-pagination/custom-pagination.component.mjs +2 -2
  7. package/esm2022/lib/components/custom-switch/custom-switch.component.mjs +2 -2
  8. package/esm2022/lib/components/file-upload/file-upload.component.mjs +2 -2
  9. package/esm2022/lib/components/imput/input.component.mjs +2 -2
  10. package/esm2022/lib/components/modal/modal.component.mjs +2 -2
  11. package/esm2022/lib/components/multi-select/multi-select.component.mjs +2 -2
  12. package/esm2022/lib/components/radio/radio.component.mjs +14 -48
  13. package/esm2022/lib/components/search-customer/search-customer.component.mjs +5 -4
  14. package/esm2022/lib/components/search-input/search-input.component.mjs +2 -2
  15. package/esm2022/lib/components/select/select.component.mjs +2 -2
  16. package/esm2022/lib/components/tab/tab.component.mjs +2 -2
  17. package/esm2022/lib/components/tables/data-table.component.mjs +2 -2
  18. package/esm2022/lib/components/tree-node/tree-node.component.mjs +3 -3
  19. package/esm2022/lib/function/SetThemeColors.mjs +39 -0
  20. package/esm2022/public-api.mjs +66 -64
  21. package/fesm2022/lib-portal-angular.mjs +209 -250
  22. package/fesm2022/lib-portal-angular.mjs.map +1 -1
  23. package/lib/components/badge/badge.component.d.ts +7 -7
  24. package/lib/components/button/button.component.d.ts +8 -6
  25. package/lib/components/radio/radio.component.d.ts +2 -2
  26. package/lib/function/SetThemeColors.d.ts +14 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +64 -63
@@ -45,11 +45,11 @@ export class AccordionArgentaComponent {
45
45
  }
46
46
  }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionArgentaComponent, selector: "argenta-accordion", inputs: { title: "title", isOpen: "isOpen", permissions: "permissions" }, outputs: { toggleEvent: "toggleEvent" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionArgentaComponent, selector: "argenta-accordion", inputs: { title: "title", isOpen: "isOpen", permissions: "permissions" }, outputs: { toggleEvent: "toggleEvent" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:var(--font-family);transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:var(--primary-color);color:var(--text-color);cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'argenta-accordion', template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"] }]
52
+ args: [{ selector: 'argenta-accordion', template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:var(--font-family);transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:var(--primary-color);color:var(--text-color);cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"] }]
53
53
  }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { title: [{
54
54
  type: Input
55
55
  }], isOpen: [{
@@ -1,11 +1,11 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
- import { ButtonClasses } from '../../enum/ButtonClassesEnum';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, } from "@angular/core";
2
+ import { ButtonClasses } from "../../enum/ButtonClassesEnum";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  export class BadgeComponent {
6
6
  constructor() {
7
- this.label = 'Mensagem';
8
- this.badgeContent = '+45';
7
+ this.label = "Mensagem";
8
+ this.badgeContent = "+45";
9
9
  this.marginTop = 0;
10
10
  this.marginBottom = 0;
11
11
  this.marginLeft = 0;
@@ -17,56 +17,61 @@ export class BadgeComponent {
17
17
  this.isActive = false;
18
18
  }
19
19
  getDynamicStyles() {
20
- let backgroundColor = '';
21
- let textColor = '#fff'; // Default text color
22
- let borderColor = '';
20
+ let backgroundColor = "";
21
+ let textColor = getComputedStyle(document.documentElement)
22
+ .getPropertyValue("--text-color")
23
+ .trim();
24
+ let borderColor = "";
25
+ const getCSSVariable = (variable) => getComputedStyle(document.documentElement)
26
+ .getPropertyValue(variable)
27
+ .trim();
23
28
  switch (this.btnClass) {
24
29
  case ButtonClasses.Primary:
25
- backgroundColor = '#00444C';
30
+ backgroundColor = getCSSVariable("--primary-color");
26
31
  break;
27
32
  case ButtonClasses.Secondary:
28
- backgroundColor = '#2CA58D';
33
+ backgroundColor = getCSSVariable("--secondary-color");
29
34
  break;
30
35
  case ButtonClasses.Success:
31
- backgroundColor = '#00C853';
36
+ backgroundColor = getCSSVariable("--success-color");
32
37
  break;
33
38
  case ButtonClasses.Danger:
34
- backgroundColor = '#D32F2F';
39
+ backgroundColor = getCSSVariable("--danger-color");
35
40
  break;
36
41
  case ButtonClasses.Warning:
37
- backgroundColor = '#FFC107';
42
+ backgroundColor = getCSSVariable("--warning-color");
38
43
  break;
39
44
  case ButtonClasses.Info:
40
- backgroundColor = '#3EC9D6';
45
+ backgroundColor = getCSSVariable("--info-color");
41
46
  break;
42
47
  case ButtonClasses.Light:
43
- backgroundColor = '#EEF2F6';
44
- textColor = '#00444C'; // Custom text color for Light
48
+ backgroundColor = getCSSVariable("--light-color");
49
+ textColor = getCSSVariable("--primary-color");
45
50
  break;
46
51
  case ButtonClasses.Dark:
47
- backgroundColor = '#111936';
52
+ backgroundColor = getCSSVariable("--dark-color");
48
53
  break;
49
54
  case ButtonClasses.Link:
50
- backgroundColor = 'transparent';
51
- borderColor = '#DDE5E9';
52
- textColor = '#00444C'; // Custom text color for Link
55
+ backgroundColor = "transparent";
56
+ borderColor = getCSSVariable("--link-border-color");
57
+ textColor = getCSSVariable("--primary-color");
53
58
  break;
54
59
  default:
55
- backgroundColor = '#00444C';
60
+ backgroundColor = getCSSVariable("--primary-color");
56
61
  break;
57
62
  }
58
- const hoverFilter = this.isHovered ? 'brightness(80%)' : 'none'; // Adjusted hover brightness
59
- const activeFilter = this.isClicked ? 'brightness(60%)' : hoverFilter; // Adjusted active brightness
63
+ const hoverFilter = this.isHovered ? "brightness(80%)" : "none";
64
+ const activeFilter = this.isClicked ? "brightness(60%)" : hoverFilter;
60
65
  return {
61
- 'margin-top': `${this.marginTop}rem`,
62
- 'margin-bottom': `${this.marginBottom}rem`,
63
- 'margin-left': `${this.marginLeft}rem`,
64
- 'margin-right': `${this.marginRight}rem`,
65
- 'background-color': backgroundColor,
66
- 'color': textColor,
67
- 'border': borderColor ? `1px solid ${borderColor}` : 'none',
68
- 'transition': 'background-color 0.3s, border-color 0.3s, filter 0.3s',
69
- 'filter': activeFilter
66
+ "margin-top": `${this.marginTop}rem`,
67
+ "margin-bottom": `${this.marginBottom}rem`,
68
+ "margin-left": `${this.marginLeft}rem`,
69
+ "margin-right": `${this.marginRight}rem`,
70
+ "background-color": backgroundColor,
71
+ color: textColor,
72
+ border: borderColor ? `1px solid ${borderColor}` : "none",
73
+ transition: "background-color 0.3s, border-color 0.3s, filter 0.3s",
74
+ filter: activeFilter,
70
75
  };
71
76
  }
72
77
  onClick() {
@@ -86,39 +91,11 @@ export class BadgeComponent {
86
91
  this.isClicked = false;
87
92
  }
88
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BadgeComponent, selector: "sim-app-badge", inputs: { label: "label", badgeContent: "badgeContent", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight", btnClass: "btnClass" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "mousedown": "onMouseDown()", "mouseup": "onMouseUp()" } }, ngImport: i0, template: `
90
- <button
91
- class="notification-button"
92
- [ngStyle]="getDynamicStyles()"
93
- (click)="onClick()"
94
- [class.hovered]="isHovered"
95
- [class.clicked]="isClicked"
96
- (mousedown)="onMouseDown()"
97
- (mouseup)="onMouseUp()"
98
- (mouseleave)="onMouseLeave()"
99
- (mouseenter)="onMouseEnter()">
100
- {{ label }}
101
- <span class="badge">{{ badgeContent }}</span>
102
- </button>
103
- `, isInline: true, styles: [".notification-button{position:relative;display:inline-block;width:155px;height:58px;padding:14px 29px 14px 36px;border-radius:6px;border:none;font-size:16px;font-weight:700;text-align:center;transition:opacity .3s}.badge{position:absolute;width:52px;height:32px;top:-15px;right:-20px;background-color:#dc3545;color:#fff;border-radius:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;font-family:Inter,sans-serif}.notification-button.hovered{opacity:.8}.notification-button.clicked{opacity:.6}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BadgeComponent, selector: "sim-app-badge", inputs: { label: "label", badgeContent: "badgeContent", marginTop: "marginTop", marginBottom: "marginBottom", marginLeft: "marginLeft", marginRight: "marginRight", btnClass: "btnClass" }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "mousedown": "onMouseDown()", "mouseup": "onMouseUp()" } }, ngImport: i0, template: "<button\n class=\"notification-button\"\n [ngStyle]=\"getDynamicStyles()\"\n (click)=\"onClick()\"\n [class.hovered]=\"isHovered\"\n [class.clicked]=\"isClicked\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\n>\n {{ label }}\n <span class=\"badge\">{{ badgeContent }}</span>\n</button>\n", styles: [".notification-button{position:relative;display:inline-block;width:155px;height:58px;padding:14px 29px 14px 36px;border-radius:6px;border:none;font-size:16px;font-weight:700;text-align:center;transition:opacity .3s}.badge{position:absolute;width:52px;height:32px;top:-15px;right:-20px;background-color:var(--danger-color);color:var(--text-color);border-radius:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;font-family:var(--font-family)}.notification-button.hovered{opacity:.8}.notification-button.clicked{opacity:.6}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
95
  }
105
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BadgeComponent, decorators: [{
106
97
  type: Component,
107
- args: [{ selector: 'sim-app-badge', template: `
108
- <button
109
- class="notification-button"
110
- [ngStyle]="getDynamicStyles()"
111
- (click)="onClick()"
112
- [class.hovered]="isHovered"
113
- [class.clicked]="isClicked"
114
- (mousedown)="onMouseDown()"
115
- (mouseup)="onMouseUp()"
116
- (mouseleave)="onMouseLeave()"
117
- (mouseenter)="onMouseEnter()">
118
- {{ label }}
119
- <span class="badge">{{ badgeContent }}</span>
120
- </button>
121
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".notification-button{position:relative;display:inline-block;width:155px;height:58px;padding:14px 29px 14px 36px;border-radius:6px;border:none;font-size:16px;font-weight:700;text-align:center;transition:opacity .3s}.badge{position:absolute;width:52px;height:32px;top:-15px;right:-20px;background-color:#dc3545;color:#fff;border-radius:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;font-family:Inter,sans-serif}.notification-button.hovered{opacity:.8}.notification-button.clicked{opacity:.6}\n"] }]
98
+ args: [{ selector: "sim-app-badge", changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"notification-button\"\n [ngStyle]=\"getDynamicStyles()\"\n (click)=\"onClick()\"\n [class.hovered]=\"isHovered\"\n [class.clicked]=\"isClicked\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\n>\n {{ label }}\n <span class=\"badge\">{{ badgeContent }}</span>\n</button>\n", styles: [".notification-button{position:relative;display:inline-block;width:155px;height:58px;padding:14px 29px 14px 36px;border-radius:6px;border:none;font-size:16px;font-weight:700;text-align:center;transition:opacity .3s}.badge{position:absolute;width:52px;height:32px;top:-15px;right:-20px;background-color:var(--danger-color);color:var(--text-color);border-radius:16px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;font-family:var(--font-family)}.notification-button.hovered{opacity:.8}.notification-button.clicked{opacity:.6}\n"] }]
122
99
  }], propDecorators: { label: [{
123
100
  type: Input
124
101
  }], badgeContent: [{
@@ -137,15 +114,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
137
114
  type: Output
138
115
  }], onMouseEnter: [{
139
116
  type: HostListener,
140
- args: ['mouseenter']
117
+ args: ["mouseenter"]
141
118
  }], onMouseLeave: [{
142
119
  type: HostListener,
143
- args: ['mouseleave']
120
+ args: ["mouseleave"]
144
121
  }], onMouseDown: [{
145
122
  type: HostListener,
146
- args: ['mousedown']
123
+ args: ["mousedown"]
147
124
  }], onMouseUp: [{
148
125
  type: HostListener,
149
- args: ['mouseup']
126
+ args: ["mouseup"]
150
127
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUEwRDdELE1BQU0sT0FBTyxjQUFjO0lBeEQzQjtRQXlEVyxVQUFLLEdBQVcsVUFBVSxDQUFDO1FBQzNCLGlCQUFZLEdBQVcsS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQWtCLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDL0MsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVyRSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztLQW1GM0I7SUFqRkMsZ0JBQWdCO1FBQ2QsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLHFCQUFxQjtRQUM3QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFckIsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLGVBQWUsR0FBRyxTQUFTLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLGFBQWEsQ0FB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S0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQW9FUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFNMUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBTzFCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXO2dCQU16QixTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25DbGFzc2VzIH0gZnJvbSAnLi4vLi4vZW51bS9CdXR0b25DbGFzc2VzRW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbS1hcHAtYmFkZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9uLWJ1dHRvblwiXG4gICAgICBbbmdTdHlsZV09XCJnZXREeW5hbWljU3R5bGVzKClcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICBbY2xhc3MuaG92ZXJlZF09XCJpc0hvdmVyZWRcIlxuICAgICAgW2NsYXNzLmNsaWNrZWRdPVwiaXNDbGlja2VkXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oKVwiXG4gICAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj57eyBiYWRnZUNvbnRlbnQgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAubm90aWZpY2F0aW9uLWJ1dHRvbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMTU1cHg7XG4gICAgICBoZWlnaHQ6IDU4cHg7XG4gICAgICBwYWRkaW5nOiAxNHB4IDI5cHggMTRweCAzNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG4gICAgfVxuICAgIC5iYWRnZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogNTJweDsgLyogTGFyZ3VyYSBmaXhhICovXG4gICAgICBoZWlnaHQ6IDMycHg7IC8qIEFsdHVyYSBmaXhhICovXG4gICAgICB0b3A6IC0xNXB4O1xuICAgICAgcmlnaHQ6IC0yMHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsgLyogQXJyZWRvbmRhbWVudG8gZGFzIGJvcmRhcyAqL1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG4gICAgfVxuICAgIC5ub3RpZmljYXRpb24tYnV0dG9uLmhvdmVyZWQge1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbiAgICAubm90aWZpY2F0aW9uLWJ1dHRvbi5jbGlja2VkIHtcbiAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYWRnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnTWVuc2FnZW0nO1xuICBASW5wdXQoKSBiYWRnZUNvbnRlbnQ6IHN0cmluZyA9ICcrNDUnO1xuICBASW5wdXQoKSBtYXJnaW5Ub3A6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1hcmdpbkJvdHRvbTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWFyZ2luTGVmdDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWFyZ2luUmlnaHQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGJ0bkNsYXNzOiBCdXR0b25DbGFzc2VzID0gQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5O1xuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpc0hvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0RHluYW1pY1N0eWxlcygpIHtcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgbGV0IHRleHRDb2xvciA9ICcjZmZmJzsgLy8gRGVmYXVsdCB0ZXh0IGNvbG9yXG4gICAgbGV0IGJvcmRlckNvbG9yID0gJyc7XG5cbiAgICBzd2l0Y2ggKHRoaXMuYnRuQ2xhc3MpIHtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5OlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnIzAwNDQ0Qyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyMyQ0E1OEQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5TdWNjZXNzOlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnIzAwQzg1Myc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhbmdlcjpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyNEMzJGMkYnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5XYXJuaW5nOlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGQzEwNyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkluZm86XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjM0VDOUQ2JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuTGlnaHQ6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjRUVGMkY2JztcbiAgICAgICAgdGV4dENvbG9yID0gJyMwMDQ0NEMnOyAvLyBDdXN0b20gdGV4dCBjb2xvciBmb3IgTGlnaHRcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFyazpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyMxMTE5MzYnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaW5rOlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICBib3JkZXJDb2xvciA9ICcjRERFNUU5JztcbiAgICAgICAgdGV4dENvbG9yID0gJyMwMDQ0NEMnOyAvLyBDdXN0b20gdGV4dCBjb2xvciBmb3IgTGlua1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjMDA0NDRDJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJGaWx0ZXIgPSB0aGlzLmlzSG92ZXJlZCA/ICdicmlnaHRuZXNzKDgwJSknIDogJ25vbmUnOyAvLyBBZGp1c3RlZCBob3ZlciBicmlnaHRuZXNzXG4gICAgY29uc3QgYWN0aXZlRmlsdGVyID0gdGhpcy5pc0NsaWNrZWQgPyAnYnJpZ2h0bmVzcyg2MCUpJyA6IGhvdmVyRmlsdGVyOyAvLyBBZGp1c3RlZCBhY3RpdmUgYnJpZ2h0bmVzc1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdtYXJnaW4tdG9wJzogYCR7dGhpcy5tYXJnaW5Ub3B9cmVtYCxcbiAgICAgICdtYXJnaW4tYm90dG9tJzogYCR7dGhpcy5tYXJnaW5Cb3R0b219cmVtYCxcbiAgICAgICdtYXJnaW4tbGVmdCc6IGAke3RoaXMubWFyZ2luTGVmdH1yZW1gLFxuICAgICAgJ21hcmdpbi1yaWdodCc6IGAke3RoaXMubWFyZ2luUmlnaHR9cmVtYCxcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogYmFja2dyb3VuZENvbG9yLFxuICAgICAgJ2NvbG9yJzogdGV4dENvbG9yLFxuICAgICAgJ2JvcmRlcic6IGJvcmRlckNvbG9yID8gYDFweCBzb2xpZCAke2JvcmRlckNvbG9yfWAgOiAnbm9uZScsXG4gICAgICAndHJhbnNpdGlvbic6ICdiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGJvcmRlci1jb2xvciAwLjNzLCBmaWx0ZXIgMC4zcycsXG4gICAgICAnZmlsdGVyJzogYWN0aXZlRmlsdGVyXG4gICAgfTtcbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgb25Nb3VzZUVudGVyKCkge1xuICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgb25Nb3VzZURvd24oKSB7XG4gICAgdGhpcy5pc0NsaWNrZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIG9uTW91c2VVcCgpIHtcbiAgICB0aGlzLmlzQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLXBvcnRhbC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVE3RCxNQUFNLE9BQU8sY0FBYztJQU4zQjtRQU9XLFVBQUssR0FBVyxVQUFVLENBQUM7UUFDM0IsaUJBQVksR0FBVyxLQUFLLENBQUM7UUFDN0IsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBa0IsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUMvQyxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJFLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO0tBMEYzQjtJQXhGQyxnQkFBZ0I7UUFDZCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQzthQUN2RCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7YUFDaEMsSUFBSSxFQUFF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LEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUdELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDOytHQXJHVSxjQUFjO21HQUFkLGNBQWMsMmFDaEIzQiwrWEFjQTs7NEZERWEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQTJFUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFNMUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBTzFCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXO2dCQU16QixTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQnV0dG9uQ2xhc3NlcyB9IGZyb20gXCIuLi8uLi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzaW0tYXBwLWJhZGdlXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYmFkZ2UuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2JhZGdlLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VDb21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gXCJNZW5zYWdlbVwiO1xuICBASW5wdXQoKSBiYWRnZUNvbnRlbnQ6IHN0cmluZyA9IFwiKzQ1XCI7XG4gIEBJbnB1dCgpIG1hcmdpblRvcDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWFyZ2luQm90dG9tOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5MZWZ0OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJnaW5SaWdodDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgYnRuQ2xhc3M6IEJ1dHRvbkNsYXNzZXMgPSBCdXR0b25DbGFzc2VzLlByaW1hcnk7XG4gIEBPdXRwdXQoKSBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXREeW5hbWljU3R5bGVzKCkge1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBcIlwiO1xuICAgIGxldCB0ZXh0Q29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS10ZXh0LWNvbG9yXCIpXG4gICAgICAudHJpbSgpO1xuICAgIGxldCBib3JkZXJDb2xvciA9IFwiXCI7XG5cbiAgICBjb25zdCBnZXRDU1NWYXJpYWJsZSA9ICh2YXJpYWJsZTogc3RyaW5nKSA9PlxuICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKHZhcmlhYmxlKVxuICAgICAgICAudHJpbSgpO1xuXG4gICAgc3dpdGNoICh0aGlzLmJ0bkNsYXNzKSB7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXNlY29uZGFyeS1jb2xvclwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuU3VjY2VzczpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXN1Y2Nlc3MtY29sb3JcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhbmdlcjpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWRhbmdlci1jb2xvclwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXdhcm5pbmctY29sb3JcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkluZm86XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1pbmZvLWNvbG9yXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaWdodDpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWxpZ2h0LWNvbG9yXCIpO1xuICAgICAgICB0ZXh0Q29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFyazpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWRhcmstY29sb3JcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkxpbms6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IFwidHJhbnNwYXJlbnRcIjtcbiAgICAgICAgYm9yZGVyQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tbGluay1ib3JkZXItY29sb3JcIik7XG4gICAgICAgIHRleHRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1wcmltYXJ5LWNvbG9yXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1wcmltYXJ5LWNvbG9yXCIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBob3ZlckZpbHRlciA9IHRoaXMuaXNIb3ZlcmVkID8gXCJicmlnaHRuZXNzKDgwJSlcIiA6IFwibm9uZVwiO1xuICAgIGNvbnN0IGFjdGl2ZUZpbHRlciA9IHRoaXMuaXNDbGlja2VkID8gXCJicmlnaHRuZXNzKDYwJSlcIiA6IGhvdmVyRmlsdGVyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFwibWFyZ2luLXRvcFwiOiBgJHt0aGlzLm1hcmdpblRvcH1yZW1gLFxuICAgICAgXCJtYXJnaW4tYm90dG9tXCI6IGAke3RoaXMubWFyZ2luQm90dG9tfXJlbWAsXG4gICAgICBcIm1hcmdpbi1sZWZ0XCI6IGAke3RoaXMubWFyZ2luTGVmdH1yZW1gLFxuICAgICAgXCJtYXJnaW4tcmlnaHRcIjogYCR7dGhpcy5tYXJnaW5SaWdodH1yZW1gLFxuICAgICAgXCJiYWNrZ3JvdW5kLWNvbG9yXCI6IGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICBib3JkZXI6IGJvcmRlckNvbG9yID8gYDFweCBzb2xpZCAke2JvcmRlckNvbG9yfWAgOiBcIm5vbmVcIixcbiAgICAgIHRyYW5zaXRpb246IFwiYmFja2dyb3VuZC1jb2xvciAwLjNzLCBib3JkZXItY29sb3IgMC4zcywgZmlsdGVyIDAuM3NcIixcbiAgICAgIGZpbHRlcjogYWN0aXZlRmlsdGVyLFxuICAgIH07XG4gIH1cblxuICBvbkNsaWNrKCkge1xuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIilcbiAgb25Nb3VzZUVudGVyKCkge1xuICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIpXG4gIG9uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNDbGlja2VkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2Vkb3duXCIpXG4gIG9uTW91c2VEb3duKCkge1xuICAgIHRoaXMuaXNDbGlja2VkID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJtb3VzZXVwXCIpXG4gIG9uTW91c2VVcCgpIHtcbiAgICB0aGlzLmlzQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwibm90aWZpY2F0aW9uLWJ1dHRvblwiXG4gIFtuZ1N0eWxlXT1cImdldER5bmFtaWNTdHlsZXMoKVwiXG4gIChjbGljayk9XCJvbkNsaWNrKClcIlxuICBbY2xhc3MuaG92ZXJlZF09XCJpc0hvdmVyZWRcIlxuICBbY2xhc3MuY2xpY2tlZF09XCJpc0NsaWNrZWRcIlxuICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKClcIlxuICAobW91c2V1cCk9XCJvbk1vdXNlVXAoKVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuPlxuICB7eyBsYWJlbCB9fVxuICA8c3BhbiBjbGFzcz1cImJhZGdlXCI+e3sgYmFkZ2VDb250ZW50IH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
@@ -1,15 +1,16 @@
1
- import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';
2
- import { ButtonClasses } from '../../enum/ButtonClassesEnum';
1
+ import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, } from "@angular/core";
2
+ import { ButtonClasses } from "../../enum/ButtonClassesEnum";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../service/auth-service.service";
5
5
  import * as i2 from "@angular/common";
6
6
  export class ButtonComponent {
7
- constructor(authService) {
7
+ constructor(authService, cdr) {
8
8
  this.authService = authService;
9
- this.type = 'button';
10
- this.label = 'Submit';
9
+ this.cdr = cdr;
10
+ this.type = "button";
11
+ this.label = "Submit";
11
12
  this.btnClass = ButtonClasses.Primary;
12
- this.fontSize = '1rem';
13
+ this.fontSize = "1rem";
13
14
  this.disabled = false;
14
15
  this.autofocus = false;
15
16
  this.form = null;
@@ -24,6 +25,7 @@ export class ButtonComponent {
24
25
  this.onButtonClick = new EventEmitter();
25
26
  this.isHovered = false;
26
27
  this.isActive = false;
28
+ this.clicked = false;
27
29
  }
28
30
  ngOnInit() {
29
31
  this.validateInputs();
@@ -34,18 +36,18 @@ export class ButtonComponent {
34
36
  }
35
37
  }
36
38
  validateInputs() {
37
- const validTypes = ['button', 'submit', 'reset'];
39
+ const validTypes = ["button", "submit", "reset"];
38
40
  const validClasses = Object.values(ButtonClasses);
39
41
  if (!validTypes.includes(this.type)) {
40
- throw new Error(`Invalid type: ${this.type}. Allowed values are: ${validTypes.join(', ')}`);
42
+ throw new Error(`Invalid type: ${this.type}. Allowed values are: ${validTypes.join(", ")}`);
41
43
  }
42
44
  if (!validClasses.includes(this.btnClass)) {
43
- throw new Error(`Invalid btnClass: ${this.btnClass}. Allowed values are: ${validClasses.join(', ')}`);
45
+ throw new Error(`Invalid btnClass: ${this.btnClass}. Allowed values are: ${validClasses.join(", ")}`);
44
46
  }
45
- if (typeof this.disabled !== 'boolean') {
47
+ if (typeof this.disabled !== "boolean") {
46
48
  throw new Error(`Invalid disabled value: ${this.disabled}. It should be a boolean.`);
47
49
  }
48
- if (typeof this.autofocus !== 'boolean') {
50
+ if (typeof this.autofocus !== "boolean") {
49
51
  throw new Error(`Invalid autofocus value: ${this.autofocus}. It should be a boolean.`);
50
52
  }
51
53
  if (this.permissions && !Array.isArray(this.permissions)) {
@@ -53,59 +55,74 @@ export class ButtonComponent {
53
55
  }
54
56
  }
55
57
  onClick(event) {
58
+ this.clicked = true;
56
59
  this.onButtonClick.emit(event);
60
+ setTimeout(() => {
61
+ this.clicked = false;
62
+ this.cdr.detectChanges();
63
+ }, 80);
57
64
  }
58
65
  get dynamicStyles() {
59
66
  return this.calculateDynamicStyles();
60
67
  }
61
68
  calculateDynamicStyles() {
62
- let backgroundColor = '';
63
- let textColor = '#fff'; // Default text color
64
- let borderColor = '';
65
- switch (this.btnClass) {
66
- case ButtonClasses.Primary:
67
- backgroundColor = '#00444C';
68
- break;
69
- case ButtonClasses.Secondary:
70
- backgroundColor = '#2CA58D';
71
- break;
72
- case ButtonClasses.Success:
73
- backgroundColor = '#00C853';
74
- break;
75
- case ButtonClasses.Danger:
76
- backgroundColor = '#D32F2F';
77
- break;
78
- case ButtonClasses.Warning:
79
- backgroundColor = '#FFC107';
80
- break;
81
- case ButtonClasses.Info:
82
- backgroundColor = '#3EC9D6';
83
- break;
84
- case ButtonClasses.Light:
85
- backgroundColor = '#EEF2F6';
86
- textColor = '#00444C'; // Custom text color for Light
87
- break;
88
- case ButtonClasses.Dark:
89
- backgroundColor = '#111936';
90
- break;
91
- case ButtonClasses.Link:
92
- backgroundColor = 'transparent';
93
- borderColor = '#DDE5E9';
94
- textColor = '#00444C'; // Custom text color for Link
95
- break;
96
- default:
97
- backgroundColor = '#00444C';
98
- break;
69
+ let backgroundColor = "";
70
+ let textColor = getComputedStyle(document.documentElement)
71
+ .getPropertyValue("--text-color")
72
+ .trim(); // Cor de texto padrão
73
+ let borderColor = "";
74
+ const getCSSVariable = (variable) => getComputedStyle(document.documentElement)
75
+ .getPropertyValue(variable)
76
+ .trim();
77
+ if (this.clicked) {
78
+ backgroundColor = "rgba(126, 126, 126, 0.25)"; // Cor temporária ao clicar
99
79
  }
100
- const hoverFilter = this.isHovered ? 'brightness(80%)' : 'none'; // Adjusted hover brightness
101
- const activeFilter = this.isActive ? 'brightness(60%)' : hoverFilter; // Adjusted active brightness
80
+ else {
81
+ switch (this.btnClass) {
82
+ case ButtonClasses.Primary:
83
+ backgroundColor = getCSSVariable("--primary-color");
84
+ break;
85
+ case ButtonClasses.Secondary:
86
+ backgroundColor = getCSSVariable("--secondary-color");
87
+ break;
88
+ case ButtonClasses.Success:
89
+ backgroundColor = getCSSVariable("--success-color");
90
+ break;
91
+ case ButtonClasses.Danger:
92
+ backgroundColor = getCSSVariable("--danger-color");
93
+ break;
94
+ case ButtonClasses.Warning:
95
+ backgroundColor = getCSSVariable("--warning-color");
96
+ break;
97
+ case ButtonClasses.Info:
98
+ backgroundColor = getCSSVariable("--info-color");
99
+ break;
100
+ case ButtonClasses.Light:
101
+ backgroundColor = getCSSVariable("--light-color");
102
+ textColor = getCSSVariable("--primary-color");
103
+ break;
104
+ case ButtonClasses.Dark:
105
+ backgroundColor = getCSSVariable("--dark-color");
106
+ break;
107
+ case ButtonClasses.Link:
108
+ backgroundColor = "transparent";
109
+ borderColor = getCSSVariable("--link-border-color");
110
+ textColor = getCSSVariable("--primary-color");
111
+ break;
112
+ default:
113
+ backgroundColor = getCSSVariable("--primary-color");
114
+ break;
115
+ }
116
+ }
117
+ const hoverFilter = this.isHovered ? "brightness(80%)" : "none";
118
+ const activeFilter = this.isActive ? "brightness(60%)" : hoverFilter;
102
119
  return {
103
- 'font-size': this.fontSize,
104
- 'background-color': backgroundColor,
105
- 'color': textColor,
106
- 'border': borderColor ? `1px solid ${borderColor}` : 'none',
107
- 'transition': 'background-color 0.3s, border-color 0.3s, filter 0.3s',
108
- 'filter': activeFilter
120
+ "font-size": this.fontSize,
121
+ "background-color": backgroundColor,
122
+ color: textColor,
123
+ border: borderColor ? `1px solid ${borderColor}` : "none",
124
+ transition: "background-color 0.3s, border-color 0.3s, filter 0.3s",
125
+ filter: activeFilter,
109
126
  };
110
127
  }
111
128
  hasPermission() {
@@ -117,69 +134,29 @@ export class ButtonComponent {
117
134
  }
118
135
  catch (error) {
119
136
  if (error instanceof Error) {
120
- console.error('Permission error:', error.message);
137
+ console.error("Permission error:", error.message);
121
138
  }
122
139
  else {
123
- console.error('Unknown error occurred during permission check');
140
+ console.error("Unknown error occurred during permission check");
124
141
  }
125
142
  return true;
126
143
  }
127
144
  }
128
145
  onCancel(event) {
129
- console.log('Cancel button clicked', event);
146
+ console.log("Cancel button clicked", event);
130
147
  // Lógica para o cancelamento
131
148
  }
132
149
  onSave(event) {
133
- console.log('Save button clicked', event);
150
+ console.log("Save button clicked", event);
134
151
  // Lógica para salvar alterações
135
152
  }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "argenta-custom-button", inputs: { type: "type", label: "label", btnClass: "btnClass", fontSize: "fontSize", disabled: "disabled", autofocus: "autofocus", form: "form", formaction: "formaction", formenctype: "formenctype", formmethod: "formmethod", formnovalidate: "formnovalidate", formtarget: "formtarget", name: "name", value: "value", permissions: "permissions" }, outputs: { onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: `
138
- <ng-container *ngIf="hasPermission()">
139
- <button [type]="type"
140
- class="btn"
141
- [ngClass]="btnClass"
142
- [ngStyle]="dynamicStyles"
143
- (click)="onClick($event)"
144
- [disabled]="disabled"
145
- [attr.autofocus]="autofocus ? true : null"
146
- [attr.form]="form"
147
- [attr.formaction]="formaction"
148
- [attr.formenctype]="formenctype"
149
- [attr.formmethod]="formmethod"
150
- [attr.formnovalidate]="formnovalidate"
151
- [attr.formtarget]="formtarget"
152
- [attr.name]="name"
153
- [attr.value]="value">
154
- {{ label }}
155
- </button>
156
- </ng-container>
157
- `, isInline: true, styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:Inter,sans-serif;font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "argenta-custom-button", inputs: { type: "type", label: "label", btnClass: "btnClass", fontSize: "fontSize", disabled: "disabled", autofocus: "autofocus", form: "form", formaction: "formaction", formenctype: "formenctype", formmethod: "formmethod", formnovalidate: "formnovalidate", formtarget: "formtarget", name: "name", value: "value", permissions: "permissions" }, outputs: { onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}.btn:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.btn:active{background-color:#7e7e7e40}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
158
155
  }
159
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
160
157
  type: Component,
161
- args: [{ selector: 'argenta-custom-button', template: `
162
- <ng-container *ngIf="hasPermission()">
163
- <button [type]="type"
164
- class="btn"
165
- [ngClass]="btnClass"
166
- [ngStyle]="dynamicStyles"
167
- (click)="onClick($event)"
168
- [disabled]="disabled"
169
- [attr.autofocus]="autofocus ? true : null"
170
- [attr.form]="form"
171
- [attr.formaction]="formaction"
172
- [attr.formenctype]="formenctype"
173
- [attr.formmethod]="formmethod"
174
- [attr.formnovalidate]="formnovalidate"
175
- [attr.formtarget]="formtarget"
176
- [attr.name]="name"
177
- [attr.value]="value">
178
- {{ label }}
179
- </button>
180
- </ng-container>
181
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:Inter,sans-serif;font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left}\n"] }]
182
- }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { type: [{
158
+ args: [{ selector: "argenta-custom-button", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}.btn:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.btn:active{background-color:#7e7e7e40}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"] }]
159
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
183
160
  type: Input
184
161
  }], label: [{
185
162
  type: Input
@@ -212,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
212
189
  }], onButtonClick: [{
213
190
  type: Output
214
191
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBb0MsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBeUM3RCxNQUFNLE9BQU8sZUFBZTtJQXNCMUIsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFyQm5DLFNBQUksR0FBVyxRQUFRLENBQUM7UUFDeEIsVUFBSyxHQUFXLFFBQVEsQ0FBQztRQUN6QixhQUFRLEdBQWtCLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDaEQsYUFBUSxHQUFXLE1BQU0sQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsU0FBSSxHQUFrQixJQUFJLENBQUM7UUFDM0IsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRTFCLGtCQUFhLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFFakUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO0lBRWMsQ0FBQztJQUVq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LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkNsYXNzZXMgfSBmcm9tICcuLi8uLi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdXRoLXNlcnZpY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZ2VudGEtY3VzdG9tLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Blcm1pc3Npb24oKVwiPlxuICAgICAgPGJ1dHRvbiBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJidG5DbGFzc1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImR5bmFtaWNTdHlsZXNcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXV0b2ZvY3VzXT1cImF1dG9mb2N1cyA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9ybWFjdGlvbl09XCJmb3JtYWN0aW9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9ybWVuY3R5cGVdPVwiZm9ybWVuY3R5cGVcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3JtbWV0aG9kXT1cImZvcm1tZXRob2RcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3Jtbm92YWxpZGF0ZV09XCJmb3Jtbm92YWxpZGF0ZVwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcm10YXJnZXRdPVwiZm9ybXRhcmdldFwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5idG4ge1xuICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzLCBib3JkZXItY29sb3IgMC4zcywgZmlsdGVyIDAuM3M7XG4gICAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAwNWVtO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICdidXR0b24nO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1N1Ym1pdCc7XG4gIEBJbnB1dCgpIGJ0bkNsYXNzOiBCdXR0b25DbGFzc2VzID0gQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5O1xuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gJzFyZW0nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1hY3Rpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3JtZW5jdHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1tZXRob2Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3Jtbm92YWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtdGFyZ2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIG9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIHByaXZhdGUgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUlucHV0cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlSW5wdXRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUlucHV0cygpOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZFR5cGVzID0gWydidXR0b24nLCAnc3VibWl0JywgJ3Jlc2V0J107XG4gICAgY29uc3QgdmFsaWRDbGFzc2VzID0gT2JqZWN0LnZhbHVlcyhCdXR0b25DbGFzc2VzKTtcblxuICAgIGlmICghdmFsaWRUeXBlcy5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZTogJHt0aGlzLnR5cGV9LiBBbGxvd2VkIHZhbHVlcyBhcmU6ICR7dmFsaWRUeXBlcy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIGlmICghdmFsaWRDbGFzc2VzLmluY2x1ZGVzKHRoaXMuYnRuQ2xhc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYnRuQ2xhc3M6ICR7dGhpcy5idG5DbGFzc30uIEFsbG93ZWQgdmFsdWVzIGFyZTogJHt2YWxpZENsYXNzZXMuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWQgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2FibGVkIHZhbHVlOiAke3RoaXMuZGlzYWJsZWR9LiBJdCBzaG91bGQgYmUgYSBib29sZWFuLmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5hdXRvZm9jdXMgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGF1dG9mb2N1cyB2YWx1ZTogJHt0aGlzLmF1dG9mb2N1c30uIEl0IHNob3VsZCBiZSBhIGJvb2xlYW4uYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwZXJtaXNzaW9ucyB2YWx1ZTogJHt0aGlzLnBlcm1pc3Npb25zfS4gSXQgc2hvdWxkIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MuYCk7XG4gICAgfVxuICB9XG5cbiAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgZHluYW1pY1N0eWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVEeW5hbWljU3R5bGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUR5bmFtaWNTdHlsZXMoKSB7XG4gICAgbGV0IGJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgIGxldCB0ZXh0Q29sb3IgPSAnI2ZmZic7IC8vIERlZmF1bHQgdGV4dCBjb2xvclxuICAgIGxldCBib3JkZXJDb2xvciA9ICcnO1xuXG4gICAgc3dpdGNoICh0aGlzLmJ0bkNsYXNzKSB7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyMwMDQ0NEMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5TZWNvbmRhcnk6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjMkNBNThEJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuU3VjY2VzczpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyMwMEM4NTMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5EYW5nZXI6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjRDMyRjJGJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJyNGRkMxMDcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5JbmZvOlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnIzNFQzlENic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkxpZ2h0OlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0VFRjJGNic7XG4gICAgICAgIHRleHRDb2xvciA9ICcjMDA0NDRDJzsgLy8gQ3VzdG9tIHRleHQgY29sb3IgZm9yIExpZ2h0XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhcms6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjMTExOTM2JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuTGluazpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gJ3RyYW5zcGFyZW50JztcbiAgICAgICAgYm9yZGVyQ29sb3IgPSAnI0RERTVFOSc7XG4gICAgICAgIHRleHRDb2xvciA9ICcjMDA0NDRDJzsgLy8gQ3VzdG9tIHRleHQgY29sb3IgZm9yIExpbmtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnIzAwNDQ0Qyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdmVyRmlsdGVyID0gdGhpcy5pc0hvdmVyZWQgPyAnYnJpZ2h0bmVzcyg4MCUpJyA6ICdub25lJzsgLy8gQWRqdXN0ZWQgaG92ZXIgYnJpZ2h0bmVzc1xuICAgIGNvbnN0IGFjdGl2ZUZpbHRlciA9IHRoaXMuaXNBY3RpdmUgPyAnYnJpZ2h0bmVzcyg2MCUpJyA6IGhvdmVyRmlsdGVyOyAvLyBBZGp1c3RlZCBhY3RpdmUgYnJpZ2h0bmVzc1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdmb250LXNpemUnOiB0aGlzLmZvbnRTaXplLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAnY29sb3InOiB0ZXh0Q29sb3IsXG4gICAgICAnYm9yZGVyJzogYm9yZGVyQ29sb3IgPyBgMXB4IHNvbGlkICR7Ym9yZGVyQ29sb3J9YCA6ICdub25lJyxcbiAgICAgICd0cmFuc2l0aW9uJzogJ2JhY2tncm91bmQtY29sb3IgMC4zcywgYm9yZGVyLWNvbG9yIDAuM3MsIGZpbHRlciAwLjNzJyxcbiAgICAgICdmaWx0ZXInOiBhY3RpdmVGaWx0ZXJcbiAgICB9O1xuICB9XG5cbiAgaGFzUGVybWlzc2lvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMgfHwgdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdQZXJtaXNzaW9uIGVycm9yOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGVybWlzc2lvbiBjaGVjaycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcsIGV2ZW50KTtcbiAgICAvLyBMw7NnaWNhIHBhcmEgbyBjYW5jZWxhbWVudG9cbiAgfVxuXG4gIG9uU2F2ZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZygnU2F2ZSBidXR0b24gY2xpY2tlZCcsIGV2ZW50KTtcbiAgICAvLyBMw7NnaWNhIHBhcmEgc2FsdmFyIGFsdGVyYcOnw7Vlc1xuICB9XG59XG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTix1QkFBdUIsR0FFeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyxlQUFlO0lBd0IxQixZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCO1FBRHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekJ2QixTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxRQUFRLENBQUM7UUFDekIsYUFBUSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2hELGFBQVEsR0FBVyxNQUFNLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixVQUFLLEdBQWtCLElBQUksQ0FB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LFFBQVEsQ0FBQyxLQUFZO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsNkJBQTZCO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBWTtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLGdDQUFnQztJQUNsQyxDQUFDOytHQXJMVSxlQUFlO21HQUFmLGVBQWUsdWRDcEI1Qix3bEJBcUJBOzs0RkREYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTtrSUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJ1dHRvbkNsYXNzZXMgfSBmcm9tIFwiLi4vLi4vZW51bS9CdXR0b25DbGFzc2VzRW51bVwiO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9hdXRoLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXJnZW50YS1jdXN0b20tYnV0dG9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYnV0dG9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9idXR0b24uY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9IFwiYnV0dG9uXCI7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlN1Ym1pdFwiO1xuICBASW5wdXQoKSBidG5DbGFzczogQnV0dG9uQ2xhc3NlcyA9IEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTtcbiAgQElucHV0KCkgZm9udFNpemU6IHN0cmluZyA9IFwiMXJlbVwiO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1hY3Rpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3JtZW5jdHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1tZXRob2Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3Jtbm92YWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtdGFyZ2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIG9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIHByaXZhdGUgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlSW5wdXRzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVJbnB1dHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkVHlwZXMgPSBbXCJidXR0b25cIiwgXCJzdWJtaXRcIiwgXCJyZXNldFwiXTtcbiAgICBjb25zdCB2YWxpZENsYXNzZXMgPSBPYmplY3QudmFsdWVzKEJ1dHRvbkNsYXNzZXMpO1xuXG4gICAgaWYgKCF2YWxpZFR5cGVzLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgdHlwZTogJHt0aGlzLnR5cGV9LiBBbGxvd2VkIHZhbHVlcyBhcmU6ICR7dmFsaWRUeXBlcy5qb2luKFxuICAgICAgICAgIFwiLCBcIlxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZENsYXNzZXMuaW5jbHVkZXModGhpcy5idG5DbGFzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgYnRuQ2xhc3M6ICR7XG4gICAgICAgICAgdGhpcy5idG5DbGFzc1xuICAgICAgICB9LiBBbGxvd2VkIHZhbHVlcyBhcmU6ICR7dmFsaWRDbGFzc2VzLmpvaW4oXCIsIFwiKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZCAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgZGlzYWJsZWQgdmFsdWU6ICR7dGhpcy5kaXNhYmxlZH0uIEl0IHNob3VsZCBiZSBhIGJvb2xlYW4uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXV0b2ZvY3VzICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBhdXRvZm9jdXMgdmFsdWU6ICR7dGhpcy5hdXRvZm9jdXN9LiBJdCBzaG91bGQgYmUgYSBib29sZWFuLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgcGVybWlzc2lvbnMgdmFsdWU6ICR7dGhpcy5wZXJtaXNzaW9uc30uIEl0IHNob3VsZCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMub25CdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDgwKTtcbiAgfVxuXG4gIGdldCBkeW5hbWljU3R5bGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUR5bmFtaWNTdHlsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRHluYW1pY1N0eWxlcygpIHtcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yID0gXCJcIjtcbiAgICBsZXQgdGV4dENvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tdGV4dC1jb2xvclwiKVxuICAgICAgLnRyaW0oKTsgLy8gQ29yIGRlIHRleHRvIHBhZHLDo29cbiAgICBsZXQgYm9yZGVyQ29sb3IgPSBcIlwiO1xuXG4gICAgY29uc3QgZ2V0Q1NTVmFyaWFibGUgPSAodmFyaWFibGU6IHN0cmluZykgPT5cbiAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSh2YXJpYWJsZSlcbiAgICAgICAgLnRyaW0oKTtcblxuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IFwicmdiYSgxMjYsIDEyNiwgMTI2LCAwLjI1KVwiOyAvLyBDb3IgdGVtcG9yw6FyaWEgYW8gY2xpY2FyXG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5idG5DbGFzcykge1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tc2Vjb25kYXJ5LWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuU3VjY2VzczpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tc3VjY2Vzcy1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhbmdlcjpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tZGFuZ2VyLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0td2FybmluZy1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkluZm86XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWluZm8tY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaWdodDpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tbGlnaHQtY29sb3JcIik7XG4gICAgICAgICAgdGV4dENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5EYXJrOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1kYXJrLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuTGluazpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgICAgICAgYm9yZGVyQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tbGluay1ib3JkZXItY29sb3JcIik7XG4gICAgICAgICAgdGV4dENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJGaWx0ZXIgPSB0aGlzLmlzSG92ZXJlZCA/IFwiYnJpZ2h0bmVzcyg4MCUpXCIgOiBcIm5vbmVcIjtcbiAgICBjb25zdCBhY3RpdmVGaWx0ZXIgPSB0aGlzLmlzQWN0aXZlID8gXCJicmlnaHRuZXNzKDYwJSlcIiA6IGhvdmVyRmlsdGVyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFwiZm9udC1zaXplXCI6IHRoaXMuZm9udFNpemUsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgY29sb3I6IHRleHRDb2xvcixcbiAgICAgIGJvcmRlcjogYm9yZGVyQ29sb3IgPyBgMXB4IHNvbGlkICR7Ym9yZGVyQ29sb3J9YCA6IFwibm9uZVwiLFxuICAgICAgdHJhbnNpdGlvbjogXCJiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGJvcmRlci1jb2xvciAwLjNzLCBmaWx0ZXIgMC4zc1wiLFxuICAgICAgZmlsdGVyOiBhY3RpdmVGaWx0ZXIsXG4gICAgfTtcbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zIHx8IHRoaXMucGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlBlcm1pc3Npb24gZXJyb3I6XCIsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlVua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBlcm1pc3Npb24gY2hlY2tcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvbkNhbmNlbChldmVudDogRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkNhbmNlbCBidXR0b24gY2xpY2tlZFwiLCBldmVudCk7XG4gICAgLy8gTMOzZ2ljYSBwYXJhIG8gY2FuY2VsYW1lbnRvXG4gIH1cblxuICBvblNhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJTYXZlIGJ1dHRvbiBjbGlja2VkXCIsIGV2ZW50KTtcbiAgICAvLyBMw7NnaWNhIHBhcmEgc2FsdmFyIGFsdGVyYcOnw7Vlc1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzUGVybWlzc2lvbigpXCI+XG4gIDxidXR0b25cbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBjbGFzcz1cImJ0blwiXG4gICAgW25nQ2xhc3NdPVwiYnRuQ2xhc3NcIlxuICAgIFtuZ1N0eWxlXT1cImR5bmFtaWNTdHlsZXNcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXV0b2ZvY3VzXT1cImF1dG9mb2N1cyA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm1cIlxuICAgIFthdHRyLmZvcm1hY3Rpb25dPVwiZm9ybWFjdGlvblwiXG4gICAgW2F0dHIuZm9ybWVuY3R5cGVdPVwiZm9ybWVuY3R5cGVcIlxuICAgIFthdHRyLmZvcm1tZXRob2RdPVwiZm9ybW1ldGhvZFwiXG4gICAgW2F0dHIuZm9ybW5vdmFsaWRhdGVdPVwiZm9ybW5vdmFsaWRhdGVcIlxuICAgIFthdHRyLmZvcm10YXJnZXRdPVwiZm9ybXRhcmdldFwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gID5cbiAgICB7eyBsYWJlbCB9fVxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuIl19