@c8y/ngx-components 1021.21.0 → 1021.22.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/alarms/alarm-details.component.d.ts +1 -3
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts +9 -14
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.helper.d.ts +5 -0
- package/alarms/alarms.helper.d.ts.map +1 -0
- package/alarms/alarms.module.d.ts.map +1 -1
- package/alarms/cockpit/index.d.ts.map +1 -1
- package/alarms/devicemanagement/index.d.ts.map +1 -1
- package/alarms/index.d.ts +5 -4
- package/alarms/index.d.ts.map +1 -1
- package/core/router/context-route.component.d.ts +8 -3
- package/core/router/context-route.component.d.ts.map +1 -1
- package/core/router/context-route.service.d.ts +29 -3
- package/core/router/context-route.service.d.ts.map +1 -1
- package/core/router/router-tabs.resolver.d.ts +4 -1
- package/core/router/router-tabs.resolver.d.ts.map +1 -1
- package/core/router/router.model.d.ts +40 -3
- package/core/router/router.model.d.ts.map +1 -1
- package/core/router/router.module.d.ts +2 -1
- package/core/router/router.module.d.ts.map +1 -1
- package/core/router/router.service.d.ts +5 -4
- package/core/router/router.service.d.ts.map +1 -1
- package/core/router/scoped-context-route.service.d.ts +57 -0
- package/core/router/scoped-context-route.service.d.ts.map +1 -0
- package/core/router/view-context.service.d.ts +8 -18
- package/core/router/view-context.service.d.ts.map +1 -1
- package/esm2022/alarms/alarm-details.component.mjs +7 -9
- package/esm2022/alarms/alarm-info.component.mjs +23 -33
- package/esm2022/alarms/alarms-view.service.mjs +2 -2
- package/esm2022/alarms/alarms.component.mjs +10 -3
- package/esm2022/alarms/alarms.helper.mjs +32 -0
- package/esm2022/alarms/alarms.module.mjs +5 -5
- package/esm2022/alarms/cockpit/index.mjs +13 -17
- package/esm2022/alarms/devicemanagement/index.mjs +15 -18
- package/esm2022/alarms/index.mjs +6 -5
- package/esm2022/core/router/context-route.component.mjs +23 -13
- package/esm2022/core/router/context-route.service.mjs +37 -5
- package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
- package/esm2022/core/router/router.model.mjs +6 -1
- package/esm2022/core/router/router.module.mjs +20 -13
- package/esm2022/core/router/router.service.mjs +24 -10
- package/esm2022/core/router/scoped-context-route.service.mjs +152 -0
- package/esm2022/core/router/view-context.service.mjs +59 -16
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +198 -170
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +403 -131
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,28 +1,38 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, DestroyRef } from '@angular/core';
|
|
2
2
|
import { ActivatedRoute } from '@angular/router';
|
|
3
|
+
import { ScopedContextRouteService } from './scoped-context-route.service';
|
|
3
4
|
import { ContextRouteService } from './context-route.service';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
7
|
import * as i1 from "@angular/router";
|
|
6
|
-
import * as i2 from "./context-route.service";
|
|
8
|
+
import * as i2 from "./scoped-context-route.service";
|
|
9
|
+
import * as i3 from "./context-route.service";
|
|
10
|
+
import * as i4 from "@angular/common";
|
|
11
|
+
import * as i5 from "../common/loading.component";
|
|
7
12
|
export class ContextRouteComponent {
|
|
8
|
-
constructor(route, contextRouteService) {
|
|
13
|
+
constructor(route, scopedContextRouteService, contextRouteService, destroyRef) {
|
|
9
14
|
this.route = route;
|
|
15
|
+
this.scopedContextRouteService = scopedContextRouteService;
|
|
10
16
|
this.contextRouteService = contextRouteService;
|
|
17
|
+
this.destroyRef = destroyRef;
|
|
18
|
+
this.isLoading$ = this.scopedContextRouteService.isLoading$();
|
|
11
19
|
}
|
|
12
20
|
ngOnInit() {
|
|
13
|
-
this.contextRouteService.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
this.contextRouteService.refreshTrigger$
|
|
22
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
23
|
+
.subscribe(() => {
|
|
24
|
+
this.refreshTabs();
|
|
25
|
+
});
|
|
26
|
+
this.scopedContextRouteService.init(this.route);
|
|
17
27
|
}
|
|
18
28
|
refreshTabs() {
|
|
19
|
-
this.
|
|
29
|
+
this.scopedContextRouteService.refreshContext();
|
|
20
30
|
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ContextRouteComponent, selector: "c8y-context-route", ngImport: i0, template: "<router-outlet></router-outlet>\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ScopedContextRouteService }, { token: i3.ContextRouteService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ContextRouteComponent, selector: "c8y-context-route", providers: [ScopedContextRouteService], ngImport: i0, template: "<router-outlet *ngIf=\"!(isLoading$ | async); else loading\"></router-outlet>\n\n<ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
23
33
|
}
|
|
24
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, decorators: [{
|
|
25
35
|
type: Component,
|
|
26
|
-
args: [{ selector: 'c8y-context-route', template: "<router-outlet></router-outlet>\n" }]
|
|
27
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ContextRouteService }] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
args: [{ selector: 'c8y-context-route', providers: [ScopedContextRouteService], template: "<router-outlet *ngIf=\"!(isLoading$ | async); else loading\"></router-outlet>\n\n<ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n</ng-template>\n" }]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ScopedContextRouteService }, { type: i3.ContextRouteService }, { type: i0.DestroyRef }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1yb3V0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9jb250ZXh0LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL2NvbnRleHQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFDVSxLQUFxQixFQUNyQix5QkFBb0QsRUFDcEQsbUJBQXdDLEVBQ3hDLFVBQXNCO1FBSHRCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRTlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWU7YUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEQsQ0FBQzs4R0F2QlUscUJBQXFCO2tHQUFyQixxQkFBcUIsNENBRnJCLENBQUMseUJBQXlCLENBQUMsMEJDVnhDLGtPQU9BOzsyRkRLYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBRWxCLENBQUMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vc2NvcGVkLWNvbnRleHQtcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY29udGV4dC1yb3V0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dFJvdXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2U6IFNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICB0aGlzLmlzTG9hZGluZyQgPSB0aGlzLnNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UuaXNMb2FkaW5nJCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnJlZnJlc2hUcmlnZ2VyJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoVGFicygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5zY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlLmluaXQodGhpcy5yb3V0ZSk7XG4gIH1cblxuICByZWZyZXNoVGFicygpIHtcbiAgICB0aGlzLnNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgfVxufVxuIiwiPHJvdXRlci1vdXRsZXQgKm5nSWY9XCIhKGlzTG9hZGluZyQgfCBhc3luYyk7IGVsc2UgbG9hZGluZ1wiPjwvcm91dGVyLW91dGxldD5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtY29sIGEtaS1jZW50ZXIgai1jLWNlbnRlciBmaXQtaFwiPlxuICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -20,8 +20,8 @@ export class ContextRouteService {
|
|
|
20
20
|
this.apiService = apiService;
|
|
21
21
|
this.injector = injector;
|
|
22
22
|
this.lastAddedTabs = [];
|
|
23
|
-
this.refreshTrigger = new Subject();
|
|
24
23
|
this.ID_REGEX = /([0-9]+)/;
|
|
24
|
+
this.refreshTrigger$ = new Subject();
|
|
25
25
|
/**
|
|
26
26
|
* Last context data snapshot
|
|
27
27
|
*/
|
|
@@ -47,24 +47,53 @@ export class ContextRouteService {
|
|
|
47
47
|
}
|
|
48
48
|
return null;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns a route for the given ContextData.
|
|
52
|
+
*
|
|
53
|
+
* @param contextData The ContextData object.
|
|
54
|
+
* @returns A route with the ids set correctly.
|
|
55
|
+
*/
|
|
50
56
|
getContextRoute(contextData) {
|
|
51
|
-
return contextData.context.replace(
|
|
57
|
+
return contextData.context.replace(/:id/g, contextData.contextData.id);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Verifies if a given url is a view context route.
|
|
61
|
+
*
|
|
62
|
+
* @param url A route url.
|
|
63
|
+
* @param contextToCheck The view context(s) to check. If not provided, all contexts are checked.
|
|
64
|
+
* @returns true if the given url is a view context route.
|
|
65
|
+
*/
|
|
66
|
+
isContextRoute(url, contextToCheck = []) {
|
|
67
|
+
const viewContexts = contextToCheck.length === 0 ? Object.values(ViewContext) : contextToCheck;
|
|
68
|
+
// replace all :id placeholders with a regex matcher for a number
|
|
69
|
+
const regexMatchers = viewContexts.map(context => `/${context.replace(/:id/g, '([0-9]+)')}`);
|
|
70
|
+
const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
|
|
71
|
+
return !!matchingRegexContext;
|
|
52
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
75
|
+
*/
|
|
53
76
|
init(route) {
|
|
54
77
|
this.routerSubscription = this.router.events
|
|
55
78
|
.pipe(filter(e => e instanceof NavigationEnd))
|
|
56
79
|
.subscribe(() => this.redirectToFirstTab());
|
|
57
80
|
this.dataSubscription = route.data
|
|
58
|
-
.pipe(merge(this.updatedContext(route), this.refreshTrigger), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
81
|
+
.pipe(merge(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
59
82
|
.subscribe(tabs => this.updateTabs(tabs));
|
|
60
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
86
|
+
*/
|
|
61
87
|
destroy() {
|
|
62
88
|
this.dataSubscription.unsubscribe();
|
|
63
89
|
this.routerSubscription.unsubscribe();
|
|
64
90
|
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
65
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Reloads all ViewContexts.
|
|
94
|
+
*/
|
|
66
95
|
refreshContext() {
|
|
67
|
-
this.refreshTrigger
|
|
96
|
+
this.refreshTrigger$.next();
|
|
68
97
|
}
|
|
69
98
|
/**
|
|
70
99
|
* Sets a new contextData in the ActivatedRoute.
|
|
@@ -80,6 +109,9 @@ export class ContextRouteService {
|
|
|
80
109
|
}
|
|
81
110
|
data.contextData = { ...contextData };
|
|
82
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.21
|
|
114
|
+
*/
|
|
83
115
|
updatedContext(route) {
|
|
84
116
|
const { data } = route.snapshot;
|
|
85
117
|
const serviceInstance = ViewContextServices.contextToService(data.context);
|
|
@@ -158,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
158
190
|
providedIn: 'root'
|
|
159
191
|
}]
|
|
160
192
|
}], ctorParameters: () => [{ type: i1.RouterTabsResolver }, { type: i2.TabsService }, { type: i3.Router }, { type: i4.ApiService }, { type: i0.Injector }] });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1yb3V0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvY29udGV4dC1yb3V0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsYUFBYSxFQUViLGFBQWEsRUFDYixjQUFjLEVBQ2QsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLN0QsTUFBTSxPQUFPLG1CQUFtQjtJQVk5QixZQUNVLFlBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxVQUFzQixFQUN0QixRQUFrQjtRQUpsQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWRwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENB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QUFjO1lBQzdDLENBQUMsQ0FBRSxjQUFrRSxFQUFFLFFBQVE7WUFDL0UsQ0FBQyxDQUFFLGNBQWtFLENBQUMsUUFBUTtZQUM5RSxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsY0FBc0M7UUFFdEMsSUFBSSxLQUFLLEdBQUcsY0FBYyxDQUFDO1FBQzNCLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixDQUFDO1lBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs4R0ExS1UsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQWN0aXZhdGlvbkVuZCxcbiAgRGF0YSxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwaUNhbGwsIEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBORVZFUiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMvdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgQ29udGV4dERhdGEsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0Um91dGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGFzdEFkZGVkVGFicyA9IFtdO1xuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBJRF9SRUdFWCA9IC8oWzAtOV0rKS87XG5cbiAgLyoqXG4gICAqIExhc3QgY29udGV4dCBkYXRhIHNuYXBzaG90XG4gICAqL1xuICBhY3RpdmF0ZWRDb250ZXh0RGF0YTogQ29udGV4dERhdGEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFic1Jlc29sdmVyOiBSb3V0ZXJUYWJzUmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBBY3RpdmF0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0RGF0YVNuYXBzaG90KGV2ZW50LnNuYXBzaG90KTtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRDb250ZXh0RGF0YSA9IGN1cnJlbnRDb250ZXh0IGFzIENvbnRleHREYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgY3VycmVudCBjb250ZXh0IGRhdGEuIElmIG5vIGNvbnRleHQgd2FzIGZvdW5kLCBudWxsIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKi9cbiAgZ2V0Q29udGV4dERhdGEoXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICApOiAoRGF0YSAmIENvbnRleHREYXRhKSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldENvbnRleHREYXRhU25hcHNob3QodGhpcy5nZXRTbmFwc2hvdChhY3RpdmF0ZWRSb3V0ZSkpO1xuICAgIGlmIChkYXRhPy5jb250ZXh0KSB7XG4gICAgICByZXR1cm4gZGF0YSBhcyBEYXRhICYgQ29udGV4dERhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Q29udGV4dFJvdXRlKGNvbnRleHREYXRhOiBDb250ZXh0RGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnRleHREYXRhLmNvbnRleHQucmVwbGFjZSgnOmlkJywgY29udGV4dERhdGEuY29udGV4dERhdGEuaWQgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIGluaXQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKSk7XG5cbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSByb3V0ZS5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2UodGhpcy51cGRhdGVkQ29udGV4dChyb3V0ZSksIHRoaXMucmVmcmVzaFRyaWdnZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy50YWJzUmVzb2x2ZXIucmVzb2x2ZShyb3V0ZS5zbmFwc2hvdCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxhc3RBZGRlZFRhYnMuZm9yRWFjaCh0ID0+IHRoaXMudGFic1NlcnZpY2UucmVtb3ZlKHQpKTtcbiAgfVxuXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBuZXcgY29udGV4dERhdGEgaW4gdGhlIEFjdGl2YXRlZFJvdXRlLlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgTmV3IGNvbnRleHREYXRhLlxuICAgKi9cbiAgc2V0Q29udGV4dChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIGNvbnRleHREYXRhOiBJSWRlbnRpZmllZCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPVxuICAgICAgIWFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudCB8fCBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhLmNvbnRleHRcbiAgICAgICAgPyBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhXG4gICAgICAgIDogYWN0aXZhdGVkUm91dGUucGFyZW50LnNuYXBzaG90LmRhdGE7XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGF0YS5jb250ZXh0RGF0YSA9IHsgLi4uY29udGV4dERhdGEgfTtcbiAgfVxuXG4gIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKCkge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuXG4gICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdCgpKSB7XG4gICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdCgpIHtcbiAgICBjb25zdCB0cmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBjb25zdCBncm91cHM6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIGdyb3Vwcy5zZWdtZW50cy5sZW5ndGggPT09IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNwbGl0KCcvJykubGVuZ3RoID09PSBncm91cHMuc2VnbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodXJsKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHRzID0gT2JqZWN0LnZhbHVlcyhWaWV3Q29udGV4dCk7XG5cbiAgICBjb25zdCB1cmxXaXRob3V0SWQgPSB1cmwucmVwbGFjZSgvXFxkKC4qKS9nLCAnJyk7XG4gICAgY29uc3QgaWQgPSB2aWV3Q29udGV4dHMuZmluZEluZGV4KGNvbnRleHQgPT4gYC8ke2NvbnRleHQucmVwbGFjZSgnOmlkJywgJycpfWAgPT09IHVybFdpdGhvdXRJZCk7XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0c1tpZF07XG4gIH1cblxuICBwcml2YXRlIGdldFNuYXBzaG90KFxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGUgfHxcbiAgICAgICEhKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KT8uc25hcHNob3RcbiAgICAgID8gKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KS5zbmFwc2hvdFxuICAgICAgOiBhY3RpdmF0ZWRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dERhdGFTbmFwc2hvdChcbiAgICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICApOiBEYXRhICYgUGFydGlhbDxDb250ZXh0RGF0YT4ge1xuICAgIGxldCByb3V0ZSA9IGFjdGl2YXRlZFJvdXRlO1xuICAgIHdoaWxlIChyb3V0ZSkge1xuICAgICAgaWYgKHJvdXRlLmRhdGEuY29udGV4dCkge1xuICAgICAgICByZXR1cm4gcm91dGUuZGF0YTtcbiAgICAgIH1cbiAgICAgIHJvdXRlID0gcm91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbn1cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1yb3V0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvY29udGV4dC1yb3V0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsYUFBYSxFQUViLGFBQWEsRUFDYixjQUFjLEVBQ2QsTUFBTSxFQUdQLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFXLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLN0QsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLFlBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxVQUFzQixFQUN0QixRQUFrQjtRQUpsQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWZwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixhQUFRLEdBQUcsVUFBVSxDQUFDO1FBRTlCLG9C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QUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBBY3RpdmF0aW9uRW5kLFxuICBEYXRhLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBQUklNQVJZX09VVExFVCxcbiAgUm91dGVyLFxuICBVcmxTZWdtZW50R3JvdXAsXG4gIFVybFRyZWVcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBpQ2FsbCwgQXBpU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXBpJztcbmltcG9ydCB7IE5FVkVSLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWVyZ2UsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4uL3RhYnMvdGFiLm1vZGVsJztcbmltcG9ydCB7IFRhYnNTZXJ2aWNlIH0gZnJvbSAnLi4vdGFicy90YWJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyVGFic1Jlc29sdmVyIH0gZnJvbSAnLi9yb3V0ZXItdGFicy5yZXNvbHZlcic7XG5pbXBvcnQgeyBDb250ZXh0RGF0YSwgVmlld0NvbnRleHQgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dFNlcnZpY2VzIH0gZnJvbSAnLi92aWV3LWNvbnRleHQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRSb3V0ZVNlcnZpY2Uge1xuICBwcml2YXRlIGRhdGFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXN0QWRkZWRUYWJzID0gW107XG4gIHByaXZhdGUgSURfUkVHRVggPSAvKFswLTldKykvO1xuXG4gIHJlZnJlc2hUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIExhc3QgY29udGV4dCBkYXRhIHNuYXBzaG90XG4gICAqL1xuICBhY3RpdmF0ZWRDb250ZXh0RGF0YTogQ29udGV4dERhdGEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFic1Jlc29sdmVyOiBSb3V0ZXJUYWJzUmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSB0YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBBY3RpdmF0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0RGF0YVNuYXBzaG90KGV2ZW50LnNuYXBzaG90KTtcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRDb250ZXh0RGF0YSA9IGN1cnJlbnRDb250ZXh0IGFzIENvbnRleHREYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgY3VycmVudCBjb250ZXh0IGRhdGEuIElmIG5vIGNvbnRleHQgd2FzIGZvdW5kLCBudWxsIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlLlxuICAgKi9cbiAgZ2V0Q29udGV4dERhdGEoXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICApOiAoRGF0YSAmIENvbnRleHREYXRhKSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldENvbnRleHREYXRhU25hcHNob3QodGhpcy5nZXRTbmFwc2hvdChhY3RpdmF0ZWRSb3V0ZSkpO1xuICAgIGlmIChkYXRhPy5jb250ZXh0KSB7XG4gICAgICByZXR1cm4gZGF0YSBhcyBEYXRhICYgQ29udGV4dERhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByb3V0ZSBmb3IgdGhlIGdpdmVuIENvbnRleHREYXRhLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIENvbnRleHREYXRhIG9iamVjdC5cbiAgICogQHJldHVybnMgQSByb3V0ZSB3aXRoIHRoZSBpZHMgc2V0IGNvcnJlY3RseS5cbiAgICovXG4gIGdldENvbnRleHRSb3V0ZShjb250ZXh0RGF0YTogQ29udGV4dERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZXh0RGF0YS5jb250ZXh0LnJlcGxhY2UoLzppZC9nLCBjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZCBhcyBzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIGEgZ2l2ZW4gdXJsIGlzIGEgdmlldyBjb250ZXh0IHJvdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIEEgcm91dGUgdXJsLlxuICAgKiBAcGFyYW0gY29udGV4dFRvQ2hlY2sgVGhlIHZpZXcgY29udGV4dChzKSB0byBjaGVjay4gSWYgbm90IHByb3ZpZGVkLCBhbGwgY29udGV4dHMgYXJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHVybCBpcyBhIHZpZXcgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIGlzQ29udGV4dFJvdXRlKHVybDogc3RyaW5nLCBjb250ZXh0VG9DaGVjazogVmlld0NvbnRleHRbXSA9IFtdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgdmlld0NvbnRleHRzID0gY29udGV4dFRvQ2hlY2subGVuZ3RoID09PSAwID8gT2JqZWN0LnZhbHVlcyhWaWV3Q29udGV4dCkgOiBjb250ZXh0VG9DaGVjaztcbiAgICAvLyByZXBsYWNlIGFsbCA6aWQgcGxhY2Vob2xkZXJzIHdpdGggYSByZWdleCBtYXRjaGVyIGZvciBhIG51bWJlclxuICAgIGNvbnN0IHJlZ2V4TWF0Y2hlcnMgPSB2aWV3Q29udGV4dHMubWFwKGNvbnRleHQgPT4gYC8ke2NvbnRleHQucmVwbGFjZSgvOmlkL2csICcoWzAtOV0rKScpfWApO1xuICAgIGNvbnN0IG1hdGNoaW5nUmVnZXhDb250ZXh0ID0gcmVnZXhNYXRjaGVycy5maW5kKGNvbnRleHQgPT4gbmV3IFJlZ0V4cChjb250ZXh0KS50ZXN0KHVybCkpO1xuICAgIHJldHVybiAhIW1hdGNoaW5nUmVnZXhDb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkOiBVc2UgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gMTAuMjJcbiAgICovXG4gIGluaXQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKSk7XG5cbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSByb3V0ZS5kYXRhXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2UodGhpcy51cGRhdGVkQ29udGV4dChyb3V0ZSksIHRoaXMucmVmcmVzaFRyaWdnZXIkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudGFic1Jlc29sdmVyLnJlc29sdmUocm91dGUuc25hcHNob3QpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0YWJzID0+IHRoaXMudXBkYXRlVGFicyh0YWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQ6IFVzZSBTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiAxMC4yMlxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubGFzdEFkZGVkVGFicy5mb3JFYWNoKHQgPT4gdGhpcy50YWJzU2VydmljZS5yZW1vdmUodCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbG9hZHMgYWxsIFZpZXdDb250ZXh0cy5cbiAgICovXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgbmV3IGNvbnRleHREYXRhIGluIHRoZSBBY3RpdmF0ZWRSb3V0ZS5cbiAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBjdXJyZW50IGFjdGl2YXRlZCByb3V0ZS5cbiAgICogQHBhcmFtIGNvbnRleHREYXRhIE5ldyBjb250ZXh0RGF0YS5cbiAgICovXG4gIHNldENvbnRleHQoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBjb250ZXh0RGF0YTogSUlkZW50aWZpZWQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID1cbiAgICAgICFhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQgfHwgYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YS5jb250ZXh0XG4gICAgICAgID8gYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YVxuICAgICAgICA6IGFjdGl2YXRlZFJvdXRlLnBhcmVudC5zbmFwc2hvdC5kYXRhO1xuXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGEuY29udGV4dERhdGEgPSB7IC4uLmNvbnRleHREYXRhIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQ6IFVzZSBTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiAxMC4yMVxuICAgKi9cbiAgdXBkYXRlZENvbnRleHQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogT2JzZXJ2YWJsZTxBcGlDYWxsPiB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSByb3V0ZS5zbmFwc2hvdDtcbiAgICBjb25zdCBzZXJ2aWNlSW5zdGFuY2UgPSBWaWV3Q29udGV4dFNlcnZpY2VzLmNvbnRleHRUb1NlcnZpY2UoZGF0YS5jb250ZXh0KTtcbiAgICBpZiAoc2VydmljZUluc3RhbmNlKSB7XG4gICAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoXG4gICAgICAgIHNlcnZpY2VJbnN0YW5jZSBhcyBUeXBlPEluc3RhbmNlVHlwZTx0eXBlb2Ygc2VydmljZUluc3RhbmNlPj5cbiAgICAgICk7XG4gICAgICBjb25zdCBkZXRhaWxzVXJsUmVnZXggPSAoc2VydmljZSBhcyB0eXBlb2Ygc2VydmljZSAmIHsgZ2V0RGV0YWlsVXJsPzogKC4uLmFyZ3MpID0+IHN0cmluZyB9KVxuICAgICAgICAuZ2V0RGV0YWlsVXJsKGRhdGEuY29udGV4dERhdGEpXG4gICAgICAgIC5yZXBsYWNlKC9cXGQrL2csICc/XFxcXGQqJyk7XG4gICAgICBjb25zdCBjb250ZXh0UmVnZXggPSBuZXcgUmVnRXhwKGRldGFpbHNVcmxSZWdleCwgJ2knKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuUmVnZXggPSBuZXcgUmVnRXhwKGAke2RldGFpbHNVcmxSZWdleH0vY2hpbGRgLCAnaScpO1xuICAgICAgY29uc3QgZmlsdGVyUmVzcG9uc2UgPSAoeyB1cmwsIG1ldGhvZCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRDaGFuZ2VkID0gY29udGV4dFJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnUFVUJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5BZmZlY3RlZCA9IGNoaWxkcmVuUmVnZXgudGVzdCh1cmwpICYmIFsnUE9TVCcsICdERUxFVEUnXS5pbmNsdWRlcyhtZXRob2QpO1xuICAgICAgICByZXR1cm4gY29udGV4dENoYW5nZWQgfHwgY2hpbGRyZW5BZmZlY3RlZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmhvb2tSZXNwb25zZShmaWx0ZXJSZXNwb25zZSk7XG4gICAgfVxuICAgIHJldHVybiBORVZFUjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFicyh0YWJzID0gW10pIHtcbiAgICB0aGlzLmxhc3RBZGRlZFRhYnMuZm9yRWFjaCh0ID0+IHRoaXMudGFic1NlcnZpY2UucmVtb3ZlKHQpKTtcbiAgICB0aGlzLmxhc3RBZGRlZFRhYnMgPSB0YWJzO1xuICAgIHRhYnMuZm9yRWFjaCh0ID0+IHRoaXMudGFic1NlcnZpY2UuYWRkKHQpKTtcbiAgICB0aGlzLnJlZGlyZWN0VG9GaXJzdFRhYigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdFRvRmlyc3RUYWIoKSB7XG4gICAgY29uc3QgY3VycmVudENvbnRleHRJZCA9ICh0aGlzLnJvdXRlci51cmwubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdCgpKSB7XG4gICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdCgpIHtcbiAgICBjb25zdCB0cmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBjb25zdCBncm91cHM6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIGdyb3Vwcy5zZWdtZW50cy5sZW5ndGggPT09IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnNwbGl0KCcvJykubGVuZ3RoID09PSBncm91cHMuc2VnbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodXJsKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHRzID0gT2JqZWN0LnZhbHVlcyhWaWV3Q29udGV4dCk7XG5cbiAgICBjb25zdCB1cmxXaXRob3V0SWQgPSB1cmwucmVwbGFjZSgvXFxkKC4qKS9nLCAnJyk7XG4gICAgY29uc3QgaWQgPSB2aWV3Q29udGV4dHMuZmluZEluZGV4KGNvbnRleHQgPT4gYC8ke2NvbnRleHQucmVwbGFjZSgnOmlkJywgJycpfWAgPT09IHVybFdpdGhvdXRJZCk7XG4gICAgcmV0dXJuIHZpZXdDb250ZXh0c1tpZF07XG4gIH1cblxuICBwcml2YXRlIGdldFNuYXBzaG90KFxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGUgfHxcbiAgICAgICEhKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KT8uc25hcHNob3RcbiAgICAgID8gKGFjdGl2YXRlZFJvdXRlIGFzIHVua25vd24gYXMgeyBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9KS5zbmFwc2hvdFxuICAgICAgOiBhY3RpdmF0ZWRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dERhdGFTbmFwc2hvdChcbiAgICBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuICApOiBEYXRhICYgUGFydGlhbDxDb250ZXh0RGF0YT4ge1xuICAgIGxldCByb3V0ZSA9IGFjdGl2YXRlZFJvdXRlO1xuICAgIHdoaWxlIChyb3V0ZSkge1xuICAgICAgaWYgKHJvdXRlLmRhdGEuY29udGV4dCkge1xuICAgICAgICByZXR1cm4gcm91dGUuZGF0YTtcbiAgICAgIH1cbiAgICAgIHJvdXRlID0gcm91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbn1cbiJdfQ==
|
|
@@ -12,9 +12,10 @@ export class RouterTabsResolver {
|
|
|
12
12
|
get routerStateSnapshot() {
|
|
13
13
|
return this.router.routerState.snapshot;
|
|
14
14
|
}
|
|
15
|
-
resolve(
|
|
16
|
-
const
|
|
17
|
-
|
|
15
|
+
resolve(currentRoute) {
|
|
16
|
+
const routeConfig = currentRoute.routeConfig;
|
|
17
|
+
const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
|
|
18
|
+
return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map((guard) => guard.canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
|
|
18
19
|
if (isObservable(result)) {
|
|
19
20
|
return result;
|
|
20
21
|
}
|
|
@@ -26,18 +27,48 @@ export class RouterTabsResolver {
|
|
|
26
27
|
if (Array.isArray(result)) {
|
|
27
28
|
child.tabs = result;
|
|
28
29
|
}
|
|
29
|
-
}), every(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result =>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
}), every(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result => {
|
|
31
|
+
const url = this.getBaselUrl(currentRoute).join('/');
|
|
32
|
+
return result.label || result.path
|
|
33
|
+
? {
|
|
34
|
+
label: result.label,
|
|
35
|
+
icon: result.icon,
|
|
36
|
+
path: `/${decodeURIComponent(url)}/${result.path}`,
|
|
37
|
+
priority: result.priority,
|
|
38
|
+
hide: result.hide,
|
|
39
|
+
badge: result.badge,
|
|
40
|
+
tooltipText: result.tooltipText,
|
|
41
|
+
featureId: result.featureId,
|
|
42
|
+
tabsOutlet: result.tabsOutlet,
|
|
43
|
+
showAlways: result.showAlways
|
|
44
|
+
}
|
|
45
|
+
: undefined;
|
|
46
|
+
}))), filter(tabs => !!tabs), toArray());
|
|
47
|
+
}
|
|
48
|
+
getBaselUrl(currentRoute) {
|
|
49
|
+
let prefix = [];
|
|
50
|
+
if (currentRoute.parent?.url.length > 0) {
|
|
51
|
+
prefix = this.getBaselUrl(currentRoute.parent);
|
|
52
|
+
}
|
|
53
|
+
return [...prefix, ...currentRoute.url];
|
|
54
|
+
}
|
|
55
|
+
getLatestChildRoutes(context) {
|
|
56
|
+
const thisContextRoute = this.findRootContextRoutes(this.router.config, context);
|
|
57
|
+
return thisContextRoute?.children || [];
|
|
58
|
+
}
|
|
59
|
+
findRootContextRoutes(routes, context) {
|
|
60
|
+
for (const route of routes) {
|
|
61
|
+
if (route.rootContext === context) {
|
|
62
|
+
return route;
|
|
63
|
+
}
|
|
64
|
+
if (route.children) {
|
|
65
|
+
const childResult = this.findRootContextRoutes(route.children, context);
|
|
66
|
+
if (childResult) {
|
|
67
|
+
return childResult;
|
|
68
|
+
}
|
|
39
69
|
}
|
|
40
|
-
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
41
72
|
}
|
|
42
73
|
getGuards(child) {
|
|
43
74
|
const guards = (child.canActivate || []).map(guard => {
|
|
@@ -57,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
57
88
|
providedIn: 'root'
|
|
58
89
|
}]
|
|
59
90
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXRhYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXItdGFicy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQTBCLE1BQU0sRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU81RSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsUUFBa0IsRUFDbEIsTUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUosSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFvQztRQUMxQyxNQUFNLFdBQVcsR0FBeUIsWUFBWSxDQUFDLFdBQW1DLENBQUM7UUFDM0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwQyxRQUFRLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxDQUFDLEtBQXFDLEVB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O2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIENhbkFjdGl2YXRlRm4sIFJvdXRlcywgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBldmVyeSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0b0FycmF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVXaXRoVGFiLCBWaWV3Q29udGV4dCwgVmlld0NvbnRleHRSb290Um91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlclRhYnNSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGdldCByb3V0ZXJTdGF0ZVNuYXBzaG90KCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcbiAgfVxuXG4gIHJlc29sdmUoY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3Qgcm91dGVDb25maWc6IFZpZXdDb250ZXh0Um9vdFJvdXRlID0gY3VycmVudFJvdXRlLnJvdXRlQ29uZmlnIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlO1xuICAgIGNvbnN0IGxhdGVzdENoaWxkcmVuID0gdGhpcy5nZXRMYXRlc3RDaGlsZFJvdXRlcyhyb3V0ZUNvbmZpZy5yb290Q29udGV4dCk7XG4gICAgcmV0dXJuIGZyb20obGF0ZXN0Q2hpbGRyZW4gfHwgW10pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoY2hpbGQ6IFJvdXRlV2l0aFRhYikgPT5cbiAgICAgICAgZnJvbSh0aGlzLmdldEd1YXJkcyhjaGlsZCkpLnBpcGUoXG4gICAgICAgICAgbWFwKChndWFyZDogeyBjYW5BY3RpdmF0ZTogQ2FuQWN0aXZhdGVGbiB9KSA9PlxuICAgICAgICAgICAgZ3VhcmQuY2FuQWN0aXZhdGUoY3VycmVudFJvdXRlLCB0aGlzLnJvdXRlclN0YXRlU25hcHNob3QpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZyb20ocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZihyZXN1bHQpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICBjaGlsZC50YWJzID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGV2ZXJ5KHJlc3VsdCA9PiAhIXJlc3VsdCksXG4gICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQpLFxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IChBcnJheS5pc0FycmF5KGNoaWxkLnRhYnMpID8gZnJvbShjaGlsZC50YWJzKSA6IG9mKGNoaWxkKSkpLFxuICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRCYXNlbFVybChjdXJyZW50Um91dGUpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQubGFiZWwgfHwgcmVzdWx0LnBhdGhcbiAgICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IHJlc3VsdC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIGljb246IHJlc3VsdC5pY29uLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYC8ke2RlY29kZVVSSUNvbXBvbmVudCh1cmwpfS8ke3Jlc3VsdC5wYXRofWAsXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eTogcmVzdWx0LnByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgaGlkZTogcmVzdWx0LmhpZGUsXG4gICAgICAgICAgICAgICAgICBiYWRnZTogcmVzdWx0LmJhZGdlLFxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ6IHJlc3VsdC50b29sdGlwVGV4dCxcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVJZDogcmVzdWx0LmZlYXR1cmVJZCxcbiAgICAgICAgICAgICAgICAgIHRhYnNPdXRsZXQ6IHJlc3VsdC50YWJzT3V0bGV0LFxuICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5czogcmVzdWx0LnNob3dBbHdheXNcbiAgICAgICAgICAgICAgICB9IGFzIFRhYilcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcih0YWJzID0+ICEhdGFicyksXG4gICAgICB0b0FycmF5KClcbiAgICApIGFzIE9ic2VydmFibGU8VGFiW10+O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlbFVybChjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICBsZXQgcHJlZml4OiBVcmxTZWdtZW50W10gPSBbXTtcbiAgICBpZiAoY3VycmVudFJvdXRlLnBhcmVudD8udXJsLmxlbmd0aCA+IDApIHtcbiAgICAgIHByZWZpeCA9IHRoaXMuZ2V0QmFzZWxVcmwoY3VycmVudFJvdXRlLnBhcmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wcmVmaXgsIC4uLmN1cnJlbnRSb3V0ZS51cmxdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXRlc3RDaGlsZFJvdXRlcyhjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIGNvbnN0IHRoaXNDb250ZXh0Um91dGUgPSB0aGlzLmZpbmRSb290Q29udGV4dFJvdXRlcyh0aGlzLnJvdXRlci5jb25maWcsIGNvbnRleHQpO1xuICAgIHJldHVybiB0aGlzQ29udGV4dFJvdXRlPy5jaGlsZHJlbiB8fCBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFJvb3RDb250ZXh0Um91dGVzKHJvdXRlczogUm91dGVzLCBjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgICBpZiAoKHJvdXRlIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlKS5yb290Q29udGV4dCA9PT0gY29udGV4dCkge1xuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGRSZXN1bHQgPSB0aGlzLmZpbmRSb290Q29udGV4dFJvdXRlcyhyb3V0ZS5jaGlsZHJlbiwgY29udGV4dCk7XG4gICAgICAgIGlmIChjaGlsZFJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiBjaGlsZFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3VhcmRzKGNoaWxkOiBSb3V0ZSkge1xuICAgIGNvbnN0IGd1YXJkcyA9IChjaGlsZC5jYW5BY3RpdmF0ZSB8fCBbXSkubWFwKGd1YXJkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChndWFyZCk7XG4gICAgfSk7XG4gICAgaWYgKGNoaWxkLmRhdGEgJiYgY2hpbGQuZGF0YS5zaG93SWYpIHtcbiAgICAgIGd1YXJkcy5wdXNoKHsgY2FuQWN0aXZhdGU6IGNoaWxkLmRhdGEuc2hvd0lmIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VhcmRzO1xuICB9XG59XG4iXX0=
|
|
@@ -16,5 +16,10 @@ export var ViewContext;
|
|
|
16
16
|
ViewContext["Service"] = "service/:id";
|
|
17
17
|
ViewContext["DatapointLibrary"] = "datapointlibrary/:id";
|
|
18
18
|
ViewContext["Simulators"] = "simulators/:id";
|
|
19
|
+
ViewContext["Alarms"] = "alarms/:id";
|
|
20
|
+
ViewContext["GroupAlarms"] = "group/:id/alarms/:id";
|
|
21
|
+
ViewContext["DeviceAlarms"] = "device/:id/alarms/:id";
|
|
22
|
+
ViewContext["ServiceAlarms"] = "service/:id/alarms/:id";
|
|
23
|
+
ViewContext["SimulatorsAlarms"] = "simulators/:id/alarms/:id";
|
|
19
24
|
})(ViewContext || (ViewContext = {}));
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBbUJYO0FBbkJELFdBQVksV0FBVztJQUNyQixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBa0IsQ0FBQTtJQUNsQixxRUFBc0QsQ0FBQTtJQUN0RCwrREFBZ0QsQ0FBQTtJQUNoRCw2REFBOEMsQ0FBQTtJQUM5Qyx3RUFBeUQsQ0FBQTtJQUN6RCxvRUFBcUQsQ0FBQTtJQUNyRCxxQ0FBc0IsQ0FBQTtJQUN0QixxQ0FBc0IsQ0FBQTtJQUN0QixzQ0FBdUIsQ0FBQTtJQUN2Qix3REFBeUMsQ0FBQTtJQUN6Qyw0Q0FBNkIsQ0FBQTtJQUM3QixvQ0FBcUIsQ0FBQTtJQUNyQixtREFBb0MsQ0FBQTtJQUNwQyxxREFBc0MsQ0FBQTtJQUN0Qyx1REFBd0MsQ0FBQTtJQUN4Qyw2REFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBbkJXLFdBQVcsS0FBWCxXQUFXLFFBbUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIGFzIG5nUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgVGFiLCBUYWJXaXRoVGVtcGxhdGUgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhIG9mIHRoaXMgcm91dGUuIEUuZy4gb24gVmlld0NvbnRleHQuRGV2aWNlIGFuIG1hbmFnZWQgb2JqZWN0XG4gICAqIG9mIHRoZSBkZXZpY2UuXG4gICAqL1xuICBjb250ZXh0RGF0YTogSUlkZW50aWZpZWQ7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBWaWV3Q29udGV4dCB1c2VkLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgcm91dGVzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdDb250ZXh0IHtcbiAgRGV2aWNlID0gJ2RldmljZS86aWQnLFxuICBHcm91cCA9ICdncm91cC86aWQnLFxuICBVc2VyID0gJ3VzZXJzLzppZCcsXG4gIEFwcGxpY2F0aW9uID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMvOmlkJyxcbiAgRXh0ZW5zaW9uID0gJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucy86aWQnLFxuICBGZWF0dXJlID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9mZWF0dXJlcy86aWQnLFxuICBNaWNyb3NlcnZpY2UgPSAnZWNvc3lzdGVtL21pY3Jvc2VydmljZS9taWNyb3NlcnZpY2VzLzppZCcsXG4gIFN1YnNjcmliZWRBcHBsaWNhdGlvbnMgPSAnc3Vic2NyaWJlZEFwcGxpY2F0aW9ucy86aWQnLFxuICBUZW5hbnQgPSAndGVuYW50cy86aWQnLFxuICBSZXBvcnQgPSAncmVwb3J0cy86aWQnLFxuICBTZXJ2aWNlID0gJ3NlcnZpY2UvOmlkJyxcbiAgRGF0YXBvaW50TGlicmFyeSA9ICdkYXRhcG9pbnRsaWJyYXJ5LzppZCcsXG4gIFNpbXVsYXRvcnMgPSAnc2ltdWxhdG9ycy86aWQnLFxuICBBbGFybXMgPSAnYWxhcm1zLzppZCcsXG4gIEdyb3VwQWxhcm1zID0gJ2dyb3VwLzppZC9hbGFybXMvOmlkJyxcbiAgRGV2aWNlQWxhcm1zID0gJ2RldmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNlcnZpY2VBbGFybXMgPSAnc2VydmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNpbXVsYXRvcnNBbGFybXMgPSAnc2ltdWxhdG9ycy86aWQvYWxhcm1zLzppZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3Q29udGV4U2VydmljZUNvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSByb3V0ZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgcm91dGVyIHNlcnZpY2Ugb3JcbiAgICAgKiBpZiB0aGUgcm91dGUgaXMgc29tZXdoZXJlIGRlZmluZWQgYnkgdGhlIGRldmVsb3Blci5cbiAgICAgKi9cbiAgICBhdXRvUm91dGU6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdXNlZCB0byByb3V0ZS5cbiAgICAgKi9cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIEBjOHkvY2xpZW50IHNlcnZpY2UgdG8gdXNlIGZvciB0aGlzIGNvbnRleHQuXG4gICAgICovXG4gICAgc2VydmljZTogVHlwZTx7XG4gICAgICBkZXRhaWwoXG4gICAgICAgIGVudGl0eU9ySWQ6IHN0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkLFxuICAgICAgICBmaWx0ZXI/OiBvYmplY3RcbiAgICAgICk6IFByb21pc2U8SVJlc3VsdDxJSWRlbnRpZmllZD4+O1xuICAgICAgbGlzdChmaWx0ZXI/OiBvYmplY3QpOiBQcm9taXNlPElSZXN1bHRMaXN0PElJZGVudGlmaWVkPj47XG4gICAgfT47XG4gIH07XG59XG5cbi8qKlxuICogQSBWaWV3Q29udGV4dCBiYXNlIHJvdXRlLlxuICovXG5leHBvcnQgdHlwZSBWaWV3Q29udGV4dFJvb3RSb3V0ZSA9IFJvdXRlICYgeyByb290Q29udGV4dDogVmlld0NvbnRleHQgfTtcblxuLyoqXG4gKiBBIHJvdXRlIHRoYXQgaXMgYWRkZWQgdG8gYSBjZXJ0YWluIHZpZXcgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld0NvbnRleHRSb3V0ZSA9IFJvdXRlICYgeyBjb250ZXh0OiBWaWV3Q29udGV4dCB9O1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBjYW4gYmUgYWRkZWQgdmlhIHRoZSBIT09LX1JPVVRFLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZSA9IFJvdXRlRGVmYXVsdCB8IFJvdXRlV2l0aFRhYiB8IFJvdXRlV2l0aENvbXBvbmVudDtcblxuLyoqXG4gKiBBIHVzdWFsIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZhdWx0IGV4dGVuZHMgbmdSb3V0ZSB7XG4gIGNvbnRleHQ/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgdGFicz86IG5ldmVyO1xufVxuXG5pbnRlcmZhY2UgUm91dGVCYXNlIHtcbiAgLyoqXG4gICAqIFdoaWNoIG9yZGVyIHNob3VsZCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgX2luamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgYmFzZWQgY29udGV4dCByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhDb21wb25lbnQgZXh0ZW5kcyBuZ1JvdXRlLCBSb3V0ZUJhc2Uge1xuICAvKipcbiAgICogVGhlIHZpZXcgY29udGV4dCB0byBhZGQgdGhpcyByb3V0ZSB0by5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBsYWJlbD86IG5ldmVyO1xufVxuXG4vKipcbiAqIEEgdGFiIHRoYXQgaXMgYWRkZWQgdG8gYSBjb250ZXh0IHJvdXRlIGFuZCBvcGVucyB0aGUgYXNzb2NpYXRlZFxuICogY29tcG9uZW50IG9uIHRoaXMgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhUYWJcbiAgZXh0ZW5kcyBPbWl0PFRhYldpdGhUZW1wbGF0ZSwgJ2luamVjdG9yJyB8ICdwYXRoJyB8ICdjb21wb25lbnQnPixcbiAgICBuZ1JvdXRlLFxuICAgIFJvdXRlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHRvIGFkZCB0aGlzIHJvdXRlIHRvLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGVtaXQgbXVsdGlwbGUgdGFicyBvbiBvbmUgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIHRhYnM/OiBUYWJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVGYWN0b3J5ID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG4iXX0=
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { RouterModule as NgRouterModule } from '@angular/router';
|
|
3
|
-
import { RouterService } from './router.service';
|
|
4
|
-
import { ContextRouteComponent } from './context-route.component';
|
|
5
|
-
import { HeaderModule } from '../header/header.module';
|
|
6
3
|
import { CommonModule } from '../common/common.module';
|
|
4
|
+
import { HeaderModule } from '../header/header.module';
|
|
5
|
+
import { ContextRouteComponent } from './context-route.component';
|
|
7
6
|
import { ContextRouteGuard } from './context-route.guard';
|
|
8
|
-
import { ViewContext } from './router.model';
|
|
9
|
-
import { RouterTabsResolver } from './router-tabs.resolver';
|
|
10
7
|
import { EmptyComponent } from './empty.component';
|
|
8
|
+
import { RouterTabsResolver } from './router-tabs.resolver';
|
|
9
|
+
import { ViewContext } from './router.model';
|
|
10
|
+
import { RouterService } from './router.service';
|
|
11
|
+
import { ScopedContextRouteService } from './scoped-context-route.service';
|
|
12
|
+
import { ViewContextServices } from './view-context.service';
|
|
11
13
|
import * as i0 from "@angular/core";
|
|
12
14
|
import * as i1 from "./router.service";
|
|
13
15
|
export const extraRoutes = [
|
|
@@ -20,17 +22,21 @@ export const extraRoutes = [
|
|
|
20
22
|
component: EmptyComponent
|
|
21
23
|
}
|
|
22
24
|
];
|
|
25
|
+
export const viewContextRoutes = [];
|
|
23
26
|
// tslint:disable-next-line: forin
|
|
24
27
|
for (const key in ViewContext) {
|
|
25
28
|
const context = ViewContext[key];
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
if (!ViewContextServices.isAutoRoute(context)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
viewContextRoutes.push({
|
|
33
|
+
path: ViewContextServices.getPath(context),
|
|
34
|
+
rootContext: context,
|
|
28
35
|
component: ContextRouteComponent,
|
|
29
36
|
canActivate: [ContextRouteGuard],
|
|
30
37
|
data: { context, contextData: {} },
|
|
31
38
|
resolve: {
|
|
32
39
|
tabs: RouterTabsResolver
|
|
33
|
-
// contextData: ContextRouteGuard
|
|
34
40
|
}
|
|
35
41
|
});
|
|
36
42
|
}
|
|
@@ -59,10 +65,10 @@ export class RouterModule {
|
|
|
59
65
|
// initialNavigation disabled by default because of MTM-44047 (routes triggered before the actual login)
|
|
60
66
|
config.initialNavigation = config.initialNavigation ?? 'disabled';
|
|
61
67
|
config.useHash = config.useHash ?? true;
|
|
62
|
-
const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes], config);
|
|
68
|
+
const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes, ...viewContextRoutes], config);
|
|
63
69
|
return {
|
|
64
70
|
ngModule: RouterModule,
|
|
65
|
-
providers: [...ngRouterModule.providers]
|
|
71
|
+
providers: [...ngRouterModule.providers, ScopedContextRouteService]
|
|
66
72
|
};
|
|
67
73
|
}
|
|
68
74
|
constructor(
|
|
@@ -72,13 +78,14 @@ export class RouterModule {
|
|
|
72
78
|
}
|
|
73
79
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, deps: [{ token: i1.RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
74
80
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, declarations: [ContextRouteComponent, EmptyComponent], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
|
|
75
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, imports: [NgRouterModule, HeaderModule, CommonModule] }); }
|
|
81
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, providers: [ScopedContextRouteService], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
|
|
76
82
|
}
|
|
77
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, decorators: [{
|
|
78
84
|
type: NgModule,
|
|
79
85
|
args: [{
|
|
80
86
|
declarations: [ContextRouteComponent, EmptyComponent],
|
|
81
|
-
imports: [NgRouterModule, HeaderModule, CommonModule]
|
|
87
|
+
imports: [NgRouterModule, HeaderModule, CommonModule],
|
|
88
|
+
providers: [ScopedContextRouteService]
|
|
82
89
|
}]
|
|
83
90
|
}], ctorParameters: () => [{ type: i1.RouterService }] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFTLFdBQVcsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVk7SUFDbEM7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztBQUM1RCxrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlDLFNBQVM7SUFDWCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzFDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFNSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQzNDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxFQUNqRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUM7U0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOzhHQTlCTyxZQUFZOytHQUFaLFlBQVksaUJBSlIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7K0dBR3pDLFlBQVksYUFGWixDQUFDLHlCQUF5QixDQUFDLFlBRDVCLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWTs7MkZBR3pDLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO29CQUNyRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckQsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICcuL3JvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IHZpZXdDb250ZXh0Um91dGVzOiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGZvcmluXG5mb3IgKGNvbnN0IGtleSBpbiBWaWV3Q29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gVmlld0NvbnRleHRba2V5XTtcbiAgaWYgKCFWaWV3Q29udGV4dFNlcnZpY2VzLmlzQXV0b1JvdXRlKGNvbnRleHQpKSB7XG4gICAgY29udGludWU7XG4gIH1cbiAgdmlld0NvbnRleHRSb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogVmlld0NvbnRleHRTZXJ2aWNlcy5nZXRQYXRoKGNvbnRleHQpLFxuICAgIHJvb3RDb250ZXh0OiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIEM4WSByb3V0ZXIgaW1wbGVtZW50YXRpb24uIEl0IGltcGxlbWVudHMgc29tZSBkZWZhdWx0IHJvdXRlcyBuZWVkZWRcbiAqIGFzIHdlbGwgYXMgY29udGV4dCByb3V0ZXMuIENvbnRleHQgcm91dGVzIGFyZSB1c2VmdWwsIGlmIHlvdSB3YW50IHRvXG4gKiB1c2UgY29udGV4dCBkYXRhIG9uIGEgY2VydGFpbiB2aWV3IChlLmcuIGEgZGV2aWNlKSwgdGhlbiB0aGlzIHJvdXRlc1xuICogYXV0b21hdGljYWxseSByZXNvbHZlIHRoZSBhc3NvY2lhdGVkIG1hbmFnZWQgb2JqZWN0LlxuICpcbiAqIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29tYmluYXRpb24gb2YgdGhlIEFuZ3VsYXIgZGVmYXVsdCBSb3V0ZXJNb2R1bGVcbiAqIG9yIHVzZSBvbmx5IHRoaXMgbW9kdWxlLiBDb250ZXh0IHJvdXRlcyBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlXG4gKiBIT09LX1JPVVRFUyBob29rLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0Um91dGVDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW05nUm91dGVyTW9kdWxlLCBIZWFkZXJNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1Njb3BlZENvbnRleHRSb3V0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBTYW1lIGludGVyZmFjZSBhcyBAYW5ndWxhci9yb3V0ZXIgbW9kdWxlLlxuICAgKiBTZXRzIGBpbml0aWFsTmF2aWdhdGlvbmAgYWx3YXlzIHRvIGBkaXNhYmxlZGAgYW5kIGB1c2VIYXNoYCBhbHdheXMgdG8gYHRydWVgLlxuICAgKiBAcGFyYW0gcm91dGVzIFRoZSBjb25maWd1cmVkIHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgcm91dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIG1vZHVsZSBhbmQgcHJvdmlkZXJzLlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3Qocm91dGVzOiBSb3V0ZXMgPSBbXSwgY29uZmlnPzogRXh0cmFPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0ZXJNb2R1bGU+IHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uZmlnID0ge307XG4gICAgfVxuICAgIC8vIGluaXRpYWxOYXZpZ2F0aW9uIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBNVE0tNDQwNDcgKHJvdXRlcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9naW4pXG4gICAgY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID0gY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID8/ICdkaXNhYmxlZCc7XG4gICAgY29uZmlnLnVzZUhhc2ggPSBjb25maWcudXNlSGFzaCA/PyB0cnVlO1xuXG4gICAgY29uc3QgbmdSb3V0ZXJNb2R1bGUgPSBOZ1JvdXRlck1vZHVsZS5mb3JSb290KFxuICAgICAgWy4uLnJvdXRlcywgLi4uZXh0cmFSb3V0ZXMsIC4uLnZpZXdDb250ZXh0Um91dGVzXSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVycywgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
|