angular-three-soba 2.2.0 → 2.2.1
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/abstractions/lib/catmull-rom-line.d.ts +117 -117
- package/abstractions/lib/edges.d.ts +126 -126
- package/abstractions/lib/grid.d.ts +15 -15
- package/abstractions/lib/line.d.ts +9 -8
- package/abstractions/lib/prism-geometry.d.ts +2 -2
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +22 -22
- package/abstractions/lib/text.d.ts +0 -1
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
- package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +48 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +129 -135
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +194 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
- package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/gizmos/lib/transform-controls.d.ts +2 -2
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +6 -6
- package/misc/lib/decal.d.ts +4 -4
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +8 -8
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +19 -19
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +2 -1
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { extend, injectBeforeRender, injectStore, NgtArgs, omit, pick } from 'angular-three';
|
|
3
3
|
import { NgtsHelper } from 'angular-three-soba/abstractions';
|
|
4
4
|
import { SpotLightMaterial } from 'angular-three-soba/vanilla-exports';
|
|
5
5
|
import { assertInjector } from 'ngxtension/assert-injector';
|
|
6
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
7
6
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
8
7
|
import { CylinderGeometry, DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, PlaneGeometry, RepeatWrapping, RGBAFormat, ShaderMaterial, SpotLight, SpotLightHelper, Vector3, WebGLRenderTarget, } from 'three';
|
|
9
8
|
import { FullScreenQuad } from 'three-stdlib';
|
|
@@ -56,8 +55,8 @@ export class NgtsVolumetricMesh {
|
|
|
56
55
|
}
|
|
57
56
|
});
|
|
58
57
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
61
60
|
<ngt-mesh #mesh [geometry]="geometry()" [raycast]="null">
|
|
62
61
|
<ngt-primitive *args="[material]" attach="material">
|
|
63
62
|
<ngt-value attach="uniforms.opacity.value" [rawValue]="opacity()" />
|
|
@@ -75,7 +74,7 @@ export class NgtsVolumetricMesh {
|
|
|
75
74
|
</ngt-mesh>
|
|
76
75
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
77
76
|
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
|
|
79
78
|
type: Component,
|
|
80
79
|
args: [{
|
|
81
80
|
selector: 'ngts-volumetric-mesh',
|
|
@@ -188,25 +187,21 @@ export class NgtsSpotLightShadowShader {
|
|
|
188
187
|
uTime: { value: 0 },
|
|
189
188
|
};
|
|
190
189
|
extend({ Mesh, PlaneGeometry, MeshBasicMaterial });
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return () => {
|
|
201
|
-
fsQuad.material.dispose();
|
|
202
|
-
fsQuad.dispose();
|
|
203
|
-
};
|
|
190
|
+
injectSpotLightCommon(this.spotLight.spotLight, this.mesh, this.width, this.height, this.distance);
|
|
191
|
+
effect(() => {
|
|
192
|
+
this.uniforms.uShadowMap.value = this.map();
|
|
193
|
+
});
|
|
194
|
+
effect((onCleanup) => {
|
|
195
|
+
const fsQuad = this.fsQuad();
|
|
196
|
+
onCleanup(() => {
|
|
197
|
+
fsQuad.material.dispose();
|
|
198
|
+
fsQuad.dispose();
|
|
204
199
|
});
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
200
|
+
});
|
|
201
|
+
effect((onCleanup) => {
|
|
202
|
+
const renderTarget = this.renderTarget();
|
|
203
|
+
onCleanup(() => {
|
|
204
|
+
renderTarget.dispose();
|
|
210
205
|
});
|
|
211
206
|
});
|
|
212
207
|
injectBeforeRender(({ gl, delta }) => {
|
|
@@ -216,8 +211,8 @@ export class NgtsSpotLightShadowShader {
|
|
|
216
211
|
gl.setRenderTarget(null);
|
|
217
212
|
});
|
|
218
213
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
220
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
214
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadowShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSpotLightShadowShader, isStandalone: true, selector: "ngts-spot-light-shadow-shader", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "mesh", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
221
216
|
<ngt-mesh #mesh [scale]="scale()" [castShadow]="true">
|
|
222
217
|
<ngt-plane-geometry />
|
|
223
218
|
<ngt-mesh-basic-material
|
|
@@ -232,7 +227,7 @@ export class NgtsSpotLightShadowShader {
|
|
|
232
227
|
</ngt-mesh>
|
|
233
228
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
234
229
|
}
|
|
235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadowShader, decorators: [{
|
|
236
231
|
type: Component,
|
|
237
232
|
args: [{
|
|
238
233
|
selector: 'ngts-spot-light-shadow-shader',
|
|
@@ -275,13 +270,10 @@ export class NgtsSpotLightShadowNoShader {
|
|
|
275
270
|
this.height = pick(this.options, 'height');
|
|
276
271
|
this.distance = pick(this.options, 'distance');
|
|
277
272
|
extend({ Mesh, PlaneGeometry, MeshBasicMaterial });
|
|
278
|
-
|
|
279
|
-
afterNextRender(() => {
|
|
280
|
-
injectSpotLightCommon(this.spotLight.spotLight, this.mesh, this.width, this.height, this.distance, injector);
|
|
281
|
-
});
|
|
273
|
+
injectSpotLightCommon(this.spotLight.spotLight, this.mesh, this.width, this.height, this.distance);
|
|
282
274
|
}
|
|
283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
284
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
275
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
276
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "mesh", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
285
277
|
<ngt-mesh #mesh [scale]="scale()" [castShadow]="true">
|
|
286
278
|
<ngt-plane-geometry />
|
|
287
279
|
<ngt-mesh-basic-material
|
|
@@ -296,7 +288,7 @@ export class NgtsSpotLightShadowNoShader {
|
|
|
296
288
|
</ngt-mesh>
|
|
297
289
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
298
290
|
}
|
|
299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
|
|
300
292
|
type: Component,
|
|
301
293
|
args: [{
|
|
302
294
|
selector: 'ngts-spot-light-shadow-no-shader',
|
|
@@ -324,8 +316,8 @@ export class NgtsSpotLightShadow {
|
|
|
324
316
|
this.shader = input();
|
|
325
317
|
this.options = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });
|
|
326
318
|
}
|
|
327
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
328
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
320
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
329
321
|
@if (shader(); as shader) {
|
|
330
322
|
<ngts-spot-light-shadow-shader [shader]="shader" [options]="options()" />
|
|
331
323
|
} @else {
|
|
@@ -333,7 +325,7 @@ export class NgtsSpotLightShadow {
|
|
|
333
325
|
}
|
|
334
326
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowShader, selector: "ngts-spot-light-shadow-shader", inputs: ["shader", "options"] }, { kind: "component", type: NgtsSpotLightShadowNoShader, selector: "ngts-spot-light-shadow-no-shader", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
335
327
|
}
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
|
|
337
329
|
type: Component,
|
|
338
330
|
args: [{
|
|
339
331
|
selector: 'ngts-spot-light-shadow',
|
|
@@ -396,8 +388,8 @@ export class NgtsSpotLight {
|
|
|
396
388
|
this.volumetric = pick(this.options, 'volumetric');
|
|
397
389
|
extend({ Group, SpotLight });
|
|
398
390
|
}
|
|
399
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
400
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "spotLight", first: true, predicate: ["spotLight"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
401
393
|
<ngt-group>
|
|
402
394
|
<ngt-spot-light
|
|
403
395
|
#spotLight
|
|
@@ -419,7 +411,7 @@ export class NgtsSpotLight {
|
|
|
419
411
|
</ngt-group>
|
|
420
412
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh", inputs: ["options"] }, { kind: "component", type: NgtsHelper, selector: "ngts-helper", inputs: ["type", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
421
413
|
}
|
|
422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSpotLight, decorators: [{
|
|
423
415
|
type: Component,
|
|
424
416
|
args: [{
|
|
425
417
|
selector: 'ngts-spot-light',
|
|
@@ -450,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
450
442
|
imports: [NgtArgs, NgtsVolumetricMesh, NgtsHelper],
|
|
451
443
|
}]
|
|
452
444
|
}], ctorParameters: () => [] });
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9saWIvc3BvdC1saWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBZ0IsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBRU4sZ0JBQWdCLEVBRWhCLFVBQVUsRUFDVixLQUFLLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixpQkFBaUIsRUFFakIsYUFBYSxFQUNiLGNBQWMsRUFDZCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBRWYsT0FBTyxFQUNQLGlCQUFpQixHQUNqQixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDLFNBQVMsV0FBVyxDQUFDLEtBQXNCO0lBQzFDLE9BQVEsS0FBbUIsRUFBRSxXQUFXLENBQUM7QUFDMUMsQ0FBQztBQWdCRCxNQUFNLDRC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U0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQXhDVyxhQUFhO2tHQUFiLGFBQWEsNlVBekJmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW9CVCw0REFuVlcsa0JBQWtCLHNGQXNWUyxVQUFVOzsyRkFFckMsYUFBYTtrQkE1QnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIE5ndEFyZ3MsIE5ndFNwb3RMaWdodCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0c0hlbHBlciB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9hYnN0cmFjdGlvbnMnO1xuaW1wb3J0IHsgU3BvdExpZ2h0TWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdmFuaWxsYS1leHBvcnRzJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHtcblx0Q29sb3JSZXByZXNlbnRhdGlvbixcblx0Q3lsaW5kZXJHZW9tZXRyeSxcblx0RGVwdGhUZXh0dXJlLFxuXHREb3VibGVTaWRlLFxuXHRHcm91cCxcblx0TWF0cml4NCxcblx0TWVzaCxcblx0TWVzaEJhc2ljTWF0ZXJpYWwsXG5cdE9iamVjdDNELFxuXHRQbGFuZUdlb21ldHJ5LFxuXHRSZXBlYXRXcmFwcGluZyxcblx0UkdCQUZvcm1hdCxcblx0U2hhZGVyTWF0ZXJpYWwsXG5cdFNwb3RMaWdodCxcblx0U3BvdExpZ2h0SGVscGVyLFxuXHRUZXh0dXJlLFxuXHRWZWN0b3IzLFxuXHRXZWJHTFJlbmRlclRhcmdldCxcbn0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRnVsbFNjcmVlblF1YWQgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5mdW5jdGlvbiBpc1Nwb3RMaWdodChjaGlsZDogT2JqZWN0M0QgfCBudWxsKTogY2hpbGQgaXMgU3BvdExpZ2h0IHtcblx0cmV0dXJuIChjaGlsZCBhcyBTcG90TGlnaHQpPy5pc1Nwb3RMaWdodDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzU3BvdExpZ2h0T3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0U3BvdExpZ2h0PiB7XG5cdGRlcHRoQnVmZmVyPzogRGVwdGhUZXh0dXJlO1xuXHRhdHRlbnVhdGlvbj86IG51bWJlcjtcblx0YW5nbGVQb3dlcj86IG51bWJlcjtcblx0cmFkaXVzVG9wPzogbnVtYmVyO1xuXHRyYWRpdXNCb3R0b20/OiBudW1iZXI7XG5cdG9wYWNpdHk/OiBudW1iZXI7XG5cdGNvbG9yPzogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0dm9sdW1ldHJpYz86IGJvb2xlYW47XG5cdGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0c1ZvbHVtZXRyaWNNZXNoT3B0aW9ucyA9IE9taXQ8Tmd0c1Nwb3RMaWdodE9wdGlvbnMsICd2b2x1bWV0cmljJz47XG5cbmNvbnN0IGRlZmF1bHRWb2x1bWV0cmljTWVzaE9wdGlvbnM6IE5ndHNWb2x1bWV0cmljTWVzaE9wdGlvbnMgPSB7XG5cdG9wYWNpdHk6IDEsXG5cdGRpc3RhbmNlOiA1LFxuXHRhbmdsZTogMC4xNSxcblx0YXR0ZW51YXRpb246IDUsXG5cdGFuZ2xlUG93ZXI6IDUsXG5cdGNvbG9yOiAnd2hpdGUnLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy12b2x1bWV0cmljLW1lc2gnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCAjbWVzaCBbZ2VvbWV0cnldPVwiZ2VvbWV0cnkoKVwiIFtyYXljYXN0XT1cIm51bGxcIj5cblx0XHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW21hdGVyaWFsXVwiIGF0dGFjaD1cIm1hdGVyaWFsXCI+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMub3BhY2l0eS52YWx1ZVwiIFtyYXdWYWx1ZV09XCJvcGFjaXR5KClcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cInVuaWZvcm1zLmxpZ2h0Q29sb3IudmFsdWVcIiBbcmF3VmFsdWVdPVwiY29sb3IoKVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuYXR0ZW51YXRpb24udmFsdWVcIiBbcmF3VmFsdWVdPVwiYXR0ZW51YXRpb24oKVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuYW5nbGVQb3dlci52YWx1ZVwiIFtyYXdWYWx1ZV09XCJhbmdsZVBvd2VyKClcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cInVuaWZvcm1zLmRlcHRoLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImRlcHRoQnVmZmVyKClcIiAvPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cInVuaWZvcm1zLmNhbWVyYU5lYXIudmFsdWVcIiBbcmF3VmFsdWVdPVwiY2FtZXJhKCkubmVhclwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuY2FtZXJhRmFyLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImNhbWVyYSgpLmZhclwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWVcblx0XHRcdFx0XHRhdHRhY2g9XCJ1bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlXCJcblx0XHRcdFx0XHRbcmF3VmFsdWVdPVwiZGVwdGhCdWZmZXIoKSA/IFtzaXplKCkud2lkdGggKiBkcHIoKSwgc2l6ZSgpLmhlaWdodCAqIGRwcigpXSA6IFswLCAwXVwiXG5cdFx0XHRcdC8+XG5cdFx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVm9sdW1ldHJpY01lc2gge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdFZvbHVtZXRyaWNNZXNoT3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRWb2x1bWV0cmljTWVzaE9wdGlvbnMpIH0pO1xuXG5cdG1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxNZXNoPj4oJ21lc2gnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0c2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cdGRwciA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKTtcblx0Y2FtZXJhID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NhbWVyYScpO1xuXG5cdHByaXZhdGUgcmFkaXVzVG9wID0gcGljayh0aGlzLm9wdGlvbnMsICdyYWRpdXNUb3AnKTtcblx0cHJpdmF0ZSByYWRpdXNCb3R0b20gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JhZGl1c0JvdHRvbScpO1xuXHRwcml2YXRlIGFuZ2xlID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmdsZScpO1xuXHRwcml2YXRlIGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXG5cdHByaXZhdGUgbm9ybWFsaXplZFJhZGl1c1RvcCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnJhZGl1c1RvcCgpID09PSB1bmRlZmluZWQgPyAwLjEgOiB0aGlzLnJhZGl1c1RvcCgpKSk7XG5cdHByaXZhdGUgbm9ybWFsaXplZFJhZGl1c0JvdHRvbSA9IGNvbXB1dGVkKCgpID0+XG5cdFx0dGhpcy5yYWRpdXNCb3R0b20oKSA9PT0gdW5kZWZpbmVkID8gdGhpcy5hbmdsZSgpISAqIDcgOiB0aGlzLnJhZGl1c0JvdHRvbSgpLFxuXHQpO1xuXG5cdG1hdGVyaWFsID0gbmV3IFNwb3RMaWdodE1hdGVyaWFsKCk7XG5cdG9wYWNpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29wYWNpdHknKTtcblx0Y29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbG9yJyk7XG5cdGF0dGVudWF0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdhdHRlbnVhdGlvbicpO1xuXHRhbmdsZVBvd2VyID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmdsZVBvd2VyJyk7XG5cdGRlcHRoQnVmZmVyID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aEJ1ZmZlcicpO1xuXG5cdGdlb21ldHJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGdlb21ldHJ5ID0gbmV3IEN5bGluZGVyR2VvbWV0cnkoXG5cdFx0XHR0aGlzLm5vcm1hbGl6ZWRSYWRpdXNUb3AoKSxcblx0XHRcdHRoaXMubm9ybWFsaXplZFJhZGl1c0JvdHRvbSgpLFxuXHRcdFx0dGhpcy5kaXN0YW5jZSgpLFxuXHRcdFx0MTI4LFxuXHRcdFx0NjQsXG5cdFx0XHR0cnVlLFxuXHRcdCk7XG5cdFx0Z2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBNYXRyaXg0KCkubWFrZVRyYW5zbGF0aW9uKDAsIC10aGlzLmRpc3RhbmNlKCkhIC8gMiwgMCkpO1xuXHRcdGdlb21ldHJ5LmFwcGx5TWF0cml4NChuZXcgTWF0cml4NCgpLm1ha2VSb3RhdGlvblgoLU1hdGguUEkgLyAyKSk7XG5cdFx0cmV0dXJuIGdlb21ldHJ5O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoIH0pO1xuXG5cdFx0Y29uc3QgdmVjID0gbmV3IFZlY3RvcjMoKTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBtZXNoID0gdGhpcy5tZXNoUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbDtcblxuXHRcdFx0bWF0ZXJpYWwudW5pZm9ybXNbJ3Nwb3RQb3NpdGlvbiddLnZhbHVlLmNvcHkobWVzaC5nZXRXb3JsZFBvc2l0aW9uKHZlYykpO1xuXHRcdFx0aWYgKG1lc2gucGFyZW50KSB7XG5cdFx0XHRcdG1lc2gubG9va0F0KChtZXNoLnBhcmVudCBhcyBhbnkpLnRhcmdldC5nZXRXb3JsZFBvc2l0aW9uKHZlYykpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGluamVjdFNwb3RMaWdodENvbW1vbihcblx0c3BvdExpZ2h0OiAoKSA9PiBFbGVtZW50UmVmPFNwb3RMaWdodD4gfCBudWxsLFxuXHRtZXNoOiAoKSA9PiBFbGVtZW50UmVmPE1lc2g+IHwgbnVsbCxcblx0d2lkdGg6ICgpID0+IG51bWJlcixcblx0aGVpZ2h0OiAoKSA9PiBudW1iZXIsXG5cdGRpc3RhbmNlOiAoKSA9PiBudW1iZXIsXG5cdGluamVjdG9yPzogSW5qZWN0b3IsXG4pIHtcblx0YXNzZXJ0SW5qZWN0b3IoaW5qZWN0U3BvdExpZ2h0Q29tbW9uLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHBvcyA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0Y29uc3QgZGlyID0gbmV3IFZlY3RvcjMoKTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbX3Nwb3RMaWdodCwgX3dpZHRoLCBfaGVpZ2h0XSA9IFtzcG90TGlnaHQoKT8ubmF0aXZlRWxlbWVudCwgd2lkdGgoKSwgaGVpZ2h0KCldO1xuXHRcdFx0aWYgKCFfc3BvdExpZ2h0KSByZXR1cm47XG5cdFx0XHRpZiAoaXNTcG90TGlnaHQoX3Nwb3RMaWdodCkpIHtcblx0XHRcdFx0X3Nwb3RMaWdodC5zaGFkb3cubWFwU2l6ZS5zZXQoX3dpZHRoLCBfaGVpZ2h0KTtcblx0XHRcdFx0aWYgKF9zcG90TGlnaHQuc2hhZG93Lm1hcCkge1xuXHRcdFx0XHRcdF9zcG90TGlnaHQuc2hhZG93Lm1hcC5zZXRTaXplKF93aWR0aCwgX2hlaWdodCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0X3Nwb3RMaWdodC5zaGFkb3cubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdOZ3RzU3BvdExpZ2h0U2hhZG93IG11c3QgYmUgYSBjaGlsZCBvZiBhIE5ndHNTcG90TGlnaHQnKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBbX3Nwb3RMaWdodCwgX21lc2hdID0gW3Nwb3RMaWdodCgpPy5uYXRpdmVFbGVtZW50LCBtZXNoKCk/Lm5hdGl2ZUVsZW1lbnRdO1xuXHRcdFx0aWYgKCFfc3BvdExpZ2h0IHx8ICFfbWVzaCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBBID0gX3Nwb3RMaWdodC5wb3NpdGlvbjtcblx0XHRcdGNvbnN0IEIgPSBfc3BvdExpZ2h0LnRhcmdldC5wb3NpdGlvbjtcblxuXHRcdFx0ZGlyLmNvcHkoQikuc3ViKEEpO1xuXHRcdFx0Y29uc3QgbGVuID0gZGlyLmxlbmd0aCgpO1xuXHRcdFx0ZGlyLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKGxlbiAqIGRpc3RhbmNlKCkpO1xuXHRcdFx0cG9zLmNvcHkoQSkuYWRkKGRpcik7XG5cblx0XHRcdF9tZXNoLnBvc2l0aW9uLmNvcHkocG9zKTtcblx0XHRcdF9tZXNoLmxvb2tBdChfc3BvdExpZ2h0LnRhcmdldC5wb3NpdGlvbik7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5pbnRlcmZhY2UgTmd0c1NoYWRvd01lc2hPcHRpb25zIHtcblx0ZGlzdGFuY2U6IG51bWJlcjtcblx0YWxwaGFUZXN0OiBudW1iZXI7XG5cdHNjYWxlOiBudW1iZXI7XG5cdHdpZHRoOiBudW1iZXI7XG5cdGhlaWdodDogbnVtYmVyO1xuXHRtYXA/OiBUZXh0dXJlO1xufVxuXG5jb25zdCBkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9uczogTmd0c1NoYWRvd01lc2hPcHRpb25zID0ge1xuXHRkaXN0YW5jZTogMC40LFxuXHRhbHBoYVRlc3Q6IDAuNSxcblx0c2NhbGU6IDEsXG5cdHdpZHRoOiA1MTIsXG5cdGhlaWdodDogNTEyLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1zaGFkZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCAjbWVzaCBbc2NhbGVdPVwic2NhbGUoKVwiIFtjYXN0U2hhZG93XT1cInRydWVcIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtzaWRlXT1cIkRvdWJsZVNpZGVcIlxuXHRcdFx0XHRbYWxwaGFUZXN0XT1cImFscGhhVGVzdCgpXCJcblx0XHRcdFx0W2FscGhhTWFwXT1cInRleHR1cmUoKVwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cImRlYnVnKCkgPyAxIDogMFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHQ8L25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHRTaGFkb3dTaGFkZXIge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgRG91YmxlU2lkZSA9IERvdWJsZVNpZGU7XG5cblx0c2hhZGVyID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdFNwb3RMaWdodFNoYWRvd09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9ucykgfSk7XG5cblx0bWVzaCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g+PignbWVzaCcpO1xuXG5cdHByaXZhdGUgc3BvdExpZ2h0ID0gaW5qZWN0KE5ndHNTcG90TGlnaHQpO1xuXHRkZWJ1ZyA9IHRoaXMuc3BvdExpZ2h0LmRlYnVnO1xuXG5cdHNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZScpO1xuXHRhbHBoYVRlc3QgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FscGhhVGVzdCcpO1xuXG5cdHByaXZhdGUgd2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ3dpZHRoJyk7XG5cdHByaXZhdGUgaGVpZ2h0ID0gcGljayh0aGlzLm9wdGlvbnMsICdoZWlnaHQnKTtcblx0cHJpdmF0ZSBtYXAgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21hcCcpO1xuXHRwcml2YXRlIGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXG5cdHByaXZhdGUgcmVuZGVyVGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdHJldHVybiBuZXcgV2ViR0xSZW5kZXJUYXJnZXQodGhpcy53aWR0aCgpLCB0aGlzLmhlaWdodCgpLCB7XG5cdFx0XHRmb3JtYXQ6IFJHQkFGb3JtYXQsXG5cdFx0XHRzdGVuY2lsQnVmZmVyOiBmYWxzZSxcblx0XHRcdC8vIGRlcHRoVGV4dHVyZTogbnVsbCFcblx0XHR9KTtcblx0fSk7XG5cblx0dGV4dHVyZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCByZW5kZXJUYXJnZXQgPSB0aGlzLnJlbmRlclRhcmdldCgpO1xuXHRcdHJlbmRlclRhcmdldC50ZXh0dXJlLndyYXBUID0gcmVuZGVyVGFyZ2V0LnRleHR1cmUud3JhcFMgPSBSZXBlYXRXcmFwcGluZztcblx0XHRyZXR1cm4gcmVuZGVyVGFyZ2V0LnRleHR1cmU7XG5cdH0pO1xuXG5cdHByaXZhdGUgZnNRdWFkID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdHJldHVybiBuZXcgRnVsbFNjcmVlblF1YWQoXG5cdFx0XHRuZXcgU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0XHR1bmlmb3JtczogdGhpcy51bmlmb3Jtcyxcblx0XHRcdFx0dmVydGV4U2hhZGVyOiAvKiBsYW5ndWFnZT1nbHNsIGdsc2wgKi8gYFxuICAgICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG5cbiAgICAgICAgICB2b2lkIG1haW4oKSB7XG4gICAgICAgICAgICB2VXYgPSB1djtcbiAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICAgICAgfVxuICAgICAgICBgLFxuXHRcdFx0XHRmcmFnbWVudFNoYWRlcjogdGhpcy5zaGFkZXIoKSxcblx0XHRcdH0pLFxuXHRcdCk7XG5cdH0pO1xuXG5cdHByaXZhdGUgdW5pZm9ybXMgPSB7XG5cdFx0dVNoYWRvd01hcDogeyB2YWx1ZTogdW5kZWZpbmVkIGFzIFRleHR1cmUgfCB1bmRlZmluZWQgfSxcblx0XHR1VGltZTogeyB2YWx1ZTogMCB9LFxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE1lc2gsIFBsYW5lR2VvbWV0cnksIE1lc2hCYXNpY01hdGVyaWFsIH0pO1xuXG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0aW5qZWN0U3BvdExpZ2h0Q29tbW9uKHRoaXMuc3BvdExpZ2h0LnNwb3RMaWdodCwgdGhpcy5tZXNoLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5kaXN0YW5jZSwgaW5qZWN0b3IpO1xuXG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0dGhpcy51bmlmb3Jtcy51U2hhZG93TWFwLnZhbHVlID0gdGhpcy5tYXAoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgZnNRdWFkID0gdGhpcy5mc1F1YWQoKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRmc1F1YWQubWF0ZXJpYWwuZGlzcG9zZSgpO1xuXHRcdFx0XHRcdGZzUXVhZC5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJlbmRlclRhcmdldCA9IHRoaXMucmVuZGVyVGFyZ2V0KCk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0cmVuZGVyVGFyZ2V0LmRpc3Bvc2UoKTtcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsLCBkZWx0YSB9KSA9PiB7XG5cdFx0XHR0aGlzLnVuaWZvcm1zLnVUaW1lLnZhbHVlICs9IGRlbHRhO1xuXG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQodGhpcy5yZW5kZXJUYXJnZXQoKSk7XG5cdFx0XHR0aGlzLmZzUXVhZCgpLnJlbmRlcihnbCk7XG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1uby1zaGFkZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCAjbWVzaCBbc2NhbGVdPVwic2NhbGUoKVwiIFtjYXN0U2hhZG93XT1cInRydWVcIj5cblx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtzaWRlXT1cIkRvdWJsZVNpZGVcIlxuXHRcdFx0XHRbYWxwaGFUZXN0XT1cImFscGhhVGVzdCgpXCJcblx0XHRcdFx0W2FscGhhTWFwXT1cIm1hcCgpXCJcblx0XHRcdFx0W29wYWNpdHldPVwiZGVidWcoKSA/IDEgOiAwXCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWw+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodFNoYWRvd05vU2hhZGVyIHtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IERvdWJsZVNpZGUgPSBEb3VibGVTaWRlO1xuXG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRTcG90TGlnaHRTaGFkb3dPcHRpb25zKSB9KTtcblxuXHRtZXNoID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cblx0cHJpdmF0ZSBzcG90TGlnaHQgPSBpbmplY3QoTmd0c1Nwb3RMaWdodCk7XG5cdGRlYnVnID0gdGhpcy5zcG90TGlnaHQuZGVidWc7XG5cblx0YWxwaGFUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdhbHBoYVRlc3QnKTtcblx0c2NhbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlJyk7XG5cdG1hcCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBtYXAgPSB0aGlzLm9wdGlvbnMoKS5tYXA7XG5cdFx0aWYgKG1hcCkge1xuXHRcdFx0bWFwLndyYXBTID0gbWFwLndyYXBUID0gUmVwZWF0V3JhcHBpbmc7XG5cdFx0fVxuXHRcdHJldHVybiBtYXA7XG5cdH0pO1xuXG5cdHByaXZhdGUgd2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ3dpZHRoJyk7XG5cdHByaXZhdGUgaGVpZ2h0ID0gcGljayh0aGlzLm9wdGlvbnMsICdoZWlnaHQnKTtcblx0cHJpdmF0ZSBkaXN0YW5jZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzdGFuY2UnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBQbGFuZUdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblxuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0aW5qZWN0U3BvdExpZ2h0Q29tbW9uKHRoaXMuc3BvdExpZ2h0LnNwb3RMaWdodCwgdGhpcy5tZXNoLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5kaXN0YW5jZSwgaW5qZWN0b3IpO1xuXHRcdH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodC1zaGFkb3cnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoc2hhZGVyKCk7IGFzIHNoYWRlcikge1xuXHRcdFx0PG5ndHMtc3BvdC1saWdodC1zaGFkb3ctc2hhZGVyIFtzaGFkZXJdPVwic2hhZGVyXCIgW29wdGlvbnNdPVwib3B0aW9ucygpXCIgLz5cblx0XHR9IEBlbHNlIHtcblx0XHRcdDxuZ3RzLXNwb3QtbGlnaHQtc2hhZG93LW5vLXNoYWRlciBbb3B0aW9uc109XCJvcHRpb25zKClcIiAvPlxuXHRcdH1cblx0YCxcblx0aW1wb3J0czogW05ndHNTcG90TGlnaHRTaGFkb3dTaGFkZXIsIE5ndHNTcG90TGlnaHRTaGFkb3dOb1NoYWRlcl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3BvdExpZ2h0U2hhZG93IHtcblx0c2hhZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdFNwb3RMaWdodFNoYWRvd09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9ucykgfSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzU3BvdExpZ2h0T3B0aW9ucyA9IHtcblx0b3BhY2l0eTogMSxcblx0Y29sb3I6ICd3aGl0ZScsXG5cdGRpc3RhbmNlOiA1LFxuXHRhbmdsZTogMC4xNSxcblx0YXR0ZW51YXRpb246IDUsXG5cdGFuZ2xlUG93ZXI6IDUsXG5cdHZvbHVtZXRyaWM6IHRydWUsXG5cdGRlYnVnOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cD5cblx0XHRcdDxuZ3Qtc3BvdC1saWdodFxuXHRcdFx0XHQjc3BvdExpZ2h0XG5cdFx0XHRcdFthbmdsZV09XCJhbmdsZSgpXCJcblx0XHRcdFx0W2NvbG9yXT1cImNvbG9yKClcIlxuXHRcdFx0XHRbZGlzdGFuY2VdPVwiZGlzdGFuY2UoKVwiXG5cdFx0XHRcdFtjYXN0U2hhZG93XT1cInRydWVcIlxuXHRcdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdFx0PlxuXHRcdFx0XHRAaWYgKHZvbHVtZXRyaWMoKSkge1xuXHRcdFx0XHRcdDxuZ3RzLXZvbHVtZXRyaWMtbWVzaCBbb3B0aW9uc109XCJ2b2x1bWV0cmljT3B0aW9ucygpXCIgLz5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBpZiAoZGVidWcoKSkge1xuXHRcdFx0XHRcdDxuZ3RzLWhlbHBlciBbdHlwZV09XCJTcG90TGlnaHRIZWxwZXJcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1zcG90LWxpZ2h0PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5ndHNWb2x1bWV0cmljTWVzaCwgTmd0c0hlbHBlcl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHQge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgU3BvdExpZ2h0SGVscGVyID0gU3BvdExpZ2h0SGVscGVyO1xuXG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J29wYWNpdHknLFxuXHRcdCdyYWRpdXNUb3AnLFxuXHRcdCdyYWRpdXNCb3R0b20nLFxuXHRcdCdkZXB0aEJ1ZmZlcicsXG5cdFx0J2NvbG9yJyxcblx0XHQnZGlzdGFuY2UnLFxuXHRcdCdhbmdsZScsXG5cdFx0J2F0dGVudWF0aW9uJyxcblx0XHQnYW5nbGVQb3dlcicsXG5cdFx0J3ZvbHVtZXRyaWMnLFxuXHRcdCdkZWJ1ZycsXG5cdF0pO1xuXHR2b2x1bWV0cmljT3B0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCBbXG5cdFx0J29wYWNpdHknLFxuXHRcdCdyYWRpdXNUb3AnLFxuXHRcdCdyYWRpdXNCb3R0b20nLFxuXHRcdCdkZXB0aEJ1ZmZlcicsXG5cdFx0J2NvbG9yJyxcblx0XHQnZGlzdGFuY2UnLFxuXHRcdCdhbmdsZScsXG5cdFx0J2F0dGVudWF0aW9uJyxcblx0XHQnYW5nbGVQb3dlcicsXG5cdFx0J2RlYnVnJyxcblx0XSk7XG5cblx0c3BvdExpZ2h0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8U3BvdExpZ2h0Pj4oJ3Nwb3RMaWdodCcpO1xuXG5cdGRlYnVnID0gcGljayh0aGlzLm9wdGlvbnMsICdkZWJ1ZycpO1xuXHRhbmdsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5nbGUnKTtcblx0Y29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbG9yJyk7XG5cdGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXHR2b2x1bWV0cmljID0gcGljayh0aGlzLm9wdGlvbnMsICd2b2x1bWV0cmljJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAsIFNwb3RMaWdodCB9KTtcblx0fVxufVxuIl19
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9saWIvc3BvdC1saWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUVOLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsS0FBSyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osaUJBQWlCLEVBRWpCLGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZUFBZSxFQUVmLE9BQU8sRUFDUCxpQkFBaUIsR0FDakIsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUU5QyxTQUFTLFdBQVcsQ0FBQyxLQUFzQjtJQUMxQyxPQUFRLEtBQW1CLEVBQUUsV0FBVyxDQUFDO0FBQzFDLENBQUM7QUFnQkQsTUFBTSw0QkFBNEIsR0FBOEI7SUFDL0QsT0FBTyxFQUFFLENBQUM7SUFDVixRQUFRLEVBQUUsQ0FBQztJQUNYLEtBQUssRUFB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QUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQztpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgTmd0QXJncywgTmd0U3BvdExpZ2h0LCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RzSGVscGVyIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgeyBTcG90TGlnaHRNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQge1xuXHRDb2xvclJlcHJlc2VudGF0aW9uLFxuXHRDeWxpbmRlckdlb21ldHJ5LFxuXHREZXB0aFRleHR1cmUsXG5cdERvdWJsZVNpZGUsXG5cdEdyb3VwLFxuXHRNYXRyaXg0LFxuXHRNZXNoLFxuXHRNZXNoQmFzaWNNYXRlcmlhbCxcblx0T2JqZWN0M0QsXG5cdFBsYW5lR2VvbWV0cnksXG5cdFJlcGVhdFdyYXBwaW5nLFxuXHRSR0JBRm9ybWF0LFxuXHRTaGFkZXJNYXRlcmlhbCxcblx0U3BvdExpZ2h0LFxuXHRTcG90TGlnaHRIZWxwZXIsXG5cdFRleHR1cmUsXG5cdFZlY3RvcjMsXG5cdFdlYkdMUmVuZGVyVGFyZ2V0LFxufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmZ1bmN0aW9uIGlzU3BvdExpZ2h0KGNoaWxkOiBPYmplY3QzRCB8IG51bGwpOiBjaGlsZCBpcyBTcG90TGlnaHQge1xuXHRyZXR1cm4gKGNoaWxkIGFzIFNwb3RMaWdodCk/LmlzU3BvdExpZ2h0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTcG90TGlnaHRPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RTcG90TGlnaHQ+IHtcblx0ZGVwdGhCdWZmZXI/OiBEZXB0aFRleHR1cmU7XG5cdGF0dGVudWF0aW9uPzogbnVtYmVyO1xuXHRhbmdsZVBvd2VyPzogbnVtYmVyO1xuXHRyYWRpdXNUb3A/OiBudW1iZXI7XG5cdHJhZGl1c0JvdHRvbT86IG51bWJlcjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0Y29sb3I/OiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHR2b2x1bWV0cmljPzogYm9vbGVhbjtcblx0ZGVidWc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzVm9sdW1ldHJpY01lc2hPcHRpb25zID0gT21pdDxOZ3RzU3BvdExpZ2h0T3B0aW9ucywgJ3ZvbHVtZXRyaWMnPjtcblxuY29uc3QgZGVmYXVsdFZvbHVtZXRyaWNNZXNoT3B0aW9uczogTmd0c1ZvbHVtZXRyaWNNZXNoT3B0aW9ucyA9IHtcblx0b3BhY2l0eTogMSxcblx0ZGlzdGFuY2U6IDUsXG5cdGFuZ2xlOiAwLjE1LFxuXHRhdHRlbnVhdGlvbjogNSxcblx0YW5nbGVQb3dlcjogNSxcblx0Y29sb3I6ICd3aGl0ZScsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXZvbHVtZXRyaWMtbWVzaCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoICNtZXNoIFtnZW9tZXRyeV09XCJnZW9tZXRyeSgpXCIgW3JheWNhc3RdPVwibnVsbFwiPlxuXHRcdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbbWF0ZXJpYWxdXCIgYXR0YWNoPVwibWF0ZXJpYWxcIj5cblx0XHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5vcGFjaXR5LnZhbHVlXCIgW3Jhd1ZhbHVlXT1cIm9wYWNpdHkoKVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMubGlnaHRDb2xvci52YWx1ZVwiIFtyYXdWYWx1ZV09XCJjb2xvcigpXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5hdHRlbnVhdGlvbi52YWx1ZVwiIFtyYXdWYWx1ZV09XCJhdHRlbnVhdGlvbigpXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5hbmdsZVBvd2VyLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImFuZ2xlUG93ZXIoKVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuZGVwdGgudmFsdWVcIiBbcmF3VmFsdWVdPVwiZGVwdGhCdWZmZXIoKVwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuY2FtZXJhTmVhci52YWx1ZVwiIFtyYXdWYWx1ZV09XCJjYW1lcmEoKS5uZWFyXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5jYW1lcmFGYXIudmFsdWVcIiBbcmF3VmFsdWVdPVwiY2FtZXJhKCkuZmFyXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZVxuXHRcdFx0XHRcdGF0dGFjaD1cInVuaWZvcm1zLnJlc29sdXRpb24udmFsdWVcIlxuXHRcdFx0XHRcdFtyYXdWYWx1ZV09XCJkZXB0aEJ1ZmZlcigpID8gW3NpemUoKS53aWR0aCAqIGRwcigpLCBzaXplKCkuaGVpZ2h0ICogZHByKCldIDogWzAsIDBdXCJcblx0XHRcdFx0Lz5cblx0XHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNWb2x1bWV0cmljTWVzaCB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0Vm9sdW1ldHJpY01lc2hPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdFZvbHVtZXRyaWNNZXNoT3B0aW9ucykgfSk7XG5cblx0bWVzaFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g+PignbWVzaCcpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0ZHByID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0JywgJ2RwcicpO1xuXHRjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSByYWRpdXNUb3AgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JhZGl1c1RvcCcpO1xuXHRwcml2YXRlIHJhZGl1c0JvdHRvbSA9IHBpY2sodGhpcy5vcHRpb25zLCAncmFkaXVzQm90dG9tJyk7XG5cdHByaXZhdGUgYW5nbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuZ2xlJyk7XG5cdHByaXZhdGUgZGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc3RhbmNlJyk7XG5cblx0cHJpdmF0ZSBub3JtYWxpemVkUmFkaXVzVG9wID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMucmFkaXVzVG9wKCkgPT09IHVuZGVmaW5lZCA/IDAuMSA6IHRoaXMucmFkaXVzVG9wKCkpKTtcblx0cHJpdmF0ZSBub3JtYWxpemVkUmFkaXVzQm90dG9tID0gY29tcHV0ZWQoKCkgPT5cblx0XHR0aGlzLnJhZGl1c0JvdHRvbSgpID09PSB1bmRlZmluZWQgPyB0aGlzLmFuZ2xlKCkhICogNyA6IHRoaXMucmFkaXVzQm90dG9tKCksXG5cdCk7XG5cblx0bWF0ZXJpYWwgPSBuZXcgU3BvdExpZ2h0TWF0ZXJpYWwoKTtcblx0b3BhY2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnb3BhY2l0eScpO1xuXHRjb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sb3InKTtcblx0YXR0ZW51YXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F0dGVudWF0aW9uJyk7XG5cdGFuZ2xlUG93ZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuZ2xlUG93ZXInKTtcblx0ZGVwdGhCdWZmZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RlcHRoQnVmZmVyJyk7XG5cblx0Z2VvbWV0cnkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgQ3lsaW5kZXJHZW9tZXRyeShcblx0XHRcdHRoaXMubm9ybWFsaXplZFJhZGl1c1RvcCgpLFxuXHRcdFx0dGhpcy5ub3JtYWxpemVkUmFkaXVzQm90dG9tKCksXG5cdFx0XHR0aGlzLmRpc3RhbmNlKCksXG5cdFx0XHQxMjgsXG5cdFx0XHQ2NCxcblx0XHRcdHRydWUsXG5cdFx0KTtcblx0XHRnZW9tZXRyeS5hcHBseU1hdHJpeDQobmV3IE1hdHJpeDQoKS5tYWtlVHJhbnNsYXRpb24oMCwgLXRoaXMuZGlzdGFuY2UoKSEgLyAyLCAwKSk7XG5cdFx0Z2VvbWV0cnkuYXBwbHlNYXRyaXg0KG5ldyBNYXRyaXg0KCkubWFrZVJvdGF0aW9uWCgtTWF0aC5QSSAvIDIpKTtcblx0XHRyZXR1cm4gZ2VvbWV0cnk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE1lc2ggfSk7XG5cblx0XHRjb25zdCB2ZWMgPSBuZXcgVmVjdG9yMygpO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IG1lc2ggPSB0aGlzLm1lc2hSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsO1xuXG5cdFx0XHRtYXRlcmlhbC51bmlmb3Jtc1snc3BvdFBvc2l0aW9uJ10udmFsdWUuY29weShtZXNoLmdldFdvcmxkUG9zaXRpb24odmVjKSk7XG5cdFx0XHRpZiAobWVzaC5wYXJlbnQpIHtcblx0XHRcdFx0bWVzaC5sb29rQXQoKG1lc2gucGFyZW50IGFzIGFueSkudGFyZ2V0LmdldFdvcmxkUG9zaXRpb24odmVjKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gaW5qZWN0U3BvdExpZ2h0Q29tbW9uKFxuXHRzcG90TGlnaHQ6ICgpID0+IEVsZW1lbnRSZWY8U3BvdExpZ2h0PiB8IG51bGwsXG5cdG1lc2g6ICgpID0+IEVsZW1lbnRSZWY8TWVzaD4gfCBudWxsLFxuXHR3aWR0aDogKCkgPT4gbnVtYmVyLFxuXHRoZWlnaHQ6ICgpID0+IG51bWJlcixcblx0ZGlzdGFuY2U6ICgpID0+IG51bWJlcixcblx0aW5qZWN0b3I/OiBJbmplY3Rvcixcbikge1xuXHRhc3NlcnRJbmplY3RvcihpbmplY3RTcG90TGlnaHRDb21tb24sIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgcG9zID0gbmV3IFZlY3RvcjMoKTtcblx0XHRjb25zdCBkaXIgPSBuZXcgVmVjdG9yMygpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtfc3BvdExpZ2h0LCBfd2lkdGgsIF9oZWlnaHRdID0gW3Nwb3RMaWdodCgpPy5uYXRpdmVFbGVtZW50LCB3aWR0aCgpLCBoZWlnaHQoKV07XG5cdFx0XHRpZiAoIV9zcG90TGlnaHQpIHJldHVybjtcblx0XHRcdGlmIChpc1Nwb3RMaWdodChfc3BvdExpZ2h0KSkge1xuXHRcdFx0XHRfc3BvdExpZ2h0LnNoYWRvdy5tYXBTaXplLnNldChfd2lkdGgsIF9oZWlnaHQpO1xuXHRcdFx0XHRpZiAoX3Nwb3RMaWdodC5zaGFkb3cubWFwKSB7XG5cdFx0XHRcdFx0X3Nwb3RMaWdodC5zaGFkb3cubWFwLnNldFNpemUoX3dpZHRoLCBfaGVpZ2h0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRfc3BvdExpZ2h0LnNoYWRvdy5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05ndHNTcG90TGlnaHRTaGFkb3cgbXVzdCBiZSBhIGNoaWxkIG9mIGEgTmd0c1Nwb3RMaWdodCcpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtfc3BvdExpZ2h0LCBfbWVzaF0gPSBbc3BvdExpZ2h0KCk/Lm5hdGl2ZUVsZW1lbnQsIG1lc2goKT8ubmF0aXZlRWxlbWVudF07XG5cdFx0XHRpZiAoIV9zcG90TGlnaHQgfHwgIV9tZXNoKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IEEgPSBfc3BvdExpZ2h0LnBvc2l0aW9uO1xuXHRcdFx0Y29uc3QgQiA9IF9zcG90TGlnaHQudGFyZ2V0LnBvc2l0aW9uO1xuXG5cdFx0XHRkaXIuY29weShCKS5zdWIoQSk7XG5cdFx0XHRjb25zdCBsZW4gPSBkaXIubGVuZ3RoKCk7XG5cdFx0XHRkaXIubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIobGVuICogZGlzdGFuY2UoKSk7XG5cdFx0XHRwb3MuY29weShBKS5hZGQoZGlyKTtcblxuXHRcdFx0X21lc2gucG9zaXRpb24uY29weShwb3MpO1xuXHRcdFx0X21lc2gubG9va0F0KF9zcG90TGlnaHQudGFyZ2V0LnBvc2l0aW9uKTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmludGVyZmFjZSBOZ3RzU2hhZG93TWVzaE9wdGlvbnMge1xuXHRkaXN0YW5jZTogbnVtYmVyO1xuXHRhbHBoYVRlc3Q6IG51bWJlcjtcblx0c2NhbGU6IG51bWJlcjtcblx0d2lkdGg6IG51bWJlcjtcblx0aGVpZ2h0OiBudW1iZXI7XG5cdG1hcD86IFRleHR1cmU7XG59XG5cbmNvbnN0IGRlZmF1bHRTcG90TGlnaHRTaGFkb3dPcHRpb25zOiBOZ3RzU2hhZG93TWVzaE9wdGlvbnMgPSB7XG5cdGRpc3RhbmNlOiAwLjQsXG5cdGFscGhhVGVzdDogMC41LFxuXHRzY2FsZTogMSxcblx0d2lkdGg6IDUxMixcblx0aGVpZ2h0OiA1MTIsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQtc2hhZG93LXNoYWRlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoICNtZXNoIFtzY2FsZV09XCJzY2FsZSgpXCIgW2Nhc3RTaGFkb3ddPVwidHJ1ZVwiPlxuXHRcdFx0PG5ndC1wbGFuZS1nZW9tZXRyeSAvPlxuXHRcdFx0PG5ndC1tZXNoLWJhc2ljLW1hdGVyaWFsXG5cdFx0XHRcdFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcblx0XHRcdFx0W3NpZGVdPVwiRG91YmxlU2lkZVwiXG5cdFx0XHRcdFthbHBoYVRlc3RdPVwiYWxwaGFUZXN0KClcIlxuXHRcdFx0XHRbYWxwaGFNYXBdPVwidGV4dHVyZSgpXCJcblx0XHRcdFx0W29wYWNpdHldPVwiZGVidWcoKSA/IDEgOiAwXCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWw+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodFNoYWRvd1NoYWRlciB7XG5cdHByb3RlY3RlZCByZWFkb25seSBEb3VibGVTaWRlID0gRG91YmxlU2lkZTtcblxuXHRzaGFkZXIgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRTcG90TGlnaHRTaGFkb3dPcHRpb25zKSB9KTtcblxuXHRtZXNoID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cblx0cHJpdmF0ZSBzcG90TGlnaHQgPSBpbmplY3QoTmd0c1Nwb3RMaWdodCk7XG5cdGRlYnVnID0gdGhpcy5zcG90TGlnaHQuZGVidWc7XG5cblx0c2NhbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlJyk7XG5cdGFscGhhVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnYWxwaGFUZXN0Jyk7XG5cblx0cHJpdmF0ZSB3aWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnd2lkdGgnKTtcblx0cHJpdmF0ZSBoZWlnaHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hlaWdodCcpO1xuXHRwcml2YXRlIG1hcCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFwJyk7XG5cdHByaXZhdGUgZGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc3RhbmNlJyk7XG5cblx0cHJpdmF0ZSByZW5kZXJUYXJnZXQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBXZWJHTFJlbmRlclRhcmdldCh0aGlzLndpZHRoKCksIHRoaXMuaGVpZ2h0KCksIHtcblx0XHRcdGZvcm1hdDogUkdCQUZvcm1hdCxcblx0XHRcdHN0ZW5jaWxCdWZmZXI6IGZhbHNlLFxuXHRcdFx0Ly8gZGVwdGhUZXh0dXJlOiBudWxsIVxuXHRcdH0pO1xuXHR9KTtcblxuXHR0ZXh0dXJlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldCA9IHRoaXMucmVuZGVyVGFyZ2V0KCk7XG5cdFx0cmVuZGVyVGFyZ2V0LnRleHR1cmUud3JhcFQgPSByZW5kZXJUYXJnZXQudGV4dHVyZS53cmFwUyA9IFJlcGVhdFdyYXBwaW5nO1xuXHRcdHJldHVybiByZW5kZXJUYXJnZXQudGV4dHVyZTtcblx0fSk7XG5cblx0cHJpdmF0ZSBmc1F1YWQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBGdWxsU2NyZWVuUXVhZChcblx0XHRcdG5ldyBTaGFkZXJNYXRlcmlhbCh7XG5cdFx0XHRcdHVuaWZvcm1zOiB0aGlzLnVuaWZvcm1zLFxuXHRcdFx0XHR2ZXJ0ZXhTaGFkZXI6IC8qIGxhbmd1YWdlPWdsc2wgZ2xzbCAqLyBgXG4gICAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjtcblxuICAgICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICAgIHZVdiA9IHV2O1xuICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG5cdFx0XHRcdGZyYWdtZW50U2hhZGVyOiB0aGlzLnNoYWRlcigpLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fSk7XG5cblx0cHJpdmF0ZSB1bmlmb3JtcyA9IHtcblx0XHR1U2hhZG93TWFwOiB7IHZhbHVlOiB1bmRlZmluZWQgYXMgVGV4dHVyZSB8IHVuZGVmaW5lZCB9LFxuXHRcdHVUaW1lOiB7IHZhbHVlOiAwIH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaCwgUGxhbmVHZW9tZXRyeSwgTWVzaEJhc2ljTWF0ZXJpYWwgfSk7XG5cblx0XHRpbmplY3RTcG90TGlnaHRDb21tb24odGhpcy5zcG90TGlnaHQuc3BvdExpZ2h0LCB0aGlzLm1lc2gsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLmRpc3RhbmNlKTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnVuaWZvcm1zLnVTaGFkb3dNYXAudmFsdWUgPSB0aGlzLm1hcCgpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGZzUXVhZCA9IHRoaXMuZnNRdWFkKCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRmc1F1YWQubWF0ZXJpYWwuZGlzcG9zZSgpO1xuXHRcdFx0XHRmc1F1YWQuZGlzcG9zZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVuZGVyVGFyZ2V0ID0gdGhpcy5yZW5kZXJUYXJnZXQoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdHJlbmRlclRhcmdldC5kaXNwb3NlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBnbCwgZGVsdGEgfSkgPT4ge1xuXHRcdFx0dGhpcy51bmlmb3Jtcy51VGltZS52YWx1ZSArPSBkZWx0YTtcblxuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KHRoaXMucmVuZGVyVGFyZ2V0KCkpO1xuXHRcdFx0dGhpcy5mc1F1YWQoKS5yZW5kZXIoZ2wpO1xuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXHRcdH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3BvdC1saWdodC1zaGFkb3ctbm8tc2hhZGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2ggI21lc2ggW3NjYWxlXT1cInNjYWxlKClcIiBbY2FzdFNoYWRvd109XCJ0cnVlXCI+XG5cdFx0XHQ8bmd0LXBsYW5lLWdlb21ldHJ5IC8+XG5cdFx0XHQ8bmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWxcblx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRbc2lkZV09XCJEb3VibGVTaWRlXCJcblx0XHRcdFx0W2FscGhhVGVzdF09XCJhbHBoYVRlc3QoKVwiXG5cdFx0XHRcdFthbHBoYU1hcF09XCJtYXAoKVwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cImRlYnVnKCkgPyAxIDogMFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHQ8L25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTcG90TGlnaHRTaGFkb3dOb1NoYWRlciB7XG5cdHByb3RlY3RlZCByZWFkb25seSBEb3VibGVTaWRlID0gRG91YmxlU2lkZTtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdFNwb3RMaWdodFNoYWRvd09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0U3BvdExpZ2h0U2hhZG93T3B0aW9ucykgfSk7XG5cblx0bWVzaCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g+PignbWVzaCcpO1xuXG5cdHByaXZhdGUgc3BvdExpZ2h0ID0gaW5qZWN0KE5ndHNTcG90TGlnaHQpO1xuXHRkZWJ1ZyA9IHRoaXMuc3BvdExpZ2h0LmRlYnVnO1xuXG5cdGFscGhhVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnYWxwaGFUZXN0Jyk7XG5cdHNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZScpO1xuXHRtYXAgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgbWFwID0gdGhpcy5vcHRpb25zKCkubWFwO1xuXHRcdGlmIChtYXApIHtcblx0XHRcdG1hcC53cmFwUyA9IG1hcC53cmFwVCA9IFJlcGVhdFdyYXBwaW5nO1xuXHRcdH1cblx0XHRyZXR1cm4gbWFwO1xuXHR9KTtcblxuXHRwcml2YXRlIHdpZHRoID0gcGljayh0aGlzLm9wdGlvbnMsICd3aWR0aCcpO1xuXHRwcml2YXRlIGhlaWdodCA9IHBpY2sodGhpcy5vcHRpb25zLCAnaGVpZ2h0Jyk7XG5cdHByaXZhdGUgZGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc3RhbmNlJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaCwgUGxhbmVHZW9tZXRyeSwgTWVzaEJhc2ljTWF0ZXJpYWwgfSk7XG5cblx0XHRpbmplY3RTcG90TGlnaHRDb21tb24odGhpcy5zcG90TGlnaHQuc3BvdExpZ2h0LCB0aGlzLm1lc2gsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLmRpc3RhbmNlKTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQtc2hhZG93Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHNoYWRlcigpOyBhcyBzaGFkZXIpIHtcblx0XHRcdDxuZ3RzLXNwb3QtbGlnaHQtc2hhZG93LXNoYWRlciBbc2hhZGVyXT1cInNoYWRlclwiIFtvcHRpb25zXT1cIm9wdGlvbnMoKVwiIC8+XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQ8bmd0cy1zcG90LWxpZ2h0LXNoYWRvdy1uby1zaGFkZXIgW29wdGlvbnNdPVwib3B0aW9ucygpXCIgLz5cblx0XHR9XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzU3BvdExpZ2h0U2hhZG93U2hhZGVyLCBOZ3RzU3BvdExpZ2h0U2hhZG93Tm9TaGFkZXJdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodFNoYWRvdyB7XG5cdHNoYWRlciA9IGlucHV0PHN0cmluZz4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRTcG90TGlnaHRTaGFkb3dPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdFNwb3RMaWdodFNoYWRvd09wdGlvbnMpIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1Nwb3RMaWdodE9wdGlvbnMgPSB7XG5cdG9wYWNpdHk6IDEsXG5cdGNvbG9yOiAnd2hpdGUnLFxuXHRkaXN0YW5jZTogNSxcblx0YW5nbGU6IDAuMTUsXG5cdGF0dGVudWF0aW9uOiA1LFxuXHRhbmdsZVBvd2VyOiA1LFxuXHR2b2x1bWV0cmljOiB0cnVlLFxuXHRkZWJ1ZzogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXA+XG5cdFx0XHQ8bmd0LXNwb3QtbGlnaHRcblx0XHRcdFx0I3Nwb3RMaWdodFxuXHRcdFx0XHRbYW5nbGVdPVwiYW5nbGUoKVwiXG5cdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0W2Rpc3RhbmNlXT1cImRpc3RhbmNlKClcIlxuXHRcdFx0XHRbY2FzdFNoYWRvd109XCJ0cnVlXCJcblx0XHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHRcdD5cblx0XHRcdFx0QGlmICh2b2x1bWV0cmljKCkpIHtcblx0XHRcdFx0XHQ8bmd0cy12b2x1bWV0cmljLW1lc2ggW29wdGlvbnNdPVwidm9sdW1ldHJpY09wdGlvbnMoKVwiIC8+XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0XHQ8bmd0cy1oZWxwZXIgW3R5cGVdPVwiU3BvdExpZ2h0SGVscGVyXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0PC9uZ3Qtc3BvdC1saWdodD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RzVm9sdW1ldHJpY01lc2gsIE5ndHNIZWxwZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3BvdExpZ2h0IHtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IFNwb3RMaWdodEhlbHBlciA9IFNwb3RMaWdodEhlbHBlcjtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdvcGFjaXR5Jyxcblx0XHQncmFkaXVzVG9wJyxcblx0XHQncmFkaXVzQm90dG9tJyxcblx0XHQnZGVwdGhCdWZmZXInLFxuXHRcdCdjb2xvcicsXG5cdFx0J2Rpc3RhbmNlJyxcblx0XHQnYW5nbGUnLFxuXHRcdCdhdHRlbnVhdGlvbicsXG5cdFx0J2FuZ2xlUG93ZXInLFxuXHRcdCd2b2x1bWV0cmljJyxcblx0XHQnZGVidWcnLFxuXHRdKTtcblx0dm9sdW1ldHJpY09wdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgW1xuXHRcdCdvcGFjaXR5Jyxcblx0XHQncmFkaXVzVG9wJyxcblx0XHQncmFkaXVzQm90dG9tJyxcblx0XHQnZGVwdGhCdWZmZXInLFxuXHRcdCdjb2xvcicsXG5cdFx0J2Rpc3RhbmNlJyxcblx0XHQnYW5nbGUnLFxuXHRcdCdhdHRlbnVhdGlvbicsXG5cdFx0J2FuZ2xlUG93ZXInLFxuXHRcdCdkZWJ1ZycsXG5cdF0pO1xuXG5cdHNwb3RMaWdodCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFNwb3RMaWdodD4+KCdzcG90TGlnaHQnKTtcblxuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0YW5nbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuZ2xlJyk7XG5cdGNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcicpO1xuXHRkaXN0YW5jZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzdGFuY2UnKTtcblx0dm9sdW1ldHJpYyA9IHBpY2sodGhpcy5vcHRpb25zLCAndm9sdW1ldHJpYycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwLCBTcG90TGlnaHQgfSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, inject, input, output, signal, } from '@angular/core';
|
|
2
2
|
import { extend, NgtArgs, omit, pick } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';
|
|
6
5
|
import { NgtsAccumulativeShadows } from './accumulative-shadows';
|
|
7
6
|
import { NgtsBounds } from './bounds';
|
|
8
7
|
import { NgtsCenter } from './center';
|
|
9
8
|
import { NgtsContactShadows } from './contact-shadows';
|
|
10
|
-
import { NgtsEnvironment } from './environment';
|
|
9
|
+
import { NgtsEnvironment } from './environment/environment';
|
|
11
10
|
import { NgtsRandomizedLights } from './randomized-lights';
|
|
12
11
|
import * as i0 from "@angular/core";
|
|
13
12
|
const presets = {
|
|
@@ -39,20 +38,17 @@ export class NgtsStageRefit {
|
|
|
39
38
|
constructor() {
|
|
40
39
|
this.radius = input.required();
|
|
41
40
|
this.adjustCamera = input.required();
|
|
42
|
-
const autoEffect = injectAutoEffect();
|
|
43
41
|
const bounds = inject(NgtsBounds);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
bounds.refresh().clip().fit();
|
|
49
|
-
});
|
|
42
|
+
effect(() => {
|
|
43
|
+
const [, adjustCamera] = [this.radius(), this.adjustCamera()];
|
|
44
|
+
if (adjustCamera)
|
|
45
|
+
bounds.refresh().clip().fit();
|
|
50
46
|
});
|
|
51
47
|
}
|
|
52
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
53
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: true, transformFunction: null }, adjustCamera: { classPropertyName: "adjustCamera", publicName: "adjustCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
54
50
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStageRefit, decorators: [{
|
|
56
52
|
type: Directive,
|
|
57
53
|
args: [{ standalone: true, selector: 'ngts-stage-refit' }]
|
|
58
54
|
}], ctorParameters: () => [] });
|
|
@@ -132,8 +128,8 @@ export class NgtsStage {
|
|
|
132
128
|
this.dims.set({ radius: boundingSphere.radius, width, height, depth });
|
|
133
129
|
this.centered.emit($event);
|
|
134
130
|
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { centered: "centered" }, ngImport: i0, template: `
|
|
137
133
|
<ngt-ambient-light [intensity]="intensity() / 3" />
|
|
138
134
|
<ngt-spot-light
|
|
139
135
|
[penumbra]="1"
|
|
@@ -174,7 +170,7 @@ export class NgtsStage {
|
|
|
174
170
|
}
|
|
175
171
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["options"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["options"], outputs: ["centered"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["options"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["options"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment", inputs: ["options"], outputs: ["envSet"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
176
172
|
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStage, decorators: [{
|
|
178
174
|
type: Component,
|
|
179
175
|
args: [{
|
|
180
176
|
selector: 'ngts-stage',
|
|
@@ -233,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
233
229
|
],
|
|
234
230
|
}]
|
|
235
231
|
}], ctorParameters: () => [] });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL3N0YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQVksSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFrQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBc0MsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQWtELE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBK0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFeEYsTUFBTSxPQUFPLEdBQUc7SUFDZixTQUFTLEVBQUU7UUFDVixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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OztFQXVDVCw0REFJQSxPQUFPLGdGQUNQLFVBQVUsNkVBaEVDLGNBQWMsaUdBa0V6QixVQUFVLG9HQUNWLGtCQUFrQixzRkFDbEIsdUJBQXVCLDJGQUN2QixlQUFlLHVHQUNmLG9CQUFvQjs7MkZBR1QsU0FBUztrQkF4RHJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVDVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRTt3QkFDUixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLG9CQUFvQjtxQkFDcEI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHREaXJlY3RpdmUsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0QXJncywgTmd0R3JvdXAsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLCBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c09wdGlvbnMgfSBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmltcG9ydCB7IE5ndHNCb3VuZHMgfSBmcm9tICcuL2JvdW5kcyc7XG5pbXBvcnQgeyBOZ3RzQ2VudGVyLCBOZ3RzQ2VudGVyT3B0aW9ucywgTmd0c0NlbnRlclN0YXRlIH0gZnJvbSAnLi9jZW50ZXInO1xuaW1wb3J0IHsgTmd0c0NvbnRhY3RTaGFkb3dzLCBOZ3RzQ29udGFjdFNoYWRvd3NPcHRpb25zIH0gZnJvbSAnLi9jb250YWN0LXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50LCBOZ3RzRW52aXJvbm1lbnRPcHRpb25zLCBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBOZ3RzUmFuZG9taXplZExpZ2h0cywgTmd0c1JhbmRvbWl6ZWRMaWdodHNPcHRpb25zIH0gZnJvbSAnLi9yYW5kb21pemVkLWxpZ2h0cyc7XG5cbmNvbnN0IHByZXNldHMgPSB7XG5cdHJlbWJyYW5kdDoge1xuXHRcdG1haW46IFsxLCAyLCAxXSxcblx0XHRmaWxsOiBbLTIsIC0wLjUsIC0yXSxcblx0fSxcblx0cG9ydHJhaXQ6IHtcblx0XHRtYWluOiBbLTEsIDIsIDAuNV0sXG5cdFx0ZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuXHR9LFxuXHR1cGZyb250OiB7XG5cdFx0bWFpbjogWzAsIDIsIDFdLFxuXHRcdGZpbGw6IFstMSwgMC41LCAtMS41XSxcblx0fSxcblx0c29mdDoge1xuXHRcdG1haW46IFstMiwgNCwgNF0sXG5cdFx0ZmlsbDogWy0xLCAwLjUsIC0xLjVdLFxuXHR9LFxufSBhcyBjb25zdDtcblxudHlwZSBOZ3RzU3RhZ2VTaGFkb3dzT3B0aW9ucyA9IFBhcnRpYWw8Tmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3NPcHRpb25zPiAmXG5cdFBhcnRpYWw8Tmd0c1JhbmRvbWl6ZWRMaWdodHNPcHRpb25zPiAmXG5cdFBhcnRpYWw8Tmd0c0NvbnRhY3RTaGFkb3dzT3B0aW9ucz4gJiB7XG5cdFx0dHlwZTogJ2NvbnRhY3QnIHwgJ2FjY3VtdWxhdGl2ZSc7XG5cdFx0LyoqIFNoYWRvdyBwbGFuZSBvZmZzZXQsIGRlZmF1bHQ6IDAgKi9cblx0XHRvZmZzZXQ6IG51bWJlcjtcblx0XHQvKiogU2hhZG93IGJpYXMsIGRlZmF1bHQ6IC0wLjAwMDEgKi9cblx0XHRiaWFzOiBudW1iZXI7XG5cdFx0LyoqIFNoYWRvdyBub3JtYWwgYmlhcywgZGVmYXVsdDogMCAqL1xuXHRcdG5vcm1hbEJpYXM6IG51bWJlcjtcblx0XHQvKiogU2hhZG93IG1hcCBzaXplLCBkZWZhdWx0OiAxMDI0ICovXG5cdFx0c2l6ZTogbnVtYmVyO1xuXHR9O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTdGFnZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEdyb3VwPiB7XG5cdC8qKiBMaWdodGluZyBzZXR1cCwgZGVmYXVsdDogXCJyZW1icmFuZHRcIiAqL1xuXHRwcmVzZXQ6XG5cdFx0fCAncmVtYnJhbmR0J1xuXHRcdHwgJ3BvcnRyYWl0J1xuXHRcdHwgJ3VwZnJvbnQnXG5cdFx0fCAnc29mdCdcblx0XHR8IHsgbWFpbjogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdOyBmaWxsOiBbeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcl0gfTtcblx0LyoqIENvbnRyb2xzIHRoZSBncm91bmQgc2hhZG93cywgZGVmYXVsdDogXCJjb250YWN0XCIgKi9cblx0c2hhZG93czogYm9vbGVhbiB8ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnIHwgTmd0c1N0YWdlU2hhZG93c09wdGlvbnM7XG5cdC8qKiBPcHRpb25hbGx5IHdyYXBzIGFuZCB0aGVyZWJ5IGNlbnRlcnMgdGhlIG1vZGVscyB1c2luZyA8Qm91bmRzPiwgY2FuIGFsc28gYmUgYSBtYXJnaW4sIGRlZmF1bHQ6IHRydWUgKi9cblx0YWRqdXN0Q2FtZXJhOiBib29sZWFuIHwgbnVtYmVyO1xuXHQvKiogVGhlIGRlZmF1bHQgZW52aXJvbm1lbnQsIGRlZmF1bHQ6IFwiY2l0eVwiICovXG5cdGVudmlyb25tZW50OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzIHwgUGFydGlhbDxOZ3RzRW52aXJvbm1lbnRPcHRpb25zPiB8IG51bGw7XG5cdC8qKiBUaGUgbGlnaHRpbmcgaW50ZW5zaXR5LCBkZWZhdWx0OiAwLjUgKi9cblx0aW50ZW5zaXR5OiBudW1iZXI7XG5cdC8qKiBUbyBhZGp1c3QgY2VudGVyaW5nLCBkZWZhdWx0OiB1bmRlZmluZWQgKi9cblx0Y2VudGVyPzogUGFydGlhbDxOZ3RzQ2VudGVyT3B0aW9ucz47XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzU3RhZ2VPcHRpb25zID0ge1xuXHRwcmVzZXQ6ICdyZW1icmFuZHQnLFxuXHRzaGFkb3dzOiAnY29udGFjdCcsXG5cdGFkanVzdENhbWVyYTogdHJ1ZSxcblx0ZW52aXJvbm1lbnQ6ICdjaXR5Jyxcblx0aW50ZW5zaXR5OiAwLjUsXG59O1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZ3RzLXN0YWdlLXJlZml0JyB9KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFnZVJlZml0IHtcblx0cmFkaXVzID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXHRhZGp1c3RDYW1lcmEgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3QgYm91bmRzID0gaW5qZWN0KE5ndHNCb3VuZHMpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbLCBhZGp1c3RDYW1lcmFdID0gW3RoaXMucmFkaXVzKCksIHRoaXMuYWRqdXN0Q2FtZXJhKCldO1xuXHRcdFx0XHRpZiAoYWRqdXN0Q2FtZXJhKSBib3VuZHMucmVmcmVzaCgpLmNsaXAoKS5maXQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3RhZ2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cImludGVuc2l0eSgpIC8gM1wiIC8+XG5cdFx0PG5ndC1zcG90LWxpZ2h0XG5cdFx0XHRbcGVudW1icmFdPVwiMVwiXG5cdFx0XHRbcG9zaXRpb25dPVwiW2NvbmZpZygpLm1haW5bMF0gKiByYWRpdXMoKSwgY29uZmlnKCkubWFpblsxXSAqIHJhZGl1cygpLCBjb25maWcoKS5tYWluWzJdICogcmFkaXVzKCldXCJcblx0XHRcdFtpbnRlbnNpdHldPVwiaW50ZW5zaXR5KCkgKiAyXCJcblx0XHRcdFtjYXN0U2hhZG93XT1cIiEhc2hhZG93cygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJzaGFkb3dCaWFzKClcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJub3JtYWxCaWFzKClcIiBhdHRhY2g9XCJzaGFkb3cubm9ybWFsQmlhc1wiIC8+XG5cdFx0XHQ8bmd0LXZlY3RvcjIgKmFyZ3M9XCJbc2hhZG93U2l6ZSgpLCBzaGFkb3dTaXplKCldXCIgYXR0YWNoPVwic2hhZG93Lm1hcFNpemVcIiAvPlxuXHRcdDwvbmd0LXNwb3QtbGlnaHQ+XG5cdFx0PG5ndC1wb2ludC1saWdodFxuXHRcdFx0W3Bvc2l0aW9uXT1cIltjb25maWcoKS5maWxsWzBdICogcmFkaXVzKCksIGNvbmZpZygpLmZpbGxbMV0gKiByYWRpdXMoKSwgY29uZmlnKCkuZmlsbFsyXSAqIHJhZGl1cygpXVwiXG5cdFx0XHRbaW50ZW5zaXR5XT1cImludGVuc2l0eSgpXCJcblx0XHQvPlxuXG5cdFx0PG5ndHMtYm91bmRzIFtvcHRpb25zXT1cImJvdW5kc09wdGlvbnMoKVwiPlxuXHRcdFx0PG5ndHMtc3RhZ2UtcmVmaXQgW3JhZGl1c109XCJyYWRpdXMoKVwiIFthZGp1c3RDYW1lcmFdPVwiISFhZGp1c3RDYW1lcmEoKVwiIC8+XG5cdFx0XHQ8bmd0cy1jZW50ZXIgW29wdGlvbnNdPVwiY2VudGVyT3B0aW9ucygpXCIgKGNlbnRlcmVkKT1cIm9uQ2VudGVyKCRldmVudClcIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0cy1jZW50ZXI+XG5cdFx0PC9uZ3RzLWJvdW5kcz5cblxuXHRcdDxuZ3QtZ3JvdXAgW3Bvc2l0aW9uXT1cIlswLCAtaGVpZ2h0KCkgLyAyIC0gc2hhZG93T2Zmc2V0KCkgLyAyLCAwXVwiPlxuXHRcdFx0QGlmIChjb250YWN0U2hhZG93KCkpIHtcblx0XHRcdFx0PG5ndHMtY29udGFjdC1zaGFkb3dzIFtvcHRpb25zXT1cInNoYWRvd09wdGlvbnMoKVwiIC8+XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAoYWNjdW11bGF0aXZlU2hhZG93KCkpIHtcblx0XHRcdFx0PG5ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3MgW29wdGlvbnNdPVwic2hhZG93T3B0aW9ucygpXCI+XG5cdFx0XHRcdFx0PG5ndHMtcmFuZG9taXplZC1saWdodHMgW29wdGlvbnNdPVwicmFuZG9taXplZExpZ2h0c09wdGlvbnMoKVwiIC8+XG5cdFx0XHRcdDwvbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cz5cblx0XHRcdH1cblx0XHQ8L25ndC1ncm91cD5cblxuXHRcdEBpZiAoZW52aXJvbm1lbnQoKSkge1xuXHRcdFx0PG5ndHMtZW52aXJvbm1lbnQgW29wdGlvbnNdPVwiZW52aXJvbm1lbnRPcHRpb25zKClcIiAvPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW1xuXHRcdE5ndEFyZ3MsXG5cdFx0Tmd0c0JvdW5kcyxcblx0XHROZ3RzU3RhZ2VSZWZpdCxcblx0XHROZ3RzQ2VudGVyLFxuXHRcdE5ndHNDb250YWN0U2hhZG93cyxcblx0XHROZ3RzQWNjdW11bGF0aXZlU2hhZG93cyxcblx0XHROZ3RzRW52aXJvbm1lbnQsXG5cdFx0Tmd0c1JhbmRvbWl6ZWRMaWdodHMsXG5cdF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFnZSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cHJpdmF0ZSBwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsncHJlc2V0JywgJ3NoYWRvd3MnLCAnYWRqdXN0Q2FtZXJhJywgJ2Vudmlyb25tZW50JywgJ2ludGVuc2l0eScsICdjZW50ZXInXSk7XG5cblx0Y2VudGVyZWQgPSBvdXRwdXQ8Tmd0c0NlbnRlclN0YXRlPigpO1xuXG5cdHByaXZhdGUgZGltcyA9IHNpZ25hbCh7IHJhZGl1czogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgZGVwdGg6IDAgfSk7XG5cdHJhZGl1cyA9IHBpY2sodGhpcy5kaW1zLCAncmFkaXVzJyk7XG5cdGhlaWdodCA9IHBpY2sodGhpcy5kaW1zLCAnaGVpZ2h0Jyk7XG5cblx0Y2VudGVyID0gcGljayh0aGlzLm9wdGlvbnMsICdjZW50ZXInKTtcblx0YWRqdXN0Q2FtZXJhID0gcGljayh0aGlzLm9wdGlvbnMsICdhZGp1c3RDYW1lcmEnKTtcblx0bWFyZ2luID0gY29tcHV0ZWQoKCkgPT4gTnVtYmVyKHRoaXMuYWRqdXN0Q2FtZXJhKCkpKTtcblx0aW50ZW5zaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdpbnRlbnNpdHknKTtcblx0c2hhZG93cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2hhZG93cycpO1xuXHRlbnZpcm9ubWVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW52aXJvbm1lbnQnKTtcblx0cHJlc2V0ID0gcGljayh0aGlzLm9wdGlvbnMsICdwcmVzZXQnKTtcblxuXHRjb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcHJlc2V0ID0gdGhpcy5wcmVzZXQoKTtcblx0XHRyZXR1cm4gdHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQ7XG5cdH0pO1xuXG5cdHNoYWRvd0JpYXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLmJpYXMgPz8gLTAuMDAwMSk7XG5cdG5vcm1hbEJpYXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLm5vcm1hbEJpYXMgPz8gMCk7XG5cdHNoYWRvd1NpemUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLnNpemUgPz8gMTAyNCk7XG5cdHNoYWRvd09mZnNldCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnNoYWRvd3MoKSBhcyBOZ3RzU3RhZ2VTaGFkb3dzT3B0aW9ucykub2Zmc2V0ID8/IDApO1xuXHRjb250YWN0U2hhZG93ID0gY29tcHV0ZWQoXG5cdFx0KCkgPT4gdGhpcy5zaGFkb3dzKCkgPT09ICdjb250YWN0JyB8fCAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpPy50eXBlID09PSAnY29udGFjdCcsXG5cdCk7XG5cdGFjY3VtdWxhdGl2ZVNoYWRvdyA9IGNvbXB1dGVkKFxuXHRcdCgpID0+IHRoaXMuc2hhZG93cygpID09PSAnYWNjdW11bGF0aXZlJyB8fCAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpPy50eXBlID09PSAnYWNjdW11bGF0aXZlJyxcblx0KTtcblx0c2hhZG93T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzaGFkb3dzID0gdGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnM7XG5cblx0XHRpZiAodGhpcy5jb250YWN0U2hhZG93KCkpIHtcblx0XHRcdHJldHVybiB7IHNjYWxlOiB0aGlzLnJhZGl1cygpICogNCwgZmFyOiB0aGlzLnJhZGl1cygpLCBibHVyOiAyLCAuLi5zaGFkb3dzIH07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYWNjdW11bGF0aXZlU2hhZG93KCkpIHtcblx0XHRcdHJldHVybiB7IHRlbXBvcmFsOiB0cnVlLCBmcmFtZXM6IDEwMCwgYWxwaGFUZXN0OiAwLjksIHRvbmVNYXBwZWQ6IHRydWUsIHNjYWxlOiB0aGlzLnJhZGl1cygpICogNCwgLi4uc2hhZG93cyB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0eXBlb2Ygc2hhZG93cyA9PT0gJ29iamVjdCcgPyBzaGFkb3dzIDoge307XG5cdH0pO1xuXHRyYW5kb21pemVkTGlnaHRzT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRpZiAoIXRoaXMuYWNjdW11bGF0aXZlU2hhZG93KCkpIHJldHVybiB7fTtcblx0XHRjb25zdCBzaGFkb3dzID0gdGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnM7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFtb3VudDogc2hhZG93cy5hbW91bnQgPz8gOCxcblx0XHRcdHJhZGl1czogc2hhZG93cy5yYWRpdXMgPz8gdGhpcy5yYWRpdXMoKSxcblx0XHRcdGFtYmllbnQ6IHNoYWRvd3MuYW1iaWVudCA/PyAwLjUsXG5cdFx0XHRpbnRlbnNpdHk6IHNoYWRvd3MuaW50ZW5zaXR5ID8/IDEsXG5cdFx0XHRwb3NpdGlvbjogW1xuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMF0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMV0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMl0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XSxcblx0XHRcdHNpemU6IHRoaXMucmFkaXVzKCkgKiA0LFxuXHRcdFx0YmlhczogLXRoaXMuc2hhZG93QmlhcygpLFxuXHRcdFx0bWFwU2l6ZTogdGhpcy5zaGFkb3dTaXplKCksXG5cdFx0fSBhcyBQYXJ0aWFsPE5ndHNSYW5kb21pemVkTGlnaHRzT3B0aW9ucz47XG5cdH0pO1xuXHRlbnZpcm9ubWVudE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmVudmlyb25tZW50KCk7XG5cdFx0cmV0dXJuICFlbnZpcm9ubWVudCA/IHt9IDogdHlwZW9mIGVudmlyb25tZW50ID09PSAnc3RyaW5nJyA/IHsgcHJlc2V0OiBlbnZpcm9ubWVudCB9IDogZW52aXJvbm1lbnQ7XG5cdH0pO1xuXG5cdGJvdW5kc09wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdGZpdDogISF0aGlzLmFkanVzdENhbWVyYSgpLFxuXHRcdGNsaXA6ICEhdGhpcy5hZGp1c3RDYW1lcmEoKSxcblx0XHRtYXJnaW46IE51bWJlcih0aGlzLmFkanVzdENhbWVyYSgpKSxcblx0XHRvYnNlcnZlOiB0cnVlLFxuXHRcdC4uLnRoaXMucGFyYW1ldGVycygpLFxuXHR9KSk7XG5cdGNlbnRlck9wdGlvbnMgPSBjb21wdXRlZChcblx0XHQoKSA9PlxuXHRcdFx0KHtcblx0XHRcdFx0Li4uKHRoaXMuY2VudGVyKCkgfHwge30pLFxuXHRcdFx0XHRwb3NpdGlvbjogWzAsIHRoaXMuc2hhZG93T2Zmc2V0KCkgLyAyLCAwXSxcblx0XHRcdH0pIGFzIFBhcnRpYWw8Tmd0c0NlbnRlck9wdGlvbnM+LFxuXHQpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEFtYmllbnRMaWdodCwgU3BvdExpZ2h0LCBQb2ludExpZ2h0LCBHcm91cCwgVmVjdG9yMiB9KTtcblx0fVxuXG5cdG9uQ2VudGVyKCRldmVudDogTmd0c0NlbnRlclN0YXRlKSB7XG5cdFx0Y29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm91bmRpbmdTcGhlcmUgfSA9ICRldmVudDtcblx0XHR0aGlzLmRpbXMuc2V0KHsgcmFkaXVzOiBib3VuZGluZ1NwaGVyZS5yYWRpdXMsIHdpZHRoLCBoZWlnaHQsIGRlcHRoIH0pO1xuXHRcdHRoaXMuY2VudGVyZWQuZW1pdCgkZXZlbnQpO1xuXHR9XG59XG4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL3N0YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQVksSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFrQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBc0MsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFFcEYsT0FBTyxFQUFFLG9CQUFvQixFQUErQixNQUFNLHFCQUFxQixDQUFDOztBQUV4RixNQUFNLE9BQU8sR0FBRztJQUNmLFNBQVMsRUFBRTtRQUNWLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDcEI7SUFDRCxRQUFR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QVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVDVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRTt3QkFDUixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLG9CQUFvQjtxQkFDcEI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0QXJncywgTmd0R3JvdXAsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQsIFNwb3RMaWdodCwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzLCBOZ3RzQWNjdW11bGF0aXZlU2hhZG93c09wdGlvbnMgfSBmcm9tICcuL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmltcG9ydCB7IE5ndHNCb3VuZHMgfSBmcm9tICcuL2JvdW5kcyc7XG5pbXBvcnQgeyBOZ3RzQ2VudGVyLCBOZ3RzQ2VudGVyT3B0aW9ucywgTmd0c0NlbnRlclN0YXRlIH0gZnJvbSAnLi9jZW50ZXInO1xuaW1wb3J0IHsgTmd0c0NvbnRhY3RTaGFkb3dzLCBOZ3RzQ29udGFjdFNoYWRvd3NPcHRpb25zIH0gZnJvbSAnLi9jb250YWN0LXNoYWRvd3MnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50LCBOZ3RzRW52aXJvbm1lbnRPcHRpb25zIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9pbmplY3QtZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMsIE5ndHNSYW5kb21pemVkTGlnaHRzT3B0aW9ucyB9IGZyb20gJy4vcmFuZG9taXplZC1saWdodHMnO1xuXG5jb25zdCBwcmVzZXRzID0ge1xuXHRyZW1icmFuZHQ6IHtcblx0XHRtYWluOiBbMSwgMiwgMV0sXG5cdFx0ZmlsbDogWy0yLCAtMC41LCAtMl0sXG5cdH0sXG5cdHBvcnRyYWl0OiB7XG5cdFx0bWFpbjogWy0xLCAyLCAwLjVdLFxuXHRcdGZpbGw6IFstMSwgMC41LCAtMS41XSxcblx0fSxcblx0dXBmcm9udDoge1xuXHRcdG1haW46IFswLCAyLCAxXSxcblx0XHRmaWxsOiBbLTEsIDAuNSwgLTEuNV0sXG5cdH0sXG5cdHNvZnQ6IHtcblx0XHRtYWluOiBbLTIsIDQsIDRdLFxuXHRcdGZpbGw6IFstMSwgMC41LCAtMS41XSxcblx0fSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMgPSBQYXJ0aWFsPE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzT3B0aW9ucz4gJlxuXHRQYXJ0aWFsPE5ndHNSYW5kb21pemVkTGlnaHRzT3B0aW9ucz4gJlxuXHRQYXJ0aWFsPE5ndHNDb250YWN0U2hhZG93c09wdGlvbnM+ICYge1xuXHRcdHR5cGU6ICdjb250YWN0JyB8ICdhY2N1bXVsYXRpdmUnO1xuXHRcdC8qKiBTaGFkb3cgcGxhbmUgb2Zmc2V0LCBkZWZhdWx0OiAwICovXG5cdFx0b2Zmc2V0OiBudW1iZXI7XG5cdFx0LyoqIFNoYWRvdyBiaWFzLCBkZWZhdWx0OiAtMC4wMDAxICovXG5cdFx0YmlhczogbnVtYmVyO1xuXHRcdC8qKiBTaGFkb3cgbm9ybWFsIGJpYXMsIGRlZmF1bHQ6IDAgKi9cblx0XHRub3JtYWxCaWFzOiBudW1iZXI7XG5cdFx0LyoqIFNoYWRvdyBtYXAgc2l6ZSwgZGVmYXVsdDogMTAyNCAqL1xuXHRcdHNpemU6IG51bWJlcjtcblx0fTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzU3RhZ2VPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RHcm91cD4ge1xuXHQvKiogTGlnaHRpbmcgc2V0dXAsIGRlZmF1bHQ6IFwicmVtYnJhbmR0XCIgKi9cblx0cHJlc2V0OlxuXHRcdHwgJ3JlbWJyYW5kdCdcblx0XHR8ICdwb3J0cmFpdCdcblx0XHR8ICd1cGZyb250J1xuXHRcdHwgJ3NvZnQnXG5cdFx0fCB7IG1haW46IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXTsgZmlsbDogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIH07XG5cdC8qKiBDb250cm9scyB0aGUgZ3JvdW5kIHNoYWRvd3MsIGRlZmF1bHQ6IFwiY29udGFjdFwiICovXG5cdHNoYWRvd3M6IGJvb2xlYW4gfCAnY29udGFjdCcgfCAnYWNjdW11bGF0aXZlJyB8IE5ndHNTdGFnZVNoYWRvd3NPcHRpb25zO1xuXHQvKiogT3B0aW9uYWxseSB3cmFwcyBhbmQgdGhlcmVieSBjZW50ZXJzIHRoZSBtb2RlbHMgdXNpbmcgPEJvdW5kcz4sIGNhbiBhbHNvIGJlIGEgbWFyZ2luLCBkZWZhdWx0OiB0cnVlICovXG5cdGFkanVzdENhbWVyYTogYm9vbGVhbiB8IG51bWJlcjtcblx0LyoqIFRoZSBkZWZhdWx0IGVudmlyb25tZW50LCBkZWZhdWx0OiBcImNpdHlcIiAqL1xuXHRlbnZpcm9ubWVudDogTmd0c0Vudmlyb25tZW50UHJlc2V0cyB8IFBhcnRpYWw8Tmd0c0Vudmlyb25tZW50T3B0aW9ucz4gfCBudWxsO1xuXHQvKiogVGhlIGxpZ2h0aW5nIGludGVuc2l0eSwgZGVmYXVsdDogMC41ICovXG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHQvKiogVG8gYWRqdXN0IGNlbnRlcmluZywgZGVmYXVsdDogdW5kZWZpbmVkICovXG5cdGNlbnRlcj86IFBhcnRpYWw8Tmd0c0NlbnRlck9wdGlvbnM+O1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1N0YWdlT3B0aW9ucyA9IHtcblx0cHJlc2V0OiAncmVtYnJhbmR0Jyxcblx0c2hhZG93czogJ2NvbnRhY3QnLFxuXHRhZGp1c3RDYW1lcmE6IHRydWUsXG5cdGVudmlyb25tZW50OiAnY2l0eScsXG5cdGludGVuc2l0eTogMC41LFxufTtcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1zdGFnZS1yZWZpdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhZ2VSZWZpdCB7XG5cdHJhZGl1cyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblx0YWRqdXN0Q2FtZXJhID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBib3VuZHMgPSBpbmplY3QoTmd0c0JvdW5kcyk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgWywgYWRqdXN0Q2FtZXJhXSA9IFt0aGlzLnJhZGl1cygpLCB0aGlzLmFkanVzdENhbWVyYSgpXTtcblx0XHRcdGlmIChhZGp1c3RDYW1lcmEpIGJvdW5kcy5yZWZyZXNoKCkuY2xpcCgpLmZpdCgpO1xuXHRcdH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc3RhZ2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cImludGVuc2l0eSgpIC8gM1wiIC8+XG5cdFx0PG5ndC1zcG90LWxpZ2h0XG5cdFx0XHRbcGVudW1icmFdPVwiMVwiXG5cdFx0XHRbcG9zaXRpb25dPVwiW2NvbmZpZygpLm1haW5bMF0gKiByYWRpdXMoKSwgY29uZmlnKCkubWFpblsxXSAqIHJhZGl1cygpLCBjb25maWcoKS5tYWluWzJdICogcmFkaXVzKCldXCJcblx0XHRcdFtpbnRlbnNpdHldPVwiaW50ZW5zaXR5KCkgKiAyXCJcblx0XHRcdFtjYXN0U2hhZG93XT1cIiEhc2hhZG93cygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJzaGFkb3dCaWFzKClcIiBhdHRhY2g9XCJzaGFkb3cuYmlhc1wiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJub3JtYWxCaWFzKClcIiBhdHRhY2g9XCJzaGFkb3cubm9ybWFsQmlhc1wiIC8+XG5cdFx0XHQ8bmd0LXZlY3RvcjIgKmFyZ3M9XCJbc2hhZG93U2l6ZSgpLCBzaGFkb3dTaXplKCldXCIgYXR0YWNoPVwic2hhZG93Lm1hcFNpemVcIiAvPlxuXHRcdDwvbmd0LXNwb3QtbGlnaHQ+XG5cdFx0PG5ndC1wb2ludC1saWdodFxuXHRcdFx0W3Bvc2l0aW9uXT1cIltjb25maWcoKS5maWxsWzBdICogcmFkaXVzKCksIGNvbmZpZygpLmZpbGxbMV0gKiByYWRpdXMoKSwgY29uZmlnKCkuZmlsbFsyXSAqIHJhZGl1cygpXVwiXG5cdFx0XHRbaW50ZW5zaXR5XT1cImludGVuc2l0eSgpXCJcblx0XHQvPlxuXG5cdFx0PG5ndHMtYm91bmRzIFtvcHRpb25zXT1cImJvdW5kc09wdGlvbnMoKVwiPlxuXHRcdFx0PG5ndHMtc3RhZ2UtcmVmaXQgW3JhZGl1c109XCJyYWRpdXMoKVwiIFthZGp1c3RDYW1lcmFdPVwiISFhZGp1c3RDYW1lcmEoKVwiIC8+XG5cdFx0XHQ8bmd0cy1jZW50ZXIgW29wdGlvbnNdPVwiY2VudGVyT3B0aW9ucygpXCIgKGNlbnRlcmVkKT1cIm9uQ2VudGVyKCRldmVudClcIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdDwvbmd0cy1jZW50ZXI+XG5cdFx0PC9uZ3RzLWJvdW5kcz5cblxuXHRcdDxuZ3QtZ3JvdXAgW3Bvc2l0aW9uXT1cIlswLCAtaGVpZ2h0KCkgLyAyIC0gc2hhZG93T2Zmc2V0KCkgLyAyLCAwXVwiPlxuXHRcdFx0QGlmIChjb250YWN0U2hhZG93KCkpIHtcblx0XHRcdFx0PG5ndHMtY29udGFjdC1zaGFkb3dzIFtvcHRpb25zXT1cInNoYWRvd09wdGlvbnMoKVwiIC8+XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAoYWNjdW11bGF0aXZlU2hhZG93KCkpIHtcblx0XHRcdFx0PG5ndHMtYWNjdW11bGF0aXZlLXNoYWRvd3MgW29wdGlvbnNdPVwic2hhZG93T3B0aW9ucygpXCI+XG5cdFx0XHRcdFx0PG5ndHMtcmFuZG9taXplZC1saWdodHMgW29wdGlvbnNdPVwicmFuZG9taXplZExpZ2h0c09wdGlvbnMoKVwiIC8+XG5cdFx0XHRcdDwvbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cz5cblx0XHRcdH1cblx0XHQ8L25ndC1ncm91cD5cblxuXHRcdEBpZiAoZW52aXJvbm1lbnQoKSkge1xuXHRcdFx0PG5ndHMtZW52aXJvbm1lbnQgW29wdGlvbnNdPVwiZW52aXJvbm1lbnRPcHRpb25zKClcIiAvPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW1xuXHRcdE5ndEFyZ3MsXG5cdFx0Tmd0c0JvdW5kcyxcblx0XHROZ3RzU3RhZ2VSZWZpdCxcblx0XHROZ3RzQ2VudGVyLFxuXHRcdE5ndHNDb250YWN0U2hhZG93cyxcblx0XHROZ3RzQWNjdW11bGF0aXZlU2hhZG93cyxcblx0XHROZ3RzRW52aXJvbm1lbnQsXG5cdFx0Tmd0c1JhbmRvbWl6ZWRMaWdodHMsXG5cdF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFnZSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cHJpdmF0ZSBwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsncHJlc2V0JywgJ3NoYWRvd3MnLCAnYWRqdXN0Q2FtZXJhJywgJ2Vudmlyb25tZW50JywgJ2ludGVuc2l0eScsICdjZW50ZXInXSk7XG5cblx0Y2VudGVyZWQgPSBvdXRwdXQ8Tmd0c0NlbnRlclN0YXRlPigpO1xuXG5cdHByaXZhdGUgZGltcyA9IHNpZ25hbCh7IHJhZGl1czogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgZGVwdGg6IDAgfSk7XG5cdHJhZGl1cyA9IHBpY2sodGhpcy5kaW1zLCAncmFkaXVzJyk7XG5cdGhlaWdodCA9IHBpY2sodGhpcy5kaW1zLCAnaGVpZ2h0Jyk7XG5cblx0Y2VudGVyID0gcGljayh0aGlzLm9wdGlvbnMsICdjZW50ZXInKTtcblx0YWRqdXN0Q2FtZXJhID0gcGljayh0aGlzLm9wdGlvbnMsICdhZGp1c3RDYW1lcmEnKTtcblx0bWFyZ2luID0gY29tcHV0ZWQoKCkgPT4gTnVtYmVyKHRoaXMuYWRqdXN0Q2FtZXJhKCkpKTtcblx0aW50ZW5zaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdpbnRlbnNpdHknKTtcblx0c2hhZG93cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2hhZG93cycpO1xuXHRlbnZpcm9ubWVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW52aXJvbm1lbnQnKTtcblx0cHJlc2V0ID0gcGljayh0aGlzLm9wdGlvbnMsICdwcmVzZXQnKTtcblxuXHRjb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcHJlc2V0ID0gdGhpcy5wcmVzZXQoKTtcblx0XHRyZXR1cm4gdHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycgPyBwcmVzZXRzW3ByZXNldF0gOiBwcmVzZXQ7XG5cdH0pO1xuXG5cdHNoYWRvd0JpYXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLmJpYXMgPz8gLTAuMDAwMSk7XG5cdG5vcm1hbEJpYXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLm5vcm1hbEJpYXMgPz8gMCk7XG5cdHNoYWRvd1NpemUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpLnNpemUgPz8gMTAyNCk7XG5cdHNoYWRvd09mZnNldCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnNoYWRvd3MoKSBhcyBOZ3RzU3RhZ2VTaGFkb3dzT3B0aW9ucykub2Zmc2V0ID8/IDApO1xuXHRjb250YWN0U2hhZG93ID0gY29tcHV0ZWQoXG5cdFx0KCkgPT4gdGhpcy5zaGFkb3dzKCkgPT09ICdjb250YWN0JyB8fCAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpPy50eXBlID09PSAnY29udGFjdCcsXG5cdCk7XG5cdGFjY3VtdWxhdGl2ZVNoYWRvdyA9IGNvbXB1dGVkKFxuXHRcdCgpID0+IHRoaXMuc2hhZG93cygpID09PSAnYWNjdW11bGF0aXZlJyB8fCAodGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnMpPy50eXBlID09PSAnYWNjdW11bGF0aXZlJyxcblx0KTtcblx0c2hhZG93T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzaGFkb3dzID0gdGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnM7XG5cblx0XHRpZiAodGhpcy5jb250YWN0U2hhZG93KCkpIHtcblx0XHRcdHJldHVybiB7IHNjYWxlOiB0aGlzLnJhZGl1cygpICogNCwgZmFyOiB0aGlzLnJhZGl1cygpLCBibHVyOiAyLCAuLi5zaGFkb3dzIH07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYWNjdW11bGF0aXZlU2hhZG93KCkpIHtcblx0XHRcdHJldHVybiB7IHRlbXBvcmFsOiB0cnVlLCBmcmFtZXM6IDEwMCwgYWxwaGFUZXN0OiAwLjksIHRvbmVNYXBwZWQ6IHRydWUsIHNjYWxlOiB0aGlzLnJhZGl1cygpICogNCwgLi4uc2hhZG93cyB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0eXBlb2Ygc2hhZG93cyA9PT0gJ29iamVjdCcgPyBzaGFkb3dzIDoge307XG5cdH0pO1xuXHRyYW5kb21pemVkTGlnaHRzT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRpZiAoIXRoaXMuYWNjdW11bGF0aXZlU2hhZG93KCkpIHJldHVybiB7fTtcblx0XHRjb25zdCBzaGFkb3dzID0gdGhpcy5zaGFkb3dzKCkgYXMgTmd0c1N0YWdlU2hhZG93c09wdGlvbnM7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFtb3VudDogc2hhZG93cy5hbW91bnQgPz8gOCxcblx0XHRcdHJhZGl1czogc2hhZG93cy5yYWRpdXMgPz8gdGhpcy5yYWRpdXMoKSxcblx0XHRcdGFtYmllbnQ6IHNoYWRvd3MuYW1iaWVudCA/PyAwLjUsXG5cdFx0XHRpbnRlbnNpdHk6IHNoYWRvd3MuaW50ZW5zaXR5ID8/IDEsXG5cdFx0XHRwb3NpdGlvbjogW1xuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMF0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMV0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XHR0aGlzLmNvbmZpZygpLm1haW5bMl0gKiB0aGlzLnJhZGl1cygpLFxuXHRcdFx0XSxcblx0XHRcdHNpemU6IHRoaXMucmFkaXVzKCkgKiA0LFxuXHRcdFx0YmlhczogLXRoaXMuc2hhZG93QmlhcygpLFxuXHRcdFx0bWFwU2l6ZTogdGhpcy5zaGFkb3dTaXplKCksXG5cdFx0fSBhcyBQYXJ0aWFsPE5ndHNSYW5kb21pemVkTGlnaHRzT3B0aW9ucz47XG5cdH0pO1xuXHRlbnZpcm9ubWVudE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmVudmlyb25tZW50KCk7XG5cdFx0cmV0dXJuICFlbnZpcm9ubWVudCA/IHt9IDogdHlwZW9mIGVudmlyb25tZW50ID09PSAnc3RyaW5nJyA/IHsgcHJlc2V0OiBlbnZpcm9ubWVudCB9IDogZW52aXJvbm1lbnQ7XG5cdH0pO1xuXG5cdGJvdW5kc09wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdGZpdDogISF0aGlzLmFkanVzdENhbWVyYSgpLFxuXHRcdGNsaXA6ICEhdGhpcy5hZGp1c3RDYW1lcmEoKSxcblx0XHRtYXJnaW46IE51bWJlcih0aGlzLmFkanVzdENhbWVyYSgpKSxcblx0XHRvYnNlcnZlOiB0cnVlLFxuXHRcdC4uLnRoaXMucGFyYW1ldGVycygpLFxuXHR9KSk7XG5cdGNlbnRlck9wdGlvbnMgPSBjb21wdXRlZChcblx0XHQoKSA9PlxuXHRcdFx0KHtcblx0XHRcdFx0Li4uKHRoaXMuY2VudGVyKCkgfHwge30pLFxuXHRcdFx0XHRwb3NpdGlvbjogWzAsIHRoaXMuc2hhZG93T2Zmc2V0KCkgLyAyLCAwXSxcblx0XHRcdH0pIGFzIFBhcnRpYWw8Tmd0c0NlbnRlck9wdGlvbnM+LFxuXHQpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEFtYmllbnRMaWdodCwgU3BvdExpZ2h0LCBQb2ludExpZ2h0LCBHcm91cCwgVmVjdG9yMiB9KTtcblx0fVxuXG5cdG9uQ2VudGVyKCRldmVudDogTmd0c0NlbnRlclN0YXRlKSB7XG5cdFx0Y29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm91bmRpbmdTcGhlcmUgfSA9ICRldmVudDtcblx0XHR0aGlzLmRpbXMuc2V0KHsgcmFkaXVzOiBib3VuZGluZ1NwaGVyZS5yYWRpdXMsIHdpZHRoLCBoZWlnaHQsIGRlcHRoIH0pO1xuXHRcdHRoaXMuY2VudGVyZWQuZW1pdCgkZXZlbnQpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import {
|
|
2
|
+
import { computed, Directive, effect, inject, input, untracked } from '@angular/core';
|
|
3
3
|
import { addAfterEffect, injectStore, omit, pick, resolveRef } from 'angular-three';
|
|
4
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
4
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
5
|
import Stats from 'stats-gl';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
@@ -16,48 +15,43 @@ export class NgtsStats {
|
|
|
16
15
|
const parent = pick(this.options, 'parent');
|
|
17
16
|
const domClass = pick(this.options, 'domClass');
|
|
18
17
|
const document = inject(DOCUMENT);
|
|
19
|
-
const autoEffect = injectAutoEffect();
|
|
20
18
|
const store = injectStore();
|
|
21
19
|
const gl = store.select('gl');
|
|
22
20
|
const stats = computed(() => {
|
|
23
21
|
const _gl = gl();
|
|
24
22
|
if (!_gl)
|
|
25
23
|
return null;
|
|
26
|
-
const stats = new Stats({
|
|
27
|
-
...untracked(statsOptions),
|
|
28
|
-
});
|
|
24
|
+
const stats = new Stats({ ...untracked(statsOptions) });
|
|
29
25
|
void stats.init(_gl);
|
|
30
26
|
return stats;
|
|
31
27
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
effect((onCleanup) => {
|
|
29
|
+
const _stats = stats();
|
|
30
|
+
if (!_stats)
|
|
31
|
+
return;
|
|
32
|
+
const [_parent, _domClass] = [resolveRef(parent()), domClass()];
|
|
33
|
+
const target = _parent ?? document.body;
|
|
34
|
+
target.appendChild(_stats.dom);
|
|
35
|
+
const classList = _domClass.split(' ').filter(Boolean);
|
|
36
|
+
if (classList.length)
|
|
37
|
+
_stats.dom.classList.add(...classList);
|
|
38
|
+
const end = addAfterEffect(() => _stats.update());
|
|
39
|
+
onCleanup(() => {
|
|
41
40
|
if (classList.length)
|
|
42
|
-
_stats.dom.classList.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (classList.length)
|
|
46
|
-
_stats.dom.classList.remove(...classList);
|
|
47
|
-
target.removeChild(_stats.dom);
|
|
48
|
-
end();
|
|
49
|
-
};
|
|
41
|
+
_stats.dom.classList.remove(...classList);
|
|
42
|
+
target.removeChild(_stats.dom);
|
|
43
|
+
end();
|
|
50
44
|
});
|
|
51
45
|
});
|
|
52
46
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
54
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStats, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
48
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsStats, isStandalone: true, selector: "ngt-canvas[stats]", inputs: { options: { classPropertyName: "options", publicName: "stats", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
55
49
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsStats, decorators: [{
|
|
57
51
|
type: Directive,
|
|
58
52
|
args: [{
|
|
59
53
|
selector: 'ngt-canvas[stats]',
|
|
60
54
|
standalone: true,
|
|
61
55
|
}]
|
|
62
56
|
}], ctorParameters: () => [] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhdHMvc3JjL2xpYi9zdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssTUFBTSxVQUFVLENBQUM7O0FBUTdCLE1BQU0sY0FBYyxHQUFxQjtJQUN4QyxRQUFRLEVBQUUsRUFBRTtJQUNaLE1BQU0sRUFBRSxJQUFJO0NBQ1osQ0FBQztBQU1GLE1BQU0sT0FBTyxTQUFTO0lBR3JCO1FBRkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRzNGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV0QixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RCxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFcEIsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDaEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDeEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkQsSUFBSSxTQUFTLENBQUMsTUFBTTtnQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM3RCxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFbEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLFNBQVMsQ0FBQyxNQUFNO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsR0FBRyxFQUFFLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F0Q1csU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRBZnRlckVmZmVjdCwgaW5qZWN0U3RvcmUsIG9taXQsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCBTdGF0cyBmcm9tICdzdGF0cy1nbCc7XG5cbmV4cG9ydCB0eXBlIE5ndHNTdGF0c09wdGlvbnMgPSBQYXJ0aWFsPFN0YXRzPiAmIHtcblx0c2hvd1BhbmVsPzogbnVtYmVyO1xuXHRkb21DbGFzczogc3RyaW5nO1xuXHRwYXJlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNTdGF0c09wdGlvbnMgPSB7XG5cdGRvbUNsYXNzOiAnJyxcblx0cGFyZW50OiBudWxsLFxufTtcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnbmd0LWNhbnZhc1tzdGF0c10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhdHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucyksIGFsaWFzOiAnc3RhdHMnIH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHN0YXRzT3B0aW9ucyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3BhcmVudCcsICdkb21DbGFzcyddKTtcblx0XHRjb25zdCBwYXJlbnQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhcmVudCcpO1xuXHRcdGNvbnN0IGRvbUNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdkb21DbGFzcycpO1xuXG5cdFx0Y29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBnbCA9IHN0b3JlLnNlbGVjdCgnZ2wnKTtcblxuXHRcdGNvbnN0IHN0YXRzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX2dsID0gZ2woKTtcblx0XHRcdGlmICghX2dsKSByZXR1cm4gbnVsbDtcblxuXHRcdFx0Y29uc3Qgc3RhdHMgPSBuZXcgU3RhdHMoeyAuLi51bnRyYWNrZWQoc3RhdHNPcHRpb25zKSB9KTtcblx0XHRcdHZvaWQgc3RhdHMuaW5pdChfZ2wpO1xuXHRcdFx0cmV0dXJuIHN0YXRzO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IF9zdGF0cyA9IHN0YXRzKCk7XG5cdFx0XHRpZiAoIV9zdGF0cykgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbX3BhcmVudCwgX2RvbUNsYXNzXSA9IFtyZXNvbHZlUmVmKHBhcmVudCgpKSwgZG9tQ2xhc3MoKV07XG5cdFx0XHRjb25zdCB0YXJnZXQgPSBfcGFyZW50ID8/IGRvY3VtZW50LmJvZHk7XG5cdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoX3N0YXRzLmRvbSk7XG5cdFx0XHRjb25zdCBjbGFzc0xpc3QgPSBfZG9tQ2xhc3Muc3BsaXQoJyAnKS5maWx0ZXIoQm9vbGVhbik7XG5cdFx0XHRpZiAoY2xhc3NMaXN0Lmxlbmd0aCkgX3N0YXRzLmRvbS5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzTGlzdCk7XG5cdFx0XHRjb25zdCBlbmQgPSBhZGRBZnRlckVmZmVjdCgoKSA9PiBfc3RhdHMudXBkYXRlKCkpO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRpZiAoY2xhc3NMaXN0Lmxlbmd0aCkgX3N0YXRzLmRvbS5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzTGlzdCk7XG5cdFx0XHRcdHRhcmdldC5yZW1vdmVDaGlsZChfc3RhdHMuZG9tKTtcblx0XHRcdFx0ZW5kKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|