@wizco/fenixds-ngx 17.3.4 → 17.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/msg-box-feedback/msg-box-feedback.component.mjs +32 -25
- package/esm2022/lib/smart-select/smart-select.component.mjs +32 -16
- package/esm2022/lib/tabs/tabs.component.mjs +14 -7
- package/fesm2022/wizco-fenixds-ngx.mjs +75 -45
- package/fesm2022/wizco-fenixds-ngx.mjs.map +1 -1
- package/lib/msg-box-feedback/msg-box-feedback.component.d.ts +2 -1
- package/lib/msg-box-feedback/msg-box-feedback.component.d.ts.map +1 -1
- package/lib/smart-select/smart-select.component.d.ts +7 -5
- package/lib/smart-select/smart-select.component.d.ts.map +1 -1
- package/lib/tabs/tabs.component.d.ts +3 -2
- package/lib/tabs/tabs.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -50,6 +50,7 @@ export class TabsComponent {
|
|
|
50
50
|
* @param {boolean} noBorder
|
|
51
51
|
*/
|
|
52
52
|
noBorder = false;
|
|
53
|
+
autoScroll = true;
|
|
53
54
|
/**
|
|
54
55
|
* Evento de click no botão ou link do componente
|
|
55
56
|
* @param {EventEmitter<void>} handleClick
|
|
@@ -78,6 +79,7 @@ export class TabsComponent {
|
|
|
78
79
|
*/
|
|
79
80
|
ngOnChanges(changes) {
|
|
80
81
|
if (changes['selected']) {
|
|
82
|
+
console.log('selected', this.selected);
|
|
81
83
|
this.handleActive(100, false);
|
|
82
84
|
}
|
|
83
85
|
}
|
|
@@ -90,8 +92,8 @@ export class TabsComponent {
|
|
|
90
92
|
/**
|
|
91
93
|
* @ignore
|
|
92
94
|
*/
|
|
93
|
-
eventSubmit() {
|
|
94
|
-
this.handleClick.emit();
|
|
95
|
+
eventSubmit(link = '') {
|
|
96
|
+
this.handleClick.emit(link);
|
|
95
97
|
}
|
|
96
98
|
/**
|
|
97
99
|
* @ignore
|
|
@@ -112,11 +114,13 @@ export class TabsComponent {
|
|
|
112
114
|
const widthbutton = _elementChildActive.getBoundingClientRect().width;
|
|
113
115
|
_element.style.setProperty('--leftActive', left + 'px');
|
|
114
116
|
_element.style.setProperty('--widthActive', widthbutton + 'px');
|
|
115
|
-
|
|
117
|
+
if (this.autoScroll) {
|
|
118
|
+
_elementChildActive.scrollIntoView({ block: 'end', behavior: 'smooth' });
|
|
119
|
+
}
|
|
116
120
|
if (buttonClick) {
|
|
117
121
|
this.handleClick.emit();
|
|
118
122
|
}
|
|
119
|
-
if (this.enabledResponsive) {
|
|
123
|
+
if (this.enabledResponsive && this.autoScroll) {
|
|
120
124
|
_elementChildActive.scrollIntoView({
|
|
121
125
|
block: 'end',
|
|
122
126
|
behavior: 'smooth',
|
|
@@ -125,14 +129,14 @@ export class TabsComponent {
|
|
|
125
129
|
}, timer);
|
|
126
130
|
}
|
|
127
131
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabsComponent, deps: [{ token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabsComponent, isStandalone: true, selector: "wco-navtabs", inputs: { type: "type", full: "full", selected: "selected", enabledResponsive: ["enabled-responsive", "enabledResponsive"], setListOptions: ["listOptions", "setListOptions"], noBorder: ["no-border", "noBorder"] }, outputs: { handleClick: "handleClick" }, viewQueries: [{ propertyName: "navTabs", first: true, predicate: ["navTabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n", styles: ["wco-navtabs{width:100%;overflow:auto;display:block}@media screen and (max-width: 600px){wco-navtabs{overflow:auto;white-space:nowrap;max-width:100vw}wco-navtabs::-webkit-scrollbar{display:none}}.wco-navtabs{--leftActive: 50px;--widthActive: 0px;--navtabs-gapLine: var(--wco-spacing-nano);--navtabs-gap: 0;--navtab-color-selected: var(--wco-color-primary-600);--navtabs-underline-height: 3px;display:inline-flex;position:relative;gap:var(--navtabs-gap);height:100%;border-bottom:1px solid var(--wco-color-neutral-100);scroll-behavior:smooth}.wco-navtabs.navTabs-mobile:before{display:none}.wco-navtabs.navTabs-mobile button.active{border-bottom:3px solid var(--wco-color-primary-600)}.wco-navtabs.navTabs-full{display:grid;grid-template-columns:repeat(auto-fit,minmax(30px,1fr))}.wco-navtabs.navTabs-full>button{width:100%}.wco-navtabs.no-border{border-bottom:none!important}@media (max-width: 900px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxxs);--navtabs-gap: var(--wco-spacing-xxs)}}@media (max-width: 600px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxs)}}.wco-navtabs:before{content:\"\";width:var(--widthActive);height:var(--navtabs-underline-height);background-color:var(--navtab-color-selected);position:absolute;bottom:0;left:0;transform:translate(var(--leftActive));transition:transform .15s cubic-bezier(.645,.045,.355,1),width .1s linear}.wco-navtabs button{background-color:transparent;border:none;font-size:var(--wco-font-size-md);font-weight:400;min-height:48px;padding:var(--wco-spacing-nano) var(--wco-spacing-xxs) var(--navtabs-gapLine) var(--wco-spacing-xxs);display:flex;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;color:var(--wco-color-neutral-900);letter-spacing:.5px}.wco-navtabs button:hover:not(:disabled){background-color:var(--wco-color-primary-50);color:var(--wco-color-primary-700);cursor:pointer;border-radius:var(--wco-spacing-nano) var(--wco-spacing-nano) 0 0}@media (max-width: 600px){.wco-navtabs button{font-size:var(--wco-font-size-xs);min-height:30px}}.wco-navtabs button:disabled{cursor:not-allowed;color:var(--wco-color-neutral-900)}.wco-navtabs button.color-to-nav{font-weight:700}.wco-navtabs button.active{font-weight:700;letter-spacing:0px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
132
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabsComponent, isStandalone: true, selector: "wco-navtabs", inputs: { type: "type", full: "full", selected: "selected", enabledResponsive: ["enabled-responsive", "enabledResponsive"], setListOptions: ["listOptions", "setListOptions"], noBorder: ["no-border", "noBorder"], autoScroll: "autoScroll" }, outputs: { handleClick: "handleClick" }, viewQueries: [{ propertyName: "navTabs", first: true, predicate: ["navTabs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"link.type === 'button'\">\n <button \n (click)=\"eventSubmit(link.path)\" \n [class.color-to-nav]=\"type === 'nav'\"\n [class.active]=\"link.path === selected\"\n [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n", styles: ["wco-navtabs{width:100%;overflow:auto;display:block}@media screen and (max-width: 600px){wco-navtabs{overflow:auto;white-space:nowrap;max-width:100vw}wco-navtabs::-webkit-scrollbar{display:none}}.wco-navtabs{--leftActive: 50px;--widthActive: 0px;--navtabs-gapLine: var(--wco-spacing-nano);--navtabs-gap: 0;--navtab-color-selected: var(--wco-color-primary-600);--navtabs-underline-height: 3px;display:inline-flex;position:relative;gap:var(--navtabs-gap);height:100%;border-bottom:1px solid var(--wco-color-neutral-100);scroll-behavior:smooth}.wco-navtabs.navTabs-mobile:before{display:none}.wco-navtabs.navTabs-mobile button.active{border-bottom:3px solid var(--wco-color-primary-600)}.wco-navtabs.navTabs-full{display:grid;grid-template-columns:repeat(auto-fit,minmax(30px,1fr))}.wco-navtabs.navTabs-full>button{width:100%}.wco-navtabs.no-border{border-bottom:none!important}@media (max-width: 900px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxxs);--navtabs-gap: var(--wco-spacing-xxs)}}@media (max-width: 600px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxs)}}.wco-navtabs:before{content:\"\";width:var(--widthActive);height:var(--navtabs-underline-height);background-color:var(--navtab-color-selected);position:absolute;bottom:0;left:0;transform:translate(var(--leftActive));transition:transform .15s cubic-bezier(.645,.045,.355,1),width .1s linear}.wco-navtabs button{background-color:transparent;border:none;font-size:var(--wco-font-size-md);font-weight:400;min-height:48px;padding:var(--wco-spacing-nano) var(--wco-spacing-xxs) var(--navtabs-gapLine) var(--wco-spacing-xxs);display:flex;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;color:var(--wco-color-neutral-900);letter-spacing:.5px}.wco-navtabs button:hover:not(:disabled){background-color:var(--wco-color-primary-50);color:var(--wco-color-primary-700);cursor:pointer;border-radius:var(--wco-spacing-nano) var(--wco-spacing-nano) 0 0}@media (max-width: 600px){.wco-navtabs button{font-size:var(--wco-font-size-xs);min-height:30px}}.wco-navtabs button:disabled{cursor:not-allowed;color:var(--wco-color-neutral-900)}.wco-navtabs button.color-to-nav{font-weight:700}.wco-navtabs button.active{font-weight:700;letter-spacing:0px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
129
133
|
}
|
|
130
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabsComponent, decorators: [{
|
|
131
135
|
type: Component,
|
|
132
136
|
args: [{ selector: 'wco-navtabs', standalone: true, imports: [
|
|
133
137
|
CommonModule,
|
|
134
138
|
RouterModule
|
|
135
|
-
], encapsulation: ViewEncapsulation.None, template: "\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n", styles: ["wco-navtabs{width:100%;overflow:auto;display:block}@media screen and (max-width: 600px){wco-navtabs{overflow:auto;white-space:nowrap;max-width:100vw}wco-navtabs::-webkit-scrollbar{display:none}}.wco-navtabs{--leftActive: 50px;--widthActive: 0px;--navtabs-gapLine: var(--wco-spacing-nano);--navtabs-gap: 0;--navtab-color-selected: var(--wco-color-primary-600);--navtabs-underline-height: 3px;display:inline-flex;position:relative;gap:var(--navtabs-gap);height:100%;border-bottom:1px solid var(--wco-color-neutral-100);scroll-behavior:smooth}.wco-navtabs.navTabs-mobile:before{display:none}.wco-navtabs.navTabs-mobile button.active{border-bottom:3px solid var(--wco-color-primary-600)}.wco-navtabs.navTabs-full{display:grid;grid-template-columns:repeat(auto-fit,minmax(30px,1fr))}.wco-navtabs.navTabs-full>button{width:100%}.wco-navtabs.no-border{border-bottom:none!important}@media (max-width: 900px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxxs);--navtabs-gap: var(--wco-spacing-xxs)}}@media (max-width: 600px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxs)}}.wco-navtabs:before{content:\"\";width:var(--widthActive);height:var(--navtabs-underline-height);background-color:var(--navtab-color-selected);position:absolute;bottom:0;left:0;transform:translate(var(--leftActive));transition:transform .15s cubic-bezier(.645,.045,.355,1),width .1s linear}.wco-navtabs button{background-color:transparent;border:none;font-size:var(--wco-font-size-md);font-weight:400;min-height:48px;padding:var(--wco-spacing-nano) var(--wco-spacing-xxs) var(--navtabs-gapLine) var(--wco-spacing-xxs);display:flex;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;color:var(--wco-color-neutral-900);letter-spacing:.5px}.wco-navtabs button:hover:not(:disabled){background-color:var(--wco-color-primary-50);color:var(--wco-color-primary-700);cursor:pointer;border-radius:var(--wco-spacing-nano) var(--wco-spacing-nano) 0 0}@media (max-width: 600px){.wco-navtabs button{font-size:var(--wco-font-size-xs);min-height:30px}}.wco-navtabs button:disabled{cursor:not-allowed;color:var(--wco-color-neutral-900)}.wco-navtabs button.color-to-nav{font-weight:700}.wco-navtabs button.active{font-weight:700;letter-spacing:0px}\n"] }]
|
|
139
|
+
], encapsulation: ViewEncapsulation.None, template: "\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"link.type === 'button'\">\n <button \n (click)=\"eventSubmit(link.path)\" \n [class.color-to-nav]=\"type === 'nav'\"\n [class.active]=\"link.path === selected\"\n [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n", styles: ["wco-navtabs{width:100%;overflow:auto;display:block}@media screen and (max-width: 600px){wco-navtabs{overflow:auto;white-space:nowrap;max-width:100vw}wco-navtabs::-webkit-scrollbar{display:none}}.wco-navtabs{--leftActive: 50px;--widthActive: 0px;--navtabs-gapLine: var(--wco-spacing-nano);--navtabs-gap: 0;--navtab-color-selected: var(--wco-color-primary-600);--navtabs-underline-height: 3px;display:inline-flex;position:relative;gap:var(--navtabs-gap);height:100%;border-bottom:1px solid var(--wco-color-neutral-100);scroll-behavior:smooth}.wco-navtabs.navTabs-mobile:before{display:none}.wco-navtabs.navTabs-mobile button.active{border-bottom:3px solid var(--wco-color-primary-600)}.wco-navtabs.navTabs-full{display:grid;grid-template-columns:repeat(auto-fit,minmax(30px,1fr))}.wco-navtabs.navTabs-full>button{width:100%}.wco-navtabs.no-border{border-bottom:none!important}@media (max-width: 900px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxxs);--navtabs-gap: var(--wco-spacing-xxs)}}@media (max-width: 600px){.wco-navtabs{--navtabs-gapLine: var(--wco-spacing-xxs)}}.wco-navtabs:before{content:\"\";width:var(--widthActive);height:var(--navtabs-underline-height);background-color:var(--navtab-color-selected);position:absolute;bottom:0;left:0;transform:translate(var(--leftActive));transition:transform .15s cubic-bezier(.645,.045,.355,1),width .1s linear}.wco-navtabs button{background-color:transparent;border:none;font-size:var(--wco-font-size-md);font-weight:400;min-height:48px;padding:var(--wco-spacing-nano) var(--wco-spacing-xxs) var(--navtabs-gapLine) var(--wco-spacing-xxs);display:flex;width:-moz-fit-content;width:fit-content;align-items:center;justify-content:center;color:var(--wco-color-neutral-900);letter-spacing:.5px}.wco-navtabs button:hover:not(:disabled){background-color:var(--wco-color-primary-50);color:var(--wco-color-primary-700);cursor:pointer;border-radius:var(--wco-spacing-nano) var(--wco-spacing-nano) 0 0}@media (max-width: 600px){.wco-navtabs button{font-size:var(--wco-font-size-xs);min-height:30px}}.wco-navtabs button:disabled{cursor:not-allowed;color:var(--wco-color-neutral-900)}.wco-navtabs button.color-to-nav{font-weight:700}.wco-navtabs button.active{font-weight:700;letter-spacing:0px}\n"] }]
|
|
136
140
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.ElementRef }]; }, propDecorators: { navTabs: [{
|
|
137
141
|
type: ViewChild,
|
|
138
142
|
args: ['navTabs']
|
|
@@ -151,7 +155,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
151
155
|
}], noBorder: [{
|
|
152
156
|
type: Input,
|
|
153
157
|
args: ['no-border']
|
|
158
|
+
}], autoScroll: [{
|
|
159
|
+
type: Input,
|
|
160
|
+
args: ['autoScroll']
|
|
154
161
|
}], handleClick: [{
|
|
155
162
|
type: Output
|
|
156
163
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3RhYnMvdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3RhYnMvdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFVLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWN0RSxNQUFNLE9BQU8sYUFBYTtJQWdGTDtJQUNUO0lBaEZWOztNQUVFO0lBRUssT0FBTyxDQUFjO0lBRTVCOzs7TUFHRTtJQUVLLElBQUksR0FBcUIsUUFBUSxDQUFDO0lBRXpDOzs7TUFHRTtJQUVLLElBQUksR0FBWSxLQUFLLENBQUM7SUFFN0I7OztNQUdFO0lBRUssUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUVwQjs7T0FFRztJQUVJLGlCQUFpQixHQUFZLElBQUksQ0FBQztJQUV6Qzs7O01BR0U7SUFDRixJQUNXLGNBQWMsQ0FBQyxLQUF1QjtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUM5QyxPQUFPO29CQUNMLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNO29CQUN6QixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FB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LEVBQUUsS0FBSztvQkFDWixRQUFRLEVBQUUsUUFBUTtpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO3dHQXRKVSxhQUFhOzRGQUFiLGFBQWEsK2JDaEIxQiwycUJBcUJBLDB2RURaSSxZQUFZLCtQQUNaLFlBQVk7OzRGQU1ILGFBQWE7a0JBWHpCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7cUJBQ2IsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTtzSEFPOUIsT0FBTztzQkFEYixTQUFTO3VCQUFDLFNBQVM7Z0JBUWIsSUFBSTtzQkFEVixLQUFLO2dCQVFDLElBQUk7c0JBRFYsS0FBSztnQkFRQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsaUJBQWlCO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkFRaEIsY0FBYztzQkFEeEIsS0FBSzt1QkFBQyxhQUFhO2dCQW1CYixRQUFRO3NCQURkLEtBQUs7dUJBQUMsV0FBVztnQkFVWCxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hdlRhYnNPcHRpb25zIH0gZnJvbSAnLi90YWJzLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2NvLW5hdnRhYnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50ICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdHtcbiAgLyoqXG4gICogQGlnbm9yZVxuICAqL1xuICBAVmlld0NoaWxkKCduYXZUYWJzJylcbiAgcHVibGljIG5hdlRhYnMhOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBWYXJpw6F2ZWwgcGFyYSBkZWZpbmlyIG8gdGlwbyBkZSBuYXZlZ2HDp8Ojb1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHlwZTogJ2hlYWRlcicgfCAnbmF2JyA9ICdoZWFkZXInO1xuXG4gIC8qKlxuICAgKiBFbGVtZW50b3MgZGl2aWRpZG9zIGlndWFsbWVudGUgb2N1cGFuZG8gdG9kYSBsYXJndXJhXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZnVsbFxuICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBWYXJpw6F2ZWwgcGFyYSBkZWZpbmlyIG8gaXRlbSBhdGl2byBlIG1vbml0b3JhciBhIG11ZGFuw6dhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RlZFxuICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWQgPSAnJ1xuXG4gIC8qKiBoYWJpbGl0YXIgcmVwb25zaXZvXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gZW5hYmxlZFJlc3BvbnNpdmVcbiAgICovXG4gIEBJbnB1dCgnZW5hYmxlZC1yZXNwb25zaXZlJylcbiAgcHVibGljIGVuYWJsZWRSZXNwb25zaXZlOiBCb29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgKiBPcMOnw7VlcyBkZSBuYXZlZ2HDp8OjbyBwb3Igcm90YXNcbiAgKiBAcGFyYW0ge05hdlRhYnNPcHRpb25zW119IGxpbmtzXG4gICovXG4gIEBJbnB1dCgnbGlzdE9wdGlvbnMnKVxuICBwdWJsaWMgc2V0IHNldExpc3RPcHRpb25zKGxpbmtzOiBOYXZUYWJzT3B0aW9uc1tdKSB7XG4gICAgaWYgKGxpbmtzLmxlbmd0aCkge1xuICAgICAgdGhpcy5saW5rcyA9IGxpbmtzLm1hcCgoaXRlbTogTmF2VGFic09wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSB8fCAnbGluaycsXG4gICAgICAgICAgb3B0aW9uczogeyBleGFjdDogaXRlbS5wYXRoID09PSAnLycgPyB0cnVlIDogZmFsc2UgfSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBcblxuICAvKipcbiAgICogVmFyacOhdmVsIHBhcmEgZGVmaW5pciBzZSBvIGNvbXBvbmVudGUgdGVyw6EgYm9yZGEgb3UgbsOjb1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vQm9yZGVyXG4gICovXG4gIEBJbnB1dCgnbm8tYm9yZGVyJylcbiAgcHVibGljIG5vQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XG5cblxuICAvKipcbiAgICogRXZlbnRvIGRlIGNsaWNrIG5vIGJvdMOjbyBvdSBsaW5rIGRvIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIHtFdmVudEVtaXR0ZXI8dm9pZD59IGhhbmRsZUNsaWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGhhbmRsZUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgKi9cbiAgcHVibGljIGxpbmtzOiBOYXZUYWJzT3B0aW9uc1tdID0gW107XG5cblxuICAvKipcbiAgICogVmFyaWF2ZWwgc2Ugw6kgbW9iaWxlIG91IG7Do29cbiAgKi9cbiAgcHVibGljIGlzTW9iaWxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlQWN0aXZlKDEwMCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgKi9cbiAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZihjaGFuZ2VzWydzZWxlY3RlZCddKSB7IFxuICAgICAgdGhpcy5oYW5kbGVBY3RpdmUoMTAwLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgKi9cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUFjdGl2ZSgxMDAwLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICBwdWJsaWMgZXZlbnRTdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVDbGljay5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICBwdWJsaWMgaGFuZGxlQWN0aXZlKHRpbWVyID0gMTAwLCBidXR0b25DbGljayA9IHRydWUpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IF9lbGVtZW50UmVmID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5uYXZUYWJzLm5hdGl2ZUVsZW1lbnQ7XG5cblxuICAgICAgaWYoX2VsZW1lbnRSZWYgJiYgX2VsZW1lbnQgKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSBfZWxlbWVudFJlZi5jbGllbnRXaWR0aCA+PSBfZWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgfVxuXG4gICAgICBjb25zdCBhbGxBY3RpdmVzID0gX2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLmFjdGl2ZScpO1xuXG4gICAgICBjb25zdCBfZWxlbWVudENoaWxkQWN0aXZlID0gYWxsQWN0aXZlc1thbGxBY3RpdmVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAoIV9lbGVtZW50Q2hpbGRBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsZWZ0ID1cbiAgICAgICAgX2VsZW1lbnRDaGlsZEFjdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgIGNvbnN0IHdpZHRoYnV0dG9uID0gX2VsZW1lbnRDaGlsZEFjdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIF9lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnRBY3RpdmUnLCBsZWZ0ICsgJ3B4Jyk7XG4gICAgICBfZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aEFjdGl2ZScsIHdpZHRoYnV0dG9uICsgJ3B4Jyk7XG4gICAgICBfZWxlbWVudENoaWxkQWN0aXZlLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdlbmQnLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICBpZiAoYnV0dG9uQ2xpY2spIHtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljay5lbWl0KCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbmFibGVkUmVzcG9uc2l2ZSkge1xuICAgICAgICBfZWxlbWVudENoaWxkQWN0aXZlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICBibG9jazogJ2VuZCcsXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCB0aW1lcik7XG4gIH1cbn0iLCJcbiAgICA8bmF2IFxuICAgIGNsYXNzPVwid2NvLW5hdnRhYnNcIiBcbiAgICAjbmF2VGFicyByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgW2NsYXNzLm5vLWJvcmRlcl09XCJub0JvcmRlclwiIFxuICAgIFtjbGFzcy5uYXZUYWJzLWZ1bGxdPVwiZnVsbFwiXG4gICAgW2NsYXNzLm5hdlRhYnMtbW9iaWxlXT1cIiFpc01vYmlsZVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGluay50eXBlID09PSAnbGluaydcIj5cbiAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV2ZW50U3VibWl0KClcIiBcbiAgICAgICAgICAgICAgICBbY2xhc3MuY29sb3ItdG8tbmF2XT1cInR5cGUgPT09ICduYXYnXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJsaW5rLnBhdGhcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgW2F0dHIuaWRdPVwiJ3BhZ2UtJyArIGxpbmsucGF0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbGluay5uYW1lIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uYXY+XG4iXX0=
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3RhYnMvdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3RhYnMvdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFVLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWN0RSxNQUFNLE9BQU8sYUFBYTtJQWtGTDtJQUNUO0lBbEZWOztNQUVFO0lBRUssT0FBTyxDQUFjO0lBRTVCOzs7TUFHRTtJQUVLLElBQUksR0FBcUIsUUFBUSxDQUFDO0lBRXpDOzs7TUFHRTtJQUVLLElBQUksR0FBWSxLQUFLLENBQUM7SUFFN0I7OztNQUdFO0lBRUssUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUVwQjs7T0FFRztJQUVJLGlCQUFpQixHQUFZLElBQUksQ0FBQztJQUV6Qzs7O01BR0U7SUFDRixJQUNXLGNBQWMsQ0FBQyxLQUF1QjtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUM5QyxPQUFPO29CQUNMLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNO29CQUN6QixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FB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QUM7YUFDMUU7WUFDRCxJQUFJLFdBQVcsRUFBRTtnQkFDZixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDN0MsbUJBQW1CLENBQUMsY0FBYyxDQUFDO29CQUNqQyxLQUFLLEVBQUUsS0FBSztvQkFDWixRQUFRLEVBQUUsUUFBUTtpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO3dHQTNKVSxhQUFhOzRGQUFiLGFBQWEseWRDaEIxQixzakNBK0JBLDB2RUR0QkksWUFBWSwrUEFDWixZQUFZOzs0RkFNSCxhQUFhO2tCQVh6QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3FCQUNiLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7c0hBTzlCLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxTQUFTO2dCQVFiLElBQUk7c0JBRFYsS0FBSztnQkFRQyxJQUFJO3NCQURWLEtBQUs7Z0JBUUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGlCQUFpQjtzQkFEdkIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBUWhCLGNBQWM7c0JBRHhCLEtBQUs7dUJBQUMsYUFBYTtnQkFtQmIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFdBQVc7Z0JBR0csVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQVNaLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmF2VGFic09wdGlvbnMgfSBmcm9tICcuL3RhYnMudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Y28tbmF2dGFicycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhYnNDb21wb25lbnQgIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0e1xuICAvKipcbiAgKiBAaWdub3JlXG4gICovXG4gIEBWaWV3Q2hpbGQoJ25hdlRhYnMnKVxuICBwdWJsaWMgbmF2VGFicyE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFZhcmnDoXZlbCBwYXJhIGRlZmluaXIgbyB0aXBvIGRlIG5hdmVnYcOnw6NvXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0eXBlOiAnaGVhZGVyJyB8ICduYXYnID0gJ2hlYWRlcic7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnRvcyBkaXZpZGlkb3MgaWd1YWxtZW50ZSBvY3VwYW5kbyB0b2RhIGxhcmd1cmFcbiAgICogQHBhcmFtIHtib29sZWFufSBmdWxsXG4gICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmdWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFZhcmnDoXZlbCBwYXJhIGRlZmluaXIgbyBpdGVtIGF0aXZvIGUgbW9uaXRvcmFyIGEgbXVkYW7Dp2FcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdGVkXG4gICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZCA9ICcnXG5cbiAgLyoqIGhhYmlsaXRhciByZXBvbnNpdm9cbiAgICogQHBhcmFtIHtCb29sZWFufSBlbmFibGVkUmVzcG9uc2l2ZVxuICAgKi9cbiAgQElucHV0KCdlbmFibGVkLXJlc3BvbnNpdmUnKVxuICBwdWJsaWMgZW5hYmxlZFJlc3BvbnNpdmU6IEJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAqIE9ww6fDtWVzIGRlIG5hdmVnYcOnw6NvIHBvciByb3Rhc1xuICAqIEBwYXJhbSB7TmF2VGFic09wdGlvbnNbXX0gbGlua3NcbiAgKi9cbiAgQElucHV0KCdsaXN0T3B0aW9ucycpXG4gIHB1YmxpYyBzZXQgc2V0TGlzdE9wdGlvbnMobGlua3M6IE5hdlRhYnNPcHRpb25zW10pIHtcbiAgICBpZiAobGlua3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxpbmtzID0gbGlua3MubWFwKChpdGVtOiBOYXZUYWJzT3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgdHlwZTogaXRlbS50eXBlIHx8ICdsaW5rJyxcbiAgICAgICAgICBvcHRpb25zOiB7IGV4YWN0OiBpdGVtLnBhdGggPT09ICcvJyA/IHRydWUgOiBmYWxzZSB9LFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIFxuXG4gIC8qKlxuICAgKiBWYXJpw6F2ZWwgcGFyYSBkZWZpbmlyIHNlIG8gY29tcG9uZW50ZSB0ZXLDoSBib3JkYSBvdSBuw6NvXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Cb3JkZXJcbiAgKi9cbiAgQElucHV0KCduby1ib3JkZXInKVxuICBwdWJsaWMgbm9Cb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ2F1dG9TY3JvbGwnKSBhdXRvU2Nyb2xsOiBib29sZWFuID0gdHJ1ZTtcblxuXG4gIC8qKlxuICAgKiBFdmVudG8gZGUgY2xpY2sgbm8gYm90w6NvIG91IGxpbmsgZG8gY29tcG9uZW50ZVxuICAgKiBAcGFyYW0ge0V2ZW50RW1pdHRlcjx2b2lkPn0gaGFuZGxlQ2xpY2tcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaGFuZGxlQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICBwdWJsaWMgbGlua3M6IE5hdlRhYnNPcHRpb25zW10gPSBbXTtcblxuXG4gIC8qKlxuICAgKiBWYXJpYXZlbCBzZSDDqSBtb2JpbGUgb3UgbsOjb1xuICAqL1xuICBwdWJsaWMgaXNNb2JpbGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVBY3RpdmUoMTAwLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmKGNoYW5nZXNbJ3NlbGVjdGVkJ10pIHsgXG4gICAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCB0aGlzLnNlbGVjdGVkKVxuICAgICAgdGhpcy5oYW5kbGVBY3RpdmUoMTAwLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgKi9cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUFjdGl2ZSgxMDAwLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICBwdWJsaWMgZXZlbnRTdWJtaXQobGluazogYW55ID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUNsaWNrLmVtaXQobGluayk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAqL1xuICBwdWJsaWMgaGFuZGxlQWN0aXZlKHRpbWVyID0gMTAwLCBidXR0b25DbGljayA9IHRydWUpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IF9lbGVtZW50UmVmID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5uYXZUYWJzLm5hdGl2ZUVsZW1lbnQ7XG5cblxuICAgICAgaWYoX2VsZW1lbnRSZWYgJiYgX2VsZW1lbnQgKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSBfZWxlbWVudFJlZi5jbGllbnRXaWR0aCA+PSBfZWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgfVxuXG4gICAgICBjb25zdCBhbGxBY3RpdmVzID0gX2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLmFjdGl2ZScpO1xuXG4gICAgICBjb25zdCBfZWxlbWVudENoaWxkQWN0aXZlID0gYWxsQWN0aXZlc1thbGxBY3RpdmVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAoIV9lbGVtZW50Q2hpbGRBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsZWZ0ID1cbiAgICAgICAgX2VsZW1lbnRDaGlsZEFjdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgIGNvbnN0IHdpZHRoYnV0dG9uID0gX2VsZW1lbnRDaGlsZEFjdGl2ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIF9lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnRBY3RpdmUnLCBsZWZ0ICsgJ3B4Jyk7XG4gICAgICBfZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS13aWR0aEFjdGl2ZScsIHdpZHRoYnV0dG9uICsgJ3B4Jyk7XG4gICAgICBpZih0aGlzLmF1dG9TY3JvbGwpIHtcbiAgICAgICAgX2VsZW1lbnRDaGlsZEFjdGl2ZS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnZW5kJywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGJ1dHRvbkNsaWNrKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2suZW1pdCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZW5hYmxlZFJlc3BvbnNpdmUgJiYgdGhpcy5hdXRvU2Nyb2xsKSB7XG4gICAgICAgIF9lbGVtZW50Q2hpbGRBY3RpdmUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgIGJsb2NrOiAnZW5kJyxcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIHRpbWVyKTtcbiAgfVxufSIsIlxuICAgIDxuYXYgXG4gICAgY2xhc3M9XCJ3Y28tbmF2dGFic1wiIFxuICAgICNuYXZUYWJzIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICBbY2xhc3Mubm8tYm9yZGVyXT1cIm5vQm9yZGVyXCIgXG4gICAgW2NsYXNzLm5hdlRhYnMtZnVsbF09XCJmdWxsXCJcbiAgICBbY2xhc3MubmF2VGFicy1tb2JpbGVdPVwiIWlzTW9iaWxlXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaW5rLnR5cGUgPT09ICdsaW5rJ1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXZlbnRTdWJtaXQoKVwiIFxuICAgICAgICAgICAgICAgIFtjbGFzcy5jb2xvci10by1uYXZdPVwidHlwZSA9PT0gJ25hdidcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImxpbmsucGF0aFwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIiBbYXR0ci5pZF09XCIncGFnZS0nICsgbGluay5wYXRoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBsaW5rLm5hbWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmsudHlwZSA9PT0gJ2J1dHRvbidcIj5cbiAgICAgICAgICAgIDxidXR0b24gXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV2ZW50U3VibWl0KGxpbmsucGF0aClcIiBcbiAgICAgICAgICAgICAgICBbY2xhc3MuY29sb3ItdG8tbmF2XT1cInR5cGUgPT09ICduYXYnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImxpbmsucGF0aCA9PT0gc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidwYWdlLScgKyBsaW5rLnBhdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGxpbmsubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmF2PlxuIl19
|