angular-three-soba 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/lib/catmull-rom-line.d.ts +148 -148
- package/abstractions/lib/edges.d.ts +166 -166
- package/abstractions/lib/grid.d.ts +30 -30
- package/abstractions/lib/line.d.ts +10 -9
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +38 -38
- package/abstractions/lib/text.d.ts +2 -3
- 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 +42 -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 +188 -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/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +3 -3
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/decal.d.ts +5 -5
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +12 -12
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +20 -20
- 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/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- 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/mask.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 +7 -6
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -205,8 +205,8 @@ class NgtsLoader {
|
|
|
205
205
|
onCleanup(() => cancelAnimationFrame(rafId));
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
209
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
210
210
|
@if (shown()) {
|
|
211
211
|
<div
|
|
212
212
|
class="ngts-loader-container"
|
|
@@ -227,7 +227,7 @@ class NgtsLoader {
|
|
|
227
227
|
}
|
|
228
228
|
`, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
229
229
|
}
|
|
230
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, decorators: [{
|
|
231
231
|
type: Component,
|
|
232
232
|
args: [{ selector: 'ngts-loader', standalone: true, template: `
|
|
233
233
|
@if (shown()) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, computed,
|
|
2
|
+
import { input, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, viewChild, untracked, inject, DestroyRef } from '@angular/core';
|
|
3
3
|
import { omit, is, pick, NgtArgs, injectBeforeRender, injectStore, applyProps, getLocalState } from 'angular-three';
|
|
4
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
4
|
import CustomShaderMaterial from 'three-custom-shader-material/vanilla';
|
|
6
5
|
import { MeshDistortMaterial, BlurPass, MeshReflectorMaterial, MeshDiscardMaterial, MeshTransmissionMaterial, MeshWobbleMaterial } from 'angular-three-soba/vanilla-exports';
|
|
7
6
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
@@ -45,22 +44,19 @@ class NgtsCustomShaderMaterial {
|
|
|
45
44
|
cacheKey,
|
|
46
45
|
});
|
|
47
46
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const material = this.material();
|
|
52
|
-
return () => material.dispose();
|
|
53
|
-
});
|
|
47
|
+
effect((onCleanup) => {
|
|
48
|
+
const material = this.material();
|
|
49
|
+
onCleanup(() => material.dispose());
|
|
54
50
|
});
|
|
55
51
|
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
57
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCustomShaderMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsCustomShaderMaterial, isStandalone: true, selector: "ngts-custom-shader-material", inputs: { baseMaterial: { classPropertyName: "baseMaterial", publicName: "baseMaterial", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
58
54
|
<ngt-primitive *args="[material()]" [attach]="attach()" [parameters]="parameters()">
|
|
59
55
|
<ng-content />
|
|
60
56
|
</ngt-primitive>
|
|
61
57
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
62
58
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCustomShaderMaterial, decorators: [{
|
|
64
60
|
type: Component,
|
|
65
61
|
args: [{
|
|
66
62
|
selector: 'ngts-custom-shader-material',
|
|
@@ -90,14 +86,14 @@ class NgtsMeshDistortMaterial {
|
|
|
90
86
|
this.material.time = clock.getElapsedTime() * this.speed();
|
|
91
87
|
});
|
|
92
88
|
}
|
|
93
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
95
91
|
<ngt-primitive *args="[material]" [attach]="attach()" [parameters]="parameters()">
|
|
96
92
|
<ng-content />
|
|
97
93
|
</ngt-primitive>
|
|
98
94
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
95
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
|
|
101
97
|
type: Component,
|
|
102
98
|
args: [{
|
|
103
99
|
selector: 'ngts-mesh-distort-material',
|
|
@@ -250,15 +246,12 @@ class NgtsMeshReflectorMaterial {
|
|
|
250
246
|
this.definesKey();
|
|
251
247
|
return new MeshReflectorMaterial();
|
|
252
248
|
});
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const { reflectorParameters } = this.reflectState();
|
|
260
|
-
applyProps(material, { ...reflectorParameters, ...this.parameters() });
|
|
261
|
-
});
|
|
249
|
+
effect(() => {
|
|
250
|
+
const material = this.materialRef()?.nativeElement;
|
|
251
|
+
if (!material)
|
|
252
|
+
return;
|
|
253
|
+
const { reflectorParameters } = this.reflectState();
|
|
254
|
+
applyProps(material, { ...reflectorParameters, ...this.parameters() });
|
|
262
255
|
});
|
|
263
256
|
inject(DestroyRef).onDestroy(() => {
|
|
264
257
|
const material = this.materialRef()?.nativeElement;
|
|
@@ -361,14 +354,14 @@ class NgtsMeshReflectorMaterial {
|
|
|
361
354
|
projectionMatrix.elements[10] = this.clipPlane.z + 1.0;
|
|
362
355
|
projectionMatrix.elements[14] = this.clipPlane.w;
|
|
363
356
|
}
|
|
364
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
365
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
366
359
|
<ngt-primitive #material *args="[material()]" [attach]="attach()">
|
|
367
360
|
<ng-content />
|
|
368
361
|
</ngt-primitive>
|
|
369
362
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
370
363
|
}
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
364
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
|
|
372
365
|
type: Component,
|
|
373
366
|
args: [{
|
|
374
367
|
selector: 'ngts-mesh-reflector-material',
|
|
@@ -408,7 +401,7 @@ class NgtsMeshRefractionMaterial {
|
|
|
408
401
|
this.size = this.store.select('size');
|
|
409
402
|
this.resolution = computed(() => [this.size().width, this.size().height]);
|
|
410
403
|
this.defines = computed(() => {
|
|
411
|
-
const
|
|
404
|
+
const _defines = {};
|
|
412
405
|
const [envMap, aberrationStrength, fastChroma] = [
|
|
413
406
|
untracked(this.envMap),
|
|
414
407
|
this.aberrationStrength(),
|
|
@@ -422,16 +415,16 @@ class NgtsMeshRefractionMaterial {
|
|
|
422
415
|
const width = 3 * Math.max(_cubeSize, 16 * 7);
|
|
423
416
|
const height = 4 * _cubeSize;
|
|
424
417
|
if (isCubeMap)
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
418
|
+
_defines['ENVMAP_TYPE_CUBEM'] = '';
|
|
419
|
+
_defines['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;
|
|
420
|
+
_defines['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;
|
|
421
|
+
_defines['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;
|
|
429
422
|
// Add defines from chromatic aberration
|
|
430
423
|
if (aberrationStrength > 0)
|
|
431
|
-
|
|
424
|
+
_defines['CHROMATIC_ABERRATIONS'] = '';
|
|
432
425
|
if (fastChroma)
|
|
433
|
-
|
|
434
|
-
return
|
|
426
|
+
_defines['FAST_CHROMA'] = '';
|
|
427
|
+
return _defines;
|
|
435
428
|
});
|
|
436
429
|
this.defineKeys = computed(() => {
|
|
437
430
|
return Object.keys(this.defines()).join(' ');
|
|
@@ -447,22 +440,19 @@ class NgtsMeshRefractionMaterial {
|
|
|
447
440
|
this.defineKeys();
|
|
448
441
|
return new MeshRefractionMaterial();
|
|
449
442
|
});
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));
|
|
464
|
-
}
|
|
465
|
-
});
|
|
443
|
+
effect(() => {
|
|
444
|
+
const material = this.materialRef()?.nativeElement;
|
|
445
|
+
if (!material)
|
|
446
|
+
return;
|
|
447
|
+
const localState = getLocalState(material);
|
|
448
|
+
if (!localState)
|
|
449
|
+
return;
|
|
450
|
+
const parent = untracked(localState.parent);
|
|
451
|
+
const geometry = parent.geometry;
|
|
452
|
+
if (geometry) {
|
|
453
|
+
material.bvh = new MeshBVHUniformStruct();
|
|
454
|
+
material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));
|
|
455
|
+
}
|
|
466
456
|
});
|
|
467
457
|
injectBeforeRender(({ camera }) => {
|
|
468
458
|
const material = this.materialRef()?.nativeElement;
|
|
@@ -480,8 +470,8 @@ class NgtsMeshRefractionMaterial {
|
|
|
480
470
|
}
|
|
481
471
|
});
|
|
482
472
|
}
|
|
483
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
484
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
474
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { envMap: { classPropertyName: "envMap", publicName: "envMap", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
485
475
|
<ngt-primitive
|
|
486
476
|
*args="[material()]"
|
|
487
477
|
#material
|
|
@@ -496,7 +486,7 @@ class NgtsMeshRefractionMaterial {
|
|
|
496
486
|
</ngt-primitive>
|
|
497
487
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
498
488
|
}
|
|
499
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
|
|
500
490
|
type: Component,
|
|
501
491
|
args: [{
|
|
502
492
|
selector: 'ngts-mesh-refraction-material',
|
|
@@ -657,8 +647,8 @@ class NgtsMeshTransmissionMaterial {
|
|
|
657
647
|
}
|
|
658
648
|
});
|
|
659
649
|
}
|
|
660
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
661
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
650
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
651
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshTransmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
662
652
|
<ngt-primitive
|
|
663
653
|
*args="[material()]"
|
|
664
654
|
#material
|
|
@@ -675,7 +665,7 @@ class NgtsMeshTransmissionMaterial {
|
|
|
675
665
|
</ngt-primitive>
|
|
676
666
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
677
667
|
}
|
|
678
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
668
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, decorators: [{
|
|
679
669
|
type: Component,
|
|
680
670
|
args: [{
|
|
681
671
|
selector: 'ngts-mesh-transmission-material',
|
|
@@ -716,14 +706,14 @@ class NgtsMeshWobbleMaterial {
|
|
|
716
706
|
material.time = clock.elapsedTime * this.options().speed;
|
|
717
707
|
});
|
|
718
708
|
}
|
|
719
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
720
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
709
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
710
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
721
711
|
<ngt-primitive *args="[material]" [parameters]="parameters()" [attach]="attach()">
|
|
722
712
|
<ng-content />
|
|
723
713
|
</ngt-primitive>
|
|
724
714
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
725
715
|
}
|
|
726
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
|
|
727
717
|
type: Component,
|
|
728
718
|
args: [{
|
|
729
719
|
selector: 'ngts-mesh-wobble-material',
|
|
@@ -745,14 +735,14 @@ class NgtsPointMaterial {
|
|
|
745
735
|
this.options = input({});
|
|
746
736
|
this.material = new PointMaterial(this.options());
|
|
747
737
|
}
|
|
748
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
749
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
738
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
739
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsPointMaterial, isStandalone: true, selector: "ngts-point-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
750
740
|
<ngt-primitive *args="[material]" [attach]="attach()" [parameters]="options()">
|
|
751
741
|
<ng-content />
|
|
752
742
|
</ngt-primitive>
|
|
753
743
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
754
744
|
}
|
|
755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointMaterial, decorators: [{
|
|
756
746
|
type: Component,
|
|
757
747
|
args: [{
|
|
758
748
|
selector: 'ngts-point-material',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/lib/custom-shader-material.ts","../../../../libs/soba/materials/src/lib/mesh-distort-material.ts","../../../../libs/soba/materials/src/lib/mesh-reflector-material.ts","../../../../libs/soba/materials/src/lib/mesh-refraction-material.ts","../../../../libs/soba/materials/src/lib/mesh-transmission-material.ts","../../../../libs/soba/materials/src/lib/mesh-wobble-material.ts","../../../../libs/soba/materials/src/lib/point-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n} from '@angular/core';\nimport { is, NgtAnyRecord, NgtArgs, NgtAttachable, omit, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { Material } from 'three';\nimport CustomShaderMaterial from 'three-custom-shader-material/vanilla';\n\n@Component({\n\tselector: 'ngts-custom-shader-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material()]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsCustomShaderMaterial {\n\tbaseMaterial = input.required<Material | typeof Material | ElementRef<Material>>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as Omit<ConstructorParameters<typeof CustomShaderMaterial>[0], 'baseMaterial'>);\n\tparameters = omit(this.options, ['fragmentShader', 'vertexShader', 'uniforms', 'cacheKey']);\n\n\tbase = computed(() => {\n\t\tconst baseMaterial = this.baseMaterial();\n\t\treturn is.ref(baseMaterial) ? baseMaterial.nativeElement : baseMaterial;\n\t});\n\n\tprivate fragmentShader = pick(this.options, 'fragmentShader');\n\tprivate vertexShader = pick(this.options, 'vertexShader');\n\tprivate uniforms = pick(this.options, 'uniforms');\n\tprivate cacheKey = pick(this.options, 'cacheKey');\n\n\tmaterial = computed(() => {\n\t\tconst [base, fragmentShader, vertexShader, uniforms, cacheKey] = [\n\t\t\tthis.base(),\n\t\t\tthis.fragmentShader(),\n\t\t\tthis.vertexShader(),\n\t\t\tthis.uniforms(),\n\t\t\tthis.cacheKey(),\n\t\t];\n\n\t\t// NOTE: this is specific to angular-three\n\t\tif (is.instance(base)) {\n\t\t\tdelete (base as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (base as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\treturn new CustomShaderMaterial({\n\t\t\tbaseMaterial: base,\n\t\t\tfragmentShader,\n\t\t\tvertexShader,\n\t\t\tuniforms,\n\t\t\tcacheKey,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst material = this.material();\n\t\t\t\treturn () => material.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtMeshPhysicalMaterial, omit, pick } from 'angular-three';\nimport { MeshDistortMaterial, MeshDistortMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshDistortMaterialOptions\n\textends Partial<MeshDistortMaterialParameters>,\n\t\tPartial<NgtMeshPhysicalMaterial> {\n\tspeed: number;\n\tfactor?: number;\n}\n\nconst defaultOptions: NgtsMeshDistortMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-distort-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshDistortMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshDistortMaterial();\n\n\tprivate speed = pick(this.options, 'speed');\n\n\tconstructor() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tthis.material.time = clock.getElapsedTime() * this.speed();\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtMeshStandardMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/vanilla-exports';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthFormat,\n\tDepthTexture,\n\tHalfFloatType,\n\tLinearFilter,\n\tMatrix4,\n\tPerspectiveCamera,\n\tPlane,\n\tTexture,\n\tUnsignedShortType,\n\tVector3,\n\tVector4,\n\tWebGLRenderTarget,\n} from 'three';\n\nexport interface NgtsMeshReflectorMaterialOptions extends Partial<NgtMeshStandardMaterial> {\n\tresolution: number;\n\tmixBlur: number;\n\tmixStrength: number;\n\tblur: [number, number] | number;\n\tmirror: number;\n\tminDepthThreshold: number;\n\tmaxDepthThreshold: number;\n\tdepthScale: number;\n\tdepthToBlurRatioBias: number;\n\tdistortion: number;\n\tmixContrast: number;\n\treflectorOffset: number;\n\tdistortionMap?: Texture;\n}\n\nconst defaultOptions: NgtsMeshReflectorMaterialOptions = {\n\tmixBlur: 0,\n\tmixStrength: 1,\n\tresolution: 256,\n\tblur: [0, 0],\n\tminDepthThreshold: 0.9,\n\tmaxDepthThreshold: 1,\n\tdepthScale: 0,\n\tdepthToBlurRatioBias: 0.25,\n\tmirror: 0,\n\tdistortion: 1,\n\tmixContrast: 1,\n\treflectorOffset: 0,\n};\n\n@Component({\n\tselector: 'ngts-mesh-reflector-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #material *args=\"[material()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshReflectorMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tmaterialRef = viewChild<ElementRef<MeshReflectorMaterial>>('material');\n\n\tprivate reflectOptions = pick(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate blur = pick(this.reflectOptions, 'blur');\n\n\tprivate normalizedBlur = computed(() => {\n\t\tconst blur = this.blur();\n\t\treturn Array.isArray(blur) ? blur : [blur, blur];\n\t});\n\tprivate hasBlur = computed(() => this.normalizedBlur()[0] + this.normalizedBlur()[1] > 0);\n\n\tprivate reflectorPlane = new Plane();\n\tprivate normal = new Vector3();\n\tprivate reflectorWorldPosition = new Vector3();\n\tprivate cameraWorldPosition = new Vector3();\n\tprivate rotationMatrix = new Matrix4();\n\tprivate lookAtPosition = new Vector3(0, 0, -1);\n\tprivate clipPlane = new Vector4();\n\tprivate view = new Vector3();\n\tprivate target = new Vector3();\n\tprivate q = new Vector4();\n\tprivate textureMatrix = new Matrix4();\n\tprivate virtualCamera = new PerspectiveCamera();\n\n\tprivate reflectState = computed(() => {\n\t\tconst [\n\t\t\tgl,\n\t\t\t{\n\t\t\t\tresolution,\n\t\t\t\tminDepthThreshold,\n\t\t\t\tmaxDepthThreshold,\n\t\t\t\tdepthScale,\n\t\t\t\tdepthToBlurRatioBias,\n\t\t\t\tmirror,\n\t\t\t\tmixBlur,\n\t\t\t\tmixStrength,\n\t\t\t\tdistortion,\n\t\t\t\tdistortionMap,\n\t\t\t\tmixContrast,\n\t\t\t},\n\t\t\tblur,\n\t\t\thasBlur,\n\t\t] = [this.gl(), this.reflectOptions(), this.normalizedBlur(), this.hasBlur()];\n\n\t\tconst renderTargetParameters = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tmagFilter: LinearFilter,\n\t\t\ttype: HalfFloatType,\n\t\t};\n\n\t\tconst fbo1 = new WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\t\tfbo1.depthBuffer = true;\n\t\tfbo1.depthTexture = new DepthTexture(resolution, resolution);\n\t\tfbo1.depthTexture.format = DepthFormat;\n\t\tfbo1.depthTexture.type = UnsignedShortType;\n\t\tconst fbo2 = new WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\n\t\tconst blurPass = new BlurPass({\n\t\t\tgl,\n\t\t\tresolution,\n\t\t\twidth: blur[0],\n\t\t\theight: blur[1],\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t});\n\n\t\tconst defines: NgtAnyRecord = {};\n\n\t\tif (hasBlur) {\n\t\t\tdefines['USE_BLUR'] = '';\n\t\t}\n\n\t\tif (depthScale > 0) {\n\t\t\tdefines['USE_DEPTH'] = '';\n\t\t}\n\n\t\tif (distortionMap) {\n\t\t\tdefines['USE_DISTORTION'] = '';\n\t\t}\n\n\t\tconst reflectorParameters = {\n\t\t\tmirror,\n\t\t\ttextureMatrix: this.textureMatrix,\n\t\t\tmixBlur,\n\t\t\ttDiffuse: fbo1.texture,\n\t\t\ttDepth: fbo1.depthTexture,\n\t\t\ttDiffuseBlur: fbo2.texture,\n\t\t\thasBlur,\n\t\t\tmixStrength,\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t\tdistortion,\n\t\t\tdistortionMap,\n\t\t\tmixContrast,\n\t\t\tdefines,\n\t\t};\n\n\t\treturn { fbo1, fbo2, blurPass, reflectorParameters };\n\t});\n\n\tprivate definesKey = computed(() => {\n\t\tconst defines = this.reflectState().reflectorParameters.defines;\n\t\treturn Object.entries(defines).reduce((acc, [key, value]) => (value != null ? `${acc} ${key}` : acc), '');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// tracking defines key so that the material is recreated when the defines change\n\t\tthis.definesKey();\n\t\treturn new MeshReflectorMaterial();\n\t});\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\t\tif (!material) return;\n\t\t\t\tconst { reflectorParameters } = this.reflectState();\n\t\t\t\tapplyProps(material, { ...reflectorParameters, ...this.parameters() });\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst localState = getLocalState(material);\n\t\t\tif (!localState) return;\n\n\t\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(localState.parent);\n\t\t\tif (!parent) return;\n\n\t\t\tconst { fbo1, fbo2, blurPass } = this.reflectState();\n\t\t\tconst hasBlur = this.hasBlur();\n\n\t\t\tparent.visible = false;\n\t\t\tconst currentXrEnabled = gl.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n\t\t\tthis.beforeRender();\n\t\t\tgl.xr.enabled = false;\n\t\t\tgl.shadowMap.autoUpdate = false;\n\t\t\tgl.setRenderTarget(fbo1);\n\t\t\tgl.state.buffers.depth.setMask(true);\n\t\t\tif (!gl.autoClear) gl.clear();\n\t\t\tgl.render(scene, this.virtualCamera);\n\t\t\tif (hasBlur) blurPass.render(gl, fbo1, fbo2);\n\t\t\tgl.xr.enabled = currentXrEnabled;\n\t\t\tgl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\tparent.visible = true;\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tconst material = this.materialRef()?.nativeElement;\n\t\tif (!material) return;\n\n\t\tconst localState = getLocalState(material);\n\t\tif (!localState) return;\n\n\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(localState.parent);\n\t\tif (!parent) return;\n\n\t\tconst { camera } = this.store.snapshot;\n\t\tconst { reflectorOffset } = untracked(this.reflectOptions);\n\n\t\tthis.reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n\t\tthis.cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\t\tthis.rotationMatrix.extractRotation(parent.matrixWorld);\n\t\tthis.normal.set(0, 0, 1);\n\t\tthis.normal.applyMatrix4(this.rotationMatrix);\n\t\tthis.reflectorWorldPosition.addScaledVector(this.normal, reflectorOffset);\n\t\tthis.view.subVectors(this.reflectorWorldPosition, this.cameraWorldPosition);\n\t\t// Avoid rendering when reflector is facing away\n\t\tif (this.view.dot(this.normal) > 0) return;\n\t\tthis.view.reflect(this.normal).negate();\n\t\tthis.view.add(this.reflectorWorldPosition);\n\t\tthis.rotationMatrix.extractRotation(camera.matrixWorld);\n\t\tthis.lookAtPosition.set(0, 0, -1);\n\t\tthis.lookAtPosition.applyMatrix4(this.rotationMatrix);\n\t\tthis.lookAtPosition.add(this.cameraWorldPosition);\n\t\tthis.target.subVectors(this.reflectorWorldPosition, this.lookAtPosition);\n\t\tthis.target.reflect(this.normal).negate();\n\t\tthis.target.add(this.reflectorWorldPosition);\n\t\tthis.virtualCamera.position.copy(this.view);\n\t\tthis.virtualCamera.up.set(0, 1, 0);\n\t\tthis.virtualCamera.up.applyMatrix4(this.rotationMatrix);\n\t\tthis.virtualCamera.up.reflect(this.normal);\n\t\tthis.virtualCamera.lookAt(this.target);\n\t\tthis.virtualCamera.far = camera.far; // Used in WebGLBackground\n\t\tthis.virtualCamera.updateMatrixWorld();\n\t\tthis.virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\t\t// Update the texture matrix\n\t\tthis.textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.projectionMatrix);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.matrixWorldInverse);\n\t\tthis.textureMatrix.multiply(parent.matrixWorld);\n\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\tthis.reflectorPlane.setFromNormalAndCoplanarPoint(this.normal, this.reflectorWorldPosition);\n\t\tthis.reflectorPlane.applyMatrix4(this.virtualCamera.matrixWorldInverse);\n\t\tthis.clipPlane.set(\n\t\t\tthis.reflectorPlane.normal.x,\n\t\t\tthis.reflectorPlane.normal.y,\n\t\t\tthis.reflectorPlane.normal.z,\n\t\t\tthis.reflectorPlane.constant,\n\t\t);\n\t\tconst projectionMatrix = this.virtualCamera.projectionMatrix;\n\t\tthis.q.x = (Math.sign(this.clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n\t\tthis.q.y = (Math.sign(this.clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n\t\tthis.q.z = -1.0;\n\t\tthis.q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\t\t// Calculate the scaled plane vector\n\t\tthis.clipPlane.multiplyScalar(2.0 / this.clipPlane.dot(this.q));\n\t\t// Replacing the third row of the projection matrix\n\t\tprojectionMatrix.elements[2] = this.clipPlane.x;\n\t\tprojectionMatrix.elements[6] = this.clipPlane.y;\n\t\tprojectionMatrix.elements[10] = this.clipPlane.z + 1.0;\n\t\tprojectionMatrix.elements[14] = this.clipPlane.w;\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtShaderMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation, CubeTexture, Mesh, Texture } from 'three';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nexport interface NgtsMeshRefractionMaterialOptions extends Partial<NgtShaderMaterial> {\n\t/** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n\tbounces: number;\n\t/** Refraction index, 2.4 */\n\tior: number;\n\t/** Fresnel (strip light), 0 */\n\tfresnel: number;\n\t/** RGB shift intensity, can be expensive, 0 */\n\taberrationStrength: number;\n\t/** Color, white */\n\tcolor: ColorRepresentation;\n\t/** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n\tfastChroma: boolean;\n}\n\nconst defaultOptions: NgtsMeshRefractionMaterialOptions = {\n\tbounces: 2,\n\tior: 2.4,\n\tfresnel: 0,\n\taberrationStrength: 0,\n\tcolor: 'white',\n\tfastChroma: true,\n};\n\nfunction isCubeTexture(def: CubeTexture | Texture): def is CubeTexture {\n\treturn def && (def as CubeTexture).isCubeTexture;\n}\n\n@Component({\n\tselector: 'ngts-mesh-refraction-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[envMap]=\"envMap()\"\n\t\t\t[aberrationStrength]=\"aberrationStrength()\"\n\t\t\t[resolution]=\"resolution()\"\n\t\t\t[defines]=\"defines()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshRefractionMaterial {\n\tenvMap = input.required<CubeTexture | Texture>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['fastChroma', 'aberrationStrength']);\n\n\tprivate fastChroma = pick(this.options, 'fastChroma');\n\taberrationStrength = pick(this.options, 'aberrationStrength');\n\n\tmaterialRef = viewChild<ElementRef<InstanceType<typeof MeshRefractionMaterial>>>('material');\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\n\tresolution = computed(() => [this.size().width, this.size().height]);\n\tdefines = computed(() => {\n\t\tconst temp = {} as { [key: string]: string };\n\t\tconst [envMap, aberrationStrength, fastChroma] = [\n\t\t\tuntracked(this.envMap),\n\t\t\tthis.aberrationStrength(),\n\t\t\tthis.fastChroma(),\n\t\t];\n\t\tconst isCubeMap = isCubeTexture(envMap);\n\n\t\tconst w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n\t\tconst cubeSize = w / 4;\n\t\tconst _lodMax = Math.floor(Math.log2(cubeSize));\n\t\tconst _cubeSize = Math.pow(2, _lodMax);\n\t\tconst width = 3 * Math.max(_cubeSize, 16 * 7);\n\t\tconst height = 4 * _cubeSize;\n\n\t\tif (isCubeMap) temp['ENVMAP_TYPE_CUBEM'] = '';\n\t\ttemp['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n\t\ttemp['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n\t\ttemp['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n\n\t\t// Add defines from chromatic aberration\n\t\tif (aberrationStrength > 0) temp['CHROMATIC_ABERRATIONS'] = '';\n\t\tif (fastChroma) temp['FAST_CHROMA'] = '';\n\n\t\treturn temp;\n\t});\n\n\tprivate defineKeys = computed(() => {\n\t\treturn Object.keys(this.defines()).join(' ');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// track by this.defineKeys\n\t\tthis.defineKeys();\n\t\treturn new MeshRefractionMaterial();\n\t});\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\t\tif (!material) return;\n\n\t\t\t\tconst localState = getLocalState(material);\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst parent = untracked(localState.parent);\n\t\t\t\tconst geometry = (parent as Mesh).geometry;\n\t\t\t\tif (geometry) {\n\t\t\t\t\t(material as any).bvh = new MeshBVHUniformStruct();\n\t\t\t\t\t(material as any).bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\t(material as any).viewMatrixInverse = camera.matrixWorld;\n\t\t\t\t(material as any).projectionMatrixInverse = camera.projectionMatrixInverse;\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetLocalState,\n\tinjectBeforeRender,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtMeshPhysicalMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { MeshDiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BackSide, Color, FrontSide, Mesh, NoToneMapping, Texture, ToneMapping } from 'three';\n\ntype MeshTransmissionMaterialOptions = ConstructorParameters<typeof MeshTransmissionMaterial>[0];\n\nexport type NgtsMeshTransmissionMaterialOptions = Partial<NgtMeshPhysicalMaterial> &\n\tOmit<MeshTransmissionMaterialOptions, 'buffer' | 'anisotropicBlur'> & {\n\t\tanisotropicBlur?: number;\n\t\tbuffer?: Texture;\n\t\t/** transmissionSampler, you can use the threejs transmission sampler texture that is\n\t\t * generated once for all transmissive materials. The upside is that it can be faster if you\n\t\t * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n\t\t * using this can't see other transparent or transmissive objects, default: false */\n\t\ttransmissionSampler: boolean;\n\t\t/** Render the backside of the material (more cost, better results), default: false */\n\t\tbackside: boolean;\n\t\t/** Backside thickness (when backside is true), default: 0 */\n\t\tbacksideThickness: number;\n\t\tbacksideEnvMapIntensity: number;\n\t\t/** Resolution of the local buffer, default: undefined (fullscreen) */\n\t\tresolution?: number;\n\t\t/** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n\t\tbacksideResolution?: number;\n\t\t/** Refraction samples, default: 6 */\n\t\tsamples: number;\n\t\t/** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n\t\tbackground?: Texture | Color;\n\t};\n\nconst defaultOptions: NgtsMeshTransmissionMaterialOptions = {\n\ttransmissionSampler: false,\n\tbackside: false,\n\tside: FrontSide,\n\ttransmission: 1,\n\tthickness: 0,\n\tbacksideThickness: 0,\n\tbacksideEnvMapIntensity: 1,\n\tsamples: 10,\n};\n\n@Component({\n\tselector: 'ngts-mesh-transmission-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[_transmission]=\"transmission()\"\n\t\t\t[transmission]=\"transmissionSampler() ? transmission() : 0\"\n\t\t\t[buffer]=\"bufferTexture()\"\n\t\t\t[anisotropicBlur]=\"anisotropicBlurOption()\"\n\t\t\t[side]=\"side()\"\n\t\t\t[thickness]=\"thickness()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshTransmissionMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'buffer',\n\t\t'transmissionSampler',\n\t\t'backside',\n\t\t'side',\n\t\t'transmission',\n\t\t'thickness',\n\t\t'backsideThickness',\n\t\t'backsideEnvMapIntensity',\n\t\t'samples',\n\t\t'resolution',\n\t\t'backsideResolution',\n\t\t'background',\n\t\t'anisotropy',\n\t\t'anisotropicBlur',\n\t]);\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate backsideResolution = pick(this.options, 'backsideResolution');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate buffer = pick(this.options, 'buffer');\n\tprivate anisotropy = pick(this.options, 'anisotropy');\n\tprivate anisotropicBlur = pick(this.options, 'anisotropicBlur');\n\tprivate background = pick(this.options, 'background');\n\tprivate backside = pick(this.options, 'backside');\n\tprivate backsideThickness = pick(this.options, 'backsideThickness');\n\tprivate backsideEnvMapIntensity = pick(this.options, 'backsideEnvMapIntensity');\n\n\ttransmissionSampler = pick(this.options, 'transmissionSampler');\n\ttransmission = pick(this.options, 'transmission');\n\tthickness = pick(this.options, 'thickness');\n\tside = pick(this.options, 'side');\n\n\tmaterialRef = viewChild<ElementRef<MeshTransmissionMaterial & MeshTransmissionMaterialOptions>>('material');\n\n\tprivate backResolution = computed(() => this.backsideResolution() || this.resolution());\n\n\tprivate fboBack = injectFBO(() => ({ width: this.backResolution() }));\n\tprivate fboMain = injectFBO(() => ({ width: this.resolution() }));\n\n\tbufferTexture = computed(() => this.buffer() || this.fboMain().texture);\n\tanisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());\n\n\tprivate discardMaterial = new MeshDiscardMaterial();\n\n\tmaterial = computed(() => {\n\t\tconst previousMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (previousMaterial) {\n\t\t\tpreviousMaterial.dispose();\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\tconst [samples, transmissionSampler] = [this.samples(), this.transmissionSampler()];\n\t\treturn new MeshTransmissionMaterial({ samples, transmissionSampler });\n\t});\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tlet oldBg: Texture | Color | null;\n\t\tlet oldEnvMapIntensity: number | undefined;\n\t\tlet oldTone: ToneMapping | undefined;\n\t\tlet parent: Mesh | undefined;\n\t\tinjectBeforeRender(({ clock, gl, scene, camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst [\n\t\t\t\tfboMain,\n\t\t\t\tfboBack,\n\t\t\t\ttransmissionSampler,\n\t\t\t\tbackground,\n\t\t\t\tbackside,\n\t\t\t\tbacksideThickness,\n\t\t\t\tbacksideEnvMapIntensity,\n\t\t\t\tthickness,\n\t\t\t\tside,\n\t\t\t] = [\n\t\t\t\tthis.fboMain(),\n\t\t\t\tthis.fboBack(),\n\t\t\t\tthis.transmissionSampler(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.backside(),\n\t\t\t\tthis.backsideThickness(),\n\t\t\t\tthis.backsideEnvMapIntensity(),\n\t\t\t\tthis.thickness(),\n\t\t\t\tthis.side(),\n\t\t\t];\n\n\t\t\tmaterial.time = clock.getElapsedTime();\n\t\t\t// Render only if the buffer matches the built-in and no transmission sampler is set\n\t\t\t// @ts-expect-error - we know material.buffer is not just undefined | null\n\t\t\tif (material.buffer === fboMain.texture && !transmissionSampler) {\n\t\t\t\tparent = getLocalState(material)?.parent() as Mesh;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\t// Save defaults\n\t\t\t\t\toldTone = gl.toneMapping;\n\t\t\t\t\toldBg = scene.background;\n\t\t\t\t\toldEnvMapIntensity = material.envMapIntensity;\n\n\t\t\t\t\t// Switch off tonemapping lest it double tone maps\n\t\t\t\t\t// Save the current background and set the HDR as the new BG\n\t\t\t\t\t// Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n\t\t\t\t\tgl.toneMapping = NoToneMapping;\n\t\t\t\t\tif (background) scene.background = background;\n\t\t\t\t\tparent.material = this.discardMaterial;\n\n\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t// Render into the backside buffer\n\t\t\t\t\t\tgl.setRenderTarget(fboBack);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t// And now prepare the material for the main render using the backside buffer\n\t\t\t\t\t\tparent.material = material;\n\t\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\t\tbuffer: fboBack.texture,\n\t\t\t\t\t\t\tthickness: backsideThickness,\n\t\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\t\tenvMapIntensity: backsideEnvMapIntensity,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Render into the main buffer\n\t\t\t\t\tgl.setRenderTarget(fboMain);\n\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\tparent.material = material;\n\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\tbuffer: fboMain.texture,\n\t\t\t\t\t\tthickness,\n\t\t\t\t\t\tside,\n\t\t\t\t\t\tenvMapIntensity: oldEnvMapIntensity,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Set old state back\n\t\t\t\t\tscene.background = oldBg;\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tgl.toneMapping = oldTone;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtMeshStandardMaterial, omit } from 'angular-three';\nimport { MeshWobbleMaterial, MeshWobbleMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshWobbleMaterialOptions extends MeshWobbleMaterialParameters, Partial<NgtMeshStandardMaterial> {\n\tspeed: number;\n}\n\nconst defaultOptions: NgtsMeshWobbleMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-wobble-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [parameters]=\"parameters()\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMeshWobbleMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshWobbleMaterial();\n\n\tconstructor() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst material = this.material;\n\t\t\tmaterial.time = clock.elapsedTime * this.options().speed;\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { NgtArgs, NgtAttachable } from 'angular-three';\nimport { PointMaterial } from 'angular-three-soba/shaders';\nimport { PointsMaterialParameters } from 'three';\n\n@Component({\n\tselector: 'ngts-point-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPointMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as PointsMaterialParameters);\n\n\tmaterial = new PointMaterial(this.options());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/lib/custom-shader-material.ts","../../../../libs/soba/materials/src/lib/mesh-distort-material.ts","../../../../libs/soba/materials/src/lib/mesh-reflector-material.ts","../../../../libs/soba/materials/src/lib/mesh-refraction-material.ts","../../../../libs/soba/materials/src/lib/mesh-transmission-material.ts","../../../../libs/soba/materials/src/lib/mesh-wobble-material.ts","../../../../libs/soba/materials/src/lib/point-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n} from '@angular/core';\nimport { is, NgtAnyRecord, NgtArgs, NgtAttachable, omit, pick } from 'angular-three';\nimport { Material } from 'three';\nimport CustomShaderMaterial from 'three-custom-shader-material/vanilla';\n\n@Component({\n\tselector: 'ngts-custom-shader-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material()]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsCustomShaderMaterial {\n\tbaseMaterial = input.required<Material | typeof Material | ElementRef<Material>>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as Omit<ConstructorParameters<typeof CustomShaderMaterial>[0], 'baseMaterial'>);\n\tparameters = omit(this.options, ['fragmentShader', 'vertexShader', 'uniforms', 'cacheKey']);\n\n\tbase = computed(() => {\n\t\tconst baseMaterial = this.baseMaterial();\n\t\treturn is.ref(baseMaterial) ? baseMaterial.nativeElement : baseMaterial;\n\t});\n\n\tprivate fragmentShader = pick(this.options, 'fragmentShader');\n\tprivate vertexShader = pick(this.options, 'vertexShader');\n\tprivate uniforms = pick(this.options, 'uniforms');\n\tprivate cacheKey = pick(this.options, 'cacheKey');\n\n\tmaterial = computed(() => {\n\t\tconst [base, fragmentShader, vertexShader, uniforms, cacheKey] = [\n\t\t\tthis.base(),\n\t\t\tthis.fragmentShader(),\n\t\t\tthis.vertexShader(),\n\t\t\tthis.uniforms(),\n\t\t\tthis.cacheKey(),\n\t\t];\n\n\t\t// NOTE: this is specific to angular-three\n\t\tif (is.instance(base)) {\n\t\t\tdelete (base as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (base as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\treturn new CustomShaderMaterial({\n\t\t\tbaseMaterial: base,\n\t\t\tfragmentShader,\n\t\t\tvertexShader,\n\t\t\tuniforms,\n\t\t\tcacheKey,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst material = this.material();\n\t\t\tonCleanup(() => material.dispose());\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtMeshPhysicalMaterial, omit, pick } from 'angular-three';\nimport { MeshDistortMaterial, MeshDistortMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshDistortMaterialOptions\n\textends Partial<MeshDistortMaterialParameters>,\n\t\tPartial<NgtMeshPhysicalMaterial> {\n\tspeed: number;\n\tfactor?: number;\n}\n\nconst defaultOptions: NgtsMeshDistortMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-distort-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshDistortMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshDistortMaterial();\n\n\tprivate speed = pick(this.options, 'speed');\n\n\tconstructor() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tthis.material.time = clock.getElapsedTime() * this.speed();\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtMeshStandardMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tDepthFormat,\n\tDepthTexture,\n\tHalfFloatType,\n\tLinearFilter,\n\tMatrix4,\n\tPerspectiveCamera,\n\tPlane,\n\tTexture,\n\tUnsignedShortType,\n\tVector3,\n\tVector4,\n\tWebGLRenderTarget,\n} from 'three';\n\nexport interface NgtsMeshReflectorMaterialOptions extends Partial<NgtMeshStandardMaterial> {\n\tresolution: number;\n\tmixBlur: number;\n\tmixStrength: number;\n\tblur: [number, number] | number;\n\tmirror: number;\n\tminDepthThreshold: number;\n\tmaxDepthThreshold: number;\n\tdepthScale: number;\n\tdepthToBlurRatioBias: number;\n\tdistortion: number;\n\tmixContrast: number;\n\treflectorOffset: number;\n\tdistortionMap?: Texture;\n}\n\nconst defaultOptions: NgtsMeshReflectorMaterialOptions = {\n\tmixBlur: 0,\n\tmixStrength: 1,\n\tresolution: 256,\n\tblur: [0, 0],\n\tminDepthThreshold: 0.9,\n\tmaxDepthThreshold: 1,\n\tdepthScale: 0,\n\tdepthToBlurRatioBias: 0.25,\n\tmirror: 0,\n\tdistortion: 1,\n\tmixContrast: 1,\n\treflectorOffset: 0,\n};\n\n@Component({\n\tselector: 'ngts-mesh-reflector-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #material *args=\"[material()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshReflectorMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tmaterialRef = viewChild<ElementRef<MeshReflectorMaterial>>('material');\n\n\tprivate reflectOptions = pick(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate blur = pick(this.reflectOptions, 'blur');\n\n\tprivate normalizedBlur = computed(() => {\n\t\tconst blur = this.blur();\n\t\treturn Array.isArray(blur) ? blur : [blur, blur];\n\t});\n\tprivate hasBlur = computed(() => this.normalizedBlur()[0] + this.normalizedBlur()[1] > 0);\n\n\tprivate reflectorPlane = new Plane();\n\tprivate normal = new Vector3();\n\tprivate reflectorWorldPosition = new Vector3();\n\tprivate cameraWorldPosition = new Vector3();\n\tprivate rotationMatrix = new Matrix4();\n\tprivate lookAtPosition = new Vector3(0, 0, -1);\n\tprivate clipPlane = new Vector4();\n\tprivate view = new Vector3();\n\tprivate target = new Vector3();\n\tprivate q = new Vector4();\n\tprivate textureMatrix = new Matrix4();\n\tprivate virtualCamera = new PerspectiveCamera();\n\n\tprivate reflectState = computed(() => {\n\t\tconst [\n\t\t\tgl,\n\t\t\t{\n\t\t\t\tresolution,\n\t\t\t\tminDepthThreshold,\n\t\t\t\tmaxDepthThreshold,\n\t\t\t\tdepthScale,\n\t\t\t\tdepthToBlurRatioBias,\n\t\t\t\tmirror,\n\t\t\t\tmixBlur,\n\t\t\t\tmixStrength,\n\t\t\t\tdistortion,\n\t\t\t\tdistortionMap,\n\t\t\t\tmixContrast,\n\t\t\t},\n\t\t\tblur,\n\t\t\thasBlur,\n\t\t] = [this.gl(), this.reflectOptions(), this.normalizedBlur(), this.hasBlur()];\n\n\t\tconst renderTargetParameters = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tmagFilter: LinearFilter,\n\t\t\ttype: HalfFloatType,\n\t\t};\n\n\t\tconst fbo1 = new WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\t\tfbo1.depthBuffer = true;\n\t\tfbo1.depthTexture = new DepthTexture(resolution, resolution);\n\t\tfbo1.depthTexture.format = DepthFormat;\n\t\tfbo1.depthTexture.type = UnsignedShortType;\n\t\tconst fbo2 = new WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\n\t\tconst blurPass = new BlurPass({\n\t\t\tgl,\n\t\t\tresolution,\n\t\t\twidth: blur[0],\n\t\t\theight: blur[1],\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t});\n\n\t\tconst defines: NgtAnyRecord = {};\n\n\t\tif (hasBlur) {\n\t\t\tdefines['USE_BLUR'] = '';\n\t\t}\n\n\t\tif (depthScale > 0) {\n\t\t\tdefines['USE_DEPTH'] = '';\n\t\t}\n\n\t\tif (distortionMap) {\n\t\t\tdefines['USE_DISTORTION'] = '';\n\t\t}\n\n\t\tconst reflectorParameters = {\n\t\t\tmirror,\n\t\t\ttextureMatrix: this.textureMatrix,\n\t\t\tmixBlur,\n\t\t\ttDiffuse: fbo1.texture,\n\t\t\ttDepth: fbo1.depthTexture,\n\t\t\ttDiffuseBlur: fbo2.texture,\n\t\t\thasBlur,\n\t\t\tmixStrength,\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t\tdistortion,\n\t\t\tdistortionMap,\n\t\t\tmixContrast,\n\t\t\tdefines,\n\t\t};\n\n\t\treturn { fbo1, fbo2, blurPass, reflectorParameters };\n\t});\n\n\tprivate definesKey = computed(() => {\n\t\tconst defines = this.reflectState().reflectorParameters.defines;\n\t\treturn Object.entries(defines).reduce((acc, [key, value]) => (value != null ? `${acc} ${key}` : acc), '');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// tracking defines key so that the material is recreated when the defines change\n\t\tthis.definesKey();\n\t\treturn new MeshReflectorMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\t\t\tconst { reflectorParameters } = this.reflectState();\n\t\t\tapplyProps(material, { ...reflectorParameters, ...this.parameters() });\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst localState = getLocalState(material);\n\t\t\tif (!localState) return;\n\n\t\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(localState.parent);\n\t\t\tif (!parent) return;\n\n\t\t\tconst { fbo1, fbo2, blurPass } = this.reflectState();\n\t\t\tconst hasBlur = this.hasBlur();\n\n\t\t\tparent.visible = false;\n\t\t\tconst currentXrEnabled = gl.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n\t\t\tthis.beforeRender();\n\t\t\tgl.xr.enabled = false;\n\t\t\tgl.shadowMap.autoUpdate = false;\n\t\t\tgl.setRenderTarget(fbo1);\n\t\t\tgl.state.buffers.depth.setMask(true);\n\t\t\tif (!gl.autoClear) gl.clear();\n\t\t\tgl.render(scene, this.virtualCamera);\n\t\t\tif (hasBlur) blurPass.render(gl, fbo1, fbo2);\n\t\t\tgl.xr.enabled = currentXrEnabled;\n\t\t\tgl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\tparent.visible = true;\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tconst material = this.materialRef()?.nativeElement;\n\t\tif (!material) return;\n\n\t\tconst localState = getLocalState(material);\n\t\tif (!localState) return;\n\n\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(localState.parent);\n\t\tif (!parent) return;\n\n\t\tconst { camera } = this.store.snapshot;\n\t\tconst { reflectorOffset } = untracked(this.reflectOptions);\n\n\t\tthis.reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n\t\tthis.cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\t\tthis.rotationMatrix.extractRotation(parent.matrixWorld);\n\t\tthis.normal.set(0, 0, 1);\n\t\tthis.normal.applyMatrix4(this.rotationMatrix);\n\t\tthis.reflectorWorldPosition.addScaledVector(this.normal, reflectorOffset);\n\t\tthis.view.subVectors(this.reflectorWorldPosition, this.cameraWorldPosition);\n\t\t// Avoid rendering when reflector is facing away\n\t\tif (this.view.dot(this.normal) > 0) return;\n\t\tthis.view.reflect(this.normal).negate();\n\t\tthis.view.add(this.reflectorWorldPosition);\n\t\tthis.rotationMatrix.extractRotation(camera.matrixWorld);\n\t\tthis.lookAtPosition.set(0, 0, -1);\n\t\tthis.lookAtPosition.applyMatrix4(this.rotationMatrix);\n\t\tthis.lookAtPosition.add(this.cameraWorldPosition);\n\t\tthis.target.subVectors(this.reflectorWorldPosition, this.lookAtPosition);\n\t\tthis.target.reflect(this.normal).negate();\n\t\tthis.target.add(this.reflectorWorldPosition);\n\t\tthis.virtualCamera.position.copy(this.view);\n\t\tthis.virtualCamera.up.set(0, 1, 0);\n\t\tthis.virtualCamera.up.applyMatrix4(this.rotationMatrix);\n\t\tthis.virtualCamera.up.reflect(this.normal);\n\t\tthis.virtualCamera.lookAt(this.target);\n\t\tthis.virtualCamera.far = camera.far; // Used in WebGLBackground\n\t\tthis.virtualCamera.updateMatrixWorld();\n\t\tthis.virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\t\t// Update the texture matrix\n\t\tthis.textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.projectionMatrix);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.matrixWorldInverse);\n\t\tthis.textureMatrix.multiply(parent.matrixWorld);\n\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\tthis.reflectorPlane.setFromNormalAndCoplanarPoint(this.normal, this.reflectorWorldPosition);\n\t\tthis.reflectorPlane.applyMatrix4(this.virtualCamera.matrixWorldInverse);\n\t\tthis.clipPlane.set(\n\t\t\tthis.reflectorPlane.normal.x,\n\t\t\tthis.reflectorPlane.normal.y,\n\t\t\tthis.reflectorPlane.normal.z,\n\t\t\tthis.reflectorPlane.constant,\n\t\t);\n\t\tconst projectionMatrix = this.virtualCamera.projectionMatrix;\n\t\tthis.q.x = (Math.sign(this.clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n\t\tthis.q.y = (Math.sign(this.clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n\t\tthis.q.z = -1.0;\n\t\tthis.q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\t\t// Calculate the scaled plane vector\n\t\tthis.clipPlane.multiplyScalar(2.0 / this.clipPlane.dot(this.q));\n\t\t// Replacing the third row of the projection matrix\n\t\tprojectionMatrix.elements[2] = this.clipPlane.x;\n\t\tprojectionMatrix.elements[6] = this.clipPlane.y;\n\t\tprojectionMatrix.elements[10] = this.clipPlane.z + 1.0;\n\t\tprojectionMatrix.elements[14] = this.clipPlane.w;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtShaderMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation, CubeTexture, Mesh, Texture } from 'three';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nexport interface NgtsMeshRefractionMaterialOptions extends Partial<NgtShaderMaterial> {\n\t/** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n\tbounces: number;\n\t/** Refraction index, 2.4 */\n\tior: number;\n\t/** Fresnel (strip light), 0 */\n\tfresnel: number;\n\t/** RGB shift intensity, can be expensive, 0 */\n\taberrationStrength: number;\n\t/** Color, white */\n\tcolor: ColorRepresentation;\n\t/** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n\tfastChroma: boolean;\n}\n\nconst defaultOptions: NgtsMeshRefractionMaterialOptions = {\n\tbounces: 2,\n\tior: 2.4,\n\tfresnel: 0,\n\taberrationStrength: 0,\n\tcolor: 'white',\n\tfastChroma: true,\n};\n\nfunction isCubeTexture(def: CubeTexture | Texture): def is CubeTexture {\n\treturn def && (def as CubeTexture).isCubeTexture;\n}\n\n@Component({\n\tselector: 'ngts-mesh-refraction-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[envMap]=\"envMap()\"\n\t\t\t[aberrationStrength]=\"aberrationStrength()\"\n\t\t\t[resolution]=\"resolution()\"\n\t\t\t[defines]=\"defines()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshRefractionMaterial {\n\tenvMap = input.required<CubeTexture | Texture>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['fastChroma', 'aberrationStrength']);\n\n\tprivate fastChroma = pick(this.options, 'fastChroma');\n\taberrationStrength = pick(this.options, 'aberrationStrength');\n\n\tmaterialRef = viewChild<ElementRef<InstanceType<typeof MeshRefractionMaterial>>>('material');\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\n\tresolution = computed(() => [this.size().width, this.size().height]);\n\tdefines = computed(() => {\n\t\tconst _defines = {} as { [key: string]: string };\n\t\tconst [envMap, aberrationStrength, fastChroma] = [\n\t\t\tuntracked(this.envMap),\n\t\t\tthis.aberrationStrength(),\n\t\t\tthis.fastChroma(),\n\t\t];\n\t\tconst isCubeMap = isCubeTexture(envMap);\n\n\t\tconst w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n\t\tconst cubeSize = w / 4;\n\t\tconst _lodMax = Math.floor(Math.log2(cubeSize));\n\t\tconst _cubeSize = Math.pow(2, _lodMax);\n\t\tconst width = 3 * Math.max(_cubeSize, 16 * 7);\n\t\tconst height = 4 * _cubeSize;\n\n\t\tif (isCubeMap) _defines['ENVMAP_TYPE_CUBEM'] = '';\n\t\t_defines['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n\t\t_defines['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n\t\t_defines['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n\n\t\t// Add defines from chromatic aberration\n\t\tif (aberrationStrength > 0) _defines['CHROMATIC_ABERRATIONS'] = '';\n\t\tif (fastChroma) _defines['FAST_CHROMA'] = '';\n\n\t\treturn _defines;\n\t});\n\n\tprivate defineKeys = computed(() => {\n\t\treturn Object.keys(this.defines()).join(' ');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// track by this.defineKeys\n\t\tthis.defineKeys();\n\t\treturn new MeshRefractionMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst localState = getLocalState(material);\n\t\t\tif (!localState) return;\n\n\t\t\tconst parent = untracked(localState.parent);\n\t\t\tconst geometry = (parent as Mesh).geometry;\n\t\t\tif (geometry) {\n\t\t\t\t(material as any).bvh = new MeshBVHUniformStruct();\n\t\t\t\t(material as any).bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\t(material as any).viewMatrixInverse = camera.matrixWorld;\n\t\t\t\t(material as any).projectionMatrixInverse = camera.projectionMatrixInverse;\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetLocalState,\n\tinjectBeforeRender,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtMeshPhysicalMaterial,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { MeshDiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BackSide, Color, FrontSide, Mesh, NoToneMapping, Texture, ToneMapping } from 'three';\n\ntype MeshTransmissionMaterialOptions = ConstructorParameters<typeof MeshTransmissionMaterial>[0];\n\nexport type NgtsMeshTransmissionMaterialOptions = Partial<NgtMeshPhysicalMaterial> &\n\tOmit<MeshTransmissionMaterialOptions, 'buffer' | 'anisotropicBlur'> & {\n\t\tanisotropicBlur?: number;\n\t\tbuffer?: Texture;\n\t\t/** transmissionSampler, you can use the threejs transmission sampler texture that is\n\t\t * generated once for all transmissive materials. The upside is that it can be faster if you\n\t\t * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n\t\t * using this can't see other transparent or transmissive objects, default: false */\n\t\ttransmissionSampler: boolean;\n\t\t/** Render the backside of the material (more cost, better results), default: false */\n\t\tbackside: boolean;\n\t\t/** Backside thickness (when backside is true), default: 0 */\n\t\tbacksideThickness: number;\n\t\tbacksideEnvMapIntensity: number;\n\t\t/** Resolution of the local buffer, default: undefined (fullscreen) */\n\t\tresolution?: number;\n\t\t/** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n\t\tbacksideResolution?: number;\n\t\t/** Refraction samples, default: 6 */\n\t\tsamples: number;\n\t\t/** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n\t\tbackground?: Texture | Color;\n\t};\n\nconst defaultOptions: NgtsMeshTransmissionMaterialOptions = {\n\ttransmissionSampler: false,\n\tbackside: false,\n\tside: FrontSide,\n\ttransmission: 1,\n\tthickness: 0,\n\tbacksideThickness: 0,\n\tbacksideEnvMapIntensity: 1,\n\tsamples: 10,\n};\n\n@Component({\n\tselector: 'ngts-mesh-transmission-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[_transmission]=\"transmission()\"\n\t\t\t[transmission]=\"transmissionSampler() ? transmission() : 0\"\n\t\t\t[buffer]=\"bufferTexture()\"\n\t\t\t[anisotropicBlur]=\"anisotropicBlurOption()\"\n\t\t\t[side]=\"side()\"\n\t\t\t[thickness]=\"thickness()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshTransmissionMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'buffer',\n\t\t'transmissionSampler',\n\t\t'backside',\n\t\t'side',\n\t\t'transmission',\n\t\t'thickness',\n\t\t'backsideThickness',\n\t\t'backsideEnvMapIntensity',\n\t\t'samples',\n\t\t'resolution',\n\t\t'backsideResolution',\n\t\t'background',\n\t\t'anisotropy',\n\t\t'anisotropicBlur',\n\t]);\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate backsideResolution = pick(this.options, 'backsideResolution');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate buffer = pick(this.options, 'buffer');\n\tprivate anisotropy = pick(this.options, 'anisotropy');\n\tprivate anisotropicBlur = pick(this.options, 'anisotropicBlur');\n\tprivate background = pick(this.options, 'background');\n\tprivate backside = pick(this.options, 'backside');\n\tprivate backsideThickness = pick(this.options, 'backsideThickness');\n\tprivate backsideEnvMapIntensity = pick(this.options, 'backsideEnvMapIntensity');\n\n\ttransmissionSampler = pick(this.options, 'transmissionSampler');\n\ttransmission = pick(this.options, 'transmission');\n\tthickness = pick(this.options, 'thickness');\n\tside = pick(this.options, 'side');\n\n\tmaterialRef = viewChild<ElementRef<MeshTransmissionMaterial & MeshTransmissionMaterialOptions>>('material');\n\n\tprivate backResolution = computed(() => this.backsideResolution() || this.resolution());\n\n\tprivate fboBack = injectFBO(() => ({ width: this.backResolution() }));\n\tprivate fboMain = injectFBO(() => ({ width: this.resolution() }));\n\n\tbufferTexture = computed(() => this.buffer() || this.fboMain().texture);\n\tanisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());\n\n\tprivate discardMaterial = new MeshDiscardMaterial();\n\n\tmaterial = computed(() => {\n\t\tconst previousMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (previousMaterial) {\n\t\t\tpreviousMaterial.dispose();\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\tconst [samples, transmissionSampler] = [this.samples(), this.transmissionSampler()];\n\t\treturn new MeshTransmissionMaterial({ samples, transmissionSampler });\n\t});\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tlet oldBg: Texture | Color | null;\n\t\tlet oldEnvMapIntensity: number | undefined;\n\t\tlet oldTone: ToneMapping | undefined;\n\t\tlet parent: Mesh | undefined;\n\t\tinjectBeforeRender(({ clock, gl, scene, camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst [\n\t\t\t\tfboMain,\n\t\t\t\tfboBack,\n\t\t\t\ttransmissionSampler,\n\t\t\t\tbackground,\n\t\t\t\tbackside,\n\t\t\t\tbacksideThickness,\n\t\t\t\tbacksideEnvMapIntensity,\n\t\t\t\tthickness,\n\t\t\t\tside,\n\t\t\t] = [\n\t\t\t\tthis.fboMain(),\n\t\t\t\tthis.fboBack(),\n\t\t\t\tthis.transmissionSampler(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.backside(),\n\t\t\t\tthis.backsideThickness(),\n\t\t\t\tthis.backsideEnvMapIntensity(),\n\t\t\t\tthis.thickness(),\n\t\t\t\tthis.side(),\n\t\t\t];\n\n\t\t\tmaterial.time = clock.getElapsedTime();\n\t\t\t// Render only if the buffer matches the built-in and no transmission sampler is set\n\t\t\t// @ts-expect-error - we know material.buffer is not just undefined | null\n\t\t\tif (material.buffer === fboMain.texture && !transmissionSampler) {\n\t\t\t\tparent = getLocalState(material)?.parent() as Mesh;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\t// Save defaults\n\t\t\t\t\toldTone = gl.toneMapping;\n\t\t\t\t\toldBg = scene.background;\n\t\t\t\t\toldEnvMapIntensity = material.envMapIntensity;\n\n\t\t\t\t\t// Switch off tonemapping lest it double tone maps\n\t\t\t\t\t// Save the current background and set the HDR as the new BG\n\t\t\t\t\t// Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n\t\t\t\t\tgl.toneMapping = NoToneMapping;\n\t\t\t\t\tif (background) scene.background = background;\n\t\t\t\t\tparent.material = this.discardMaterial;\n\n\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t// Render into the backside buffer\n\t\t\t\t\t\tgl.setRenderTarget(fboBack);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t// And now prepare the material for the main render using the backside buffer\n\t\t\t\t\t\tparent.material = material;\n\t\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\t\tbuffer: fboBack.texture,\n\t\t\t\t\t\t\tthickness: backsideThickness,\n\t\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\t\tenvMapIntensity: backsideEnvMapIntensity,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Render into the main buffer\n\t\t\t\t\tgl.setRenderTarget(fboMain);\n\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\tparent.material = material;\n\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\tbuffer: fboMain.texture,\n\t\t\t\t\t\tthickness,\n\t\t\t\t\t\tside,\n\t\t\t\t\t\tenvMapIntensity: oldEnvMapIntensity,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Set old state back\n\t\t\t\t\tscene.background = oldBg;\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tgl.toneMapping = oldTone;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtMeshStandardMaterial, omit } from 'angular-three';\nimport { MeshWobbleMaterial, MeshWobbleMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshWobbleMaterialOptions extends MeshWobbleMaterialParameters, Partial<NgtMeshStandardMaterial> {\n\tspeed: number;\n}\n\nconst defaultOptions: NgtsMeshWobbleMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-wobble-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [parameters]=\"parameters()\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMeshWobbleMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshWobbleMaterial();\n\n\tconstructor() {\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst material = this.material;\n\t\t\tmaterial.time = clock.elapsedTime * this.options().speed;\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { NgtArgs, NgtAttachable } from 'angular-three';\nimport { PointMaterial } from 'angular-three-soba/shaders';\nimport { PointsMaterialParameters } from 'three';\n\n@Component({\n\tselector: 'ngts-point-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPointMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as PointsMaterialParameters);\n\n\tmaterial = new PointMaterial(this.options());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":";;;;;;;;;;;MAyBa,wBAAwB,CAAA;AAwCpC,IAAA,WAAA,GAAA;AAvCA,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAqD,CAAC;AACnF,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAiF,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAE5F,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACzC,YAAA,OAAO,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;AACzE,SAAC,CAAC,CAAC;QAEK,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtD,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAClD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG;gBAChE,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,EAAE;aACf,CAAC;;AAGF,YAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACtB,gBAAA,OAAQ,IAAqB,CAAC,SAAS,CAAC,CAAC;AACzC,gBAAA,OAAQ,IAAqB,CAAC,kBAAkB,CAAC,CAAC;aAClD;YAED,OAAO,IAAI,oBAAoB,CAAC;AAC/B,gBAAA,YAAY,EAAE,IAAI;gBAClB,cAAc;gBACd,YAAY;gBACZ,QAAQ;gBACR,QAAQ;AACR,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AAGF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,SAAS,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACH;8GA7CW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAT1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;ACZD,MAAMA,gBAAc,GAAmC;AACtD,IAAA,KAAK,EAAE,CAAC;CACR,CAAC;MAcW,uBAAuB,CAAA;AASnC,IAAA,WAAA,GAAA;AARA,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAE7B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAG3C,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5D,SAAC,CAAC,CAAC;KACH;8GAbW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EATzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;AC+BD,MAAMA,gBAAc,GAAqC;AACxD,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,oBAAoB,EAAE,IAAI;AAC1B,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,eAAe,EAAE,CAAC;CAClB,CAAC;MAcW,yBAAyB,CAAA;AAgKrC,IAAA,WAAA,GAAA;AA/JA,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAE,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACvC,eAAe;YACf,YAAY;YACZ,SAAS;YACT,aAAa;YACb,MAAM;YACN,mBAAmB;YACnB,mBAAmB;YACnB,YAAY;YACZ,sBAAsB;YACtB,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,iBAAiB;AACjB,SAAA,CAAC,CAAC;QAEK,IAAK,CAAA,KAAA,GAAG,WAAW,EAAE,CAAC;QACtB,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAoC,UAAU,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3C,eAAe;YACf,YAAY;YACZ,SAAS;YACT,aAAa;YACb,MAAM;YACN,mBAAmB;YACnB,mBAAmB;YACnB,YAAY;YACZ,sBAAsB;YACtB,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,iBAAiB;AACjB,SAAA,CAAC,CAAC;QAEK,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAEzC,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;QACK,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAElF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,KAAK,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACvB,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;AACvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;QAC/B,IAAc,CAAA,cAAA,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACvB,QAAA,IAAA,CAAA,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAExC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,MAAM,CACL,EAAE,EACF,EACC,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,oBAAoB,EACpB,MAAM,EACN,OAAO,EACP,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,GACX,EACD,IAAI,EACJ,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAE9E,YAAA,MAAM,sBAAsB,GAAG;AAC9B,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,IAAI,EAAE,aAAa;aACnB,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;AACnF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;AAEnF,YAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;gBAC7B,EAAE;gBACF,UAAU;AACV,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACf,iBAAiB;gBACjB,iBAAiB;gBACjB,UAAU;gBACV,oBAAoB;AACpB,aAAA,CAAC,CAAC;YAEH,MAAM,OAAO,GAAiB,EAAE,CAAC;YAEjC,IAAI,OAAO,EAAE;AACZ,gBAAA,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AACnB,gBAAA,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;aAC1B;YAED,IAAI,aAAa,EAAE;AAClB,gBAAA,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;aAC/B;AAED,YAAA,MAAM,mBAAmB,GAAG;gBAC3B,MAAM;gBACN,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,OAAO;gBACP,WAAW;gBACX,iBAAiB;gBACjB,iBAAiB;gBACjB,UAAU;gBACV,oBAAoB;gBACpB,UAAU;gBACV,aAAa;gBACb,WAAW;gBACX,OAAO;aACP,CAAC;YAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;AACtD,SAAC,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAChE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3G,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;YAEhE,IAAI,YAAY,EAAE;gBACjB,YAAY,CAAC,OAAO,EAAE,CAAC;AACvB,gBAAA,OAAQ,YAA6B,CAAC,SAAS,CAAC,CAAC;AACjD,gBAAA,OAAQ,YAA6B,CAAC,kBAAkB,CAAC,CAAC;aAC1D;;YAGD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,qBAAqB,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;QAGF,MAAM,CAAC,MAAK;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,mBAAmB,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;YACnD,IAAI,QAAQ,EAAE;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAC;AACnB,gBAAA,OAAQ,QAAyB,CAAC,SAAS,CAAC,CAAC;AAC7C,gBAAA,OAAQ,QAAyB,CAAC,kBAAkB,CAAC,CAAC;aACtD;AACF,SAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAI;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;AAEtB,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,UAAU;gBAAE,OAAO;AAExB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AAEpB,YAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACrD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE/B,YAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,YAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AACvC,YAAA,MAAM,uBAAuB,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YACxD,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,YAAA,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACzB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;YAC9B,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,YAAA,IAAI,OAAO;gBAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,YAAA,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC;AACjC,YAAA,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,uBAAuB,CAAC;AAClD,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACH;IAEO,YAAY,GAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAO;AAEtB,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU;YAAE,OAAO;AAExB,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;;QAE5E,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;;AAElE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;;AAGhD,QAAA,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5F,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAC5B,CAAC;AACF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC7D,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAChB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;AAEjF,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;QAEhE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,QAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;QACvD,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACjD;8GAlRW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAT3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;ACxCD,MAAMA,gBAAc,GAAsC;AACzD,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,kBAAkB,EAAE,CAAC;AACrB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,IAAI;CAChB,CAAC;AAEF,SAAS,aAAa,CAAC,GAA0B,EAAA;AAChD,IAAA,OAAO,GAAG,IAAK,GAAmB,CAAC,aAAa,CAAC;AAClD,CAAC;MAuBY,0BAA0B,CAAA;AA6DtC,IAAA,WAAA,GAAA;AA5DA,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAyB,CAAC;AACjD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAE,CAAC,CAAC;AAC5E,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAE9D,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACtD,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA0D,UAAU,CAAC,CAAC;QAErF,IAAK,CAAA,KAAA,GAAG,WAAW,EAAE,CAAC;QACtB,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YACvB,MAAM,QAAQ,GAAG,EAA+B,CAAC;AACjD,YAAA,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,GAAG;AAChD,gBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,UAAU,EAAE;aACjB,CAAC;AACF,YAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;AAC5E,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvC,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;AAE7B,YAAA,IAAI,SAAS;AAAE,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;YAClD,QAAQ,CAAC,oBAAoB,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA,CAAE,CAAC;YAClD,QAAQ,CAAC,qBAAqB,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAA,CAAE,CAAC;AACpD,YAAA,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAG,EAAA,OAAO,IAAI,CAAC;;YAG5C,IAAI,kBAAkB,GAAG,CAAC;AAAE,gBAAA,QAAQ,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC;AACnE,YAAA,IAAI,UAAU;AAAE,gBAAA,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;AAE7C,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;YAEhE,IAAI,YAAY,EAAE;gBACjB,YAAY,CAAC,OAAO,EAAE,CAAC;AACvB,gBAAA,OAAQ,YAA6B,CAAC,SAAS,CAAC,CAAC;AACjD,gBAAA,OAAQ,YAA6B,CAAC,kBAAkB,CAAC,CAAC;aAC1D;;YAGD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,sBAAsB,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;QAGF,MAAM,CAAC,MAAK;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;AAEtB,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,MAAM,QAAQ,GAAI,MAAe,CAAC,QAAQ,CAAC;YAC3C,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAgB,CAAC,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;gBAClD,QAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAClG;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;YACnD,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAgB,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;AACxD,gBAAA,QAAgB,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;aAC3E;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;YACnD,IAAI,QAAQ,EAAE;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAC;AACnB,gBAAA,OAAQ,QAAyB,CAAC,SAAS,CAAC,CAAC;AAC7C,gBAAA,OAAQ,QAAyB,CAAC,kBAAkB,CAAC,CAAC;aACtD;AACF,SAAC,CAAC,CAAC;KACH;8GA7FW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAlB5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;ACxBD,MAAMA,gBAAc,GAAwC;AAC3D,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,uBAAuB,EAAE,CAAC;AAC1B,IAAA,OAAO,EAAE,EAAE;CACX,CAAC;MAyBW,4BAA4B,CAAA;AA6DxC,IAAA,WAAA,GAAA;AA5DA,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAACA,gBAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAACA,gBAAc,CAAC,EAAE,CAAC,CAAC;AAC5E,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/B,QAAQ;YACR,qBAAqB;YACrB,UAAU;YACV,MAAM;YACN,cAAc;YACd,WAAW;YACX,mBAAmB;YACnB,yBAAyB;YACzB,SAAS;YACT,YAAY;YACZ,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,iBAAiB;AACjB,SAAA,CAAC,CAAC;QAEK,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAC9D,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACxD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC5D,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;QAEhF,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAyE,UAAU,CAAC,CAAC;AAEpG,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEhF,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAElE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAE5E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAEpD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;YAEpE,IAAI,gBAAgB,EAAE;gBACrB,gBAAgB,CAAC,OAAO,EAAE,CAAC;AAC3B,gBAAA,OAAQ,gBAAiC,CAAC,SAAS,CAAC,CAAC;AACrD,gBAAA,OAAQ,gBAAiC,CAAC,kBAAkB,CAAC,CAAC;aAC9D;AAED,YAAA,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACpF,OAAO,IAAI,wBAAwB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;AAGF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;YACnD,IAAI,QAAQ,EAAE;gBACb,QAAQ,CAAC,OAAO,EAAE,CAAC;AACnB,gBAAA,OAAQ,QAAyB,CAAC,SAAS,CAAC,CAAC;AAC7C,gBAAA,OAAQ,QAAyB,CAAC,kBAAkB,CAAC,CAAC;aACtD;AACF,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,KAA6B,CAAC;AAClC,QAAA,IAAI,kBAAsC,CAAC;AAC3C,QAAA,IAAI,OAAgC,CAAC;AACrC,QAAA,IAAI,MAAwB,CAAC;AAC7B,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAI;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;AAEtB,YAAA,MAAM,CACL,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,uBAAuB,EACvB,SAAS,EACT,IAAI,EACJ,GAAG;gBACH,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE;aACX,CAAC;AAEF,YAAA,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;;;YAGvC,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE;gBAChE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAU,CAAC;gBAEnD,IAAI,MAAM,EAAE;;AAEX,oBAAA,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;AACzB,oBAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;AACzB,oBAAA,kBAAkB,GAAG,QAAQ,CAAC,eAAe,CAAC;;;;AAK9C,oBAAA,EAAE,CAAC,WAAW,GAAG,aAAa,CAAC;AAC/B,oBAAA,IAAI,UAAU;AAAE,wBAAA,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9C,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;oBAEvC,IAAI,QAAQ,EAAE;;AAEb,wBAAA,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5B,wBAAA,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;AAEzB,wBAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,wBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;4BAC9B,MAAM,EAAE,OAAO,CAAC,OAAO;AACvB,4BAAA,SAAS,EAAE,iBAAiB;AAC5B,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,eAAe,EAAE,uBAAuB;AACxC,yBAAA,CAAC,CAAC;qBACH;;AAGD,oBAAA,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAA,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEzB,oBAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;wBAC9B,MAAM,EAAE,OAAO,CAAC,OAAO;wBACvB,SAAS;wBACT,IAAI;AACJ,wBAAA,eAAe,EAAE,kBAAkB;AACnC,qBAAA,CAAC,CAAC;;AAGH,oBAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,oBAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzB,oBAAA,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC;iBACzB;aACD;AACF,SAAC,CAAC,CAAC;KACH;8GAzJW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EApB9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAvBxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;AC7ED,MAAM,cAAc,GAAkC;AACrD,IAAA,KAAK,EAAE,CAAC;CACR,CAAC;MAcW,sBAAsB,CAAA;AAOlC,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAGnC,QAAA,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,YAAA,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;AAC1D,SAAC,CAAC,CAAC;KACH;8GAZW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EATxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIL,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA,CAAA;;;MCPY,iBAAiB,CAAA;AAZ9B,IAAA,WAAA,GAAA;AAaC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAA8B,CAAC,CAAC;QAEhD,IAAQ,CAAA,QAAA,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7C,KAAA;8GALY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EATnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA,CAAA;;;AChBD;;AAEG;;;;"}
|