angular-three 1.9.14 → 1.9.16
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/README.md +2 -0
- package/esm2020/lib/canvas.mjs +3 -3
- package/esm2020/lib/directives/args.mjs +3 -3
- package/esm2020/lib/directives/common.mjs +3 -3
- package/esm2020/lib/directives/parent.mjs +3 -3
- package/esm2020/lib/directives/repeat.mjs +3 -3
- package/esm2020/lib/pipes/push.mjs +3 -3
- package/esm2020/lib/portal.mjs +9 -9
- package/esm2020/lib/renderer/renderer.mjs +25 -21
- package/esm2020/lib/routed-scene.mjs +3 -3
- package/esm2020/lib/stores/rx-store.mjs +3 -3
- package/esm2020/lib/stores/store.mjs +5 -5
- package/fesm2015/angular-three.mjs +64 -57
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +61 -57
- package/fesm2020/angular-three.mjs.map +1 -1
- package/package.json +4 -4
- package/plugin/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Angular Renderer for THREE.js
|
|
2
2
|
|
|
3
|
+
[](https://webuild.community)
|
|
4
|
+
|
|
3
5
|
Leverage your [Angular](https://angular.io) to build 3D applications with [THREE.js](https://threejs.org)
|
|
4
6
|
|
|
5
7
|
## Installation
|
package/esm2020/lib/canvas.mjs
CHANGED
|
@@ -175,13 +175,13 @@ export class NgtCanvas extends NgtRxStore {
|
|
|
175
175
|
safeDetectChanges(this.cdr);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
179
|
-
NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
178
|
+
NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
179
|
+
NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hbClass", "style.pointerEvents": "this.hbPointerEvents" } }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
180
180
|
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
181
181
|
<canvas #glCanvas style="display: block;"></canvas>
|
|
182
182
|
</div>
|
|
183
183
|
`, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }] });
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCanvas, decorators: [{
|
|
185
185
|
type: Component,
|
|
186
186
|
args: [{ selector: 'ngt-canvas', standalone: true, template: `
|
|
187
187
|
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
@@ -24,9 +24,9 @@ export class NgtArgs extends NgtCommonDirective {
|
|
|
24
24
|
return !this.injected && !!this.injectedArgs.length;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
28
|
-
NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
27
|
+
NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtArgs, decorators: [{
|
|
30
30
|
type: Directive,
|
|
31
31
|
args: [{ selector: '[args]', standalone: true }]
|
|
32
32
|
}], propDecorators: { args: [{
|
|
@@ -23,9 +23,9 @@ export class NgtCommonDirective {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
NgtCommonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
27
|
-
NgtCommonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
26
|
+
NgtCommonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
+
NgtCommonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtCommonDirective, ngImport: i0 });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCommonDirective, decorators: [{
|
|
29
29
|
type: Directive
|
|
30
30
|
}], ctorParameters: function () { return []; } });
|
|
31
31
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHakUsTUFBTSxPQUFnQixrQkFBa0I7SUFRcEM7UUFQbUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ25ELElBQUksV0FBVyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7WUFDN0MsV0FBVyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUlTLFVBQVU7UUFDaEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7OytHQTFCaUIsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4uL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RDb21tb25EaXJlY3RpdmUge1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAgIHByb3RlY3RlZCBpbmplY3RlZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRDcmVhdGVWaWV3ID0gdHJ1ZTtcbiAgICBwcml2YXRlIHZpZXc/OiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgY29tbWVudE5vZGUgPSB0aGlzLnZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKSB7XG4gICAgICAgICAgICBjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKCk7XG4gICAgICAgICAgICBkZWxldGUgY29tbWVudE5vZGVbJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFic3RyYWN0IHZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ3JlYXRlVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlldyAmJiAhdGhpcy52aWV3LmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLnZpZXcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -24,9 +24,9 @@ export class NgtParent extends NgtCommonDirective {
|
|
|
24
24
|
return !this.injected && !!this.injectedParent;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
NgtParent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
28
|
-
NgtParent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
27
|
+
NgtParent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
NgtParent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtParent, decorators: [{
|
|
30
30
|
type: Directive,
|
|
31
31
|
args: [{ selector: '[parent]', standalone: true }]
|
|
32
32
|
}], propDecorators: { parent: [{
|
|
@@ -6,9 +6,9 @@ export class NgtRepeat extends NgForOf {
|
|
|
6
6
|
this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
10
|
-
NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
9
|
+
NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRepeat, decorators: [{
|
|
12
12
|
type: Directive,
|
|
13
13
|
args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
|
|
14
14
|
}], propDecorators: { ngForRepeat: [{
|
|
@@ -40,9 +40,9 @@ export class NgtPush {
|
|
|
40
40
|
this.obj = undefined;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
NgtPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
44
|
-
NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
43
|
+
NgtPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
44
|
+
NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, decorators: [{
|
|
46
46
|
type: Pipe,
|
|
47
47
|
args: [{ name: 'ngtPush', pure: false, standalone: true }]
|
|
48
48
|
}] });
|
package/esm2020/lib/portal.mjs
CHANGED
|
@@ -52,9 +52,9 @@ export class NgtPortalBeforeRender {
|
|
|
52
52
|
this.subscription?.();
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
NgtPortalBeforeRender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
56
|
-
NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
55
|
+
NgtPortalBeforeRender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
56
|
+
NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
|
|
58
58
|
type: Directive,
|
|
59
59
|
args: [{ selector: '[ngtPortalBeforeRender]', standalone: true }]
|
|
60
60
|
}], propDecorators: { renderPriority: [{
|
|
@@ -75,9 +75,9 @@ export class NgtPortalContent {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
NgtPortalContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
79
|
-
NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
78
|
+
NgtPortalContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
79
|
+
NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalContent, decorators: [{
|
|
81
81
|
type: Directive,
|
|
82
82
|
args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
|
|
83
83
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
|
|
@@ -184,8 +184,8 @@ export class NgtPortal extends NgtRxStore {
|
|
|
184
184
|
};
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
NgtPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
188
|
-
NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
187
|
+
NgtPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortal, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
189
189
|
<ng-container #portalContentAnchor>
|
|
190
190
|
<ng-container
|
|
191
191
|
*ngIf="autoRender && portalContentRendered"
|
|
@@ -197,7 +197,7 @@ NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
|
|
|
197
197
|
/>
|
|
198
198
|
</ng-container>
|
|
199
199
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] });
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortal, decorators: [{
|
|
201
201
|
type: Component,
|
|
202
202
|
args: [{
|
|
203
203
|
selector: 'ngt-portal',
|
|
@@ -42,9 +42,9 @@ export class NgtRendererFactory {
|
|
|
42
42
|
return renderer;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
NgtRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
46
|
-
NgtRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
45
|
+
NgtRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
NgtRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRendererFactory });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRendererFactory, decorators: [{
|
|
48
48
|
type: Injectable
|
|
49
49
|
}] });
|
|
50
50
|
/**
|
|
@@ -122,6 +122,7 @@ export class NgtRenderer {
|
|
|
122
122
|
const instance = prepare(new threeTarget(...injectedArgs), { store, args: injectedArgs });
|
|
123
123
|
const node = this.store.createNode('three', instance);
|
|
124
124
|
const localState = getLocalState(instance);
|
|
125
|
+
// auto-attach for geometry and material
|
|
125
126
|
if (is.geometry(instance)) {
|
|
126
127
|
localState.attach = ['geometry'];
|
|
127
128
|
}
|
|
@@ -225,6 +226,7 @@ export class NgtRenderer {
|
|
|
225
226
|
// if child is three but haven't been attached to a parent yet
|
|
226
227
|
(cRS[0 /* NgtRendererClassId.type */] === 'three' && !getLocalState(newChild).parent) ||
|
|
227
228
|
// or both parent and child are DOM elements
|
|
229
|
+
// or they are compound AND haven't had a THREE instance yet
|
|
228
230
|
((pRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
229
231
|
(pRS[0 /* NgtRendererClassId.type */] === 'compound' && !pRS[7 /* NgtRendererClassId.compounded */])) &&
|
|
230
232
|
(cRS[0 /* NgtRendererClassId.type */] === 'dom' ||
|
|
@@ -298,10 +300,7 @@ export class NgtRenderer {
|
|
|
298
300
|
}
|
|
299
301
|
if (rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */]) {
|
|
300
302
|
Object.assign(rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */], {
|
|
301
|
-
props: {
|
|
302
|
-
...rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */],
|
|
303
|
-
[name]: value,
|
|
304
|
-
},
|
|
303
|
+
props: Object.assign(rS[7 /* NgtRendererClassId.compounded */].__ngt_renderer__[5 /* NgtRendererClassId.compound */], { [name]: value }),
|
|
305
304
|
});
|
|
306
305
|
}
|
|
307
306
|
this.setProperty(rS[7 /* NgtRendererClassId.compounded */], name, value);
|
|
@@ -313,13 +312,30 @@ export class NgtRenderer {
|
|
|
313
312
|
listen(target, eventName, callback) {
|
|
314
313
|
const rS = target.__ngt_renderer__;
|
|
315
314
|
const targetCdr = rS?.[14 /* NgtRendererClassId.injectorFactory */]?.().get(ChangeDetectorRef, null);
|
|
316
|
-
|
|
315
|
+
if (rS[0 /* NgtRendererClassId.type */] === 'three' ||
|
|
316
|
+
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[7 /* NgtRendererClassId.compounded */])) {
|
|
317
|
+
const instance = rS[7 /* NgtRendererClassId.compounded */] || target;
|
|
318
|
+
const priority = getLocalState(target).priority;
|
|
319
|
+
return processThreeEvent(instance, priority || 0, eventName, callback, this.store.rootCdr, targetCdr);
|
|
320
|
+
}
|
|
321
|
+
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[7 /* NgtRendererClassId.compounded */]) {
|
|
322
|
+
this.store.queueOperation(target, [
|
|
323
|
+
'op',
|
|
324
|
+
() => this.store.queueOperation(target, ['cleanUp', this.listen(target, eventName, callback)]),
|
|
325
|
+
]);
|
|
326
|
+
}
|
|
327
|
+
// setup a new callback with CDR so that it will trigger change detection properly
|
|
317
328
|
const callbackWithCdr = (event) => {
|
|
318
329
|
const value = callback(event);
|
|
319
330
|
safeDetectChanges(targetCdr);
|
|
320
331
|
safeDetectChanges(this.store.rootCdr);
|
|
321
332
|
return value;
|
|
322
333
|
};
|
|
334
|
+
// if the target doesn't have __ngt_renderer__, we delegate
|
|
335
|
+
if (!rS) {
|
|
336
|
+
return this.delegate.listen(target, eventName, callbackWithCdr);
|
|
337
|
+
}
|
|
338
|
+
// if target is DOM node, then we pass that to delegate Renderer
|
|
323
339
|
if (this.store.isDOM(target)) {
|
|
324
340
|
return this.delegate.listen(target, eventName, callbackWithCdr);
|
|
325
341
|
}
|
|
@@ -335,22 +351,10 @@ export class NgtRenderer {
|
|
|
335
351
|
: target['ownerDocument'];
|
|
336
352
|
return this.delegate.listen(eventTarget, event, callbackWithCdr);
|
|
337
353
|
}
|
|
338
|
-
if (rS[0 /* NgtRendererClassId.type */] === 'three' ||
|
|
339
|
-
(rS[0 /* NgtRendererClassId.type */] === 'compound' && rS[7 /* NgtRendererClassId.compounded */])) {
|
|
340
|
-
const instance = rS[7 /* NgtRendererClassId.compounded */] || target;
|
|
341
|
-
const priority = getLocalState(target).priority;
|
|
342
|
-
return processThreeEvent(instance, priority || 0, eventName, callback, this.store.rootCdr, targetCdr);
|
|
343
|
-
}
|
|
344
|
-
if (rS[0 /* NgtRendererClassId.type */] === 'compound' && !rS[7 /* NgtRendererClassId.compounded */]) {
|
|
345
|
-
this.store.queueOperation(target, [
|
|
346
|
-
'op',
|
|
347
|
-
() => this.store.queueOperation(target, ['cleanUp', this.listen(target, eventName, callback)]),
|
|
348
|
-
]);
|
|
349
|
-
}
|
|
350
354
|
return () => { };
|
|
351
355
|
}
|
|
352
356
|
get data() {
|
|
353
357
|
return this.delegate.data;
|
|
354
358
|
}
|
|
355
359
|
}
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQUNqQixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFFVixnQkFBZ0IsR0FFbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFxQyxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHaEgsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVxQiw0QkFBdUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RSxjQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXFC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dUNBQStCLEVBQUU7WUFDbEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUM5QixJQUFJO2dCQUNKLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNqRyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFhRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZ2V0RGVidWdOb2RlLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIFJlbmRlcmVyMixcbiAgICBSZW5kZXJlckZhY3RvcnkyLFxuICAgIFJlbmRlcmVyVHlwZTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTkdUX0NBVEFMT0dVRSB9IGZyb20gJy4uL2RpL2NhdGFsb2d1ZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi4vdXRpbHMvaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4uL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgTkdUX0NPTVBPVU5EX1BSRUZJWEVTIH0gZnJvbSAnLi9kaSc7XG5pbXBvcnQgeyBOZ3RSZW5kZXJlckNsYXNzSWQgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyTm9kZSwgTmd0UmVuZGVyZXJTdGF0ZSwgTmd0UmVuZGVyZXJTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgYXR0YWNoVGhyZWVDaGlsZCwga2ViYWJUb1Bhc2NhbCwgcHJvY2Vzc1RocmVlRXZlbnQsIHJlbW92ZVRocmVlQ2hpbGQsIFNQRUNJQUxfRE9NX1RBRyB9IGZyb20gJy4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXJGYWN0b3J5IGltcGxlbWVudHMgUmVuZGVyZXJGYWN0b3J5MiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZVJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ3VlID0gaW5qZWN0KE5HVF9DQVRBTE9HVUUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZW5kZXJlcjI+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZWRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAvLyBhbGwgUmVuZGVyZXIgaW5zdGFuY2VzIHNoYXJlIHRoZSBzYW1lIFN0b3JlXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlclN0b3JlID0gbmV3IE5ndFJlbmRlcmVyU3RvcmUoe1xuICAgICAgICBzdG9yZTogaW5qZWN0KE5ndFN0b3JlKSxcbiAgICAgICAgY2RyOiBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpLFxuICAgICAgICBwb3J0YWxzOiBbXSxcbiAgICAgICAgY29tcG91bmRQcmVmaXhlczogaW5qZWN0KE5HVF9DT01QT1VORF9QUkVGSVhFUyksXG4gICAgICAgIGRvY3VtZW50OiBpbmplY3QoRE9DVU1FTlQpLFxuICAgIH0pO1xuXG4gICAgY3JlYXRlUmVuZGVyZXIoaG9zdEVsZW1lbnQ6IGFueSwgdHlwZTogUmVuZGVyZXJUeXBlMiB8IG51bGwpOiBSZW5kZXJlcjIge1xuICAgICAgICBjb25zdCBkZWxlZ2F0ZVJlbmRlcmVyID0gdGhpcy5kZWxlZ2F0ZVJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudCwgdHlwZSk7XG4gICAgICAgIGlmICghdHlwZSkgcmV0dXJuIGRlbGVnYXRlUmVuZGVyZXI7XG4gICAgICAgIGlmICgodHlwZSBhcyBOZ3RBbnlSZWNvcmQpWyd0eXBlJ11bJ2lzUm91dGVkU2NlbmUnXSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZWRTZXQuYWRkKHR5cGUuaWQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXJNYXAuZ2V0KHR5cGUuaWQpO1xuICAgICAgICBpZiAoIXJlbmRlcmVyKSB7XG4gICAgICAgICAgICByZW5kZXJlciA9IG5ldyBOZ3RSZW5kZXJlcihcbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZVJlbmRlcmVyLFxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXJTdG9yZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGFsb2d1ZSxcbiAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHJvb3Qgc2NlbmUgaWYgdGhlcmUncyBubyByb3V0ZWQgc2NlbmUgT1IgdGhpcyBjb21wb25lbnQgaXMgdGhlIHJvdXRlZCBTY2VuZVxuICAgICAgICAgICAgICAgICFob3N0RWxlbWVudCAmJiAodGhpcy5yb3V0ZWRTZXQuc2l6ZSA9PT0gMCB8fCB0aGlzLnJvdXRlZFNldC5oYXModHlwZS5pZCkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlck1hcC5zZXQodHlwZS5pZCwgcmVuZGVyZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZW5kZXJlcjtcbiAgICB9XG59XG5cbi8qKlxuICogQW55dGhpbmcgYWJicmV2aWF0ZWQgd2l0aCByUy9SUyBzdGFuZHMgZm9yIFJlbmRlcmVyU3RhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIE5ndFJlbmRlcmVyIGltcGxlbWVudHMgUmVuZGVyZXIyIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZTogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBOZ3RSZW5kZXJlclN0b3JlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2d1ZTogUmVjb3JkPHN0cmluZywgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PixcbiAgICAgICAgcHJpdmF0ZSByb290ID0gdHJ1ZVxuICAgICkge31cblxuICAgIGNyZWF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQobmFtZSwgbmFtZXNwYWNlKTtcblxuICAgICAgICAvLyBvbiBmaXJzdCBwYXNzLCB3ZSByZXR1cm4gdGhlIFJvb3QgU2NlbmUgYXMgdGhlIHJvb3Qgbm9kZVxuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICB0aGlzLnJvb3QgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ3RocmVlJywgdGhpcy5zdG9yZS5yb290U2NlbmUpO1xuICAgICAgICAgICAgbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RvckZhY3RvcnldID0gKCkgPT4gZ2V0RGVidWdOb2RlKGVsZW1lbnQpIS5pbmplY3RvcjtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaGFuZGxlIGNvbXBvdW5kXG4gICAgICAgIGlmICh0aGlzLnN0b3JlLmlzQ29tcG91bmQobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ2NvbXBvdW5kJywgZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgcG9ydGFsXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BPUlRBTCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgncG9ydGFsJywgZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgcmF3IHZhbHVlXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1ZBTFVFKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKFxuICAgICAgICAgICAgICAgICd0aHJlZScsXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IF9fbmd0X3JlbmRlcmVyX186IHsgcmF3VmFsdWU6IHVuZGVmaW5lZCB9IH0sIHsgX19uZ3RfXzogeyBpc1JhdzogdHJ1ZSB9IH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpbmplY3RlZEFyZ3MsIGluamVjdGVkUGFyZW50LCBzdG9yZSB9ID0gdGhpcy5zdG9yZS5nZXRDcmVhdGlvblN0YXRlKCk7XG5cbiAgICAgICAgbGV0IHBhcmVudCA9IGluamVjdGVkUGFyZW50IGFzIE5ndFJlbmRlcmVyU3RhdGVbTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdGVkUGFyZW50XTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbmplY3RlZFBhcmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhcmVudCA9IHN0b3JlXG4gICAgICAgICAgICAgICAgLmdldCgnc2NlbmUnKVxuICAgICAgICAgICAgICAgIC5nZXRPYmplY3RCeU5hbWUoaW5qZWN0ZWRQYXJlbnQpIGFzIHVua25vd24gYXMgTmd0UmVuZGVyZXJTdGF0ZVtOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaGFuZGxlIHByaW1pdGl2ZVxuICAgICAgICBpZiAobmFtZSA9PT0gU1BFQ0lBTF9ET01fVEFHLk5HVF9QUklNSVRJVkUpIHtcbiAgICAgICAgICAgIGlmICghaW5qZWN0ZWRBcmdzWzBdKSB0aHJvdyBuZXcgRXJyb3IoYFtOR1RdIG5ndC1wcmltaXRpdmUgd2l0aG91dCBhcmdzIGlzIGludmFsaWRgKTtcbiAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IGluamVjdGVkQXJnc1swXTtcbiAgICAgICAgICAgIGxldCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShvYmplY3QpO1xuICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhsb2NhbFN0YXRlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwcmVwYXJlKG9iamVjdCwgeyBzdG9yZSwgYXJnczogaW5qZWN0ZWRBcmdzLCBwcmltaXRpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUob2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9jYWxTdGF0ZS5zdG9yZSkgbG9jYWxTdGF0ZS5zdG9yZSA9IHN0b3JlO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgndGhyZWUnLCBvYmplY3QpO1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIG5vZGUuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdID0gcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aHJlZVRhZyA9IG5hbWUuc3RhcnRzV2l0aCgnbmd0JykgPyBuYW1lLnNsaWNlKDQpIDogbmFtZTtcbiAgICAgICAgY29uc3QgdGhyZWVOYW1lID0ga2ViYWJUb1Bhc2NhbCh0aHJlZVRhZyk7XG4gICAgICAgIGNvbnN0IHRocmVlVGFyZ2V0ID0gdGhpcy5jYXRhbG9ndWVbdGhyZWVOYW1lXTtcbiAgICAgICAgLy8gd2UgaGF2ZSB0aGUgVEhSRUUgY29uc3RydWN0b3IgaGVyZSwgaGFuZGxlIGl0XG4gICAgICAgIGlmICh0aHJlZVRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBwcmVwYXJlKG5ldyB0aHJlZVRhcmdldCguLi5pbmplY3RlZEFyZ3MpLCB7IHN0b3JlLCBhcmdzOiBpbmplY3RlZEFyZ3MgfSk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCd0aHJlZScsIGluc3RhbmNlKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICAgICAgICAgIGlmIChpcy5nZW9tZXRyeShpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0YXRlLmF0dGFjaCA9IFsnZ2VvbWV0cnknXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXMubWF0ZXJpYWwoaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ21hdGVyaWFsJ107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBub2RlLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdGVkUGFyZW50XSA9IHBhcmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdkb20nLCBlbGVtZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVDb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgnY29tbWVudCcsIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGFwcGVuZENoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBuZXdDaGlsZDogTmd0UmVuZGVyZXJOb2RlKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IGp1c3QgaWdub3JlIHRleHQgbm9kZSBmb3Igbm93XG4gICAgICAgIGlmIChuZXdDaGlsZCBpbnN0YW5jZW9mIFRleHQpIHJldHVybjtcbiAgICAgICAgY29uc3QgY1JTID0gbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfXztcbiAgICAgICAgY29uc3QgcFJTID0gcGFyZW50Ll9fbmd0X3JlbmRlcmVyX187XG5cbiAgICAgICAgaWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21tZW50Jykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0pIHtcbiAgICAgICAgICAgIGlmIChpcy5yZWYoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0pKSB7XG4gICAgICAgICAgICAgICAgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh2YWwsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyZW50ICE9PSBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdGVkUGFyZW50XSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0sIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLnNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgdGhpcy5zdG9yZS5hZGRDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcblxuICAgICAgICAvLyBpZiBuZXcgY2hpbGQgaXMgYSBwb3J0YWxcbiAgICAgICAgaWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnByb2Nlc3NQb3J0YWxDb250YWluZXIobmV3Q2hpbGQpO1xuICAgICAgICAgICAgaWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgcGFyZW50IGlzIGEgcG9ydGFsXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5wcm9jZXNzUG9ydGFsQ29udGFpbmVyKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0sIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGJvdGggYXJlIHRocmVlIGluc3RhbmNlcywgc3RyYWlnaHRmb3J3YXJkIGNhc2VcbiAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgLy8gaWYgY2hpbGQgYWxyZWFkeSBhdHRhY2hlZCB0byBhIHBhcmVudCwgc2tpcFxuICAgICAgICAgICAgaWYgKGdldExvY2FsU3RhdGUobmV3Q2hpbGQpLnBhcmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgLy8gYXR0YWNoIFRIUkVFIGNoaWxkXG4gICAgICAgICAgICBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgLy8gaGVyZSwgd2UgaGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2YgaWYgdGhlIHBhcmVudCBoYXMgYSBjb21wb3VuZFBhcmVudCwgd2hpY2ggbWVhbnMgdGhpcyBjaGlsZCBpcyBwYXJ0IG9mIGEgY29tcG91bmQgcGFyZW50IHRlbXBsYXRlXG4gICAgICAgICAgICBpZiAoIWNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRXaXRoQ29tcG91bmQgPSB0aGlzLnN0b3JlLmdldENsb3Nlc3RQYXJlbnRXaXRoQ29tcG91bmQocGFyZW50KTtcbiAgICAgICAgICAgIGlmICghY2xvc2VzdEdyYW5kcGFyZW50V2l0aENvbXBvdW5kKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudFdpdGhDb21wb3VuZCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgb25seSB0aGUgcGFyZW50IGlzIHRoZSBUSFJFRSBpbnN0YW5jZVxuICAgICAgICBpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZW5kZXJDaGlsZCBvZiBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCByZW5kZXJDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBwYXJlbnQgaXMgYSBjb21wb3VuZFxuICAgICAgICBpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJykge1xuICAgICAgICAgICAgLy8gaWYgY29tcG91bmQgZG9lc24ndCBoYXZlIGEgVEhSRUUgaW5zdGFuY2Ugc2V0IHlldFxuICAgICAgICAgICAgaWYgKCFwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdICYmIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBjaGlsZCBpcyBpbmRlZWQgYW4gbmd0Q29tcG91bmRcbiAgICAgICAgICAgICAgICBpZiAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZF0pIHRoaXMuc3RvcmUuc2V0Q29tcG91bmQocGFyZW50LCBuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm90LCB3ZSB0cmFjayB0aGUgcGFyZW50ICh0aGF0IGlzIHN1cHBvc2VkbHkgdGhlIGNvbXBvdW5kIGNvbXBvbmVudCkgb24gdGhpcyB0aHJlZSBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kUGFyZW50XSkgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZFBhcmVudF0gPSBwYXJlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBjb21wb3VuZCBpZiBpdCdzIGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdICYmXG4gICAgICAgICAgICAgICAgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJlxuICAgICAgICAgICAgICAgIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdICYmXG4gICAgICAgICAgICAgICAgcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSAhPT0gbmV3Q2hpbGRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0Q29tcG91bmQocGFyZW50LCBuZXdDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZSA9XG4gICAgICAgICAgICAvLyBpZiBjaGlsZCBpcyB0aHJlZSBidXQgaGF2ZW4ndCBiZWVuIGF0dGFjaGVkIHRvIGEgcGFyZW50IHlldFxuICAgICAgICAgICAgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgIWdldExvY2FsU3RhdGUobmV3Q2hpbGQpLnBhcmVudCkgfHxcbiAgICAgICAgICAgIC8vIG9yIGJvdGggcGFyZW50IGFuZCBjaGlsZCBhcmUgRE9NIGVsZW1lbnRzXG4gICAgICAgICAgICAoKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nIHx8XG4gICAgICAgICAgICAgICAgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcgJiYgIXBSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pKSAmJlxuICAgICAgICAgICAgICAgIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyB8fFxuICAgICAgICAgICAgICAgICAgICAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJiAhY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSkpKTtcblxuICAgICAgICBpZiAoc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMuYXBwZW5kQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG5ld0NoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydEJlZm9yZShcbiAgICAgICAgcGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsXG4gICAgICAgIG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGVcbiAgICAgICAgLy8gVE9ETyAgd2UgbWlnaHQgbmVlZCB0aGVzZT9cbiAgICAgICAgLy8gcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZVxuICAgICAgICAvLyBpc01vdmU/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCB8fCAhcGFyZW50Ll9fbmd0X3JlbmRlcmVyX18gfHwgcGFyZW50ID09PSBuZXdDaGlsZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBvbGRDaGlsZDogTmd0UmVuZGVyZXJOb2RlLCBpc0hvc3RFbGVtZW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwUlMgPSBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfXztcbiAgICAgICAgY29uc3QgY1JTID0gb2xkQ2hpbGQuX19uZ3RfcmVuZGVyZXJfXztcbiAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIG9sZENoaWxkLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGVzdHJveShvbGRDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnICYmIHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0sIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRlc3Ryb3kob2xkQ2hpbGQsIHBhcmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSA9IHRoaXMuc3RvcmUuZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMucmVtb3ZlQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgdGhpcy5zdG9yZS5kZXN0cm95KG9sZENoaWxkLCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSBhcyBOZ3RSZW5kZXJlck5vZGUpO1xuICAgIH1cblxuICAgIHBhcmVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlKSB7XG4gICAgICAgIGNvbnN0IHJTID0gbm9kZS5fX25ndF9yZW5kZXJlcl9fO1xuICAgICAgICBpZiAoclM/LltOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkgcmV0dXJuIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG5vZGUpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuICAgICAgICBpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnKSB7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRoZSBjb21wb3VuZCBpbnN0YW5jZSB5ZXRcbiAgICAgICAgICAgIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5hdHRyaWJ1dGVzXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKCFyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKGVsLCBbJ29wJywgKCkgPT4gdGhpcy5zZXRBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0sIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykgdGhpcy5zdG9yZS5hcHBseUF0dHJpYnV0ZShlbCwgbmFtZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHNldFByb3BlcnR5KGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG4gICAgICAgIGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdGhlIGNvbXBvdW5kIGluc3RhbmNlIHlldFxuICAgICAgICAgICAgclNbTmd0UmVuZGVyZXJDbGFzc0lkLnByb3BlcnRpZXNdW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucXVldWVPcGVyYXRpb24oZWwsIFsnb3AnLCAoKSA9PiB0aGlzLnNldFByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSldKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0UHJvcGVydHkoclNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB0aGlzLnN0b3JlLmFwcGx5UHJvcGVydHkoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBsaXN0ZW4odGFyZ2V0OiBOZ3RSZW5kZXJlck5vZGUsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkKTogKCkgPT4gdm9pZCB7XG4gICAgICAgIGNvbnN0IHJTID0gdGFyZ2V0Ll9fbmd0X3JlbmRlcmVyX187XG4gICAgICAgIGNvbnN0IHRhcmdldENkciA9IHJTPy5bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0/LigpLmdldChDaGFuZ2VEZXRlY3RvclJlZiwgbnVsbCk7XG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBET00gbm9kZSwgdGhlbiB3ZSBwYXNzIHRoYXQgdG8gZGVsZWdhdGUgUmVuZGVyZXJcbiAgICAgICAgY29uc3QgY2FsbGJhY2tXaXRoQ2RyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2FsbGJhY2soZXZlbnQpO1xuICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGFyZ2V0Q2RyKTtcbiAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuc3RvcmUucm9vdENkcik7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnN0b3JlLmlzRE9NKHRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0YXJnZXQsIGV2ZW50TmFtZSwgY2FsbGJhY2tXaXRoQ2RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSB3ZSBrbm93IHRoYXQgdGFyZ2V0IGlzIG5vdCBET00gbm9kZVxuICAgICAgICBpZiAodGFyZ2V0ID09PSB0aGlzLnN0b3JlLnJvb3RTY2VuZSkge1xuICAgICAgICAgICAgbGV0IFtkb21UYXJnZXQsIGV2ZW50XSA9IGV2ZW50TmFtZS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9IGRvbVRhcmdldDtcbiAgICAgICAgICAgICAgICBkb21UYXJnZXQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID1cbiAgICAgICAgICAgICAgICBkb21UYXJnZXQgPT09ICd3aW5kb3cnXG4gICAgICAgICAgICAgICAgICAgID8gKHRhcmdldCBhcyBOZ3RBbnlSZWNvcmQpWydvd25lckRvY3VtZW50J11bJ2RlZmF1bHRWaWV3J11cbiAgICAgICAgICAgICAgICAgICAgOiAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3RlbihldmVudFRhcmdldCwgZXZlbnQsIGNhbGxiYWNrV2l0aENkcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgfHxcbiAgICAgICAgICAgIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcgJiYgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gclNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdIHx8IHRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gZ2V0TG9jYWxTdGF0ZSh0YXJnZXQpLnByaW9yaXR5O1xuICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NUaHJlZUV2ZW50KGluc3RhbmNlLCBwcmlvcml0eSB8fCAwLCBldmVudE5hbWUsIGNhbGxiYWNrLCB0aGlzLnN0b3JlLnJvb3RDZHIsIHRhcmdldENkciEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJiAhclNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKHRhcmdldCwgW1xuICAgICAgICAgICAgICAgICdvcCcsXG4gICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5zdG9yZS5xdWV1ZU9wZXJhdGlvbih0YXJnZXQsIFsnY2xlYW5VcCcsIHRoaXMubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFjayldKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICBjcmVhdGVUZXh0ID0gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG4gICAgZGVzdHJveSA9IHRoaXMuZGVsZWdhdGUuZGVzdHJveS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGRlc3Ryb3lOb2RlOiAoKG5vZGU6IGFueSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgICBzZWxlY3RSb290RWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBuZXh0U2libGluZyA9IHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGFkZENsYXNzID0gdGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZUNsYXNzID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZVN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFZhbHVlID0gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGdldCBkYXRhKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhO1xuICAgIH1cbn1cbiJdfQ==
|
|
360
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQUNqQixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFFVixnQkFBZ0IsR0FFbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFxQyxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHaEgsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVxQiw0QkFBdUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RSxjQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXFC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QUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtnQkFDZixLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUNsQixTQUFTLEdBQUcsRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsTUFBTSxXQUFXLEdBQ2IsU0FBUyxLQUFLLFFBQVE7Z0JBQ2xCLENBQUMsQ0FBRSxNQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDMUQsQ0FBQyxDQUFFLE1BQXVCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsT0FBTyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQWFELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBnZXREZWJ1Z05vZGUsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUmVuZGVyZXIyLFxuICAgIFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgUmVuZGVyZXJUeXBlMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOR1RfQ0FUQUxPR1VFIH0gZnJvbSAnLi4vZGkvY2F0YWxvZ3VlJztcbmltcG9ydCB7IE5ndFN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IHNhZmVEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnLi4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyBOR1RfQ09NUE9VTkRfUFJFRklYRVMgfSBmcm9tICcuL2RpJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJOb2RlLCBOZ3RSZW5kZXJlclN0YXRlLCBOZ3RSZW5kZXJlclN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBhdHRhY2hUaHJlZUNoaWxkLCBrZWJhYlRvUGFzY2FsLCBwcm9jZXNzVGhyZWVFdmVudCwgcmVtb3ZlVGhyZWVDaGlsZCwgU1BFQ0lBTF9ET01fVEFHIH0gZnJvbSAnLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3RSZW5kZXJlckZhY3RvcnkgaW1wbGVtZW50cyBSZW5kZXJlckZhY3RvcnkyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5ID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9ndWUgPSBpbmplY3QoTkdUX0NBVEFMT0dVRSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlbmRlcmVyMj4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlZFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIC8vIGFsbCBSZW5kZXJlciBpbnN0YW5jZXMgc2hhcmUgdGhlIHNhbWUgU3RvcmVcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyU3RvcmUgPSBuZXcgTmd0UmVuZGVyZXJTdG9yZSh7XG4gICAgICAgIHN0b3JlOiBpbmplY3QoTmd0U3RvcmUpLFxuICAgICAgICBjZHI6IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZiksXG4gICAgICAgIHBvcnRhbHM6IFtdLFxuICAgICAgICBjb21wb3VuZFByZWZpeGVzOiBpbmplY3QoTkdUX0NPTVBPVU5EX1BSRUZJWEVTKSxcbiAgICAgICAgZG9jdW1lbnQ6IGluamVjdChET0NVTUVOVCksXG4gICAgfSk7XG5cbiAgICBjcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudDogYW55LCB0eXBlOiBSZW5kZXJlclR5cGUyIHwgbnVsbCk6IFJlbmRlcmVyMiB7XG4gICAgICAgIGNvbnN0IGRlbGVnYXRlUmVuZGVyZXIgPSB0aGlzLmRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50LCB0eXBlKTtcbiAgICAgICAgaWYgKCF0eXBlKSByZXR1cm4gZGVsZWdhdGVSZW5kZXJlcjtcbiAgICAgICAgaWYgKCh0eXBlIGFzIE5ndEFueVJlY29yZClbJ3R5cGUnXVsnaXNSb3V0ZWRTY2VuZSddKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlZFNldC5hZGQodHlwZS5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlck1hcC5nZXQodHlwZS5pZCk7XG4gICAgICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IE5ndFJlbmRlcmVyKFxuICAgICAgICAgICAgICAgIGRlbGVnYXRlUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlclN0b3JlLFxuICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ3VlLFxuICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgcm9vdCBzY2VuZSBpZiB0aGVyZSdzIG5vIHJvdXRlZCBzY2VuZSBPUiB0aGlzIGNvbXBvbmVudCBpcyB0aGUgcm91dGVkIFNjZW5lXG4gICAgICAgICAgICAgICAgIWhvc3RFbGVtZW50ICYmICh0aGlzLnJvdXRlZFNldC5zaXplID09PSAwIHx8IHRoaXMucm91dGVkU2V0Lmhhcyh0eXBlLmlkKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyTWFwLnNldCh0eXBlLmlkLCByZW5kZXJlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlbmRlcmVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBbnl0aGluZyBhYmJyZXZpYXRlZCB3aXRoIHJTL1JTIHN0YW5kcyBmb3IgUmVuZGVyZXJTdGF0ZVxuICovXG5leHBvcnQgY2xhc3MgTmd0UmVuZGVyZXIgaW1wbGVtZW50cyBSZW5kZXJlcjIge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IE5ndFJlbmRlcmVyU3RvcmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ3VlOiBSZWNvcmQ8c3RyaW5nLCBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+LFxuICAgICAgICBwcml2YXRlIHJvb3QgPSB0cnVlXG4gICAgKSB7fVxuXG4gICAgY3JlYXRlRWxlbWVudChuYW1lOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuYW1lLCBuYW1lc3BhY2UpO1xuXG4gICAgICAgIC8vIG9uIGZpcnN0IHBhc3MsIHdlIHJldHVybiB0aGUgUm9vdCBTY2VuZSBhcyB0aGUgcm9vdCBub2RlXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRoaXMucm9vdCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgndGhyZWUnLCB0aGlzLnN0b3JlLnJvb3RTY2VuZSk7XG4gICAgICAgICAgICBub2RlLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmluamVjdG9yRmFjdG9yeV0gPSAoKSA9PiBnZXREZWJ1Z05vZGUoZWxlbWVudCkhLmluamVjdG9yO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgY29tcG91bmRcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUuaXNDb21wb3VuZChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgnY29tcG91bmQnLCBlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGhhbmRsZSBwb3J0YWxcbiAgICAgICAgaWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUE9SVEFMKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdwb3J0YWwnLCBlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGhhbmRsZSByYXcgdmFsdWVcbiAgICAgICAgaWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoXG4gICAgICAgICAgICAgICAgJ3RocmVlJyxcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgX19uZ3RfcmVuZGVyZXJfXzogeyByYXdWYWx1ZTogdW5kZWZpbmVkIH0gfSwgeyBfX25ndF9fOiB7IGlzUmF3OiB0cnVlIH0gfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGluamVjdGVkQXJncywgaW5qZWN0ZWRQYXJlbnQsIHN0b3JlIH0gPSB0aGlzLnN0b3JlLmdldENyZWF0aW9uU3RhdGUoKTtcblxuICAgICAgICBsZXQgcGFyZW50ID0gaW5qZWN0ZWRQYXJlbnQgYXMgTmd0UmVuZGVyZXJTdGF0ZVtOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdO1xuICAgICAgICBpZiAodHlwZW9mIGluamVjdGVkUGFyZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGFyZW50ID0gc3RvcmVcbiAgICAgICAgICAgICAgICAuZ2V0KCdzY2VuZScpXG4gICAgICAgICAgICAgICAgLmdldE9iamVjdEJ5TmFtZShpbmplY3RlZFBhcmVudCkgYXMgdW5rbm93biBhcyBOZ3RSZW5kZXJlclN0YXRlW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgcHJpbWl0aXZlXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BSSU1JVElWRSkge1xuICAgICAgICAgICAgaWYgKCFpbmplY3RlZEFyZ3NbMF0pIHRocm93IG5ldyBFcnJvcihgW05HVF0gbmd0LXByaW1pdGl2ZSB3aXRob3V0IGFyZ3MgaXMgaW52YWxpZGApO1xuICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gaW5qZWN0ZWRBcmdzWzBdO1xuICAgICAgICAgICAgbGV0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG9iamVjdCk7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGxvY2FsU3RhdGUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHByZXBhcmUob2JqZWN0LCB7IHN0b3JlLCBhcmdzOiBpbmplY3RlZEFyZ3MsIHByaW1pdGl2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShvYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2NhbFN0YXRlLnN0b3JlKSBsb2NhbFN0YXRlLnN0b3JlID0gc3RvcmU7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCd0aHJlZScsIG9iamVjdCk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0gPSBwYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRocmVlVGFnID0gbmFtZS5zdGFydHNXaXRoKCduZ3QnKSA/IG5hbWUuc2xpY2UoNCkgOiBuYW1lO1xuICAgICAgICBjb25zdCB0aHJlZU5hbWUgPSBrZWJhYlRvUGFzY2FsKHRocmVlVGFnKTtcbiAgICAgICAgY29uc3QgdGhyZWVUYXJnZXQgPSB0aGlzLmNhdGFsb2d1ZVt0aHJlZU5hbWVdO1xuICAgICAgICAvLyB3ZSBoYXZlIHRoZSBUSFJFRSBjb25zdHJ1Y3RvciBoZXJlLCBoYW5kbGUgaXRcbiAgICAgICAgaWYgKHRocmVlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHByZXBhcmUobmV3IHRocmVlVGFyZ2V0KC4uLmluamVjdGVkQXJncyksIHsgc3RvcmUsIGFyZ3M6IGluamVjdGVkQXJncyB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ3RocmVlJywgaW5zdGFuY2UpO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuXG4gICAgICAgICAgICAvLyBhdXRvLWF0dGFjaCBmb3IgZ2VvbWV0cnkgYW5kIG1hdGVyaWFsXG4gICAgICAgICAgICBpZiAoaXMuZ2VvbWV0cnkoaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ2dlb21ldHJ5J107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzLm1hdGVyaWFsKGluc3RhbmNlKSkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RhdGUuYXR0YWNoID0gWydtYXRlcmlhbCddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0gPSBwYXJlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgnZG9tJywgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ2NvbW1lbnQnLCB0aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnQ6IE5ndFJlbmRlcmVyTm9kZSwgbmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPOiBqdXN0IGlnbm9yZSB0ZXh0IG5vZGUgZm9yIG5vd1xuICAgICAgICBpZiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KSByZXR1cm47XG4gICAgICAgIGNvbnN0IGNSUyA9IG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX187XG4gICAgICAgIGNvbnN0IHBSUyA9IHBhcmVudC5fX25ndF9yZW5kZXJlcl9fO1xuXG4gICAgICAgIGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdKSB7XG4gICAgICAgICAgICBpZiAoaXMucmVmKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdKSkge1xuICAgICAgICAgICAgICAgIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdLiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsICE9PSBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodmFsLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmVudCAhPT0gY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RlZFBhcmVudF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuaW5qZWN0ZWRQYXJlbnRdLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG4gICAgICAgIHRoaXMuc3RvcmUuYWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cbiAgICAgICAgLy8gaWYgbmV3IGNoaWxkIGlzIGEgcG9ydGFsXG4gICAgICAgIGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5wcm9jZXNzUG9ydGFsQ29udGFpbmVyKG5ld0NoaWxkKTtcbiAgICAgICAgICAgIGlmIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHBhcmVudCBpcyBhIHBvcnRhbFxuICAgICAgICBpZiAocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwYXJlbnQpO1xuICAgICAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQocFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBib3RoIGFyZSB0aHJlZSBpbnN0YW5jZXMsIHN0cmFpZ2h0Zm9yd2FyZCBjYXNlXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgIC8vIGlmIGNoaWxkIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBwYXJlbnQsIHNraXBcbiAgICAgICAgICAgIGlmIChnZXRMb2NhbFN0YXRlKG5ld0NoaWxkKS5wYXJlbnQpIHJldHVybjtcbiAgICAgICAgICAgIC8vIGF0dGFjaCBUSFJFRSBjaGlsZFxuICAgICAgICAgICAgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIC8vIGhlcmUsIHdlIGhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIGlmIHRoZSBwYXJlbnQgaGFzIGEgY29tcG91bmRQYXJlbnQsIHdoaWNoIG1lYW5zIHRoaXMgY2hpbGQgaXMgcGFydCBvZiBhIGNvbXBvdW5kIHBhcmVudCB0ZW1wbGF0ZVxuICAgICAgICAgICAgaWYgKCFjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdEdyYW5kcGFyZW50V2l0aENvbXBvdW5kID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aENvbXBvdW5kKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAoIWNsb3Nlc3RHcmFuZHBhcmVudFdpdGhDb21wb3VuZCkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRXaXRoQ29tcG91bmQsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIG9ubHkgdGhlIHBhcmVudCBpcyB0aGUgVEhSRUUgaW5zdGFuY2VcbiAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVuZGVyQ2hpbGQgb2YgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgcmVuZGVyQ2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgcGFyZW50IGlzIGEgY29tcG91bmRcbiAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIGlmIGNvbXBvdW5kIGRvZXNuJ3QgaGF2ZSBhIFRIUkVFIGluc3RhbmNlIHNldCB5ZXRcbiAgICAgICAgICAgIGlmICghcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSAmJiBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgY2hpbGQgaXMgaW5kZWVkIGFuIG5ndENvbXBvdW5kXG4gICAgICAgICAgICAgICAgaWYgKGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSB0aGlzLnN0b3JlLnNldENvbXBvdW5kKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgICAgIC8vIGlmIG5vdCwgd2UgdHJhY2sgdGhlIHBhcmVudCAodGhhdCBpcyBzdXBwb3NlZGx5IHRoZSBjb21wb3VuZCBjb21wb25lbnQpIG9uIHRoaXMgdGhyZWUgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZFBhcmVudF0pIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRQYXJlbnRdID0gcGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgY29tcG91bmQgaWYgaXQncyBjaGFuZ2VkXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcFJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSAmJlxuICAgICAgICAgICAgICAgIGNSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiZcbiAgICAgICAgICAgICAgICBjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSAmJlxuICAgICAgICAgICAgICAgIHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0gIT09IG5ld0NoaWxkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldENvbXBvdW5kKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UgPVxuICAgICAgICAgICAgLy8gaWYgY2hpbGQgaXMgdGhyZWUgYnV0IGhhdmVuJ3QgYmVlbiBhdHRhY2hlZCB0byBhIHBhcmVudCB5ZXRcbiAgICAgICAgICAgIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmICFnZXRMb2NhbFN0YXRlKG5ld0NoaWxkKS5wYXJlbnQpIHx8XG4gICAgICAgICAgICAvLyBvciBib3RoIHBhcmVudCBhbmQgY2hpbGQgYXJlIERPTSBlbGVtZW50c1xuICAgICAgICAgICAgLy8gb3IgdGhleSBhcmUgY29tcG91bmQgQU5EIGhhdmVuJ3QgaGFkIGEgVEhSRUUgaW5zdGFuY2UgeWV0XG4gICAgICAgICAgICAoKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nIHx8XG4gICAgICAgICAgICAgICAgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcgJiYgIXBSU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pKSAmJlxuICAgICAgICAgICAgICAgIChjUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnZG9tJyB8fFxuICAgICAgICAgICAgICAgICAgICAoY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJiAhY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSkpKTtcblxuICAgICAgICBpZiAoc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMuYXBwZW5kQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG5ld0NoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydEJlZm9yZShcbiAgICAgICAgcGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsXG4gICAgICAgIG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGVcbiAgICAgICAgLy8gVE9ETyAgd2UgbWlnaHQgbmVlZCB0aGVzZT9cbiAgICAgICAgLy8gcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZVxuICAgICAgICAvLyBpc01vdmU/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCB8fCAhcGFyZW50Ll9fbmd0X3JlbmRlcmVyX18gfHwgcGFyZW50ID09PSBuZXdDaGlsZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBvbGRDaGlsZDogTmd0UmVuZGVyZXJOb2RlLCBpc0hvc3RFbGVtZW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwUlMgPSBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfXztcbiAgICAgICAgY29uc3QgY1JTID0gb2xkQ2hpbGQuX19uZ3RfcmVuZGVyZXJfXztcbiAgICAgICAgaWYgKHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiYgY1JTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIG9sZENoaWxkLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGVzdHJveShvbGRDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnICYmIHBSU1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0sIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwUlNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRlc3Ryb3kob2xkQ2hpbGQsIHBhcmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSA9IHRoaXMuc3RvcmUuZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHRoaXMucmVtb3ZlQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgdGhpcy5zdG9yZS5kZXN0cm95KG9sZENoaWxkLCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSBhcyBOZ3RSZW5kZXJlck5vZGUpO1xuICAgIH1cblxuICAgIHBhcmVudE5vZGUobm9kZTogTmd0UmVuZGVyZXJOb2RlKSB7XG4gICAgICAgIGNvbnN0IHJTID0gbm9kZS5fX25ndF9yZW5kZXJlcl9fO1xuICAgICAgICBpZiAoclM/LltOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XSkgcmV0dXJuIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG5vZGUpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgclMgPSBlbC5fX25ndF9yZW5kZXJlcl9fO1xuICAgICAgICBpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnKSB7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRoZSBjb21wb3VuZCBpbnN0YW5jZSB5ZXRcbiAgICAgICAgICAgIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5hdHRyaWJ1dGVzXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKCFyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKGVsLCBbJ29wJywgKCkgPT4gdGhpcy5zZXRBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0sIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykgdGhpcy5zdG9yZS5hcHBseUF0dHJpYnV0ZShlbCwgbmFtZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHNldFByb3BlcnR5KGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCByUyA9IGVsLl9fbmd0X3JlbmRlcmVyX187XG4gICAgICAgIGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdGhlIGNvbXBvdW5kIGluc3RhbmNlIHlldFxuICAgICAgICAgICAgclNbTmd0UmVuZGVyZXJDbGFzc0lkLnByb3BlcnRpZXNdW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucXVldWVPcGVyYXRpb24oZWwsIFsnb3AnLCAoKSA9PiB0aGlzLnNldFByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSldKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdLCB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAgclNbTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgW25hbWVdOiB2YWx1ZSB9XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFByb3BlcnR5KHJTW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykgdGhpcy5zdG9yZS5hcHBseVByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgbGlzdGVuKHRhcmdldDogTmd0UmVuZGVyZXJOb2RlLCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiBib29sZWFuIHwgdm9pZCk6ICgpID0+IHZvaWQge1xuICAgICAgICBjb25zdCByUyA9IHRhcmdldC5fX25ndF9yZW5kZXJlcl9fO1xuICAgICAgICBjb25zdCB0YXJnZXRDZHIgPSByUz8uW05ndFJlbmRlcmVyQ2xhc3NJZC5pbmplY3RvckZhY3RvcnldPy4oKS5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYsIG51bGwpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyB8fFxuICAgICAgICAgICAgKHJTW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJiByU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0gfHwgdGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBnZXRMb2NhbFN0YXRlKHRhcmdldCkucHJpb3JpdHk7XG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1RocmVlRXZlbnQoaW5zdGFuY2UsIHByaW9yaXR5IHx8IDAsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRoaXMuc3RvcmUucm9vdENkciwgdGFyZ2V0Q2RyISk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoclNbTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnICYmICFyU1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucXVldWVPcGVyYXRpb24odGFyZ2V0LCBbXG4gICAgICAgICAgICAgICAgJ29wJyxcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKHRhcmdldCwgWydjbGVhblVwJywgdGhpcy5saXN0ZW4odGFyZ2V0LCBldmVudE5hbWUsIGNhbGxiYWNrKV0pLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCBhIG5ldyBjYWxsYmFjayB3aXRoIENEUiBzbyB0aGF0IGl0IHdpbGwgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHByb3Blcmx5XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrV2l0aENkciA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRhcmdldENkcik7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLnN0b3JlLnJvb3RDZHIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGlmIHRoZSB0YXJnZXQgZG9lc24ndCBoYXZlIF9fbmd0X3JlbmRlcmVyX18sIHdlIGRlbGVnYXRlXG4gICAgICAgIGlmICghclMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0YXJnZXQsIGV2ZW50TmFtZSwgY2FsbGJhY2tXaXRoQ2RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBET00gbm9kZSwgdGhlbiB3ZSBwYXNzIHRoYXQgdG8gZGVsZWdhdGUgUmVuZGVyZXJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUuaXNET00odGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFja1dpdGhDZHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIHdlIGtub3cgdGhhdCB0YXJnZXQgaXMgbm90IERPTSBub2RlXG4gICAgICAgIGlmICh0YXJnZXQgPT09IHRoaXMuc3RvcmUucm9vdFNjZW5lKSB7XG4gICAgICAgICAgICBsZXQgW2RvbVRhcmdldCwgZXZlbnRdID0gZXZlbnROYW1lLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGV2ZW50ID0gZG9tVGFyZ2V0O1xuICAgICAgICAgICAgICAgIGRvbVRhcmdldCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXZlbnRUYXJnZXQgPVxuICAgICAgICAgICAgICAgIGRvbVRhcmdldCA9PT0gJ3dpbmRvdydcbiAgICAgICAgICAgICAgICAgICAgPyAodGFyZ2V0IGFzIE5ndEFueVJlY29yZClbJ293bmVyRG9jdW1lbnQnXVsnZGVmYXVsdFZpZXcnXVxuICAgICAgICAgICAgICAgICAgICA6ICh0YXJnZXQgYXMgTmd0QW55UmVjb3JkKVsnb3duZXJEb2N1bWVudCddO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKGV2ZW50VGFyZ2V0LCBldmVudCwgY2FsbGJhY2tXaXRoQ2RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICBjcmVhdGVUZXh0ID0gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG4gICAgZGVzdHJveSA9IHRoaXMuZGVsZWdhdGUuZGVzdHJveS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGRlc3Ryb3lOb2RlOiAoKG5vZGU6IGFueSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgICBzZWxlY3RSb290RWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBuZXh0U2libGluZyA9IHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGFkZENsYXNzID0gdGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZUNsYXNzID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZVN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFZhbHVlID0gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGdldCBkYXRhKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -14,9 +14,9 @@ export class NgtRoutedScene {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
NgtRoutedScene.isRoutedScene = true;
|
|
17
|
-
NgtRoutedScene.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
18
|
-
NgtRoutedScene.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
17
|
+
NgtRoutedScene.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
NgtRoutedScene.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `<router-outlet />`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRoutedScene, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{
|
|
22
22
|
standalone: true,
|
|
@@ -99,9 +99,9 @@ export class NgtRxStore extends RxState {
|
|
|
99
99
|
this.hold($, () => void requestAnimationFrame(() => void safeDetectChanges(cdr)));
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
103
|
-
NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
102
|
+
NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
103
|
+
NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRxStore });
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRxStore, decorators: [{
|
|
105
105
|
type: Injectable
|
|
106
106
|
}], ctorParameters: function () { return []; } });
|
|
107
107
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvcngtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQXdDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFakUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBbUMsRUFBRSxDQUFDLFNBQVMsQ0FBSSxTQUFlLENBQUMsQ0FBQztBQU10Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBUyxRQUEwQjtJQUN4RCxJQUFJLFNBQVMsR0FBNkYsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ25ILElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixJQUFJLElBQUksR0FBdUIsU0FBUyxDQUFDO0lBRXpDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsSUFBSSxTQUFTO1lBQUUsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7SUFFRixPQUFPLEdBQUcsQ0FBUztRQUNmLElBQUksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3BCLElBQUksU0FBUyxJQUFJLFFBQVE7Z0JBQUUsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFF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QztRQUVoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RHO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDOzt1R0F6RFEsVUFBVTsyR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4uL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5leHBvcnQgY29uc3Qgc3RhcnRXaXRoVW5kZWZpbmVkID0gPFQ+KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiA9PiBzdGFydFdpdGg8VD4odW5kZWZpbmVkISBhcyBUKTtcblxudHlwZSBFZmZlY3RGbjxUVmFsdWU+ID0gKFxuICAgIHZhbHVlOiBUVmFsdWVcbikgPT4gdm9pZCB8IHVuZGVmaW5lZCB8ICgoY2xlYW5VcFBhcmFtczogeyBwcmV2OiBUVmFsdWUgfCB1bmRlZmluZWQ7IGNvbXBsZXRlOiBib29sZWFuOyBlcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkKTtcblxuLyoqXG4gKiBBbiBleHRlbmRlZCBgdGFwYCBvcGVyYXRvciB0aGF0IGFjY2VwdHMgYW4gYGVmZmVjdEZuYCB3aGljaDpcbiAqIC0gcnVucyBvbiBldmVyeSBgbmV4dGAgbm90aWZpY2F0aW9uIGZyb20gYHNvdXJjZSRgXG4gKiAtIGNhbiBvcHRpb25hbGx5IHJldHVybiBhIGBjbGVhblVwYCBmdW5jdGlvbiB0aGF0XG4gKiBpbnZva2VzIGZyb20gdGhlIDJuZCBgbmV4dGAgbm90aWZpY2F0aW9uIG9ud2FyZCBhbmQgb24gYHVuc3Vic2NyaWJlYCAoZGVzdHJveWVkKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzb3VyY2UkLnBpcGUoXG4gKiAgdGFwRWZmZWN0KChzb3VyY2VWYWx1ZSkgPSB7XG4gKiAgICBjb25zdCBjYiA9ICgpID0+IHtcbiAqICAgICAgZG9TdHVmZihzb3VyY2VWYWx1ZSk7XG4gKiAgICB9O1xuICogICAgYWRkTGlzdGVuZXIoJ2V2ZW50JywgY2IpO1xuICpcbiAqICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgIHJlbW92ZUxpc3RlbmVyKCdldmVudCcsIGNiKTtcbiAqICAgIH1cbiAqICB9KVxuICogKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXBFZmZlY3Q8VFZhbHVlPihlZmZlY3RGbjogRWZmZWN0Rm48VFZhbHVlPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUVmFsdWU+IHtcbiAgICBsZXQgY2xlYW51cEZuOiAoY2xlYW5VcFBhcmFtczogeyBwcmV2OiBUVmFsdWUgfCB1bmRlZmluZWQ7IGNvbXBsZXRlOiBib29sZWFuOyBlcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgbGV0IGZpcnN0UnVuID0gZmFsc2U7XG4gICAgbGV0IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHRlYXJkb3duID0gKGVycm9yOiBib29sZWFuKSA9PiAoKSA9PiB7XG4gICAgICAgIGlmIChjbGVhbnVwRm4pIGNsZWFudXBGbih7IHByZXYsIGNvbXBsZXRlOiB0cnVlLCBlcnJvciB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRhcDxUVmFsdWU+KHtcbiAgICAgICAgbmV4dDogKHZhbHVlOiBUVmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChjbGVhbnVwRm4gJiYgZmlyc3RSdW4pIGNsZWFudXBGbih7IHByZXYsIGNvbXBsZXRlOiBmYWxzZSwgZXJyb3I6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBjbGVhblVwT3JWb2lkID0gZWZmZWN0Rm4odmFsdWUpO1xuICAgICAgICAgICAgaWYgKGNsZWFuVXBPclZvaWQpIGNsZWFudXBGbiA9IGNsZWFuVXBPclZvaWQ7XG5cbiAgICAgICAgICAgIHByZXYgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKCFmaXJzdFJ1bikgZmlyc3RSdW4gPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogdGVhcmRvd24oZmFsc2UpLFxuICAgICAgICB1bnN1YnNjcmliZTogdGVhcmRvd24oZmFsc2UpLFxuICAgICAgICBlcnJvcjogdGVhcmRvd24odHJ1ZSksXG4gICAgfSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3RSeFN0b3JlPFxuICAgIFRTdGF0ZSBleHRlbmRzIG9iamVjdCA9IGFueSxcbiAgICBUUnhTdGF0ZSBleHRlbmRzIG9iamVjdCA9IFRTdGF0ZSAmIFJlY29yZDxzdHJpbmcsIGFueT5cbj4gZXh0ZW5kcyBSeFN0YXRlPFRSeFN0YXRlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIHNldCBhIGR1bW15IHByb3BlcnR5IHNvIHRoYXQgaW5pdGlhbCB0aGlzLmdldCgpIHdvbid0IHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgdGhpcy5zZXQoeyBfX25ndF9kdW1teV9fOiAnX19uZ3RfZHVtbXlfXycgfSBhcyBUUnhTdGF0ZSk7XG4gICAgICAgIC8vIG92ZXJyaWRlIHNldCBzbyBvdXIgY29uc3VtZXJzIGRvbid0IGhhdmUgdG8gaGFuZGxlIHVuZGVmaW5lZCBmb3Igc3RhdGUgdGhhdCBhbHJlYWR5IGhhdmUgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTZXQgPSB0aGlzLnNldC5iaW5kKHRoaXMpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3NldCcsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxSeFN0YXRlPFRSeFN0YXRlPlsnc2V0J10+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzLm9iaihmaXJzdEFyZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZEFyZ3MgPSBPYmplY3QuZW50cmllcyhmaXJzdEFyZykucmVkdWNlKChtb2RkZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGRlZFtrZXldID0gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0KGtleSBhcyBrZXlvZiBUUnhTdGF0ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kZGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30gYXMgTmd0QW55UmVjb3JkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFNldChtb2RBcmdzIGFzIFBhcnRpYWw8VFJ4U3RhdGU+KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZXQoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIG92ZXJyaWRlIGdldCB0byByZXR1cm4ge30gaWYgZ2V0KCkgcmV0dXJucyB1bmRlZmluZWRcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxHZXQgPSB0aGlzLmdldC5iaW5kKHRoaXMpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2dldCcsIHtcbiAgICAgICAgICAgIGdldDpcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICguLi5hcmdzOiBQYXJhbWV0ZXJzPFJ4U3RhdGU8VFJ4U3RhdGU+WydnZXQnXT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChhcmdzIGFzIGFueVtdKS5sZW5ndGggPT09IDApIHJldHVybiBvcmlnaW5hbEdldCgpID8/IHt9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxHZXQoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gY2FsbCBpbml0aWFsaXplIHRoYXQgbWlnaHQgYmUgc2V0dXAgYnkgZGVyaXZlZCBTdG9yZXNcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlZmZlY3Q8Uz4ob2JzOiBPYnNlcnZhYmxlPFM+LCBzaWRlRWZmZWN0Rm46IEVmZmVjdEZuPFM+KTogdm9pZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvbGQob2JzLnBpcGUodGFwRWZmZWN0KHNpZGVFZmZlY3RGbikpKTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyQ2hhbmdlRGV0ZWN0aW9uKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGtleXM6IEFycmF5PGtleW9mIFRSeFN0YXRlPiA9IFtdKSB7XG4gICAgICAgIGxldCAkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLiQ7XG5cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAkID0gY29tYmluZUxhdGVzdChrZXlzLm1hcCgoa2V5KSA9PiB0aGlzLnNlbGVjdChrZXkpLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ2V0KGtleSkgPz8gdW5kZWZpbmVkKSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaG9sZCgkLCAoKSA9PiB2b2lkIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB2b2lkIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcikpKTtcbiAgICB9XG59XG4iXX0=
|