@magic-xpa/angular 4.702.0-dev472.353 → 4.800.0-dev000.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/bundles/magic-xpa-angular.umd.js +900 -2174
- package/bundles/magic-xpa-angular.umd.js.map +1 -1
- package/bundles/magic-xpa-angular.umd.min.js +1 -15
- package/bundles/magic-xpa-angular.umd.min.js.map +1 -1
- package/esm2015/index.js +1 -2
- package/esm2015/magic-xpa-angular.js +1 -4
- package/esm2015/src/controls.metadata.model.js +3 -36
- package/esm2015/src/interfaces/sub-form-definition.iterface.js +1 -1
- package/esm2015/src/magic.core.module.js +4 -50
- package/esm2015/src/services/ISubformMagicService.js +1 -1
- package/esm2015/src/services/OverlayWindowService.js +4 -29
- package/esm2015/src/services/StylesMapManager.js +1 -4
- package/esm2015/src/services/accessor.magic.service.js +44 -242
- package/esm2015/src/services/commands-collector.magic.service.js +4 -7
- package/esm2015/src/services/component-list.magic.service.js +1 -25
- package/esm2015/src/services/confirmation.components.magic.provider.js +4 -24
- package/esm2015/src/services/engine.magic.service.js +7 -10
- package/esm2015/src/services/exit.magic.service.js +4 -10
- package/esm2015/src/services/magic.providers.js +1 -4
- package/esm2015/src/services/magic.services.js +4 -10
- package/esm2015/src/services/mg-date-adapter.js +5 -5
- package/esm2015/src/services/overlay.conainer.magic.provider.js +4 -8
- package/esm2015/src/services/router-commands.magic.service.js +4 -10
- package/esm2015/src/services/subform.magic.service.js +40 -58
- package/esm2015/src/services/table.magic.service.js +5 -61
- package/esm2015/src/services/task.magics.service.js +15 -282
- package/esm2015/src/services/title.magic.service.js +4 -15
- package/esm2015/src/ui/GuiInteractiveExecutor.js +8 -6
- package/esm2015/src/ui/components/base-magic-alert.component.js +4 -14
- package/esm2015/src/ui/components/base-magic-confirm.component.js +4 -16
- package/esm2015/src/ui/components/magic-alert.component.js +5 -8
- package/esm2015/src/ui/components/magic-confirmation-box.component.js +5 -8
- package/esm2015/src/ui/directives/NonMagicControlDirective.js +4 -31
- package/esm2015/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/checkbox.magic.directive.js +4 -13
- package/esm2015/src/ui/directives/magic/combobox.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.js +5 -11
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.js +4 -16
- package/esm2015/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.js +5 -11
- package/esm2015/src/ui/directives/magic/input.noformcontrol.magic.directive.js +4 -10
- package/esm2015/src/ui/directives/magic/nocontrol.magic.directive.js +6 -16
- package/esm2015/src/ui/directives/magic/row.magic.directive.js +7 -23
- package/esm2015/src/ui/directives/magic-focus.directive.js +4 -7
- package/esm2015/src/ui/directives/magic.directive.js +18 -82
- package/esm2015/src/ui/directives/magicViewContainerRef.directive.js +4 -8
- package/esm2015/src/ui/directives/mgformat.magic.directive.js +4 -57
- package/esm2015/src/ui/directives/range-validator.magic.directive.js +4 -20
- package/esm2015/src/ui/magic-confirmationBox.js +1 -25
- package/esm2015/src/ui/magic-modal/base-magic-overlay-container.js +1 -1
- package/esm2015/src/ui/magic-modal/magic-modal-form.js +1 -4
- package/esm2015/src/ui/magic-modal/magic-modal-interface.js +1 -1
- package/esm2015/src/ui/magic-modal/magic-overlay-container-wrapper.js +4 -21
- package/esm2015/src/ui/magic-modal/magic-overlay-container.js +4 -46
- package/esm2015/src/ui/magic-root.component.js +10 -53
- package/esm2015/src/ui/mgerror.magic.component.js +4 -21
- package/esm2015/src/ui/pipes/date.magic.pipe.js +5 -12
- package/esm2015/src/ui/pipes/time.magic.pipe.js +4 -7
- package/esm2015/src/ui/router-container.magic.component.js +15 -36
- package/esm2015/src/ui/subform.magic.component.js +4 -23
- package/esm2015/src/ui/task-base.magic.component.js +4 -74
- package/esm2015/src/ui/utils.js +1 -20
- package/fesm2015/magic-xpa-angular.js +798 -2094
- package/fesm2015/magic-xpa-angular.js.map +1 -1
- package/index.d.ts +0 -1
- package/magic-xpa-angular.d.ts +0 -3
- package/package.json +3 -3
- package/src/controls.metadata.model.d.ts +0 -16
- package/src/interfaces/sub-form-definition.iterface.d.ts +0 -6
- package/src/magic.core.module.d.ts +18 -22
- package/src/services/OverlayWindowService.d.ts +0 -19
- package/src/services/StylesMapManager.d.ts +0 -3
- package/src/services/accessor.magic.service.d.ts +16 -202
- package/src/services/commands-collector.magic.service.d.ts +0 -3
- package/src/services/component-list.magic.service.d.ts +0 -27
- package/src/services/confirmation.components.magic.provider.d.ts +0 -16
- package/src/services/engine.magic.service.d.ts +1 -3
- package/src/services/exit.magic.service.d.ts +0 -6
- package/src/services/magic.providers.d.ts +0 -3
- package/src/services/magic.services.d.ts +0 -6
- package/src/services/router-commands.magic.service.d.ts +0 -6
- package/src/services/subform.magic.service.d.ts +5 -30
- package/src/services/table.magic.service.d.ts +0 -55
- package/src/services/task.magics.service.d.ts +1 -294
- package/src/services/title.magic.service.d.ts +0 -11
- package/src/ui/GuiInteractiveExecutor.d.ts +1 -3
- package/src/ui/components/base-magic-alert.component.d.ts +0 -16
- package/src/ui/components/base-magic-confirm.component.d.ts +0 -18
- package/src/ui/components/magic-alert.component.d.ts +0 -3
- package/src/ui/components/magic-confirmation-box.component.d.ts +0 -3
- package/src/ui/directives/NonMagicControlDirective.d.ts +0 -41
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +0 -9
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +0 -6
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +0 -12
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +0 -6
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +0 -6
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +0 -3
- package/src/ui/directives/magic/row.magic.directive.d.ts +0 -15
- package/src/ui/directives/magic-focus.directive.d.ts +0 -3
- package/src/ui/directives/magic.directive.d.ts +1 -78
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +0 -3
- package/src/ui/directives/mgformat.magic.directive.d.ts +0 -40
- package/src/ui/directives/range-validator.magic.directive.d.ts +0 -16
- package/src/ui/magic-confirmationBox.d.ts +0 -19
- package/src/ui/magic-modal/base-magic-overlay-container.d.ts +0 -9
- package/src/ui/magic-modal/magic-modal-form.d.ts +0 -3
- package/src/ui/magic-modal/magic-modal-interface.d.ts +0 -27
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +0 -20
- package/src/ui/magic-modal/magic-overlay-container.d.ts +0 -51
- package/src/ui/magic-root.component.d.ts +0 -42
- package/src/ui/mgerror.magic.component.d.ts +0 -19
- package/src/ui/pipes/date.magic.pipe.d.ts +0 -6
- package/src/ui/pipes/time.magic.pipe.d.ts +0 -3
- package/src/ui/router-container.magic.component.d.ts +5 -21
- package/src/ui/subform.magic.component.d.ts +0 -21
- package/src/ui/task-base.magic.component.d.ts +0 -72
- package/src/ui/utils.d.ts +0 -3
- package/esm2015/src/ui/load-on-demand-module .magic.component.js +0 -16
- package/src/ui/load-on-demand-module .magic.component.d.ts +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, Injector, NgModuleFactoryLoader } from '@angular/core';
|
|
2
2
|
import { TaskMagicService } from './task.magics.service';
|
|
3
3
|
import { List } from '@magic-xpa/mscorelib';
|
|
4
4
|
import { isNullOrUndefined } from 'util';
|
|
@@ -6,33 +6,27 @@ import { ComponentListMagicService } from './component-list.magic.service';
|
|
|
6
6
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
7
7
|
import { CommandsCollectorMagicService } from './commands-collector.magic.service';
|
|
8
8
|
import { RouterCommandsMagicService } from '../services/router-commands.magic.service';
|
|
9
|
-
import { LoadOnDemandModuleMagicComponent } from '../ui/load-on-demand-module .magic.component';
|
|
10
9
|
import * as i0 from "@angular/core";
|
|
11
10
|
import * as i1 from "./task.magics.service";
|
|
12
11
|
import * as i2 from "@angular/router";
|
|
13
12
|
import * as i3 from "./component-list.magic.service";
|
|
14
13
|
import * as i4 from "./commands-collector.magic.service";
|
|
15
14
|
import * as i5 from "../services/router-commands.magic.service";
|
|
16
|
-
/**
|
|
17
|
-
* Service for managing subforms and routing
|
|
18
|
-
*/
|
|
19
15
|
export class SubformMagicService {
|
|
20
|
-
constructor(task, activatedRoute, componentList, pendingCommandsCollector, router, routerCommandsMagicService) {
|
|
16
|
+
constructor(task, activatedRoute, componentList, pendingCommandsCollector, router, routerCommandsMagicService, componentListMagicService, loader, injector) {
|
|
21
17
|
this.task = task;
|
|
22
18
|
this.activatedRoute = activatedRoute;
|
|
23
19
|
this.componentList = componentList;
|
|
24
20
|
this.pendingCommandsCollector = pendingCommandsCollector;
|
|
25
21
|
this.router = router;
|
|
26
22
|
this.routerCommandsMagicService = routerCommandsMagicService;
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
23
|
+
this.componentListMagicService = componentListMagicService;
|
|
24
|
+
this.loader = loader;
|
|
25
|
+
this.injector = injector;
|
|
26
|
+
this.subformsDict = {};
|
|
27
|
+
this.routesDict = {};
|
|
29
28
|
this.currentRouteDefinition = null;
|
|
30
29
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Finds and returns the component according to the subform name
|
|
33
|
-
* @param subformName
|
|
34
|
-
* @returns
|
|
35
|
-
*/
|
|
36
30
|
mgGetComp(subformName) {
|
|
37
31
|
if (subformName in this.subformsDict) {
|
|
38
32
|
let formName = this.subformsDict[subformName].formName;
|
|
@@ -41,11 +35,6 @@ export class SubformMagicService {
|
|
|
41
35
|
}
|
|
42
36
|
return null;
|
|
43
37
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns the parameters of the subform
|
|
46
|
-
* @param subformName
|
|
47
|
-
* @returns
|
|
48
|
-
*/
|
|
49
38
|
mgGetParameters(subformName) {
|
|
50
39
|
if (subformName in this.subformsDict) {
|
|
51
40
|
return this.subformsDict[subformName].parameters;
|
|
@@ -53,9 +42,6 @@ export class SubformMagicService {
|
|
|
53
42
|
else
|
|
54
43
|
return "";
|
|
55
44
|
}
|
|
56
|
-
/**
|
|
57
|
-
* @ignore
|
|
58
|
-
*/
|
|
59
45
|
deleteSubformComp(subformControlName, formName) {
|
|
60
46
|
if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0) {
|
|
61
47
|
if (this.subformsDict[subformControlName].formName === formName) {
|
|
@@ -64,27 +50,41 @@ export class SubformMagicService {
|
|
|
64
50
|
}
|
|
65
51
|
}
|
|
66
52
|
}
|
|
67
|
-
/**
|
|
68
|
-
* @ignore
|
|
69
|
-
*/
|
|
70
53
|
addSubformComp(subformControlName, formName, taskId, taskDescription, routerPath, params, inDefaultOutlet) {
|
|
71
54
|
this.pendingCommandsCollector.startCollecting();
|
|
72
55
|
let refreshNeeded = false;
|
|
73
|
-
if (isNullOrUndefined(routerPath)) {
|
|
56
|
+
if (isNullOrUndefined(routerPath)) {
|
|
74
57
|
if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0) {
|
|
75
58
|
if (this.subformsDict[subformControlName].formName === formName) {
|
|
76
59
|
this.subformsDict[subformControlName] = {};
|
|
77
60
|
this.task.refreshView();
|
|
78
61
|
}
|
|
79
62
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
let moduleRef = this.componentListMagicService.getModuleRef(formName);
|
|
64
|
+
if (moduleRef == null) {
|
|
65
|
+
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(formName);
|
|
66
|
+
if (lazyLoadModule != null) {
|
|
67
|
+
this.loader
|
|
68
|
+
.load(lazyLoadModule.modulePath + "#" + lazyLoadModule.moduleName)
|
|
69
|
+
.then((moduleFactory) => {
|
|
70
|
+
moduleRef = moduleFactory.create(this.injector);
|
|
71
|
+
this.subformsDict[subformControlName] = {
|
|
72
|
+
formName,
|
|
73
|
+
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
74
|
+
};
|
|
75
|
+
this.task.refreshView();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.subformsDict[subformControlName] = {
|
|
81
|
+
formName,
|
|
82
|
+
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
83
|
+
};
|
|
84
|
+
refreshNeeded = true;
|
|
85
|
+
}
|
|
86
86
|
}
|
|
87
|
-
else {
|
|
87
|
+
else {
|
|
88
88
|
if (inDefaultOutlet)
|
|
89
89
|
subformControlName = "primary";
|
|
90
90
|
let routeParams = new List();
|
|
@@ -99,10 +99,6 @@ export class SubformMagicService {
|
|
|
99
99
|
parameters: { taskIdParam: taskId, taskDescription: taskDescription },
|
|
100
100
|
routeParams: routeParams
|
|
101
101
|
};
|
|
102
|
-
// If SubformMagicService.currentCallerMgSubformServiceRef !== null means that router.navigate() is already
|
|
103
|
-
// called once, but angular has not yet executed it (ngOnInit of the new component is not called).
|
|
104
|
-
// In such a case, do not executed router.navigate() again. Because, angular ignores the previous one.
|
|
105
|
-
// So, put a command in the queue which will be executed after the first one is executed.
|
|
106
102
|
if (SubformMagicService.currentCallerMgSubformServiceRef === null)
|
|
107
103
|
this.ExecuteRouteCommand(routeCommand);
|
|
108
104
|
else
|
|
@@ -111,16 +107,11 @@ export class SubformMagicService {
|
|
|
111
107
|
if (refreshNeeded)
|
|
112
108
|
this.task.refreshView();
|
|
113
109
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Open the subform using a route command
|
|
116
|
-
*/
|
|
117
110
|
ExecuteRouteCommand(routeCommand) {
|
|
118
111
|
let reusingComponent = false;
|
|
119
112
|
let currentSubformMagicService = routeCommand.callerMgSubformServiceRef;
|
|
120
113
|
let relativeRoute = SubformMagicService.getRelativeRoute(currentSubformMagicService.activatedRoute);
|
|
121
114
|
if (currentSubformMagicService.routesDict[routeCommand.routerOutletName] === routeCommand.routeParams[0]) {
|
|
122
|
-
// If the specified router outlet already hosts the same router path, router.navigate() doesn't actually navigate.
|
|
123
|
-
// So, first clear the outlet (passing null route params, clears the outlet) and then navigate again.
|
|
124
115
|
currentSubformMagicService.router.navigate([{ outlets: { [routeCommand.routerOutletName]: null } }], { relativeTo: relativeRoute })
|
|
125
116
|
.then((result) => {
|
|
126
117
|
SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;
|
|
@@ -160,12 +151,7 @@ export class SubformMagicService {
|
|
|
160
151
|
}
|
|
161
152
|
});
|
|
162
153
|
}
|
|
163
|
-
/**
|
|
164
|
-
* @ignore
|
|
165
|
-
*/
|
|
166
154
|
init() {
|
|
167
|
-
// If commands were issued for this task before ngOnInit(), they were not executed because task had not registered for them.
|
|
168
|
-
// So, execute them now.
|
|
169
155
|
const pendingCommands = this.pendingCommandsCollector.GetCommands(this.task.taskId);
|
|
170
156
|
if (pendingCommands.length > 0) {
|
|
171
157
|
pendingCommands.forEach(command => { this.task.executeCommand(command); });
|
|
@@ -173,28 +159,24 @@ export class SubformMagicService {
|
|
|
173
159
|
}
|
|
174
160
|
this.pendingCommandsCollector.stopCollecting();
|
|
175
161
|
}
|
|
176
|
-
/**
|
|
177
|
-
* @ignore
|
|
178
|
-
*/
|
|
179
162
|
refreshView() {
|
|
180
163
|
this.task.refreshView();
|
|
181
164
|
}
|
|
182
|
-
///
|
|
183
|
-
// return the relative route
|
|
184
|
-
//
|
|
185
165
|
static getRelativeRoute(sendActivatedRoute) {
|
|
186
166
|
let currentActiveRoute = sendActivatedRoute;
|
|
187
|
-
if (currentActiveRoute.
|
|
167
|
+
if (currentActiveRoute.snapshot.routeConfig !== null && currentActiveRoute.snapshot.routeConfig.path === '') {
|
|
188
168
|
currentActiveRoute = currentActiveRoute.parent;
|
|
169
|
+
if (!currentActiveRoute.snapshot.routeConfig.loadChildren)
|
|
170
|
+
console.log("getRelativeRoute(): both path and currentActiveRoute.snapshot.routeConfig.loadChildren are empty.");
|
|
189
171
|
}
|
|
190
172
|
return currentActiveRoute;
|
|
191
173
|
}
|
|
192
174
|
}
|
|
193
175
|
SubformMagicService.currentCallerMgSubformServiceRef = null;
|
|
194
176
|
SubformMagicService.routerContainers = new Array();
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
177
|
+
SubformMagicService.ɵfac = function SubformMagicService_Factory(t) { return new (t || SubformMagicService)(i0.ɵɵinject(i1.TaskMagicService), i0.ɵɵinject(i2.ActivatedRoute), i0.ɵɵinject(i3.ComponentListMagicService), i0.ɵɵinject(i4.CommandsCollectorMagicService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i5.RouterCommandsMagicService), i0.ɵɵinject(i3.ComponentListMagicService), i0.ɵɵinject(i0.NgModuleFactoryLoader), i0.ɵɵinject(i0.Injector)); };
|
|
178
|
+
SubformMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: SubformMagicService, factory: SubformMagicService.ɵfac });
|
|
179
|
+
(function () { i0.ɵsetClassMetadata(SubformMagicService, [{
|
|
198
180
|
type: Injectable
|
|
199
|
-
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.ActivatedRoute }, { type: i3.ComponentListMagicService }, { type: i4.CommandsCollectorMagicService }, { type: i2.Router }, { type: i5.RouterCommandsMagicService }]; }, null); })();
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5GLE9BQU8sRUFBZ0IsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUdyRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQUdoRzs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0Q7UUFMeEQsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFDcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUN4Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQStCO1FBQ3ZELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBYjVFLGlCQUFZLENBQUMsdUNBQXVDLEdBQUcsRUFBRSxD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R0FBRyxrQkFBa0IsQ0FBQztRQUM1QyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsSUFBSSxnQ0FBZ0MsRUFBRTtZQUNwRSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7U0FDaEQ7UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7O0FBek1NLG9EQUFnQyxHQUFRLElBQUksQ0FBQztBQUU3QyxvQ0FBZ0IsR0FBeUMsSUFBSSxLQUFLLEVBQUUsQ0FBQzt5R0FSakUsbUJBQW1COzhFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CO2tEQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4vdGFzay5tYWdpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IEd1aUNvbW1hbmQgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XG5pbXBvcnQgeyBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UgfSBmcm9tICcuL2NvbW1hbmRzLWNvbGxlY3Rvci5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlRGVmaW5pdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc3ViLWZvcm0tZGVmaW5pdGlvbi5pdGVyZmFjZSc7XG5pbXBvcnQgeyBSb3V0ZUNvbW1hbmQsIFJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVyLWNvbW1hbmRzLm1hZ2ljLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tICcuL0lTdWJmb3JtTWFnaWNTZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvcm91dGVyLWNvbnRhaW5lci5tYWdpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZE9uRGVtYW5kTW9kdWxlTWFnaWNDb21wb25lbnQgfSBmcm9tICcuLi91aS9sb2FkLW9uLWRlbWFuZC1tb2R1bGUgLm1hZ2ljLmNvbXBvbmVudCc7XG5cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBzdWJmb3JtcyBhbmQgcm91dGluZ1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ViZm9ybU1hZ2ljU2VydmljZSBpbXBsZW1lbnRzIElTdWJmb3JtTWFnaWNTZXJ2aWNle1xuXG4gIHN1YmZvcm1zRGljdCAvKjp7IFt4OiBzdHJpbmddOiBTdWJmb3JtRGVmaW5pdGlvbiB9Ki8gPSB7fTtcbiAgcm91dGVzRGljdDogeyBbeDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTsgLy8gZGljdGlvbmFyeSBvZiByb3V0ZXIgb3V0bGV0IHRvIHJvdXRlciBwYXRoXG4gIGN1cnJlbnRSb3V0ZURlZmluaXRpb246IFJvdXRlRGVmaW5pdGlvbiA9IG51bGw7XG5cbiAgc3RhdGljIGN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmOiBhbnkgPSBudWxsO1xuXG4gIHN0YXRpYyByb3V0ZXJDb250YWluZXJzOiBBcnJheTxSb3V0ZXJDb250YWluZXJNYWdpY0NvbXBvbmVudD4gPSBuZXcgQXJyYXkoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhc2s6IFRhc2tNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjb21wb25lbnRMaXN0OiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgcGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yOiBDb21tYW5kc0NvbGxlY3Rvck1hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgcm91dGVyQ29tbWFuZHNNYWdpY1NlcnZpY2U6IFJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gdGhlIHN1YmZvcm0gbmFtZVxuICAgKiBAcGFyYW0gc3ViZm9ybU5hbWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIG1nR2V0Q29tcChzdWJmb3JtTmFtZTogc3RyaW5nKTogQ29tcG9uZW50IHtcbiAgICBpZiAoc3ViZm9ybU5hbWUgaW4gdGhpcy5zdWJmb3Jtc0RpY3QpIHtcbiAgICAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLmZvcm1OYW1lO1xuICAgICAgaWYgKGZvcm1OYW1lKVxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChmb3JtTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHN1YmZvcm1cbiAgICogQHBhcmFtIHN1YmZvcm1OYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtZ0dldFBhcmFtZXRlcnMoc3ViZm9ybU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHN1YmZvcm1OYW1lIGluIHRoaXMuc3ViZm9ybXNEaWN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybU5hbWVdLnBhcmFtZXRlcnM7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGRlbGV0ZVN1YmZvcm1Db21wIChzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZykgIHtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3ViZm9ybXNEaWN0KS5pbmRleE9mKHN1YmZvcm1Db250cm9sTmFtZSkgPj0gMClcbiAgICAgIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0uZm9ybU5hbWUgPT09IGZvcm1OYW1lKSB7XG5cbiAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHt9O1xuICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFkZFN1YmZvcm1Db21wIChzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHRhc2tEZXNjcmlwdGlvbjogYW55LCByb3V0ZXJQYXRoOiBzdHJpbmcsIHBhcmFtczogTGlzdDxhbnk+LCBpbkRlZmF1bHRPdXRsZXQ6IGJvb2xlYW4pICB7XG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RhcnRDb2xsZWN0aW5nKCk7XG5cbiAgICBsZXQgcmVmcmVzaE5lZWRlZCA9IGZhbHNlO1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3V0ZXJQYXRoKSkgeyAvLyBjYWxsIGluIGRlc3RpbmF0aW9uIHN1YmZvcm1cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1zRGljdCkuaW5kZXhPZihzdWJmb3JtQ29udHJvbE5hbWUpID49IDApXG4gICAgICB7XG4gICAgICAgIGlmICh0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdLmZvcm1OYW1lID09PSBmb3JtTmFtZSkge1xuXG4gICAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHt9O1xuICAgICAgICAgIHRoaXMudGFzay5yZWZyZXNoVmlldygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7XG4gICAgICAgICAgZm9ybU5hbWUsXG4gICAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufVxuICAgICAgICB9O1xuICAgICAgLy90aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZWZyZXNoTmVlZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7IC8vIGNhbGwgcm91dGVcbiAgICAgIGlmIChpbkRlZmF1bHRPdXRsZXQpXG4gICAgICAgIHN1YmZvcm1Db250cm9sTmFtZSA9IFwicHJpbWFyeVwiO1xuXG4gICAgICBsZXQgcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG5ldyBMaXN0KCk7XG4gICAgICByb3V0ZVBhcmFtcy5wdXNoKHJvdXRlclBhdGgpO1xuICAgICAgaWYgKHBhcmFtcyAhPT0gbnVsbCkge1xuICAgICAgICByb3V0ZVBhcmFtcyA9IDxMaXN0PGFueT4+cm91dGVQYXJhbXMuY29uY2F0KHBhcmFtcyk7XG4gICAgICB9XG5cbiAgICAgIGxldCByb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZCA9IHtcbiAgICAgICAgY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogdGhpcyxcbiAgICAgICAgcm91dGVyT3V0bGV0TmFtZTogc3ViZm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBmb3JtTmFtZTogZm9ybU5hbWUsXG4gICAgICAgIHBhcmFtZXRlcnM6IHt0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbn0sXG4gICAgICAgIHJvdXRlUGFyYW1zOiByb3V0ZVBhcmFtc1xuICAgICAgfTtcblxuICAgICAgLy8gSWYgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiAhPT0gbnVsbCBtZWFucyB0aGF0IHJvdXRlci5uYXZpZ2F0ZSgpIGlzIGFscmVhZHlcbiAgICAgIC8vIGNhbGxlZCBvbmNlLCBidXQgYW5ndWxhciBoYXMgbm90IHlldCBleGVjdXRlZCBpdCAobmdPbkluaXQgb2YgdGhlIG5ldyBjb21wb25lbnQgaXMgbm90IGNhbGxlZCkuXG4gICAgICAvLyBJbiBzdWNoIGEgY2FzZSwgZG8gbm90IGV4ZWN1dGVkIHJvdXRlci5uYXZpZ2F0ZSgpIGFnYWluLiBCZWNhdXNlLCBhbmd1bGFyIGlnbm9yZXMgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIC8vIFNvLCBwdXQgYSBjb21tYW5kIGluIHRoZSBxdWV1ZSB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBmaXJzdCBvbmUgaXMgZXhlY3V0ZWQuXG4gICAgaWYgKFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPT09IG51bGwpXG4gICAgICAgIHRoaXMuRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkFkZFJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgIH1cbiAgICBpZiAoIHJlZnJlc2hOZWVkZWQpXG4gICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBzdWJmb3JtIHVzaW5nIGEgcm91dGUgY29tbWFuZFxuICAgKi9cbiAgRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZClcbiAge1xuICAgIGxldCByZXVzaW5nQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgICBsZXQgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSA8U3ViZm9ybU1hZ2ljU2VydmljZT5yb3V0ZUNvbW1hbmQuY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcbiAgICBsZXQgcmVsYXRpdmVSb3V0ZSA9ICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUoY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuYWN0aXZhdGVkUm91dGUpO1xuXG4gICAgaWYgKGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlc0RpY3Rbcm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWVdID09PSByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXNbMF0pXG4gICAge1xuICAgICAgLy8gSWYgdGhlIHNwZWNpZmllZCByb3V0ZXIgb3V0bGV0IGFscmVhZHkgaG9zdHMgdGhlIHNhbWUgcm91dGVyIHBhdGgsIHJvdXRlci5uYXZpZ2F0ZSgpIGRvZXNuJ3QgYWN0dWFsbHkgbmF2aWdhdGUuXG4gICAgICAvLyBTbywgZmlyc3QgY2xlYXIgdGhlIG91dGxldCAocGFzc2luZyBudWxsIHJvdXRlIHBhcmFtcywgY2xlYXJzIHRoZSBvdXRsZXQpIGFuZCB0aGVuIG5hdmlnYXRlIGFnYWluLlxuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge1tyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZV06IG51bGx9fV0sIHtyZWxhdGl2ZVRvOiByZWxhdGl2ZVJvdXRlfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDpib29sZWFuKSA9PiB7XG4gICAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBmb3JtTmFtZTogcm91dGVDb21tYW5kLmZvcm1OYW1lLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgZm9ybU5hbWU6IHJvdXRlQ29tbWFuZC5mb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgIH07XG5cbiAgICAgIGlmIChTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgcm91dGVDb250YWluZXIgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnNbMF07XG4gICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5zaGlmdCgpO1xuICAgICAgICByb3V0ZUNvbnRhaW5lci5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlck91dGxldE5hbWU6IHN0cmluZywgcm91dGVQYXJhbXM6IExpc3Q8YW55PilcbiAge1xuICAgIGxldCByZWxhdGl2ZVJvdXRlID0gIFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgW3JvdXRlck91dGxldE5hbWVdOiByb3V0ZVBhcmFtcyB9IH1dLCB7IHJlbGF0aXZlVG86IHJlbGF0aXZlUm91dGUgfSlcbiAgICAgIC50aGVuKChyZXN1bHQ6Ym9vbGVhbik9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhcmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgc3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gbnVsbDtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0b3BDb2xsZWN0aW5nKCk7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkV4ZWN1dGVOZXh0Q29tbWFuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbml0KClcbiAge1xuICAgIC8vIElmIGNvbW1hbmRzIHdlcmUgaXNzdWVkIGZvciB0aGlzIHRhc2sgYmVmb3JlIG5nT25Jbml0KCksIHRoZXkgd2VyZSBub3QgZXhlY3V0ZWQgYmVjYXVzZSB0YXNrIGhhZCBub3QgcmVnaXN0ZXJlZCBmb3IgdGhlbS5cbiAgICAvLyBTbywgZXhlY3V0ZSB0aGVtIG5vdy5cbiAgICBjb25zdCBwZW5kaW5nQ29tbWFuZHM6IEd1aUNvbW1hbmRbXSA9IHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLkdldENvbW1hbmRzKHRoaXMudGFzay50YXNrSWQpO1xuICAgIGlmIChwZW5kaW5nQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgcGVuZGluZ0NvbW1hbmRzLmZvckVhY2goY29tbWFuZCA9PiB7dGhpcy50YXNrLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpO30pO1xuICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RvcENvbGxlY3RpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWZyZXNoVmlldygpIHtcbiAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8vL1xuICAvLyByZXR1cm4gdGhlIHJlbGF0aXZlIHJvdXRlXG4gIC8vXG4gIHN0YXRpYyBnZXRSZWxhdGl2ZVJvdXRlKHNlbmRBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpe1xuICAgIGxldCBjdXJyZW50QWN0aXZlUm91dGUgPSBzZW5kQWN0aXZhdGVkUm91dGU7XG4gICAgaWYgKGN1cnJlbnRBY3RpdmVSb3V0ZS5jb21wb25lbnQgPT0gTG9hZE9uRGVtYW5kTW9kdWxlTWFnaWNDb21wb25lbnQpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVSb3V0ZSA9IGN1cnJlbnRBY3RpdmVSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50QWN0aXZlUm91dGU7XG4gIH1cbn1cbiJdfQ==
|
|
181
|
+
}], function () { return [{ type: i1.TaskMagicService }, { type: i2.ActivatedRoute }, { type: i3.ComponentListMagicService }, { type: i4.CommandsCollectorMagicService }, { type: i2.Router }, { type: i5.RouterCommandsMagicService }, { type: i3.ComponentListMagicService }, { type: i0.NgModuleFactoryLoader }, { type: i0.Injector }]; }, null); })();
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5tYWdpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvc2VydmljZXMvc3ViZm9ybS5tYWdpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxVQUFVLEVBQUUsUUFBUSxFQUFtQixxQkFBcUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBQyx5QkFBeUIsRUFBYSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkYsT0FBTyxFQUFnQiwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBU3JHLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFBb0IsSUFBc0IsRUFDcEIsY0FBOEIsRUFDOUIsYUFBd0MsRUFDeEMsd0JBQXVELEVBQ3ZELE1BQWMsRUFDZCwwQkFBc0QsRUFDeEQseUJBQW9ELEVBQ3BELE1BQTZCLEVBQzdCLFFBQWtCO1FBUmxCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUErQjtRQUN2RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN4RCw4QkFBeUIsR0FBekIseUJBQXlCLENB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YWJsZSwgSW5qZWN0b3IsIE5nTW9kdWxlRmFjdG9yeSwgTmdNb2R1bGVGYWN0b3J5TG9hZGVyLCBOZ01vZHVsZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcbmltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgR3VpQ29tbWFuZCB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcbmltcG9ydCB7Q29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSwgTW9kdWxlRGF0YX0gZnJvbSAnLi9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UgfSBmcm9tICcuL2NvbW1hbmRzLWNvbGxlY3Rvci5tYWdpYy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlRGVmaW5pdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc3ViLWZvcm0tZGVmaW5pdGlvbi5pdGVyZmFjZSc7XG5pbXBvcnQgeyBSb3V0ZUNvbW1hbmQsIFJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVyLWNvbW1hbmRzLm1hZ2ljLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVN1YmZvcm1NYWdpY1NlcnZpY2UgfSBmcm9tICcuL0lTdWJmb3JtTWFnaWNTZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckNvbnRhaW5lck1hZ2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvcm91dGVyLWNvbnRhaW5lci5tYWdpYy5jb21wb25lbnQnO1xuXG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgc3ViZm9ybXMgYW5kIHJvdXRpbmdcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN1YmZvcm1NYWdpY1NlcnZpY2UgaW1wbGVtZW50cyBJU3ViZm9ybU1hZ2ljU2VydmljZXtcblxuICBzdWJmb3Jtc0RpY3QgLyo6eyBbeDogc3RyaW5nXTogU3ViZm9ybURlZmluaXRpb24gfSovID0ge307XG4gIHJvdXRlc0RpY3Q6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9ID0ge307IC8vIGRpY3Rpb25hcnkgb2Ygcm91dGVyIG91dGxldCB0byByb3V0ZXIgcGF0aFxuICBjdXJyZW50Um91dGVEZWZpbml0aW9uOiBSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gIHN0YXRpYyBjdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogYW55ID0gbnVsbDtcblxuICBzdGF0aWMgcm91dGVyQ29udGFpbmVyczogQXJyYXk8Um91dGVyQ29udGFpbmVyTWFnaWNDb21wb25lbnQ+ID0gbmV3IEFycmF5KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29tcG9uZW50TGlzdDogQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHBlbmRpbmdDb21tYW5kc0NvbGxlY3RvcjogQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlOiBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlOiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGxvYWRlcjogTmdNb2R1bGVGYWN0b3J5TG9hZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZSBzdWJmb3JtIG5hbWVcbiAgICogQHBhcmFtIHN1YmZvcm1OYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBtZ0dldENvbXAoc3ViZm9ybU5hbWU6IHN0cmluZyk6IENvbXBvbmVudCB7XG4gICAgaWYgKHN1YmZvcm1OYW1lIGluIHRoaXMuc3ViZm9ybXNEaWN0KSB7XG4gICAgICBsZXQgZm9ybU5hbWU6IHN0cmluZyA9IHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1OYW1lXS5mb3JtTmFtZTtcbiAgICAgIGlmIChmb3JtTmFtZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50TGlzdC5nZXRDb21wb25lbnQoZm9ybU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzdWJmb3JtXG4gICAqIEBwYXJhbSBzdWJmb3JtTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbWdHZXRQYXJhbWV0ZXJzKHN1YmZvcm1OYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChzdWJmb3JtTmFtZSBpbiB0aGlzLnN1YmZvcm1zRGljdCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1OYW1lXS5wYXJhbWV0ZXJzO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkZWxldGVTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcpICB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1zRGljdCkuaW5kZXhPZihzdWJmb3JtQ29udHJvbE5hbWUpID49IDApXG4gICAgICB7XG4gICAgICAgIGlmICh0aGlzLnN1YmZvcm1zRGljdFtzdWJmb3JtQ29udHJvbE5hbWVdLmZvcm1OYW1lID09PSBmb3JtTmFtZSkge1xuXG4gICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhZGRTdWJmb3JtQ29tcCAoc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB0YXNrRGVzY3JpcHRpb246IGFueSwgcm91dGVyUGF0aDogc3RyaW5nLCBwYXJhbXM6IExpc3Q8YW55PiwgaW5EZWZhdWx0T3V0bGV0OiBib29sZWFuKSAge1xuICAgIHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0YXJ0Q29sbGVjdGluZygpO1xuXG4gICAgbGV0IHJlZnJlc2hOZWVkZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm91dGVyUGF0aCkpIHsgLy8gY2FsbCBpbiBkZXN0aW5hdGlvbiBzdWJmb3JtXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdWJmb3Jtc0RpY3QpLmluZGV4T2Yoc3ViZm9ybUNvbnRyb2xOYW1lKSA+PSAwKVxuICAgICAge1xuICAgICAgICBpZiAodGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXS5mb3JtTmFtZSA9PT0gZm9ybU5hbWUpIHtcblxuICAgICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7fTtcbiAgICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIHRoZSBsYXp5IGxvYWQgbW9kdWxlLCBpZiBuZWVkZWRcbiAgICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4gPSB0aGlzLmNvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UuZ2V0TW9kdWxlUmVmKGZvcm1OYW1lKTtcblxuICAgICAgaWYgKG1vZHVsZVJlZiA9PSBudWxsKSB7XG4gICAgICAgIGxldCBsYXp5TG9hZE1vZHVsZTogTW9kdWxlRGF0YSA9IHRoaXMuY29tcG9uZW50TGlzdE1hZ2ljU2VydmljZS5nZXRMYXp5TG9hZE1vZHVsZURhdGEoZm9ybU5hbWUpO1xuXG4gICAgICAgIGlmIChsYXp5TG9hZE1vZHVsZSAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5sb2FkZXJcbiAgICAgICAgICAgIC5sb2FkKGxhenlMb2FkTW9kdWxlLm1vZHVsZVBhdGggKyBcIiNcIiArIGxhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWUpXG4gICAgICAgICAgICAudGhlbigobW9kdWxlRmFjdG9yeTogTmdNb2R1bGVGYWN0b3J5PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgbW9kdWxlUmVmID0gbW9kdWxlRmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgICAgICAgIHRoaXMuc3ViZm9ybXNEaWN0W3N1YmZvcm1Db250cm9sTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge3Rhc2tJZFBhcmFtOiB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbjogdGFza0Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWJmb3Jtc0RpY3Rbc3ViZm9ybUNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICBmb3JtTmFtZSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7dGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb259XG4gICAgICAgIH07XG4gICAgICAgIC8vdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZWZyZXNoTmVlZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7IC8vIGNhbGwgcm91dGVcbiAgICAgIGlmIChpbkRlZmF1bHRPdXRsZXQpXG4gICAgICAgIHN1YmZvcm1Db250cm9sTmFtZSA9IFwicHJpbWFyeVwiO1xuXG4gICAgICBsZXQgcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG5ldyBMaXN0KCk7XG4gICAgICByb3V0ZVBhcmFtcy5wdXNoKHJvdXRlclBhdGgpO1xuICAgICAgaWYgKHBhcmFtcyAhPT0gbnVsbCkge1xuICAgICAgICByb3V0ZVBhcmFtcyA9IDxMaXN0PGFueT4+cm91dGVQYXJhbXMuY29uY2F0KHBhcmFtcyk7XG4gICAgICB9XG5cbiAgICAgIGxldCByb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZCA9IHtcbiAgICAgICAgY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjogdGhpcyxcbiAgICAgICAgcm91dGVyT3V0bGV0TmFtZTogc3ViZm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICBmb3JtTmFtZTogZm9ybU5hbWUsXG4gICAgICAgIHBhcmFtZXRlcnM6IHt0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbn0sXG4gICAgICAgIHJvdXRlUGFyYW1zOiByb3V0ZVBhcmFtc1xuICAgICAgfTtcblxuICAgICAgLy8gSWYgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiAhPT0gbnVsbCBtZWFucyB0aGF0IHJvdXRlci5uYXZpZ2F0ZSgpIGlzIGFscmVhZHlcbiAgICAgIC8vIGNhbGxlZCBvbmNlLCBidXQgYW5ndWxhciBoYXMgbm90IHlldCBleGVjdXRlZCBpdCAobmdPbkluaXQgb2YgdGhlIG5ldyBjb21wb25lbnQgaXMgbm90IGNhbGxlZCkuXG4gICAgICAvLyBJbiBzdWNoIGEgY2FzZSwgZG8gbm90IGV4ZWN1dGVkIHJvdXRlci5uYXZpZ2F0ZSgpIGFnYWluLiBCZWNhdXNlLCBhbmd1bGFyIGlnbm9yZXMgdGhlIHByZXZpb3VzIG9uZS5cbiAgICAgIC8vIFNvLCBwdXQgYSBjb21tYW5kIGluIHRoZSBxdWV1ZSB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBmaXJzdCBvbmUgaXMgZXhlY3V0ZWQuXG4gICAgaWYgKFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWYgPT09IG51bGwpXG4gICAgICAgIHRoaXMuRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkFkZFJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQpO1xuICAgIH1cbiAgICBpZiAoIHJlZnJlc2hOZWVkZWQpXG4gICAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBzdWJmb3JtIHVzaW5nIGEgcm91dGUgY29tbWFuZFxuICAgKi9cbiAgRXhlY3V0ZVJvdXRlQ29tbWFuZChyb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZClcbiAge1xuICAgIGxldCByZXVzaW5nQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgICBsZXQgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2U6IFN1YmZvcm1NYWdpY1NlcnZpY2UgPSA8U3ViZm9ybU1hZ2ljU2VydmljZT5yb3V0ZUNvbW1hbmQuY2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZjtcbiAgICBsZXQgcmVsYXRpdmVSb3V0ZSA9ICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmdldFJlbGF0aXZlUm91dGUoY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuYWN0aXZhdGVkUm91dGUpO1xuXG4gICAgaWYgKGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlc0RpY3Rbcm91dGVDb21tYW5kLnJvdXRlck91dGxldE5hbWVdID09PSByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXNbMF0pXG4gICAge1xuICAgICAgLy8gSWYgdGhlIHNwZWNpZmllZCByb3V0ZXIgb3V0bGV0IGFscmVhZHkgaG9zdHMgdGhlIHNhbWUgcm91dGVyIHBhdGgsIHJvdXRlci5uYXZpZ2F0ZSgpIGRvZXNuJ3QgYWN0dWFsbHkgbmF2aWdhdGUuXG4gICAgICAvLyBTbywgZmlyc3QgY2xlYXIgdGhlIG91dGxldCAocGFzc2luZyBudWxsIHJvdXRlIHBhcmFtcywgY2xlYXJzIHRoZSBvdXRsZXQpIGFuZCB0aGVuIG5hdmlnYXRlIGFnYWluLlxuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge1tyb3V0ZUNvbW1hbmQucm91dGVyT3V0bGV0TmFtZV06IG51bGx9fV0sIHtyZWxhdGl2ZVRvOiByZWxhdGl2ZVJvdXRlfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDpib29sZWFuKSA9PiB7XG4gICAgICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgICAgIGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSB7XG4gICAgICAgICAgICBmb3JtTmFtZTogcm91dGVDb21tYW5kLmZvcm1OYW1lLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgU3ViZm9ybU1hZ2ljU2VydmljZS5jdXJyZW50Q2FsbGVyTWdTdWJmb3JtU2VydmljZVJlZiA9IGN1cnJlbnRTdWJmb3JtTWFnaWNTZXJ2aWNlO1xuICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgZm9ybU5hbWU6IHJvdXRlQ29tbWFuZC5mb3JtTmFtZSxcbiAgICAgICAgcGFyYW1ldGVyczogcm91dGVDb21tYW5kLnBhcmFtZXRlcnNcbiAgICAgIH07XG5cbiAgICAgIGlmIChTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgcm91dGVDb250YWluZXIgPSBTdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbnRhaW5lcnNbMF07XG4gICAgICAgIFN1YmZvcm1NYWdpY1NlcnZpY2Uucm91dGVyQ29udGFpbmVycy5zaGlmdCgpO1xuICAgICAgICByb3V0ZUNvbnRhaW5lci5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY3VycmVudFN1YmZvcm1NYWdpY1NlcnZpY2UuUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlQ29tbWFuZC5yb3V0ZXJPdXRsZXROYW1lLCByb3V0ZUNvbW1hbmQucm91dGVQYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgUGVyZm9ybVJvdXRlck5hdmlnYXRlKHJvdXRlck91dGxldE5hbWU6IHN0cmluZywgcm91dGVQYXJhbXM6IExpc3Q8YW55PilcbiAge1xuICAgIGxldCByZWxhdGl2ZVJvdXRlID0gIFN1YmZvcm1NYWdpY1NlcnZpY2UuZ2V0UmVsYXRpdmVSb3V0ZSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgW3JvdXRlck91dGxldE5hbWVdOiByb3V0ZVBhcmFtcyB9IH1dLCB7IHJlbGF0aXZlVG86IHJlbGF0aXZlUm91dGUgfSlcbiAgICAgIC50aGVuKChyZXN1bHQ6Ym9vbGVhbik9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiAhcmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgc3ViZm9ybU1hZ2ljU2VydmljZTogU3ViZm9ybU1hZ2ljU2VydmljZSA9IFN1YmZvcm1NYWdpY1NlcnZpY2UuY3VycmVudENhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRSb3V0ZURlZmluaXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICBTdWJmb3JtTWFnaWNTZXJ2aWNlLmN1cnJlbnRDYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmID0gbnVsbDtcbiAgICAgICAgICAgIHN1YmZvcm1NYWdpY1NlcnZpY2UucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLnN0b3BDb2xsZWN0aW5nKCk7XG4gICAgICAgICAgICBzdWJmb3JtTWFnaWNTZXJ2aWNlLnJvdXRlckNvbW1hbmRzTWFnaWNTZXJ2aWNlLkV4ZWN1dGVOZXh0Q29tbWFuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbml0KClcbiAge1xuICAgIC8vIElmIGNvbW1hbmRzIHdlcmUgaXNzdWVkIGZvciB0aGlzIHRhc2sgYmVmb3JlIG5nT25Jbml0KCksIHRoZXkgd2VyZSBub3QgZXhlY3V0ZWQgYmVjYXVzZSB0YXNrIGhhZCBub3QgcmVnaXN0ZXJlZCBmb3IgdGhlbS5cbiAgICAvLyBTbywgZXhlY3V0ZSB0aGVtIG5vdy5cbiAgICBjb25zdCBwZW5kaW5nQ29tbWFuZHM6IEd1aUNvbW1hbmRbXSA9IHRoaXMucGVuZGluZ0NvbW1hbmRzQ29sbGVjdG9yLkdldENvbW1hbmRzKHRoaXMudGFzay50YXNrSWQpO1xuICAgIGlmIChwZW5kaW5nQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgcGVuZGluZ0NvbW1hbmRzLmZvckVhY2goY29tbWFuZCA9PiB7dGhpcy50YXNrLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpO30pO1xuICAgICAgdGhpcy50YXNrLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RvcENvbGxlY3RpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWZyZXNoVmlldygpIHtcbiAgICB0aGlzLnRhc2sucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIC8vL1xuICAvLyByZXR1cm4gdGhlIHJlbGF0aXZlIHJvdXRlXG4gIC8vXG4gIHN0YXRpYyBnZXRSZWxhdGl2ZVJvdXRlKHNlbmRBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpe1xuICAgIGxldCBjdXJyZW50QWN0aXZlUm91dGUgPSBzZW5kQWN0aXZhdGVkUm91dGU7XG4gICAgaWYgKGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZyAhPT0gbnVsbCAmJiBjdXJyZW50QWN0aXZlUm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aCA9PT0gJycpIHtcbiAgICAgIGN1cnJlbnRBY3RpdmVSb3V0ZSA9IGN1cnJlbnRBY3RpdmVSb3V0ZS5wYXJlbnQ7XG4gICAgICBpZiAoIWN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZ2V0UmVsYXRpdmVSb3V0ZSgpOiBib3RoIHBhdGggYW5kIGN1cnJlbnRBY3RpdmVSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4gYXJlIGVtcHR5LlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRBY3RpdmVSb3V0ZTtcbiAgfVxufVxuIl19
|
|
@@ -4,64 +4,31 @@ import { ComponentListMagicService } from "./component-list.magic.service";
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./component-list.magic.service";
|
|
6
6
|
import * as i2 from "./task.magics.service";
|
|
7
|
-
/**
|
|
8
|
-
* Implements various table-related functionalities
|
|
9
|
-
*/
|
|
10
7
|
export class TableMagicService {
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @param componentList Component-mapping service
|
|
14
|
-
* @param task Magic task service
|
|
15
|
-
*/
|
|
16
8
|
constructor(componentList, task) {
|
|
17
9
|
this.componentList = componentList;
|
|
18
10
|
this.task = task;
|
|
19
11
|
this.shouldOpenFieldTextEditor = true;
|
|
20
12
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Refreshes the DataSource
|
|
23
|
-
*/
|
|
24
13
|
refreshDataSource() {
|
|
25
14
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the table page size
|
|
28
|
-
*/
|
|
29
15
|
getPageSize() {
|
|
30
16
|
return 10;
|
|
31
17
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Returns max no of rows in the table.
|
|
34
|
-
*/
|
|
35
18
|
getMaxRowsInTable() {
|
|
36
19
|
return this.task.Records.list.length;
|
|
37
20
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Selects the specified row
|
|
40
|
-
* @param rowId The row to select
|
|
41
|
-
*/
|
|
42
21
|
selectRow(rowId) {
|
|
43
22
|
this.selectedItem = rowId;
|
|
44
23
|
}
|
|
45
24
|
getSelectedRow() {
|
|
46
25
|
return this.selectedItem;
|
|
47
26
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Returns the selected row
|
|
50
|
-
*/
|
|
51
27
|
selectedRow() {
|
|
52
28
|
return null;
|
|
53
29
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Selects the specified page
|
|
56
|
-
* @param pageId The page to select
|
|
57
|
-
*/
|
|
58
30
|
selectPage(pageId) {
|
|
59
31
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Returns whether a dialog should be opened for the HTML element
|
|
62
|
-
* @param element The HTML element for which a dialog may be needed
|
|
63
|
-
* @returns
|
|
64
|
-
*/
|
|
65
32
|
OpenDialogForControl(element) {
|
|
66
33
|
if (element.tagName === "MAT-SELECT" || element.tagName === "MAT-CHECKBOX" ||
|
|
67
34
|
element.tagName === "INPUT" ||
|
|
@@ -69,34 +36,17 @@ export class TableMagicService {
|
|
|
69
36
|
return false;
|
|
70
37
|
return true;
|
|
71
38
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Returns the dialog used to edit values
|
|
74
|
-
*/
|
|
75
39
|
getDialog() {
|
|
76
40
|
return null;
|
|
77
41
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Handles the table "scrolled" event
|
|
80
|
-
*/
|
|
81
42
|
onScrollDown() {
|
|
82
43
|
this.task.onScrollDown();
|
|
83
44
|
}
|
|
84
|
-
/**
|
|
85
|
-
* To be overwitten in specific implelemtations
|
|
86
|
-
*/
|
|
87
45
|
sortData(e) { }
|
|
88
|
-
/**
|
|
89
|
-
* To be overwitten in specific implelemtations
|
|
90
|
-
*/
|
|
91
46
|
mgOnPaginateChange(e) { }
|
|
92
47
|
mgOptionChanged(e) { }
|
|
93
|
-
/**
|
|
94
|
-
* Change the number of lines in a table
|
|
95
|
-
* @param size New number of lines in table
|
|
96
|
-
*/
|
|
97
48
|
updateTableSize(size) {
|
|
98
|
-
if (size === 0)
|
|
99
|
-
{
|
|
49
|
+
if (size === 0) {
|
|
100
50
|
size = 1;
|
|
101
51
|
this.task.Records.clearFirstTableRecord(this.task.template);
|
|
102
52
|
}
|
|
@@ -104,17 +54,11 @@ export class TableMagicService {
|
|
|
104
54
|
this.task.Records.updateSize(size);
|
|
105
55
|
this.task.setIncludesFirst(false);
|
|
106
56
|
}
|
|
107
|
-
/**
|
|
108
|
-
* @ignore
|
|
109
|
-
*/
|
|
110
57
|
setTableTopIndex(value) {
|
|
111
58
|
if (!this.task.Records.includesFirst)
|
|
112
59
|
value++;
|
|
113
60
|
this.task.Records.setGuiTopIndex(value);
|
|
114
61
|
}
|
|
115
|
-
/**
|
|
116
|
-
* @ignore
|
|
117
|
-
*/
|
|
118
62
|
getTableTopIndex() {
|
|
119
63
|
let topIndex = this.task.Records.getGuiTopIndex();
|
|
120
64
|
if (!this.task.Records.includesFirst)
|
|
@@ -122,9 +66,9 @@ export class TableMagicService {
|
|
|
122
66
|
return topIndex;
|
|
123
67
|
}
|
|
124
68
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
69
|
+
TableMagicService.ɵfac = function TableMagicService_Factory(t) { return new (t || TableMagicService)(i0.ɵɵinject(i1.ComponentListMagicService), i0.ɵɵinject(i2.TaskMagicService)); };
|
|
70
|
+
TableMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: TableMagicService, factory: TableMagicService.ɵfac });
|
|
71
|
+
(function () { i0.ɵsetClassMetadata(TableMagicService, [{
|
|
128
72
|
type: Injectable
|
|
129
73
|
}], function () { return [{ type: i1.ComponentListMagicService }, { type: i2.TaskMagicService }]; }, null); })();
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL3RhYmxlLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQU0zRSxNQUFNLE9BQU8saUJBQWlCO0lBUzVCLFlBQXdCLGFBQXdDLEVBQVksSUFBc0I7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBQVksU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFHMUYsOEJBQXlCLEdBQVksSUFBSSxDQUFDO0lBRmpELENBQUM7SUFPRixpQkFBaUI7SUFDakIsQ0FBQztJQUtELFdBQVc7UUFDVCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFLRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQU1ELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFLRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsVUFBVSxDQUFDLE1BQWM7SUFDekIsQ0FBQztJQU9ELG9CQUFvQixDQUFDLE9BQW9CO1FBRXZDLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxjQUFjO1lBQ3RFLE9BQU8sQ0FBQyxPQUFPLEtBQUssT0FBTztZQUMzQixPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUtELFFBQVEsQ0FBQyxDQUFDLElBQUUsQ0FBQztJQUtiLGtCQUFrQixDQUFDLENBQUMsSUFBRSxDQUFDO0lBRXZCLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQU10QixlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQ2Q7WUFDRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUtELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDbEMsS0FBSyxFQUFFLENBQUM7UUFFVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUtELGdCQUFnQjtRQUVkLElBQUksUUFBUSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ2xDLFFBQVEsRUFBRSxDQUFDO1FBRWIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7a0ZBeklVLGlCQUFpQjt5REFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQjtvQ0FBakIsaUJBQWlCO2NBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSBcIi4vdGFzay5tYWdpY3Muc2VydmljZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSB9IGZyb20gXCIuL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIHZhcmlvdXMgdGFibGUtcmVsYXRlZCBmdW5jdGlvbmFsaXRpZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlTWFnaWNTZXJ2aWNlIHtcblxuICBzZWxlY3RlZEl0ZW0gOiBhbnk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnRMaXN0IENvbXBvbmVudC1tYXBwaW5nIHNlcnZpY2VcbiAgICogQHBhcmFtIHRhc2sgTWFnaWMgdGFzayBzZXJ2aWNlXG4gICAqL1xuICBjb25zdHJ1Y3RvciggIHByb3RlY3RlZCBjb21wb25lbnRMaXN0OiBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLCBwcm90ZWN0ZWQgdGFzazogVGFza01hZ2ljU2VydmljZSkge1xuICAgfVxuXG4gICBwdWJsaWMgc2hvdWxkT3BlbkZpZWxkVGV4dEVkaXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgRGF0YVNvdXJjZVxuICAgKi9cbiAgcmVmcmVzaERhdGFTb3VyY2UoKTogdm9pZCB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFibGUgcGFnZSBzaXplXG4gICAqL1xuICBnZXRQYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAxMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG1heCBubyBvZiByb3dzIGluIHRoZSB0YWJsZS5cbiAgICovXG4gIGdldE1heFJvd3NJblRhYmxlKCk6IG51bWJlcntcbiAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMubGlzdC5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgc3BlY2lmaWVkIHJvd1xuICAgKiBAcGFyYW0gcm93SWQgVGhlIHJvdyB0byBzZWxlY3RcbiAgICovXG4gIHNlbGVjdFJvdyhyb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSByb3dJZDtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUm93KCkgOiBhbnl7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIHJvd1xuICAgKi9cbiAgc2VsZWN0ZWRSb3coKTogYW55IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgcGFnZVxuICAgKiBAcGFyYW0gIHBhZ2VJZCBUaGUgcGFnZSB0byBzZWxlY3RcbiAgICovXG4gIHNlbGVjdFBhZ2UocGFnZUlkOiBudW1iZXIpOiB2b2lkIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBkaWFsb2cgc2hvdWxkIGJlIG9wZW5lZCBmb3IgdGhlIEhUTUwgZWxlbWVudFxuICAgKiBAcGFyYW0gIGVsZW1lbnQgVGhlIEhUTUwgZWxlbWVudCBmb3Igd2hpY2ggYSBkaWFsb2cgbWF5IGJlIG5lZWRlZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgT3BlbkRpYWxvZ0ZvckNvbnRyb2woZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuXG4gIHtcbiAgICBpZiAoZWxlbWVudC50YWdOYW1lID09PSBcIk1BVC1TRUxFQ1RcIiB8fCBlbGVtZW50LnRhZ05hbWUgPT09IFwiTUFULUNIRUNLQk9YXCIgfHxcbiAgICAgICAgZWxlbWVudC50YWdOYW1lID09PSBcIklOUFVUXCIgfHxcbiAgICAgICAgZWxlbWVudC50YWdOYW1lID09PSBcIlNFTEVDVFwiKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpYWxvZyB1c2VkIHRvIGVkaXQgdmFsdWVzXG4gICAqL1xuICBnZXREaWFsb2coKTogYW55ICB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdGFibGUgXCJzY3JvbGxlZFwiIGV2ZW50XG4gICAqL1xuICBvblNjcm9sbERvd24oKSB7XG4gICAgdGhpcy50YXNrLm9uU2Nyb2xsRG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIGJlIG92ZXJ3aXR0ZW4gaW4gc3BlY2lmaWMgaW1wbGVsZW10YXRpb25zXG4gICAqL1xuICBzb3J0RGF0YShlKXt9XG5cbiAgLyoqXG4gICAqIFRvIGJlIG92ZXJ3aXR0ZW4gaW4gc3BlY2lmaWMgaW1wbGVsZW10YXRpb25zXG4gICAqL1xuICBtZ09uUGFnaW5hdGVDaGFuZ2UoZSl7fVxuXG4gIG1nT3B0aW9uQ2hhbmdlZChlKSB7IH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBudW1iZXIgb2YgbGluZXMgaW4gYSB0YWJsZVxuICAgKiBAcGFyYW0gIHNpemUgTmV3IG51bWJlciBvZiBsaW5lcyBpbiB0YWJsZVxuICAgKi9cbiAgdXBkYXRlVGFibGVTaXplKHNpemU6IG51bWJlcikge1xuICAgIGlmIChzaXplID09PSAwKSAvLyBuZXZlciByZW1vdmUgcm93IDAgZm9yIG5vd1xuICAgIHtcbiAgICAgIHNpemUgPSAxO1xuICAgICAgdGhpcy50YXNrLlJlY29yZHMuY2xlYXJGaXJzdFRhYmxlUmVjb3JkKHRoaXMudGFzay50ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy50YXNrLmZvcm1Hcm91cHMubGVuZ3RoID0gc2l6ZTtcbiAgICB0aGlzLnRhc2suUmVjb3Jkcy51cGRhdGVTaXplKHNpemUpO1xuICAgIHRoaXMudGFzay5zZXRJbmNsdWRlc0ZpcnN0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXRUYWJsZVRvcEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMudGFzay5SZWNvcmRzLmluY2x1ZGVzRmlyc3QpXG4gICAgICB2YWx1ZSsrO1xuXG4gICAgdGhpcy50YXNrLlJlY29yZHMuc2V0R3VpVG9wSW5kZXgodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldFRhYmxlVG9wSW5kZXgoKTpudW1iZXJcbiAge1xuICAgIGxldCB0b3BJbmRleDogbnVtYmVyID0gdGhpcy50YXNrLlJlY29yZHMuZ2V0R3VpVG9wSW5kZXgoKTtcblxuICAgIGlmICghdGhpcy50YXNrLlJlY29yZHMuaW5jbHVkZXNGaXJzdClcbiAgICAgIHRvcEluZGV4LS07XG5cbiAgICByZXR1cm4gdG9wSW5kZXg7XG4gIH1cbn1cblxuIl19
|