glre 0.43.0 → 0.45.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/dist/addons.cjs +1 -1
- package/dist/addons.cjs.map +1 -1
- package/dist/addons.d.ts +66 -10
- package/dist/addons.js +1 -1
- package/dist/addons.js.map +1 -1
- package/dist/index.cjs +6 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +65 -8
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +66 -8
- package/dist/node.cjs +15 -19
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +64 -9
- package/dist/node.js +14 -18
- package/dist/node.js.map +1 -1
- package/dist/react.d.ts +65 -8
- package/dist/solid.d.ts +65 -8
- package/package.json +1 -1
- package/src/addons/generative/cnoise.ts +5 -13
- package/src/addons/generative/gerstnerWave.ts +1 -1
- package/src/addons/generative/snoise.ts +0 -1
- package/src/addons/math/mod2.ts +1 -1
- package/src/addons/math/taylorInvSqrt.ts +2 -2
- package/src/index.ts +1 -0
- package/src/node/build.ts +45 -10
- package/src/node/types.ts +54 -38
- package/src/node/utils/const.ts +4 -36
- package/src/node/utils/index.ts +4 -24
- package/src/node/utils/utils.ts +2 -10
- package/src/types.ts +3 -2
- package/src/utils/helpers.ts +2 -1
- package/src/utils/program.ts +7 -43
- package/src/utils/webgl.ts +6 -20
package/dist/addons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addons/animation/easing/backIn.ts","../src/addons/math/const.ts","../src/addons/animation/easing/backInOut.ts","../src/addons/animation/easing/backOut.ts","../src/addons/animation/easing/bounceIn.ts","../src/addons/animation/easing/bounceOut.ts","../src/addons/animation/easing/bounceInOut.ts","../src/addons/animation/easing/circularIn.ts","../src/addons/animation/easing/circularInOut.ts","../src/addons/animation/easing/circularOut.ts","../src/addons/animation/easing/cubicIn.ts","../src/addons/animation/easing/cubicInOut.ts","../src/addons/animation/easing/cubicOut.ts","../src/addons/animation/easing/elasticIn.ts","../src/addons/animation/easing/elasticInOut.ts","../src/addons/animation/easing/elasticOut.ts","../src/addons/animation/easing/exponentialIn.ts","../src/addons/animation/easing/exponentialInOut.ts","../src/addons/animation/easing/exponentialOut.ts","../src/addons/animation/easing/linearIn.ts","../src/addons/animation/easing/linearInOut.ts","../src/addons/animation/easing/linearOut.ts","../src/addons/animation/easing/quadraticIn.ts","../src/addons/animation/easing/quadraticInOut.ts","../src/addons/animation/easing/quadraticOut.ts","../src/addons/animation/easing/quarticIn.ts","../src/addons/animation/easing/quarticInOut.ts","../src/addons/animation/easing/quarticOut.ts","../src/addons/animation/easing/quinticIn.ts","../src/addons/animation/easing/quinticInOut.ts","../src/addons/animation/easing/quinticOut.ts","../src/addons/animation/easing/sineIn.ts","../src/addons/animation/easing/sineInOut.ts","../src/addons/animation/easing/sineOut.ts","../src/addons/color/blend/add.ts","../src/addons/color/blend/average.ts","../src/addons/color/blend/color.ts","../src/addons/color/space/rgb2hsv.ts","../src/addons/color/space/hsv2rgb.ts","../src/addons/color/space/hue2rgb.ts","../src/addons/color/blend/colorBurn.ts","../src/addons/color/blend/colorDodge.ts","../src/addons/color/blend/darken.ts","../src/addons/color/blend/difference.ts","../src/addons/color/blend/exclusion.ts","../src/addons/color/blend/glow.ts","../src/addons/color/blend/reflect.ts","../src/addons/color/blend/hardLight.ts","../src/addons/color/blend/overlay.ts","../src/addons/color/blend/hardMix.ts","../src/addons/color/blend/vividLight.ts","../src/addons/color/blend/hue.ts","../src/addons/color/blend/lighten.ts","../src/addons/color/blend/linearBurn.ts","../src/addons/color/blend/luminosity.ts","../src/addons/color/blend/multiply.ts","../src/addons/color/blend/linearDodge.ts","../src/addons/color/blend/linearLight.ts","../src/addons/color/blend/negation.ts","../src/addons/color/blend/phoenix.ts","../src/addons/color/blend/pinLight.ts","../src/addons/color/blend/saturation.ts","../src/addons/color/blend/screen.ts","../src/addons/color/blend/softLight.ts","../src/addons/color/blend/subtract.ts","../src/addons/color/composite/compositeXor.ts","../src/addons/color/composite/destinationAtop.ts","../src/addons/color/composite/destinationIn.ts","../src/addons/color/composite/destinationOut.ts","../src/addons/color/composite/destinationOver.ts","../src/addons/color/composite/sourceAtop.ts","../src/addons/color/composite/sourceIn.ts","../src/addons/color/composite/sourceOut.ts","../src/addons/color/composite/sourceOver.ts","../src/addons/color/space/cmyk2rgb.ts","../src/addons/color/space/gamma2linear.ts","../src/addons/color/space/hsl2rgb.ts","../src/addons/color/space/lab2lch.ts","../src/addons/color/space/lab2rgb.ts","../src/addons/color/space/lab2xyz.ts","../src/addons/color/space/xyz2rgb.ts","../src/addons/color/space/lch2lab.ts","../src/addons/color/space/lch2rgb.ts","../src/addons/color/space/linear2gamma.ts","../src/addons/color/space/oklab2rgb.ts","../src/addons/color/space/rgb2cmyk.ts","../src/addons/math/mmin.ts","../src/addons/color/space/rgb2hcv.ts","../src/addons/color/space/rgb2hsl.ts","../src/addons/color/space/rgb2hue.ts","../src/addons/color/space/rgb2lab.ts","../src/addons/color/space/rgb2xyz.ts","../src/addons/color/space/xyz2lab.ts","../src/addons/color/space/rgb2lch.ts","../src/addons/color/space/rgb2oklab.ts","../src/addons/color/space/rgb2srgb.ts","../src/addons/color/space/rgb2yiq.ts","../src/addons/color/space/rgb2yuv.ts","../src/addons/color/space/srgb2rgb.ts","../src/addons/color/space/yiq2rgb.ts","../src/addons/color/space/yuv2rgb.ts","../src/addons/draw/arrows.ts","../src/addons/sdf/lineSDF.ts","../src/addons/draw/axis.ts","../src/addons/draw/line.ts","../src/addons/draw/fill.ts","../src/addons/math/aastep.ts","../src/addons/draw/bridge.ts","../src/addons/draw/stroke.ts","../src/addons/draw/char.ts","../src/addons/math/modi.ts","../src/addons/draw/circle.ts","../src/addons/sdf/circleSDF.ts","../src/addons/draw/colorChecker.ts","../src/addons/space/scale.ts","../src/addons/color/palette/macbeth.ts","../src/addons/sdf/crossSDF.ts","../src/addons/sdf/rectSDF.ts","../src/addons/draw/rect.ts","../src/addons/draw/colorPicker.ts","../src/addons/space/nearest.ts","../src/addons/draw/digits.ts","../src/addons/draw/flip.ts","../src/addons/draw/hex.ts","../src/addons/sdf/hexSDF.ts","../src/addons/draw/matrix.ts","../src/addons/draw/point.ts","../src/addons/draw/tri.ts","../src/addons/sdf/triSDF.ts","../src/addons/geometry/aabb/aabb.ts","../src/addons/geometry/aabb/centroid.ts","../src/addons/geometry/aabb/contain.ts","../src/addons/geometry/aabb/diagonal.ts","../src/addons/geometry/aabb/expand.ts","../src/addons/geometry/aabb/intersect.ts","../src/addons/geometry/aabb/square.ts","../src/addons/geometry/triangle/area.ts","../src/addons/geometry/triangle/barycentric.ts","../src/addons/geometry/triangle/centroid.ts","../src/addons/geometry/triangle/closestPoint.ts","../src/addons/geometry/triangle/contain.ts","../src/addons/geometry/triangle/distanceSq.ts","../src/addons/math/lengthSq.ts","../src/addons/geometry/triangle/intersect.ts","../src/addons/geometry/triangle/normal.ts","../src/addons/geometry/triangle/signedDistance.ts","../src/addons/geometry/triangle/triangle.ts","../src/addons/generative/cnoise.ts","../src/addons/math/mod289.ts","../src/addons/math/permute.ts","../src/addons/math/taylorInvSqrt.ts","../src/addons/math/quintic.ts","../src/addons/generative/curl.ts","../src/addons/generative/snoise.ts","../src/addons/math/grad4.ts","../src/addons/generative/fbm.ts","../src/addons/generative/gnoise.ts","../src/addons/generative/random.ts","../src/addons/generative/srandom.ts","../src/addons/math/cubic.ts","../src/addons/generative/gerstnerWave.ts","../src/addons/generative/noised.ts","../src/addons/generative/pnoise.ts","../src/addons/generative/psrdnoise.ts","../src/addons/generative/voronoi.ts","../src/addons/generative/voronoise.ts","../src/addons/generative/wavelet.ts","../src/addons/math/rotate2d.ts","../src/addons/generative/worley.ts","../src/addons/math/dist.ts","../src/addons/math/aafloor.ts","../src/addons/math/map.ts","../src/addons/math/aafract.ts","../src/addons/math/aamirror.ts","../src/addons/math/nyquist.ts","../src/addons/math/absi.ts","../src/addons/math/adaptiveThreshold.ts","../src/addons/math/bump.ts","../src/addons/math/cubicMix.ts","../src/addons/math/decimate.ts","../src/addons/math/fcos.ts","../src/addons/math/frac.ts","../src/addons/math/gain.ts","../src/addons/math/gaussian.ts","../src/addons/math/hammersley.ts","../src/addons/math/highPass.ts","../src/addons/math/inside.ts","../src/addons/math/invCubic.ts","../src/addons/math/invQuartic.ts","../src/addons/math/inverse.ts","../src/addons/math/mirror.ts","../src/addons/math/mmax.ts","../src/addons/math/mmix.ts","../src/addons/math/mod2.ts","../src/addons/math/pack.ts","../src/addons/math/parabola.ts","../src/addons/math/pow2.ts","../src/addons/math/pow3.ts","../src/addons/math/pow5.ts","../src/addons/math/pow7.ts","../src/addons/math/powFast.ts","../src/addons/math/quat/quat2mat3.ts","../src/addons/math/quat/quat2mat4.ts","../src/addons/math/toMat4.ts","../src/addons/math/quat/quatAdd.ts","../src/addons/math/quat/quatConj.ts","../src/addons/math/quat/quatDiv.ts","../src/addons/math/quat/quatIdentity.ts","../src/addons/math/quat/quatInverse.ts","../src/addons/math/quat/quatLengthSq.ts","../src/addons/math/quat/quatLength.ts","../src/addons/math/quat/quatLerp.ts","../src/addons/math/quat/quatMul.ts","../src/addons/math/quat/quatNeg.ts","../src/addons/math/quat/quatNorm.ts","../src/addons/math/quat/quatSub.ts","../src/addons/math/quartic.ts","../src/addons/math/rotate3d.ts","../src/addons/math/rotate3dX.ts","../src/addons/math/rotate3dY.ts","../src/addons/math/rotate3dZ.ts","../src/addons/math/rotate4d.ts","../src/addons/math/rotate4dX.ts","../src/addons/math/rotate4dY.ts","../src/addons/math/rotate4dZ.ts","../src/addons/math/saturateMediump.ts","../src/addons/math/scale2d.ts","../src/addons/math/scale3d.ts","../src/addons/math/scale4d.ts","../src/addons/math/smootherstep.ts","../src/addons/math/toMat3.ts","../src/addons/math/translate4d.ts","../src/addons/math/unpack.ts","../src/addons/sdf/arrowSDF.ts","../src/addons/sdf/boxFrameSDF.ts","../src/addons/sdf/capsuleSDF.ts","../src/addons/sdf/coneSDF.ts","../src/addons/sdf/cubeSDF.ts","../src/addons/sdf/boxSDF.ts","../src/addons/sdf/cylinderSDF.ts","../src/addons/sdf/dodecahedronSDF.ts","../src/addons/sdf/ellipsoidSDF.ts","../src/addons/sdf/flowerSDF.ts","../src/addons/sdf/gearSDF.ts","../src/addons/sdf/heartSDF.ts","../src/addons/sdf/hexPrismSDF.ts","../src/addons/sdf/icosahedronSDF.ts","../src/addons/sdf/juliaSDF.ts","../src/addons/sdf/kochSDF.ts","../src/addons/sdf/linkSDF.ts","../src/addons/sdf/mandelbulbSDF.ts","../src/addons/space/cart2polar.ts","../src/addons/sdf/octahedronSDF.ts","../src/addons/sdf/octogonPrismSDF.ts","../src/addons/sdf/opElongate.ts","../src/addons/sdf/opExtrude.ts","../src/addons/sdf/opIntersection.ts","../src/addons/sdf/opOnion.ts","../src/addons/sdf/opRepeat.ts","../src/addons/sdf/opRevolve.ts","../src/addons/sdf/opRound.ts","../src/addons/sdf/opSubtraction.ts","../src/addons/sdf/opUnion.ts","../src/addons/sdf/planeSDF.ts","../src/addons/sdf/polySDF.ts","../src/addons/sdf/pyramidSDF.ts","../src/addons/sdf/raysSDF.ts","../src/addons/sdf/rhombSDF.ts","../src/addons/sdf/spiralSDF.ts","../src/addons/sdf/starSDF.ts","../src/addons/sdf/superShapeSDF.ts","../src/addons/sdf/tetrahedronSDF.ts","../src/addons/sdf/triPrismSDF.ts","../src/addons/sdf/sphereSDF.ts","../src/addons/sdf/torusSDF.ts","../src/addons/sdf/vesicaSDF.ts","../src/addons/space/aspect.ts","../src/addons/space/bracketing.ts","../src/addons/space/brickTile.ts","../src/addons/space/sqTile.ts","../src/addons/space/center.ts","../src/addons/space/checkerTile.ts","../src/addons/space/depth2viewZ.ts","../src/addons/space/displace.ts","../src/addons/space/lookAt.ts","../src/addons/space/equirect2xyz.ts","../src/addons/space/eulerView.ts","../src/addons/space/translate.ts","../src/addons/space/fisheye2xyz.ts","../src/addons/space/flipY.ts","../src/addons/space/hexTile.ts","../src/addons/space/kaleidoscope.ts","../src/addons/space/linearizeDepth.ts","../src/addons/space/mirrorTile.ts","../src/addons/space/orthographic.ts","../src/addons/space/parallaxMapping.ts","../src/addons/space/perspective.ts","../src/addons/space/polar2cart.ts","../src/addons/space/ratio.ts","../src/addons/space/sprite.ts","../src/addons/space/tbn.ts","../src/addons/space/lookAtView.ts","../src/addons/space/rotate.ts","../src/addons/space/rotateX.ts","../src/addons/space/rotateY.ts","../src/addons/space/rotateZ.ts","../src/addons/space/unratio.ts","../src/addons/space/uncenter.ts","../src/addons/space/viewZ2depth.ts","../src/addons/space/xyz2equirect.ts","../src/addons/space/triTile.ts","../src/addons/space/windmillTile.ts"],"sourcesContent":["import { Fn, Float, pow, sin } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const backIn = Fn(([t]: [Float]): Float => {\n return pow(t, 3).sub(t.mul(sin(t.mul(PI))))\n}).setLayout({\n name: 'backIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { float } from '../../node'\n\n// Mathematical constants as float nodes\nexport const EIGHTH_PI = float(0.39269908169)\nexport const QTR_PI = float(0.78539816339)\nexport const HALF_PI = float(1.5707963267948966192313216916398)\nexport const PI = float(3.1415926535897932384626433832795)\nexport const TWO_PI = float(6.283185307179586476925286766559)\nexport const TAU = float(6.283185307179586476925286766559)\nexport const INV_PI = float(0.31830988618379067153776752674503)\nexport const INV_SQRT_TAU = float(0.39894228040143267793994605993439)\nexport const SQRT_HALF_PI = float(1.25331413732)\nexport const PHI = float(1.618033988749894848204586834)\nexport const EPSILON = float(0.00001)\nexport const GOLDEN_RATIO = float(1.6180339887)\nexport const GOLDEN_RATIO_CONJUGATE = float(0.61803398875)\nexport const GOLDEN_ANGLE = float(2.39996323)\nexport const DEG2RAD = PI.div(180)\nexport const RAD2DEG = float(180).div(PI)\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backInOut = Fn(([t]: [Float]): Float => {\n const f = t.mul(2).select(float(1).sub(t.mul(2).sub(1)), t.lessThan(0.5))\n const g = backIn(f)\n return g.div(2).select(float(1).sub(g).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'backInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backOut = Fn(([t]: [Float]): Float => {\n return float(1).sub(backIn(float(1).sub(t)))\n}).setLayout({\n name: 'backOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceIn = Fn(([t]: [Float]): Float => {\n return float(1).sub(bounceOut(float(1).sub(t)))\n}).setLayout({\n name: 'bounceIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\n\nexport const bounceOut = Fn(([t]: [Float]): Float => {\n const a = float(4 / 11)\n const b = float(8 / 11)\n const c = float(9 / 10)\n const ca = float(4356.0 / 361.0)\n const cb = float(35442.0 / 1805.0)\n const cc = float(16061.0 / 1805.0)\n const t2 = t.mul(t)\n return t2.mul(7.5625).select(\n t2\n .mul(9.075)\n .sub(t.mul(9.9))\n .add(3.4)\n .select(\n t2\n .mul(ca)\n .sub(t.mul(cb))\n .add(cc)\n .select(t2.mul(10.8).sub(t.mul(20.52)).add(10.72), t.lessThan(c)),\n t.lessThan(b)\n ),\n t.lessThan(a)\n )\n}).setLayout({\n name: 'bounceOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceInOut = Fn(([t]: [Float]): Float => {\n return float(1)\n .sub(bounceOut(float(1).sub(t.mul(2))))\n .div(2)\n .select(bounceOut(t.mul(2).sub(1)).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'bounceInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularIn = Fn(([t]: [X]): X => {\n return t.mul(t).oneMinus().sqrt().oneMinus()\n}).setLayout({\n name: 'circularIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(4).oneMinus().sqrt().oneMinus().div(2)\n const late = t.mul(2).sub(1).mul(t.mul(-2).add(3)).sqrt().add(1).div(2)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'circularInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../../node'\n\nexport const circularOut = Fn(([t]: [X]): X => {\n return float(2).sub(t).mul(t).sqrt()\n}).setLayout({\n name: 'circularOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicIn = Fn(([t]: [X]): X => {\n return t.mul(t).mul(t)\n}).setLayout({\n name: 'cubicIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(t).mul(4)\n const late = t.mul(2).sub(2).pow(3).div(2).add(1)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'cubicInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicOut = Fn(([t]: [X]): X => {\n const f = t.sub(1)\n return f.mul(f).mul(f).add(1)\n}).setLayout({\n name: 'cubicOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticIn = Fn(([t]: [Float]): Float => {\n return sin(t.mul(13).mul(HALF_PI)).mul(pow(float(2), t.sub(1).mul(10)))\n}).setLayout({\n name: 'elasticIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticInOut = Fn(([t]: [Float]): Float => {\n const t2 = t.mul(2)\n const t2minus1 = t2.sub(1)\n return sin(HALF_PI.mul(13).mul(t2))\n .mul(pow(float(2), t2minus1.mul(10)))\n .div(2)\n .select(\n sin(HALF_PI.mul(-13).mul(t2minus1.add(1)))\n .mul(pow(float(2), t2minus1.mul(-10)))\n .div(2)\n .add(1),\n t.lessThan(0.5)\n )\n}).setLayout({\n name: 'elasticInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticOut = Fn(([t]: [Float]): Float => {\n return sin(float(-13).mul(t.add(1)).mul(HALF_PI))\n .mul(pow(float(2), float(-10).mul(t)))\n .add(1)\n}).setLayout({\n name: 'elasticOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialIn = Fn(([t]: [X]): X => {\n return (t as any).select(t.sub(1).mul(10).exp2(), t.equal(0))\n}).setLayout({\n name: 'exponentialIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialInOut = Fn(([t]: [X]): X => {\n const isZeroOrOne = t.equal(0).or(t.equal(1))\n const early = t.mul(20).sub(10).exp2().div(2)\n const late = t.mul(-20).add(10).exp2().div(-2).add(1)\n const result = (early as any).select(late, t.lessThan(0.5))\n return (t as any).select(result, isZeroOrOne)\n}).setLayout({\n name: 'exponentialInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialOut = Fn(([t]: [X]): X => {\n return (t as any).select(t.mul(-10).exp2().negate().add(1), t.equal(1))\n}).setLayout({\n name: 'exponentialOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearIn = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearInOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticIn = Fn(([t]: [X]): X => {\n return t.mul(t)\n}).setLayout({\n name: 'quadraticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quadraticInOut = Fn(([t]: [X]): X => {\n const p = t.mul(t).mul(2)\n return select(p, p.negate().add(t.mul(4)).sub(1), t.lessThan(0.5))\n}).setLayout({\n name: 'quadraticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticOut = Fn(([t]: [X]): X => {\n return t.mul(t.sub(2)).negate()\n}).setLayout({\n name: 'quadraticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticIn = Fn(([t]: [X]): X => {\n return t.pow(4)\n}).setLayout({\n name: 'quarticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quarticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(4).mul(8)\n const late = t.sub(1).pow(4).mul(-8).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quarticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticOut = Fn(([t]: [X]): X => {\n const it = t.sub(1)\n return it.mul(it).mul(it).mul(t.oneMinus()).add(1)\n}).setLayout({\n name: 'quarticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticIn = Fn(([t]: [X]): X => {\n return t.pow(5)\n}).setLayout({\n name: 'quinticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quinticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(5).mul(16)\n const late = t.mul(2).sub(2).pow(5).mul(-0.5).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quinticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticOut = Fn(([t]: [X]): X => {\n return t.sub(1).pow(5).negate().add(1)\n}).setLayout({\n name: 'quinticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineIn = Fn(([t]: [X]): X => {\n return sin(t.sub(1).mul(HALF_PI as any)).add(1)\n}).setLayout({\n name: 'sineIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, cos } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const sineInOut = Fn(([t]: [X]): X => {\n return cos(PI.mul(t)).sub(1).mul(-0.5)\n}).setLayout({\n name: 'sineInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineOut = Fn(([t]: [X]): X => {\n return sin(t.mul(HALF_PI as any))\n}).setLayout({\n name: 'sineOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, min, vec3 } from '../../../node'\n\nexport const blendAdd = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base.add(blend), 1)\n}).setLayout({\n name: 'blendAdd',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendAddVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return min(base.add(blend), vec3(1))\n}).setLayout({\n name: 'blendAddVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendAddVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendAddVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendAddVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendAverage = Fn(([base, blend]: [Float, Float]): Float => {\n return base.add(blend).mul(0.5)\n}).setLayout({\n name: 'blendAverage',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendAverageVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.add(blend).mul(0.5)\n}).setLayout({\n name: 'blendAverageVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendAverageVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendAverageVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendAverageVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendColor = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base).toVar('baseHSV')\n const blendHSV = rgb2hsv(blend).toVar('blendHSV')\n return hsv2rgb(vec3(blendHSV.x, blendHSV.y, baseHSV.z))\n}).setLayout({\n name: 'blendColor',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColor(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10')\n\nexport const rgb2hsv = Fn(([c]: [Vec3]): Vec3 => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n const H = Q.z\n .add(Q.w.sub(Q.y).div(float(6).mul(d).add(HCV_EPSILON)))\n .abs()\n .toVar()\n const S = d.div(Q.x.add(HCV_EPSILON)).toVar()\n const V = Q.x.toVar()\n\n return vec3(H, S, V)\n}).setLayout({\n name: 'rgb2hsv',\n type: 'vec3',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hsvVec4 = Fn(([c]: [Vec4]): Vec4 => {\n return vec4(rgb2hsv(c.xyz), c.w)\n}).setLayout({\n name: 'rgb2hsvVec4',\n type: 'vec4',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsv2rgb = Fn(([hsv]: [Vec3]): Vec3 => {\n return hue2rgb(hsv.x).sub(1).mul(hsv.y).add(1).mul(hsv.z)\n}).setLayout({\n name: 'hsv2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsv', type: 'vec3' }],\n})\n\nexport const hsv2rgbVec4 = Fn(([hsv]: [Vec4]): Vec4 => {\n return vec4(hsv2rgb(hsv.xyz), hsv.w)\n}).setLayout({\n name: 'hsv2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsv', type: 'vec4' }],\n})\n","import { Fn, Float, Vec3, float, vec3 } from '../../../node'\n\nexport const hue2rgb = Fn(([hue]: [Float]): Vec3 => {\n const R = hue.mul(6).sub(3).abs().sub(1).toVar()\n const G = float(2).sub(hue.mul(6).sub(2).abs()).toVar()\n const B = float(2).sub(hue.mul(6).sub(4).abs()).toVar()\n return vec3(R, G, B).saturate()\n}).setLayout({\n name: 'hue2rgb',\n type: 'vec3',\n inputs: [{ name: 'hue', type: 'float' }],\n})\n","import { Fn, Float, Vec3, vec3, max, select } from '../../../node'\n\nexport const blendColorBurn = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, max(base.div(blend.oneMinus()).oneMinus(), 0), blend.equal(0))\n}).setLayout({\n name: 'blendColorBurn',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendColorBurnVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendColorBurn(base.r, blend.r), blendColorBurn(base.g, blend.g), blendColorBurn(base.b, blend.b))\n}).setLayout({\n name: 'blendColorBurnVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorBurnVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColorBurnVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorBurnVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, select } from '../../../node'\n\nexport const blendColorDodge = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, min(base.div(blend.oneMinus()), 1), blend.equal(1))\n}).setLayout({\n name: 'blendColorDodge',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendColorDodgeVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendColorDodge(base.r, blend.r),\n blendColorDodge(base.g, blend.g),\n blendColorDodge(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendColorDodgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorDodgeVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColorDodgeVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorDodgeVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min } from '../../../node'\n\nexport const blendDarken = Fn(([base, blend]: [Float, Float]): Float => {\n return min(blend, base)\n}).setLayout({\n name: 'blendDarken',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendDarkenVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendDarken(base.r, blend.r), blendDarken(base.g, blend.g), blendDarken(base.b, blend.b))\n}).setLayout({\n name: 'blendDarkenVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendDarkenVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendDarkenVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendDarkenVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, abs } from '../../../node'\n\nexport const blendDifference = Fn(([base, blend]: [Float, Float]): Float => {\n return abs(base.sub(blend))\n}).setLayout({\n name: 'blendDifference',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendDifferenceVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return abs(base.sub(blend))\n}).setLayout({\n name: 'blendDifferenceVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendDifferenceVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendDifferenceVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendDifferenceVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendExclusion = Fn(([base, blend]: [Float, Float]): Float => {\n return base.add(blend).sub(base.mul(blend).mul(2))\n}).setLayout({\n name: 'blendExclusion',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' }\n ]\n})\n\nexport const blendExclusionVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.add(blend).sub(base.mul(blend).mul(2))\n}).setLayout({\n name: 'blendExclusionVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' }\n ]\n})\n\nexport const blendExclusionVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendExclusionVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendExclusionVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' }\n ]\n})","import { Fn, Float, Vec3 } from '../../../node'\nimport { blendReflect, blendReflectVec3 } from './reflect'\n\nexport const blendGlow = Fn(([base, blend]: [Float, Float]): Float => {\n return blendReflect(blend, base)\n}).setLayout({\n name: 'blendGlow',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendGlowVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return blendReflectVec3(blend, base)\n}).setLayout({\n name: 'blendGlowVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendGlowVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendGlowVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendGlowVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, select } from '../../../node'\n\nexport const blendReflect = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, min(base.mul(base).div(blend.oneMinus()), 1), blend.equal(1))\n}).setLayout({\n name: 'blendReflect',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendReflectVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendReflect(base.r, blend.r), blendReflect(base.g, blend.g), blendReflect(base.b, blend.b))\n}).setLayout({\n name: 'blendReflectVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendReflectVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendReflectVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendReflectVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\nimport { blendOverlay, blendOverlayVec3 } from './overlay'\n\nexport const blendHardLight = Fn(([base, blend]: [Float, Float]): Float => {\n return blendOverlay(blend, base)\n}).setLayout({\n name: 'blendHardLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendHardLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return blendOverlayVec3(blend, base)\n}).setLayout({\n name: 'blendHardLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHardLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHardLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHardLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\n\nexport const blendOverlay = Fn(([base, blend]: [Float, Float]): Float => {\n If(base.lessThan(0.5), () => {\n return base.mul(blend).mul(2)\n })\n return base.oneMinus().mul(blend.oneMinus()).mul(2).oneMinus()\n}).setLayout({\n name: 'blendOverlay',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendOverlayVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendOverlay(base.r, blend.r), blendOverlay(base.g, blend.g), blendOverlay(base.b, blend.b))\n}).setLayout({\n name: 'blendOverlayVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendOverlayVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendOverlayVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendOverlayVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If, float } from '../../../node'\nimport { blendVividLight } from './vividLight'\n\nexport const blendHardMix = Fn(([base, blend]: [Float, Float]): Float => {\n If(blendVividLight(base, blend).lessThan(0.5), () => {\n return float(0)\n })\n return float(1)\n}).setLayout({\n name: 'blendHardMix',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendHardMixVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendHardMix(base.r, blend.r), blendHardMix(base.g, blend.g), blendHardMix(base.b, blend.b))\n}).setLayout({\n name: 'blendHardMixVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHardMixVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHardMixVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHardMixVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendColorBurn } from './colorBurn'\nimport { blendColorDodge } from './colorDodge'\n\nexport const blendVividLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendColorBurn(base, blend.mul(2))\n })\n return blendColorDodge(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendVividLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendVividLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendVividLight(base.r, blend.r),\n blendVividLight(base.g, blend.g),\n blendVividLight(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendVividLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendVividLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendVividLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendVividLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, clamp } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendHue = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n const result = vec3(blendHSV.x, baseHSV.y, baseHSV.z)\n return hsv2rgb(result)\n}).setLayout({\n name: 'blendHue',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHueVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHue(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHueVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, max } from '../../../node'\n\nexport const blendLighten = Fn(([base, blend]: [Float, Float]): Float => {\n return max(blend, base)\n}).setLayout({\n name: 'blendLighten',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLightenVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendLighten(base.r, blend.r), blendLighten(base.g, blend.g), blendLighten(base.b, blend.b))\n}).setLayout({\n name: 'blendLightenVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLightenVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLightenVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLightenVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, max } from '../../../node'\n\nexport const blendLinearBurn = Fn(([base, blend]: [Float, Float]): Float => {\n return max(base.add(blend).sub(1), 0)\n}).setLayout({\n name: 'blendLinearBurn',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearBurnVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearBurn(base.r, blend.r),\n blendLinearBurn(base.g, blend.g),\n blendLinearBurn(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearBurnVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearBurnVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearBurnVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearBurnVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendLuminosity = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n return hsv2rgb(vec3(baseHSV.x, baseHSV.y, blendHSV.z))\n}).setLayout({\n name: 'blendLuminosity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLuminosityOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLuminosity(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLuminosityOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendMultiply = Fn(([base, blend]: [Float, Float]): Float => {\n return base.mul(blend)\n}).setLayout({\n name: 'blendMultiply',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendMultiplyVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.mul(blend)\n}).setLayout({\n name: 'blendMultiplyVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendMultiplyVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendMultiplyVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendMultiplyVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min } from '../../../node'\n\nexport const blendLinearDodge = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base.add(blend), 1)\n}).setLayout({\n name: 'blendLinearDodge',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearDodgeVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearDodge(base.r, blend.r),\n blendLinearDodge(base.g, blend.g),\n blendLinearDodge(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearDodgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearDodgeVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearDodgeVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearDodgeVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendLinearBurn } from './linearBurn'\nimport { blendLinearDodge } from './linearDodge'\n\nexport const blendLinearLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendLinearBurn(base, blend.mul(2))\n })\n return blendLinearDodge(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendLinearLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearLight(base.r, blend.r),\n blendLinearLight(base.g, blend.g),\n blendLinearLight(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, abs, float } from '../../../node'\n\nexport const blendNegation = Fn(([base, blend]: [Float, Float]): Float => {\n return float(1).sub(abs(float(1).sub(base).sub(blend)))\n}).setLayout({\n name: 'blendNegation',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendNegationVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(1).sub(abs(vec3(1).sub(base).sub(blend)))\n}).setLayout({\n name: 'blendNegationVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendNegationVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendNegationVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendNegationVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, max, float } from '../../../node'\n\nexport const blendPhoenix = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base, blend).sub(max(base, blend)).add(float(1))\n}).setLayout({\n name: 'blendPhoenix',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendPhoenixVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return min(base, blend).sub(max(base, blend)).add(vec3(1))\n}).setLayout({\n name: 'blendPhoenixVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendPhoenixVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendPhoenixVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendPhoenixVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendDarken } from './darken'\nimport { blendLighten } from './lighten'\n\nexport const blendPinLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendDarken(base, blend.mul(2))\n })\n return blendLighten(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendPinLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendPinLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendPinLight(base.x, blend.x), blendPinLight(base.y, blend.y), blendPinLight(base.z, blend.z))\n}).setLayout({\n name: 'blendPinLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendPinLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendPinLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendPinLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendSaturation = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n return hsv2rgb(vec3(baseHSV.x, blendHSV.y, baseHSV.z))\n}).setLayout({\n name: 'blendSaturation',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendSaturationOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSaturation(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSaturationOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, float } from '../../../node'\n\nexport const blendScreenFloat = Fn(([base, blend]: [Float, Float]): Float => {\n return float(1).sub(float(1).sub(base).mul(float(1).sub(blend)))\n}).setLayout({\n name: 'blendScreenFloat',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendScreen = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendScreenFloat(base.x, blend.x),\n blendScreenFloat(base.y, blend.y),\n blendScreenFloat(base.z, blend.z)\n )\n}).setLayout({\n name: 'blendScreen',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendScreenOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendScreen(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendScreenOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, If, sqrt, vec3, vec4 } from '../../../node'\n\nconst blendSoftLightFloat = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return base\n .mul(2)\n .mul(blend)\n .add(base.mul(base).mul(blend.mul(2).oneMinus()))\n })\n return sqrt(base).mul(blend.mul(2).sub(1)).add(base.mul(2).mul(blend.oneMinus()))\n}).setLayout({\n name: 'blendSoftLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendSoftLight = blendSoftLightFloat\n\nexport const blendSoftLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendSoftLightFloat(base.r, blend.r),\n blendSoftLightFloat(base.g, blend.g),\n blendSoftLightFloat(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendSoftLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendSoftLightVec4 = Fn(([base, blend]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n blendSoftLightFloat(base.r, blend.r),\n blendSoftLightFloat(base.g, blend.g),\n blendSoftLightFloat(base.b, blend.b),\n blendSoftLightFloat(base.a, blend.a)\n )\n}).setLayout({\n name: 'blendSoftLightVec4',\n type: 'vec4',\n inputs: [\n { name: 'base', type: 'vec4' },\n { name: 'blend', type: 'vec4' },\n ],\n})\n\nexport const blendSoftLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSoftLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSoftLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, max, vec3 } from '../../../node'\n\nconst blendSubtractFloat = Fn(([base, blend]: [Float, Float]): Float => {\n return max(base.add(blend).sub(1), 0)\n}).setLayout({\n name: 'blendSubtract',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' }\n ]\n})\n\nexport const blendSubtract = blendSubtractFloat\n\nexport const blendSubtractVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return max(base.add(blend).sub(vec3(1)), vec3(0))\n}).setLayout({\n name: 'blendSubtractVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' }\n ]\n})\n\nexport const blendSubtractVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSubtractVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSubtractVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeXorFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst.oneMinus()).add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeXor',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeXor = compositeXorFloat\n\nexport const compositeXorVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha.oneMinus()).add(dstColor.mul(srcAlpha.oneMinus()))\n}).setLayout({\n name: 'compositeXorVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeXorVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeXorVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeXorFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeXorVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationAtopFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src).add(src.mul(dst.oneMinus()))\n}).setLayout({\n name: 'compositeDestinationAtop',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationAtop = compositeDestinationAtopFloat\n\nexport const compositeDestinationAtopVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha).add(srcColor.mul(dstAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeDestinationAtopVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationAtopVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationAtopVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationAtopFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationAtopVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationInFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src)\n}).setLayout({\n name: 'compositeDestinationIn',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationIn = compositeDestinationInFloat\n\nexport const compositeDestinationInVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha)\n }\n).setLayout({\n name: 'compositeDestinationInVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationInVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationInVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationInFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationInVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationOutFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src.oneMinus())\n}).setLayout({\n name: 'compositeDestinationOut',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOut = compositeDestinationOutFloat\n\nexport const compositeDestinationOutVec3 = Fn(\n ([_srcColor, dstColor, srcAlpha, _dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha.oneMinus())\n }\n).setLayout({\n name: 'compositeDestinationOutVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOutVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationOutVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationOutFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationOutVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationOverFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.add(src.mul(dst.oneMinus()))\n}).setLayout({\n name: 'compositeDestinationOver',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOver = compositeDestinationOverFloat\n\nexport const compositeDestinationOverVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.add(srcColor.mul(dstAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeDestinationOverVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationOverFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationOverVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceAtopFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst).add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeSourceAtop',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeSourceAtop = compositeSourceAtopFloat\n\nexport const compositeSourceAtopVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha).add(dstColor.mul(srcAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeSourceAtopVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeSourceAtopVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceAtopVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceAtopFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceAtopVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceInFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst)\n}).setLayout({\n name: 'compositeSourceIn',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceIn = compositeSourceInFloat\n\nexport const compositeSourceInVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha)\n}).setLayout({\n name: 'compositeSourceInVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceInVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceInVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceInFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceInVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceOutFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst.oneMinus())\n}).setLayout({\n name: 'compositeSourceOut',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceOut = compositeSourceOutFloat\n\nexport const compositeSourceOutVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha.oneMinus())\n}).setLayout({\n name: 'compositeSourceOutVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceOutVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceOutVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceOutFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceOutVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceOverFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeSourceOver',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceOver = compositeSourceOverFloat\n\nexport const compositeSourceOverVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(srcAlpha).add(dstColor.mul(dstAlpha).mul(srcAlpha.oneMinus()))\n}).setLayout({\n name: 'compositeSourceOverVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceOverFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceOverVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Vec4, Vec3, float, vec3 } from '../../../node'\n\nexport const cmyk2rgb = Fn(([cmyk]: [Vec4]): Vec3 => {\n const invK = float(1).sub(cmyk.w).toVar()\n return float(1)\n .sub(vec3(1).min(cmyk.xyz.mul(invK).add(cmyk.w)))\n .saturate()\n}).setLayout({\n name: 'cmyk2rgb',\n type: 'vec3',\n inputs: [{ name: 'cmyk', type: 'vec4' }],\n})\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst GAMMA = float(2.2)\n\nexport const gamma2linear = Fn(([v]: [X]): X => {\n return v.pow(GAMMA)\n}).setLayout({\n name: 'gamma2linear',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const gamma2linearVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(gamma2linear(v.xyz), v.w)\n}).setLayout({\n name: 'gamma2linearVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsl2rgb = Fn(([hsl]: [Vec3]): Vec3 => {\n const rgb = hue2rgb(hsl.x).toVar()\n const C = float(1).sub(hsl.z.mul(2).sub(1).abs()).mul(hsl.y).toVar()\n return rgb.sub(0.5).mul(C).add(hsl.z)\n}).setLayout({\n name: 'hsl2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsl', type: 'vec3' }],\n})\n\nexport const hsl2rgbVec4 = Fn(([hsl]: [Vec4]): Vec4 => {\n return vec4(hsl2rgb(hsl.xyz), hsl.w)\n}).setLayout({\n name: 'hsl2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsl', type: 'vec4' }],\n})\n","import { Fn, atan2, sqrt, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lab2lch3 = Fn(([lab]: [Vec3]): Vec3 => {\n const chroma = sqrt(lab.y.mul(lab.y).add(lab.z.mul(lab.z)))\n const hue = atan2(lab.z, lab.y).mul(57.2957795131)\n return vec3(lab.x, chroma, hue)\n}).setLayout({\n name: 'lab2lch3',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2lch4 = Fn(([lab]: [Vec4]): Vec4 => {\n const lch = lab2lch3(lab.xyz)\n return vec4(lch, lab.w)\n}).setLayout({\n name: 'lab2lch4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n\nexport const lab2lch = lab2lch3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lab2xyz } from './lab2xyz'\nimport { xyz2rgb } from './xyz2rgb'\n\nexport const lab2rgb = Fn(([lab]: [Vec3]): Vec3 => {\n return xyz2rgb(lab2xyz(lab))\n}).setLayout({\n name: 'lab2rgb',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2rgbVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2rgb(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, select, vec3, vec4 } from '../../../node'\n\n// CIE D65 white point (default)\nconst CIE_WHITE = vec3(0.95045592705, 1, 1.08905775076)\n\nexport const lab2xyz = Fn(([lab]: [Vec3]): Vec3 => {\n const fy = lab.x.add(16).div(116).toVar()\n const fx = lab.y.div(500).add(fy).toVar()\n const fz = fy.sub(lab.z.div(200)).toVar()\n\n const threshold = float(0.206897)\n const delta = float(16).div(116)\n const factor = float(7.787)\n\n const convertX = select(fx.pow(3), fx.sub(delta).div(factor), fx.greaterThan(threshold))\n const convertY = select(fy.pow(3), fy.sub(delta).div(factor), fy.greaterThan(threshold))\n const convertZ = select(fz.pow(3), fz.sub(delta).div(factor), fz.greaterThan(threshold))\n\n return CIE_WHITE.mul(100).mul(vec3(convertX, convertY, convertZ))\n}).setLayout({\n name: 'lab2xyz',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2xyzVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2xyz(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst XYZ2RGB = mat3(\n 3.2404542,\n -1.5371385,\n -0.4985314,\n -0.969266,\n 1.8760108,\n 0.041556,\n 0.0556434,\n -0.2040259,\n 1.0572252\n)\n\nexport const xyz2rgb = Fn(([xyz]: [Vec3]): Vec3 => {\n return XYZ2RGB.mul(xyz.mul(0.01))\n}).setLayout({\n name: 'xyz2rgb',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2rgbVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2rgb(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lch2lab3 = Fn(([lch]: [Vec3]): Vec3 => {\n const radians = lch.z.mul(0.01745329251)\n return vec3(lch.x, lch.y.mul(radians.cos()), lch.y.mul(radians.sin()))\n}).setLayout({\n name: 'lch2lab3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2lab4 = Fn(([lch]: [Vec4]): Vec4 => {\n const lab = lch2lab3(lch.xyz)\n return vec4(lab, lch.w)\n}).setLayout({\n name: 'lch2lab4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2lab = lch2lab3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lch2lab } from './lch2lab'\nimport { lab2rgb } from './lab2rgb'\n\nexport const lch2rgb3 = Fn(([lch]: [Vec3]): Vec3 => {\n return lab2rgb(lch2lab(lch))\n}).setLayout({\n name: 'lch2rgb3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2rgb4 = Fn(([lch]: [Vec4]): Vec4 => {\n const rgb = lch2rgb3(lch.xyz)\n return vec4(rgb, lch.w)\n}).setLayout({\n name: 'lch2rgb4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2rgb = lch2rgb3\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst INV_GAMMA = float(1).div(2.2)\n\nexport const linear2gamma = Fn(([v]: [X]): X => {\n return v.pow(INV_GAMMA)\n}).setLayout({\n name: 'linear2gamma',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const linear2gammaVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(linear2gamma(v.xyz), v.w)\n}).setLayout({\n name: 'linear2gammaVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst OKLAB2RGB_A = mat3(1, 1, 1, 0.3963377774, -0.1055613458, -0.0894841775, 0.2158037573, -0.0638541728, -1.291485548)\n\nconst OKLAB2RGB_B = mat3(\n 4.0767416621,\n -1.2684380046,\n -0.0041960863,\n -3.3077115913,\n 2.6097574011,\n -0.7034186147,\n 0.2309699292,\n -0.3413193965,\n 1.707614701\n)\n\nexport const oklab2rgb3 = Fn(([oklab]: [Vec3]): Vec3 => {\n const lms = OKLAB2RGB_A.mul(oklab)\n return OKLAB2RGB_B.mul(lms.mul(lms).mul(lms))\n}).setLayout({\n name: 'oklab2rgb3',\n type: 'vec3',\n inputs: [{ name: 'oklab', type: 'vec3' }],\n})\n\nexport const oklab2rgb4 = Fn(([oklab]: [Vec4]): Vec4 => {\n const rgb = oklab2rgb3(oklab.xyz)\n return vec4(rgb, oklab.w)\n}).setLayout({\n name: 'oklab2rgb4',\n type: 'vec4',\n inputs: [{ name: 'oklab', type: 'vec4' }],\n})\n\nexport const oklab2rgb = oklab2rgb3\n","import { Fn, Vec3, Vec4, float, vec4, step } from '../../../node'\nimport { mmin3 } from '../../math/mmin'\n\nexport const rgb2cmyk = Fn(([rgb]: [Vec3]): Vec4 => {\n const k = mmin3(float(1).sub(rgb)).toVar()\n const invK = float(1).sub(k).toVar()\n const cmy = float(1).sub(rgb).sub(k).div(invK).mul(step(0, invK)).toVar()\n return vec4(cmy, k).saturate()\n}).setLayout({\n name: 'rgb2cmyk',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, min } from '../../node'\n\nexport const mmin2 = Fn(([v]: [Vec2]): Float => {\n return min(v.x, v.y)\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmin3 = Fn(([v]: [Vec3]): Float => {\n return min(v.x, min(v.y, v.z))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmin4 = Fn(([v]: [Vec4]): Float => {\n return min(min(v.x, v.y), min(v.z, v.w))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\n// Generic mmin function - delegates to specific implementations\nexport const mmin = mmin4\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10').constant()\n\nexport const rgb2hcv = Fn(([rgb]: [Vec3]): Vec3 => {\n const P_true = vec4(rgb.b, rgb.g, -1, float(2).div(3)).toVar()\n const P_false = vec4(rgb.g, rgb.b, 0, float(-1).div(3)).toVar()\n const P_final = select(P_true, P_false, rgb.g.lessThan(rgb.b)).toVar()\n\n const Q_true = vec4(P_final.x, P_final.y, P_final.w, rgb.r).toVar()\n const Q_false = vec4(rgb.r, P_final.y, P_final.z, P_final.x).toVar()\n const Q_final = select(Q_true, Q_false, rgb.r.lessThan(P_final.x)).toVar()\n\n const C = Q_final.x.sub(Q_final.w.min(Q_final.y)).toVar()\n const H = Q_final.w.sub(Q_final.y).div(float(6).mul(C).add(HCV_EPSILON)).add(Q_final.z).abs().toVar()\n return vec3(H, C, Q_final.x)\n}).setLayout({\n name: 'rgb2hcv',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hcvVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hcv(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hcvVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4 } from '../../../node'\nimport { rgb2hcv } from './rgb2hcv'\n\nconst HSL_EPSILON = float('1e-10')\n\nexport const rgb2hsl = Fn(([rgb]: [Vec3]): Vec3 => {\n const HCV = rgb2hcv(rgb).toVar()\n const L = HCV.z.sub(HCV.y.div(2)).toVar()\n const S = HCV.y.div(float(1).sub(L.mul(2).sub(1).abs()).add(HSL_EPSILON)).toVar()\n return vec3(HCV.x, S, L)\n}).setLayout({\n name: 'rgb2hsl',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hslVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hsl(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hslVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, Float, float, vec4, select } from '../../../node'\n\nconst HUE_EPSILON = float('1e-10')\n\nexport const rgb2hue = Fn(([c]: [Vec3]): Float => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n return Q.z.add(Q.w.sub(Q.y).div(float(6).mul(d).add(HUE_EPSILON))).abs()\n}).setLayout({\n name: 'rgb2hue',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hueVec4 = Fn(([c]: [Vec4]): Float => {\n return rgb2hue(c.xyz)\n}).setLayout({\n name: 'rgb2hueVec4',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2xyz } from './rgb2xyz'\nimport { xyz2lab } from './xyz2lab'\n\nexport const rgb2lab = Fn(([rgb]: [Vec3]): Vec3 => {\n return xyz2lab(rgb2xyz(rgb))\n}).setLayout({\n name: 'rgb2lab',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2labVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2lab(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2labVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst RGB2XYZ = mat3(0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.072175, 0.0193339, 0.119192, 0.9503041)\n\nexport const rgb2xyz = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2XYZ.mul(rgb)\n}).setLayout({\n name: 'rgb2xyz',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2xyzVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2xyz(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, step, mix } from '../../../node'\n\nexport const xyz2lab = Fn(([xyz]: [Vec3]): Vec3 => {\n const n = xyz.div(vec3(95.047, 100, 108.883)).toVar()\n const c0 = n.pow(vec3(1 / 3)).toVar()\n const c1 = n\n .mul(7.787)\n .add(16 / 116)\n .toVar()\n const v = mix(c0, c1, step(n, vec3(0.008856))).toVar()\n const L = v.y.mul(116).sub(16).toVar()\n const A = v.x.sub(v.y).mul(500).toVar()\n const B = v.y.sub(v.z).mul(200).toVar()\n return vec3(L, A, B)\n}).setLayout({\n name: 'xyz2lab',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2labVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2lab(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2labVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2lab } from './rgb2lab'\nimport { lab2lch } from './lab2lch'\n\nexport const rgb2lch3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return lab2lch(rgb2lab(rgb))\n}).setLayout({\n name: 'rgb2lch3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2lch4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const lch = rgb2lch3(rgb.xyz)\n return vec4(lch, rgb.w)\n}).setLayout({\n name: 'rgb2lch4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2lch = rgb2lch3\n","import { Fn, mat3, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2OKLAB_A = mat3(\n 0.2104542553,\n 1.9779984951,\n 0.0259040371,\n 0.793617785,\n -2.428592205,\n 0.7827717662,\n -0.0040720468,\n 0.4505937099,\n -0.808675766\n)\n\nconst RGB2OKLAB_B = mat3(\n 0.4122214708,\n 0.2119034982,\n 0.0883024619,\n 0.5363325363,\n 0.6806995451,\n 0.2817188376,\n 0.0514459929,\n 0.1073969566,\n 0.6299787005\n)\n\nexport const rgb2oklab3 = Fn(([rgb]: [Vec3]): Vec3 => {\n const lms = RGB2OKLAB_B.mul(rgb)\n return RGB2OKLAB_A.mul(lms.sign().mul(lms.abs().pow(vec3(0.3333333333333))))\n}).setLayout({\n name: 'rgb2oklab3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2oklab4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const oklab = rgb2oklab3(rgb.xyz)\n return vec4(oklab, rgb.w)\n}).setLayout({\n name: 'rgb2oklab4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2oklab = rgb2oklab3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const rgb2srgbFloat = Fn(([c]: [Float]): Float => {\n return select(c.mul(12.92), float(1.055).mul(c.pow(0.4166666666666667)).sub(0.055), c.lessThan(0.0031308))\n}).setLayout({\n name: 'rgb2srgb',\n type: 'float',\n inputs: [{ name: 'c', type: 'float' }],\n})\n\nexport const rgb2srgbVec3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return vec3(\n rgb2srgbFloat(rgb.r.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.g.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.b.sub(SRGB_EPSILON))\n ).saturate()\n}).setLayout({\n name: 'rgb2srgbVec3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2srgbVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2srgbVec3(rgb.rgb), rgb.a)\n}).setLayout({\n name: 'rgb2srgbVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const rgb2srgb = rgb2srgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YIQ = mat3(0.3, 0.59, 0.11, 0.599, -0.2773, -0.3217, 0.213, -0.5251, 0.3121)\n\nexport const rgb2yiq3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YIQ.mul(rgb)\n}).setLayout({\n name: 'rgb2yiq3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yiq4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yiq = rgb2yiq3(rgb.xyz)\n return vec4(yiq, rgb.w)\n}).setLayout({\n name: 'rgb2yiq4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yiq = rgb2yiq3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YUV_HDTV = mat3(0.2126, -0.09991, 0.615, 0.7152, -0.33609, -0.55861, 0.0722, 0.426, -0.05639)\n\nconst RGB2YUV_SDTV = mat3(0.299, -0.14713, 0.615, 0.587, -0.28886, -0.51499, 0.114, 0.436, -0.10001)\n\nexport const rgb2yuv3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_HDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuv3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yuv = rgb2yuv3(rgb.xyz)\n return vec4(yuv, rgb.w)\n}).setLayout({\n name: 'rgb2yuv4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yuvSDTV = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_SDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuvSDTV',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv = rgb2yuv3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const srgb2rgbFloat = Fn(([v]: [Float]): Float => {\n return select(v.mul(0.0773993808), v.add(0.055).mul(0.947867298578199).pow(2.4), v.lessThan(0.04045))\n}).setLayout({\n name: 'srgb2rgb',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const srgb2rgbVec3 = Fn(([srgb]: [Vec3]): Vec3 => {\n return vec3(\n srgb2rgbFloat(srgb.r.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.g.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.b.add(SRGB_EPSILON))\n )\n}).setLayout({\n name: 'srgb2rgbVec3',\n type: 'vec3',\n inputs: [{ name: 'srgb', type: 'vec3' }],\n})\n\nexport const srgb2rgbVec4 = Fn(([srgb]: [Vec4]): Vec4 => {\n return vec4(srgb2rgbVec3(srgb.rgb), srgb.a)\n}).setLayout({\n name: 'srgb2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'srgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const srgb2rgb = srgb2rgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YIQ2RGB = mat3(1, 0.9469, 0.6235, 1, -0.2747, -0.6357, 1, -1.1085, 1.702)\n\nexport const yiq2rgb3 = Fn(([yiq]: [Vec3]): Vec3 => {\n return YIQ2RGB.mul(yiq)\n}).setLayout({\n name: 'yiq2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yiq', type: 'vec3' }],\n})\n\nexport const yiq2rgb4 = Fn(([yiq]: [Vec4]): Vec4 => {\n const rgb = yiq2rgb3(yiq.xyz)\n return vec4(rgb, yiq.w)\n}).setLayout({\n name: 'yiq2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yiq', type: 'vec4' }],\n})\n\nexport const yiq2rgb = yiq2rgb3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YUV2RGB_HDTV = mat3(1, 1, 1, 0, -0.21482, 2.12798, 1.28033, -0.38059, 0)\n\nconst YUV2RGB_SDTV = mat3(1, 1, 1, 0, -0.39465, 2.03211, 1.13983, -0.5806, 0)\n\nexport const yuv2rgb3 = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_HDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb4 = Fn(([yuv]: [Vec4]): Vec4 => {\n const rgb = yuv2rgb3(yuv.xyz)\n return vec4(rgb, yuv.w)\n}).setLayout({\n name: 'yuv2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yuv', type: 'vec4' }],\n})\n\nexport const yuv2rgbSDTV = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_SDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgbSDTV',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb = yuv2rgb3\n","import { Fn, Float, Vec2, float, vec2, length, clamp, min, step, If } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\n\nconst ARROWS_TILE_SIZE = float(32.0)\n\nexport const arrowsTileCenterCoord = Fn(([pos]: [Vec2]): Vec2 => {\n const floored = pos.div(ARROWS_TILE_SIZE).floor()\n return floored.add(0.5).mul(ARROWS_TILE_SIZE)\n}).setLayout({\n name: 'arrowsTileCenterCoord',\n type: 'vec2',\n inputs: [{ name: 'pos', type: 'vec2' }],\n})\n\nexport const arrows = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]): Float => {\n const pScaled = p.mul(resolution).toVar('pScaled')\n pScaled.subAssign(arrowsTileCenterCoord(pScaled))\n const mag_v = length(v).toVar('mag_v')\n\n If(mag_v.greaterThan(0.0), () => {\n const dir_v = v.div(mag_v).toVar('dir_v')\n mag_v.assign(clamp(mag_v, float(5.0), ARROWS_TILE_SIZE.div(2.0)))\n const vScaled = dir_v.mul(mag_v).toVar('vScaled')\n\n const shaft = lineSDF(pScaled, vScaled, vScaled.negate()).toVar('shaft')\n const head1 = lineSDF(\n pScaled,\n vScaled,\n vScaled.mul(0.4).add(vec2(vScaled.y.negate(), vScaled.x).mul(0.2))\n ).toVar('head1')\n const head2 = lineSDF(\n pScaled,\n vScaled,\n vScaled.mul(0.4).add(vec2(vScaled.y, vScaled.x.negate()).mul(0.2))\n ).toVar('head2')\n const head = min(head1, head2).toVar('head')\n\n return step(min(shaft, head), float(1.0))\n })\n\n return float(0.0)\n}).setLayout({\n name: 'arrows',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n { name: 'resolution', type: 'vec2' },\n ],\n})\n\nexport const arrowsSimple = Fn(([p, v]: [Vec2, Vec2]): Float => {\n return arrows(p, v, vec2(1.0))\n}).setLayout({\n name: 'arrowsSimple',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, clamp, dot, length, cross } from '../../node'\n\n// 2D line segment distance function\nexport const lineSDF2D = Fn(([st, a, b]: [Vec2, Vec2, Vec2]): Float => {\n const b_to_a = b.sub(a).toVar('b_to_a')\n const to_a = st.sub(a).toVar('to_a')\n const h = clamp(dot(to_a, b_to_a).div(dot(b_to_a, b_to_a)), 0, 1).toVar('h')\n return length(to_a.sub(h.mul(b_to_a)))\n}).setLayout({\n name: 'lineSDF2D',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\n// 3D line distance function\nexport const lineSDF3D = Fn(([p, a, b]: [Vec3, Vec3, Vec3]): Float => {\n return length(cross(p.sub(a), p.sub(b))).div(length(b.sub(a)))\n}).setLayout({\n name: 'lineSDF3D',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\n// Unified lineSDF function (defaults to 2D)\nexport const lineSDF = lineSDF2D\n","import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4 } from '../../node'\nimport { line } from './line'\n\nexport const axis = Fn(([st, M, pos, thickness]: [Vec2, Mat4, Vec3, Float]): Vec4 => {\n const rta = vec4(0).toVar()\n\n const center = M.mul(vec4(pos, 1)).toVar()\n center.xy.divAssign(center.w)\n center.xy.assign(center.xy.mul(0.5).add(0.5))\n\n const axisX = vec4(1, 0, 0, 1)\n const aX = M.mul(vec4(pos.add(vec3(1, 0, 0)), 1)).toVar()\n aX.xy.divAssign(aX.w)\n aX.xy.assign(aX.xy.mul(0.5).add(0.5))\n rta.addAssign(axisX.mul(line(st, center.xy, aX.xy, thickness)))\n\n const axisY = vec4(0, 1, 0, 1)\n const aY = M.mul(vec4(pos.add(vec3(0, 1, 0)), 1)).toVar()\n aY.xy.divAssign(aY.w)\n aY.xy.assign(aY.xy.mul(0.5).add(0.5))\n rta.addAssign(axisY.mul(line(st, center.xy, aY.xy, thickness)))\n\n const axisZ = vec4(0, 0, 1, 1)\n const aZ = M.mul(vec4(pos.add(vec3(0, 0, 1)), 1)).toVar()\n aZ.xy.divAssign(aZ.w)\n aZ.xy.assign(aZ.xy.mul(0.5).add(0.5))\n rta.addAssign(axisZ.mul(line(st, center.xy, aZ.xy, thickness)))\n\n return rta\n}).setLayout({\n name: 'axis',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat4' },\n { name: 'pos', type: 'vec3' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\nimport { fill } from './fill'\n\nexport const line = Fn(([st, a, b, thickness]: [Vec2, Vec2, Vec2, Float]): Float => {\n return fill(lineSDF(st, a, b), thickness)\n}).setLayout({\n name: 'line',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const fillWithEdge = Fn(([x, size, edge]: [Float, Float, Float]): Float => {\n return smoothstep(size.sub(edge), size.add(edge), x).oneMinus()\n}).setLayout({\n name: 'fillWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const fill = Fn(([x, size]: [Float, Float]): Float => {\n return aastep(size, x).oneMinus()\n}).setLayout({\n name: 'fill',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n ],\n})\n","import { Fn, Float, length, vec2, dFdx, dFdy, smoothstep } from '../../node'\n\nexport const aastep = Fn(([threshold, value]: [Float, Float]): Float => {\n const derivative = vec2(dFdx(value), dFdy(value))\n const afwidth = length(derivative).mul(0.7)\n return smoothstep(threshold.sub(afwidth), threshold.add(afwidth), value)\n}).setLayout({\n name: 'aastep',\n type: 'float',\n inputs: [\n { name: 'threshold', type: 'float' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X, float } from '../../node'\nimport { stroke } from './stroke'\n\n// Bridge effect for float\nexport const bridgeFloat = Fn(([c, d, s, w]: [Float, Float, Float, Float]): Float => {\n const maskedC = c.mul(float(1).sub(stroke(d, s, w.mul(2))))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeFloat',\n type: 'float',\n inputs: [\n { name: 'c', type: 'float' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec2\nexport const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec2',\n type: 'vec2',\n inputs: [\n { name: 'c', type: 'vec2' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec3\nexport const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'c', type: 'vec3' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec4\nexport const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec4',\n type: 'vec4',\n inputs: [\n { name: 'c', type: 'vec4' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Generic bridge function using auto type\nexport const bridge = Fn(([c, d, s, w]: [X, Float, Float, Float]): X => {\n const strokeMask = stroke(d, s, (w as any).mul(2))\n const maskedC = (c as any).mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w as any))\n}).setLayout({\n name: 'bridge',\n type: 'auto',\n inputs: [\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep, clamp } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const strokeWithEdge = Fn(([x, size, w, edge]: [Float, Float, Float, Float]): Float => {\n const d = smoothstep(size.sub(edge), size.add(edge), x.add(w.div(2))).sub(\n smoothstep(size.sub(edge), size.add(edge), x.sub(w.div(2)))\n )\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'strokeWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const stroke = Fn(([x, size, w]: [Float, Float, Float]): Float => {\n const d = aastep(size, x.add(w.div(2))).sub(aastep(size, x.sub(w.div(2))))\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'stroke',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, Int, int, vec2, ivec2, ivec4, floor, pow, If } from '../../node'\nimport { modi } from '../math/modi'\n\n// Character constants\nexport const CHAR_SIZE = vec2(0.02)\nexport const CHAR_TOTAL = 96\n\n// Character codes\nexport const CHAR = {\n SPACE: 0,\n EXCLAMATION: 1,\n QUOTE: 2,\n NUMBER: 3,\n DOLLAR: 4,\n PERCENT: 5,\n AMPERSAND: 6,\n APOSTROPHE: 7,\n PAREN_LEFT: 8,\n PAREN_RIGHT: 9,\n ASTERISK: 10,\n PLUS: 11,\n COMMA: 12,\n MINUS: 13,\n PERIOD: 14,\n SLASH: 15,\n 0: 16,\n 1: 17,\n 2: 18,\n 3: 19,\n 4: 20,\n 5: 21,\n 6: 22,\n 7: 23,\n 8: 24,\n 9: 25,\n COLON: 26,\n SEMICOLON: 27,\n LESS: 28,\n EQUAL: 29,\n GREATER: 30,\n QUESTION: 31,\n AT: 32,\n A: 33,\n B: 34,\n C: 35,\n D: 36,\n E: 37,\n F: 38,\n G: 39,\n H: 40,\n I: 41,\n J: 42,\n K: 43,\n L: 44,\n M: 45,\n N: 46,\n O: 47,\n P: 48,\n Q: 49,\n R: 50,\n S: 51,\n T: 52,\n U: 53,\n V: 54,\n W: 55,\n X: 56,\n Y: 57,\n Z: 58,\n BRACKET_LEFT: 59,\n BACKSLASH: 60,\n BRACKET_RIGHT: 61,\n CARET: 62,\n UNDERSCORE: 63,\n GRAVE: 64,\n a: 65,\n b: 66,\n c: 67,\n d: 68,\n e: 69,\n f: 70,\n g: 71,\n h: 72,\n i: 73,\n j: 74,\n k: 75,\n l: 76,\n m: 77,\n n: 78,\n o: 79,\n p: 80,\n q: 81,\n r: 82,\n s: 83,\n t: 84,\n u: 85,\n v: 86,\n w: 87,\n x: 88,\n y: 89,\n z: 90,\n BRACE_LEFT: 91,\n BAR: 92,\n BRACE_RIGHT: 93,\n TILDE: 94,\n}\n\n// Character bitmap data (compressed)\nconst CHAR_DATA: [number, number, number, number][] = [\n [0x0, 0x0, 0x0, 0x0],\n [0x1010, 0x10101010, 0x1010, 0x0],\n [0x242424, 0x24000000, 0x0, 0x0],\n [0x24, 0x247e2424, 0x247e2424, 0x0],\n [0x808, 0x1e20201c, 0x2023c08, 0x8000000],\n [0x30, 0x494a3408, 0x16294906, 0x0],\n [0x3048, 0x48483031, 0x49464639, 0x0],\n [0x101010, 0x10000000, 0x0, 0x0],\n [0x408, 0x8101010, 0x10101008, 0x8040000],\n [0x2010, 0x10080808, 0x8080810, 0x10200000],\n [0x0, 0x24187e, 0x18240000, 0x0],\n [0x0, 0x808087f, 0x8080800, 0x0],\n [0x0, 0x0, 0x1818, 0x8081000],\n [0x0, 0x7e, 0x0, 0x0],\n [0x0, 0x0, 0x1818, 0x0],\n [0x202, 0x4040808, 0x10102020, 0x40400000],\n [0x3c, 0x42464a52, 0x6242423c, 0x0],\n [0x8, 0x18280808, 0x808083e, 0x0],\n [0x3c, 0x42020204, 0x810207e, 0x0],\n [0x7e, 0x4081c02, 0x202423c, 0x0],\n [0x4, 0xc142444, 0x7e040404, 0x0],\n [0x7e, 0x40407c02, 0x202423c, 0x0],\n [0x1c, 0x2040407c, 0x4242423c, 0x0],\n [0x7e, 0x2040408, 0x8101010, 0x0],\n [0x3c, 0x4242423c, 0x4242423c, 0x0],\n [0x3c, 0x4242423e, 0x2020438, 0x0],\n [0x0, 0x181800, 0x1818, 0x0],\n [0x0, 0x181800, 0x1818, 0x8081000],\n [0x4, 0x8102040, 0x20100804, 0x0],\n [0x0, 0x7e00, 0x7e0000, 0x0],\n [0x20, 0x10080402, 0x4081020, 0x0],\n [0x3c42, 0x2040810, 0x1010, 0x0],\n [0x1c22, 0x414f5151, 0x51534d40, 0x201f0000],\n [0x18, 0x24424242, 0x7e424242, 0x0],\n [0x7c, 0x4242427c, 0x4242427c, 0x0],\n [0x1e, 0x20404040, 0x4040201e, 0x0],\n [0x78, 0x44424242, 0x42424478, 0x0],\n [0x7e, 0x4040407c, 0x4040407e, 0x0],\n [0x7e, 0x4040407c, 0x40404040, 0x0],\n [0x1e, 0x20404046, 0x4242221e, 0x0],\n [0x42, 0x4242427e, 0x42424242, 0x0],\n [0x3e, 0x8080808, 0x808083e, 0x0],\n [0x2, 0x2020202, 0x242423c, 0x0],\n [0x42, 0x44485060, 0x50484442, 0x0],\n [0x40, 0x40404040, 0x4040407e, 0x0],\n [0x41, 0x63554949, 0x41414141, 0x0],\n [0x42, 0x62524a46, 0x42424242, 0x0],\n [0x3c, 0x42424242, 0x4242423c, 0x0],\n [0x7c, 0x4242427c, 0x40404040, 0x0],\n [0x3c, 0x42424242, 0x4242423c, 0x4020000],\n [0x7c, 0x4242427c, 0x48444242, 0x0],\n [0x3e, 0x40402018, 0x402027c, 0x0],\n [0x7f, 0x8080808, 0x8080808, 0x0],\n [0x42, 0x42424242, 0x4242423c, 0x0],\n [0x42, 0x42424242, 0x24241818, 0x0],\n [0x41, 0x41414149, 0x49495563, 0x0],\n [0x41, 0x41221408, 0x14224141, 0x0],\n [0x41, 0x41221408, 0x8080808, 0x0],\n [0x7e, 0x4080810, 0x1020207e, 0x0],\n [0x1e10, 0x10101010, 0x10101010, 0x101e0000],\n [0x4040, 0x20201010, 0x8080404, 0x2020000],\n [0x7808, 0x8080808, 0x8080808, 0x8780000],\n [0x1028, 0x44000000, 0x0, 0x0],\n [0x0, 0x0, 0x0, 0xff0000],\n [0x201008, 0x4000000, 0x0, 0x0],\n [0x0, 0x3c0202, 0x3e42423e, 0x0],\n [0x4040, 0x407c4242, 0x4242427c, 0x0],\n [0x0, 0x3c4240, 0x4040423c, 0x0],\n [0x202, 0x23e4242, 0x4242423e, 0x0],\n [0x0, 0x3c4242, 0x7e40403e, 0x0],\n [0xe10, 0x107e1010, 0x10101010, 0x0],\n [0x0, 0x3e4242, 0x4242423e, 0x2023c00],\n [0x4040, 0x407c4242, 0x42424242, 0x0],\n [0x808, 0x380808, 0x808083e, 0x0],\n [0x404, 0x1c0404, 0x4040404, 0x4043800],\n [0x4040, 0x40444850, 0x70484442, 0x0],\n [0x3808, 0x8080808, 0x808083e, 0x0],\n [0x0, 0x774949, 0x49494949, 0x0],\n [0x0, 0x7c4242, 0x42424242, 0x0],\n [0x0, 0x3c4242, 0x4242423c, 0x0],\n [0x0, 0x7c4242, 0x4242427c, 0x40404000],\n [0x0, 0x3e4242, 0x4242423e, 0x2020200],\n [0x0, 0x2e3020, 0x20202020, 0x0],\n [0x0, 0x3e4020, 0x1804027c, 0x0],\n [0x10, 0x107e1010, 0x1010100e, 0x0],\n [0x0, 0x424242, 0x4242423e, 0x0],\n [0x0, 0x424242, 0x24241818, 0x0],\n [0x0, 0x414141, 0x49495563, 0x0],\n [0x0, 0x412214, 0x8142241, 0x0],\n [0x0, 0x424242, 0x4242423e, 0x2023c00],\n [0x0, 0x7e0408, 0x1020407e, 0x0],\n [0xe1010, 0x101010e0, 0x10101010, 0x100e0000],\n [0x80808, 0x8080808, 0x8080808, 0x8080000],\n [0x700808, 0x8080807, 0x8080808, 0x8700000],\n [0x3149, 0x46000000, 0x0, 0x0],\n]\n\nconst charLUT = Fn(([index]: [Int]) => {\n const result = ivec4(0).toVar('result')\n let ifChain = If(index.equal(int(0)), () => void result.assign(ivec4(...CHAR_DATA[0])))\n for (let i = 1; i < CHAR_DATA.length; i++)\n ifChain = ifChain.ElseIf(index.equal(int(i)), () => void result.assign(ivec4(...CHAR_DATA[i])))\n return result\n}).setLayout({\n name: 'charLUT',\n type: 'ivec4',\n inputs: [{ name: 'index', type: 'int' }],\n})\n\nexport const char = Fn(([uv, charCode]: [Vec2, Int]): Float => {\n const charCoord = ivec2(7, 15)\n .sub(floor(uv.mul(vec2(8, 16))).toIVec2())\n .toVar('charCoord')\n const col = charLUT(charCode).toVar('col')\n const fourLines = int(0).toVar('fourLines')\n const index = charCoord.y.toFloat().div(4).floor().toInt().toVar('index')\n\n If(index.equal(int(0)), () => void fourLines.assign(col.x))\n .ElseIf(index.equal(int(1)), () => void fourLines.assign(col.y))\n .ElseIf(index.equal(int(2)), () => void fourLines.assign(col.z))\n .Else(() => void fourLines.assign(col.w))\n\n const yMod4 = modi(charCoord.y as unknown as Int, int(4)).toVar('yMod4')\n const exponent = int(3).sub(yMod4).toVar('exponent')\n const divisor = pow(int(256).toFloat(), exponent.toFloat()).toInt().toVar('divisor')\n const currentLine = modi(fourLines.div(divisor), int(256)).toVar('currentLine')\n\n const pixelDivisor = pow(int(2).toFloat(), charCoord.x.toFloat()).toInt().toVar('pixelDivisor')\n const currentPixel = modi(currentLine.div(pixelDivisor), int(2)).toVar('currentPixel')\n\n return currentPixel.toFloat()\n}).setLayout({\n name: 'char',\n type: 'float',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'charCode', type: 'int' },\n ],\n})\n","import { Fn, Int } from '../../node'\n\nexport const modi = Fn(([x, y]: [Int, Int]): Int => {\n const xf = x.toFloat()\n const yf = y.toFloat()\n const quotient = xf.div(yf).floor()\n return x.sub(quotient.mul(yf).toInt())\n}).setLayout({\n name: 'modi',\n type: 'int',\n inputs: [\n { name: 'x', type: 'int' },\n { name: 'y', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { circleSDFBasic } from '../sdf/circleSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const circleFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circleFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const circle = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circle',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleWithStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleWithStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const circleSDF = Fn(([v, center]: [Vec2, Vec2]) => {\n return v.sub(center).length().mul(2)\n}).setLayout({\n name: 'circleSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const circleSDFBasic = Fn(([v]: [Vec2]) => {\n return v.sub(vec2(0.5)).length().mul(2)\n}).setLayout({\n name: 'circleSDFBasic',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Int, vec2, vec4, floor, float } from '../../node'\nimport { scale2dVec } from '../space/scale'\nimport { macbeth } from '../color/palette/macbeth'\nimport { crossSDF } from '../sdf/crossSDF'\nimport { rectSDF } from '../sdf/rectSDF'\nimport { rectFill } from './rect'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const colorCheckerTile = Fn(([uv]: [Vec2]): Vec4 => {\n const st = scale2dVec(uv, vec2(1, 1.5)).mul(vec2(6, 4)).toVar('st')\n return vec4(st.fract(), st.floor())\n}).setLayout({\n name: 'colorCheckerTile',\n type: 'vec4',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n\nexport const colorCheckerMacbeth = Fn(([uv]: [Vec2]): Vec4 => {\n const t = colorCheckerTile(vec2(uv.x, uv.y.oneMinus())).toVar('t')\n const index = t.w.mul(6).add(t.z).floor().toInt().toVar('index')\n\n const color = macbeth(index)\n .mul(rectFill(t.xy, vec2(0.8)))\n .add(fill(crossSDF(uv, float(2)), float(0.015)))\n .add(\n stroke(rectSDF(uv, vec2(1.015, 0.68)), float(1), float(0.01))\n .sub(rectFill(uv, vec2(0.966, 1)))\n .sub(rectFill(uv, vec2(1.1, 0.63)))\n .saturate()\n )\n .toVar('color')\n\n const alpha = rectFill(uv, vec2(1.03, 0.69)).toVar('alpha')\n return vec4(color.saturate().mul(alpha), alpha)\n}).setLayout({\n name: 'colorCheckerMacbeth',\n type: 'vec4',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n\nexport const colorChecker = colorCheckerMacbeth\n","import { Fn, Vec2, Vec3, Float, vec2, vec3 } from '../../node'\n\nexport const scale2d = Fn(([st, s]: [Vec2, Float]): Vec2 => {\n return st.sub(vec2(0.5)).mul(s).add(vec2(0.5))\n}).setLayout({\n name: 'scale2d',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const scale2dWithCenter = Fn(([st, s, center]: [Vec2, Float, Vec2]): Vec2 => {\n return st.sub(center).mul(s).add(center)\n}).setLayout({\n name: 'scale2dWithCenter',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const scale2dVec = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return st.sub(vec2(0.5)).mul(s).add(vec2(0.5))\n}).setLayout({\n name: 'scale2dVec',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const scale3d = Fn(([st, s]: [Vec3, Float]): Vec3 => {\n return st.sub(vec3(0.5)).mul(s).add(vec3(0.5))\n}).setLayout({\n name: 'scale3d',\n type: 'vec3',\n inputs: [\n { name: 'st', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const scale = scale2dVec\n","import { Fn, vec3, Int, Vec3, If, int } from '../../../node'\n\nconst colors = [\n [0.46017, 0.33059, 0.27477], // DARK_SKIN\n [0.769, 0.576, 0.506], // LIGHT_SKIN\n [0.356, 0.472, 0.609], // BLUE_SKY\n [0.357, 0.427, 0.247], // FOLIAGE\n [0.518, 0.506, 0.694], // BLUE_FLOWER\n [0.384, 0.749, 0.675], // BLUISH_GREEN\n [0.867, 0.487, 0.184], // ORANGE\n [0.29, 0.357, 0.671], // PURPLISH_BLUE\n [0.769, 0.333, 0.384], // MODERATE_RED\n [0.365, 0.231, 0.42], // PURPLE\n [0.624, 0.745, 0.227], // YELLOW_GREEN\n [0.894, 0.635, 0.16], // ORANGE_YELLOW\n [0.176, 0.247, 0.584], // BLUE\n [0.239, 0.588, 0.29], // GREEN\n [0.69, 0.224, 0.227], // RED\n [0.925, 0.784, 0.094], // YELLOW\n [0.749, 0.309, 0.598], // MAGENTA\n [0.0, 0.537, 0.659], // CYAN\n [0.956, 0.956, 0.945], // WHITE\n [0.789, 0.797, 0.797], // NEUTRAL_80\n [0.635, 0.643, 0.643], // NEUTRAL_65\n [0.475, 0.478, 0.478], // NEUTRAL_50\n [0.329, 0.333, 0.337], // NEUTRAL_35\n [0.2, 0.2, 0.204], // BLACK\n]\n\nexport const macbeth = Fn(([index]: [Int]): Vec3 => {\n const result = vec3(0).toVar()\n let ifChain = If(index.equal(int(0)), () => void result.assign(vec3(...colors[0])))\n for (let i = 1; i < colors.length; i++)\n ifChain = ifChain.ElseIf(index.equal(int(i)), () => void result.assign(vec3(...colors[i])))\n return result\n}).setLayout({\n name: 'macbeth',\n type: 'vec3',\n inputs: [{ name: 'index', type: 'int' }],\n})\n","import { Fn, vec2, min, Float, Vec2 } from '../../node'\nimport { rectSDF } from './rectSDF'\n\nexport const crossSDF = Fn(([st, s]: [Vec2, Float]): Float => {\n const size = vec2(0.25, s)\n return min(rectSDF(st, size), rectSDF(st, size.yx))\n}).setLayout({\n name: 'crossSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const rectSDFBasic = Fn(([st]: [Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.abs().max(normalizedSt.y.abs())\n}).setLayout({\n name: 'rectSDFBasic',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const rectSDF = Fn(([st, s]: [Vec2, Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.div(s.x).abs().max(normalizedSt.y.div(s.y).abs())\n}).setLayout({\n name: 'rectSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const rectSDFUniform = Fn(([st, s]: [Vec2, Float]) => {\n return rectSDF(st, vec2(s))\n}).setLayout({\n name: 'rectSDFUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const rectSDFRounded = Fn(([p, b, r]: [Vec2, Vec2, Float]) => {\n const d = p.sub(0.5).mul(4.2).abs().sub(b).add(vec2(r)).toVar()\n return d.x.max(d.y).min(0).add(d.max(0).length()).sub(r)\n}).setLayout({\n name: 'rectSDFRounded',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, float } from '../../node'\nimport { rectSDF, rectSDFUniform } from '../sdf/rectSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const rectStroke = Fn(([st, size, strokeWidth]: [Vec2, Vec2, Float]): Float => {\n return stroke(rectSDF(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectStrokeUniform = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(rectSDFUniform(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStrokeUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectFill = Fn(([st, size]: [Vec2, Vec2]): Float => {\n return fill(rectSDF(st, size), float(1))\n}).setLayout({\n name: 'rectFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n ],\n})\n\nexport const rectFillUniform = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(rectSDFUniform(st, size), float(1))\n}).setLayout({\n name: 'rectFillUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const rect = rectFill\n","import { Fn, Vec2, Vec4, vec2, vec4, texture, step, float, vec3 } from '../../node'\nimport { nearest } from '../space/nearest'\n\nconst pickerSize = vec2(0.05)\nconst crosshairSize = float(0.003)\n\nexport const colorPickerSample = Fn(([tex, pos, texResolution]: [any, Vec2, Vec2]): Vec4 => {\n const nearestPos = nearest(pos, texResolution)\n return texture(tex, nearestPos)\n}).setLayout({\n name: 'colorPickerSample',\n type: 'vec4',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'pos', type: 'vec2' },\n { name: 'texResolution', type: 'vec2' },\n ],\n})\n\nexport const colorPickerDisplay = Fn(([st, pickerPos, pickedColor]: [Vec2, Vec2, Vec4]): Vec4 => {\n const displayPos = pickerPos.add(vec2(0.08, 0.08)).toVar('displayPos')\n const distToDisplay = st.sub(displayPos).abs().toVar('distToDisplay')\n const inPatch = step(distToDisplay.x, pickerSize.x).mul(step(distToDisplay.y, pickerSize.y)).toVar('inPatch')\n const crosshair = step(st.sub(pickerPos).abs().x, crosshairSize)\n .mul(step(st.sub(pickerPos).abs().y, crosshairSize.mul(5)))\n .add(\n step(st.sub(pickerPos).abs().y, crosshairSize).mul(\n step(st.sub(pickerPos).abs().x, crosshairSize.mul(5))\n )\n )\n .toVar('crosshair')\n const borderWidth = float(0.002).toVar('borderWidth')\n const inBorder = step(distToDisplay.x, pickerSize.x.add(borderWidth))\n .mul(step(distToDisplay.y, pickerSize.y.add(borderWidth)))\n .sub(inPatch)\n .toVar('inBorder')\n const result = vec4(0, 0, 0, 0).toVar('result')\n result.rgb.assign(pickedColor.rgb.mul(inPatch))\n result.a.assign(inPatch)\n result.rgb.assign(result.rgb.add(vec3(1, 1, 1).mul(crosshair)))\n result.a.assign(result.a.add(crosshair))\n result.a.assign(result.a.add(inBorder))\n return result\n}).setLayout({\n name: 'colorPickerDisplay',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pickerPos', type: 'vec2' },\n { name: 'pickedColor', type: 'vec4' },\n ],\n})\n\nexport const colorPicker = Fn(([st, tex, pickerPos, texResolution]: [Vec2, any, Vec2, Vec2]): Vec4 => {\n const pickedColor = colorPickerSample(tex, pickerPos, texResolution)\n return colorPickerDisplay(st, pickerPos, pickedColor)\n}).setLayout({\n name: 'colorPicker',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'tex', type: 'sampler2D' },\n { name: 'pickerPos', type: 'vec2' },\n { name: 'texResolution', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, floor } from '../../node'\n\nexport const nearest = Fn(([v, res]: [Vec2, Vec2]): Vec2 => {\n const offset = res.sub(1).reciprocal().mul(0.5).toVar('offset')\n return floor(v.mul(res)).div(res).add(offset)\n}).setLayout({\n name: 'nearest',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'res', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, Mat2, Int, If, Loop, Break, float, vec2, int } from '../../node'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_DECIMALS = float(2.0)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nconst digitsCore = Fn(([st, value, nDecDigit]: [Vec2, Float, Float]): Float => {\n const adjustedSt = st.div(DIGITS_SIZE).toVar('adjustedSt')\n const absValue = value.abs().toVar('absValue')\n const biggestDigitIndex = absValue.log2().div(float(10).log2()).floor().max(0).toVar('biggestDigitIndex')\n const counter = absValue.floor().toVar('counter')\n const nIntDigits = float(1).toVar('nIntDigits')\n\n Loop(int(9), () => {\n counter.assign(counter.mul(0.1).floor())\n nIntDigits.addAssign(1)\n If(counter.equal(0), () => {\n Break()\n })\n })\n\n let digit = float(12).toVar('digit')\n const digitIndex = nIntDigits.sub(1).sub(adjustedSt.x.floor()).toVar('digitIndex')\n\n If(digitIndex.greaterThan(nDecDigit.negate().sub(1.5)), () => {\n If(digitIndex.greaterThan(biggestDigitIndex), () => {\n If(value.lessThan(0), () => {\n If(digitIndex.lessThan(biggestDigitIndex.add(1.5)), () => {\n digit.assign(11)\n })\n })\n }).Else(() => {\n If(digitIndex.equal(-1), () => {\n If(nDecDigit.greaterThan(0), () => {\n digit.assign(10)\n })\n }).Else(() => {\n If(digitIndex.lessThan(0), () => {\n digitIndex.addAssign(1)\n })\n const digitValue = absValue.div(float(10).pow(digitIndex)).toVar('digitValue')\n digit.assign(digitValue.add(0.0001).floor().mod(10))\n })\n })\n })\n\n const pos = vec2(adjustedSt.x.fract(), adjustedSt.y).toVar('pos')\n If(pos.x.lessThan(0), () => {\n return float(0)\n })\n If(pos.y.lessThan(0), () => {\n return float(0)\n })\n If(pos.x.greaterThanEqual(1), () => {\n return float(0)\n })\n If(pos.y.greaterThanEqual(1), () => {\n return float(0)\n })\n\n const bin = float(0).toVar('bin')\n\n If(digit.lessThan(0.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(5).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(1.5), () => {\n bin.assign(\n float(2)\n .add(float(2).mul(16))\n .add(float(2).mul(256))\n .add(float(2).mul(4096))\n .add(float(2).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(2.5), () => {\n bin.assign(\n float(7)\n .add(float(1).mul(16))\n .add(float(7).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(3.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(4.5), () => {\n bin.assign(\n float(4)\n .add(float(7).mul(16))\n .add(float(5).mul(256))\n .add(float(1).mul(4096))\n .add(float(1).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(5.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(1).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(6.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(7).mul(256))\n .add(float(1).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(7.5), () => {\n bin.assign(\n float(4)\n .add(float(4).mul(16))\n .add(float(4).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(8.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(7).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(9.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(10.5), () => {\n bin.assign(\n float(2)\n .add(float(0).mul(16))\n .add(float(0).mul(256))\n .add(float(0).mul(4096))\n .add(float(0).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(11.5), () => {\n bin.assign(\n float(0)\n .add(float(0).mul(16))\n .add(float(7).mul(256))\n .add(float(0).mul(4096))\n .add(float(0).mul(65536))\n )\n })\n\n const pixel = pos.mul(vec2(4, 5)).floor().toVar('pixel')\n return bin\n .div(float(2).pow(pixel.x.add(pixel.y.mul(4))))\n .floor()\n .mod(2)\n}).setLayout({\n name: 'digitsCore',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n { name: 'nDecDigit', type: 'float' },\n ],\n})\n\nexport const digitsFloat = Fn(([st, value, nDecDigit]: [Vec2, Float, Float]): Float => {\n return digitsCore(st, value, nDecDigit)\n}).setLayout({\n name: 'digitsFloat',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n { name: 'nDecDigit', type: 'float' },\n ],\n})\n\nexport const digitsInt = Fn(([st, value]: [Vec2, Int]): Float => {\n return digitsCore(st, value.toFloat(), float(0))\n}).setLayout({\n name: 'digitsInt',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'int' },\n ],\n})\n\nexport const digits = Fn(([st, value]: [Vec2, Float]): Float => {\n return digitsCore(st, value, DIGITS_DECIMALS)\n}).setLayout({\n name: 'digits',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n ],\n})\n\nexport const digitsVec2 = Fn(([st, v]: [Vec2, Vec2]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(2), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(int(0)), () => {\n value.assign(v.x)\n }).Else(() => {\n value.assign(v.y)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec2',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n\nexport const digitsVec3 = Fn(([st, v]: [Vec2, Vec3]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(3), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(int(0)), () => {\n value.assign(v.x)\n })\n .ElseIf(i.equal(1), () => {\n value.assign(v.y)\n })\n .Else(() => {\n value.assign(v.z)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec3',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec3' },\n ],\n})\n\nexport const digitsVec4 = Fn(([st, v]: [Vec2, Vec4]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(4), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(0), () => {\n value.assign(v.x)\n })\n .ElseIf(i.equal(1), () => {\n value.assign(v.y)\n })\n .ElseIf(i.equal(2), () => {\n value.assign(v.z)\n })\n .Else(() => {\n value.assign(v.w)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec4',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec4' },\n ],\n})\n\nexport const digitsMat2 = Fn(([st, matrix]: [Vec2, Mat2]): Float => {\n let rta = float(0).toVar('rta')\n // Manually unroll the matrix elements\n const pos00 = st\n .add(vec2(0, 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos00')\n const pos01 = st\n .add(vec2(0, 1).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos01')\n const pos10 = st\n .add(vec2(1, 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos10')\n const pos11 = st\n .add(vec2(1, 1).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos11')\n\n rta.addAssign(digits(pos00, matrix.element(int(0)).element(int(0))))\n rta.addAssign(digits(pos01, matrix.element(int(1)).element(int(0))))\n rta.addAssign(digits(pos10, matrix.element(int(0)).element(int(1))))\n rta.addAssign(digits(pos11, matrix.element(int(1)).element(int(1))))\n\n return rta\n}).setLayout({\n name: 'digitsMat2',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'matrix', type: 'mat2' },\n ],\n})\n\n// Note: Mat3 and Mat4 display functions are omitted for simplicity\n// due to complexity in matrix element access. Only Mat2 is implemented.\n","import { Fn, Float, Vec3, Vec4, X, float, vec3, vec4, mix } from '../../node'\n\nexport const flipFloat = Fn(([v, pct]: [Float, Float]): Float => {\n return mix(v, float(1).sub(v), pct)\n}).setLayout({\n name: 'flipFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec3 = Fn(([v, pct]: [Vec3, Float]): Vec3 => {\n return mix(v, vec3(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec4 = Fn(([v, pct]: [Vec4, Float]): Vec4 => {\n return mix(v, vec4(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flip = Fn(([v, pct]: [X, Float]): X => {\n return mix(v, v.oneMinus(), pct)\n}).setLayout({\n name: 'flip',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'pct', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { hexSDF } from '../sdf/hexSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const hexFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(hexSDF(st), size)\n}).setLayout({\n name: 'hexFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const hexStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(hexSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'hexStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const hex = hexFill\n","import { Fn, Vec2, Float } from '../../node'\n\nexport const hexSDF = Fn(([st]: [Vec2]): Float => {\n const transformed = st.mul(2).sub(1).toVar('transformed')\n transformed.assign(transformed.abs())\n return transformed.y.abs().max(transformed.x.mul(0.866025).add(transformed.y.mul(0.5)))\n}).setLayout({\n name: 'hexSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Mat2, vec2, step, vec4 } from '../../node'\nimport { digitsMat2 } from './digits'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nexport const matrix = Fn(([st, M]: [Vec2, Mat2]): Vec4 => {\n const rta = vec4(0).toVar('rta')\n const size = DIGITS_SIZE.mul(DIGITS_VALUE_OFFSET.abs()).mul(2)\n rta.a.assign(\n step(DIGITS_SIZE.x.negate(), st.x)\n .mul(step(st.x, size.x))\n .mul(step(DIGITS_SIZE.y.negate(), st.y))\n .mul(step(st.y, size.y))\n .mul(0.5)\n )\n rta.assign(rta.add(digitsMat2(st, M)))\n return rta\n}).setLayout({\n name: 'matrixMat2',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4, float, step } from '../../node'\nimport { digitsVec2 } from './digits'\nimport { circleFill } from './circle'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nexport const pointWithColor = Fn(([st, pos, color, radius]: [Vec2, Vec2, Vec3, Float]): Vec4 => {\n const rta = vec4(0).toVar('rta')\n const st_p = st.sub(pos).toVar('st_p')\n rta.assign(rta.add(vec4(color, 1).mul(circleFill(st_p.add(0.5), radius))))\n st_p.assign(st_p.sub(DIGITS_SIZE.mul(vec2(0, 0.5))))\n const size = DIGITS_SIZE.mul(DIGITS_VALUE_OFFSET.abs()).mul(vec2(2, 0.5))\n rta.a.addAssign(\n step(0, st_p.x)\n .mul(step(st_p.x, size.x))\n .mul(step(DIGITS_SIZE.y.mul(-0.5), st_p.y))\n .mul(step(st_p.y, size.y))\n .mul(0.5)\n )\n rta.assign(rta.add(digitsVec2(st_p, pos)))\n return rta\n}).setLayout({\n name: 'pointWithColor',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n { name: 'color', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n\nexport const point = Fn(([st, pos]: [Vec2, Vec2]): Vec4 => {\n return pointWithColor(st, pos, vec3(1, 0, 0), float(0.02))\n}).setLayout({\n name: 'point',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { triSDF } from '../sdf/triSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const triFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(triSDF(st), size)\n}).setLayout({\n name: 'triFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const triStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(triSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'triStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const tri = triFill\n","import { Fn, Vec2, Float } from '../../node'\n\nexport const triSDF = Fn(([st]: [Vec2]): Float => {\n const centered = st.sub(0.5).mul(5).toVar('centered')\n return centered.x.abs().mul(0.866025).add(centered.y.mul(0.5)).max(centered.y.negate().mul(0.5))\n}).setLayout({\n name: 'triSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triSDFCenter = Fn(([st, center]: [Vec2, Vec2]): Float => {\n const centered = st.sub(center).mul(5).toVar('centered')\n return centered.x.abs().mul(0.866025).add(centered.y.mul(0.5)).max(centered.y.negate().mul(0.5))\n}).setLayout({\n name: 'triSDFCenter',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const AABB = struct({\n minBounds: vec3(),\n maxBounds: vec3(),\n})\n\nexport type AABBType = ReturnType<typeof AABB>\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbCentroid = Fn(([box]: [AABBType]): Vec3 => {\n return box.minBounds.add(box.maxBounds).mul(0.5)\n}).setLayout({\n name: 'aabbCentroid',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Bool } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbContain = Fn(([box, point]: [AABBType, Vec3]): Bool => {\n return point.x\n .greaterThan(box.minBounds.x)\n .and(point.x.lessThanEqual(box.maxBounds.x))\n .and(point.y.greaterThan(box.minBounds.y))\n .and(point.y.lessThanEqual(box.maxBounds.y))\n .and(point.z.greaterThan(box.minBounds.z))\n .and(point.z.lessThanEqual(box.maxBounds.z))\n}).setLayout({\n name: 'aabbContain',\n type: 'bool',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'point', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const diagonal = Fn(([box]: [AABBType]): Vec3 => {\n return box.maxBounds.sub(box.minBounds).abs()\n}).setLayout({\n name: 'diagonal',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Float } from '../../../node'\nimport { AABBType, AABB } from './aabb'\n\nexport const expand = Fn(([box, value]: [AABBType, Float]): AABBType => {\n return AABB({\n minBounds: box.minBounds.sub(value),\n maxBounds: box.maxBounds.add(value),\n })\n}).setLayout({\n name: 'expand',\n type: 'auto',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbIntersect = Fn(([box, rayOrigin, rayDir]: [AABBType, Vec3, Vec3]): Vec2 => {\n const tMin = box.minBounds.sub(rayOrigin).div(rayDir)\n const tMax = box.maxBounds.sub(rayOrigin).div(rayDir)\n const t1 = tMin.min(tMax)\n const t2 = tMin.max(tMax)\n const tNear = t1.x.max(t1.y).max(t1.z)\n const tFar = t2.x.min(t2.y).min(t2.z)\n return vec2(tNear, tFar)\n}).setLayout({\n name: 'aabbIntersect',\n type: 'vec2',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, max, abs } from '../../../node'\nimport { AABBType, AABB } from './aabb'\nimport { diagonal } from './diagonal'\n\nexport const square = Fn(([box]: [AABBType]): AABBType => {\n const diag = diagonal(box).mul(0.5).toVar('diag')\n const center = box.minBounds.add(diag).toVar('center')\n const maxDim = max(abs(diag.x), max(abs(diag.y), abs(diag.z))).toVar('maxDim')\n return AABB({\n minBounds: center.sub(maxDim),\n maxBounds: center.add(maxDim),\n })\n}).setLayout({\n name: 'square',\n type: 'auto',\n inputs: [{ name: 'box', type: 'auto' }],\n})","import { Fn, Float, length, cross } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const area = Fn(([tri]: [TriangleType]): Float => {\n return length(cross(tri.b.sub(tri.a), tri.c.sub(tri.a))).mul(0.5)\n}).setLayout({\n name: 'area',\n type: 'float',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, length, cross, dot, vec3, float } from '../../../node'\nimport { area } from './area'\nimport { TriangleType } from './triangle'\n\nexport const barycentricFromVec3 = Fn(([a, b, c]: [Vec3, Vec3, Vec3]): Vec3 => {\n const daa = dot(a, a).toVar('daa')\n const dab = dot(a, b).toVar('dab')\n const dbb = dot(b, b).toVar('dbb')\n const dca = dot(c, a).toVar('dca')\n const dcb = dot(c, b).toVar('dcb')\n const denom = daa.mul(dbb).sub(dab.mul(dab)).toVar('denom')\n const y = dbb.mul(dca).sub(dab.mul(dcb)).div(denom).toVar('y')\n const z = daa.mul(dcb).sub(dab.mul(dca)).div(denom).toVar('z')\n return vec3(float(1).sub(y).sub(z), y, z)\n}).setLayout({\n name: 'barycentricFromVec3',\n type: 'vec3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// barycentric(Triangle tri) - Triangle structから座標計算\nexport const barycentric = Fn(([tri]: [TriangleType]): Vec3 => {\n return barycentricFromVec3(tri.a, tri.b, tri.c)\n}).setLayout({\n name: 'barycentric',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n\nexport const barycentricFromPosition = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const f0 = a.sub(pos).toVar('f0')\n const f1 = b.sub(pos).toVar('f1')\n const f2 = c.sub(pos).toVar('f2')\n const areaValue = area(tri).toVar('area')\n return vec3(length(cross(f1, f2)), length(cross(f2, f0)), length(cross(f0, f1))).div(areaValue)\n}).setLayout({\n name: 'barycentricFromPosition',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleCentroid = Fn(([tri]: [TriangleType]): Vec3 => {\n return tri.a.add(tri.b).add(tri.c).div(3)\n}).setLayout({\n name: 'triangleCentroid',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, dot, length, cross, normalize, max, min, vec3, float, If } from '../../../node'\nimport { barycentricFromVec3 } from './barycentric'\nimport { TriangleType } from './triangle'\n\nexport const closestPointWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a)\n const ac = c.sub(a)\n const p = pos.sub(dot(triNormal, pos.sub(a)).mul(triNormal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n return b.add(t.div(n).mul(bc))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n return c.add(t.div(n).mul(ca))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n return a.add(t.div(n).mul(ab))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPointWithNormal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const closestPoint = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a) // .toVar('ab') @TODO FIX\n const ac = c.sub(a)\n const normal = normalize(cross(ac, ab))\n const p = pos.sub(dot(normal, pos.sub(a)).mul(normal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n return b.add(t.div(n).mul(bc))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n return c.add(t.div(n).mul(ca))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n return a.add(t.div(n).mul(ab))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPoint',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Bool, Vec3, cross, dot } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleContain = Fn(([tri, pos]: [TriangleType, Vec3]): Bool => {\n const localA = tri.a.sub(pos).toVar('localA')\n const localB = tri.b.sub(pos).toVar('localB')\n const localC = tri.c.sub(pos).toVar('localC')\n const u = cross(localB, localC).toVar('u')\n const v = cross(localC, localA).toVar('v')\n const w = cross(localA, localB).toVar('w')\n return dot(u, v).greaterThanEqual(0).and(dot(u, w).greaterThanEqual(0))\n}).setLayout({\n name: 'triangleContain',\n type: 'bool',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, cross, dot, sign, sqrt, min } from '../../../node'\nimport { lengthSq } from '../../math/lengthSq'\nimport { TriangleType } from './triangle'\n\nexport const distanceSq = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const v21 = b.sub(a)\n const p1 = pos.sub(a)\n const v32 = c.sub(b)\n const p2 = pos.sub(b)\n const v13 = a.sub(c)\n const p3 = pos.sub(c)\n const nor = cross(v21, v13)\n\n const s1 = sign(dot(cross(v21, nor), p1))\n const s2 = sign(dot(cross(v32, nor), p2))\n const s3 = sign(dot(cross(v13, nor), p3))\n const signSum = s1.add(s2).add(s3)\n\n const edge1 = lengthSq(v21.mul(dot(v21, p1).div(lengthSq(v21)).saturate()).sub(p1))\n const edge2 = lengthSq(v32.mul(dot(v32, p2).div(lengthSq(v32)).saturate()).sub(p2))\n const edge3 = lengthSq(v13.mul(dot(v13, p3).div(lengthSq(v13)).saturate()).sub(p3))\n const edgeDistance = min(min(edge1, edge2), edge3)\n\n const planeDistance = dot(nor, p1).mul(dot(nor, p1)).div(lengthSq(nor))\n\n // @ts-ignore\n return sqrt(edgeDistance.select(planeDistance, signSum.lessThan(2))) as Float\n}).setLayout({\n name: 'distanceSq',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn } from '../../node'\nimport type { Vec2, X } from '../../node/types'\n\nexport const lengthSq = Fn(([v]: [X]): X => {\n return (v as Vec2).dot(v as Vec2) as X\n}).setLayout({\n name: 'lengthSq',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, cross, dot, float, struct, vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const Ray = struct({\n origin: vec3(),\n direction: vec3(),\n})\n\nexport type RayType = ReturnType<typeof Ray>\n\nexport const triangleIntersect = Fn(([tri, rayOrigin, rayDir]: [TriangleType, Vec3, Vec3]): Float => {\n const v1v0 = tri.b.sub(tri.a)\n const v2v0 = tri.c.sub(tri.a)\n const rov0 = rayOrigin.sub(tri.a)\n const point = cross(v1v0, v2v0)\n const q = cross(rov0, rayDir)\n const d = float(1).div(dot(rayDir, point))\n const u = d.mul(dot(q, v2v0).negate())\n const v = d.mul(dot(q, v1v0))\n const t = d.mul(dot(point, rov0).negate())\n\n const isOutside = u\n .lessThan(0)\n .or(u.greaterThan(1))\n .or(v.lessThan(0))\n .or(u.add(v).greaterThan(1))\n .or(t.lessThan(0))\n\n return float(9999999.9).select(t, isOutside)\n}).setLayout({\n name: 'triangleIntersect',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n\nexport const triangleIntersectRay = Fn(([tri, ray]: [TriangleType, RayType]): Float => {\n return triangleIntersect(tri, ray.origin, ray.direction)\n}).setLayout({\n name: 'triangleIntersectRay',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'ray', type: 'auto' },\n ],\n})\n","import { Fn, Vec3, cross, normalize } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const normal = Fn(([tri]: [TriangleType]): Vec3 => {\n return normalize(cross(tri.b.sub(tri.a), tri.c.sub(tri.a)))\n}).setLayout({\n name: 'normal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec3, length, sign, dot } from '../../../node'\nimport { normal } from './normal'\nimport { closestPointWithNormal } from './closestPoint'\nimport { TriangleType } from './triangle'\n\nexport const signedDistanceWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Float => {\n const nearest = closestPointWithNormal(tri, triNormal, pos).toVar('nearest')\n const delta = pos.sub(nearest).toVar('delta')\n const distance = length(delta).toVar('distance')\n return distance.mul(sign(dot(delta.div(distance), triNormal)))\n}).setLayout({\n name: 'signedDistanceWithNormal',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const signedDistance = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const triNormal = normal(tri).toVar('triNormal')\n return signedDistanceWithNormal(tri, triNormal, pos)\n}).setLayout({\n name: 'signedDistance',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const Triangle = struct({\n a: vec3(),\n b: vec3(),\n c: vec3(),\n})\n\nexport type TriangleType = ReturnType<typeof Triangle>\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const cnoiseVec2 = Fn(([P]: [Vec2]): Float => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y)\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'cnoiseVec2',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec2' }],\n})\n\nexport const cnoiseVec3 = Fn(([P]: [Vec3]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x)\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec3',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec3' }],\n})\n\nexport const cnoiseVec4 = Fn(([P]: [Vec4]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(1).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(gx00.step(vec4(0)).sub(0.5)))\n gy00.subAssign(sw00.mul(gy00.step(vec4(0)).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(gx01.step(vec4(0)).sub(0.5)))\n gy01.subAssign(sw01.mul(gy01.step(vec4(0)).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(gx10.step(vec4(0)).sub(0.5)))\n gy10.subAssign(sw10.mul(gy10.step(vec4(0)).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(gx11.step(vec4(0)).sub(0.5)))\n gy11.subAssign(sw11.mul(gy11.step(vec4(0)).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x)\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec4',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\n\nfunction fun(x: Float): Float\nfunction fun(x: Vec2): Vec2\nfunction fun(x: Vec3): Vec3\nfunction fun(x: Vec4): Vec4\nfunction fun(x: X): X {\n return x.sub(x.div(289).floor().mul(289))\n}\n\nexport const mod289 = Fn(([x]: [Float]): Float => {\n return fun(x)\n}).setLayout({\n name: 'mod289',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const mod289Vec2 = Fn(([x]: [Vec2]): Vec2 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const mod289Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const mod289Vec4 = Fn(([x]: [Vec4]): Vec4 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec4',\n type: 'vec4',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\nimport { mod289, mod289Vec2, mod289Vec3, mod289Vec4 } from './mod289'\n\nfunction fun(v: Float): Float\nfunction fun(v: Vec2): Vec2\nfunction fun(v: Vec3): Vec3\nfunction fun(v: Vec4): Vec4\nfunction fun(v: X): X {\n return v.mul(34).add(1).mul(v)\n}\n\nexport const permute = Fn(([v]: [Float]): Float => {\n return mod289(fun(v))\n}).setLayout({\n name: 'permute',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const permuteVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return mod289Vec2(fun(v))\n}).setLayout({\n name: 'permuteVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const permuteVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return mod289Vec3(fun(v))\n}).setLayout({\n name: 'permuteVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const permuteVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return mod289Vec4(fun(v))\n}).setLayout({\n name: 'permuteVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const taylorInvSqrt = Fn(([r]: [X]): X => {\n return r.mul(-0.85373472095314).add(1.79284291400159)\n}).setLayout({\n name: 'taylorInvSqrt',\n type: 'auto',\n inputs: [{ name: 'r', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const quintic = Fn(([v]: [X]): X => {\n const v3 = v.mul(v).mul(v).toVar('v3')\n const inner = v.mul(v.mul(6).sub(15)).add(10).toVar('inner')\n return v3.mul(inner)\n}).setLayout({\n name: 'quintic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { snoise2, snoise3Vec3, snoise3Vec4 } from './snoise'\n\nexport const curlVec2 = Fn(([p]: [Vec2]): Vec2 => {\n const e = float(0.1).toVar('e')\n const dx = vec2(e, 0).toVar('dx')\n const dy = vec2(0, e).toVar('dy')\n const p_x0 = snoise2(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise2(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise2(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise2(p.add(dy)).toVar('p_y1')\n const x = p_x1.y.add(p_x0.y).toVar('x')\n const y = p_y1.x.sub(p_y0.x).toVar('y')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec2(x, y).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const curlVec3 = Fn(([p]: [Vec3]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec3(e, 0, 0).toVar('dx')\n const dy = vec3(0, e, 0).toVar('dy')\n const dz = vec3(0, 0, e).toVar('dz')\n const p_x0 = snoise3Vec3(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec3(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec3(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec3(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec3(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec3(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const curlVec4 = Fn(([p]: [Vec4]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec4(e, 0, 0, 1).toVar('dx')\n const dy = vec4(0, e, 0, 1).toVar('dy')\n const dz = vec4(0, 0, e, 1).toVar('dz')\n const p_x0 = snoise3Vec4(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec4(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec4(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec4(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec4(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec4(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec4',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { mod289Vec2, mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permute, permuteVec3, permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { grad4 } from '../math/grad4'\n\nexport const snoiseVec2 = Fn(([v]: [Vec2]): Float => {\n const C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439).toVar('C')\n const i = v.add(v.dot(C.yy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xx)).toVar('x0')\n const i1 = vec2(1, 0).select(vec2(0, 1), x0.x.greaterThan(x0.y)).toVar('i1')\n const x12 = x0.xyxy.add(C.xxzz).toVar('x12')\n x12.xy = x12.xy.sub(i1)\n i.assign(mod289Vec2(i))\n const p = permuteVec3(\n permuteVec3(i.y.add(vec3(0, i1.y, 1)))\n .add(i.x)\n .add(vec3(0, i1.x, 1))\n ).toVar('p')\n const m = float(0.5)\n .sub(vec3(x0.dot(x0), x12.xy.dot(x12.xy), x12.zw.dot(x12.zw)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n m.assign(m.mul(m))\n const x = p.mul(C.www).fract().mul(2).sub(1).toVar('x')\n const h = x.abs().sub(0.5).toVar('h')\n const ox = x.add(0.5).floor().toVar('ox')\n const a0 = x.sub(ox).toVar('a0')\n m.mulAssign(float(1.79284291400159).sub(float(0.85373472095314).mul(a0.mul(a0).add(h.mul(h)))))\n const g = vec3(a0.x.mul(x0.x).add(h.x.mul(x0.y)), a0.yz.mul(x12.xz).add(h.yz.mul(x12.yw))).toVar('g')\n return float(130).mul(m.dot(g))\n}).setLayout({\n name: 'snoiseVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const snoiseVec3 = Fn(([v]: [Vec3]): Float => {\n const C = vec2(1 / 6, 1 / 3).toVar('C')\n const D = vec4(0, 0.5, 1, 2).toVar('D')\n const i = v.add(v.dot(C.yyy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxx)).toVar('x0')\n const g = x0.yzx.step(x0.xyz).toVar('g')\n const l = float(1).sub(g).toVar('l')\n const i1 = g.xyz.min(l.zxy).toVar('i1')\n const i2 = g.xyz.max(l.zxy).toVar('i2')\n const x1 = x0.sub(i1).add(C.xxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyy).toVar('x2')\n const x3 = x0.sub(D.yyy).toVar('x3')\n i.assign(mod289Vec3(i))\n const p = permuteVec4(\n permuteVec4(\n permuteVec4(i.z.add(vec4(0, i1.z, i2.z, 1)))\n .add(i.y)\n .add(vec4(0, i1.y, i2.y, 1))\n )\n .add(i.x)\n .add(vec4(0, i1.x, i2.x, 1))\n ).toVar('p')\n const n_ = float(0.142857142857).toVar('n_')\n const ns = n_.mul(D.wyz).sub(D.xzx).toVar('ns')\n const j = p.sub(p.mul(ns.z).mul(ns.z).floor().mul(49)).toVar('j')\n const x_ = j.mul(ns.z).floor().toVar('x_')\n const y_ = j.sub(x_.mul(7)).floor().toVar('y_')\n const x = x_.mul(ns.x).add(ns.yyyy).toVar('x')\n const y = y_.mul(ns.x).add(ns.yyyy).toVar('y')\n const h = float(1).sub(x.abs()).sub(y.abs()).toVar('h')\n const b0 = vec4(x.xy, y.xy).toVar('b0')\n const b1 = vec4(x.zw, y.zw).toVar('b1')\n const s0 = b0.floor().mul(2).add(1).toVar('s0')\n const s1 = b1.floor().mul(2).add(1).toVar('s1')\n const sh = vec4(0).step(h).negate().toVar('sh')\n const a0 = b0.xzyw.add(s0.xzyw.mul(sh.xxyy)).toVar('a0')\n const a1 = b1.xzyw.add(s1.xzyw.mul(sh.zzww)).toVar('a1')\n const p0 = vec3(a0.xy, h.x).toVar('p0')\n const p1 = vec3(a0.zw, h.y).toVar('p1')\n const p2 = vec3(a1.xy, h.z).toVar('p2')\n const p3 = vec3(a1.zw, h.w).toVar('p3')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n const m = float(0.6)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n return float(42).mul(m.mul(m).dot(vec4(p0.dot(x0), p1.dot(x1), p2.dot(x2), p3.dot(x3))))\n}).setLayout({\n name: 'snoiseVec3',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const snoiseVec4 = Fn(([v]: [Vec4]): Float => {\n const C = vec4(0.138196601125011, 0.276393202250021, 0.414589803375032, -0.447213595499958).toVar('C')\n const i = v\n .add(v.dot(vec4(0.309016994374947451)))\n .floor()\n .toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxxx)).toVar('x0')\n const i0 = vec4(0).toVar('i0')\n const isX = x0.xxx.step(x0.yzw).toVar('isX')\n const isYZ = x0.yyz.step(x0.zww).toVar('isYZ')\n i0.x = isX.x.add(isX.y).add(isX.z)\n i0.yzw = float(1).sub(isX)\n i0.y = i0.y.add(isYZ.x).add(isYZ.y)\n i0.zw = i0.zw.add(float(1).sub(isYZ.xy))\n i0.z = i0.z.add(isYZ.z)\n i0.w = i0.w.add(float(1).sub(isYZ.z))\n const i3 = i0.clamp(0, 1).toVar('i3')\n const i2 = i0.sub(1).clamp(0, 1).toVar('i2')\n const i1 = i0.sub(2).clamp(0, 1).toVar('i1')\n const x1 = x0.sub(i1).add(C.xxxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyyy).toVar('x2')\n const x3 = x0.sub(i3).add(C.zzzz).toVar('x3')\n const x4 = x0.add(C.wwww).toVar('x4')\n i.assign(mod289Vec4(i))\n const j0 = permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x)).toVar('j0')\n const j1 = permuteVec4(\n permuteVec4(\n permuteVec4(\n permuteVec4(i.w.add(vec4(i1.w, i2.w, i3.w, 1)))\n .add(i.z)\n .add(vec4(i1.z, i2.z, i3.z, 1))\n )\n .add(i.y)\n .add(vec4(i1.y, i2.y, i3.y, 1))\n )\n .add(i.x)\n .add(vec4(i1.x, i2.x, i3.x, 1))\n ).toVar('j1')\n const ip = vec4(1 / 294, 1 / 49, 1 / 7, 0).toVar('ip')\n const p0 = grad4(j0, ip).toVar('p0')\n const p1 = grad4(j1.x, ip).toVar('p1')\n const p2 = grad4(j1.y, ip).toVar('p2')\n const p3 = grad4(j1.z, ip).toVar('p3')\n const p4 = grad4(j1.w, ip).toVar('p4')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n p4.mulAssign(taylorInvSqrt(p4.dot(p4)))\n const m0 = float(0.6)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .max(0)\n .toVar('m0')\n const m1 = float(0.6)\n .sub(vec2(x3.dot(x3), x4.dot(x4)))\n .max(0)\n .toVar('m1')\n m0.assign(m0.mul(m0))\n m1.assign(m1.mul(m1))\n return float(49).mul(\n m0\n .mul(m0)\n .dot(vec3(p0.dot(x0), p1.dot(x1), p2.dot(x2)))\n .add(m1.mul(m1).dot(vec2(p3.dot(x3), p4.dot(x4))))\n )\n}).setLayout({\n name: 'snoiseVec4',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const snoise2 = Fn(([x]: [Vec2]): Vec2 => {\n const s = snoiseVec2(x).toVar('s')\n const s1 = snoiseVec2(vec2(x.y.sub(19.1), x.x.add(47.2))).toVar('s1')\n return vec2(s, s1)\n}).setLayout({\n name: 'snoise2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const snoise3Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n const s = snoiseVec3(x).toVar('s')\n const s1 = snoiseVec3(vec3(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2))).toVar('s1')\n const s2 = snoiseVec3(vec3(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4))).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const snoise3Vec4 = Fn(([x]: [Vec4]): Vec3 => {\n const s = snoiseVec4(x).toVar('s')\n const s1 = snoiseVec4(vec4(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2), x.w)).toVar('s1')\n const s2 = snoiseVec4(vec4(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4), x.w)).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec4',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec4, vec4, vec3, float } from '../../node'\n\nexport const grad4 = Fn(([j, ip]: [Float, Vec4]): Vec4 => {\n const ones = vec4(1, 1, 1, -1).toVar('ones')\n const p = vec4(0).toVar('p')\n const s = vec4(0).toVar('s')\n p.xyz = vec3(j, j, j).mul(ip.xyz).fract().mul(7).floor().mul(ip.z).sub(1)\n p.w = float(1.5).sub(p.xyz.abs().dot(ones.xyz))\n s.assign(vec4(p.x.lessThan(0.0), p.y.lessThan(0.0), p.z.lessThan(0.0), p.w.lessThan(0.0)))\n p.xyz = p.xyz.add(s.xyz.mul(2).sub(1).mul(s.www))\n return p\n}).setLayout({\n name: 'grad4',\n type: 'vec4',\n inputs: [\n { name: 'j', type: 'float' },\n { name: 'ip', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, float, Loop, int } from '../../node'\nimport { snoiseVec2, snoiseVec3 } from './snoise'\nimport { gnoiseVec3Tiled } from './gnoise'\n\nconst FBM_OCTAVES = int(4)\nconst FBM_SCALE_SCALAR = 2\nconst FBM_AMPLITUDE_INITIAL = 0.5\nconst FBM_AMPLITUDE_SCALAR = 0.5\n\nexport const fbmVec2 = Fn(([st]: [Vec2]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const coord = st.toVar('coord')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec2(coord)))\n coord.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const fbmVec3 = Fn(([pos]: [Vec3]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const posVar = pos.toVar('posVar')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec3(posVar)))\n posVar.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const fbmVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const persistence = float(0.5).toVar('persistence')\n const lacunarity = float(2).toVar('lacunarity')\n const amplitude = float(0.5).toVar('amplitude')\n const total = float(0).toVar('total')\n const normalization = float(0).toVar('normalization')\n const pVar = p.toVar('pVar')\n Loop(FBM_OCTAVES, () => {\n const noiseValue = gnoiseVec3Tiled(pVar, tileLength.mul(lacunarity).div(2))\n .div(2)\n .add(0.5)\n .toVar('noiseValue')\n total.addAssign(noiseValue.mul(amplitude))\n normalization.addAssign(amplitude)\n amplitude.mulAssign(persistence)\n pVar.assign(pVar.mul(lacunarity))\n })\n return total.div(normalization)\n}).setLayout({\n name: 'fbmVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const fbm = fbmVec3\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float } from '../../node'\nimport { random, randomVec2, randomVec3 } from './random'\nimport { srandom3Vec3Tiled } from './srandom'\nimport { cubicVec2 } from '../math/cubic'\nimport { quintic } from '../math/quintic'\n\nexport const gnoise = Fn(([x]: [Float]): Float => {\n const i = x.floor().toVar('i')\n const f = x.fract().toVar('f')\n return random(i).mix(random(i.add(1)), float(0).smoothstep(float(1), f))\n}).setLayout({\n name: 'gnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const gnoiseVec2 = Fn(([st]: [Vec2]): Float => {\n const i = st.floor().toVar('i')\n const f = st.fract().toVar('f')\n const a = randomVec2(i).toVar('a')\n const b = randomVec2(i.add(vec2(1, 0))).toVar('b')\n const c = randomVec2(i.add(vec2(0, 1))).toVar('c')\n const d = randomVec2(i.add(vec2(1, 1))).toVar('d')\n const u = cubicVec2(f).toVar('u')\n return a.mix(b, u.x).add(c.sub(a).mul(u.y).mul(float(1).sub(u.x)).add(d.sub(b).mul(u.x).mul(u.y)))\n}).setLayout({\n name: 'gnoiseVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const gnoiseVec3 = Fn(([p]: [Vec3]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return float(-1).add(\n float(2).mul(\n randomVec3(i.add(vec3(0, 0, 0)))\n .mix(randomVec3(i.add(vec3(1, 0, 0))), u.x)\n .mix(randomVec3(i.add(vec3(0, 1, 0))).mix(randomVec3(i.add(vec3(1, 1, 0))), u.x), u.y)\n .mix(\n randomVec3(i.add(vec3(0, 0, 1)))\n .mix(randomVec3(i.add(vec3(1, 0, 1))), u.x)\n .mix(\n randomVec3(i.add(vec3(0, 1, 1))).mix(\n randomVec3(i.add(vec3(1, 1, 1))),\n u.x\n ),\n u.y\n ),\n u.z\n )\n )\n )\n}).setLayout({\n name: 'gnoiseVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const gnoiseVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return srandom3Vec3Tiled(i.add(vec3(0, 0, 0)), tileLength)\n .dot(f.sub(vec3(0, 0, 0)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 0)), tileLength).dot(f.sub(vec3(1, 0, 0))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 0)), tileLength)\n .dot(f.sub(vec3(0, 1, 0)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 0)), tileLength).dot(f.sub(vec3(1, 1, 0))),\n u.x\n ),\n u.y\n )\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 0, 1)), tileLength)\n .dot(f.sub(vec3(0, 0, 1)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 1)), tileLength).dot(f.sub(vec3(1, 0, 1))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 1)), tileLength)\n .dot(f.sub(vec3(0, 1, 1)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 1)), tileLength).dot(\n f.sub(vec3(1, 1, 1))\n ),\n u.x\n ),\n u.y\n ),\n u.z\n )\n}).setLayout({\n name: 'gnoiseVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const gnoise3 = Fn(([x]: [Vec3]): Vec3 => {\n return vec3(\n gnoiseVec3(x.add(vec3(123.456, 0.567, 0.37))),\n gnoiseVec3(x.add(vec3(0.11, 47.43, 19.17))),\n gnoiseVec3(x)\n )\n}).setLayout({\n name: 'gnoise3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, fract, sin } from '../../node'\n\nconst RANDOM_SCALE = vec4(443.897, 441.423, 0.0973, 0.1099)\n\nexport const random = Fn(([x]: [Float]): Float => {\n return x.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'random',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const randomVec2 = Fn(([st]: [Vec2]): Float => {\n return st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const randomVec3 = Fn(([pos]: [Vec3]): Float => {\n return pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()\n}).setLayout({\n name: 'randomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const randomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return dot_product.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const random2Float = Fn(([p]: [Float]): Vec2 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Float',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const p3 = p.xyx.mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random2Vec3 = Fn(([p3]: [Vec3]): Vec2 => {\n p3.assign(p3.mul(RANDOM_SCALE.xyz).fract())\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p3', type: 'vec3' }],\n})\n\nexport const random3Float = Fn(([p]: [Float]): Vec3 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Float',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random3Vec2 = Fn(([p]: [Vec2]): Vec3 => {\n const p3 = vec3(p.xyx).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yxz.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Vec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(p.mul(RANDOM_SCALE.xyz).fract())\n p.addAssign(p.dot(p.yxz.add(19.19)))\n return p.xxy.add(p.yzz).mul(p.zyx).fract()\n}).setLayout({\n name: 'random3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Float = Fn(([p]: [Float]): Vec4 => {\n const p4 = float(p).mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Float',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random4Vec2 = Fn(([p]: [Vec2]): Vec4 => {\n const p4 = p.xyxy.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec2',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random4Vec3 = Fn(([p]: [Vec3]): Vec4 => {\n const p4 = p.xyzx.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec3',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Vec4 = Fn(([p4]: [Vec4]): Vec4 => {\n p4.assign(p4.mul(RANDOM_SCALE).fract())\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec4',\n type: 'vec4',\n inputs: [{ name: 'p4', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, sin } from '../../node'\n\nexport const srandom = Fn(([x]: [Float]): Float => {\n return float(-1).add(float(2).mul(x.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandom',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const srandomVec2 = Fn(([st]: [Vec2]): Float => {\n return float(-1).add(float(2).mul(st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandomVec3 = Fn(([pos]: [Vec3]): Float => {\n return float(-1).add(float(2).mul(pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const srandomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return float(-1).add(float(2).mul(dot_product.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const srandom2Vec2 = Fn(([st]: [Vec2]): Vec2 => {\n const k = vec2(0.3183099, 0.3678794).toVar('k')\n st.assign(st.mul(k).add(k.yx))\n return vec2(-1).add(\n vec2(2).mul(\n float(16)\n .mul(k)\n .mul(st.x.mul(st.y).mul(st.x.add(st.y)).fract())\n .fract()\n )\n )\n}).setLayout({\n name: 'srandom2Vec2',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandom3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(\n vec3(\n p.dot(vec3(127.1, 311.7, 74.7)),\n p.dot(vec3(269.5, 183.3, 246.1)),\n p.dot(vec3(113.5, 271.9, 124.6))\n )\n )\n return float(-1).add(float(2).mul(p.sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandom3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const srandom2Vec2Tiled = Fn(([p, tileLength]: [Vec2, Float]): Vec2 => {\n p.assign(p.mod(vec2(tileLength)))\n return srandom2Vec2(p)\n}).setLayout({\n name: 'srandom2Vec2Tiled',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const srandom3Vec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Vec3 => {\n p.assign(p.mod(vec3(tileLength)))\n return srandom3Vec3(p)\n}).setLayout({\n name: 'srandom3Vec3Tiled',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\n\nexport const cubic = Fn(([v]: [Float]): Float => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicFloat',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const cubicVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const cubicVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const cubicVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const cubicFloatSlopes = Fn(([v, slope0, slope1]: [Float, Float, Float]): Float => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicFloatSlopes',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec2Slopes = Fn(([v, slope0, slope1]: [Vec2, Float, Float]): Vec2 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec2Slopes',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec3Slopes = Fn(([v, slope0, slope1]: [Vec3, Float, Float]): Vec3 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec3Slopes',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec4Slopes = Fn(([v, slope0, slope1]: [Vec4, Float, Float]): Vec4 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec4Slopes',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec3, dot, sqrt, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const gerstnerWave = Fn(([_uv, _dir, _steepness, _wavelength, _time]: [Vec2, Vec2, Float, Float, Float]) => {\n const k = PI.mul(2).div(_wavelength).toVar('k')\n const c = float(9.8).div(k).sqrt().toVar('c')\n const d = _dir.normalize().toVar('d')\n const f = k.mul(_uv.dot(d).sub(c.mul(_time))).toVar('f')\n const a = _steepness.div(k).toVar('a')\n return vec3(d.x.mul(a.mul(f.cos())), a.mul(f.sin()), d.y.mul(a.mul(f.cos())))\n}).setLayout({\n name: 'gerstnerWave',\n type: 'vec3',\n inputs: [\n { name: '_uv', type: 'vec2' },\n { name: '_dir', type: 'vec2' },\n { name: '_steepness', type: 'float' },\n { name: '_wavelength', type: 'float' },\n { name: '_time', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec2, vec3, vec4 } from '../../node'\nimport { srandom2Vec2, srandom3Vec3 } from './srandom'\n\nexport const noised = Fn(([p]: [Vec2]) => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = f\n .mul(f)\n .mul(f)\n .mul(f.mul(f.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = f\n .mul(f)\n .mul(f.mul(f.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom2Vec2(i.add(vec2(0, 0))).toVar('ga')\n const gb = srandom2Vec2(i.add(vec2(1, 0))).toVar('gb')\n const gc = srandom2Vec2(i.add(vec2(0, 1))).toVar('gc')\n const gd = srandom2Vec2(i.add(vec2(1, 1))).toVar('gd')\n\n const va = f.sub(vec2(0, 0)).dot(ga).toVar('va')\n const vb = f.sub(vec2(1, 0)).dot(gb).toVar('vb')\n const vc = f.sub(vec2(0, 1)).dot(gc).toVar('vc')\n const vd = f.sub(vec2(1, 1)).dot(gd).toVar('vd')\n\n return vec3(\n va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd))),\n ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(du.mul(u.yx.mul(va.sub(vb).sub(vc).add(vd)).add(vec2(vb, vc)).sub(va)))\n )\n}).setLayout({\n name: 'noised',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const noisedVec3 = Fn(([pos]: [Vec3]) => {\n const p = pos.floor().toVar('p')\n const w = pos.fract().toVar('w')\n const u = w\n .mul(w)\n .mul(w)\n .mul(w.mul(w.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = w\n .mul(w)\n .mul(w.mul(w.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom3Vec3(p.add(vec3(0, 0, 0))).toVar('ga')\n const gb = srandom3Vec3(p.add(vec3(1, 0, 0))).toVar('gb')\n const gc = srandom3Vec3(p.add(vec3(0, 1, 0))).toVar('gc')\n const gd = srandom3Vec3(p.add(vec3(1, 1, 0))).toVar('gd')\n const ge = srandom3Vec3(p.add(vec3(0, 0, 1))).toVar('ge')\n const gf = srandom3Vec3(p.add(vec3(1, 0, 1))).toVar('gf')\n const gg = srandom3Vec3(p.add(vec3(0, 1, 1))).toVar('gg')\n const gh = srandom3Vec3(p.add(vec3(1, 1, 1))).toVar('gh')\n\n const va = w.sub(vec3(0, 0, 0)).dot(ga).toVar('va')\n const vb = w.sub(vec3(1, 0, 0)).dot(gb).toVar('vb')\n const vc = w.sub(vec3(0, 1, 0)).dot(gc).toVar('vc')\n const vd = w.sub(vec3(1, 1, 0)).dot(gd).toVar('vd')\n const ve = w.sub(vec3(0, 0, 1)).dot(ge).toVar('ve')\n const vf = w.sub(vec3(1, 0, 1)).dot(gf).toVar('vf')\n const vg = w.sub(vec3(0, 1, 1)).dot(gg).toVar('vg')\n const vh = w.sub(vec3(1, 1, 1)).dot(gh).toVar('vh')\n\n const noiseValue = va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.z.mul(ve.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd)))\n .add(u.y.mul(u.z).mul(va.sub(vc).sub(ve).add(vg)))\n .add(u.z.mul(u.x).mul(va.sub(vb).sub(ve).add(vf)))\n .add(va.negate().add(vb).add(vc).sub(vd).add(ve).sub(vf).sub(vg).add(vh).mul(u.x).mul(u.y).mul(u.z))\n\n const gradientValue = ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.z.mul(ge.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(u.y.mul(u.z).mul(ga.sub(gc).sub(ge).add(gg)))\n .add(u.z.mul(u.x).mul(ga.sub(gb).sub(ge).add(gf)))\n .add(ga.negate().add(gb).add(gc).sub(gd).add(ge).sub(gf).sub(gg).add(gh).mul(u.x).mul(u.y).mul(u.z))\n .add(\n du.mul(\n vec3(vb, vc, ve)\n .sub(va)\n .add(\n u.yzx.mul(\n vec3(\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg),\n va.sub(vb).sub(ve).add(vf)\n )\n )\n )\n .add(\n u.zxy.mul(\n vec3(\n va.sub(vb).sub(ve).add(vf),\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg)\n )\n )\n )\n .add(\n u.yzx\n .mul(u.zxy)\n .mul(\n va\n .negate()\n .add(vb)\n .add(vc)\n .sub(vd)\n .add(ve)\n .sub(vf)\n .sub(vg)\n .add(vh)\n )\n )\n )\n )\n\n return vec4(noiseValue, gradientValue)\n}).setLayout({\n name: 'noisedVec3',\n type: 'vec4',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec4, mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const pnoise = Fn(([P, rep]: [Vec2, Vec2]) => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(Pi.mod(rep.xyxy))\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y).toVar('n_xy')\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'pnoise',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec2' },\n { name: 'rep', type: 'vec2' },\n ],\n})\n\nexport const pnoiseVec3 = Fn(([P, rep]: [Vec3, Vec3]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x).toVar('n_xyz')\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec3',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec3' },\n { name: 'rep', type: 'vec3' },\n ],\n})\n\nexport const pnoiseVec4 = Fn(([P, rep]: [Vec4, Vec4]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(1).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(vec4(0).step(gx00).sub(0.5)))\n gy00.subAssign(sw00.mul(vec4(0).step(gy00).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(vec4(0).step(gx01).sub(0.5)))\n gy01.subAssign(sw01.mul(vec4(0).step(gy01).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(vec4(0).step(gx10).sub(0.5)))\n gy10.subAssign(sw10.mul(vec4(0).step(gy10).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(vec4(0).step(gx11).sub(0.5)))\n gy11.subAssign(sw11.mul(vec4(0).step(gy11).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x).toVar('n_xyzw')\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec4',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec4' },\n { name: 'rep', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, vec4, mat3, step, mix, If, float, any } from '../../node'\nimport { mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\n\n// Basic psrdnoise 2D implementation\nexport const psrdnoise2D = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Vec2 => {\n const uv = vec2(x.x.add(x.y.div(2)), x.y).toVar('uv')\n const i0 = uv.floor().toVar('i0')\n const f0 = uv.fract().toVar('f0')\n const cmp = f0.x.step(f0.y).toVar('cmp')\n const o1 = vec2(cmp, cmp.oneMinus()).toVar('o1')\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(vec2(1, 1)).toVar('i2')\n\n const v0 = vec2(i0.x.sub(i0.y.div(2)), i0.y).toVar('v0')\n const v1 = vec2(v0.x.add(o1.x).sub(o1.y.div(2)), v0.y.add(o1.y)).toVar('v1')\n const v2 = vec2(v0.x.add(0.5), v0.y.add(1)).toVar('v2')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n\n let iu = vec3(i0.x, i1.x, i2.x).toVar('iu')\n let iv = vec3(i0.y, i1.y, i2.y).toVar('iv')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)), () => {\n const xw = vec3(v0.x, v1.x, v2.x).toVar('xw')\n const yw = vec3(v0.y, v1.y, v2.y).toVar('yw')\n\n If(period.x.greaterThan(0), () => {\n xw.assign(xw.mod(period.x))\n })\n\n If(period.y.greaterThan(0), () => {\n yw.assign(yw.mod(period.y))\n })\n\n iu.assign(xw.add(yw.div(2)).add(0.5).floor())\n iv.assign(yw.add(0.5).floor())\n })\n\n let hash = mod289Vec3(iu).toVar('hash')\n hash.assign(mod289Vec3(hash.mul(51).add(2).mul(hash).add(iv)))\n hash.assign(mod289Vec3(hash.mul(34).add(10).mul(hash)))\n\n const psi = hash.mul(0.07482).add(alpha).toVar('psi')\n const gx = psi.cos().toVar('gx')\n const gy = psi.sin().toVar('gy')\n\n const g0 = vec2(gx.x, gy.x).toVar('g0')\n const g1 = vec2(gx.y, gy.y).toVar('g1')\n const g2 = vec2(gx.z, gy.z).toVar('g2')\n\n const w = vec3(0.8)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w4 = w2.mul(w2).toVar('w4')\n const gdotx = vec3(g0.dot(x0), g1.dot(x1), g2.dot(x2)).toVar('gdotx')\n const n = w4.dot(gdotx).toVar('n')\n\n const w3 = w2.mul(w).toVar('w3')\n const dw = w3.mul(-8).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w4.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w4.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w4.z).add(x2.mul(dw.z)).toVar('dn2')\n const gradient = dn0.add(dn1).add(dn2).mul(10.9).toVar('gradient')\n\n return vec2(n.mul(10.9), gradient.length())\n}).setLayout({\n name: 'psrdnoise2D',\n type: 'vec2',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Basic psrdnoise 3D implementation\nexport const psrdnoise3D = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Vec3 => {\n const M = mat3(0, 1, 1, 1, 0, 1, 1, 1, 0).toVar('M')\n const Mi = mat3(-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5).toVar('Mi')\n\n const uvw = M.mul(x).toVar('uvw')\n const i0 = uvw.floor().toVar('i0')\n const f0 = uvw.fract().toVar('f0')\n\n const g_ = f0.yzz.step(f0.xyx).toVar('g_')\n const l_ = g_.oneMinus().toVar('l_')\n const g = vec3(l_.z, g_.xy).toVar('g')\n const l = vec3(l_.xy, g_.z).toVar('l')\n\n const o1 = g.min(l).toVar('o1')\n const o2 = g.max(l).toVar('o2')\n\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(o2).toVar('i2')\n const i3 = i0.add(vec3(1)).toVar('i3')\n\n let v0 = Mi.mul(i0).toVar('v0')\n let v1 = Mi.mul(i1).toVar('v1')\n let v2 = Mi.mul(i2).toVar('v2')\n let v3 = Mi.mul(i3).toVar('v3')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n const x3 = x.sub(v3).toVar('x3')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)).or(period.z.greaterThan(0)), () => {\n const vx = vec4(v0.x, v1.x, v2.x, v3.x).toVar('vx')\n const vy = vec4(v0.y, v1.y, v2.y, v3.y).toVar('vy')\n const vz = vec4(v0.z, v1.z, v2.z, v3.z).toVar('vz')\n\n If(period.x.greaterThan(0), () => vx.assign(vx.mod(period.x)))\n If(period.y.greaterThan(0), () => vy.assign(vy.mod(period.y)))\n If(period.z.greaterThan(0), () => vz.assign(vz.mod(period.z)))\n\n i0.assign(M.mul(vec3(vx.x, vy.x, vz.x)))\n i1.assign(M.mul(vec3(vx.y, vy.y, vz.y)))\n i2.assign(M.mul(vec3(vx.z, vy.z, vz.z)))\n i3.assign(M.mul(vec3(vx.w, vy.w, vz.w)))\n\n i0.assign(i0.add(0.5).floor())\n i1.assign(i1.add(0.5).floor())\n i2.assign(i2.add(0.5).floor())\n i3.assign(i3.add(0.5).floor())\n })\n\n const hash = permuteVec4(\n permuteVec4(permuteVec4(vec4(i0.z, i1.z, i2.z, i3.z)).add(vec4(i0.y, i1.y, i2.y, i3.y))).add(\n vec4(i0.x, i1.x, i2.x, i3.x)\n )\n ).toVar('hash')\n\n const theta = hash.mul(3.883222077).toVar('theta')\n const sz = hash.mul(-0.006920415).add(0.996539792).toVar('sz')\n const psi = hash.mul(0.108705628).toVar('psi')\n\n const Ct = theta.cos().toVar('Ct')\n const St = theta.sin().toVar('St')\n const sz_prime = sz.mul(sz).oneMinus().sqrt().toVar('sz_prime')\n\n const gx = Ct.mul(sz_prime).toVar('gx')\n const gy = St.mul(sz_prime).toVar('gy')\n const gz = sz.toVar('gz')\n\n If(alpha.notEqual(0), () => {\n const Sp = psi.sin().toVar('Sp')\n const Cp = psi.cos().toVar('Cp')\n const px = Ct.mul(sz_prime).toVar('px')\n const py = St.mul(sz_prime).toVar('py')\n const pz = sz.toVar('pz')\n\n const Ctp = St.mul(Sp).sub(Ct.mul(Cp)).toVar('Ctp')\n const qx = Ctp.mul(St).mix(Sp, sz).toVar('qx')\n const qy = Ctp.negate().mul(Ct).mix(Cp, sz).toVar('qy')\n const qz = py.mul(Cp).add(px.mul(Sp)).negate().toVar('qz')\n\n const Sa = vec4(alpha.sin()).toVar('Sa')\n const Ca = vec4(alpha.cos()).toVar('Ca')\n\n gx.assign(Ca.mul(px).add(Sa.mul(qx)))\n gy.assign(Ca.mul(py).add(Sa.mul(qy)))\n gz.assign(Ca.mul(pz).add(Sa.mul(qz)))\n })\n\n const g0 = vec3(gx.x, gy.x, gz.x).toVar('g0')\n const g1 = vec3(gx.y, gy.y, gz.y).toVar('g1')\n const g2 = vec3(gx.z, gy.z, gz.z).toVar('g2')\n const g3 = vec3(gx.w, gy.w, gz.w).toVar('g3')\n\n let w = vec4(0.5)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w3 = w2.mul(w).toVar('w3')\n const gdotx = vec4(g0.dot(x0), g1.dot(x1), g2.dot(x2), g3.dot(x3)).toVar('gdotx')\n const n = w3.dot(gdotx).toVar('n')\n\n const dw = w2.mul(-6).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w3.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w3.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w3.z).add(x2.mul(dw.z)).toVar('dn2')\n const dn3 = g3.mul(w3.w).add(x3.mul(dw.w)).toVar('dn3')\n const gradient = dn0.add(dn1).add(dn2).add(dn3).mul(39.5).toVar('gradient')\n\n return vec3(n.mul(39.5), gradient.xy)\n}).setLayout({\n name: 'psrdnoise3D',\n type: 'vec3',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Simplified overloads\nexport const psrdnoise = Fn(([x]: [Vec2]): Float => {\n return psrdnoise2D(x, vec2(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\n// Two-parameter overload for compatibility\nexport const psrdnoise2 = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise2',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoisePeriod = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoisePeriod',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoiseAlpha = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Float => {\n return psrdnoise2D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoiseAlpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\nexport const psrdnoise3 = Fn(([x]: [Vec3]): Float => {\n return psrdnoise3D(x, vec3(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise3',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const psrdnoise3Period = Fn(([x, period]: [Vec3, Vec3]): Float => {\n return psrdnoise3D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise3Period',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n ],\n})\n\nexport const psrdnoise3Alpha = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Float => {\n return psrdnoise3D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoise3Alpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float, If } from '../../node'\nimport { random2Vec2 } from './random'\nimport { TAU } from '../math/const'\n\nexport const voronoi = Fn(([uv, time]: [Vec2, Float]): Vec3 => {\n const i_uv = uv.floor().toVar('i_uv')\n const f_uv = uv.fract().toVar('f_uv')\n const rta = vec3(0, 0, 10).toVar('rta')\n\n // Unroll nested loop: for j=-1 to 1, for i=-1 to 1\n // j=-1, i=-1\n const neighbor_m1m1 = vec2(-1, -1).toVar('neighbor_m1m1')\n const point_m1m1 = random2Vec2(i_uv.add(neighbor_m1m1)).toVar('point_m1m1')\n point_m1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_m1m1.mul(TAU)).sin())))\n const diff_m1m1 = neighbor_m1m1.add(point_m1m1).sub(f_uv).toVar('diff_m1m1')\n const dist_m1m1 = diff_m1m1.length().toVar('dist_m1m1')\n If(dist_m1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_m1m1)\n rta.z.assign(dist_m1m1)\n })\n\n // j=-1, i=0\n const neighbor_0m1 = vec2(0, -1).toVar('neighbor_0m1')\n const point_0m1 = random2Vec2(i_uv.add(neighbor_0m1)).toVar('point_0m1')\n point_0m1.assign(float(0.5).add(float(0.5).mul(time.add(point_0m1.mul(TAU)).sin())))\n const diff_0m1 = neighbor_0m1.add(point_0m1).sub(f_uv).toVar('diff_0m1')\n const dist_0m1 = diff_0m1.length().toVar('dist_0m1')\n If(dist_0m1.lessThan(rta.z), () => {\n rta.xy.assign(point_0m1)\n rta.z.assign(dist_0m1)\n })\n\n // j=-1, i=1\n const neighbor_1m1 = vec2(1, -1).toVar('neighbor_1m1')\n const point_1m1 = random2Vec2(i_uv.add(neighbor_1m1)).toVar('point_1m1')\n point_1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_1m1.mul(TAU)).sin())))\n const diff_1m1 = neighbor_1m1.add(point_1m1).sub(f_uv).toVar('diff_1m1')\n const dist_1m1 = diff_1m1.length().toVar('dist_1m1')\n If(dist_1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_1m1)\n rta.z.assign(dist_1m1)\n })\n\n // j=0, i=-1\n const neighbor_m10 = vec2(-1, 0).toVar('neighbor_m10')\n const point_m10 = random2Vec2(i_uv.add(neighbor_m10)).toVar('point_m10')\n point_m10.assign(float(0.5).add(float(0.5).mul(time.add(point_m10.mul(TAU)).sin())))\n const diff_m10 = neighbor_m10.add(point_m10).sub(f_uv).toVar('diff_m10')\n const dist_m10 = diff_m10.length().toVar('dist_m10')\n If(dist_m10.lessThan(rta.z), () => {\n rta.xy.assign(point_m10)\n rta.z.assign(dist_m10)\n })\n\n // j=0, i=0\n const neighbor_00 = vec2(0, 0).toVar('neighbor_00')\n const point_00 = random2Vec2(i_uv.add(neighbor_00)).toVar('point_00')\n point_00.assign(float(0.5).add(float(0.5).mul(time.add(point_00.mul(TAU)).sin())))\n const diff_00 = neighbor_00.add(point_00).sub(f_uv).toVar('diff_00')\n const dist_00 = diff_00.length().toVar('dist_00')\n If(dist_00.lessThan(rta.z), () => {\n rta.xy.assign(point_00)\n rta.z.assign(dist_00)\n })\n\n // j=0, i=1\n const neighbor_10 = vec2(1, 0).toVar('neighbor_10')\n const point_10 = random2Vec2(i_uv.add(neighbor_10)).toVar('point_10')\n point_10.assign(float(0.5).add(float(0.5).mul(time.add(point_10.mul(TAU)).sin())))\n const diff_10 = neighbor_10.add(point_10).sub(f_uv).toVar('diff_10')\n const dist_10 = diff_10.length().toVar('dist_10')\n If(dist_10.lessThan(rta.z), () => {\n rta.xy.assign(point_10)\n rta.z.assign(dist_10)\n })\n\n // j=1, i=-1\n const neighbor_m11 = vec2(-1, 1).toVar('neighbor_m11')\n const point_m11 = random2Vec2(i_uv.add(neighbor_m11)).toVar('point_m11')\n point_m11.assign(float(0.5).add(float(0.5).mul(time.add(point_m11.mul(TAU)).sin())))\n const diff_m11 = neighbor_m11.add(point_m11).sub(f_uv).toVar('diff_m11')\n const dist_m11 = diff_m11.length().toVar('dist_m11')\n If(dist_m11.lessThan(rta.z), () => {\n rta.xy.assign(point_m11)\n rta.z.assign(dist_m11)\n })\n\n // j=1, i=0\n const neighbor_01 = vec2(0, 1).toVar('neighbor_01')\n const point_01 = random2Vec2(i_uv.add(neighbor_01)).toVar('point_01')\n point_01.assign(float(0.5).add(float(0.5).mul(time.add(point_01.mul(TAU)).sin())))\n const diff_01 = neighbor_01.add(point_01).sub(f_uv).toVar('diff_01')\n const dist_01 = diff_01.length().toVar('dist_01')\n If(dist_01.lessThan(rta.z), () => {\n rta.xy.assign(point_01)\n rta.z.assign(dist_01)\n })\n\n // j=1, i=1\n const neighbor_11 = vec2(1, 1).toVar('neighbor_11')\n const point_11 = random2Vec2(i_uv.add(neighbor_11)).toVar('point_11')\n point_11.assign(float(0.5).add(float(0.5).mul(time.add(point_11.mul(TAU)).sin())))\n const diff_11 = neighbor_11.add(point_11).sub(f_uv).toVar('diff_11')\n const dist_11 = diff_11.length().toVar('dist_11')\n If(dist_11.lessThan(rta.z), () => {\n rta.xy.assign(point_11)\n rta.z.assign(dist_11)\n })\n\n return rta\n}).setLayout({\n name: 'voronoi',\n type: 'vec3',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'time', type: 'float' },\n ],\n})\n\nexport const voronoiVec2 = Fn(([p]: [Vec2]): Vec3 => {\n return voronoi(p, float(0))\n}).setLayout({\n name: 'voronoiVec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const voronoiVec3 = Fn(([p]: [Vec3]): Vec3 => {\n return voronoi(p.xy, p.z)\n}).setLayout({\n name: 'voronoiVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, int, smoothstep, float, Loop } from '../../node'\nimport { random3Vec2, random3Vec3 } from './random'\n\nexport const voronoise = Fn(([p, u, v]: [Vec2, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec2(xOffset, yOffset).toVar('g')\n const o = random3Vec2(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o.xy).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoise',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n\nexport const voronoiseVec3 = Fn(([p, u, v]: [Vec3, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: zLoop }) => {\n const zOffset = zLoop.sub(int(2)).toFloat().toVar('zOffset')\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec3(xOffset, yOffset, zOffset).toVar('g')\n const o = random3Vec3(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o).add(0.5).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoiseVec3',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, mat2 } from '../../node'\nimport { randomVec2 } from './random'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const wavelet = Fn(([p, phase, k]: [Vec2, Float, Float]): Float => {\n const d = float(0).toVar('d')\n const s = float(1).toVar('s')\n const m = float(0).toVar('m')\n\n Loop(int(4), ({ i }) => {\n const q = p.mul(s).toVar('q')\n const a = randomVec2(q.floor()).mul(1000).toVar('a')\n\n q.assign(q.fract().sub(0.5).mul(rotate2d(a)))\n\n d.addAssign(\n q.x\n .mul(10)\n .add(phase)\n .sin()\n .mul(float(0.25).smoothstep(0, q.dot(q)))\n .div(s)\n )\n\n p.assign(p.mul(mat2(0.54, -0.84, 0.84, 0.54)).add(i.toFloat()))\n m.addAssign(float(1).div(s))\n s.mulAssign(k)\n })\n\n return d.div(m)\n}).setLayout({\n name: 'wavelet',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3K = Fn(([p, k]: [Vec3, Float]): Float => {\n return wavelet(p.xy, p.z, k)\n}).setLayout({\n name: 'waveletVec3K',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3 = Fn(([p]: [Vec3]): Float => {\n return waveletVec3K(p, float(1.24))\n}).setLayout({\n name: 'waveletVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const waveletVec2Phase = Fn(([p, phase]: [Vec2, Float]): Float => {\n return wavelet(p, phase, float(1.24))\n}).setLayout({\n name: 'waveletVec2Phase',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const waveletVec2 = Fn(([p]: [Vec2]): Float => {\n return wavelet(p, float(0), float(1.24))\n}).setLayout({\n name: 'waveletVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n","import { Fn, Float, Mat2, mat2 } from '../../node'\n\nexport const rotate2d = Fn(([r]: [Float]): Mat2 => {\n const c = r.cos()\n const s = r.sin()\n return mat2(c, s, s.negate(), c)\n}).setLayout({\n name: 'rotate2d',\n type: 'mat2',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, vec2, vec3, If } from '../../node'\nimport { random2Vec2, random3Vec3 } from './random'\nimport { distEuclidean } from '../math/dist'\n\nexport const worley2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec2(0).toVar('off1')\n const pos1 = vec2(0).toVar('pos1')\n const off2 = vec2(0).toVar('off2')\n const pos2 = vec2(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n const g = vec2(i.toFloat().sub(1), j.toFloat().sub(1)).toVar('g')\n const o = random2Vec2(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worleyVec2 = Fn(([p]: [Vec2]): Float => {\n return float(1).sub(worley2Vec2(p).x)\n}).setLayout({\n name: 'worleyVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worley2Vec3 = Fn(([p]: [Vec3]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec3(0).toVar('off1')\n const pos1 = vec3(0).toVar('pos1')\n const off2 = vec3(0).toVar('off2')\n const pos2 = vec3(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n Loop(int(3), ({ i: k }) => {\n const g = vec3(i.toFloat().sub(1), j.toFloat().sub(1), k.toFloat().sub(1)).toVar('g')\n const o = random3Vec3(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const worleyVec3 = Fn(([p]: [Vec3]): Float => {\n return float(1).sub(worley2Vec3(p).x)\n}).setLayout({\n name: 'worleyVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, abs, distance, max, pow } from '../../node'\n\nconst DIST_MINKOWSKI_P = 2.0\n\nexport const distEuclidean = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distance(a, b)\n}).setLayout({\n name: 'distEuclidean',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n\nexport const distManhattan = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return abs(a.x.sub(b.x)).add(abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distManhattan3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distManhattan4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n .add(abs(a.w.sub(b.w)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distChebychev = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return max(abs(a.x.sub(b.x)), abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distChebychev3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), abs(a.z.sub(b.z))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distChebychev4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), max(abs(a.z.sub(b.z)), abs(a.w.sub(b.w)))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distMinkowski = Fn(([a, b]: [Vec2, Vec2]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(pow(abs(a.x.sub(b.x)), p).add(pow(abs(a.y.sub(b.y)), p)), 1 / p)\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distMinkowski3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distMinkowski4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p))\n .add(pow(abs(a.w.sub(b.w)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const dist = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distEuclidean(a, b)\n}).setLayout({\n name: 'dist',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, X, dFdx, dFdy, fract, float, select } from '../../node'\nimport { mapRange } from './map'\n\nexport const aafloor = Fn(([x]: [X]): X => {\n const afwidth = dFdx(x).pow(2).add(dFdy(x).pow(2)).sqrt().mul(2).toVar()\n const fx = fract(x).toVar()\n const idx = afwidth.oneMinus().toVar()\n return select(x.sub(fx), mapRange(fx, idx, float(1), x.sub(fx), x), fx.lessThan(idx))\n}).setLayout({\n name: 'aafloor',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const map = Fn(([v, iMin, iMax]: [X, X, X]): X => {\n return v.sub(iMin).div(iMax.sub(iMin))\n}).setLayout({\n name: 'map',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n ],\n})\n\nexport const mapRange = Fn(([v, iMin, iMax, oMin, oMax]: [X, X, X, X, X]): X => {\n return oMin.add(oMax.sub(oMin).mul(v.sub(iMin).div(iMax.sub(iMin))))\n}).setLayout({\n name: 'mapRange',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n { name: 'oMin', type: 'auto' },\n { name: 'oMax', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec2, X, dFdx, dFdy, fract, length, mix, smoothstep, vec2, select, float } from '../../node'\n\nconst nyquist = Fn(([x, width]: [Float, Float]): Float => {\n const cutoffStart = float(0.25).toVar('cutoffStart') // NYQUIST_FILTER_CENTER - NYQUIST_FILTER_WIDTH\n const cutoffEnd = float(0.75).toVar('cutoffEnd') // NYQUIST_FILTER_CENTER + NYQUIST_FILTER_WIDTH\n const f = smoothstep(cutoffEnd, cutoffStart, width).toVar('f')\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'width', type: 'float' },\n ],\n})\n\nexport const aafract = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n .mul(2)\n .toVar('afwidth')\n const fx = fract(x).toVar('fx')\n const idx = afwidth.oneMinus().toVar('idx')\n const v = select(fx.div(idx as any), fx.oneMinus().div(afwidth as any), fx.lessThan(idx as any)).toVar('v')\n return nyquist(v as any, afwidth as any)\n}).setLayout({\n name: 'aafract',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n\n// Vector overloads\nexport const aafractVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(aafract(v.x), aafract(v.y))\n}).setLayout({\n name: 'aafractVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, X, dFdx, dFdy, length, vec2, floor, abs } from '../../node'\nimport { nyquist } from './nyquist'\n\nexport const aamirror = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n const v = abs(x.sub(floor(x.add(0.5)))).mul(2)\n return nyquist(v, afwidth)\n}).setLayout({\n name: 'aamirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, X, mix, smoothstep, float } from '../../node'\n\nexport const nyquist = Fn(([x, width]: [X, Float]): X => {\n const cutoffStart = 0.25\n const cutoffEnd = 0.75\n const f = smoothstep(cutoffEnd, cutoffStart, width)\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'width', type: 'float' },\n ],\n})\n","import { Fn, X, select } from '../../node'\n\nexport const absi = Fn(([x]: [X]): X => {\n return select(x.mul(-1), x, x.lessThan(0))\n}).setLayout({\n name: 'absi',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, step } from '../../node'\n\nexport const adaptiveThreshold = Fn(([v, blur_v, b]: [Float, Float, Float]): Float => {\n return step(blur_v.add(b), v)\n}).setLayout({\n name: 'adaptiveThreshold',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n\nexport const adaptiveThresholdSimple = Fn(([v, blur_v]: [Float, Float]): Float => {\n return step(blur_v.sub(0.05), v)\n}).setLayout({\n name: 'adaptiveThresholdSimple',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\nexport const bump = Fn(([x, k]: [X, X]): X => {\n return x.mul(x).sub(1).negate().sub(k).saturate()\n}).setLayout({\n name: 'bump',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n\nexport const bumpSimple = Fn(([x]: [X]): X => {\n return x.mul(x).sub(1).negate().max(0)\n}).setLayout({\n name: 'bumpSimple',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { X, Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\nimport { cubic, cubicVec2, cubicVec3, cubicVec4 } from './cubic'\n\nexport const cubicMix = Fn(([a, b, t]: [Float, Float, Float]): X => {\n return a.add(b.sub(a).mul(cubic(t)))\n}).setLayout({\n name: 'cubicMix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec2 = Fn(([a, b, t]: [Vec2, Vec2, Vec2]): X => {\n return a.add(b.sub(a).mul(cubicVec2(t)))\n}).setLayout({\n name: 'cubicMixVec2',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\nexport const cubicMixVec3 = Fn(([a, b, t]: [Vec3, Vec3, Vec3]): X => {\n return a.add(b.sub(a).mul(cubicVec3(t)))\n}).setLayout({\n name: 'cubicMixVec3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec4 = Fn(([a, b, t]: [Vec4, Vec4, Vec4]): X => {\n return a.add(b.sub(a).mul(cubicVec4(t)))\n}).setLayout({\n name: 'cubicMixVec4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n","import { X, Fn } from '../../node'\n\nexport const decimate = Fn(([v, p]: [X, X]): X => {\n return v.mul(p).floor().div(p)\n}).setLayout({\n name: 'decimate',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'p', type: 'auto' },\n ],\n})","import { Fn, Float, cos, fwidth, smoothstep } from '../../node'\nimport { TWO_PI } from './const'\n\nexport const fcos = Fn(([x]: [Float]): Float => {\n const w = fwidth(x)\n return cos(x).mul(smoothstep(TWO_PI, 0, w))\n}).setLayout({\n name: 'fcos',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const frac = Fn(([x]: [X]): X => {\n return x.fract()\n}).setLayout({\n name: 'frac',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, float, select } from '../../node'\n\nexport const gain = Fn(([x, k]: [X, X]): X => {\n const conditionValue = select(x.oneMinus(), x, x.lessThan(0.5))\n const a = float(0.5).mul(float(2).mul(conditionValue).pow(k)).toVar('a')\n return select(a.oneMinus(), a, x.lessThan(0.5))\n}).setLayout({\n name: 'gain',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n","import { Fn, X, dot } from '../../node'\n\nexport const gaussian = Fn(([d, s]: [X<'vec2' | 'vec3' | 'vec4' | 'ivec2' | 'ivec3' | 'ivec4'>, X]): X => {\n const dotProduct = dot(d, d)\n const variance = s.mul(s).mul(2)\n return dotProduct.negate().div(variance).exp()\n}).setLayout({\n name: 'gaussian',\n type: 'float',\n inputs: [\n { name: 'd', type: 'auto' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { PI } from './const'\nimport { Fn, Int, Vec2, Vec3, float, vec2, vec3, uint } from '../../node'\n\nexport const hammersley = Fn(([index, numSamples]: [Int, Int]): Vec2 => {\n const tof = float(0.5).div(float(2147483648)).toVar('tof')\n const bits = uint(index).toVar('bits')\n\n bits.assign(bits.shiftLeft(uint(16)).bitOr(bits.shiftRight(uint(16))))\n bits.assign(\n bits\n .bitAnd(uint(0x55555555))\n .shiftLeft(uint(1))\n .bitOr(bits.bitAnd(uint(0xaaaaaaaa)).shiftRight(uint(1)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x33333333))\n .shiftLeft(uint(2))\n .bitOr(bits.bitAnd(uint(0xcccccccc)).shiftRight(uint(2)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x0f0f0f0f))\n .shiftLeft(uint(4))\n .bitOr(bits.bitAnd(uint(0xf0f0f0f0)).shiftRight(uint(4)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x00ff00ff))\n .shiftLeft(uint(8))\n .bitOr(bits.bitAnd(uint(0xff00ff00)).shiftRight(uint(8)))\n )\n\n return vec2(float(index).div(float(numSamples)), float(bits).mul(tof))\n}).setLayout({\n name: 'hammersley',\n type: 'vec2',\n inputs: [\n { name: 'index', type: 'int' },\n { name: 'numSamples', type: 'int' },\n ],\n})\n\nexport const hemisphereCosSample = Fn(([u]: [Vec2]): Vec3 => {\n const phi = float(2).mul(PI).mul(u.x).toVar('phi')\n const cosTheta2 = float(1).sub(u.y).toVar('cosTheta2')\n const cosTheta = cosTheta2.sqrt().toVar('cosTheta')\n const sinTheta = float(1).sub(cosTheta2).sqrt().toVar('sinTheta')\n return vec3(phi.cos().mul(sinTheta), phi.sin().mul(sinTheta), cosTheta)\n}).setLayout({\n name: 'hemisphereCosSample',\n type: 'vec3',\n inputs: [{ name: 'u', type: 'vec2' }],\n})\n","import { Fn, Float, max, float } from '../../node'\n\nexport const highPass = Fn(([v, b]: [Float, Float]): Float => {\n return max(v.sub(b), 0).div(float(1).sub(b))\n}).setLayout({\n name: 'highPass',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n","import { Fn, all } from '../../node'\nimport type { Bool, Float, Vec2, Vec3, Vec4, X } from '../../node/types'\n\nexport const inside = Fn(([x, min, max]: [X, X, X]): Bool => {\n return all(x.greaterThanEqual(min).and(x.lessThanEqual(max)))\n}).setLayout({\n name: 'inside',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'min', type: 'auto' },\n { name: 'max', type: 'auto' },\n ],\n})\n\nexport const insideFloat = Fn(([x, min, max]: [Float, Float, Float]): Bool => {\n return x.greaterThanEqual(min).and(x.lessThanEqual(max))\n}).setLayout({\n name: 'insideFloat',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'min', type: 'float' },\n { name: 'max', type: 'float' },\n ],\n})\n\nexport const insideVec2 = Fn(([v, min, max]: [Vec2, Vec2, Vec2]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n}).setLayout({\n name: 'insideVec2',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'min', type: 'vec2' },\n { name: 'max', type: 'vec2' },\n ],\n})\n\nexport const insideVec3 = Fn(([v, min, max]: [Vec3, Vec3, Vec3]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n .and(v.z.greaterThanEqual(min.z).and(v.z.lessThanEqual(max.z)))\n}).setLayout({\n name: 'insideVec3',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'min', type: 'vec3' },\n { name: 'max', type: 'vec3' },\n ],\n})\n\nexport const insideAABB = Fn(([v, aabb]: [Vec2, Vec4]): Bool => {\n return insideVec2(v, aabb.xy, aabb.zw)\n}).setLayout({\n name: 'insideAABB',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'aabb', type: 'vec4' },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const invCubic = Fn(([v]: [X]): X => {\n return float(0.5).sub(float(1).sub(float(2).mul(v)).asin().div(3).sin())\n}).setLayout({\n name: 'invCubic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const invQuartic = Fn(([v]: [X]): X => {\n return v.oneMinus().sqrt().oneMinus().sqrt()\n}).setLayout({\n name: 'invQuartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const inverse = Fn(([m]: [X]): X => {\n return float(1).div(m)\n}).setLayout({\n name: 'reciprocal',\n type: 'auto',\n inputs: [{ name: 'm', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const mirror = Fn(([x]: [X]): X => {\n const f = x.fract()\n const m = x.mod(2).floor()\n const fm = f.mul(m)\n return f.add(m).sub(fm.mul(2))\n}).setLayout({\n name: 'mirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, max } from '../../node'\n\nexport const mmax2 = Fn(([v]: [Vec2]): Float => {\n return max(v.x, v.y)\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmax3 = Fn(([v]: [Vec3]): Float => {\n return max(v.x, max(v.y, v.z))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmax4 = Fn(([v]: [Vec4]): Float => {\n return max(max(v.x, v.y), max(v.z, v.w))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const mmax = mmax4\n","import { Fn, X, mix, max, step, clamp } from '../../node'\n\n// Basic mmix function - wrapper around standard mix\nexport const mmix = Fn(([a, b, c]: [X, X, X]): X => {\n return mix(a, b, c)\n}).setLayout({\n name: 'mmix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n ],\n})\n\n// Three-value interpolation with percentage control\nexport const mmix3 = Fn(([a, b, c, pct]: [X, X, X, X]): X => {\n return mix(mix(a, b, pct.mul(2)), mix(b, c, max(pct, 0.5).sub(0.5).mul(2)), step(0.5, pct))\n}).setLayout({\n name: 'mmix3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n\n// Four-value interpolation with percentage control\nexport const mmix4 = Fn(([a, b, c, d, pct]: [X, X, X, X, X]): X => {\n return mix(\n mix(a, b, pct.mul(3)),\n mix(b, mix(c, d, max(pct, 0.66).sub(0.66).mul(3)), clamp(pct, 0.33, 0.66).sub(0.33).mul(3)),\n step(0.33, pct)\n )\n}).setLayout({\n name: 'mmix4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n","import { Fn, Vec2, X, vec4 } from '../../node'\n\n// 2D modulo function that returns both cell coordinates and wrapped position\n// Returns vec4(cellX, cellY, wrappedX, wrappedY)\nexport const mod2 = Fn(([p, s]: [Vec2, X]): X => {\n const halfS = s.div(2).toVar()\n const pShifted = p.add(halfS).toVar()\n const c = pShifted.div(s).floor().toVar()\n const wrapped = pShifted.mod(s).sub(halfS)\n return vec4(c.x, c.y, wrapped.x, wrapped.y)\n}).setLayout({\n name: 'mod2',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract cell coordinates from mod2 result\nexport const mod2Cell = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.xy\n}).setLayout({\n name: 'mod2Cell',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract wrapped position from mod2 result\nexport const mod2Wrap = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.zw\n}).setLayout({\n name: 'mod2Wrap',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec4, fract, vec3, vec4, float } from '../../node'\n\nconst PackUpscale = float(256.0 / 255.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst ShiftRight8 = float(1 / 256)\n\nexport const pack = Fn(([v]: [Float]): Vec4 => {\n const r = vec4(fract(v.mul(PackFactors)), v).toVar()\n r.yzw.assign(r.yzw.sub(r.xyz.mul(ShiftRight8)))\n return r.mul(PackUpscale)\n}).setLayout({\n name: 'pack',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'float' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const parabola = Fn(([x, k]: [Float, Float]): Float => {\n return x.mul(4).mul(x.oneMinus()).pow(k)\n}).setLayout({\n name: 'parabola',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\n// Square function - computes x^2 with quadratic energy amplification\nexport const pow2 = Fn(([v]: [X]): X => {\n return v.mul(v)\n}).setLayout({\n name: 'pow2',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow3 = Fn(([x]: [X]): X => {\n return x.mul(x).mul(x)\n}).setLayout({\n name: 'pow3',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow5 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n return v2.mul(v2).mul(x)\n}).setLayout({\n name: 'pow5',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow7 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n const v4 = v2.mul(v2).toVar('v4')\n const v6 = v4.mul(v2).toVar('v6')\n return v6.mul(x)\n}).setLayout({\n name: 'pow7',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, Float, float } from '../../node'\n\nexport const powFast = Fn(([a, b]: [X, X]): X => {\n return a.div((float(1) as any).sub(b).mul(a).add(b))\n}).setLayout({\n name: 'powFast',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, Vec4, Mat3, mat3, vec3, float } from '../../../node'\n\nexport const quat2mat3 = Fn(([q]: [Vec4]): Mat3 => {\n const qxx = q.x.mul(q.x).toVar('qxx')\n const qyy = q.y.mul(q.y).toVar('qyy')\n const qzz = q.z.mul(q.z).toVar('qzz')\n const qxz = q.x.mul(q.z).toVar('qxz')\n const qxy = q.x.mul(q.y).toVar('qxy')\n const qyw = q.y.mul(q.w).toVar('qyw')\n const qzw = q.z.mul(q.w).toVar('qzw')\n const qyz = q.y.mul(q.z).toVar('qyz')\n const qxw = q.x.mul(q.w).toVar('qxw')\n\n return mat3(\n vec3(float(1).sub(float(2).mul(qyy.add(qzz))), float(2).mul(qxy.sub(qzw)), float(2).mul(qxz.add(qyw))),\n vec3(float(2).mul(qxy.add(qzw)), float(1).sub(float(2).mul(qxx.add(qzz))), float(2).mul(qyz.sub(qxw))),\n vec3(float(2).mul(qxz.sub(qyw)), float(2).mul(qyz.add(qxw)), float(1).sub(float(2).mul(qxx.add(qyy))))\n )\n}).setLayout({\n name: 'quat2mat3',\n type: 'mat3',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Mat4 } from '../../../node'\nimport { quat2mat3 } from './quat2mat3'\nimport { toMat4 } from '../toMat4'\n\nexport const quat2mat4 = Fn(([q]: [Vec4]): Mat4 => {\n return toMat4(quat2mat3(q))\n}).setLayout({\n name: 'quat2mat4',\n type: 'mat4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Mat3, Mat4, mat4, vec4 } from '../../node'\n\nexport const toMat4 = Fn(([m]: [Mat3]): Mat4 => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'toMat4',\n type: 'mat4',\n inputs: [{ name: 'm', type: 'mat3' }],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatAdd = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.add(b.xyz), a.w.add(b.w))\n}).setLayout({\n name: 'quatAdd',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatConj = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w)\n}).setLayout({\n name: 'quatConj',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatDiv = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.div(s), q.w.div(s))\n}).setLayout({\n name: 'quatDiv',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatIdentity = Fn(([]): Vec4 => {\n return vec4(0, 0, 0, 1)\n}).setLayout({\n name: 'quatIdentity',\n type: 'vec4',\n inputs: [],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatConj } from './quatConj'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatInverse = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(quatConj(q), quatLengthSq(q))\n}).setLayout({\n name: 'quatInverse',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\n\nexport const quatLengthSq = Fn(([q]: [Vec4]): Float => {\n return q.xyz.dot(q.xyz).add(q.w.mul(q.w))\n}).setLayout({\n name: 'quatLengthSq',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatLength = Fn(([q]: [Vec4]): Float => {\n return quatLengthSq(q).sqrt()\n}).setLayout({\n name: 'quatLength',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, If, float } from '../../../node'\n\nexport const quatLerp = Fn(([qa, qb, t]: [Vec4, Vec4, Float]): Vec4 => {\n const cosHalfTheta = qa.w.mul(qb.w).add(qa.xyz.dot(qb.xyz)).toVar('cosHalfTheta')\n const adjustedQb = qb.negate().select(qb, cosHalfTheta.lessThan(0)).toVar('adjustedQb')\n const absCosHalfTheta = cosHalfTheta.abs().toVar('absCosHalfTheta')\n\n If(absCosHalfTheta.greaterThanEqual(1), () => {\n return qa\n })\n\n const halfTheta = absCosHalfTheta.acos().toVar('halfTheta')\n const sinHalfTheta = float(1).sub(absCosHalfTheta.mul(absCosHalfTheta)).sqrt().toVar('sinHalfTheta')\n\n If(sinHalfTheta.abs().lessThan(0.001), () => {\n return qa.div(2).add(adjustedQb.div(2)).normalize()\n })\n\n const ratioA = float(1).sub(t).mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioA')\n const ratioB = t.mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioB')\n\n return qa.mul(ratioA).add(adjustedQb.mul(ratioB)).normalize()\n}).setLayout({\n name: 'quatLerp',\n type: 'vec4',\n inputs: [\n {\n name: 'qa',\n type: 'vec4',\n },\n {\n name: 'qb',\n type: 'vec4',\n },\n {\n name: 't',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatMul = Fn(([q1, q2]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n q2.xyz.mul(q1.w).add(q1.xyz.mul(q2.w)).add(q1.xyz.cross(q2.xyz)),\n q1.w.mul(q2.w).sub(q1.xyz.dot(q2.xyz))\n )\n}).setLayout({\n name: 'quatMul',\n type: 'vec4',\n inputs: [\n {\n name: 'q1',\n type: 'vec4',\n },\n {\n name: 'q2',\n type: 'vec4',\n },\n ],\n})\n\nexport const quatMulScalar = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.mul(s), q.w.mul(s))\n}).setLayout({\n name: 'quatMulScalar',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatNeg = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w.negate())\n}).setLayout({\n name: 'quatNeg',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatLength } from './quatLength'\n\nexport const quatNorm = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(q, quatLength(q))\n}).setLayout({\n name: 'quatNorm',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatSub = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.sub(b.xyz), a.w.sub(b.w))\n}).setLayout({\n name: 'quatSub',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const quartic = Fn(([v]: [X]): X => {\n const v2 = v.mul(v).toVar('v2')\n return v2.mul((float(2) as any).sub(v2))\n}).setLayout({\n name: 'quartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Mat3, Vec3, float, mat3, vec3 } from '../../node'\n\nexport const rotate3d = Fn(([a, r]: [Vec3, Float]): Mat3 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec3(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s))\n )\n const col2 = vec3(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s))\n )\n const col3 = vec3(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c)\n )\n return mat3(col1, col2, col3)\n}).setLayout({\n name: 'rotate3d',\n type: 'mat3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dX = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(1, 0, 0), vec3(0, c, s), vec3(0, s.negate(), c))\n}).setLayout({\n name: 'rotate3dX',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dY = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(c, 0, s.negate()), vec3(0, 1, 0), vec3(s, 0, c))\n}).setLayout({\n name: 'rotate3dY',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dZ = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(c, s, 0), vec3(s.negate(), c, 0), vec3(0, 0, 1))\n}).setLayout({\n name: 'rotate3dZ',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, Vec3, float, mat4, vec4 } from '../../node'\n\nexport const rotate4d = Fn(([a, r]: [Vec3, Float]): Mat4 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec4(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s)),\n 0\n )\n const col2 = vec4(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s)),\n 0\n )\n const col3 = vec4(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c),\n 0\n )\n const col4 = vec4(0, 0, 0, 1)\n return mat4(col1, col2, col3, col4)\n}).setLayout({\n name: 'rotate4d',\n type: 'mat4',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dX = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(1, 0, 0, 0), vec4(0, c, s, 0), vec4(0, s.negate(), c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dX',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dY = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, 0, s.negate(), 0), vec4(0, 1, 0, 0), vec4(s, 0, c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dY',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dZ = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, s, 0, 0), vec4(s.negate(), c, 0, 0), vec4(0, 0, 1, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dZ',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, X, float } from '../../node'\n\nconst MEDIUMP_FLT_MAX = float(65504.0)\n\nexport const saturateMediump = Fn(([x]: [X]): X => {\n\treturn x.min(MEDIUMP_FLT_MAX)\n}).setLayout({\n\tname: 'saturateMediump',\n\ttype: 'auto',\n\tinputs: [{ name: 'x', type: 'auto' }],\n})","import { Fn, Float, Vec2, mat2, Mat2 } from '../../node'\n\nexport const scale2d = Fn(([s]: [Float]): Mat2 => {\n return mat2(s, 0, 0, s)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [{ name: 's', type: 'float' }],\n})\n\nexport const scale2dVec = Fn(([s]: [Vec2]): Mat2 => {\n return mat2(s.x, 0, 0, s.y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [{ name: 's', type: 'vec2' }],\n})\n\nexport const scale2dXY = Fn(([x, y]: [Float, Float]): Mat2 => {\n return mat2(x, 0, 0, y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, Mat3, mat3 } from '../../node'\n\nexport const scale3d = Fn(([s]: [Float]): Mat3 => {\n return mat3(s, 0, 0, 0, s, 0, 0, 0, s)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale3dVec = Fn(([s]: [Vec3]): Mat3 => {\n return mat3(s.x, 0, 0, 0, s.y, 0, 0, 0, s.z)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n","import { Fn, Float, Vec3, Vec4, Mat4, mat4 } from '../../node'\n\nexport const scale4d = Fn(([s]: [Float]): Mat4 => {\n return mat4(s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale4dXYZ = Fn(([x, y, z]: [Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' }\n ]\n})\n\nexport const scale4dXYZW = Fn(([x, y, z, w]: [Float, Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' },\n { name: 'w', type: 'float' }\n ]\n})\n\nexport const scale4dVec3 = Fn(([s]: [Vec3]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n\nexport const scale4dVec4 = Fn(([s]: [Vec4]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, s.w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec4' }]\n})","import { Fn, X } from '../../node'\nimport { quintic } from './quintic'\n\nexport const smootherstep = Fn(([a, b, v]: [X, X, X]): X => {\n\tconst normalized = v.sub(a).div(b.sub(a)).toVar('normalized')\n\tconst saturated = normalized.saturate().toVar('saturated')\n\treturn quintic(saturated)\n}).setLayout({\n\tname: 'smootherstep',\n\ttype: 'auto',\n\tinputs: [\n\t\t{ name: 'a', type: 'auto' },\n\t\t{ name: 'b', type: 'auto' },\n\t\t{ name: 'v', type: 'auto' }\n\t]\n})","import { Fn, Mat3, Mat4, mat3 } from '../../node'\n\nexport const toMat3 = Fn(([m]: [Mat4]): Mat3 => {\n return mat3(m[0].xyz, m[1].xyz, m[2].xyz)\n}).setLayout({\n name: 'toMat3',\n type: 'mat3',\n inputs: [{ name: 'm', type: 'mat4' }],\n})\n","import { Fn, Float, Mat4, Vec3, X, mat4 } from '../../node'\n\nexport const translate4d = Fn(([x, y, z]: [X, X?, X?]): Mat4 => {\n if (y === undefined && z === undefined) {\n const t = x as Vec3\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n t.x, t.y, t.z, 1\n )\n } else {\n const tx = x as Float\n const ty = y as Float\n const tz = z as Float\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n tx, ty, tz, 1\n )\n }\n}).setLayout({\n name: 'translate4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'y', type: 'auto' },\n { name: 'z', type: 'auto' }\n ]\n})","import { Fn, Float, Vec3, Vec4, dot, vec3, vec4, float } from '../../node'\n\nconst UnpackDownscale = float(255.0 / 256.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst UnpackFactors = UnpackDownscale.div(vec4(PackFactors, 1.0))\n\nexport const unpack8 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(8, 8 * 8, 8 * 8 * 8)\n return dot(v, f).div(512.0)\n}).setLayout({\n name: 'unpack8',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack16 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(16, 16 * 16, 16 * 16 * 16)\n return dot(v, f).div(4096.0)\n}).setLayout({\n name: 'unpack16',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack32 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(32, 32 * 32, 32 * 32 * 32)\n return dot(v, f).div(32768.0)\n}).setLayout({\n name: 'unpack32',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack64 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(64, 64 * 64, 64 * 64 * 64)\n return dot(v, f).div(262144.0)\n}).setLayout({\n name: 'unpack64',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack128 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(128, 128 * 128, 128 * 128 * 128)\n return dot(v, f).div(2097152.0)\n}).setLayout({\n name: 'unpack128',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack256 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(256, 256 * 256, 256 * 256 * 256)\n return dot(v, f).div(16581375.0)\n}).setLayout({\n name: 'unpack256',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpackBase = Fn(([v, base]: [Vec3, Float]): Float => {\n const base3 = base.mul(base).mul(base)\n const f = vec3(base, base.mul(base), base3)\n return dot(v, f).div(base3)\n}).setLayout({\n name: 'unpackBase',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'base', type: 'float' },\n ],\n})\n\nexport const unpack = Fn(([v]: [Vec4]): Float => {\n return dot(v, UnpackFactors)\n}).setLayout({\n name: 'unpack',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const unpackDefault = Fn(([v]: [Vec3]): Float => {\n return unpack256(v)\n}).setLayout({\n name: 'unpackDefault',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float, vec3, vec2, mat3, float, If } from '../../node'\n\nexport const arrowSDF = Fn(\n ([v, start, end, baseRadius, tipRadius, tipHeight]: [Vec3, Vec3, Vec3, Float, Float, Float]): Float => {\n const t = start.sub(end).toVar('t')\n const l = t.length().toVar('l')\n t.assign(t.div(l))\n l.assign(l.max(tipHeight))\n v.assign(v.sub(end))\n\n If(t.y.add(1).lessThan(0.0001), () => {\n v.assign(vec3(v.x, v.y.negate(), v.z))\n }).Else(() => {\n const k = float(1).div(float(1).add(t.y)).toVar('k')\n const column1 = vec3(t.z.mul(t.z).mul(k).add(t.y), t.x, t.z.mul(t.x.negate()).mul(k)).toVar(\n 'column1'\n )\n const column2 = vec3(t.x.negate(), t.y, t.z.negate()).toVar('column2')\n const column3 = vec3(t.x.negate().mul(t.z).mul(k), t.z, t.x.mul(t.x).mul(k).add(t.y)).toVar(\n 'column3'\n )\n v.assign(\n mat3(\n column1.x,\n column1.y,\n column1.z,\n column2.x,\n column2.y,\n column2.z,\n column3.x,\n column3.y,\n column3.z\n ).mul(v)\n )\n })\n\n const q = vec2(vec2(v.x, v.z).length(), v.y).toVar('q')\n q.assign(vec2(q.x.abs(), q.y))\n const e = vec2(tipRadius, tipHeight).toVar('e')\n const h = q.dot(e).div(e.dot(e)).clamp(0, 1).toVar('h')\n const d1 = q.sub(e.mul(h)).toVar('d1')\n const d2 = q.sub(vec2(tipRadius, tipHeight)).toVar('d2')\n d2.assign(vec2(d2.x.sub(d2.x.clamp(baseRadius.sub(tipRadius), 0)), d2.y))\n const d3 = q.sub(vec2(baseRadius, tipHeight)).toVar('d3')\n d3.assign(vec2(d3.x, d3.y.sub(d3.y.clamp(0, l.sub(tipHeight)))))\n const d4 = vec2(q.y.sub(l), q.x.sub(baseRadius).max(0)).toVar('d4')\n const s = d1.x.max(d1.y.negate()).max(d4.x).max(d2.y.min(d3.x)).toVar('s')\n return d1.dot(d1).min(d2.dot(d2)).min(d3.dot(d3)).min(d4.dot(d4)).sqrt().mul(s.sign())\n }\n).setLayout({\n name: 'arrowSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'start', type: 'vec3' },\n { name: 'end', type: 'vec3' },\n { name: 'baseRadius', type: 'float' },\n { name: 'tipRadius', type: 'float' },\n { name: 'tipHeight', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nexport const boxFrameSDF = Fn(([p, b, e]: [Vec3, Vec3, Float]): Float => {\n const p_abs = p.abs().sub(b).toVar('p_abs')\n const q = p_abs.add(e).abs().sub(e).toVar('q')\n\n const term1 = vec3(p_abs.x, q.y, q.z)\n .max(vec3(0))\n .length()\n .add(p_abs.x.max(q.y.max(q.z)).min(0))\n\n const term2 = vec3(q.x, p_abs.y, q.z)\n .max(vec3(0))\n .length()\n .add(q.x.max(p_abs.y.max(q.z)).min(0))\n\n const term3 = vec3(q.x, q.y, p_abs.z)\n .max(vec3(0))\n .length()\n .add(q.x.max(q.y.max(p_abs.z)).min(0))\n\n return term1.min(term2).min(term3)\n}).setLayout({\n name: 'boxFrameSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'e', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const capsuleSDF = Fn(([p, a, b, r]: [Vec3, Vec3, Vec3, Float]): Float => {\n const pa = p.sub(a).toVar('pa')\n const ba = b.sub(a).toVar('ba')\n const h = pa.dot(ba).div(ba.dot(ba)).clamp(0, 1).toVar('h')\n return pa.sub(ba.mul(h)).length().sub(r)\n}).setLayout({\n name: 'capsuleSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})","import { Fn, Vec3, Vec2, Float, vec2, If } from '../../node'\n\nexport const coneSDF = Fn(([p, c]: [Vec3, Vec3]): Float => {\n const q = vec2(vec2(p.x, p.z).length(), p.y).toVar('q')\n const d1 = q.y.negate().sub(c.z).toVar('d1')\n const d2 = q.dot(vec2(c.x, c.y)).max(q.y).toVar('d2')\n return vec2(d1, d2).max(0).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'coneSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\nexport const coneSDFVec2Height = Fn(([p, c, h]: [Vec3, Vec2, Float]): Float => {\n const q = h.mul(vec2(c.x, c.y.negate())).div(c.y).toVar('q')\n const w = vec2(vec2(p.x, p.z).length(), p.y).toVar('w')\n const a = w.sub(q.mul(w.dot(q).div(q.dot(q)).clamp(0, 1))).toVar('a')\n const b = w.sub(q.mul(vec2(w.x.div(q.x).clamp(0, 1), 1))).toVar('b')\n const k = q.y.sign().toVar('k')\n const d = a.dot(a).min(b.dot(b)).toVar('d')\n const s = k\n .mul(w.x.mul(q.y).sub(w.y.mul(q.x)))\n .max(k.mul(w.y.sub(q.y)))\n .toVar('s')\n return d.sqrt().mul(s.sign())\n}).setLayout({\n name: 'coneSDFVec2Height',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec2' },\n { name: 'h', type: 'float' },\n ],\n})\n\nexport const coneSDFRadii = Fn(([p, r1, r2, h]: [Vec3, Float, Float, Float]): Float => {\n const q = vec2(vec2(p.x, p.z).length(), p.y).toVar('q')\n const b = r1.sub(r2).div(h).toVar('b')\n const a = b.mul(b).oneMinus().sqrt().toVar('a')\n const k = q.dot(vec2(b.negate(), a)).toVar('k')\n If(k.lessThan(0), () => {\n return q.length().sub(r1)\n })\n If(k.greaterThan(a.mul(h)), () => {\n return q.sub(vec2(0, h)).length().sub(r2)\n })\n return q.dot(vec2(a, b)).sub(r1)\n}).setLayout({\n name: 'coneSDFRadii',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r1', type: 'float' },\n { name: 'r2', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { boxSDFSize } from './boxSDF'\n\nexport const cubeSDF = Fn(([p, s]: [Vec3, Float]): Float => {\n return boxSDFSize(p, vec3(s))\n}).setLayout({\n name: 'cubeSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3 } from '../../node'\n\nexport const boxSDF = Fn(([p]: [Vec3]) => {\n const d = p.abs().toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const boxSDFSize = Fn(([p, b]: [Vec3, Vec3]) => {\n const d = p.abs().sub(b).toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDFSize',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float, vec2, select, float } from '../../node'\n\nexport const cylinderSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const d = vec2(vec2(p.x, p.z).length(), p.y).abs().sub(h).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'cylinderSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n\nexport const cylinderSDFHeight = Fn(([p, h]: [Vec3, Float]): Float => {\n return cylinderSDF(p, vec2(h))\n}).setLayout({\n name: 'cylinderSDFHeight',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n\nexport const cylinderSDFHeightRadius = Fn(([p, h, r]: [Vec3, Float, Float]): Float => {\n const d = vec2(vec2(p.x, p.z).length(), p.y).abs().sub(vec2(h, r)).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'cylinderSDFHeightRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const cylinderSDFCaps = Fn(([p, a, b, r]: [Vec3, Vec3, Vec3, Float]): Float => {\n const pa = p.sub(a).toVar('pa')\n const ba = b.sub(a).toVar('ba')\n const baba = ba.dot(ba).toVar('baba')\n const paba = pa.dot(ba).toVar('paba')\n const x = pa.mul(baba).sub(ba.mul(paba)).length().sub(r.mul(baba)).toVar('x')\n const y = paba.sub(baba.mul(0.5)).abs().sub(baba.mul(0.5)).toVar('y')\n const x2 = x.mul(x).toVar('x2')\n const y2 = y.mul(y).mul(baba).toVar('y2')\n const d = select(\n select(float(0), x2, x.greaterThan(0)).add(select(float(0), y2, y.greaterThan(0))),\n x2.min(y2).negate(),\n x.max(y).lessThan(0)\n )\n .toFloat()\n .toVar('d')\n return d.sign().mul(d.abs().sqrt()).div(baba)\n}).setLayout({\n name: 'cylinderSDFCaps',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nconst PHI = 1.618033988749894848204586834\n\nexport const dodecahedronSDF = Fn(([p]: [Vec3]): Float => {\n const n = vec3(PHI, 1, 0).normalize().toVar('n')\n const pAbs = p.abs().toVar('pAbs')\n const a = pAbs.dot(vec3(n.x, n.y, n.z)).toVar('a')\n const b = pAbs.dot(vec3(n.z, n.x, n.y)).toVar('b')\n const c = pAbs.dot(vec3(n.y, n.z, n.x)).toVar('c')\n return a.max(b).max(c).sub(n.x)\n}).setLayout({\n name: 'dodecahedronSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const dodecahedronSDFRadius = Fn(([p, radius]: [Vec3, Float]): Float => {\n const n = vec3(PHI, 1, 0).normalize().toVar('n')\n const pScaled = p.abs().div(radius).toVar('pScaled')\n const a = pScaled.dot(vec3(n.x, n.y, n.z)).toVar('a')\n const b = pScaled.dot(vec3(n.z, n.x, n.y)).toVar('b')\n const c = pScaled.dot(vec3(n.y, n.z, n.x)).toVar('c')\n return a.max(b).max(c).sub(n.x).mul(radius)\n}).setLayout({\n name: 'dodecahedronSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const ellipsoidSDF = Fn(([p, r]: [Vec3, Vec3]): Float => {\n const k0 = p.div(r).length().toVar('k0')\n const k1 = p.div(r.mul(r)).length().toVar('k1')\n return k0.mul(k0.sub(1)).div(k1)\n}).setLayout({\n name: 'ellipsoidSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r', type: 'vec3' },\n ],\n})","import { Fn, Vec2, Int, Float, atan2 } from '../../node'\n\nexport const flowerSDF = Fn(([st, N]: [Vec2, Int]): Float => {\n const centered = st.sub(0.5).mul(4).toVar('centered')\n const r = centered.length().mul(2).toVar('r')\n const a = atan2(centered.y, centered.x).toVar('a')\n const v = N.toFloat().mul(0.5).toVar('v')\n return a.mul(v).cos().abs().mul(0.5).add(0.5).div(r).oneMinus()\n}).setLayout({\n name: 'flowerSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, Int, float } from '../../node'\nimport { mapRange } from '../math'\n\nexport const gearSDF = Fn(([st, b, N]: [Vec2, Float, Int]): Float => {\n const e = float(2.71828182845904523536)\n const stCentered = st.sub(0.5).mul(3).toVar('stCentered')\n const s = mapRange(b, float(1), float(15), float(0.066), float(0.5)).toVar('s')\n const d = stCentered.length().sub(s).toVar('d')\n const omega = b.mul(N.toFloat().mul(stCentered.y.atan2(stCentered.x)).sin()).toVar('omega')\n const l = e.pow(omega.mul(2)).toVar('l')\n const hyperTan = l.sub(1).div(l.add(1)).toVar('hyperTan')\n const r = hyperTan.div(b).toVar('r')\n return d.add(d.min(r))\n}).setLayout({\n name: 'gearSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'b', type: 'float' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const heartSDF = Fn(([st]: [Vec2]): Float => {\n const centered = st.sub(0.5).sub(vec2(0, 0.3)).toVar('centered')\n const r = centered.length().mul(5).toVar('r')\n const normalized = centered.normalize().toVar('normalized')\n const shape = normalized.y\n .mul(normalized.x.abs().pow(0.67))\n .div(normalized.y.add(1.5))\n .sub(normalized.y.mul(2))\n .add(1.26)\n return r.sub(shape)\n}).setLayout({\n name: 'heartSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec3, Vec2, Float, vec2 } from '../../node'\n\nexport const hexPrismSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const q = p.abs().toVar('q')\n const d1 = q.z.sub(h.y).toVar('d1')\n const d2 = q.x.mul(0.866025).add(q.y.mul(0.5)).max(q.y).sub(h.x).toVar('d2')\n return vec2(d1, d2).max(0).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'hexPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nexport const icosahedronSDF = Fn(([p, radius]: [Vec3, Float]): Float => {\n const phi = 2.61803398875 // Golden ratio constant (φ + 1)\n const n1 = vec3(phi, 1, 0).normalize().toVar('n1')\n const n2 = vec3(0.57735026919).toVar('n2') // 1/sqrt(3)\n\n const normalizedP = p.abs().div(radius).toVar('normalizedP')\n\n const a = normalizedP.dot(n1).toVar('a')\n const b = normalizedP.dot(vec3(n1.z, n1.x, n1.y)).toVar('b')\n const c = normalizedP.dot(vec3(n1.y, n1.z, n1.x)).toVar('c')\n const d = normalizedP.dot(n2).sub(n1.x).toVar('d')\n\n return a.max(b).max(c).sub(n1.x).max(d).mul(radius)\n}).setLayout({\n name: 'icosahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, float, Loop, If, Break } from '../../node'\n\nexport const juliaSDF = Fn(([st, center, c, r]: [Vec2, Vec2, Vec2, Float]): Float => {\n const transformed = st.sub(0.5).mul(2).toVar('transformed')\n const z = vec2(0).sub(transformed).mul(r).toVar('z')\n const n = float(0).toVar('n')\n const maxIter = 500\n\n Loop(maxIter, ({ i }) => {\n If(z.length().greaterThan(4), () => {\n n.assign(i.toFloat().div(maxIter))\n Break()\n })\n z.assign(vec2(z.x.pow(2).sub(z.y.pow(2)).add(c.x), z.x.mul(z.y).mul(2).add(c.y)))\n })\n\n return n\n}).setLayout({\n name: 'juliaSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 'c', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const juliaSDFSimple = Fn(([st, c, r]: [Vec2, Vec2, Float]): Float => {\n return juliaSDF(st, vec2(0.5), c, r)\n}).setLayout({\n name: 'juliaSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'c', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, vec2, mat2, float, Loop, Break, If } from '../../node'\n\nexport const kochSDF = Fn(([st, center, N]: [Vec2, Vec2, Int]): Float => {\n st = st.sub(center).toVar()\n st.assign(st.mul(3))\n const r3 = float(3).sqrt().toVar('r3')\n st.assign(st.abs())\n st.assign(st.add(r3.mul(vec2(st.y.negate(), st.x))))\n st.assign(vec2(st.x, st.y.sub(1)))\n const w = float(0.5).toVar('w')\n const m = mat2(r3, 3, -3, r3).mul(0.5).toVar('m')\n\n Loop(20, ({ i }) => {\n If(i.toFloat().greaterThanEqual(N.toFloat()), () => {\n Break()\n })\n st.assign(\n vec2(r3.negate(), 3)\n .mul(0.5)\n .sub(m.mul(vec2(st.y, st.x.abs())))\n )\n w.assign(w.div(r3))\n })\n\n const d = st.y\n .sign()\n .mul(vec2(st.y, st.x.abs().sub(r3).max(0)).length())\n .toVar('d')\n return d.mul(w)\n}).setLayout({\n name: 'kochSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n\nexport const kochSDFSimple = Fn(([st, N]: [Vec2, Int]): Float => {\n return kochSDF(st, vec2(0.5), N)\n}).setLayout({\n name: 'kochSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, vec2 } from '../../node'\n\nexport const linkSDF = Fn(([p, le, r1, r2]: [Vec3, Float, Float, Float]): Float => {\n const q = vec3(p.x, p.y.abs().sub(le).max(0), p.z).toVar('q')\n return vec2(vec2(q.x, q.y).length().sub(r1), q.z).length().sub(r2)\n}).setLayout({\n name: 'linkSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'le', type: 'float' },\n { name: 'r1', type: 'float' },\n { name: 'r2', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, vec3, float, Loop, If, Break } from '../../node'\nimport { cart2polar3D } from '../space/cart2polar'\n\nexport const mandelbulbSDF = Fn(([st]: [Vec3]): Vec2 => {\n const zeta = st.toVar('zeta')\n const m = st.dot(st).toVar('m')\n const dz = float(1).toVar('dz')\n const n = float(8).toVar('n')\n const maxiterations = 20\n const iterations = float(0).toVar('iterations')\n const r = float(0).toVar('r')\n const dr = float(1).toVar('dr')\n\n Loop(maxiterations, () => {\n dz.assign(n.mul(m.pow(3.5)).mul(dz).add(1))\n const sphericalZ = cart2polar3D(zeta).toVar('sphericalZ')\n const newx = sphericalZ.x\n .pow(n)\n .mul(sphericalZ.y.mul(n).sin())\n .mul(sphericalZ.z.mul(n).cos())\n .toVar('newx')\n const newy = sphericalZ.x\n .pow(n)\n .mul(sphericalZ.y.mul(n).sin())\n .mul(sphericalZ.z.mul(n).sin())\n .toVar('newy')\n const newz = sphericalZ.x.pow(n).mul(sphericalZ.y.mul(n).cos()).toVar('newz')\n zeta.assign(vec3(newx.add(st.x), newy.add(st.y), newz.add(st.z)))\n m.assign(zeta.dot(zeta))\n If(m.greaterThan(2), () => {\n Break()\n })\n iterations.assign(iterations.add(1))\n })\n\n return vec2(float(0.25).mul(m.log()).mul(m.sqrt()).div(dz), iterations)\n}).setLayout({\n name: 'mandelbulbSDF',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, atan2, length, acos, vec2, vec3 } from '../../node'\n\nexport const cart2polar = Fn(([st]: [Vec2]): Vec2 => {\n return vec2(atan2(st.y, st.x), length(st))\n}).setLayout({\n name: 'cart2polar',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const cart2polar3D = Fn(([st]: [Vec3]): Vec3 => {\n const r = length(st).toVar('r')\n const phi = acos(st.z.div(r)).toVar('phi')\n const theta = atan2(st.y, st.x).toVar('theta')\n return vec3(r, phi, theta)\n}).setLayout({\n name: 'cart2polar3D',\n type: 'vec3',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const octahedronSDF = Fn(([p, s]: [Vec3, Float]): Float => {\n const pAbs = p.abs().toVar('pAbs')\n const m = pAbs.x.add(pAbs.y).add(pAbs.z).sub(s).toVar('m')\n return m.mul(0.57735027)\n}).setLayout({\n name: 'octahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const octahedronSDFExact = Fn(([p, s]: [Vec3, Float]): Float => {\n const pAbs = p.abs().toVar('pAbs')\n const m = pAbs.x.add(pAbs.y).add(pAbs.z).sub(s).toVar('m')\n const o = pAbs.mul(3).sub(m).min(0).toVar('o')\n o.assign(pAbs.mul(6).sub(m.mul(2)).sub(o.mul(3)).add(o.x.add(o.y).add(o.z)).max(0))\n const oSum = o.x.add(o.y).add(o.z).toVar('oSum')\n return pAbs.sub(s.mul(o).div(oSum)).length()\n}).setLayout({\n name: 'octahedronSDFExact',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, vec2 } from '../../node'\n\nexport const octogonPrismSDF = Fn(([p, r, h]: [Vec3, Float, Float]): Float => {\n const k = vec3(-0.9238795325, 0.3826834323, 0.4142135623).toVar('k')\n p.assign(p.abs())\n p.assign(vec3(p.xy.sub(vec2(k.x, k.y).mul(vec2(k.x, k.y).dot(p.xy).min(0).mul(2))), p.z))\n p.assign(vec3(p.xy.sub(vec2(k.x.negate(), k.y).mul(vec2(k.x.negate(), k.y).dot(p.xy).min(0).mul(2))), p.z))\n p.assign(vec3(p.xy.sub(vec2(p.x.clamp(k.z.negate().mul(r), k.z.mul(r)), r)), p.z))\n const d = vec2(p.xy.length().mul(p.y.sign()), p.z.sub(h)).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'octogonPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec4 } from '../../node'\n\nexport const opElongateVec2 = Fn(([p, h]: [Vec2, Vec2]): Vec2 => {\n return p.sub(p.clamp(h.negate(), h))\n}).setLayout({\n name: 'opElongateVec2',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'h', type: 'vec2' }\n ]\n})\n\nexport const opElongateVec3 = Fn(([p, h]: [Vec3, Vec3]): Vec3 => {\n return p.sub(p.clamp(h.negate(), h))\n}).setLayout({\n name: 'opElongateVec3',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec3' }\n ]\n})\n\nexport const opElongateVec4 = Fn(([p, h]: [Vec4, Vec4]): Vec4 => {\n const q = p.abs().sub(h).toVar('q')\n return vec4(q.max(0), q.x.max(q.y.max(q.z)).min(0))\n}).setLayout({\n name: 'opElongateVec4',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec4' },\n { name: 'h', type: 'vec4' }\n ]\n})","import { Fn, Vec3, Float, vec2 } from '../../node'\n\nexport const opExtrude = Fn(([p, sdf, h]: [Vec3, Float, Float]): Float => {\n const w = vec2(sdf, p.z.abs().sub(h)).toVar('w')\n return w.x.max(w.y).min(0).add(w.max(0).length())\n}).setLayout({\n name: 'opExtrude',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'sdf', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Float, mix, float } from '../../node'\n\nexport const opIntersection = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.max(d2)\n}).setLayout({\n name: 'opIntersection',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n ],\n})\n\nexport const opIntersectionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = float(0.5).sub(d2.sub(d1).div(k).mul(0.5)).saturate().toVar('h')\n return mix(d2, d1, h).add(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opIntersectionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const opOnion = Fn(([d, h]: [Float, Float]): Float => {\n return d.abs().sub(h)\n}).setLayout({\n name: 'opOnion',\n type: 'float',\n inputs: [\n { name: 'd', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Vec2, Vec3, Float, mod } from '../../node'\n\nexport const opRepeatVec2 = Fn(([p, s]: [Vec2, Float]): Vec2 => {\n return mod(p.add(s.mul(0.5)), s).sub(s.mul(0.5))\n}).setLayout({\n name: 'opRepeatVec2',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'float' }\n ]\n})\n\nexport const opRepeatVec3 = Fn(([p, c]: [Vec3, Vec3]): Vec3 => {\n return mod(p.add(c.mul(0.5)), c).sub(c.mul(0.5))\n}).setLayout({\n name: 'opRepeatVec3',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec3' }\n ]\n})\n\nexport const opRepeatVec2Limited = Fn(([p, lima, limb, s]: [Vec2, Vec2, Vec2, Float]): Vec2 => {\n return p.sub(s.mul(p.div(s).floor().clamp(lima, limb)))\n}).setLayout({\n name: 'opRepeatVec2Limited',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'lima', type: 'vec2' },\n { name: 'limb', type: 'vec2' },\n { name: 's', type: 'float' }\n ]\n})\n\nexport const opRepeatVec3Limited = Fn(([p, lima, limb, s]: [Vec3, Vec3, Vec3, Float]): Vec3 => {\n return p.sub(s.mul(p.div(s).floor().clamp(lima, limb)))\n}).setLayout({\n name: 'opRepeatVec3Limited',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'lima', type: 'vec3' },\n { name: 'limb', type: 'vec3' },\n { name: 's', type: 'float' }\n ]\n})","import { Fn, Vec3, Vec2, Float, vec2 } from '../../node'\n\nexport const opRevolve = Fn(([p, w]: [Vec3, Float]): Vec2 => {\n return vec2(vec2(p.x, p.z).length().sub(w), p.y)\n}).setLayout({\n name: 'opRevolve',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const opRound = Fn(([d, h]: [Float, Float]): Float => {\n return d.sub(h)\n}).setLayout({\n name: 'opRound',\n type: 'float',\n inputs: [\n { name: 'd', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Float, Vec4, vec4, select } from '../../node'\n\nexport const opSubtraction = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.negate().max(d2)\n}).setLayout({\n name: 'opSubtraction',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' }\n ]\n})\n\nexport const opSubtractionVec4 = Fn(([d1, d2]: [Vec4, Vec4]): Vec4 => {\n return d1.negate().select(d2, d1.w.negate().greaterThan(d2.w))\n}).setLayout({\n name: 'opSubtractionVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' }\n ]\n})\n\nexport const opSubtractionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = d2.add(d1).div(k).mul(0.5).sub(0.5).negate().clamp(0, 1).toVar('h')\n return d2.mix(d1.negate(), h).add(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opSubtractionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' }\n ]\n})\n\nexport const opSubtractionSmoothVec4 = Fn(([d1, d2, k]: [Vec4, Vec4, Float]): Vec4 => {\n const h = d2.w.add(d1.w).div(k).mul(0.5).sub(0.5).negate().clamp(0, 1).toVar('h')\n const result = d2.mix(d1.negate(), h).toVar('result')\n return vec4(result.xyz, result.w.add(k.mul(h).mul(h.oneMinus())))\n}).setLayout({\n name: 'opSubtractionSmoothVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' },\n { name: 'k', type: 'float' }\n ]\n})","import { Fn, Float, Vec4, vec4 } from '../../node'\n\nexport const opUnion = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.min(d2)\n}).setLayout({\n name: 'opUnion',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n ],\n})\n\nexport const opUnionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = d2.sub(d1).div(k).mul(0.5).add(0.5).clamp(0, 1).toVar('h')\n return d2.mix(d1, h).sub(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opUnionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const opUnionSmoothVec4 = Fn(([d1, d2, k]: [Vec4, Vec4, Float]): Vec4 => {\n const h = d2.w.sub(d1.w).div(k).mul(0.5).add(0.5).clamp(0, 1).toVar('h')\n const result = d2.mix(d1, h).toVar('result')\n return vec4(result.xyz, result.w.sub(k.mul(h).mul(h.oneMinus())))\n}).setLayout({\n name: 'opUnionSmoothVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const planeSDF = Fn(([p]: [Vec3]): Float => {\n return p.y\n}).setLayout({\n name: 'planeSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const planeSDFNormal = Fn(([p, planePoint, planeNormal]: [Vec3, Vec3, Vec3]): Float => {\n return planeNormal.dot(p).add(planeNormal.dot(planePoint)).div(planeNormal.length())\n}).setLayout({\n name: 'planeSDFNormal',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'planePoint', type: 'vec3' },\n { name: 'planeNormal', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, Int, atan2 } from '../../node'\nimport { PI, TAU } from '../math/const'\n\nexport const polySDF = Fn(([st, V]: [Vec2, Int]): Float => {\n const p = st.mul(2).sub(1).toVar('p')\n const a = atan2(p.y, p.x).add(PI).toVar('a')\n const r = p.length().toVar('r')\n const v = TAU.div(V.toFloat()).toVar('v')\n return a.div(v).add(0.5).floor().mul(v).sub(a).cos().mul(r)\n}).setLayout({\n name: 'polySDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' }\n ]\n})\n\nexport const polySDFFloat = Fn(([st, V]: [Vec2, Float]): Float => {\n const p = st.mul(2).sub(1).toVar('p')\n const a = atan2(p.y, p.x).add(PI).toVar('a')\n const r = p.length().toVar('r')\n const v = TAU.div(V).toVar('v')\n return a.div(v).add(0.5).floor().mul(v).sub(a).cos().mul(r)\n}).setLayout({\n name: 'polySDFFloat',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'float' }\n ]\n})","import { Fn, Vec3, Float, vec3, vec2, select, float } from '../../node'\n\nexport const pyramidSDF = Fn(([p, h]: [Vec3, Float]): Float => {\n const m2 = h.mul(h).add(0.25).toVar('m2')\n const pxz = vec2(p.x, p.z).abs().toVar('pxz')\n const pxzSwapped = select(vec2(pxz.y, pxz.x), pxz, pxz.y.greaterThan(pxz.x)).toVar('pxzSwapped')\n const pxzFinal = pxzSwapped.sub(0.5).toVar('pxzFinal')\n p.assign(vec3(pxzFinal.x, p.y, pxzFinal.y))\n const q = vec3(p.z, h.mul(p.y).sub(p.x.mul(0.5)), h.mul(p.x).add(p.y.mul(0.5))).toVar('q')\n const s = q.x.negate().max(0).toVar('s')\n const t = q.y.sub(p.z.mul(0.5)).div(m2.add(0.25)).clamp(0, 1).toVar('t')\n const a = m2.mul(q.x.add(s)).mul(q.x.add(s)).add(q.y.mul(q.y)).toVar('a')\n const b = m2\n .mul(q.x.add(t.mul(0.5)))\n .mul(q.x.add(t.mul(0.5)))\n .add(q.y.sub(m2.mul(t)).mul(q.y.sub(m2.mul(t))))\n .toVar('b')\n const d2 = select(float(0), a.min(b), q.y.min(q.x.negate().mul(m2).sub(q.y.mul(0.5))).greaterThan(0))\n .toFloat()\n .toVar('d2')\n return d2.add(q.z.mul(q.z)).div(m2).sqrt().mul(q.z.max(p.y.negate()).sign())\n}).setLayout({\n name: 'pyramidSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, atan2 } from '../../node'\nimport { TAU } from '../math/const'\n\nexport const raysSDF = Fn(([st, N]: [Vec2, Int]): Float => {\n const centered = st.sub(0.5).toVar('centered')\n return atan2(centered.y, centered.x).div(TAU).mul(N.toFloat()).fract()\n}).setLayout({\n name: 'raysSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { triSDF } from './triSDF'\n\nexport const rhombSDF = Fn(([st]: [Vec2]): Float => {\n return triSDF(st).max(triSDF(vec2(st.x, st.y.oneMinus())))\n}).setLayout({\n name: 'rhombSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, atan2 } from '../../node'\n\nexport const spiralSDF = Fn(([st, t]: [Vec2, Float]): Float => {\n const centeredSt = st.sub(0.5).toVar('centeredSt')\n const r = centeredSt.dot(centeredSt).toVar('r')\n const a = atan2(centeredSt.y, centeredSt.x).toVar('a')\n return r.log().mul(t).add(a.mul(0.159)).fract().sin().abs()\n}).setLayout({\n name: 'spiralSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 't', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, vec2, atan2, step, float } from '../../node'\nimport { TAU } from '../math/const'\nimport { scale2dWithCenter } from '../space/scale'\n\nexport function starSDF(st: Vec2, V: Int, s: Float): Float\nexport function starSDF(st: Vec2, V: Int): Float\nexport function starSDF(st: Vec2, V: any, s?: any): any {\n if (s !== undefined) {\n return starSDFWithScale(st, V, s)\n } else {\n return starSDFSimple(st, V)\n }\n}\n\nexport const starSDFWithScale = Fn(([st, V, s]: [Vec2, Int, Float]): Float => {\n const centeredSt = st.sub(0.5).mul(2).toVar('centeredSt')\n const a = atan2(centeredSt.y, centeredSt.x).div(TAU).toVar('a')\n const seg = a.mul(V.toFloat()).toVar('seg')\n const finalA = seg\n .floor()\n .add(0.5)\n .div(V.toFloat())\n .add(s.mix(s.negate(), step(0.5, seg.fract())))\n .mul(TAU)\n .toVar('finalA')\n return vec2(finalA.cos(), finalA.sin()).dot(centeredSt).abs()\n}).setLayout({\n name: 'starSDFWithScale',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const starSDFSimple = Fn(([st, V]: [Vec2, Int]): Float => {\n const scaledSt = scale2dWithCenter(st, V.toFloat().reciprocal().mul(12), vec2(0.5))\n return starSDFWithScale(scaledSt as any, V, float(0.1))\n}).setLayout({\n name: 'starSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, cos, sin, pow, abs, float } from '../../node'\nimport { cart2polar } from '../space/cart2polar'\n\nexport const superShapeSDFCenter = Fn(\n ([st, center, s, a, b, n1, n2, n3, m]: [\n Vec2,\n Vec2,\n Float,\n Float,\n Float,\n Float,\n Float,\n Float,\n Float\n ]): Float => {\n st.assign(st.sub(center))\n const polar = cart2polar(st).toVar('polar')\n const d = polar.y.mul(5).toVar('d')\n const theta = polar.x.toVar('theta')\n const t1 = abs(\n float(1)\n .div(a)\n .mul(cos(m.mul(theta).mul(0.25)))\n ).toVar('t1')\n t1.assign(pow(t1, n2))\n const t2 = abs(\n float(1)\n .div(b)\n .mul(sin(m.mul(theta).mul(0.25)))\n ).toVar('t2')\n t2.assign(pow(t2, n3))\n const t3 = t1.add(t2).toVar('t3')\n const r = pow(t3, float(-1).div(n1)).toVar('r')\n const q = s\n .mul(r)\n .mul(vec2(cos(theta), sin(theta)))\n .toVar('q')\n return d.sub(q.length())\n }\n).setLayout({\n name: 'superShapeSDFCenter',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'a', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 'n1', type: 'float' },\n { name: 'n2', type: 'float' },\n { name: 'n3', type: 'float' },\n { name: 'm', type: 'float' },\n ],\n})\n\nexport const superShapeSDF = Fn(\n ([st, s, a, b, n1, n2, n3, m]: [Vec2, Float, Float, Float, Float, Float, Float, Float]): Float => {\n return superShapeSDFCenter(st, vec2(0.5), s, a, b, n1, n2, n3, m)\n }\n).setLayout({\n name: 'superShapeSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'a', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 'n1', type: 'float' },\n { name: 'n2', type: 'float' },\n { name: 'n3', type: 'float' },\n { name: 'm', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec2 } from '../../node'\n\nexport const tetrahedronSDF = Fn(([p, h]: [Vec3, Float]): Float => {\n const q = p.abs().toVar('q')\n const y = p.y.toVar('y')\n const d1 = q.z.sub(y.max(0)).toVar('d1')\n const d2 = q.x\n .mul(0.5)\n .add(y.mul(0.5))\n .max(0)\n .sub(h.min(h.add(y)))\n .toVar('d2')\n return vec2(d1, d2).max(0.005).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'tetrahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float } from '../../node'\n\nexport const triPrismSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const q = p.abs().toVar('q')\n return q.z.sub(h.y).max(q.x.mul(0.866025).add(p.y.mul(0.5)).max(p.y.negate()).sub(h.x.mul(0.5)))\n}).setLayout({\n name: 'triPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const sphereSDF = Fn(([p]: [Vec3]) => {\n return p.length()\n}).setLayout({\n name: 'sphereSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const sphereSDFRadius = Fn(([p, s]: [Vec3, Float]) => {\n return p.length().sub(s)\n}).setLayout({\n name: 'sphereSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float, vec2, select } from '../../node'\n\nexport const torusSDF = Fn(([p, t]: [Vec3, Vec2]): Float => {\n return vec2(vec2(p.x, p.z).length().sub(t.x), p.y).length().sub(t.y)\n}).setLayout({\n name: 'torusSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 't', type: 'vec2' },\n ],\n})\n\nexport const torusSDFSector = Fn(([p, sc, ra, rb]: [Vec3, Vec2, Float, Float]): Float => {\n const px = p.x.abs().toVar('px')\n const k = select(vec2(px, p.y).length(), vec2(px, p.y).dot(sc), sc.y.mul(px).greaterThan(sc.x.mul(p.y)))\n return p.dot(p).add(ra.mul(ra)).sub(ra.mul(k).mul(2)).sqrt().sub(rb)\n}).setLayout({\n name: 'torusSDFSector',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'sc', type: 'vec2' },\n { name: 'ra', type: 'float' },\n { name: 'rb', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, float } from '../../node'\n\nexport const vesicaSDF = Fn(([st, w]: [Vec2, Float]): Float => {\n const offset = vec2(w.mul(0.5), 0)\n const circle1 = st.sub(offset).length().sub(0.5)\n const circle2 = st.add(offset).length().sub(0.5)\n return circle1.max(circle2)\n}).setLayout({\n name: 'vesicaSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'w', type: 'float' },\n ],\n})\n\nexport const vesicaSDFDefault = Fn(([st]: [Vec2]): Float => {\n return vesicaSDF(st, float(0.5))\n}).setLayout({\n name: 'vesicaSDFDefault',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2 } from '../../node'\n\nexport const aspect = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n const result = st.toVar('result')\n result.x.assign(result.x.mul(s.x.div(s.y)))\n return result\n}).setLayout({\n name: 'aspect',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' }\n ]\n})","import { Fn, Vec2, Float, mat2, atan2, cos, sin, mod, vec2, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nconst BRACKETING_ANGLE_DELTA = PI.div(20.0)\n\nexport const bracketingAxis0 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n return vec2(cos(angle0), sin(angle0))\n}).setLayout({\n name: 'bracketingAxis0',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingAxis1 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n const vAxis0 = vec2(cos(angle0), sin(angle0))\n const RotateByAngleDelta = mat2(\n cos(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA).negate(),\n cos(BRACKETING_ANGLE_DELTA)\n )\n return RotateByAngleDelta.mul(vAxis0)\n}).setLayout({\n name: 'bracketingAxis1',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingBlend = Fn(([dir]: [Vec2]): Float => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n return fractional.div(BRACKETING_ANGLE_DELTA)\n}).setLayout({\n name: 'bracketingBlend',\n type: 'float',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, floor, fract } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const brickTile = Fn(([t]: [Vec4]): Vec4 => {\n const result = t.toVar('result')\n result.x.assign(result.x.add(mod(result.w, 2).mul(0.5)))\n result.z.assign(floor(result.z.add(result.x)))\n result.x.assign(fract(result.x))\n return result\n}).setLayout({\n name: 'brickTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const brickTileVec2 = Fn(([st]: [Vec2]): Vec4 => {\n return brickTile(sqTile(st))\n}).setLayout({\n name: 'brickTileVec2',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const brickTileFloat = Fn(([st, s]: [Vec2, Float]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const brickTileVec2Scale = Fn(([st, s]: [Vec2, Vec2]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4, fract, floor } from '../../node'\n\nexport const sqTile = Fn(([st]: [Vec2]): Vec4 => {\n return vec4(fract(st), floor(st))\n}).setLayout({\n name: 'sqTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const sqTileScale = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return sqTile(st.mul(scale))\n}).setLayout({\n name: 'sqTileScale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction center(x: Float): Float\nfunction center(v: Vec2): Vec2\nfunction center(v: Vec3): Vec3\nfunction center(v: any): any {\n return v.mul(2).sub(1)\n}\n\nexport const centerFloat = Fn(([x]: [Float]): Float => {\n return center(x)\n}).setLayout({\n name: 'centerFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const centerVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return center(v)\n}).setLayout({\n name: 'centerVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const centerVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return center(v)\n}).setLayout({\n name: 'centerVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const checkerTile = Fn(([t]: [Vec4]): Float => {\n const c = mod(t.zw, 2).toVar('c')\n return abs(c.x.sub(c.y))\n}).setLayout({\n name: 'checkerTile',\n type: 'float',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const checkerTileVec2 = Fn(([v]: [Vec2]): Float => {\n return checkerTile(sqTile(v))\n}).setLayout({\n name: 'checkerTileVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const checkerTileFloat = Fn(([v, s]: [Vec2, Float]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const checkerTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileVec2Scale',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, select } from '../../node'\n\n// Perspective projection version\nexport const depth2viewZ = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return near.mul(far).div(far.sub(near).mul(depth).sub(far))\n}).setLayout({\n name: 'depth2viewZ',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Orthographic projection version\nexport const depth2viewZOrthographic = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return depth.mul(near.sub(far)).sub(near)\n}).setLayout({\n name: 'depth2viewZOrthographic',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Combined version with orthographic flag\nexport const depth2viewZCombined = Fn(([depth, near, far, orthographic]: [Float, Float, Float, Float]): Float => {\n const perspective = near.mul(far).div(far.sub(near).mul(depth).sub(far))\n const ortho = depth.mul(near.sub(far)).sub(near)\n return select(ortho, perspective, orthographic.greaterThan(0.5))\n}).setLayout({\n name: 'depth2viewZCombined',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n { name: 'orthographic', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, X, texture, float, vec3, int, Loop, If } from '../../node'\nimport { lookAtBasic } from './lookAt'\n\nconst DISPLACE_DEPTH = float(1).constant('DISPLACE_DEPTH')\nconst DISPLACE_PRECISION = float(0.01).constant('DISPLACE_PRECISION')\nconst DISPLACE_MAX_ITERATIONS = int(120).constant('DISPLACE_MAX_ITERATIONS')\n\nexport const displace = Fn(([tex, ro, rd]: [X, Vec3, Vec3]): Vec3 => {\n const dz = ro.z.sub(DISPLACE_DEPTH).toVar('dz')\n const t = dz.div(rd.z).toVar('t')\n const prev = vec3(ro.x.sub(rd.x.mul(t)), ro.y.sub(rd.y.mul(t)), ro.z.sub(rd.z.mul(t))).toVar('prev')\n const curr = prev.toVar('curr')\n const lastD = prev.z.toVar('lastD')\n const hmap = float(0).toVar('hmap')\n const df = float(0).toVar('df')\n\n Loop(DISPLACE_MAX_ITERATIONS, () => {\n prev.assign(curr)\n curr.assign(prev.add(rd.mul(DISPLACE_PRECISION)))\n hmap.assign(texture(tex, curr.xy.sub(0.5)).r)\n df.assign(curr.z.sub(hmap.mul(DISPLACE_DEPTH)))\n\n If(df.lessThan(0), () => {\n const t = lastD.div(df.abs().add(lastD)).toVar('t')\n return prev.add(t.mul(curr.sub(prev))).add(vec3(0.5, 0.5, 0))\n })\n\n lastD.assign(df)\n })\n\n return vec3(0, 0, 1)\n}).setLayout({\n name: 'displace',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'rd', type: 'vec3' },\n ],\n})\n\nexport const displaceUV = Fn(([tex, ro, uv]: [X, Vec3, Vec2]): Vec3 => {\n const rd = lookAtBasic(ro.negate())\n .mul(vec3(uv.sub(float(0.5)), 1).normalize())\n .toVar('rd')\n return displace(tex, ro, rd)\n}).setLayout({\n name: 'displaceUV',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'uv', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, mat3 } from '../../node'\n\nexport const lookAtForward = Fn(([forward, up]: [Vec3, Vec3]) => {\n const zaxis = forward.normalize().toVar()\n const xaxis = up.cross(zaxis).normalize().toVar()\n const yaxis = zaxis.cross(xaxis).toVar()\n return mat3(xaxis, yaxis, zaxis)\n}).setLayout({\n name: 'lookAtForward',\n type: 'mat3',\n inputs: [\n { name: 'forward', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAt = Fn(([eye, target, up]: [Vec3, Vec3, Vec3]) => {\n const forward = target.sub(eye).normalize().toVar()\n return lookAtForward(forward, up)\n}).setLayout({\n name: 'lookAt',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtRoll = Fn(([eye, target, roll]: [Vec3, Vec3, Float]) => {\n const up = vec3(roll.sin(), roll.cos(), 0).toVar()\n return lookAt(eye, target, up)\n}).setLayout({\n name: 'lookAtRoll',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtBasic = Fn(([forward]: [Vec3]) => {\n return lookAtForward(forward, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtBasic',\n type: 'mat3',\n inputs: [{ name: 'forward', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, vec3, cos, sin, sqrt, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const equirect2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const phi = PI.sub(uv.y.mul(PI)).toVar('phi')\n const theta = uv.x.mul(TWO_PI).toVar('theta')\n const dir = vec3(cos(theta), 0, sin(theta)).toVar('dir')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'equirect2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec3, Mat4, mat3 } from '../../node'\nimport { rotate3dX, rotate3dY, rotate3dZ } from '../math'\nimport { translateMat3 } from './translate'\n\nexport const eulerView = Fn(([position, euler]: [Vec3, Vec3]): Mat4 => {\n const rotZ = rotate3dZ(euler.z)\n const rotX = rotate3dX(euler.x)\n const rotY = rotate3dY(euler.y)\n const identity = mat3(1).toVar('identity')\n const rotation = rotY.mul(rotX).mul(rotZ).mul(identity).toVar('rotation')\n return translateMat3(rotation, position)\n}).setLayout({\n name: 'eulerView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'euler', type: 'vec3' },\n ],\n})\n","import { Fn, Mat3, Vec3, vec4, mat4 } from '../../node'\n\nexport const translateMat3 = Fn(([m, translation]: [Mat3, Vec3]) => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(translation, 1))\n}).setLayout({\n name: 'translateMat3',\n type: 'mat4',\n inputs: [\n { name: 'm', type: 'mat3' },\n { name: 'translation', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec3, sqrt, cos, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const fisheye2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const ndc = uv.mul(2).sub(1).toVar('ndc')\n const R = sqrt(ndc.x.mul(ndc.x).add(ndc.y.mul(ndc.y))).toVar('R')\n const dir = vec3(ndc.x.div(R), 0, ndc.y.div(R)).toVar('dir')\n const phi = R.mul(PI).mul(0.52).toVar('phi')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'fisheye2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4 } from '../../node'\n\nexport const flipYVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(v.x, v.y.oneMinus())\n}).setLayout({\n name: 'flipY',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const flipYVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return vec3(v.x, v.y.oneMinus(), v.z)\n}).setLayout({\n name: 'flipY',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const flipYVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(v.x, v.y.oneMinus(), v.z, v.w)\n}).setLayout({\n name: 'flipY',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec2, Vec4, vec2, vec4, float, floor, dot, select } from '../../node'\n\nexport const hexTile = Fn(([st]: [Vec2]): Vec4 => {\n const s = vec2(1, 1.7320508).toVar('s')\n const o = vec2(0.5, 1).toVar('o')\n const stYX = vec2(st.y, st.x).toVar('stYX')\n const i = floor(vec4(stYX, stYX.sub(o)).div(vec4(s, s)))\n .add(0.5)\n .toVar('i')\n const f = vec4(stYX.sub(i.xy.mul(s)), stYX.sub(i.zw.add(0.5).mul(s))).toVar('f')\n const dotXY = dot(f.xy, f.xy)\n const dotZW = dot(f.zw, f.zw)\n return select(vec4(f.wz.add(float(0.5)), i.zw.add(o)), vec4(f.yx.add(float(0.5)), i.xy), dotXY.lessThan(dotZW))\n}).setLayout({\n name: 'hexTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, vec2, float, length, atan2, floor, min, max, cos, sin } from '../../node'\nimport { TWO_PI } from '../math/const'\n\nconst kaleidoscopeCore = (coord: Vec2, segmentCount: Float, phase: Float) => {\n const uv = coord.sub(0.5).toVar('uv')\n const radius = length(uv).toVar('radius')\n const angle = atan2(uv.y, uv.x).toVar('angle')\n const segmentAngle = float(TWO_PI).div(segmentCount).toVar('segmentAngle')\n const adjustedAngle = angle.sub(segmentAngle.mul(floor(angle.div(segmentAngle)))).toVar('adjustedAngle')\n const finalAngle = min(adjustedAngle, segmentAngle.sub(adjustedAngle)).toVar('finalAngle')\n const kuv = vec2(cos(finalAngle.add(phase)), sin(finalAngle.add(phase)))\n .mul(radius)\n .add(0.5)\n .toVar('kuv')\n return max(min(kuv, kuv.mul(-1).add(2)), kuv.negate())\n}\n\nexport const kaleidoscope = Fn(([coord, segmentCount, phase]: [Vec2, Float, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, phase)\n}).setLayout({\n name: 'kaleidoscope',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const kaleidoscopeDefault = Fn(([coord]: [Vec2]): Vec2 => {\n return kaleidoscopeCore(coord, float(8), float(0))\n}).setLayout({\n name: 'kaleidoscopeDefault',\n type: 'vec2',\n inputs: [{ name: 'coord', type: 'vec2' }],\n})\n\nexport const kaleidoscopeCount = Fn(([coord, segmentCount]: [Vec2, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, float(0))\n}).setLayout({\n name: 'kaleidoscopeCount',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const linearizeDepth = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n const normalizedDepth = depth.mul(2).sub(1).toVar('normalizedDepth')\n return near\n .mul(far)\n .mul(2)\n .div(far.add(near).sub(normalizedDepth.mul(far.sub(near))))\n}).setLayout({\n name: 'linearizeDepth',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4 } from '../../node'\nimport { sqTile } from './sqTile'\nimport { mirror } from '../math/mirror'\n\nexport const mirrorTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.xy.add(t.zw)), t.z, t.w)\n}).setLayout({\n name: 'mirrorTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorTile(sqTile(v))\n}).setLayout({\n name: 'mirrorTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const mirrorTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const mirrorXTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.x.add(t.z)), t.y, t.z, t.w)\n}).setLayout({\n name: 'mirrorXTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorXTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorXTile(sqTile(v))\n}).setLayout({\n name: 'mirrorXTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorYTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(t.x, mirror(t.y.add(t.w)), t.z, t.w)\n}).setLayout({\n name: 'mirrorYTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorYTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorYTile(sqTile(v))\n}).setLayout({\n name: 'mirrorYTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const orthographic = Fn(([l, r, b, t, n, f]: [Float, Float, Float, Float, Float, Float]): Mat4 => {\n const width = r.sub(l).toVar('width')\n const height = t.sub(b).toVar('height')\n const depth = f.sub(n).toVar('depth')\n\n return mat4(\n vec4(width.reciprocal().mul(2), 0, 0, 0),\n vec4(0, height.reciprocal().mul(2), 0, 0),\n vec4(0, 0, depth.reciprocal().mul(-2), 0),\n vec4(r.add(l).div(width).negate(), t.add(b).div(height).negate(), f.add(n).div(depth).negate(), 1)\n )\n}).setLayout({\n name: 'orthographic',\n type: 'mat4',\n inputs: [\n { name: 'l', type: 'float' },\n { name: 'r', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 't', type: 'float' },\n { name: 'n', type: 'float' },\n { name: 'f', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, X, texture, float, vec2, vec3, int, Loop, If, Break } from '../../node'\n\nconst PARALLAXMAPPING_SCALE = float(0.01).constant('PARALLAXMAPPING_SCALE')\nconst PARALLAXMAPPING_NUMSEARCHES = float(10).constant('PARALLAXMAPPING_NUMSEARCHES')\n\nexport const parallaxMappingSimple = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const initialHeight = texture(tex, T).r.toVar('initialHeight')\n const texCoordOffset = PARALLAXMAPPING_SCALE.mul(V.xy).mul(initialHeight).toVar('texCoordOffset')\n return T.sub(texCoordOffset)\n}).setLayout({\n name: 'parallaxMappingSimple',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingSteep = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.mul(0.5).toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingSteep',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingRelief = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const deltaTexCoord = dtex.mul(0.5).toVar('deltaTexCoord')\n const deltaHeight = layerHeight.mul(0.5).toVar('deltaHeight')\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n\n Loop(int(5), ({ i }) => {\n deltaTexCoord.mulAssign(0.5)\n deltaHeight.mulAssign(0.5)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n\n If(heightFromTexture.greaterThan(currentLayerHeight), () => {\n currentTextureCoords.subAssign(deltaTexCoord)\n currentLayerHeight.addAssign(deltaHeight)\n }).Else(() => {\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n })\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingRelief',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingOcclusion = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const curLayerHeight = float(0).toVar('curLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n const prevTCoords = currentTextureCoords.toVar('prevTCoords')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(curLayerHeight), () => {\n Break()\n })\n curLayerHeight.addAssign(layerHeight)\n prevTCoords.assign(currentTextureCoords)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const nextH = heightFromTexture.sub(curLayerHeight).toVar('nextH')\n const prevH = texture(tex, prevTCoords).r.sub(curLayerHeight).add(layerHeight).toVar('prevH')\n const weight = nextH.div(nextH.sub(prevH)).toVar('weight')\n const finalTexCoords = prevTCoords\n .mul(weight)\n .add(currentTextureCoords.mul(float(1).sub(weight)))\n .toVar('finalTexCoords')\n\n return finalTexCoords\n}).setLayout({\n name: 'parallaxMappingOcclusion',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMapping = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n return parallaxMappingOcclusion(tex, V, T)\n}).setLayout({\n name: 'parallaxMapping',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, tan, float } from '../../node'\n\nexport const perspective = Fn(([fov, aspect, near, far]: [Float, Float, Float, Float]): Mat4 => {\n const f = float(1)\n .div(tan(fov.div(2)))\n .toVar('f')\n const nf = float(1).div(near.sub(far)).toVar('nf')\n // prettier-ignore\n return mat4(\n f.div(aspect), 0, 0, 0,\n 0, f, 0, 0,\n 0, 0, far.add(near).mul(nf), -1,\n 0, 0, float(2).mul(far).mul(near).mul(nf), 0\n )\n}).setLayout({\n name: 'perspective',\n type: 'mat4',\n inputs: [\n { name: 'fov', type: 'float' },\n { name: 'aspect', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, cos, sin, vec2, vec3 } from '../../node'\n\nexport const polar2cart = Fn(([polar]: [Vec2]): Vec2 => {\n return vec2(cos(polar.x), sin(polar.x)).mul(polar.y)\n}).setLayout({\n name: 'polar2cart',\n type: 'vec2',\n inputs: [{ name: 'polar', type: 'vec2' }],\n})\n\nexport const polar2cart3D = Fn(([r, phi, theta]: [Float, Float, Float]): Vec3 => {\n const x = r.mul(cos(theta)).mul(sin(phi)).toVar('x')\n const y = r.mul(sin(theta)).mul(sin(phi)).toVar('y')\n const z = r.mul(cos(phi)).toVar('z')\n return vec3(x, y, z)\n}).setLayout({\n name: 'polar2cart3D',\n type: 'vec3',\n inputs: [\n { name: 'r', type: 'float' },\n { name: 'phi', type: 'float' },\n { name: 'theta', type: 'float' },\n ],\n})\n","import { Fn, Vec2, mix, vec2, step } from '../../node'\n\nexport const ratio = Fn(([v, s]: [Vec2, Vec2]): Vec2 => {\n const wideAspect = vec2(v.x.mul(s.x.div(s.y)).sub(s.x.mul(0.5).sub(s.y.mul(0.5)).div(s.y)), v.y)\n const tallAspect = vec2(v.x, v.y.mul(s.y.div(s.x)).sub(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.x)))\n return mix(wideAspect, tallAspect, step(s.x, s.y))\n}).setLayout({\n name: 'ratio',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, floor, fract } from '../../node'\n\nexport const sprite = Fn(([st, grid, index]: [Vec2, Vec2, Float]): Vec2 => {\n const adjustedIndex = index.add(grid.x).toVar('adjustedIndex')\n const f = vec2(1).div(grid).toVar('f')\n const cell = vec2(floor(adjustedIndex), grid.y.sub(floor(adjustedIndex.mul(f.x)))).toVar('cell')\n return fract(st.add(cell).mul(f))\n}).setLayout({\n name: 'sprite',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'grid', type: 'vec2' },\n { name: 'index', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Mat3, mat3, normalize, cross } from '../../node'\n\nexport const tbn = Fn(([t, b, n]: [Vec3, Vec3, Vec3]): Mat3 => {\n return mat3(t, b, n)\n}).setLayout({\n name: 'tbn',\n type: 'mat3',\n inputs: [\n { name: 't', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'n', type: 'vec3' },\n ],\n})\n\nexport const tbnFromNormal = Fn(([n, up]: [Vec3, Vec3]): Mat3 => {\n const t = normalize(cross(up, n)).toVar('t')\n const b = cross(n, t).toVar('b')\n return tbn(t, b, n)\n}).setLayout({\n name: 'tbnFromNormal',\n type: 'mat3',\n inputs: [\n { name: 'n', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { lookAt, lookAtRoll } from './lookAt'\nimport { translateMat3 } from './translate'\n\nexport const lookAtView = Fn(([position, target, up]: [Vec3, Vec3, Vec3]) => {\n const m = lookAt(position, target, up).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtViewRoll = Fn(([position, target, roll]: [Vec3, Vec3, Float]) => {\n const m = lookAtRoll(position, target, roll).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtViewRoll',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtViewBasic = Fn(([position, target]: [Vec3, Vec3]) => {\n return lookAtView(position, target, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtViewBasic',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const rotate2DCenter = Fn(([v, r, c]: [Vec2, Float, Vec2]) => {\n return rotate2d(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotate2DCenter',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec2' },\n ],\n})\n\nexport const rotate2DBasic = Fn(([v, r]: [Vec2, Float]) => {\n return rotate2DCenter(v, r, vec2(0.5))\n}).setLayout({\n name: 'rotate2DBasic',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const rotate2DAxis = Fn(([v, xAxis]: [Vec2, Vec2]) => {\n const negYAxis = vec2(xAxis.y.negate(), xAxis.x).toVar()\n return vec2(v.dot(negYAxis), v.dot(xAxis))\n}).setLayout({\n name: 'rotate2DAxis',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'xAxis', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dX } from '../math/rotate4dX'\n\n// vec4 rotateX(in vec4 v, in float r, in vec4 c)\nexport const rotateXVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dX(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateXVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateX(in vec4 v, in float r)\nexport const rotateXVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dX(r).mul(v)\n}).setLayout({\n name: 'rotateXVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r, in vec3 c)\nexport const rotateXVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dX(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateXVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r)\nexport const rotateXVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dX(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateXVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dY } from '../math/rotate4dY'\n\n// vec4 rotateY(in vec4 v, in float r, in vec4 c)\nexport const rotateYVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dY(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateYVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateY(in vec4 v, in float r)\nexport const rotateYVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dY(r).mul(v)\n}).setLayout({\n name: 'rotateYVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r, in vec3 c)\nexport const rotateYVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dY(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateYVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r)\nexport const rotateYVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dY(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateYVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dZ } from '../math/rotate4dZ'\n\n// vec4 rotateZ(in vec4 v, in float r, in vec4 c)\nexport const rotateZVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dZ(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateZVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateZ(in vec4 v, in float r)\nexport const rotateZVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dZ(r).mul(v)\n}).setLayout({\n name: 'rotateZVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r, in vec3 c)\nexport const rotateZVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dZ(r)\n .mul(vec4(v.sub(c), 0))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateZVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r)\nexport const rotateZVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dZ(r).mul(vec4(v, 0)).xyz\n}).setLayout({\n name: 'rotateZVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const unratio = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return vec2(st.x, st.y.mul(s.x.div(s.y)).add(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.y)))\n}).setLayout({\n name: 'unratio',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction uncenter(x: Float): Float\nfunction uncenter(v: Vec2): Vec2\nfunction uncenter(v: Vec3): Vec3\nfunction uncenter(v: any): any {\n return v.mul(0.5).add(0.5)\n}\n\nexport const uncenterFloat = Fn(([x]: [Float]): Float => {\n return uncenter(x)\n}).setLayout({\n name: 'uncenterFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const uncenterVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const uncenterVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const viewZ2depth = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).mul(far).div(far.sub(near).mul(viewZ))\n}).setLayout({\n name: 'viewZ2depth',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\nexport const viewZ2depthOrthographic = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).div(near.sub(far))\n}).setLayout({\n name: 'viewZ2depthOrthographic',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, atan2, acos } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const xyz2equirect = Fn(([d]: [Vec3]): Vec2 => {\n return vec2(atan2(d.z, d.x).add(PI), acos(d.y.negate())).div(vec2(TWO_PI, PI))\n}).setLayout({\n name: 'xyz2equirect',\n type: 'vec2',\n inputs: [{ name: 'd', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mat2, vec2, vec4, floor, fract, dot } from '../../node'\n\nexport const triTile = Fn(([st]: [Vec2]): Vec4 => {\n const transformed = st.mul(mat2(vec2(1, -1 / 1.7320508), vec2(0, 2 / 1.7320508))).toVar()\n const f = vec4(transformed, transformed.negate()).toVar()\n const i = floor(f).toVar()\n const fFractional = fract(f).toVar()\n\n const dotXY = dot(fFractional.xy, fFractional.xy)\n const dotZW = dot(fFractional.zw, fFractional.zw)\n\n const condition = dotXY.lessThan(dotZW)\n const trueValue = vec4(fFractional.xy, vec2(2, 1).mul(i.xy))\n const falseValue = vec4(fFractional.zw, vec2(2, 1).mul(i.zw).add(1).negate())\n\n return falseValue.select(trueValue, condition)\n}).setLayout({\n name: 'triTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triTileScaled = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return triTile(st.mul(scale))\n}).setLayout({\n name: 'triTileScaled',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs, vec4 } from '../../node'\nimport { TWO_PI } from '../math'\nimport { rotate2DBasic } from './rotate'\nimport { sqTile } from './sqTile'\n\nexport const windmillTile = Fn(([t, turn]: [Vec4, Float]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(turn)), t.zw)\n}).setLayout({\n name: 'windmillTile',\n type: 'vec4',\n inputs: [\n { name: 't', type: 'vec4' },\n { name: 'turn', type: 'float' },\n ],\n})\n\nexport const windmillTileDefault = Fn(([t]: [Vec4]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(TWO_PI)), t.zw)\n}).setLayout({\n name: 'windmillTileDefault',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const windmillTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return windmillTileDefault(sqTile(v))\n}).setLayout({\n name: 'windmillTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const windmillTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const windmillTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n"],"mappings":"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","names":["Fn","pow","sin","float","EIGHTH_PI","QTR_PI","HALF_PI","PI","TWO_PI","TAU","INV_PI","INV_SQRT_TAU","SQRT_HALF_PI","PHI","EPSILON","GOLDEN_RATIO","GOLDEN_RATIO_CONJUGATE","GOLDEN_ANGLE","DEG2RAD","RAD2DEG","backIn","Fn","pow","sin","PI","Fn","float","backInOut","Fn","f","float","g","backIn","Fn","float","backOut","Fn","float","backIn","Fn","float","Fn","float","bounceOut","a","b","c","ca","cb","cc","t2","bounceIn","Fn","float","bounceOut","Fn","float","bounceInOut","Fn","float","bounceOut","Fn","circularIn","Fn","circularInOut","early","late","Fn","float","circularOut","Fn","cubicIn","Fn","cubicInOut","early","late","Fn","cubicOut","f","Fn","sin","pow","float","elasticIn","Fn","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticInOut","Fn","t2","t2minus1","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticOut","Fn","sin","float","HALF_PI","pow","Fn","exponentialIn","Fn","exponentialInOut","isZeroOrOne","early","late","result","Fn","exponentialOut","Fn","linearIn","Fn","linearInOut","Fn","linearOut","Fn","quadraticIn","Fn","select","quadraticInOut","p","Fn","quadraticOut","Fn","quarticIn","Fn","select","quarticInOut","early","late","Fn","quarticOut","it","Fn","quinticIn","Fn","select","quinticInOut","early","late","Fn","quinticOut","Fn","sin","sineIn","Fn","sin","HALF_PI","Fn","cos","sineInOut","Fn","cos","PI","Fn","sin","sineOut","Fn","sin","HALF_PI","Fn","min","vec3","blendAdd","base","blend","blendAddVec3","blendAddVec3Opacity","opacity","Fn","blendAverage","base","blend","blendAverageVec3","blendAverageVec3Opacity","opacity","Fn","vec3","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hsv","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","H","S","V","rgb2hsvVec4","Fn","vec4","Fn","float","vec3","hue2rgb","hue","R","G","B","hsv2rgb","Fn","hsv","hue2rgb","hsv2rgbVec4","vec4","blendColor","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendColorOpacity","opacity","Fn","vec3","max","select","blendColorBurn","base","blend","blendColorBurnVec3","blendColorBurnVec3Opacity","opacity","Fn","vec3","min","select","blendColorDodge","base","blend","blendColorDodgeVec3","blendColorDodgeVec3Opacity","opacity","Fn","vec3","min","blendDarken","base","blend","blendDarkenVec3","blendDarkenVec3Opacity","opacity","Fn","abs","blendDifference","base","blend","blendDifferenceVec3","blendDifferenceVec3Opacity","opacity","Fn","blendExclusion","base","blend","blendExclusionVec3","blendExclusionVec3Opacity","opacity","Fn","Fn","vec3","min","select","blendReflect","base","blend","blendReflectVec3","blendReflectVec3Opacity","opacity","blendGlow","Fn","base","blend","blendReflect","blendGlowVec3","blendReflectVec3","blendGlowVec3Opacity","opacity","Fn","Fn","vec3","If","blendOverlay","base","blend","blendOverlayVec3","blendOverlayVec3Opacity","opacity","blendHardLight","Fn","base","blend","blendOverlay","blendHardLightVec3","blendOverlayVec3","blendHardLightVec3Opacity","opacity","Fn","vec3","If","float","Fn","vec3","If","blendVividLight","Fn","base","blend","If","blendColorBurn","blendColorDodge","blendVividLightVec3","vec3","blendVividLightVec3Opacity","opacity","blendHardMix","Fn","base","blend","If","blendVividLight","float","blendHardMixVec3","vec3","blendHardMixVec3Opacity","opacity","Fn","vec3","blendHue","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","result","vec3","hsv2rgb","blendHueVec3Opacity","opacity","Fn","vec3","max","blendLighten","base","blend","blendLightenVec3","blendLightenVec3Opacity","opacity","Fn","vec3","max","blendLinearBurn","base","blend","blendLinearBurnVec3","blendLinearBurnVec3Opacity","opacity","Fn","vec3","blendLuminosity","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendLuminosityOpacity","opacity","Fn","blendMultiply","base","blend","blendMultiplyVec3","blendMultiplyVec3Opacity","opacity","Fn","vec3","min","blendLinearDodge","base","blend","blendLinearDodgeVec3","blendLinearDodgeVec3Opacity","opacity","Fn","vec3","If","blendLinearLight","Fn","base","blend","If","blendLinearBurn","blendLinearDodge","blendLinearLightVec3","vec3","blendLinearLightVec3Opacity","opacity","Fn","vec3","abs","float","blendNegation","base","blend","blendNegationVec3","blendNegationVec3Opacity","opacity","Fn","vec3","min","max","float","blendPhoenix","base","blend","blendPhoenixVec3","blendPhoenixVec3Opacity","opacity","Fn","vec3","If","blendPinLight","Fn","base","blend","If","blendDarken","blendLighten","blendPinLightVec3","vec3","blendPinLightVec3Opacity","opacity","Fn","vec3","blendSaturation","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendSaturationOpacity","opacity","Fn","vec3","float","blendScreenFloat","base","blend","blendScreen","blendScreenOpacity","opacity","Fn","If","sqrt","vec3","vec4","blendSoftLightFloat","base","blend","blendSoftLight","blendSoftLightVec3","blendSoftLightVec4","blendSoftLightVec3Opacity","opacity","Fn","max","vec3","blendSubtractFloat","base","blend","blendSubtract","blendSubtractVec3","blendSubtractVec3Opacity","opacity","Fn","vec4","compositeXorFloat","src","dst","compositeXor","compositeXorVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeXorVec4","resultRgb","resultA","Fn","vec4","compositeDestinationAtopFloat","src","dst","compositeDestinationAtop","compositeDestinationAtopVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationAtopVec4","resultRgb","resultA","Fn","vec4","compositeDestinationInFloat","src","dst","compositeDestinationIn","compositeDestinationInVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationInVec4","resultRgb","resultA","Fn","vec4","compositeDestinationOutFloat","src","dst","compositeDestinationOut","compositeDestinationOutVec3","_srcColor","dstColor","srcAlpha","_dstAlpha","compositeDestinationOutVec4","srcColor","resultRgb","resultA","Fn","vec4","compositeDestinationOverFloat","src","dst","compositeDestinationOver","compositeDestinationOverVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationOverVec4","resultRgb","resultA","Fn","vec4","compositeSourceAtopFloat","src","dst","compositeSourceAtop","compositeSourceAtopVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceAtopVec4","resultRgb","resultA","Fn","vec4","compositeSourceInFloat","src","dst","compositeSourceIn","compositeSourceInVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceInVec4","resultRgb","resultA","Fn","vec4","compositeSourceOutFloat","src","dst","compositeSourceOut","compositeSourceOutVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceOutVec4","resultRgb","resultA","Fn","vec4","compositeSourceOverFloat","src","dst","compositeSourceOver","compositeSourceOverVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceOverVec4","resultRgb","resultA","Fn","float","vec3","cmyk2rgb","cmyk","invK","Fn","float","vec4","GAMMA","gamma2linear","v","gamma2linearVec4","Fn","float","vec4","hsl2rgb","Fn","hsl","rgb","hue2rgb","C","float","hsl2rgbVec4","vec4","Fn","atan2","sqrt","vec3","vec4","lab2lch3","lab","chroma","hue","lab2lch4","lch","lab2lch","Fn","vec4","Fn","float","select","vec3","vec4","CIE_WHITE","lab2xyz","lab","fy","fx","fz","threshold","delta","factor","convertX","convertY","convertZ","lab2xyzVec4","Fn","mat3","vec4","XYZ2RGB","xyz2rgb","xyz","xyz2rgbVec4","lab2rgb","Fn","lab","xyz2rgb","lab2xyz","lab2rgbVec4","vec4","Fn","vec3","vec4","lch2lab3","lch","radians","lch2lab4","lab","lch2lab","Fn","vec4","lch2rgb3","Fn","lch","lab2rgb","lch2lab","lch2rgb4","rgb","vec4","lch2rgb","Fn","float","vec4","INV_GAMMA","linear2gamma","v","linear2gammaVec4","Fn","mat3","vec4","OKLAB2RGB_A","OKLAB2RGB_B","oklab2rgb3","oklab","lms","oklab2rgb4","rgb","oklab2rgb","Fn","float","vec4","step","Fn","min","mmin2","v","mmin3","mmin4","mmin","rgb2cmyk","Fn","rgb","k","mmin3","float","invK","cmy","step","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hcv","rgb","P_true","P_false","P_final","Q_true","Q_false","Q_final","C","H","rgb2hcvVec4","Fn","float","vec3","vec4","HSL_EPSILON","float","rgb2hsl","Fn","rgb","HCV","rgb2hcv","L","S","vec3","rgb2hslVec4","vec4","Fn","float","vec4","select","HUE_EPSILON","rgb2hue","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","rgb2hueVec4","Fn","vec4","Fn","mat3","vec4","RGB2XYZ","rgb2xyz","rgb","rgb2xyzVec4","Fn","vec3","vec4","step","mix","xyz2lab","xyz","n","c0","c1","v","L","A","B","xyz2labVec4","rgb2lab","Fn","rgb","xyz2lab","rgb2xyz","rgb2labVec4","vec4","Fn","vec4","rgb2lch3","Fn","rgb","lab2lch","rgb2lab","rgb2lch4","lch","vec4","rgb2lch","Fn","mat3","vec3","vec4","RGB2OKLAB_A","RGB2OKLAB_B","rgb2oklab3","rgb","lms","rgb2oklab4","oklab","rgb2oklab","Fn","float","vec3","vec4","select","SRGB_EPSILON","rgb2srgbFloat","c","rgb2srgbVec3","rgb","rgb2srgbVec4","rgb2srgb","Fn","mat3","vec4","RGB2YIQ","rgb2yiq3","rgb","rgb2yiq4","yiq","rgb2yiq","Fn","mat3","vec4","RGB2YUV_HDTV","RGB2YUV_SDTV","rgb2yuv3","rgb","rgb2yuv4","yuv","rgb2yuvSDTV","rgb2yuv","Fn","float","vec3","vec4","select","SRGB_EPSILON","srgb2rgbFloat","v","srgb2rgbVec3","srgb","srgb2rgbVec4","srgb2rgb","Fn","mat3","vec4","YIQ2RGB","yiq2rgb3","yiq","yiq2rgb4","rgb","yiq2rgb","Fn","mat3","vec4","YUV2RGB_HDTV","YUV2RGB_SDTV","yuv2rgb3","yuv","yuv2rgb4","rgb","yuv2rgbSDTV","yuv2rgb","Fn","float","vec2","length","clamp","min","step","If","Fn","clamp","dot","length","cross","lineSDF2D","st","a","b","b_to_a","to_a","h","lineSDF3D","p","lineSDF","ARROWS_TILE_SIZE","float","arrowsTileCenterCoord","Fn","pos","arrows","p","v","resolution","pScaled","mag_v","length","If","dir_v","clamp","vScaled","shaft","lineSDF","head1","vec2","head2","head","min","step","arrowsSimple","Fn","vec3","vec4","Fn","Fn","smoothstep","Fn","length","vec2","dFdx","dFdy","smoothstep","aastep","threshold","value","derivative","afwidth","fillWithEdge","Fn","x","size","edge","smoothstep","fill","aastep","line","Fn","st","a","b","thickness","fill","lineSDF","axis","Fn","st","M","pos","thickness","rta","vec4","center","axisX","aX","vec3","line","axisY","aY","axisZ","aZ","Fn","float","Fn","smoothstep","clamp","strokeWithEdge","Fn","x","size","w","edge","d","smoothstep","clamp","stroke","aastep","bridgeFloat","Fn","c","d","s","w","float","stroke","bridgeVec2","strokeMask","bridgeVec3","bridgeVec4","bridge","Fn","int","vec2","ivec2","ivec4","floor","pow","If","Fn","modi","x","y","xf","yf","quotient","CHAR_SIZE","vec2","CHAR_TOTAL","CHAR","CHAR_DATA","charLUT","Fn","index","result","ivec4","ifChain","If","int","i","char","uv","charCode","charCoord","ivec2","floor","col","fourLines","yMod4","modi","exponent","divisor","pow","currentLine","pixelDivisor","Fn","Fn","vec2","circleSDF","v","center","circleSDFBasic","circleFill","Fn","st","size","fill","circleSDFBasic","circleStroke","strokeWidth","stroke","circle","circleWithStroke","Fn","vec2","vec4","float","Fn","vec2","vec3","scale2d","st","s","scale2dWithCenter","center","scale2dVec","scale3d","Fn","vec3","If","int","colors","macbeth","index","result","ifChain","i","Fn","vec2","min","Fn","vec2","rectSDFBasic","st","normalizedSt","rectSDF","s","rectSDFUniform","rectSDFRounded","p","b","r","d","crossSDF","Fn","st","s","size","vec2","min","rectSDF","Fn","float","rectStroke","Fn","st","size","strokeWidth","stroke","rectSDF","float","rectStrokeUniform","rectSDFUniform","rectFill","fill","rectFillUniform","rect","colorCheckerTile","Fn","uv","st","scale2dVec","vec2","vec4","colorCheckerMacbeth","t","index","color","macbeth","rectFill","fill","crossSDF","float","stroke","rectSDF","alpha","colorChecker","Fn","vec2","vec4","texture","step","float","vec3","Fn","floor","nearest","v","res","offset","pickerSize","vec2","crosshairSize","float","colorPickerSample","Fn","tex","pos","texResolution","nearestPos","nearest","texture","colorPickerDisplay","st","pickerPos","pickedColor","displayPos","distToDisplay","inPatch","step","crosshair","borderWidth","inBorder","result","vec4","vec3","colorPicker","Fn","If","Loop","Break","float","vec2","int","DIGITS_SIZE","DIGITS_DECIMALS","DIGITS_VALUE_OFFSET","digitsCore","st","value","nDecDigit","adjustedSt","absValue","biggestDigitIndex","counter","nIntDigits","digit","digitIndex","digitValue","pos","bin","pixel","digitsFloat","digitsInt","digits","digitsVec2","v","rta","i","digitsVec3","digitsVec4","digitsMat2","matrix","pos00","pos01","pos10","pos11","Fn","float","vec3","vec4","mix","flipFloat","v","pct","flipVec3","flipVec4","flip","Fn","Fn","hexSDF","st","transformed","hexFill","Fn","st","size","fill","hexSDF","hexStroke","strokeWidth","stroke","hex","Fn","vec2","step","vec4","DIGITS_SIZE","vec2","DIGITS_VALUE_OFFSET","matrix","Fn","st","M","rta","vec4","size","step","digitsMat2","Fn","vec2","vec3","vec4","float","step","DIGITS_SIZE","vec2","DIGITS_VALUE_OFFSET","pointWithColor","Fn","st","pos","color","radius","rta","vec4","st_p","circleFill","size","step","digitsVec2","point","vec3","float","Fn","Fn","triSDF","st","centered","triSDFCenter","center","triFill","Fn","st","size","fill","triSDF","triStroke","strokeWidth","stroke","tri","struct","vec3","AABB","Fn","aabbCentroid","box","Fn","aabbContain","box","point","Fn","diagonal","box","Fn","expand","Fn","box","value","AABB","Fn","vec2","aabbIntersect","box","rayOrigin","rayDir","tMin","tMax","t1","t2","tNear","tFar","Fn","max","abs","square","Fn","box","diag","diagonal","center","maxDim","max","abs","AABB","Fn","length","cross","area","tri","Fn","length","cross","dot","vec3","float","barycentricFromVec3","Fn","a","b","c","daa","dot","dab","dbb","dca","dcb","denom","y","z","vec3","float","barycentric","tri","barycentricFromPosition","pos","f0","f1","f2","areaValue","area","length","cross","Fn","triangleCentroid","tri","Fn","dot","length","cross","normalize","max","min","float","If","closestPointWithNormal","Fn","tri","triNormal","pos","b","c","ab","ac","dot","ap","bcoords","barycentricFromVec3","If","bc","n","length","t","max","float","min","ca","closestPoint","a","normal","normalize","cross","Fn","cross","dot","triangleContain","tri","pos","localA","localB","localC","u","v","w","Fn","cross","dot","sign","sqrt","min","Fn","lengthSq","v","distanceSq","Fn","tri","pos","a","b","c","v21","p1","v32","p2","v13","p3","nor","cross","s1","sign","dot","s2","s3","signSum","edge1","lengthSq","edge2","edge3","edgeDistance","min","planeDistance","sqrt","Fn","cross","dot","float","struct","vec3","Ray","triangleIntersect","tri","rayOrigin","rayDir","v1v0","v2v0","rov0","point","q","d","u","v","t","isOutside","triangleIntersectRay","ray","Fn","cross","normalize","normal","tri","Fn","length","sign","dot","signedDistanceWithNormal","Fn","tri","triNormal","pos","nearest","closestPointWithNormal","delta","distance","length","sign","dot","signedDistance","normal","struct","vec3","Triangle","Fn","vec2","vec3","vec4","Fn","fun","x","mod289","mod289Vec2","mod289Vec3","mod289Vec4","Fn","fun","v","permute","Fn","mod289","permuteVec2","mod289Vec2","permuteVec3","mod289Vec3","permuteVec4","mod289Vec4","Fn","taylorInvSqrt","r","Fn","quintic","v","v3","inner","cnoiseVec2","Fn","P","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","cnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","cnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","float","Fn","vec2","vec3","vec4","float","Fn","vec4","vec3","float","grad4","j","ip","ones","p","s","snoiseVec2","Fn","v","C","vec4","i","x0","i1","vec2","x12","mod289Vec2","p","permuteVec3","vec3","m","float","x","h","ox","a0","g","snoiseVec3","D","l","i2","x1","x2","x3","mod289Vec3","permuteVec4","ns","j","x_","y_","y","b0","b1","s0","s1","sh","a1","p0","p1","p2","p3","norm","taylorInvSqrt","snoiseVec4","i0","isX","isYZ","i3","x4","mod289Vec4","j0","permute","j1","ip","grad4","p4","m0","m1","snoise2","s","snoise3Vec3","s2","snoise3Vec4","curlVec2","Fn","p","float","dx","vec2","dy","p_x0","snoise2","p_x1","p_y0","p_y1","x","y","divisor","curlVec3","vec3","dz","snoise3Vec3","p_z0","p_z1","z","curlVec4","vec4","snoise3Vec4","Fn","float","Loop","int","Fn","vec2","vec3","float","Fn","vec2","vec3","vec4","float","RANDOM_SCALE","random","x","randomVec2","st","randomVec3","pos","randomVec4","random2Float","p","p3","random2Vec2","random2Vec3","random3Float","random3Vec2","random3Vec3","random4Float","p4","random4Vec2","random4Vec3","random4Vec4","Fn","vec2","vec3","vec4","float","srandom","x","srandomVec2","st","srandomVec3","pos","srandomVec4","dot_product","srandom2Vec2","k","srandom3Vec3","p","srandom2Vec2Tiled","tileLength","srandom3Vec3Tiled","Fn","cubic","v","cubicVec2","cubicVec3","cubicVec4","cubicFloatSlopes","slope0","slope1","b","c","v2","v3","cubicVec2Slopes","cubicVec3Slopes","cubicVec4Slopes","gnoise","Fn","x","i","f","random","float","gnoiseVec2","st","randomVec2","b","vec2","c","d","u","cubicVec2","gnoiseVec3","p","quintic","randomVec3","vec3","gnoiseVec3Tiled","tileLength","srandom3Vec3Tiled","gnoise3","FBM_OCTAVES","int","FBM_SCALE_SCALAR","FBM_AMPLITUDE_INITIAL","FBM_AMPLITUDE_SCALAR","fbmVec2","Fn","st","value","float","amplitude","coord","Loop","snoiseVec2","fbmVec3","pos","posVar","snoiseVec3","fbmVec3Tiled","p","tileLength","persistence","lacunarity","total","normalization","pVar","noiseValue","gnoiseVec3Tiled","fbm","Fn","vec3","float","gerstnerWave","Fn","_uv","_dir","_steepness","_wavelength","_time","k","PI","c","float","d","f","a","vec3","Fn","vec2","vec3","vec4","noised","Fn","p","i","f","u","du","ga","srandom2Vec2","vec2","gb","gc","gd","va","vb","vc","vd","vec3","noisedVec3","pos","w","srandom3Vec3","ge","gf","gg","gh","ve","vf","vg","vh","noiseValue","gradientValue","vec4","Fn","vec2","vec3","vec4","pnoise","Fn","P","rep","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","pnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","pnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","mat3","If","float","psrdnoise2D","Fn","x","period","alpha","uv","vec2","i0","f0","cmp","o1","i1","i2","v0","v1","v2","x0","x1","x2","iu","vec3","iv","If","xw","yw","hash","mod289Vec3","psi","gx","gy","g0","g1","g2","w","w2","w4","gdotx","n","dw","dn0","dn1","dn2","gradient","psrdnoise3D","M","mat3","Mi","uvw","g_","l_","g","l","o2","i3","v3","x3","vx","vec4","vy","vz","permuteVec4","theta","sz","Ct","St","sz_prime","gz","Sp","Cp","px","py","pz","Ctp","qx","qy","qz","Sa","Ca","g3","w3","dn3","psrdnoise","float","psrdnoise2","psrdnoisePeriod","psrdnoiseAlpha","psrdnoise3","psrdnoise3Period","psrdnoise3Alpha","Fn","vec2","vec3","float","If","voronoi","Fn","uv","time","i_uv","f_uv","rta","vec3","neighbor_m1m1","vec2","point_m1m1","random2Vec2","float","TAU","dist_m1m1","If","neighbor_0m1","point_0m1","dist_0m1","neighbor_1m1","point_1m1","dist_1m1","neighbor_m10","point_m10","dist_m10","neighbor_00","point_00","dist_00","neighbor_10","point_10","dist_10","neighbor_m11","point_m11","dist_m11","neighbor_01","point_01","dist_01","neighbor_11","point_11","dist_11","voronoiVec2","p","voronoiVec3","Fn","vec2","vec3","int","float","Loop","voronoise","Fn","p","u","v","k","float","i","f","a","vec2","Loop","int","yLoop","yOffset","xLoop","xOffset","g","o","random3Vec2","vec3","d","w","voronoiseVec3","zLoop","zOffset","random3Vec3","Fn","Loop","int","float","mat2","Fn","mat2","rotate2d","r","c","s","wavelet","Fn","p","phase","k","d","float","s","m","Loop","int","i","q","a","randomVec2","rotate2d","mat2","waveletVec3K","waveletVec3","waveletVec2Phase","waveletVec2","Fn","Loop","int","float","vec2","vec3","If","Fn","abs","distance","max","pow","DIST_MINKOWSKI_P","distEuclidean","a","b","distManhattan","distManhattan3","distManhattan4","distChebychev","distChebychev3","distChebychev4","distMinkowski","p","distMinkowski3","distMinkowski4","dist","worley2Vec2","Fn","p","n","f","distF1","float","distF2","off1","vec2","pos1","off2","pos2","Loop","int","i","j","g","o","random2Vec2","point","distEuclidean","If","worleyVec2","worley2Vec3","vec3","k","random3Vec3","d","worleyVec3","Fn","dFdx","dFdy","fract","float","select","Fn","map","v","iMin","iMax","mapRange","oMin","oMax","aafloor","Fn","x","afwidth","dFdx","dFdy","fx","fract","idx","select","mapRange","float","Fn","dFdx","dFdy","fract","length","mix","smoothstep","vec2","select","float","nyquist","x","width","cutoffStart","cutoffEnd","f","aafract","afwidth","fx","idx","v","aafractVec2","Fn","dFdx","dFdy","length","vec2","floor","abs","Fn","mix","smoothstep","float","nyquist","x","width","f","aamirror","Fn","x","afwidth","length","vec2","dFdx","dFdy","v","abs","floor","nyquist","Fn","select","absi","x","Fn","step","adaptiveThreshold","v","blur_v","b","adaptiveThresholdSimple","Fn","bump","x","k","bumpSimple","Fn","cubicMix","Fn","a","b","t","cubic","cubicMixVec2","cubicVec2","cubicMixVec3","cubicVec3","cubicMixVec4","cubicVec4","Fn","decimate","v","p","Fn","cos","fwidth","smoothstep","fcos","Fn","x","w","fwidth","cos","smoothstep","TWO_PI","Fn","frac","x","Fn","float","select","gain","x","k","conditionValue","Fn","dot","gaussian","d","s","dotProduct","variance","Fn","float","vec2","vec3","uint","hammersley","index","numSamples","tof","bits","hemisphereCosSample","u","phi","PI","cosTheta2","cosTheta","sinTheta","Fn","max","float","highPass","v","b","Fn","all","inside","x","min","max","insideFloat","insideVec2","v","insideVec3","insideAABB","aabb","Fn","float","invCubic","v","Fn","invQuartic","v","Fn","float","inverse","m","Fn","mirror","x","f","m","fm","Fn","max","mmax2","v","mmax3","mmax4","mmax","Fn","mix","max","step","clamp","mmix","a","b","c","mmix3","pct","mmix4","d","Fn","vec4","mod2","p","s","halfS","pShifted","c","wrapped","mod2Cell","mod2Wrap","Fn","fract","vec3","vec4","float","PackUpscale","PackFactors","ShiftRight8","pack","v","r","Fn","parabola","x","k","Fn","pow2","v","Fn","pow3","x","Fn","pow5","x","v2","Fn","pow7","x","v2","Fn","float","powFast","a","b","Fn","mat3","vec3","float","quat2mat3","q","qxx","qyy","qzz","qxz","qxy","qyw","qzw","qyz","qxw","Fn","Fn","mat4","vec4","toMat4","m","quat2mat4","Fn","q","toMat4","quat2mat3","Fn","vec4","quatAdd","a","b","Fn","vec4","quatConj","q","Fn","vec4","quatDiv","q","s","Fn","vec4","quatIdentity","Fn","Fn","quatLengthSq","q","quatInverse","Fn","q","quatDiv","quatConj","quatLengthSq","Fn","quatLength","Fn","q","quatLengthSq","Fn","If","float","quatLerp","qa","qb","t","cosHalfTheta","adjustedQb","absCosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","Fn","vec4","quatMul","q1","q2","quatMulScalar","q","s","Fn","vec4","quatNeg","q","Fn","quatNorm","Fn","q","quatDiv","quatLength","Fn","vec4","quatSub","a","b","Fn","float","quartic","v","v2","Fn","float","mat3","vec3","rotate3d","a","r","axis","s","c","oc","col1","col2","col3","Fn","mat3","vec3","rotate3dX","r","c","s","Fn","mat3","vec3","rotate3dY","r","c","s","Fn","mat3","vec3","rotate3dZ","r","c","s","Fn","float","mat4","vec4","rotate4d","a","r","axis","s","c","oc","col1","col2","col3","col4","Fn","mat4","vec4","rotate4dX","r","c","s","Fn","mat4","vec4","rotate4dY","r","c","s","Fn","mat4","vec4","rotate4dZ","r","c","s","Fn","float","MEDIUMP_FLT_MAX","saturateMediump","x","Fn","mat2","scale2d","s","scale2dVec","scale2dXY","x","y","Fn","mat3","scale3d","s","scale3dVec","Fn","mat4","scale4d","s","scale4dXYZ","x","y","z","scale4dXYZW","w","scale4dVec3","scale4dVec4","Fn","smootherstep","Fn","a","b","v","saturated","quintic","Fn","mat3","toMat3","m","Fn","mat4","translate4d","x","y","z","t","Fn","dot","vec3","vec4","float","UnpackDownscale","PackFactors","UnpackFactors","unpack8","v","f","unpack16","unpack32","unpack64","unpack128","unpack256","unpackBase","base","base3","unpack","unpackDefault","Fn","vec3","vec2","mat3","float","If","arrowSDF","v","start","end","baseRadius","tipRadius","tipHeight","t","l","k","column1","column2","column3","q","e","h","d1","d2","d3","d4","s","Fn","vec3","boxFrameSDF","p","b","e","p_abs","q","term1","term2","term3","Fn","capsuleSDF","p","a","b","r","pa","ba","h","Fn","vec2","If","coneSDF","p","c","q","d1","d2","coneSDFVec2Height","h","w","a","b","k","d","s","coneSDFRadii","r1","r2","Fn","vec3","Fn","boxSDF","p","d","boxSDFSize","b","cubeSDF","Fn","p","s","boxSDFSize","vec3","Fn","vec2","select","float","cylinderSDF","p","h","d","cylinderSDFHeight","cylinderSDFHeightRadius","r","cylinderSDFCaps","a","b","pa","ba","baba","paba","x","y","x2","y2","Fn","vec3","PHI","dodecahedronSDF","p","n","pAbs","b","c","dodecahedronSDFRadius","radius","pScaled","a","Fn","ellipsoidSDF","p","r","k0","k1","Fn","atan2","flowerSDF","st","N","centered","r","a","v","Fn","float","gearSDF","Fn","st","b","N","e","float","stCentered","s","mapRange","d","omega","l","r","Fn","vec2","heartSDF","st","centered","r","normalized","shape","Fn","vec2","hexPrismSDF","p","h","q","d1","d2","Fn","vec3","icosahedronSDF","p","radius","n1","n2","normalizedP","a","b","c","d","Fn","vec2","float","Loop","If","Break","juliaSDF","st","center","c","r","transformed","z","n","maxIter","i","juliaSDFSimple","Fn","vec2","mat2","float","Loop","Break","If","kochSDF","st","center","N","r3","w","m","i","kochSDFSimple","Fn","vec3","vec2","linkSDF","p","le","r1","r2","q","Fn","vec2","vec3","float","Loop","If","Break","Fn","atan2","length","acos","vec2","vec3","cart2polar","st","cart2polar3D","r","phi","theta","mandelbulbSDF","Fn","st","zeta","m","dz","float","maxiterations","iterations","r","dr","Loop","sphericalZ","cart2polar3D","newx","newy","newz","vec3","If","Break","vec2","Fn","octahedronSDF","p","s","pAbs","octahedronSDFExact","m","o","oSum","Fn","vec3","vec2","octogonPrismSDF","p","r","h","k","d","Fn","vec4","opElongateVec2","p","h","opElongateVec3","opElongateVec4","q","Fn","vec2","opExtrude","p","sdf","h","w","Fn","mix","float","opIntersection","d1","d2","opIntersectionSmooth","k","h","Fn","opOnion","d","h","Fn","mod","opRepeatVec2","p","s","opRepeatVec3","c","opRepeatVec2Limited","lima","limb","opRepeatVec3Limited","Fn","vec2","opRevolve","p","w","Fn","opRound","d","h","Fn","vec4","opSubtraction","d1","d2","opSubtractionVec4","opSubtractionSmooth","k","h","opSubtractionSmoothVec4","result","Fn","vec4","opUnion","d1","d2","opUnionSmooth","k","h","opUnionSmoothVec4","result","Fn","planeSDF","p","planeSDFNormal","planePoint","planeNormal","Fn","atan2","polySDF","Fn","st","V","p","atan2","PI","r","v","TAU","polySDFFloat","Fn","vec3","vec2","select","float","pyramidSDF","p","h","m2","pxz","pxzFinal","q","s","t","a","b","Fn","atan2","raysSDF","Fn","st","N","centered","atan2","TAU","Fn","vec2","rhombSDF","Fn","st","triSDF","vec2","Fn","atan2","spiralSDF","st","t","centeredSt","r","a","Fn","vec2","atan2","step","float","starSDF","st","V","s","starSDFWithScale","starSDFSimple","Fn","centeredSt","seg","atan2","TAU","finalA","step","vec2","scaledSt","scale2dWithCenter","float","Fn","vec2","cos","sin","pow","abs","float","superShapeSDFCenter","Fn","st","center","s","b","n1","n2","n3","m","polar","cart2polar","d","theta","t1","abs","float","cos","pow","t2","sin","t3","r","q","vec2","superShapeSDF","a","Fn","vec2","tetrahedronSDF","p","h","q","y","d1","d2","Fn","triPrismSDF","p","h","q","Fn","sphereSDF","p","sphereSDFRadius","s","Fn","vec2","select","torusSDF","p","t","torusSDFSector","sc","ra","rb","px","k","Fn","vec2","float","vesicaSDF","st","w","offset","circle1","circle2","vesicaSDFDefault","Fn","aspect","st","s","result","Fn","mat2","atan2","cos","sin","mod","vec2","BRACKETING_ANGLE_DELTA","PI","bracketingAxis0","Fn","dir","angle","atan2","TWO_PI","fractional","mod","angle0","vec2","cos","sin","bracketingAxis1","vAxis0","mat2","bracketingBlend","Fn","mod","floor","fract","Fn","vec4","fract","floor","sqTile","st","sqTileScale","scale","brickTile","Fn","result","mod","floor","fract","brickTileVec2","st","sqTile","brickTileFloat","s","brickTileVec2Scale","Fn","center","v","centerFloat","x","centerVec2","centerVec3","Fn","mod","abs","checkerTile","Fn","c","mod","abs","checkerTileVec2","v","sqTile","checkerTileFloat","s","checkerTileVec2Scale","Fn","select","depth2viewZ","depth","near","far","depth2viewZOrthographic","depth2viewZCombined","orthographic","perspective","ortho","Fn","texture","float","vec3","int","Loop","If","Fn","vec3","mat3","lookAtForward","forward","up","zaxis","xaxis","yaxis","lookAt","eye","target","lookAtRoll","roll","lookAtBasic","DISPLACE_DEPTH","float","DISPLACE_PRECISION","DISPLACE_MAX_ITERATIONS","int","displace","Fn","tex","ro","rd","t","prev","vec3","curr","lastD","hmap","df","Loop","texture","If","displaceUV","uv","lookAtBasic","Fn","vec3","cos","sin","sqrt","float","equirect2xyz","Fn","uv","phi","PI","theta","TWO_PI","dir","vec3","cos","sin","multiplier","sqrt","float","Fn","mat3","Fn","vec4","mat4","translateMat3","m","translation","eulerView","Fn","position","euler","rotZ","rotate3dZ","rotX","rotate3dX","rotY","rotate3dY","identity","mat3","rotation","translateMat3","Fn","vec3","sqrt","cos","float","fisheye2xyz","Fn","uv","ndc","R","sqrt","dir","vec3","phi","PI","cos","multiplier","float","Fn","vec2","vec3","vec4","flipYVec2","v","flipYVec3","flipYVec4","Fn","vec2","vec4","float","floor","dot","select","hexTile","st","s","stYX","i","f","dotXY","dotZW","Fn","vec2","float","length","atan2","floor","min","max","cos","sin","kaleidoscopeCore","coord","segmentCount","phase","uv","radius","length","angle","atan2","segmentAngle","float","TWO_PI","adjustedAngle","floor","finalAngle","min","kuv","vec2","cos","sin","max","kaleidoscope","Fn","kaleidoscopeDefault","kaleidoscopeCount","Fn","linearizeDepth","depth","near","far","normalizedDepth","Fn","vec4","mirrorTile","Fn","vec4","mirror","mirrorTileVec2","v","sqTile","mirrorTileFloat","s","mirrorTileVec2Scale","mirrorXTile","mirrorXTileVec2","mirrorYTile","mirrorYTileVec2","Fn","mat4","vec4","orthographic","l","r","b","t","f","width","height","depth","Fn","texture","float","vec3","int","Loop","If","Break","PARALLAXMAPPING_SCALE","PARALLAXMAPPING_NUMSEARCHES","parallaxMappingSimple","tex","V","T","initialHeight","texCoordOffset","parallaxMappingSteep","minLayers","maxLayers","numLayers","layerHeight","currentLayerHeight","dtex","currentTextureCoords","heightFromTexture","i","parallaxMappingRelief","deltaTexCoord","deltaHeight","parallaxMappingOcclusion","curLayerHeight","prevTCoords","nextH","prevH","weight","parallaxMapping","Fn","mat4","tan","float","perspective","fov","aspect","near","far","f","nf","Fn","cos","sin","vec2","vec3","polar2cart","polar","polar2cart3D","r","phi","theta","x","y","z","Fn","mix","vec2","step","ratio","v","s","wideAspect","tallAspect","Fn","vec2","floor","fract","sprite","st","grid","index","adjustedIndex","f","cell","Fn","mat3","normalize","cross","tbn","b","n","tbnFromNormal","up","t","Fn","vec3","lookAtView","Fn","position","target","up","m","lookAt","translateMat3","lookAtViewRoll","roll","lookAtRoll","lookAtViewBasic","vec3","Fn","vec2","rotate2DCenter","Fn","v","r","c","rotate2d","rotate2DBasic","vec2","rotate2DAxis","xAxis","negYAxis","Fn","vec4","rotateXVec4Center","Fn","v","r","c","rotate4dX","rotateXVec4","rotateXVec3Center","vec4","rotateXVec3","Fn","vec4","rotateYVec4Center","Fn","v","r","c","rotate4dY","rotateYVec4","rotateYVec3Center","vec4","rotateYVec3","Fn","vec4","rotateZVec4Center","Fn","v","r","c","rotate4dZ","rotateZVec4","rotateZVec3Center","vec4","rotateZVec3","Fn","vec2","unratio","st","s","Fn","uncenter","v","uncenterFloat","x","uncenterVec2","uncenterVec3","Fn","viewZ2depth","viewZ","near","far","viewZ2depthOrthographic","Fn","vec2","atan2","acos","xyz2equirect","Fn","d","vec2","atan2","PI","acos","TWO_PI","Fn","mat2","vec2","vec4","floor","fract","dot","triTile","st","transformed","f","i","fFractional","dotXY","dotZW","condition","trueValue","triTileScaled","scale","Fn","mod","abs","vec4","windmillTile","Fn","turn","a","abs","mod","vec4","rotate2DBasic","windmillTileDefault","TWO_PI","windmillTileVec2","v","sqTile","windmillTileFloat","s","windmillTileVec2Scale"]}
|
|
1
|
+
{"version":3,"sources":["../src/addons/animation/easing/backIn.ts","../src/addons/math/const.ts","../src/addons/animation/easing/backInOut.ts","../src/addons/animation/easing/backOut.ts","../src/addons/animation/easing/bounceIn.ts","../src/addons/animation/easing/bounceOut.ts","../src/addons/animation/easing/bounceInOut.ts","../src/addons/animation/easing/circularIn.ts","../src/addons/animation/easing/circularInOut.ts","../src/addons/animation/easing/circularOut.ts","../src/addons/animation/easing/cubicIn.ts","../src/addons/animation/easing/cubicInOut.ts","../src/addons/animation/easing/cubicOut.ts","../src/addons/animation/easing/elasticIn.ts","../src/addons/animation/easing/elasticInOut.ts","../src/addons/animation/easing/elasticOut.ts","../src/addons/animation/easing/exponentialIn.ts","../src/addons/animation/easing/exponentialInOut.ts","../src/addons/animation/easing/exponentialOut.ts","../src/addons/animation/easing/linearIn.ts","../src/addons/animation/easing/linearInOut.ts","../src/addons/animation/easing/linearOut.ts","../src/addons/animation/easing/quadraticIn.ts","../src/addons/animation/easing/quadraticInOut.ts","../src/addons/animation/easing/quadraticOut.ts","../src/addons/animation/easing/quarticIn.ts","../src/addons/animation/easing/quarticInOut.ts","../src/addons/animation/easing/quarticOut.ts","../src/addons/animation/easing/quinticIn.ts","../src/addons/animation/easing/quinticInOut.ts","../src/addons/animation/easing/quinticOut.ts","../src/addons/animation/easing/sineIn.ts","../src/addons/animation/easing/sineInOut.ts","../src/addons/animation/easing/sineOut.ts","../src/addons/color/blend/add.ts","../src/addons/color/blend/average.ts","../src/addons/color/blend/color.ts","../src/addons/color/space/rgb2hsv.ts","../src/addons/color/space/hsv2rgb.ts","../src/addons/color/space/hue2rgb.ts","../src/addons/color/blend/colorBurn.ts","../src/addons/color/blend/colorDodge.ts","../src/addons/color/blend/darken.ts","../src/addons/color/blend/difference.ts","../src/addons/color/blend/exclusion.ts","../src/addons/color/blend/glow.ts","../src/addons/color/blend/reflect.ts","../src/addons/color/blend/hardLight.ts","../src/addons/color/blend/overlay.ts","../src/addons/color/blend/hardMix.ts","../src/addons/color/blend/vividLight.ts","../src/addons/color/blend/hue.ts","../src/addons/color/blend/lighten.ts","../src/addons/color/blend/linearBurn.ts","../src/addons/color/blend/luminosity.ts","../src/addons/color/blend/multiply.ts","../src/addons/color/blend/linearDodge.ts","../src/addons/color/blend/linearLight.ts","../src/addons/color/blend/negation.ts","../src/addons/color/blend/phoenix.ts","../src/addons/color/blend/pinLight.ts","../src/addons/color/blend/saturation.ts","../src/addons/color/blend/screen.ts","../src/addons/color/blend/softLight.ts","../src/addons/color/blend/subtract.ts","../src/addons/color/composite/compositeXor.ts","../src/addons/color/composite/destinationAtop.ts","../src/addons/color/composite/destinationIn.ts","../src/addons/color/composite/destinationOut.ts","../src/addons/color/composite/destinationOver.ts","../src/addons/color/composite/sourceAtop.ts","../src/addons/color/composite/sourceIn.ts","../src/addons/color/composite/sourceOut.ts","../src/addons/color/composite/sourceOver.ts","../src/addons/color/space/cmyk2rgb.ts","../src/addons/color/space/gamma2linear.ts","../src/addons/color/space/hsl2rgb.ts","../src/addons/color/space/lab2lch.ts","../src/addons/color/space/lab2rgb.ts","../src/addons/color/space/lab2xyz.ts","../src/addons/color/space/xyz2rgb.ts","../src/addons/color/space/lch2lab.ts","../src/addons/color/space/lch2rgb.ts","../src/addons/color/space/linear2gamma.ts","../src/addons/color/space/oklab2rgb.ts","../src/addons/color/space/rgb2cmyk.ts","../src/addons/math/mmin.ts","../src/addons/color/space/rgb2hcv.ts","../src/addons/color/space/rgb2hsl.ts","../src/addons/color/space/rgb2hue.ts","../src/addons/color/space/rgb2lab.ts","../src/addons/color/space/rgb2xyz.ts","../src/addons/color/space/xyz2lab.ts","../src/addons/color/space/rgb2lch.ts","../src/addons/color/space/rgb2oklab.ts","../src/addons/color/space/rgb2srgb.ts","../src/addons/color/space/rgb2yiq.ts","../src/addons/color/space/rgb2yuv.ts","../src/addons/color/space/srgb2rgb.ts","../src/addons/color/space/yiq2rgb.ts","../src/addons/color/space/yuv2rgb.ts","../src/addons/draw/arrows.ts","../src/addons/sdf/lineSDF.ts","../src/addons/draw/axis.ts","../src/addons/draw/line.ts","../src/addons/draw/fill.ts","../src/addons/math/aastep.ts","../src/addons/draw/bridge.ts","../src/addons/draw/stroke.ts","../src/addons/draw/char.ts","../src/addons/math/modi.ts","../src/addons/draw/circle.ts","../src/addons/sdf/circleSDF.ts","../src/addons/draw/colorChecker.ts","../src/addons/space/scale.ts","../src/addons/color/palette/macbeth.ts","../src/addons/sdf/crossSDF.ts","../src/addons/sdf/rectSDF.ts","../src/addons/draw/rect.ts","../src/addons/draw/colorPicker.ts","../src/addons/space/nearest.ts","../src/addons/draw/digits.ts","../src/addons/draw/flip.ts","../src/addons/draw/hex.ts","../src/addons/sdf/hexSDF.ts","../src/addons/draw/matrix.ts","../src/addons/draw/point.ts","../src/addons/draw/tri.ts","../src/addons/sdf/triSDF.ts","../src/addons/geometry/aabb/aabb.ts","../src/addons/geometry/aabb/centroid.ts","../src/addons/geometry/aabb/contain.ts","../src/addons/geometry/aabb/diagonal.ts","../src/addons/geometry/aabb/expand.ts","../src/addons/geometry/aabb/intersect.ts","../src/addons/geometry/aabb/square.ts","../src/addons/geometry/triangle/area.ts","../src/addons/geometry/triangle/barycentric.ts","../src/addons/geometry/triangle/centroid.ts","../src/addons/geometry/triangle/closestPoint.ts","../src/addons/geometry/triangle/contain.ts","../src/addons/geometry/triangle/distanceSq.ts","../src/addons/math/lengthSq.ts","../src/addons/geometry/triangle/intersect.ts","../src/addons/geometry/triangle/normal.ts","../src/addons/geometry/triangle/signedDistance.ts","../src/addons/geometry/triangle/triangle.ts","../src/addons/generative/cnoise.ts","../src/addons/math/mod289.ts","../src/addons/math/permute.ts","../src/addons/math/taylorInvSqrt.ts","../src/addons/math/quintic.ts","../src/addons/generative/curl.ts","../src/addons/generative/snoise.ts","../src/addons/math/grad4.ts","../src/addons/generative/fbm.ts","../src/addons/generative/gnoise.ts","../src/addons/generative/random.ts","../src/addons/generative/srandom.ts","../src/addons/math/cubic.ts","../src/addons/generative/gerstnerWave.ts","../src/addons/generative/noised.ts","../src/addons/generative/pnoise.ts","../src/addons/generative/psrdnoise.ts","../src/addons/generative/voronoi.ts","../src/addons/generative/voronoise.ts","../src/addons/generative/wavelet.ts","../src/addons/math/rotate2d.ts","../src/addons/generative/worley.ts","../src/addons/math/dist.ts","../src/addons/math/aafloor.ts","../src/addons/math/map.ts","../src/addons/math/aafract.ts","../src/addons/math/aamirror.ts","../src/addons/math/nyquist.ts","../src/addons/math/absi.ts","../src/addons/math/adaptiveThreshold.ts","../src/addons/math/bump.ts","../src/addons/math/cubicMix.ts","../src/addons/math/decimate.ts","../src/addons/math/fcos.ts","../src/addons/math/frac.ts","../src/addons/math/gain.ts","../src/addons/math/gaussian.ts","../src/addons/math/hammersley.ts","../src/addons/math/highPass.ts","../src/addons/math/inside.ts","../src/addons/math/invCubic.ts","../src/addons/math/invQuartic.ts","../src/addons/math/inverse.ts","../src/addons/math/mirror.ts","../src/addons/math/mmax.ts","../src/addons/math/mmix.ts","../src/addons/math/mod2.ts","../src/addons/math/pack.ts","../src/addons/math/parabola.ts","../src/addons/math/pow2.ts","../src/addons/math/pow3.ts","../src/addons/math/pow5.ts","../src/addons/math/pow7.ts","../src/addons/math/powFast.ts","../src/addons/math/quat/quat2mat3.ts","../src/addons/math/quat/quat2mat4.ts","../src/addons/math/toMat4.ts","../src/addons/math/quat/quatAdd.ts","../src/addons/math/quat/quatConj.ts","../src/addons/math/quat/quatDiv.ts","../src/addons/math/quat/quatIdentity.ts","../src/addons/math/quat/quatInverse.ts","../src/addons/math/quat/quatLengthSq.ts","../src/addons/math/quat/quatLength.ts","../src/addons/math/quat/quatLerp.ts","../src/addons/math/quat/quatMul.ts","../src/addons/math/quat/quatNeg.ts","../src/addons/math/quat/quatNorm.ts","../src/addons/math/quat/quatSub.ts","../src/addons/math/quartic.ts","../src/addons/math/rotate3d.ts","../src/addons/math/rotate3dX.ts","../src/addons/math/rotate3dY.ts","../src/addons/math/rotate3dZ.ts","../src/addons/math/rotate4d.ts","../src/addons/math/rotate4dX.ts","../src/addons/math/rotate4dY.ts","../src/addons/math/rotate4dZ.ts","../src/addons/math/saturateMediump.ts","../src/addons/math/scale2d.ts","../src/addons/math/scale3d.ts","../src/addons/math/scale4d.ts","../src/addons/math/smootherstep.ts","../src/addons/math/toMat3.ts","../src/addons/math/translate4d.ts","../src/addons/math/unpack.ts","../src/addons/sdf/arrowSDF.ts","../src/addons/sdf/boxFrameSDF.ts","../src/addons/sdf/capsuleSDF.ts","../src/addons/sdf/coneSDF.ts","../src/addons/sdf/cubeSDF.ts","../src/addons/sdf/boxSDF.ts","../src/addons/sdf/cylinderSDF.ts","../src/addons/sdf/dodecahedronSDF.ts","../src/addons/sdf/ellipsoidSDF.ts","../src/addons/sdf/flowerSDF.ts","../src/addons/sdf/gearSDF.ts","../src/addons/sdf/heartSDF.ts","../src/addons/sdf/hexPrismSDF.ts","../src/addons/sdf/icosahedronSDF.ts","../src/addons/sdf/juliaSDF.ts","../src/addons/sdf/kochSDF.ts","../src/addons/sdf/linkSDF.ts","../src/addons/sdf/mandelbulbSDF.ts","../src/addons/space/cart2polar.ts","../src/addons/sdf/octahedronSDF.ts","../src/addons/sdf/octogonPrismSDF.ts","../src/addons/sdf/opElongate.ts","../src/addons/sdf/opExtrude.ts","../src/addons/sdf/opIntersection.ts","../src/addons/sdf/opOnion.ts","../src/addons/sdf/opRepeat.ts","../src/addons/sdf/opRevolve.ts","../src/addons/sdf/opRound.ts","../src/addons/sdf/opSubtraction.ts","../src/addons/sdf/opUnion.ts","../src/addons/sdf/planeSDF.ts","../src/addons/sdf/polySDF.ts","../src/addons/sdf/pyramidSDF.ts","../src/addons/sdf/raysSDF.ts","../src/addons/sdf/rhombSDF.ts","../src/addons/sdf/spiralSDF.ts","../src/addons/sdf/starSDF.ts","../src/addons/sdf/superShapeSDF.ts","../src/addons/sdf/tetrahedronSDF.ts","../src/addons/sdf/triPrismSDF.ts","../src/addons/sdf/sphereSDF.ts","../src/addons/sdf/torusSDF.ts","../src/addons/sdf/vesicaSDF.ts","../src/addons/space/aspect.ts","../src/addons/space/bracketing.ts","../src/addons/space/brickTile.ts","../src/addons/space/sqTile.ts","../src/addons/space/center.ts","../src/addons/space/checkerTile.ts","../src/addons/space/depth2viewZ.ts","../src/addons/space/displace.ts","../src/addons/space/lookAt.ts","../src/addons/space/equirect2xyz.ts","../src/addons/space/eulerView.ts","../src/addons/space/translate.ts","../src/addons/space/fisheye2xyz.ts","../src/addons/space/flipY.ts","../src/addons/space/hexTile.ts","../src/addons/space/kaleidoscope.ts","../src/addons/space/linearizeDepth.ts","../src/addons/space/mirrorTile.ts","../src/addons/space/orthographic.ts","../src/addons/space/parallaxMapping.ts","../src/addons/space/perspective.ts","../src/addons/space/polar2cart.ts","../src/addons/space/ratio.ts","../src/addons/space/sprite.ts","../src/addons/space/tbn.ts","../src/addons/space/lookAtView.ts","../src/addons/space/rotate.ts","../src/addons/space/rotateX.ts","../src/addons/space/rotateY.ts","../src/addons/space/rotateZ.ts","../src/addons/space/unratio.ts","../src/addons/space/uncenter.ts","../src/addons/space/viewZ2depth.ts","../src/addons/space/xyz2equirect.ts","../src/addons/space/triTile.ts","../src/addons/space/windmillTile.ts"],"sourcesContent":["import { Fn, Float, pow, sin } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const backIn = Fn(([t]: [Float]): Float => {\n return pow(t, 3).sub(t.mul(sin(t.mul(PI))))\n}).setLayout({\n name: 'backIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { float } from '../../node'\n\n// Mathematical constants as float nodes\nexport const EIGHTH_PI = float(0.39269908169)\nexport const QTR_PI = float(0.78539816339)\nexport const HALF_PI = float(1.5707963267948966192313216916398)\nexport const PI = float(3.1415926535897932384626433832795)\nexport const TWO_PI = float(6.283185307179586476925286766559)\nexport const TAU = float(6.283185307179586476925286766559)\nexport const INV_PI = float(0.31830988618379067153776752674503)\nexport const INV_SQRT_TAU = float(0.39894228040143267793994605993439)\nexport const SQRT_HALF_PI = float(1.25331413732)\nexport const PHI = float(1.618033988749894848204586834)\nexport const EPSILON = float(0.00001)\nexport const GOLDEN_RATIO = float(1.6180339887)\nexport const GOLDEN_RATIO_CONJUGATE = float(0.61803398875)\nexport const GOLDEN_ANGLE = float(2.39996323)\nexport const DEG2RAD = PI.div(180)\nexport const RAD2DEG = float(180).div(PI)\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backInOut = Fn(([t]: [Float]): Float => {\n const f = t.mul(2).select(float(1).sub(t.mul(2).sub(1)), t.lessThan(0.5))\n const g = backIn(f)\n return g.div(2).select(float(1).sub(g).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'backInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { backIn } from './backIn'\n\nexport const backOut = Fn(([t]: [Float]): Float => {\n return float(1).sub(backIn(float(1).sub(t)))\n}).setLayout({\n name: 'backOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceIn = Fn(([t]: [Float]): Float => {\n return float(1).sub(bounceOut(float(1).sub(t)))\n}).setLayout({\n name: 'bounceIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\n\nexport const bounceOut = Fn(([t]: [Float]): Float => {\n const a = float(4 / 11)\n const b = float(8 / 11)\n const c = float(9 / 10)\n const ca = float(4356.0 / 361.0)\n const cb = float(35442.0 / 1805.0)\n const cc = float(16061.0 / 1805.0)\n const t2 = t.mul(t)\n return t2.mul(7.5625).select(\n t2\n .mul(9.075)\n .sub(t.mul(9.9))\n .add(3.4)\n .select(\n t2\n .mul(ca)\n .sub(t.mul(cb))\n .add(cc)\n .select(t2.mul(10.8).sub(t.mul(20.52)).add(10.72), t.lessThan(c)),\n t.lessThan(b)\n ),\n t.lessThan(a)\n )\n}).setLayout({\n name: 'bounceOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, float } from '../../../node'\nimport { bounceOut } from './bounceOut'\n\nexport const bounceInOut = Fn(([t]: [Float]): Float => {\n return float(1)\n .sub(bounceOut(float(1).sub(t.mul(2))))\n .div(2)\n .select(bounceOut(t.mul(2).sub(1)).div(2).add(0.5), t.lessThan(0.5))\n}).setLayout({\n name: 'bounceInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularIn = Fn(([t]: [X]): X => {\n return t.mul(t).oneMinus().sqrt().oneMinus()\n}).setLayout({\n name: 'circularIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const circularInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(4).oneMinus().sqrt().oneMinus().div(2)\n const late = t.mul(2).sub(1).mul(t.mul(-2).add(3)).sqrt().add(1).div(2)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'circularInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../../node'\n\nexport const circularOut = Fn(([t]: [X]): X => {\n return float(2).sub(t).mul(t).sqrt()\n}).setLayout({\n name: 'circularOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicIn = Fn(([t]: [X]): X => {\n return t.mul(t).mul(t)\n}).setLayout({\n name: 'cubicIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicInOut = Fn(([t]: [X]): X => {\n const early = t.mul(t).mul(t).mul(4)\n const late = t.mul(2).sub(2).pow(3).div(2).add(1)\n return (early as any).select(late, t.lessThan(0.5))\n}).setLayout({\n name: 'cubicInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const cubicOut = Fn(([t]: [X]): X => {\n const f = t.sub(1)\n return f.mul(f).mul(f).add(1)\n}).setLayout({\n name: 'cubicOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticIn = Fn(([t]: [Float]): Float => {\n return sin(t.mul(13).mul(HALF_PI)).mul(pow(float(2), t.sub(1).mul(10)))\n}).setLayout({\n name: 'elasticIn',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticInOut = Fn(([t]: [Float]): Float => {\n const t2 = t.mul(2)\n const t2minus1 = t2.sub(1)\n return sin(HALF_PI.mul(13).mul(t2))\n .mul(pow(float(2), t2minus1.mul(10)))\n .div(2)\n .select(\n sin(HALF_PI.mul(-13).mul(t2minus1.add(1)))\n .mul(pow(float(2), t2minus1.mul(-10)))\n .div(2)\n .add(1),\n t.lessThan(0.5)\n )\n}).setLayout({\n name: 'elasticInOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, Float, sin, pow, float } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const elasticOut = Fn(([t]: [Float]): Float => {\n return sin(float(-13).mul(t.add(1)).mul(HALF_PI))\n .mul(pow(float(2), float(-10).mul(t)))\n .add(1)\n}).setLayout({\n name: 'elasticOut',\n type: 'float',\n inputs: [{ name: 't', type: 'float' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialIn = Fn(([t]: [X]): X => {\n return (t as any).select(t.sub(1).mul(10).exp2(), t.equal(0))\n}).setLayout({\n name: 'exponentialIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialInOut = Fn(([t]: [X]): X => {\n const isZeroOrOne = t.equal(0).or(t.equal(1))\n const early = t.mul(20).sub(10).exp2().div(2)\n const late = t.mul(-20).add(10).exp2().div(-2).add(1)\n const result = (early as any).select(late, t.lessThan(0.5))\n return (t as any).select(result, isZeroOrOne)\n}).setLayout({\n name: 'exponentialInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const exponentialOut = Fn(([t]: [X]): X => {\n return (t as any).select(t.mul(-10).exp2().negate().add(1), t.equal(1))\n}).setLayout({\n name: 'exponentialOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearIn = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearInOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const linearOut = Fn(([t]: [X]): X => {\n return t\n}).setLayout({\n name: 'linearOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticIn = Fn(([t]: [X]): X => {\n return t.mul(t)\n}).setLayout({\n name: 'quadraticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quadraticInOut = Fn(([t]: [X]): X => {\n const p = t.mul(t).mul(2)\n return select(p, p.negate().add(t.mul(4)).sub(1), t.lessThan(0.5))\n}).setLayout({\n name: 'quadraticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quadraticOut = Fn(([t]: [X]): X => {\n return t.mul(t.sub(2)).negate()\n}).setLayout({\n name: 'quadraticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticIn = Fn(([t]: [X]): X => {\n return t.pow(4)\n}).setLayout({\n name: 'quarticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quarticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(4).mul(8)\n const late = t.sub(1).pow(4).mul(-8).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quarticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quarticOut = Fn(([t]: [X]): X => {\n const it = t.sub(1)\n return it.mul(it).mul(it).mul(t.oneMinus()).add(1)\n}).setLayout({\n name: 'quarticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticIn = Fn(([t]: [X]): X => {\n return t.pow(5)\n}).setLayout({\n name: 'quinticIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, select } from '../../../node'\n\nexport const quinticInOut = Fn(([t]: [X]): X => {\n const early = t.pow(5).mul(16)\n const late = t.mul(2).sub(2).pow(5).mul(-0.5).add(1)\n return select(early, late, t.lessThan(0.5))\n}).setLayout({\n name: 'quinticInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X } from '../../../node'\n\nexport const quinticOut = Fn(([t]: [X]): X => {\n return t.sub(1).pow(5).negate().add(1)\n}).setLayout({\n name: 'quinticOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineIn = Fn(([t]: [X]): X => {\n return sin(t.sub(1).mul(HALF_PI as any)).add(1)\n}).setLayout({\n name: 'sineIn',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, cos } from '../../../node'\nimport { PI } from '../../math/const'\n\nexport const sineInOut = Fn(([t]: [X]): X => {\n return cos(PI.mul(t)).sub(1).mul(-0.5)\n}).setLayout({\n name: 'sineInOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, X, sin } from '../../../node'\nimport { HALF_PI } from '../../math/const'\n\nexport const sineOut = Fn(([t]: [X]): X => {\n return sin(t.mul(HALF_PI as any))\n}).setLayout({\n name: 'sineOut',\n type: 'auto',\n inputs: [{ name: 't', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, min, vec3 } from '../../../node'\n\nexport const blendAdd = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base.add(blend), 1)\n}).setLayout({\n name: 'blendAdd',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendAddVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return min(base.add(blend), vec3(1))\n}).setLayout({\n name: 'blendAddVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendAddVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendAddVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendAddVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendAverage = Fn(([base, blend]: [Float, Float]): Float => {\n return base.add(blend).mul(0.5)\n}).setLayout({\n name: 'blendAverage',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendAverageVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.add(blend).mul(0.5)\n}).setLayout({\n name: 'blendAverageVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendAverageVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendAverageVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendAverageVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendColor = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base).toVar('baseHSV')\n const blendHSV = rgb2hsv(blend).toVar('blendHSV')\n return hsv2rgb(vec3(blendHSV.x, blendHSV.y, baseHSV.z))\n}).setLayout({\n name: 'blendColor',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColor(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10')\n\nexport const rgb2hsv = Fn(([c]: [Vec3]): Vec3 => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n const H = Q.z\n .add(Q.w.sub(Q.y).div(float(6).mul(d).add(HCV_EPSILON)))\n .abs()\n .toVar()\n const S = d.div(Q.x.add(HCV_EPSILON)).toVar()\n const V = Q.x.toVar()\n\n return vec3(H, S, V)\n}).setLayout({\n name: 'rgb2hsv',\n type: 'vec3',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hsvVec4 = Fn(([c]: [Vec4]): Vec4 => {\n return vec4(rgb2hsv(c.xyz), c.w)\n}).setLayout({\n name: 'rgb2hsvVec4',\n type: 'vec4',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsv2rgb = Fn(([hsv]: [Vec3]): Vec3 => {\n return hue2rgb(hsv.x).sub(1).mul(hsv.y).add(1).mul(hsv.z)\n}).setLayout({\n name: 'hsv2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsv', type: 'vec3' }],\n})\n\nexport const hsv2rgbVec4 = Fn(([hsv]: [Vec4]): Vec4 => {\n return vec4(hsv2rgb(hsv.xyz), hsv.w)\n}).setLayout({\n name: 'hsv2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsv', type: 'vec4' }],\n})\n","import { Fn, Float, Vec3, float, vec3 } from '../../../node'\n\nexport const hue2rgb = Fn(([hue]: [Float]): Vec3 => {\n const R = hue.mul(6).sub(3).abs().sub(1).toVar()\n const G = float(2).sub(hue.mul(6).sub(2).abs()).toVar()\n const B = float(2).sub(hue.mul(6).sub(4).abs()).toVar()\n return vec3(R, G, B).saturate()\n}).setLayout({\n name: 'hue2rgb',\n type: 'vec3',\n inputs: [{ name: 'hue', type: 'float' }],\n})\n","import { Fn, Float, Vec3, vec3, max, select } from '../../../node'\n\nexport const blendColorBurn = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, max(base.div(blend.oneMinus()).oneMinus(), 0), blend.equal(0))\n}).setLayout({\n name: 'blendColorBurn',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendColorBurnVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendColorBurn(base.r, blend.r), blendColorBurn(base.g, blend.g), blendColorBurn(base.b, blend.b))\n}).setLayout({\n name: 'blendColorBurnVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorBurnVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColorBurnVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorBurnVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, select } from '../../../node'\n\nexport const blendColorDodge = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, min(base.div(blend.oneMinus()), 1), blend.equal(1))\n}).setLayout({\n name: 'blendColorDodge',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendColorDodgeVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendColorDodge(base.r, blend.r),\n blendColorDodge(base.g, blend.g),\n blendColorDodge(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendColorDodgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendColorDodgeVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendColorDodgeVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendColorDodgeVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min } from '../../../node'\n\nexport const blendDarken = Fn(([base, blend]: [Float, Float]): Float => {\n return min(blend, base)\n}).setLayout({\n name: 'blendDarken',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendDarkenVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendDarken(base.r, blend.r), blendDarken(base.g, blend.g), blendDarken(base.b, blend.b))\n}).setLayout({\n name: 'blendDarkenVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendDarkenVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendDarkenVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendDarkenVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, abs } from '../../../node'\n\nexport const blendDifference = Fn(([base, blend]: [Float, Float]): Float => {\n return abs(base.sub(blend))\n}).setLayout({\n name: 'blendDifference',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendDifferenceVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return abs(base.sub(blend))\n}).setLayout({\n name: 'blendDifferenceVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendDifferenceVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendDifferenceVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendDifferenceVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendExclusion = Fn(([base, blend]: [Float, Float]): Float => {\n return base.add(blend).sub(base.mul(blend).mul(2))\n}).setLayout({\n name: 'blendExclusion',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' }\n ]\n})\n\nexport const blendExclusionVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.add(blend).sub(base.mul(blend).mul(2))\n}).setLayout({\n name: 'blendExclusionVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' }\n ]\n})\n\nexport const blendExclusionVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendExclusionVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendExclusionVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' }\n ]\n})","import { Fn, Float, Vec3 } from '../../../node'\nimport { blendReflect, blendReflectVec3 } from './reflect'\n\nexport const blendGlow = Fn(([base, blend]: [Float, Float]): Float => {\n return blendReflect(blend, base)\n}).setLayout({\n name: 'blendGlow',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendGlowVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return blendReflectVec3(blend, base)\n}).setLayout({\n name: 'blendGlowVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendGlowVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendGlowVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendGlowVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, select } from '../../../node'\n\nexport const blendReflect = Fn(([base, blend]: [Float, Float]): Float => {\n return select(blend, min(base.mul(base).div(blend.oneMinus()), 1), blend.equal(1))\n}).setLayout({\n name: 'blendReflect',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendReflectVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendReflect(base.r, blend.r), blendReflect(base.g, blend.g), blendReflect(base.b, blend.b))\n}).setLayout({\n name: 'blendReflectVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendReflectVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendReflectVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendReflectVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\nimport { blendOverlay, blendOverlayVec3 } from './overlay'\n\nexport const blendHardLight = Fn(([base, blend]: [Float, Float]): Float => {\n return blendOverlay(blend, base)\n}).setLayout({\n name: 'blendHardLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendHardLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return blendOverlayVec3(blend, base)\n}).setLayout({\n name: 'blendHardLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHardLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHardLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHardLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\n\nexport const blendOverlay = Fn(([base, blend]: [Float, Float]): Float => {\n If(base.lessThan(0.5), () => {\n return base.mul(blend).mul(2)\n })\n return base.oneMinus().mul(blend.oneMinus()).mul(2).oneMinus()\n}).setLayout({\n name: 'blendOverlay',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendOverlayVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendOverlay(base.r, blend.r), blendOverlay(base.g, blend.g), blendOverlay(base.b, blend.b))\n}).setLayout({\n name: 'blendOverlayVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendOverlayVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendOverlayVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendOverlayVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If, float } from '../../../node'\nimport { blendVividLight } from './vividLight'\n\nexport const blendHardMix = Fn(([base, blend]: [Float, Float]): Float => {\n If(blendVividLight(base, blend).lessThan(0.5), () => {\n return float(0)\n })\n return float(1)\n}).setLayout({\n name: 'blendHardMix',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendHardMixVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendHardMix(base.r, blend.r), blendHardMix(base.g, blend.g), blendHardMix(base.b, blend.b))\n}).setLayout({\n name: 'blendHardMixVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHardMixVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHardMixVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHardMixVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendColorBurn } from './colorBurn'\nimport { blendColorDodge } from './colorDodge'\n\nexport const blendVividLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendColorBurn(base, blend.mul(2))\n })\n return blendColorDodge(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendVividLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendVividLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendVividLight(base.r, blend.r),\n blendVividLight(base.g, blend.g),\n blendVividLight(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendVividLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendVividLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendVividLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendVividLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, clamp } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendHue = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n const result = vec3(blendHSV.x, baseHSV.y, baseHSV.z)\n return hsv2rgb(result)\n}).setLayout({\n name: 'blendHue',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendHueVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendHue(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendHueVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, max } from '../../../node'\n\nexport const blendLighten = Fn(([base, blend]: [Float, Float]): Float => {\n return max(blend, base)\n}).setLayout({\n name: 'blendLighten',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLightenVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendLighten(base.r, blend.r), blendLighten(base.g, blend.g), blendLighten(base.b, blend.b))\n}).setLayout({\n name: 'blendLightenVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLightenVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLightenVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLightenVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, max } from '../../../node'\n\nexport const blendLinearBurn = Fn(([base, blend]: [Float, Float]): Float => {\n return max(base.add(blend).sub(1), 0)\n}).setLayout({\n name: 'blendLinearBurn',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearBurnVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearBurn(base.r, blend.r),\n blendLinearBurn(base.g, blend.g),\n blendLinearBurn(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearBurnVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearBurnVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearBurnVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearBurnVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendLuminosity = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n return hsv2rgb(vec3(baseHSV.x, baseHSV.y, blendHSV.z))\n}).setLayout({\n name: 'blendLuminosity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLuminosityOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLuminosity(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLuminosityOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3 } from '../../../node'\n\nexport const blendMultiply = Fn(([base, blend]: [Float, Float]): Float => {\n return base.mul(blend)\n}).setLayout({\n name: 'blendMultiply',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendMultiplyVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return base.mul(blend)\n}).setLayout({\n name: 'blendMultiplyVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendMultiplyVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendMultiplyVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendMultiplyVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min } from '../../../node'\n\nexport const blendLinearDodge = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base.add(blend), 1)\n}).setLayout({\n name: 'blendLinearDodge',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearDodgeVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearDodge(base.r, blend.r),\n blendLinearDodge(base.g, blend.g),\n blendLinearDodge(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearDodgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearDodgeVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearDodgeVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearDodgeVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendLinearBurn } from './linearBurn'\nimport { blendLinearDodge } from './linearDodge'\n\nexport const blendLinearLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendLinearBurn(base, blend.mul(2))\n })\n return blendLinearDodge(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendLinearLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendLinearLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendLinearLight(base.r, blend.r),\n blendLinearLight(base.g, blend.g),\n blendLinearLight(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendLinearLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendLinearLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendLinearLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendLinearLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, abs, float } from '../../../node'\n\nexport const blendNegation = Fn(([base, blend]: [Float, Float]): Float => {\n return float(1).sub(abs(float(1).sub(base).sub(blend)))\n}).setLayout({\n name: 'blendNegation',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendNegationVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(1).sub(abs(vec3(1).sub(base).sub(blend)))\n}).setLayout({\n name: 'blendNegationVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendNegationVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendNegationVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendNegationVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, min, max, float } from '../../../node'\n\nexport const blendPhoenix = Fn(([base, blend]: [Float, Float]): Float => {\n return min(base, blend).sub(max(base, blend)).add(float(1))\n}).setLayout({\n name: 'blendPhoenix',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendPhoenixVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return min(base, blend).sub(max(base, blend)).add(vec3(1))\n}).setLayout({\n name: 'blendPhoenixVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendPhoenixVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendPhoenixVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendPhoenixVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, If } from '../../../node'\nimport { blendDarken } from './darken'\nimport { blendLighten } from './lighten'\n\nexport const blendPinLight = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return blendDarken(base, blend.mul(2))\n })\n return blendLighten(base, blend.sub(0.5).mul(2))\n}).setLayout({\n name: 'blendPinLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendPinLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(blendPinLight(base.x, blend.x), blendPinLight(base.y, blend.y), blendPinLight(base.z, blend.z))\n}).setLayout({\n name: 'blendPinLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendPinLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendPinLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendPinLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../../node'\nimport { rgb2hsv } from '../space/rgb2hsv'\nimport { hsv2rgb } from '../space/hsv2rgb'\n\nexport const blendSaturation = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n const baseHSV = rgb2hsv(base)\n const blendHSV = rgb2hsv(blend)\n return hsv2rgb(vec3(baseHSV.x, blendHSV.y, baseHSV.z))\n}).setLayout({\n name: 'blendSaturation',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendSaturationOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSaturation(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSaturationOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, vec3, float } from '../../../node'\n\nexport const blendScreenFloat = Fn(([base, blend]: [Float, Float]): Float => {\n return float(1).sub(float(1).sub(base).mul(float(1).sub(blend)))\n}).setLayout({\n name: 'blendScreenFloat',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendScreen = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendScreenFloat(base.x, blend.x),\n blendScreenFloat(base.y, blend.y),\n blendScreenFloat(base.z, blend.z)\n )\n}).setLayout({\n name: 'blendScreen',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendScreenOpacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendScreen(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendScreenOpacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, If, sqrt, vec3, vec4 } from '../../../node'\n\nconst blendSoftLightFloat = Fn(([base, blend]: [Float, Float]): Float => {\n If(blend.lessThan(0.5), () => {\n return base\n .mul(2)\n .mul(blend)\n .add(base.mul(base).mul(blend.mul(2).oneMinus()))\n })\n return sqrt(base).mul(blend.mul(2).sub(1)).add(base.mul(2).mul(blend.oneMinus()))\n}).setLayout({\n name: 'blendSoftLight',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' },\n ],\n})\n\nexport const blendSoftLight = blendSoftLightFloat\n\nexport const blendSoftLightVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return vec3(\n blendSoftLightFloat(base.r, blend.r),\n blendSoftLightFloat(base.g, blend.g),\n blendSoftLightFloat(base.b, blend.b)\n )\n}).setLayout({\n name: 'blendSoftLightVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n ],\n})\n\nexport const blendSoftLightVec4 = Fn(([base, blend]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n blendSoftLightFloat(base.r, blend.r),\n blendSoftLightFloat(base.g, blend.g),\n blendSoftLightFloat(base.b, blend.b),\n blendSoftLightFloat(base.a, blend.a)\n )\n}).setLayout({\n name: 'blendSoftLightVec4',\n type: 'vec4',\n inputs: [\n { name: 'base', type: 'vec4' },\n { name: 'blend', type: 'vec4' },\n ],\n})\n\nexport const blendSoftLightVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSoftLightVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSoftLightVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, max, vec3 } from '../../../node'\n\nconst blendSubtractFloat = Fn(([base, blend]: [Float, Float]): Float => {\n return max(base.add(blend).sub(1), 0)\n}).setLayout({\n name: 'blendSubtract',\n type: 'float',\n inputs: [\n { name: 'base', type: 'float' },\n { name: 'blend', type: 'float' }\n ]\n})\n\nexport const blendSubtract = blendSubtractFloat\n\nexport const blendSubtractVec3 = Fn(([base, blend]: [Vec3, Vec3]): Vec3 => {\n return max(base.add(blend).sub(vec3(1)), vec3(0))\n}).setLayout({\n name: 'blendSubtractVec3',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' }\n ]\n})\n\nexport const blendSubtractVec3Opacity = Fn(([base, blend, opacity]: [Vec3, Vec3, Float]): Vec3 => {\n return blendSubtractVec3(base, blend).mul(opacity).add(base.mul(opacity.oneMinus()))\n}).setLayout({\n name: 'blendSubtractVec3Opacity',\n type: 'vec3',\n inputs: [\n { name: 'base', type: 'vec3' },\n { name: 'blend', type: 'vec3' },\n { name: 'opacity', type: 'float' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeXorFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst.oneMinus()).add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeXor',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeXor = compositeXorFloat\n\nexport const compositeXorVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha.oneMinus()).add(dstColor.mul(srcAlpha.oneMinus()))\n}).setLayout({\n name: 'compositeXorVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeXorVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeXorVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeXorFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeXorVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationAtopFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src).add(src.mul(dst.oneMinus()))\n}).setLayout({\n name: 'compositeDestinationAtop',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationAtop = compositeDestinationAtopFloat\n\nexport const compositeDestinationAtopVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha).add(srcColor.mul(dstAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeDestinationAtopVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationAtopVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationAtopVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationAtopFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationAtopVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationInFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src)\n}).setLayout({\n name: 'compositeDestinationIn',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationIn = compositeDestinationInFloat\n\nexport const compositeDestinationInVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha)\n }\n).setLayout({\n name: 'compositeDestinationInVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationInVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationInVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationInFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationInVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationOutFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.mul(src.oneMinus())\n}).setLayout({\n name: 'compositeDestinationOut',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOut = compositeDestinationOutFloat\n\nexport const compositeDestinationOutVec3 = Fn(\n ([_srcColor, dstColor, srcAlpha, _dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.mul(srcAlpha.oneMinus())\n }\n).setLayout({\n name: 'compositeDestinationOutVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOutVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationOutVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationOutFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationOutVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeDestinationOverFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return dst.add(src.mul(dst.oneMinus()))\n}).setLayout({\n name: 'compositeDestinationOver',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOver = compositeDestinationOverFloat\n\nexport const compositeDestinationOverVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return dstColor.add(srcColor.mul(dstAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeDestinationOverVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeDestinationOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeDestinationOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeDestinationOverFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeDestinationOverVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceAtopFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst).add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeSourceAtop',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' },\n ],\n})\n\nexport const compositeSourceAtop = compositeSourceAtopFloat\n\nexport const compositeSourceAtopVec3 = Fn(\n ([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha).add(dstColor.mul(srcAlpha.oneMinus()))\n }\n).setLayout({\n name: 'compositeSourceAtopVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' },\n ],\n})\n\nexport const compositeSourceAtopVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceAtopVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceAtopFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceAtopVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceInFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst)\n}).setLayout({\n name: 'compositeSourceIn',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceIn = compositeSourceInFloat\n\nexport const compositeSourceInVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha)\n}).setLayout({\n name: 'compositeSourceInVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceInVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceInVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceInFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceInVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceOutFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.mul(dst.oneMinus())\n}).setLayout({\n name: 'compositeSourceOut',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceOut = compositeSourceOutFloat\n\nexport const compositeSourceOutVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(dstAlpha.oneMinus())\n}).setLayout({\n name: 'compositeSourceOutVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceOutVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceOutVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceOutFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceOutVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Float, Vec3, Vec4, vec4 } from '../../../node'\n\nconst compositeSourceOverFloat = Fn(([src, dst]: [Float, Float]): Float => {\n return src.add(dst.mul(src.oneMinus()))\n}).setLayout({\n name: 'compositeSourceOver',\n type: 'float',\n inputs: [\n { name: 'src', type: 'float' },\n { name: 'dst', type: 'float' }\n ]\n})\n\nexport const compositeSourceOver = compositeSourceOverFloat\n\nexport const compositeSourceOverVec3 = Fn(([srcColor, dstColor, srcAlpha, dstAlpha]: [Vec3, Vec3, Float, Float]): Vec3 => {\n return srcColor.mul(srcAlpha).add(dstColor.mul(dstAlpha).mul(srcAlpha.oneMinus()))\n}).setLayout({\n name: 'compositeSourceOverVec3',\n type: 'vec3',\n inputs: [\n { name: 'srcColor', type: 'vec3' },\n { name: 'dstColor', type: 'vec3' },\n { name: 'srcAlpha', type: 'float' },\n { name: 'dstAlpha', type: 'float' }\n ]\n})\n\nexport const compositeSourceOverVec4 = Fn(([srcColor, dstColor]: [Vec4, Vec4]): Vec4 => {\n const resultRgb = compositeSourceOverVec3(srcColor.rgb, dstColor.rgb, srcColor.a, dstColor.a)\n const resultA = compositeSourceOverFloat(srcColor.a, dstColor.a)\n return vec4(resultRgb, resultA)\n}).setLayout({\n name: 'compositeSourceOverVec4',\n type: 'vec4',\n inputs: [\n { name: 'srcColor', type: 'vec4' },\n { name: 'dstColor', type: 'vec4' }\n ]\n})","import { Fn, Vec4, Vec3, float, vec3 } from '../../../node'\n\nexport const cmyk2rgb = Fn(([cmyk]: [Vec4]): Vec3 => {\n const invK = float(1).sub(cmyk.w).toVar()\n return float(1)\n .sub(vec3(1).min(cmyk.xyz.mul(invK).add(cmyk.w)))\n .saturate()\n}).setLayout({\n name: 'cmyk2rgb',\n type: 'vec3',\n inputs: [{ name: 'cmyk', type: 'vec4' }],\n})\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst GAMMA = float(2.2)\n\nexport const gamma2linear = Fn(([v]: [X]): X => {\n return v.pow(GAMMA)\n}).setLayout({\n name: 'gamma2linear',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const gamma2linearVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(gamma2linear(v.xyz), v.w)\n}).setLayout({\n name: 'gamma2linearVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec4 } from '../../../node'\nimport { hue2rgb } from './hue2rgb'\n\nexport const hsl2rgb = Fn(([hsl]: [Vec3]): Vec3 => {\n const rgb = hue2rgb(hsl.x).toVar()\n const C = float(1).sub(hsl.z.mul(2).sub(1).abs()).mul(hsl.y).toVar()\n return rgb.sub(0.5).mul(C).add(hsl.z)\n}).setLayout({\n name: 'hsl2rgb',\n type: 'vec3',\n inputs: [{ name: 'hsl', type: 'vec3' }],\n})\n\nexport const hsl2rgbVec4 = Fn(([hsl]: [Vec4]): Vec4 => {\n return vec4(hsl2rgb(hsl.xyz), hsl.w)\n}).setLayout({\n name: 'hsl2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'hsl', type: 'vec4' }],\n})\n","import { Fn, atan2, sqrt, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lab2lch3 = Fn(([lab]: [Vec3]): Vec3 => {\n const chroma = sqrt(lab.y.mul(lab.y).add(lab.z.mul(lab.z)))\n const hue = atan2(lab.z, lab.y).mul(57.2957795131)\n return vec3(lab.x, chroma, hue)\n}).setLayout({\n name: 'lab2lch3',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2lch4 = Fn(([lab]: [Vec4]): Vec4 => {\n const lch = lab2lch3(lab.xyz)\n return vec4(lch, lab.w)\n}).setLayout({\n name: 'lab2lch4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n\nexport const lab2lch = lab2lch3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lab2xyz } from './lab2xyz'\nimport { xyz2rgb } from './xyz2rgb'\n\nexport const lab2rgb = Fn(([lab]: [Vec3]): Vec3 => {\n return xyz2rgb(lab2xyz(lab))\n}).setLayout({\n name: 'lab2rgb',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2rgbVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2rgb(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, select, vec3, vec4 } from '../../../node'\n\n// CIE D65 white point (default)\nconst CIE_WHITE = vec3(0.95045592705, 1, 1.08905775076)\n\nexport const lab2xyz = Fn(([lab]: [Vec3]): Vec3 => {\n const fy = lab.x.add(16).div(116).toVar()\n const fx = lab.y.div(500).add(fy).toVar()\n const fz = fy.sub(lab.z.div(200)).toVar()\n\n const threshold = float(0.206897)\n const delta = float(16).div(116)\n const factor = float(7.787)\n\n const convertX = select(fx.pow(3), fx.sub(delta).div(factor), fx.greaterThan(threshold))\n const convertY = select(fy.pow(3), fy.sub(delta).div(factor), fy.greaterThan(threshold))\n const convertZ = select(fz.pow(3), fz.sub(delta).div(factor), fz.greaterThan(threshold))\n\n return CIE_WHITE.mul(100).mul(vec3(convertX, convertY, convertZ))\n}).setLayout({\n name: 'lab2xyz',\n type: 'vec3',\n inputs: [{ name: 'lab', type: 'vec3' }],\n})\n\nexport const lab2xyzVec4 = Fn(([lab]: [Vec4]): Vec4 => {\n return vec4(lab2xyz(lab.xyz), lab.w)\n}).setLayout({\n name: 'lab2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'lab', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst XYZ2RGB = mat3(\n 3.2404542,\n -1.5371385,\n -0.4985314,\n -0.969266,\n 1.8760108,\n 0.041556,\n 0.0556434,\n -0.2040259,\n 1.0572252\n)\n\nexport const xyz2rgb = Fn(([xyz]: [Vec3]): Vec3 => {\n return XYZ2RGB.mul(xyz.mul(0.01))\n}).setLayout({\n name: 'xyz2rgb',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2rgbVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2rgb(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nexport const lch2lab3 = Fn(([lch]: [Vec3]): Vec3 => {\n const radians = lch.z.mul(0.01745329251)\n return vec3(lch.x, lch.y.mul(radians.cos()), lch.y.mul(radians.sin()))\n}).setLayout({\n name: 'lch2lab3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2lab4 = Fn(([lch]: [Vec4]): Vec4 => {\n const lab = lch2lab3(lch.xyz)\n return vec4(lab, lch.w)\n}).setLayout({\n name: 'lch2lab4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2lab = lch2lab3\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { lch2lab } from './lch2lab'\nimport { lab2rgb } from './lab2rgb'\n\nexport const lch2rgb3 = Fn(([lch]: [Vec3]): Vec3 => {\n return lab2rgb(lch2lab(lch))\n}).setLayout({\n name: 'lch2rgb3',\n type: 'vec3',\n inputs: [{ name: 'lch', type: 'vec3' }],\n})\n\nexport const lch2rgb4 = Fn(([lch]: [Vec4]): Vec4 => {\n const rgb = lch2rgb3(lch.xyz)\n return vec4(rgb, lch.w)\n}).setLayout({\n name: 'lch2rgb4',\n type: 'vec4',\n inputs: [{ name: 'lch', type: 'vec4' }],\n})\n\nexport const lch2rgb = lch2rgb3\n","import { Fn, Vec4, float, vec4, X } from '../../../node'\n\nconst INV_GAMMA = float(1).div(2.2)\n\nexport const linear2gamma = Fn(([v]: [X]): X => {\n return v.pow(INV_GAMMA)\n}).setLayout({\n name: 'linear2gamma',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n\nexport const linear2gammaVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(linear2gamma(v.xyz), v.w)\n}).setLayout({\n name: 'linear2gammaVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst OKLAB2RGB_A = mat3(1, 1, 1, 0.3963377774, -0.1055613458, -0.0894841775, 0.2158037573, -0.0638541728, -1.291485548)\n\nconst OKLAB2RGB_B = mat3(\n 4.0767416621,\n -1.2684380046,\n -0.0041960863,\n -3.3077115913,\n 2.6097574011,\n -0.7034186147,\n 0.2309699292,\n -0.3413193965,\n 1.707614701\n)\n\nexport const oklab2rgb3 = Fn(([oklab]: [Vec3]): Vec3 => {\n const lms = OKLAB2RGB_A.mul(oklab)\n return OKLAB2RGB_B.mul(lms.mul(lms).mul(lms))\n}).setLayout({\n name: 'oklab2rgb3',\n type: 'vec3',\n inputs: [{ name: 'oklab', type: 'vec3' }],\n})\n\nexport const oklab2rgb4 = Fn(([oklab]: [Vec4]): Vec4 => {\n const rgb = oklab2rgb3(oklab.xyz)\n return vec4(rgb, oklab.w)\n}).setLayout({\n name: 'oklab2rgb4',\n type: 'vec4',\n inputs: [{ name: 'oklab', type: 'vec4' }],\n})\n\nexport const oklab2rgb = oklab2rgb3\n","import { Fn, Vec3, Vec4, float, vec4, step } from '../../../node'\nimport { mmin3 } from '../../math/mmin'\n\nexport const rgb2cmyk = Fn(([rgb]: [Vec3]): Vec4 => {\n const k = mmin3(float(1).sub(rgb)).toVar()\n const invK = float(1).sub(k).toVar()\n const cmy = float(1).sub(rgb).sub(k).div(invK).mul(step(0, invK)).toVar()\n return vec4(cmy, k).saturate()\n}).setLayout({\n name: 'rgb2cmyk',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, min } from '../../node'\n\nexport const mmin2 = Fn(([v]: [Vec2]): Float => {\n return min(v.x, v.y)\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmin3 = Fn(([v]: [Vec3]): Float => {\n return min(v.x, min(v.y, v.z))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmin4 = Fn(([v]: [Vec4]): Float => {\n return min(min(v.x, v.y), min(v.z, v.w))\n}).setLayout({\n name: 'mmin',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\n// Generic mmin function - delegates to specific implementations\nexport const mmin = mmin4\n","import { Fn, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst HCV_EPSILON = float('1e-10').constant()\n\nexport const rgb2hcv = Fn(([rgb]: [Vec3]): Vec3 => {\n const P_true = vec4(rgb.b, rgb.g, -1, float(2).div(3)).toVar()\n const P_false = vec4(rgb.g, rgb.b, 0, float(-1).div(3)).toVar()\n const P_final = select(P_true, P_false, rgb.g.lessThan(rgb.b)).toVar()\n\n const Q_true = vec4(P_final.x, P_final.y, P_final.w, rgb.r).toVar()\n const Q_false = vec4(rgb.r, P_final.y, P_final.z, P_final.x).toVar()\n const Q_final = select(Q_true, Q_false, rgb.r.lessThan(P_final.x)).toVar()\n\n const C = Q_final.x.sub(Q_final.w.min(Q_final.y)).toVar()\n const H = Q_final.w.sub(Q_final.y).div(float(6).mul(C).add(HCV_EPSILON)).add(Q_final.z).abs().toVar()\n return vec3(H, C, Q_final.x)\n}).setLayout({\n name: 'rgb2hcv',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hcvVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hcv(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hcvVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4 } from '../../../node'\nimport { rgb2hcv } from './rgb2hcv'\n\nconst HSL_EPSILON = float('1e-10')\n\nexport const rgb2hsl = Fn(([rgb]: [Vec3]): Vec3 => {\n const HCV = rgb2hcv(rgb).toVar()\n const L = HCV.z.sub(HCV.y.div(2)).toVar()\n const S = HCV.y.div(float(1).sub(L.mul(2).sub(1).abs()).add(HSL_EPSILON)).toVar()\n return vec3(HCV.x, S, L)\n}).setLayout({\n name: 'rgb2hsl',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2hslVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2hsl(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2hslVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, Float, float, vec4, select } from '../../../node'\n\nconst HUE_EPSILON = float('1e-10')\n\nexport const rgb2hue = Fn(([c]: [Vec3]): Float => {\n const K = vec4(0, float(-1).div(3), float(2).div(3), -1).toVar()\n const P_true = vec4(c.b, c.g, K.w, K.z).toVar()\n const P_false = vec4(c.g, c.b, K.x, K.y).toVar()\n const P = select(P_true, P_false, c.g.lessThan(c.b)).toVar()\n\n const Q_true = vec4(P.x, P.y, P.w, c.r).toVar()\n const Q_false = vec4(c.r, P.y, P.z, P.x).toVar()\n const Q = select(Q_true, Q_false, c.r.lessThan(P.x)).toVar()\n\n const d = Q.x.sub(Q.w.min(Q.y)).toVar()\n return Q.z.add(Q.w.sub(Q.y).div(float(6).mul(d).add(HUE_EPSILON))).abs()\n}).setLayout({\n name: 'rgb2hue',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec3' }],\n})\n\nexport const rgb2hueVec4 = Fn(([c]: [Vec4]): Float => {\n return rgb2hue(c.xyz)\n}).setLayout({\n name: 'rgb2hueVec4',\n type: 'float',\n inputs: [{ name: 'c', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2xyz } from './rgb2xyz'\nimport { xyz2lab } from './xyz2lab'\n\nexport const rgb2lab = Fn(([rgb]: [Vec3]): Vec3 => {\n return xyz2lab(rgb2xyz(rgb))\n}).setLayout({\n name: 'rgb2lab',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2labVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2lab(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2labVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, mat3, vec4 } from '../../../node'\n\n// CIE D65 white point transformation matrix\nconst RGB2XYZ = mat3(0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.072175, 0.0193339, 0.119192, 0.9503041)\n\nexport const rgb2xyz = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2XYZ.mul(rgb)\n}).setLayout({\n name: 'rgb2xyz',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2xyzVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2xyz(rgb.xyz), rgb.w)\n}).setLayout({\n name: 'rgb2xyzVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, float, vec3, vec4, step, mix } from '../../../node'\n\nexport const xyz2lab = Fn(([xyz]: [Vec3]): Vec3 => {\n const n = xyz.div(vec3(95.047, 100, 108.883)).toVar()\n const c0 = n.pow(vec3(1 / 3)).toVar()\n const c1 = n\n .mul(7.787)\n .add(16 / 116)\n .toVar()\n const v = mix(c0, c1, step(n, vec3(0.008856))).toVar()\n const L = v.y.mul(116).sub(16).toVar()\n const A = v.x.sub(v.y).mul(500).toVar()\n const B = v.y.sub(v.z).mul(200).toVar()\n return vec3(L, A, B)\n}).setLayout({\n name: 'xyz2lab',\n type: 'vec3',\n inputs: [{ name: 'xyz', type: 'vec3' }],\n})\n\nexport const xyz2labVec4 = Fn(([xyz]: [Vec4]): Vec4 => {\n return vec4(xyz2lab(xyz.xyz), xyz.w)\n}).setLayout({\n name: 'xyz2labVec4',\n type: 'vec4',\n inputs: [{ name: 'xyz', type: 'vec4' }],\n})\n","import { Fn, Vec3, Vec4, vec4 } from '../../../node'\nimport { rgb2lab } from './rgb2lab'\nimport { lab2lch } from './lab2lch'\n\nexport const rgb2lch3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return lab2lch(rgb2lab(rgb))\n}).setLayout({\n name: 'rgb2lch3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2lch4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const lch = rgb2lch3(rgb.xyz)\n return vec4(lch, rgb.w)\n}).setLayout({\n name: 'rgb2lch4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2lch = rgb2lch3\n","import { Fn, mat3, vec3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2OKLAB_A = mat3(\n 0.2104542553,\n 1.9779984951,\n 0.0259040371,\n 0.793617785,\n -2.428592205,\n 0.7827717662,\n -0.0040720468,\n 0.4505937099,\n -0.808675766\n)\n\nconst RGB2OKLAB_B = mat3(\n 0.4122214708,\n 0.2119034982,\n 0.0883024619,\n 0.5363325363,\n 0.6806995451,\n 0.2817188376,\n 0.0514459929,\n 0.1073969566,\n 0.6299787005\n)\n\nexport const rgb2oklab3 = Fn(([rgb]: [Vec3]): Vec3 => {\n const lms = RGB2OKLAB_B.mul(rgb)\n return RGB2OKLAB_A.mul(lms.sign().mul(lms.abs().pow(vec3(0.3333333333333))))\n}).setLayout({\n name: 'rgb2oklab3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2oklab4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const oklab = rgb2oklab3(rgb.xyz)\n return vec4(oklab, rgb.w)\n}).setLayout({\n name: 'rgb2oklab4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2oklab = rgb2oklab3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const rgb2srgbFloat = Fn(([c]: [Float]): Float => {\n return select(c.mul(12.92), float(1.055).mul(c.pow(0.4166666666666667)).sub(0.055), c.lessThan(0.0031308))\n}).setLayout({\n name: 'rgb2srgb',\n type: 'float',\n inputs: [{ name: 'c', type: 'float' }],\n})\n\nexport const rgb2srgbVec3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return vec3(\n rgb2srgbFloat(rgb.r.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.g.sub(SRGB_EPSILON)),\n rgb2srgbFloat(rgb.b.sub(SRGB_EPSILON))\n ).saturate()\n}).setLayout({\n name: 'rgb2srgbVec3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2srgbVec4 = Fn(([rgb]: [Vec4]): Vec4 => {\n return vec4(rgb2srgbVec3(rgb.rgb), rgb.a)\n}).setLayout({\n name: 'rgb2srgbVec4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const rgb2srgb = rgb2srgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YIQ = mat3(0.3, 0.59, 0.11, 0.599, -0.2773, -0.3217, 0.213, -0.5251, 0.3121)\n\nexport const rgb2yiq3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YIQ.mul(rgb)\n}).setLayout({\n name: 'rgb2yiq3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yiq4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yiq = rgb2yiq3(rgb.xyz)\n return vec4(yiq, rgb.w)\n}).setLayout({\n name: 'rgb2yiq4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yiq = rgb2yiq3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst RGB2YUV_HDTV = mat3(0.2126, -0.09991, 0.615, 0.7152, -0.33609, -0.55861, 0.0722, 0.426, -0.05639)\n\nconst RGB2YUV_SDTV = mat3(0.299, -0.14713, 0.615, 0.587, -0.28886, -0.51499, 0.114, 0.436, -0.10001)\n\nexport const rgb2yuv3 = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_HDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuv3',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv4 = Fn(([rgb]: [Vec4]): Vec4 => {\n const yuv = rgb2yuv3(rgb.xyz)\n return vec4(yuv, rgb.w)\n}).setLayout({\n name: 'rgb2yuv4',\n type: 'vec4',\n inputs: [{ name: 'rgb', type: 'vec4' }],\n})\n\nexport const rgb2yuvSDTV = Fn(([rgb]: [Vec3]): Vec3 => {\n return RGB2YUV_SDTV.mul(rgb)\n}).setLayout({\n name: 'rgb2yuvSDTV',\n type: 'vec3',\n inputs: [{ name: 'rgb', type: 'vec3' }],\n})\n\nexport const rgb2yuv = rgb2yuv3\n","import { Fn, Float, Vec3, Vec4, float, vec3, vec4, select } from '../../../node'\n\nconst SRGB_EPSILON = float('1e-10')\n\nexport const srgb2rgbFloat = Fn(([v]: [Float]): Float => {\n return select(v.mul(0.0773993808), v.add(0.055).mul(0.947867298578199).pow(2.4), v.lessThan(0.04045))\n}).setLayout({\n name: 'srgb2rgb',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const srgb2rgbVec3 = Fn(([srgb]: [Vec3]): Vec3 => {\n return vec3(\n srgb2rgbFloat(srgb.r.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.g.add(SRGB_EPSILON)),\n srgb2rgbFloat(srgb.b.add(SRGB_EPSILON))\n )\n}).setLayout({\n name: 'srgb2rgbVec3',\n type: 'vec3',\n inputs: [{ name: 'srgb', type: 'vec3' }],\n})\n\nexport const srgb2rgbVec4 = Fn(([srgb]: [Vec4]): Vec4 => {\n return vec4(srgb2rgbVec3(srgb.rgb), srgb.a)\n}).setLayout({\n name: 'srgb2rgbVec4',\n type: 'vec4',\n inputs: [{ name: 'srgb', type: 'vec4' }],\n})\n\n// Default export for convenience\nexport const srgb2rgb = srgb2rgbVec3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YIQ2RGB = mat3(1, 0.9469, 0.6235, 1, -0.2747, -0.6357, 1, -1.1085, 1.702)\n\nexport const yiq2rgb3 = Fn(([yiq]: [Vec3]): Vec3 => {\n return YIQ2RGB.mul(yiq)\n}).setLayout({\n name: 'yiq2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yiq', type: 'vec3' }],\n})\n\nexport const yiq2rgb4 = Fn(([yiq]: [Vec4]): Vec4 => {\n const rgb = yiq2rgb3(yiq.xyz)\n return vec4(rgb, yiq.w)\n}).setLayout({\n name: 'yiq2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yiq', type: 'vec4' }],\n})\n\nexport const yiq2rgb = yiq2rgb3\n","import { Fn, mat3, vec4, Vec3, Vec4 } from '../../../node'\n\nconst YUV2RGB_HDTV = mat3(1, 1, 1, 0, -0.21482, 2.12798, 1.28033, -0.38059, 0)\n\nconst YUV2RGB_SDTV = mat3(1, 1, 1, 0, -0.39465, 2.03211, 1.13983, -0.5806, 0)\n\nexport const yuv2rgb3 = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_HDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgb3',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb4 = Fn(([yuv]: [Vec4]): Vec4 => {\n const rgb = yuv2rgb3(yuv.xyz)\n return vec4(rgb, yuv.w)\n}).setLayout({\n name: 'yuv2rgb4',\n type: 'vec4',\n inputs: [{ name: 'yuv', type: 'vec4' }],\n})\n\nexport const yuv2rgbSDTV = Fn(([yuv]: [Vec3]): Vec3 => {\n return YUV2RGB_SDTV.mul(yuv)\n}).setLayout({\n name: 'yuv2rgbSDTV',\n type: 'vec3',\n inputs: [{ name: 'yuv', type: 'vec3' }],\n})\n\nexport const yuv2rgb = yuv2rgb3\n","import { Fn, Float, Vec2, float, vec2, length, clamp, min, step, If } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\n\nconst ARROWS_TILE_SIZE = float(32.0)\n\nexport const arrowsTileCenterCoord = Fn(([pos]: [Vec2]): Vec2 => {\n const floored = pos.div(ARROWS_TILE_SIZE).floor()\n return floored.add(0.5).mul(ARROWS_TILE_SIZE)\n}).setLayout({\n name: 'arrowsTileCenterCoord',\n type: 'vec2',\n inputs: [{ name: 'pos', type: 'vec2' }],\n})\n\nexport const arrows = Fn(([p, v, resolution]: [Vec2, Vec2, Vec2]): Float => {\n const pScaled = p.mul(resolution).toVar('pScaled')\n pScaled.subAssign(arrowsTileCenterCoord(pScaled))\n const mag_v = length(v).toVar('mag_v')\n\n If(mag_v.greaterThan(0.0), () => {\n const dir_v = v.div(mag_v).toVar('dir_v')\n mag_v.assign(clamp(mag_v, float(5.0), ARROWS_TILE_SIZE.div(2.0)))\n const vScaled = dir_v.mul(mag_v).toVar('vScaled')\n\n const shaft = lineSDF(pScaled, vScaled, vScaled.negate()).toVar('shaft')\n const head1 = lineSDF(\n pScaled,\n vScaled,\n vScaled.mul(0.4).add(vec2(vScaled.y.negate(), vScaled.x).mul(0.2))\n ).toVar('head1')\n const head2 = lineSDF(\n pScaled,\n vScaled,\n vScaled.mul(0.4).add(vec2(vScaled.y, vScaled.x.negate()).mul(0.2))\n ).toVar('head2')\n const head = min(head1, head2).toVar('head')\n\n return step(min(shaft, head), float(1.0))\n })\n\n return float(0.0)\n}).setLayout({\n name: 'arrows',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n { name: 'resolution', type: 'vec2' },\n ],\n})\n\nexport const arrowsSimple = Fn(([p, v]: [Vec2, Vec2]): Float => {\n return arrows(p, v, vec2(1.0))\n}).setLayout({\n name: 'arrowsSimple',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, clamp, dot, length, cross } from '../../node'\n\n// 2D line segment distance function\nexport const lineSDF2D = Fn(([st, a, b]: [Vec2, Vec2, Vec2]): Float => {\n const b_to_a = b.sub(a).toVar('b_to_a')\n const to_a = st.sub(a).toVar('to_a')\n const h = clamp(dot(to_a, b_to_a).div(dot(b_to_a, b_to_a)), 0, 1).toVar('h')\n return length(to_a.sub(h.mul(b_to_a)))\n}).setLayout({\n name: 'lineSDF2D',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\n// 3D line distance function\nexport const lineSDF3D = Fn(([p, a, b]: [Vec3, Vec3, Vec3]): Float => {\n return length(cross(p.sub(a), p.sub(b))).div(length(b.sub(a)))\n}).setLayout({\n name: 'lineSDF3D',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\n// Unified lineSDF function (defaults to 2D)\nexport const lineSDF = lineSDF2D\n","import { Fn, Vec2, Vec3, Vec4, Mat4, Float, vec3, vec4 } from '../../node'\nimport { line } from './line'\n\nexport const axis = Fn(([st, M, pos, thickness]: [Vec2, Mat4, Vec3, Float]): Vec4 => {\n const rta = vec4(0).toVar()\n\n const center = M.mul(vec4(pos, 1)).toVar()\n center.xy.divAssign(center.w)\n center.xy.assign(center.xy.mul(0.5).add(0.5))\n\n const axisX = vec4(1, 0, 0, 1)\n const aX = M.mul(vec4(pos.add(vec3(1, 0, 0)), 1)).toVar()\n aX.xy.divAssign(aX.w)\n aX.xy.assign(aX.xy.mul(0.5).add(0.5))\n rta.addAssign(axisX.mul(line(st, center.xy, aX.xy, thickness)))\n\n const axisY = vec4(0, 1, 0, 1)\n const aY = M.mul(vec4(pos.add(vec3(0, 1, 0)), 1)).toVar()\n aY.xy.divAssign(aY.w)\n aY.xy.assign(aY.xy.mul(0.5).add(0.5))\n rta.addAssign(axisY.mul(line(st, center.xy, aY.xy, thickness)))\n\n const axisZ = vec4(0, 0, 1, 1)\n const aZ = M.mul(vec4(pos.add(vec3(0, 0, 1)), 1)).toVar()\n aZ.xy.divAssign(aZ.w)\n aZ.xy.assign(aZ.xy.mul(0.5).add(0.5))\n rta.addAssign(axisZ.mul(line(st, center.xy, aZ.xy, thickness)))\n\n return rta\n}).setLayout({\n name: 'axis',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat4' },\n { name: 'pos', type: 'vec3' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { lineSDF } from '../sdf/lineSDF'\nimport { fill } from './fill'\n\nexport const line = Fn(([st, a, b, thickness]: [Vec2, Vec2, Vec2, Float]): Float => {\n return fill(lineSDF(st, a, b), thickness)\n}).setLayout({\n name: 'line',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'thickness', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const fillWithEdge = Fn(([x, size, edge]: [Float, Float, Float]): Float => {\n return smoothstep(size.sub(edge), size.add(edge), x).oneMinus()\n}).setLayout({\n name: 'fillWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const fill = Fn(([x, size]: [Float, Float]): Float => {\n return aastep(size, x).oneMinus()\n}).setLayout({\n name: 'fill',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n ],\n})\n","import { Fn, Float, length, vec2, dFdx, dFdy, smoothstep } from '../../node'\n\nexport const aastep = Fn(([threshold, value]: [Float, Float]): Float => {\n const derivative = vec2(dFdx(value), dFdy(value))\n const afwidth = length(derivative).mul(0.7)\n return smoothstep(threshold.sub(afwidth), threshold.add(afwidth), value)\n}).setLayout({\n name: 'aastep',\n type: 'float',\n inputs: [\n { name: 'threshold', type: 'float' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X, float } from '../../node'\nimport { stroke } from './stroke'\n\n// Bridge effect for float\nexport const bridgeFloat = Fn(([c, d, s, w]: [Float, Float, Float, Float]): Float => {\n const maskedC = c.mul(float(1).sub(stroke(d, s, w.mul(2))))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeFloat',\n type: 'float',\n inputs: [\n { name: 'c', type: 'float' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec2\nexport const bridgeVec2 = Fn(([c, d, s, w]: [Vec2, Float, Float, Float]): Vec2 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec2',\n type: 'vec2',\n inputs: [\n { name: 'c', type: 'vec2' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec3\nexport const bridgeVec3 = Fn(([c, d, s, w]: [Vec3, Float, Float, Float]): Vec3 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec3',\n type: 'vec3',\n inputs: [\n { name: 'c', type: 'vec3' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Bridge effect for vec4\nexport const bridgeVec4 = Fn(([c, d, s, w]: [Vec4, Float, Float, Float]): Vec4 => {\n const strokeMask = stroke(d, s, w.mul(2))\n const maskedC = c.mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w))\n}).setLayout({\n name: 'bridgeVec4',\n type: 'vec4',\n inputs: [\n { name: 'c', type: 'vec4' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n\n// Generic bridge function using auto type\nexport const bridge = Fn(([c, d, s, w]: [X, Float, Float, Float]): X => {\n const strokeMask = stroke(d, s, (w as any).mul(2))\n const maskedC = (c as any).mul(float(1).sub(strokeMask))\n return maskedC.add(stroke(d, s, w as any))\n}).setLayout({\n name: 'bridge',\n type: 'auto',\n inputs: [\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'float' },\n { name: 's', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float, smoothstep, clamp } from '../../node'\nimport { aastep } from '../math/aastep'\n\nexport const strokeWithEdge = Fn(([x, size, w, edge]: [Float, Float, Float, Float]): Float => {\n const d = smoothstep(size.sub(edge), size.add(edge), x.add(w.div(2))).sub(\n smoothstep(size.sub(edge), size.add(edge), x.sub(w.div(2)))\n )\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'strokeWithEdge',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n { name: 'edge', type: 'float' },\n ],\n})\n\nexport const stroke = Fn(([x, size, w]: [Float, Float, Float]): Float => {\n const d = aastep(size, x.add(w.div(2))).sub(aastep(size, x.sub(w.div(2))))\n return clamp(d, 0, 1)\n}).setLayout({\n name: 'stroke',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'size', type: 'float' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, Int, int, vec2, ivec2, ivec4, floor, pow, If } from '../../node'\nimport { modi } from '../math/modi'\n\n// Character constants\nexport const CHAR_SIZE = vec2(0.02)\nexport const CHAR_TOTAL = 96\n\n// Character codes\nexport const CHAR = {\n SPACE: 0,\n EXCLAMATION: 1,\n QUOTE: 2,\n NUMBER: 3,\n DOLLAR: 4,\n PERCENT: 5,\n AMPERSAND: 6,\n APOSTROPHE: 7,\n PAREN_LEFT: 8,\n PAREN_RIGHT: 9,\n ASTERISK: 10,\n PLUS: 11,\n COMMA: 12,\n MINUS: 13,\n PERIOD: 14,\n SLASH: 15,\n 0: 16,\n 1: 17,\n 2: 18,\n 3: 19,\n 4: 20,\n 5: 21,\n 6: 22,\n 7: 23,\n 8: 24,\n 9: 25,\n COLON: 26,\n SEMICOLON: 27,\n LESS: 28,\n EQUAL: 29,\n GREATER: 30,\n QUESTION: 31,\n AT: 32,\n A: 33,\n B: 34,\n C: 35,\n D: 36,\n E: 37,\n F: 38,\n G: 39,\n H: 40,\n I: 41,\n J: 42,\n K: 43,\n L: 44,\n M: 45,\n N: 46,\n O: 47,\n P: 48,\n Q: 49,\n R: 50,\n S: 51,\n T: 52,\n U: 53,\n V: 54,\n W: 55,\n X: 56,\n Y: 57,\n Z: 58,\n BRACKET_LEFT: 59,\n BACKSLASH: 60,\n BRACKET_RIGHT: 61,\n CARET: 62,\n UNDERSCORE: 63,\n GRAVE: 64,\n a: 65,\n b: 66,\n c: 67,\n d: 68,\n e: 69,\n f: 70,\n g: 71,\n h: 72,\n i: 73,\n j: 74,\n k: 75,\n l: 76,\n m: 77,\n n: 78,\n o: 79,\n p: 80,\n q: 81,\n r: 82,\n s: 83,\n t: 84,\n u: 85,\n v: 86,\n w: 87,\n x: 88,\n y: 89,\n z: 90,\n BRACE_LEFT: 91,\n BAR: 92,\n BRACE_RIGHT: 93,\n TILDE: 94,\n}\n\n// Character bitmap data (compressed)\nconst CHAR_DATA: [number, number, number, number][] = [\n [0x0, 0x0, 0x0, 0x0],\n [0x1010, 0x10101010, 0x1010, 0x0],\n [0x242424, 0x24000000, 0x0, 0x0],\n [0x24, 0x247e2424, 0x247e2424, 0x0],\n [0x808, 0x1e20201c, 0x2023c08, 0x8000000],\n [0x30, 0x494a3408, 0x16294906, 0x0],\n [0x3048, 0x48483031, 0x49464639, 0x0],\n [0x101010, 0x10000000, 0x0, 0x0],\n [0x408, 0x8101010, 0x10101008, 0x8040000],\n [0x2010, 0x10080808, 0x8080810, 0x10200000],\n [0x0, 0x24187e, 0x18240000, 0x0],\n [0x0, 0x808087f, 0x8080800, 0x0],\n [0x0, 0x0, 0x1818, 0x8081000],\n [0x0, 0x7e, 0x0, 0x0],\n [0x0, 0x0, 0x1818, 0x0],\n [0x202, 0x4040808, 0x10102020, 0x40400000],\n [0x3c, 0x42464a52, 0x6242423c, 0x0],\n [0x8, 0x18280808, 0x808083e, 0x0],\n [0x3c, 0x42020204, 0x810207e, 0x0],\n [0x7e, 0x4081c02, 0x202423c, 0x0],\n [0x4, 0xc142444, 0x7e040404, 0x0],\n [0x7e, 0x40407c02, 0x202423c, 0x0],\n [0x1c, 0x2040407c, 0x4242423c, 0x0],\n [0x7e, 0x2040408, 0x8101010, 0x0],\n [0x3c, 0x4242423c, 0x4242423c, 0x0],\n [0x3c, 0x4242423e, 0x2020438, 0x0],\n [0x0, 0x181800, 0x1818, 0x0],\n [0x0, 0x181800, 0x1818, 0x8081000],\n [0x4, 0x8102040, 0x20100804, 0x0],\n [0x0, 0x7e00, 0x7e0000, 0x0],\n [0x20, 0x10080402, 0x4081020, 0x0],\n [0x3c42, 0x2040810, 0x1010, 0x0],\n [0x1c22, 0x414f5151, 0x51534d40, 0x201f0000],\n [0x18, 0x24424242, 0x7e424242, 0x0],\n [0x7c, 0x4242427c, 0x4242427c, 0x0],\n [0x1e, 0x20404040, 0x4040201e, 0x0],\n [0x78, 0x44424242, 0x42424478, 0x0],\n [0x7e, 0x4040407c, 0x4040407e, 0x0],\n [0x7e, 0x4040407c, 0x40404040, 0x0],\n [0x1e, 0x20404046, 0x4242221e, 0x0],\n [0x42, 0x4242427e, 0x42424242, 0x0],\n [0x3e, 0x8080808, 0x808083e, 0x0],\n [0x2, 0x2020202, 0x242423c, 0x0],\n [0x42, 0x44485060, 0x50484442, 0x0],\n [0x40, 0x40404040, 0x4040407e, 0x0],\n [0x41, 0x63554949, 0x41414141, 0x0],\n [0x42, 0x62524a46, 0x42424242, 0x0],\n [0x3c, 0x42424242, 0x4242423c, 0x0],\n [0x7c, 0x4242427c, 0x40404040, 0x0],\n [0x3c, 0x42424242, 0x4242423c, 0x4020000],\n [0x7c, 0x4242427c, 0x48444242, 0x0],\n [0x3e, 0x40402018, 0x402027c, 0x0],\n [0x7f, 0x8080808, 0x8080808, 0x0],\n [0x42, 0x42424242, 0x4242423c, 0x0],\n [0x42, 0x42424242, 0x24241818, 0x0],\n [0x41, 0x41414149, 0x49495563, 0x0],\n [0x41, 0x41221408, 0x14224141, 0x0],\n [0x41, 0x41221408, 0x8080808, 0x0],\n [0x7e, 0x4080810, 0x1020207e, 0x0],\n [0x1e10, 0x10101010, 0x10101010, 0x101e0000],\n [0x4040, 0x20201010, 0x8080404, 0x2020000],\n [0x7808, 0x8080808, 0x8080808, 0x8780000],\n [0x1028, 0x44000000, 0x0, 0x0],\n [0x0, 0x0, 0x0, 0xff0000],\n [0x201008, 0x4000000, 0x0, 0x0],\n [0x0, 0x3c0202, 0x3e42423e, 0x0],\n [0x4040, 0x407c4242, 0x4242427c, 0x0],\n [0x0, 0x3c4240, 0x4040423c, 0x0],\n [0x202, 0x23e4242, 0x4242423e, 0x0],\n [0x0, 0x3c4242, 0x7e40403e, 0x0],\n [0xe10, 0x107e1010, 0x10101010, 0x0],\n [0x0, 0x3e4242, 0x4242423e, 0x2023c00],\n [0x4040, 0x407c4242, 0x42424242, 0x0],\n [0x808, 0x380808, 0x808083e, 0x0],\n [0x404, 0x1c0404, 0x4040404, 0x4043800],\n [0x4040, 0x40444850, 0x70484442, 0x0],\n [0x3808, 0x8080808, 0x808083e, 0x0],\n [0x0, 0x774949, 0x49494949, 0x0],\n [0x0, 0x7c4242, 0x42424242, 0x0],\n [0x0, 0x3c4242, 0x4242423c, 0x0],\n [0x0, 0x7c4242, 0x4242427c, 0x40404000],\n [0x0, 0x3e4242, 0x4242423e, 0x2020200],\n [0x0, 0x2e3020, 0x20202020, 0x0],\n [0x0, 0x3e4020, 0x1804027c, 0x0],\n [0x10, 0x107e1010, 0x1010100e, 0x0],\n [0x0, 0x424242, 0x4242423e, 0x0],\n [0x0, 0x424242, 0x24241818, 0x0],\n [0x0, 0x414141, 0x49495563, 0x0],\n [0x0, 0x412214, 0x8142241, 0x0],\n [0x0, 0x424242, 0x4242423e, 0x2023c00],\n [0x0, 0x7e0408, 0x1020407e, 0x0],\n [0xe1010, 0x101010e0, 0x10101010, 0x100e0000],\n [0x80808, 0x8080808, 0x8080808, 0x8080000],\n [0x700808, 0x8080807, 0x8080808, 0x8700000],\n [0x3149, 0x46000000, 0x0, 0x0],\n]\n\nconst charLUT = Fn(([index]: [Int]) => {\n const result = ivec4(0).toVar('result')\n let ifChain = If(index.equal(int(0)), () => void result.assign(ivec4(...CHAR_DATA[0])))\n for (let i = 1; i < CHAR_DATA.length; i++)\n ifChain = ifChain.ElseIf(index.equal(int(i)), () => void result.assign(ivec4(...CHAR_DATA[i])))\n return result\n}).setLayout({\n name: 'charLUT',\n type: 'ivec4',\n inputs: [{ name: 'index', type: 'int' }],\n})\n\nexport const char = Fn(([uv, charCode]: [Vec2, Int]): Float => {\n const charCoord = ivec2(7, 15)\n .sub(floor(uv.mul(vec2(8, 16))).toIVec2())\n .toVar('charCoord')\n const col = charLUT(charCode).toVar('col')\n const fourLines = int(0).toVar('fourLines')\n const index = charCoord.y.toFloat().div(4).floor().toInt().toVar('index')\n\n If(index.equal(int(0)), () => void fourLines.assign(col.x))\n .ElseIf(index.equal(int(1)), () => void fourLines.assign(col.y))\n .ElseIf(index.equal(int(2)), () => void fourLines.assign(col.z))\n .Else(() => void fourLines.assign(col.w))\n\n const yMod4 = modi(charCoord.y as unknown as Int, int(4)).toVar('yMod4')\n const exponent = int(3).sub(yMod4).toVar('exponent')\n const divisor = pow(int(256).toFloat(), exponent.toFloat()).toInt().toVar('divisor')\n const currentLine = modi(fourLines.div(divisor), int(256)).toVar('currentLine')\n\n const pixelDivisor = pow(int(2).toFloat(), charCoord.x.toFloat()).toInt().toVar('pixelDivisor')\n const currentPixel = modi(currentLine.div(pixelDivisor), int(2)).toVar('currentPixel')\n\n return currentPixel.toFloat()\n}).setLayout({\n name: 'char',\n type: 'float',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'charCode', type: 'int' },\n ],\n})\n","import { Fn, Int } from '../../node'\n\nexport const modi = Fn(([x, y]: [Int, Int]): Int => {\n const xf = x.toFloat()\n const yf = y.toFloat()\n const quotient = xf.div(yf).floor()\n return x.sub(quotient.mul(yf).toInt())\n}).setLayout({\n name: 'modi',\n type: 'int',\n inputs: [\n { name: 'x', type: 'int' },\n { name: 'y', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { circleSDFBasic } from '../sdf/circleSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const circleFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circleFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const circle = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(circleSDFBasic(st), size)\n}).setLayout({\n name: 'circle',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const circleWithStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(circleSDFBasic(st), size, strokeWidth)\n}).setLayout({\n name: 'circleWithStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const circleSDF = Fn(([v, center]: [Vec2, Vec2]) => {\n return v.sub(center).length().mul(2)\n}).setLayout({\n name: 'circleSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const circleSDFBasic = Fn(([v]: [Vec2]) => {\n return v.sub(vec2(0.5)).length().mul(2)\n}).setLayout({\n name: 'circleSDFBasic',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Int, vec2, vec4, floor, float } from '../../node'\nimport { scale2dVec } from '../space/scale'\nimport { macbeth } from '../color/palette/macbeth'\nimport { crossSDF } from '../sdf/crossSDF'\nimport { rectSDF } from '../sdf/rectSDF'\nimport { rectFill } from './rect'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const colorCheckerTile = Fn(([uv]: [Vec2]): Vec4 => {\n const st = scale2dVec(uv, vec2(1, 1.5)).mul(vec2(6, 4)).toVar('st')\n return vec4(st.fract(), st.floor())\n}).setLayout({\n name: 'colorCheckerTile',\n type: 'vec4',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n\nexport const colorCheckerMacbeth = Fn(([uv]: [Vec2]): Vec4 => {\n const t = colorCheckerTile(vec2(uv.x, uv.y.oneMinus())).toVar('t')\n const index = t.w.mul(6).add(t.z).floor().toInt().toVar('index')\n\n const color = macbeth(index)\n .mul(rectFill(t.xy, vec2(0.8)))\n .add(fill(crossSDF(uv, float(2)), float(0.015)))\n .add(\n stroke(rectSDF(uv, vec2(1.015, 0.68)), float(1), float(0.01))\n .sub(rectFill(uv, vec2(0.966, 1)))\n .sub(rectFill(uv, vec2(1.1, 0.63)))\n .saturate()\n )\n .toVar('color')\n\n const alpha = rectFill(uv, vec2(1.03, 0.69)).toVar('alpha')\n return vec4(color.saturate().mul(alpha), alpha)\n}).setLayout({\n name: 'colorCheckerMacbeth',\n type: 'vec4',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n\nexport const colorChecker = colorCheckerMacbeth\n","import { Fn, Vec2, Vec3, Float, vec2, vec3 } from '../../node'\n\nexport const scale2d = Fn(([st, s]: [Vec2, Float]): Vec2 => {\n return st.sub(vec2(0.5)).mul(s).add(vec2(0.5))\n}).setLayout({\n name: 'scale2d',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const scale2dWithCenter = Fn(([st, s, center]: [Vec2, Float, Vec2]): Vec2 => {\n return st.sub(center).mul(s).add(center)\n}).setLayout({\n name: 'scale2dWithCenter',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'center', type: 'vec2' },\n ],\n})\n\nexport const scale2dVec = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return st.sub(vec2(0.5)).mul(s).add(vec2(0.5))\n}).setLayout({\n name: 'scale2dVec',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const scale3d = Fn(([st, s]: [Vec3, Float]): Vec3 => {\n return st.sub(vec3(0.5)).mul(s).add(vec3(0.5))\n}).setLayout({\n name: 'scale3d',\n type: 'vec3',\n inputs: [\n { name: 'st', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const scale = scale2dVec\n","import { Fn, vec3, Int, Vec3, If, int } from '../../../node'\n\nconst colors = [\n [0.46017, 0.33059, 0.27477], // DARK_SKIN\n [0.769, 0.576, 0.506], // LIGHT_SKIN\n [0.356, 0.472, 0.609], // BLUE_SKY\n [0.357, 0.427, 0.247], // FOLIAGE\n [0.518, 0.506, 0.694], // BLUE_FLOWER\n [0.384, 0.749, 0.675], // BLUISH_GREEN\n [0.867, 0.487, 0.184], // ORANGE\n [0.29, 0.357, 0.671], // PURPLISH_BLUE\n [0.769, 0.333, 0.384], // MODERATE_RED\n [0.365, 0.231, 0.42], // PURPLE\n [0.624, 0.745, 0.227], // YELLOW_GREEN\n [0.894, 0.635, 0.16], // ORANGE_YELLOW\n [0.176, 0.247, 0.584], // BLUE\n [0.239, 0.588, 0.29], // GREEN\n [0.69, 0.224, 0.227], // RED\n [0.925, 0.784, 0.094], // YELLOW\n [0.749, 0.309, 0.598], // MAGENTA\n [0.0, 0.537, 0.659], // CYAN\n [0.956, 0.956, 0.945], // WHITE\n [0.789, 0.797, 0.797], // NEUTRAL_80\n [0.635, 0.643, 0.643], // NEUTRAL_65\n [0.475, 0.478, 0.478], // NEUTRAL_50\n [0.329, 0.333, 0.337], // NEUTRAL_35\n [0.2, 0.2, 0.204], // BLACK\n]\n\nexport const macbeth = Fn(([index]: [Int]): Vec3 => {\n const result = vec3(0).toVar()\n let ifChain = If(index.equal(int(0)), () => void result.assign(vec3(...colors[0])))\n for (let i = 1; i < colors.length; i++)\n ifChain = ifChain.ElseIf(index.equal(int(i)), () => void result.assign(vec3(...colors[i])))\n return result\n}).setLayout({\n name: 'macbeth',\n type: 'vec3',\n inputs: [{ name: 'index', type: 'int' }],\n})\n","import { Fn, vec2, min, Float, Vec2 } from '../../node'\nimport { rectSDF } from './rectSDF'\n\nexport const crossSDF = Fn(([st, s]: [Vec2, Float]): Float => {\n const size = vec2(0.25, s)\n return min(rectSDF(st, size), rectSDF(st, size.yx))\n}).setLayout({\n name: 'crossSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const rectSDFBasic = Fn(([st]: [Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.abs().max(normalizedSt.y.abs())\n}).setLayout({\n name: 'rectSDFBasic',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const rectSDF = Fn(([st, s]: [Vec2, Vec2]) => {\n const normalizedSt = st.mul(2).sub(1).toVar()\n return normalizedSt.x.div(s.x).abs().max(normalizedSt.y.div(s.y).abs())\n}).setLayout({\n name: 'rectSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const rectSDFUniform = Fn(([st, s]: [Vec2, Float]) => {\n return rectSDF(st, vec2(s))\n}).setLayout({\n name: 'rectSDFUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const rectSDFRounded = Fn(([p, b, r]: [Vec2, Vec2, Float]) => {\n const d = p.sub(0.5).mul(4.2).abs().sub(b).add(vec2(r)).toVar()\n return d.x.max(d.y).min(0).add(d.max(0).length()).sub(r)\n}).setLayout({\n name: 'rectSDFRounded',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, float } from '../../node'\nimport { rectSDF, rectSDFUniform } from '../sdf/rectSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const rectStroke = Fn(([st, size, strokeWidth]: [Vec2, Vec2, Float]): Float => {\n return stroke(rectSDF(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectStrokeUniform = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(rectSDFUniform(st, size), float(1), strokeWidth)\n}).setLayout({\n name: 'rectStrokeUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const rectFill = Fn(([st, size]: [Vec2, Vec2]): Float => {\n return fill(rectSDF(st, size), float(1))\n}).setLayout({\n name: 'rectFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'vec2' },\n ],\n})\n\nexport const rectFillUniform = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(rectSDFUniform(st, size), float(1))\n}).setLayout({\n name: 'rectFillUniform',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const rect = rectFill\n","import { Fn, Vec2, Vec4, vec2, vec4, texture, step, float, vec3 } from '../../node'\nimport { nearest } from '../space/nearest'\n\nconst pickerSize = vec2(0.05)\nconst crosshairSize = float(0.003)\n\nexport const colorPickerSample = Fn(([tex, pos, texResolution]: [any, Vec2, Vec2]): Vec4 => {\n const nearestPos = nearest(pos, texResolution)\n return texture(tex, nearestPos)\n}).setLayout({\n name: 'colorPickerSample',\n type: 'vec4',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'pos', type: 'vec2' },\n { name: 'texResolution', type: 'vec2' },\n ],\n})\n\nexport const colorPickerDisplay = Fn(([st, pickerPos, pickedColor]: [Vec2, Vec2, Vec4]): Vec4 => {\n const displayPos = pickerPos.add(vec2(0.08, 0.08)).toVar('displayPos')\n const distToDisplay = st.sub(displayPos).abs().toVar('distToDisplay')\n const inPatch = step(distToDisplay.x, pickerSize.x).mul(step(distToDisplay.y, pickerSize.y)).toVar('inPatch')\n const crosshair = step(st.sub(pickerPos).abs().x, crosshairSize)\n .mul(step(st.sub(pickerPos).abs().y, crosshairSize.mul(5)))\n .add(\n step(st.sub(pickerPos).abs().y, crosshairSize).mul(\n step(st.sub(pickerPos).abs().x, crosshairSize.mul(5))\n )\n )\n .toVar('crosshair')\n const borderWidth = float(0.002).toVar('borderWidth')\n const inBorder = step(distToDisplay.x, pickerSize.x.add(borderWidth))\n .mul(step(distToDisplay.y, pickerSize.y.add(borderWidth)))\n .sub(inPatch)\n .toVar('inBorder')\n const result = vec4(0, 0, 0, 0).toVar('result')\n result.rgb.assign(pickedColor.rgb.mul(inPatch))\n result.a.assign(inPatch)\n result.rgb.assign(result.rgb.add(vec3(1, 1, 1).mul(crosshair)))\n result.a.assign(result.a.add(crosshair))\n result.a.assign(result.a.add(inBorder))\n return result\n}).setLayout({\n name: 'colorPickerDisplay',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pickerPos', type: 'vec2' },\n { name: 'pickedColor', type: 'vec4' },\n ],\n})\n\nexport const colorPicker = Fn(([st, tex, pickerPos, texResolution]: [Vec2, any, Vec2, Vec2]): Vec4 => {\n const pickedColor = colorPickerSample(tex, pickerPos, texResolution)\n return colorPickerDisplay(st, pickerPos, pickedColor)\n}).setLayout({\n name: 'colorPicker',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'tex', type: 'sampler2D' },\n { name: 'pickerPos', type: 'vec2' },\n { name: 'texResolution', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, floor } from '../../node'\n\nexport const nearest = Fn(([v, res]: [Vec2, Vec2]): Vec2 => {\n const offset = res.sub(1).reciprocal().mul(0.5).toVar('offset')\n return floor(v.mul(res)).div(res).add(offset)\n}).setLayout({\n name: 'nearest',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'res', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, Mat2, Int, If, Loop, Break, float, vec2, int } from '../../node'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_DECIMALS = float(2.0)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nconst digitsCore = Fn(([st, value, nDecDigit]: [Vec2, Float, Float]): Float => {\n const adjustedSt = st.div(DIGITS_SIZE).toVar('adjustedSt')\n const absValue = value.abs().toVar('absValue')\n const biggestDigitIndex = absValue.log2().div(float(10).log2()).floor().max(0).toVar('biggestDigitIndex')\n const counter = absValue.floor().toVar('counter')\n const nIntDigits = float(1).toVar('nIntDigits')\n\n Loop(int(9), () => {\n counter.assign(counter.mul(0.1).floor())\n nIntDigits.addAssign(1)\n If(counter.equal(0), () => {\n Break()\n })\n })\n\n let digit = float(12).toVar('digit')\n const digitIndex = nIntDigits.sub(1).sub(adjustedSt.x.floor()).toVar('digitIndex')\n\n If(digitIndex.greaterThan(nDecDigit.negate().sub(1.5)), () => {\n If(digitIndex.greaterThan(biggestDigitIndex), () => {\n If(value.lessThan(0), () => {\n If(digitIndex.lessThan(biggestDigitIndex.add(1.5)), () => {\n digit.assign(11)\n })\n })\n }).Else(() => {\n If(digitIndex.equal(-1), () => {\n If(nDecDigit.greaterThan(0), () => {\n digit.assign(10)\n })\n }).Else(() => {\n If(digitIndex.lessThan(0), () => {\n digitIndex.addAssign(1)\n })\n const digitValue = absValue.div(float(10).pow(digitIndex)).toVar('digitValue')\n digit.assign(digitValue.add(0.0001).floor().mod(10))\n })\n })\n })\n\n const pos = vec2(adjustedSt.x.fract(), adjustedSt.y).toVar('pos')\n If(pos.x.lessThan(0), () => {\n return float(0)\n })\n If(pos.y.lessThan(0), () => {\n return float(0)\n })\n If(pos.x.greaterThanEqual(1), () => {\n return float(0)\n })\n If(pos.y.greaterThanEqual(1), () => {\n return float(0)\n })\n\n const bin = float(0).toVar('bin')\n\n If(digit.lessThan(0.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(5).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(1.5), () => {\n bin.assign(\n float(2)\n .add(float(2).mul(16))\n .add(float(2).mul(256))\n .add(float(2).mul(4096))\n .add(float(2).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(2.5), () => {\n bin.assign(\n float(7)\n .add(float(1).mul(16))\n .add(float(7).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(3.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(4.5), () => {\n bin.assign(\n float(4)\n .add(float(7).mul(16))\n .add(float(5).mul(256))\n .add(float(1).mul(4096))\n .add(float(1).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(5.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(1).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(6.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(7).mul(256))\n .add(float(1).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(7.5), () => {\n bin.assign(\n float(4)\n .add(float(4).mul(16))\n .add(float(4).mul(256))\n .add(float(4).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(8.5), () => {\n bin.assign(\n float(7)\n .add(float(5).mul(16))\n .add(float(7).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(9.5), () => {\n bin.assign(\n float(7)\n .add(float(4).mul(16))\n .add(float(7).mul(256))\n .add(float(5).mul(4096))\n .add(float(7).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(10.5), () => {\n bin.assign(\n float(2)\n .add(float(0).mul(16))\n .add(float(0).mul(256))\n .add(float(0).mul(4096))\n .add(float(0).mul(65536))\n )\n })\n .ElseIf(digit.lessThan(11.5), () => {\n bin.assign(\n float(0)\n .add(float(0).mul(16))\n .add(float(7).mul(256))\n .add(float(0).mul(4096))\n .add(float(0).mul(65536))\n )\n })\n\n const pixel = pos.mul(vec2(4, 5)).floor().toVar('pixel')\n return bin\n .div(float(2).pow(pixel.x.add(pixel.y.mul(4))))\n .floor()\n .mod(2)\n}).setLayout({\n name: 'digitsCore',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n { name: 'nDecDigit', type: 'float' },\n ],\n})\n\nexport const digitsFloat = Fn(([st, value, nDecDigit]: [Vec2, Float, Float]): Float => {\n return digitsCore(st, value, nDecDigit)\n}).setLayout({\n name: 'digitsFloat',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n { name: 'nDecDigit', type: 'float' },\n ],\n})\n\nexport const digitsInt = Fn(([st, value]: [Vec2, Int]): Float => {\n return digitsCore(st, value.toFloat(), float(0))\n}).setLayout({\n name: 'digitsInt',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'int' },\n ],\n})\n\nexport const digits = Fn(([st, value]: [Vec2, Float]): Float => {\n return digitsCore(st, value, DIGITS_DECIMALS)\n}).setLayout({\n name: 'digits',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'value', type: 'float' },\n ],\n})\n\nexport const digitsVec2 = Fn(([st, v]: [Vec2, Vec2]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(2), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(int(0)), () => {\n value.assign(v.x)\n }).Else(() => {\n value.assign(v.y)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec2',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec2' },\n ],\n})\n\nexport const digitsVec3 = Fn(([st, v]: [Vec2, Vec3]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(3), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(int(0)), () => {\n value.assign(v.x)\n })\n .ElseIf(i.equal(1), () => {\n value.assign(v.y)\n })\n .Else(() => {\n value.assign(v.z)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec3',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec3' },\n ],\n})\n\nexport const digitsVec4 = Fn(([st, v]: [Vec2, Vec4]): Float => {\n let rta = float(0).toVar('rta')\n Loop(int(4), ({ i }) => {\n const pos = st.add(vec2(i.toFloat(), 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET)).toVar('pos')\n let value = float(0).toVar('value')\n If(i.equal(0), () => {\n value.assign(v.x)\n })\n .ElseIf(i.equal(1), () => {\n value.assign(v.y)\n })\n .ElseIf(i.equal(2), () => {\n value.assign(v.z)\n })\n .Else(() => {\n value.assign(v.w)\n })\n rta.addAssign(digits(pos, value))\n })\n return rta\n}).setLayout({\n name: 'digitsVec4',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'v', type: 'vec4' },\n ],\n})\n\nexport const digitsMat2 = Fn(([st, matrix]: [Vec2, Mat2]): Float => {\n let rta = float(0).toVar('rta')\n // Manually unroll the matrix elements\n const pos00 = st\n .add(vec2(0, 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos00')\n const pos01 = st\n .add(vec2(0, 1).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos01')\n const pos10 = st\n .add(vec2(1, 0).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos10')\n const pos11 = st\n .add(vec2(1, 1).mul(DIGITS_SIZE).mul(DIGITS_VALUE_OFFSET))\n .sub(DIGITS_SIZE.mul(vec2(0, 3)))\n .toVar('pos11')\n\n rta.addAssign(digits(pos00, matrix.element(int(0)).element(int(0))))\n rta.addAssign(digits(pos01, matrix.element(int(1)).element(int(0))))\n rta.addAssign(digits(pos10, matrix.element(int(0)).element(int(1))))\n rta.addAssign(digits(pos11, matrix.element(int(1)).element(int(1))))\n\n return rta\n}).setLayout({\n name: 'digitsMat2',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'matrix', type: 'mat2' },\n ],\n})\n\n// Note: Mat3 and Mat4 display functions are omitted for simplicity\n// due to complexity in matrix element access. Only Mat2 is implemented.\n","import { Fn, Float, Vec3, Vec4, X, float, vec3, vec4, mix } from '../../node'\n\nexport const flipFloat = Fn(([v, pct]: [Float, Float]): Float => {\n return mix(v, float(1).sub(v), pct)\n}).setLayout({\n name: 'flipFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec3 = Fn(([v, pct]: [Vec3, Float]): Vec3 => {\n return mix(v, vec3(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flipVec4 = Fn(([v, pct]: [Vec4, Float]): Vec4 => {\n return mix(v, vec4(1).sub(v), pct)\n}).setLayout({\n name: 'flipVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'pct', type: 'float' },\n ],\n})\n\nexport const flip = Fn(([v, pct]: [X, Float]): X => {\n return mix(v, v.oneMinus(), pct)\n}).setLayout({\n name: 'flip',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'pct', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { hexSDF } from '../sdf/hexSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const hexFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(hexSDF(st), size)\n}).setLayout({\n name: 'hexFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const hexStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(hexSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'hexStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const hex = hexFill\n","import { Fn, Vec2, Float } from '../../node'\n\nexport const hexSDF = Fn(([st]: [Vec2]): Float => {\n const transformed = st.mul(2).sub(1).toVar('transformed')\n transformed.assign(transformed.abs())\n return transformed.y.abs().max(transformed.x.mul(0.866025).add(transformed.y.mul(0.5)))\n}).setLayout({\n name: 'hexSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Mat2, vec2, step, vec4 } from '../../node'\nimport { digitsMat2 } from './digits'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nexport const matrix = Fn(([st, M]: [Vec2, Mat2]): Vec4 => {\n const rta = vec4(0).toVar('rta')\n const size = DIGITS_SIZE.mul(DIGITS_VALUE_OFFSET.abs()).mul(2)\n rta.a.assign(\n step(DIGITS_SIZE.x.negate(), st.x)\n .mul(step(st.x, size.x))\n .mul(step(DIGITS_SIZE.y.negate(), st.y))\n .mul(step(st.y, size.y))\n .mul(0.5)\n )\n rta.assign(rta.add(digitsMat2(st, M)))\n return rta\n}).setLayout({\n name: 'matrixMat2',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'M', type: 'mat2' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4, float, step } from '../../node'\nimport { digitsVec2 } from './digits'\nimport { circleFill } from './circle'\n\nconst DIGITS_SIZE = vec2(0.02)\nconst DIGITS_VALUE_OFFSET = vec2(-6.0, 3.0)\n\nexport const pointWithColor = Fn(([st, pos, color, radius]: [Vec2, Vec2, Vec3, Float]): Vec4 => {\n const rta = vec4(0).toVar('rta')\n const st_p = st.sub(pos).toVar('st_p')\n rta.assign(rta.add(vec4(color, 1).mul(circleFill(st_p.add(0.5), radius))))\n st_p.assign(st_p.sub(DIGITS_SIZE.mul(vec2(0, 0.5))))\n const size = DIGITS_SIZE.mul(DIGITS_VALUE_OFFSET.abs()).mul(vec2(2, 0.5))\n rta.a.addAssign(\n step(0, st_p.x)\n .mul(step(st_p.x, size.x))\n .mul(step(DIGITS_SIZE.y.mul(-0.5), st_p.y))\n .mul(step(st_p.y, size.y))\n .mul(0.5)\n )\n rta.assign(rta.add(digitsVec2(st_p, pos)))\n return rta\n}).setLayout({\n name: 'pointWithColor',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n { name: 'color', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n\nexport const point = Fn(([st, pos]: [Vec2, Vec2]): Vec4 => {\n return pointWithColor(st, pos, vec3(1, 0, 0), float(0.02))\n}).setLayout({\n name: 'point',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'pos', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float } from '../../node'\nimport { triSDF } from '../sdf/triSDF'\nimport { fill } from './fill'\nimport { stroke } from './stroke'\n\nexport const triFill = Fn(([st, size]: [Vec2, Float]): Float => {\n return fill(triSDF(st), size)\n}).setLayout({\n name: 'triFill',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n ],\n})\n\nexport const triStroke = Fn(([st, size, strokeWidth]: [Vec2, Float, Float]): Float => {\n return stroke(triSDF(st), size, strokeWidth)\n}).setLayout({\n name: 'triStroke',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'size', type: 'float' },\n { name: 'strokeWidth', type: 'float' },\n ],\n})\n\nexport const tri = triFill\n","import { Fn, Vec2, Float } from '../../node'\n\nexport const triSDF = Fn(([st]: [Vec2]): Float => {\n const centered = st.sub(0.5).mul(5).toVar('centered')\n return centered.x.abs().mul(0.866025).add(centered.y.mul(0.5)).max(centered.y.negate().mul(0.5))\n}).setLayout({\n name: 'triSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triSDFCenter = Fn(([st, center]: [Vec2, Vec2]): Float => {\n const centered = st.sub(center).mul(5).toVar('centered')\n return centered.x.abs().mul(0.866025).add(centered.y.mul(0.5)).max(centered.y.negate().mul(0.5))\n}).setLayout({\n name: 'triSDFCenter',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const AABB = struct({\n minBounds: vec3(),\n maxBounds: vec3(),\n})\n\nexport type AABBType = ReturnType<typeof AABB>\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbCentroid = Fn(([box]: [AABBType]): Vec3 => {\n return box.minBounds.add(box.maxBounds).mul(0.5)\n}).setLayout({\n name: 'aabbCentroid',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Bool } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbContain = Fn(([box, point]: [AABBType, Vec3]): Bool => {\n return point.x\n .greaterThan(box.minBounds.x)\n .and(point.x.lessThanEqual(box.maxBounds.x))\n .and(point.y.greaterThan(box.minBounds.y))\n .and(point.y.lessThanEqual(box.maxBounds.y))\n .and(point.z.greaterThan(box.minBounds.z))\n .and(point.z.lessThanEqual(box.maxBounds.z))\n}).setLayout({\n name: 'aabbContain',\n type: 'bool',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'point', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const diagonal = Fn(([box]: [AABBType]): Vec3 => {\n return box.maxBounds.sub(box.minBounds).abs()\n}).setLayout({\n name: 'diagonal',\n type: 'vec3',\n inputs: [{ name: 'box', type: 'auto' }],\n})\n","import { Fn, Vec3, Float } from '../../../node'\nimport { AABBType, AABB } from './aabb'\n\nexport const expand = Fn(([box, value]: [AABBType, Float]): AABBType => {\n return AABB({\n minBounds: box.minBounds.sub(value),\n maxBounds: box.maxBounds.add(value),\n })\n}).setLayout({\n name: 'expand',\n type: 'auto',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'value', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2 } from '../../../node'\nimport { AABBType } from './aabb'\n\nexport const aabbIntersect = Fn(([box, rayOrigin, rayDir]: [AABBType, Vec3, Vec3]): Vec2 => {\n const tMin = box.minBounds.sub(rayOrigin).div(rayDir)\n const tMax = box.maxBounds.sub(rayOrigin).div(rayDir)\n const t1 = tMin.min(tMax)\n const t2 = tMin.max(tMax)\n const tNear = t1.x.max(t1.y).max(t1.z)\n const tFar = t2.x.min(t2.y).min(t2.z)\n return vec2(tNear, tFar)\n}).setLayout({\n name: 'aabbIntersect',\n type: 'vec2',\n inputs: [\n { name: 'box', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, max, abs } from '../../../node'\nimport { AABBType, AABB } from './aabb'\nimport { diagonal } from './diagonal'\n\nexport const square = Fn(([box]: [AABBType]): AABBType => {\n const diag = diagonal(box).mul(0.5).toVar('diag')\n const center = box.minBounds.add(diag).toVar('center')\n const maxDim = max(abs(diag.x), max(abs(diag.y), abs(diag.z))).toVar('maxDim')\n return AABB({\n minBounds: center.sub(maxDim),\n maxBounds: center.add(maxDim),\n })\n}).setLayout({\n name: 'square',\n type: 'auto',\n inputs: [{ name: 'box', type: 'auto' }],\n})","import { Fn, Float, length, cross } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const area = Fn(([tri]: [TriangleType]): Float => {\n return length(cross(tri.b.sub(tri.a), tri.c.sub(tri.a))).mul(0.5)\n}).setLayout({\n name: 'area',\n type: 'float',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, length, cross, dot, vec3, float } from '../../../node'\nimport { area } from './area'\nimport { TriangleType } from './triangle'\n\nexport const barycentricFromVec3 = Fn(([a, b, c]: [Vec3, Vec3, Vec3]): Vec3 => {\n const daa = dot(a, a).toVar('daa')\n const dab = dot(a, b).toVar('dab')\n const dbb = dot(b, b).toVar('dbb')\n const dca = dot(c, a).toVar('dca')\n const dcb = dot(c, b).toVar('dcb')\n const denom = daa.mul(dbb).sub(dab.mul(dab)).toVar('denom')\n const y = dbb.mul(dca).sub(dab.mul(dcb)).div(denom).toVar('y')\n const z = daa.mul(dcb).sub(dab.mul(dca)).div(denom).toVar('z')\n return vec3(float(1).sub(y).sub(z), y, z)\n}).setLayout({\n name: 'barycentricFromVec3',\n type: 'vec3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// barycentric(Triangle tri) - Triangle structから座標計算\nexport const barycentric = Fn(([tri]: [TriangleType]): Vec3 => {\n return barycentricFromVec3(tri.a, tri.b, tri.c)\n}).setLayout({\n name: 'barycentric',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n\nexport const barycentricFromPosition = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const f0 = a.sub(pos).toVar('f0')\n const f1 = b.sub(pos).toVar('f1')\n const f2 = c.sub(pos).toVar('f2')\n const areaValue = area(tri).toVar('area')\n return vec3(length(cross(f1, f2)), length(cross(f2, f0)), length(cross(f0, f1))).div(areaValue)\n}).setLayout({\n name: 'barycentricFromPosition',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleCentroid = Fn(([tri]: [TriangleType]): Vec3 => {\n return tri.a.add(tri.b).add(tri.c).div(3)\n}).setLayout({\n name: 'triangleCentroid',\n type: 'vec3',\n inputs: [{ name: 'tri', type: 'auto' }],\n})\n","import { Fn, Vec3, dot, length, cross, normalize, max, min, vec3, float, If } from '../../../node'\nimport { barycentricFromVec3 } from './barycentric'\nimport { TriangleType } from './triangle'\n\nexport const closestPointWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a)\n const ac = c.sub(a)\n const p = pos.sub(dot(triNormal, pos.sub(a)).mul(triNormal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n return b.add(t.div(n).mul(bc))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n return c.add(t.div(n).mul(ca))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n return a.add(t.div(n).mul(ab))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPointWithNormal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const closestPoint = Fn(([tri, pos]: [TriangleType, Vec3]): Vec3 => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const ab = b.sub(a) // .toVar('ab') @TODO FIX\n const ac = c.sub(a)\n const normal = normalize(cross(ac, ab))\n const p = pos.sub(dot(normal, pos.sub(a)).mul(normal))\n const ap = p.sub(a)\n const bcoords = barycentricFromVec3(ab, ac, ap)\n\n If(bcoords.x.lessThan(0), () => {\n const bc = c.sub(b).toVar('bc')\n const n = length(bc).toVar('n')\n const t = max(float(0), min(dot(bc, p.sub(b)).div(n), n)).toVar('t')\n return b.add(t.div(n).mul(bc))\n })\n\n If(bcoords.y.lessThan(0), () => {\n const ca = a.sub(c).toVar('ca')\n const n = length(ca).toVar('n')\n const t = max(float(0), min(dot(ca, p.sub(c)).div(n), n)).toVar('t')\n return c.add(t.div(n).mul(ca))\n })\n\n If(bcoords.z.lessThan(0), () => {\n const n = length(ab).toVar('n')\n const t = max(float(0), min(dot(ab, p.sub(a)).div(n), n)).toVar('t')\n return a.add(t.div(n).mul(ab))\n })\n\n return a.mul(bcoords.x).add(b.mul(bcoords.y)).add(c.mul(bcoords.z))\n}).setLayout({\n name: 'closestPoint',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Bool, Vec3, cross, dot } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const triangleContain = Fn(([tri, pos]: [TriangleType, Vec3]): Bool => {\n const localA = tri.a.sub(pos).toVar('localA')\n const localB = tri.b.sub(pos).toVar('localB')\n const localC = tri.c.sub(pos).toVar('localC')\n const u = cross(localB, localC).toVar('u')\n const v = cross(localC, localA).toVar('v')\n const w = cross(localA, localB).toVar('w')\n return dot(u, v).greaterThanEqual(0).and(dot(u, w).greaterThanEqual(0))\n}).setLayout({\n name: 'triangleContain',\n type: 'bool',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn, Float, Vec3, cross, dot, sign, sqrt, min } from '../../../node'\nimport { lengthSq } from '../../math/lengthSq'\nimport { TriangleType } from './triangle'\n\nexport const distanceSq = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const a = tri.a\n const b = tri.b\n const c = tri.c\n const v21 = b.sub(a)\n const p1 = pos.sub(a)\n const v32 = c.sub(b)\n const p2 = pos.sub(b)\n const v13 = a.sub(c)\n const p3 = pos.sub(c)\n const nor = cross(v21, v13)\n\n const s1 = sign(dot(cross(v21, nor), p1))\n const s2 = sign(dot(cross(v32, nor), p2))\n const s3 = sign(dot(cross(v13, nor), p3))\n const signSum = s1.add(s2).add(s3)\n\n const edge1 = lengthSq(v21.mul(dot(v21, p1).div(lengthSq(v21)).saturate()).sub(p1))\n const edge2 = lengthSq(v32.mul(dot(v32, p2).div(lengthSq(v32)).saturate()).sub(p2))\n const edge3 = lengthSq(v13.mul(dot(v13, p3).div(lengthSq(v13)).saturate()).sub(p3))\n const edgeDistance = min(min(edge1, edge2), edge3)\n\n const planeDistance = dot(nor, p1).mul(dot(nor, p1)).div(lengthSq(nor))\n\n // @ts-ignore\n return sqrt(edgeDistance.select(planeDistance, signSum.lessThan(2))) as Float\n}).setLayout({\n name: 'distanceSq',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { Fn } from '../../node'\nimport type { Vec2, X } from '../../node/types'\n\nexport const lengthSq = Fn(([v]: [X]): X => {\n return (v as Vec2).dot(v as Vec2) as X\n}).setLayout({\n name: 'lengthSq',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Vec3, cross, dot, float, struct, vec3 } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const Ray = struct({\n origin: vec3(),\n direction: vec3(),\n})\n\nexport type RayType = ReturnType<typeof Ray>\n\nexport const triangleIntersect = Fn(([tri, rayOrigin, rayDir]: [TriangleType, Vec3, Vec3]): Float => {\n const v1v0 = tri.b.sub(tri.a)\n const v2v0 = tri.c.sub(tri.a)\n const rov0 = rayOrigin.sub(tri.a)\n const point = cross(v1v0, v2v0)\n const q = cross(rov0, rayDir)\n const d = float(1).div(dot(rayDir, point))\n const u = d.mul(dot(q, v2v0).negate())\n const v = d.mul(dot(q, v1v0))\n const t = d.mul(dot(point, rov0).negate())\n\n const isOutside = u\n .lessThan(0)\n .or(u.greaterThan(1))\n .or(v.lessThan(0))\n .or(u.add(v).greaterThan(1))\n .or(t.lessThan(0))\n\n return float(9999999.9).select(t, isOutside)\n}).setLayout({\n name: 'triangleIntersect',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'rayOrigin', type: 'vec3' },\n { name: 'rayDir', type: 'vec3' },\n ],\n})\n\nexport const triangleIntersectRay = Fn(([tri, ray]: [TriangleType, RayType]): Float => {\n return triangleIntersect(tri, ray.origin, ray.direction)\n}).setLayout({\n name: 'triangleIntersectRay',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'ray', type: 'auto' },\n ],\n})\n","import { Fn, Vec3, cross, normalize } from '../../../node'\nimport { TriangleType } from './triangle'\n\nexport const normal = Fn(([tri]: [TriangleType]): Vec3 => {\n return normalize(cross(tri.b.sub(tri.a), tri.c.sub(tri.a)))\n}).setLayout({\n name: 'normal',\n type: 'vec3',\n inputs: [\n { name: 'tri', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec3, length, sign, dot } from '../../../node'\nimport { normal } from './normal'\nimport { closestPointWithNormal } from './closestPoint'\nimport { TriangleType } from './triangle'\n\nexport const signedDistanceWithNormal = Fn(([tri, triNormal, pos]: [TriangleType, Vec3, Vec3]): Float => {\n const nearest = closestPointWithNormal(tri, triNormal, pos).toVar('nearest')\n const delta = pos.sub(nearest).toVar('delta')\n const distance = length(delta).toVar('distance')\n return distance.mul(sign(dot(delta.div(distance), triNormal)))\n}).setLayout({\n name: 'signedDistanceWithNormal',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'triNormal', type: 'vec3' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n\nexport const signedDistance = Fn(([tri, pos]: [TriangleType, Vec3]): Float => {\n const triNormal = normal(tri).toVar('triNormal')\n return signedDistanceWithNormal(tri, triNormal, pos)\n}).setLayout({\n name: 'signedDistance',\n type: 'float',\n inputs: [\n { name: 'tri', type: 'auto' },\n { name: 'pos', type: 'vec3' },\n ],\n})\n","import { struct, vec3 } from '../../../node'\n\nexport const Triangle = struct({\n a: vec3(),\n b: vec3(),\n c: vec3(),\n})\n\nexport type TriangleType = ReturnType<typeof Triangle>\n","import { Fn, Vec2, Vec3, Vec4, Float, vec2, vec3, vec4 } from '../../node'\nimport { mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const cnoiseVec2 = Fn(([P]: [Vec2]): Float => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y)\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'cnoiseVec2',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec2' }],\n})\n\nexport const cnoiseVec3 = Fn(([P]: [Vec3]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x)\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec3',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec3' }],\n})\n\nexport const cnoiseVec4 = Fn(([P]: [Vec4]): Float => {\n const Pi0 = P.floor().toVar('Pi0')\n const Pi1 = Pi0.add(1).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(gx00.step(vec4(0)).sub(0.5)))\n gy00.subAssign(sw00.mul(gy00.step(vec4(0)).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(gx01.step(vec4(0)).sub(0.5)))\n gy01.subAssign(sw01.mul(gy01.step(vec4(0)).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(gx10.step(vec4(0)).sub(0.5)))\n gy10.subAssign(sw10.mul(gy10.step(vec4(0)).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(gx11.step(vec4(0)).sub(0.5)))\n gy11.subAssign(sw11.mul(gy11.step(vec4(0)).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x)\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'cnoiseVec4',\n type: 'float',\n inputs: [{ name: 'P', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\n\nfunction fun(x: Float): Float\nfunction fun(x: Vec2): Vec2\nfunction fun(x: Vec3): Vec3\nfunction fun(x: Vec4): Vec4\nfunction fun(x: X): X {\n return x.sub(x.div(289).floor().mul(289))\n}\n\nexport const mod289 = Fn(([x]: [Float]): Float => {\n return fun(x)\n}).setLayout({\n name: 'mod289',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const mod289Vec2 = Fn(([x]: [Vec2]): Vec2 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const mod289Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const mod289Vec4 = Fn(([x]: [Vec4]): Vec4 => {\n return fun(x)\n}).setLayout({\n name: 'mod289Vec4',\n type: 'vec4',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, X } from '../../node'\nimport { mod289, mod289Vec2, mod289Vec3, mod289Vec4 } from './mod289'\n\nfunction fun(v: Float): Float\nfunction fun(v: Vec2): Vec2\nfunction fun(v: Vec3): Vec3\nfunction fun(v: Vec4): Vec4\nfunction fun(v: X): X {\n return v.mul(34).add(1).mul(v)\n}\n\nexport const permute = Fn(([v]: [Float]): Float => {\n return mod289(fun(v))\n}).setLayout({\n name: 'permute',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const permuteVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return mod289Vec2(fun(v))\n}).setLayout({\n name: 'permuteVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const permuteVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return mod289Vec3(fun(v))\n}).setLayout({\n name: 'permuteVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const permuteVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return mod289Vec4(fun(v))\n}).setLayout({\n name: 'permuteVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, int } from '../../node'\n\nexport const taylorInvSqrt = Fn(([r]) => {\n return r.mul(-0.85373472095314).add(1.79284291400159)\n}).setLayout({\n name: 'taylorInvSqrt',\n type: 'auto',\n inputs: [{ name: 'r', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const quintic = Fn(([v]: [X]): X => {\n const v3 = v.mul(v).mul(v).toVar('v3')\n const inner = v.mul(v.mul(6).sub(15)).add(10).toVar('inner')\n return v3.mul(inner)\n}).setLayout({\n name: 'quintic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { snoise2, snoise3Vec3, snoise3Vec4 } from './snoise'\n\nexport const curlVec2 = Fn(([p]: [Vec2]): Vec2 => {\n const e = float(0.1).toVar('e')\n const dx = vec2(e, 0).toVar('dx')\n const dy = vec2(0, e).toVar('dy')\n const p_x0 = snoise2(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise2(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise2(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise2(p.add(dy)).toVar('p_y1')\n const x = p_x1.y.add(p_x0.y).toVar('x')\n const y = p_y1.x.sub(p_y0.x).toVar('y')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec2(x, y).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const curlVec3 = Fn(([p]: [Vec3]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec3(e, 0, 0).toVar('dx')\n const dy = vec3(0, e, 0).toVar('dy')\n const dz = vec3(0, 0, e).toVar('dz')\n const p_x0 = snoise3Vec3(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec3(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec3(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec3(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec3(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec3(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const curlVec4 = Fn(([p]: [Vec4]): Vec3 => {\n const e = float(0.1).toVar('e')\n const dx = vec4(e, 0, 0, 1).toVar('dx')\n const dy = vec4(0, e, 0, 1).toVar('dy')\n const dz = vec4(0, 0, e, 1).toVar('dz')\n const p_x0 = snoise3Vec4(p.sub(dx)).toVar('p_x0')\n const p_x1 = snoise3Vec4(p.add(dx)).toVar('p_x1')\n const p_y0 = snoise3Vec4(p.sub(dy)).toVar('p_y0')\n const p_y1 = snoise3Vec4(p.add(dy)).toVar('p_y1')\n const p_z0 = snoise3Vec4(p.sub(dz)).toVar('p_z0')\n const p_z1 = snoise3Vec4(p.add(dz)).toVar('p_z1')\n const x = p_y1.z.sub(p_y0.z).sub(p_z1.y).add(p_z0.y).toVar('x')\n const y = p_z1.x.sub(p_z0.x).sub(p_x1.z).add(p_x0.z).toVar('y')\n const z = p_x1.y.sub(p_x0.y).sub(p_y1.x).add(p_y0.x).toVar('z')\n const divisor = float(1).div(e.mul(2)).toVar('divisor')\n return vec3(x, y, z).mul(divisor).normalize()\n}).setLayout({\n name: 'curlVec4',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float } from '../../node'\nimport { mod289Vec2, mod289Vec3, mod289Vec4 } from '../math/mod289'\nimport { permute, permuteVec3, permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { grad4 } from '../math/grad4'\n\nexport const snoiseVec2 = Fn(([v]: [Vec2]): Float => {\n const C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439).toVar('C')\n const i = v.add(v.dot(C.yy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xx)).toVar('x0')\n const i1 = vec2(1, 0).select(vec2(0, 1), x0.x.greaterThan(x0.y)).toVar('i1')\n const x12 = x0.xyxy.add(C.xxzz).toVar('x12')\n x12.xy = x12.xy.sub(i1)\n i.assign(mod289Vec2(i))\n const p = permuteVec3(\n permuteVec3(i.y.add(vec3(0, i1.y, 1)))\n .add(i.x)\n .add(vec3(0, i1.x, 1))\n ).toVar('p')\n const m = float(0.5)\n .sub(vec3(x0.dot(x0), x12.xy.dot(x12.xy), x12.zw.dot(x12.zw)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n m.assign(m.mul(m))\n const x = p.mul(C.www).fract().mul(2).sub(1).toVar('x')\n const h = x.abs().sub(0.5).toVar('h')\n const ox = x.add(0.5).floor().toVar('ox')\n const a0 = x.sub(ox).toVar('a0')\n m.mulAssign(float(1.79284291400159).sub(float(0.85373472095314).mul(a0.mul(a0).add(h.mul(h)))))\n const g = vec3(a0.x.mul(x0.x).add(h.x.mul(x0.y)), a0.yz.mul(x12.xz).add(h.yz.mul(x12.yw))).toVar('g')\n return float(130).mul(m.dot(g))\n}).setLayout({\n name: 'snoiseVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const snoiseVec3 = Fn(([v]: [Vec3]): Float => {\n const C = vec2(1 / 6, 1 / 3).toVar('C')\n const D = vec4(0, 0.5, 1, 2).toVar('D')\n const i = v.add(v.dot(C.yyy)).floor().toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxx)).toVar('x0')\n const g = x0.yzx.step(x0.xyz).toVar('g')\n const l = float(1).sub(g).toVar('l')\n const i1 = g.xyz.min(l.zxy).toVar('i1')\n const i2 = g.xyz.max(l.zxy).toVar('i2')\n const x1 = x0.sub(i1).add(C.xxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyy).toVar('x2')\n const x3 = x0.sub(D.yyy).toVar('x3')\n i.assign(mod289Vec3(i))\n const p = permuteVec4(\n permuteVec4(\n permuteVec4(i.z.add(vec4(0, i1.z, i2.z, 1)))\n .add(i.y)\n .add(vec4(0, i1.y, i2.y, 1))\n )\n .add(i.x)\n .add(vec4(0, i1.x, i2.x, 1))\n ).toVar('p')\n const n_ = float(0.142857142857).toVar('n_')\n const ns = n_.mul(D.wyz).sub(D.xzx).toVar('ns')\n const j = p.sub(p.mul(ns.z).mul(ns.z).floor().mul(49)).toVar('j')\n const x_ = j.mul(ns.z).floor().toVar('x_')\n const y_ = j.sub(x_.mul(7)).floor().toVar('y_')\n const x = x_.mul(ns.x).add(ns.yyyy).toVar('x')\n const y = y_.mul(ns.x).add(ns.yyyy).toVar('y')\n const h = float(1).sub(x.abs()).sub(y.abs()).toVar('h')\n const b0 = vec4(x.xy, y.xy).toVar('b0')\n const b1 = vec4(x.zw, y.zw).toVar('b1')\n const s0 = b0.floor().mul(2).add(1).toVar('s0')\n const s1 = b1.floor().mul(2).add(1).toVar('s1')\n const sh = vec4(0).step(h).negate().toVar('sh')\n const a0 = b0.xzyw.add(s0.xzyw.mul(sh.xxyy)).toVar('a0')\n const a1 = b1.xzyw.add(s1.xzyw.mul(sh.zzww)).toVar('a1')\n const p0 = vec3(a0.xy, h.x).toVar('p0')\n const p1 = vec3(a0.zw, h.y).toVar('p1')\n const p2 = vec3(a1.xy, h.z).toVar('p2')\n const p3 = vec3(a1.zw, h.w).toVar('p3')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n const m = float(0.6)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .max(0)\n .toVar('m')\n m.assign(m.mul(m))\n return float(42).mul(m.mul(m).dot(vec4(p0.dot(x0), p1.dot(x1), p2.dot(x2), p3.dot(x3))))\n}).setLayout({\n name: 'snoiseVec3',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const snoiseVec4 = Fn(([v]: [Vec4]): Float => {\n const C = vec4(0.138196601125011, 0.276393202250021, 0.414589803375032, -0.447213595499958).toVar('C')\n const i = v\n .add(v.dot(vec4(0.309016994374947451)))\n .floor()\n .toVar('i')\n const x0 = v.sub(i).add(i.dot(C.xxxx)).toVar('x0')\n const i0 = vec4(0).toVar('i0')\n const isX = x0.xxx.step(x0.yzw).toVar('isX')\n const isYZ = x0.yyz.step(x0.zww).toVar('isYZ')\n i0.x = isX.x.add(isX.y).add(isX.z)\n i0.yzw = float(1).sub(isX)\n i0.y = i0.y.add(isYZ.x).add(isYZ.y)\n i0.zw = i0.zw.add(float(1).sub(isYZ.xy))\n i0.z = i0.z.add(isYZ.z)\n i0.w = i0.w.add(float(1).sub(isYZ.z))\n const i3 = i0.clamp(0, 1).toVar('i3')\n const i2 = i0.sub(1).clamp(0, 1).toVar('i2')\n const i1 = i0.sub(2).clamp(0, 1).toVar('i1')\n const x1 = x0.sub(i1).add(C.xxxx).toVar('x1')\n const x2 = x0.sub(i2).add(C.yyyy).toVar('x2')\n const x3 = x0.sub(i3).add(C.zzzz).toVar('x3')\n const x4 = x0.add(C.wwww).toVar('x4')\n i.assign(mod289Vec4(i))\n const j0 = permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x)).toVar('j0')\n const j1 = permuteVec4(\n permuteVec4(\n permuteVec4(\n permuteVec4(i.w.add(vec4(i1.w, i2.w, i3.w, 1)))\n .add(i.z)\n .add(vec4(i1.z, i2.z, i3.z, 1))\n )\n .add(i.y)\n .add(vec4(i1.y, i2.y, i3.y, 1))\n )\n .add(i.x)\n .add(vec4(i1.x, i2.x, i3.x, 1))\n ).toVar('j1')\n const ip = vec4(1 / 294, 1 / 49, 1 / 7, 0).toVar('ip')\n const p0 = grad4(j0, ip).toVar('p0')\n const p1 = grad4(j1.x, ip).toVar('p1')\n const p2 = grad4(j1.y, ip).toVar('p2')\n const p3 = grad4(j1.z, ip).toVar('p3')\n const p4 = grad4(j1.w, ip).toVar('p4')\n const norm = taylorInvSqrt(vec4(p0.dot(p0), p1.dot(p1), p2.dot(p2), p3.dot(p3))).toVar('norm')\n p0.mulAssign(norm.x)\n p1.mulAssign(norm.y)\n p2.mulAssign(norm.z)\n p3.mulAssign(norm.w)\n p4.mulAssign(taylorInvSqrt(p4.dot(p4)))\n const m0 = float(0.6)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .max(0)\n .toVar('m0')\n const m1 = float(0.6)\n .sub(vec2(x3.dot(x3), x4.dot(x4)))\n .max(0)\n .toVar('m1')\n m0.assign(m0.mul(m0))\n m1.assign(m1.mul(m1))\n return float(49).mul(\n m0\n .mul(m0)\n .dot(vec3(p0.dot(x0), p1.dot(x1), p2.dot(x2)))\n .add(m1.mul(m1).dot(vec2(p3.dot(x3), p4.dot(x4))))\n )\n}).setLayout({\n name: 'snoiseVec4',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const snoise2 = Fn(([x]: [Vec2]): Vec2 => {\n const s = snoiseVec2(x).toVar('s')\n const s1 = snoiseVec2(vec2(x.y.sub(19.1), x.x.add(47.2))).toVar('s1')\n return vec2(s, s1)\n}).setLayout({\n name: 'snoise2',\n type: 'vec2',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\nexport const snoise3Vec3 = Fn(([x]: [Vec3]): Vec3 => {\n const s = snoiseVec3(x).toVar('s')\n const s1 = snoiseVec3(vec3(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2))).toVar('s1')\n const s2 = snoiseVec3(vec3(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4))).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const snoise3Vec4 = Fn(([x]: [Vec4]): Vec3 => {\n const s = snoiseVec4(x).toVar('s')\n const s1 = snoiseVec4(vec4(x.y.sub(19.1), x.z.add(33.4), x.x.add(47.2), x.w)).toVar('s1')\n const s2 = snoiseVec4(vec4(x.z.add(74.2), x.x.sub(124.5), x.y.add(99.4), x.w)).toVar('s2')\n return vec3(s, s1, s2)\n}).setLayout({\n name: 'snoise3Vec4',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec4' }],\n})\n","import { Fn, Float, Vec4, vec4, vec3, float } from '../../node'\n\nexport const grad4 = Fn(([j, ip]: [Float, Vec4]): Vec4 => {\n const ones = vec4(1, 1, 1, -1).toVar('ones')\n const p = vec4(0).toVar('p')\n const s = vec4(0).toVar('s')\n p.xyz = vec3(j, j, j).mul(ip.xyz).fract().mul(7).floor().mul(ip.z).sub(1)\n p.w = float(1.5).sub(p.xyz.abs().dot(ones.xyz))\n s.assign(vec4(p.x.lessThan(0.0), p.y.lessThan(0.0), p.z.lessThan(0.0), p.w.lessThan(0.0)))\n p.xyz = p.xyz.add(s.xyz.mul(2).sub(1).mul(s.www))\n return p\n}).setLayout({\n name: 'grad4',\n type: 'vec4',\n inputs: [\n { name: 'j', type: 'float' },\n { name: 'ip', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, float, Loop, int } from '../../node'\nimport { snoiseVec2, snoiseVec3 } from './snoise'\nimport { gnoiseVec3Tiled } from './gnoise'\n\nconst FBM_OCTAVES = int(4)\nconst FBM_SCALE_SCALAR = 2\nconst FBM_AMPLITUDE_INITIAL = 0.5\nconst FBM_AMPLITUDE_SCALAR = 0.5\n\nexport const fbmVec2 = Fn(([st]: [Vec2]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const coord = st.toVar('coord')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec2(coord)))\n coord.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const fbmVec3 = Fn(([pos]: [Vec3]): Float => {\n const value = float(0).toVar('value')\n const amplitude = float(FBM_AMPLITUDE_INITIAL).toVar('amplitude')\n const posVar = pos.toVar('posVar')\n Loop(FBM_OCTAVES, () => {\n value.addAssign(amplitude.mul(snoiseVec3(posVar)))\n posVar.mulAssign(FBM_SCALE_SCALAR)\n amplitude.mulAssign(FBM_AMPLITUDE_SCALAR)\n })\n return value\n}).setLayout({\n name: 'fbmVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const fbmVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const persistence = float(0.5).toVar('persistence')\n const lacunarity = float(2).toVar('lacunarity')\n const amplitude = float(0.5).toVar('amplitude')\n const total = float(0).toVar('total')\n const normalization = float(0).toVar('normalization')\n const pVar = p.toVar('pVar')\n Loop(FBM_OCTAVES, () => {\n const noiseValue = gnoiseVec3Tiled(pVar, tileLength.mul(lacunarity).div(2))\n .div(2)\n .add(0.5)\n .toVar('noiseValue')\n total.addAssign(noiseValue.mul(amplitude))\n normalization.addAssign(amplitude)\n amplitude.mulAssign(persistence)\n pVar.assign(pVar.mul(lacunarity))\n })\n return total.div(normalization)\n}).setLayout({\n name: 'fbmVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const fbm = fbmVec3\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float } from '../../node'\nimport { random, randomVec2, randomVec3 } from './random'\nimport { srandom3Vec3Tiled } from './srandom'\nimport { cubicVec2 } from '../math/cubic'\nimport { quintic } from '../math/quintic'\n\nexport const gnoise = Fn(([x]: [Float]): Float => {\n const i = x.floor().toVar('i')\n const f = x.fract().toVar('f')\n return random(i).mix(random(i.add(1)), float(0).smoothstep(float(1), f))\n}).setLayout({\n name: 'gnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const gnoiseVec2 = Fn(([st]: [Vec2]): Float => {\n const i = st.floor().toVar('i')\n const f = st.fract().toVar('f')\n const a = randomVec2(i).toVar('a')\n const b = randomVec2(i.add(vec2(1, 0))).toVar('b')\n const c = randomVec2(i.add(vec2(0, 1))).toVar('c')\n const d = randomVec2(i.add(vec2(1, 1))).toVar('d')\n const u = cubicVec2(f).toVar('u')\n return a.mix(b, u.x).add(c.sub(a).mul(u.y).mul(float(1).sub(u.x)).add(d.sub(b).mul(u.x).mul(u.y)))\n}).setLayout({\n name: 'gnoiseVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const gnoiseVec3 = Fn(([p]: [Vec3]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return float(-1).add(\n float(2).mul(\n randomVec3(i.add(vec3(0, 0, 0)))\n .mix(randomVec3(i.add(vec3(1, 0, 0))), u.x)\n .mix(randomVec3(i.add(vec3(0, 1, 0))).mix(randomVec3(i.add(vec3(1, 1, 0))), u.x), u.y)\n .mix(\n randomVec3(i.add(vec3(0, 0, 1)))\n .mix(randomVec3(i.add(vec3(1, 0, 1))), u.x)\n .mix(\n randomVec3(i.add(vec3(0, 1, 1))).mix(\n randomVec3(i.add(vec3(1, 1, 1))),\n u.x\n ),\n u.y\n ),\n u.z\n )\n )\n )\n}).setLayout({\n name: 'gnoiseVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const gnoiseVec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Float => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = quintic(f).toVar('u')\n return srandom3Vec3Tiled(i.add(vec3(0, 0, 0)), tileLength)\n .dot(f.sub(vec3(0, 0, 0)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 0)), tileLength).dot(f.sub(vec3(1, 0, 0))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 0)), tileLength)\n .dot(f.sub(vec3(0, 1, 0)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 0)), tileLength).dot(f.sub(vec3(1, 1, 0))),\n u.x\n ),\n u.y\n )\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 0, 1)), tileLength)\n .dot(f.sub(vec3(0, 0, 1)))\n .mix(srandom3Vec3Tiled(i.add(vec3(1, 0, 1)), tileLength).dot(f.sub(vec3(1, 0, 1))), u.x)\n .mix(\n srandom3Vec3Tiled(i.add(vec3(0, 1, 1)), tileLength)\n .dot(f.sub(vec3(0, 1, 1)))\n .mix(\n srandom3Vec3Tiled(i.add(vec3(1, 1, 1)), tileLength).dot(\n f.sub(vec3(1, 1, 1))\n ),\n u.x\n ),\n u.y\n ),\n u.z\n )\n}).setLayout({\n name: 'gnoiseVec3Tiled',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const gnoise3 = Fn(([x]: [Vec3]): Vec3 => {\n return vec3(\n gnoiseVec3(x.add(vec3(123.456, 0.567, 0.37))),\n gnoiseVec3(x.add(vec3(0.11, 47.43, 19.17))),\n gnoiseVec3(x)\n )\n}).setLayout({\n name: 'gnoise3',\n type: 'vec3',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, fract, sin } from '../../node'\n\nconst RANDOM_SCALE = vec4(443.897, 441.423, 0.0973, 0.1099)\n\nexport const random = Fn(([x]: [Float]): Float => {\n return x.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'random',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const randomVec2 = Fn(([st]: [Vec2]): Float => {\n return st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const randomVec3 = Fn(([pos]: [Vec3]): Float => {\n return pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()\n}).setLayout({\n name: 'randomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const randomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return dot_product.sin().mul(43758.5453).fract()\n}).setLayout({\n name: 'randomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const random2Float = Fn(([p]: [Float]): Vec2 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Float',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const p3 = p.xyx.mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random2Vec3 = Fn(([p3]: [Vec3]): Vec2 => {\n p3.assign(p3.mul(RANDOM_SCALE.xyz).fract())\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xx.add(p3.yz).mul(p3.zy).fract()\n}).setLayout({\n name: 'random2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p3', type: 'vec3' }],\n})\n\nexport const random3Float = Fn(([p]: [Float]): Vec3 => {\n const p3 = vec3(p).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yzx.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Float',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random3Vec2 = Fn(([p]: [Vec2]): Vec3 => {\n const p3 = vec3(p.xyx).mul(RANDOM_SCALE.xyz).fract().toVar('p3')\n p3.addAssign(p3.dot(p3.yxz.add(19.19)))\n return p3.xxy.add(p3.yzz).mul(p3.zyx).fract()\n}).setLayout({\n name: 'random3Vec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(p.mul(RANDOM_SCALE.xyz).fract())\n p.addAssign(p.dot(p.yxz.add(19.19)))\n return p.xxy.add(p.yzz).mul(p.zyx).fract()\n}).setLayout({\n name: 'random3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Float = Fn(([p]: [Float]): Vec4 => {\n const p4 = float(p).mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Float',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'float' }],\n})\n\nexport const random4Vec2 = Fn(([p]: [Vec2]): Vec4 => {\n const p4 = p.xyxy.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec2',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const random4Vec3 = Fn(([p]: [Vec3]): Vec4 => {\n const p4 = p.xyzx.mul(RANDOM_SCALE).fract().toVar('p4')\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec3',\n type: 'vec4',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const random4Vec4 = Fn(([p4]: [Vec4]): Vec4 => {\n p4.assign(p4.mul(RANDOM_SCALE).fract())\n p4.addAssign(p4.dot(p4.wzxy.add(19.19)))\n return p4.xxyz.add(p4.yzzw).mul(p4.zywx).fract()\n}).setLayout({\n name: 'random4Vec4',\n type: 'vec4',\n inputs: [{ name: 'p4', type: 'vec4' }],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4, vec2, vec3, vec4, float, dot, sin } from '../../node'\n\nexport const srandom = Fn(([x]: [Float]): Float => {\n return float(-1).add(float(2).mul(x.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandom',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const srandomVec2 = Fn(([st]: [Vec2]): Float => {\n return float(-1).add(float(2).mul(st.dot(vec2(12.9898, 78.233)).sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec2',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandomVec3 = Fn(([pos]: [Vec3]): Float => {\n return float(-1).add(float(2).mul(pos.dot(vec3(70.9898, 78.233, 32.4355)).sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandomVec3',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n\nexport const srandomVec4 = Fn(([pos]: [Vec4]): Float => {\n const dot_product = pos.dot(vec4(12.9898, 78.233, 45.164, 94.673)).toVar('dot_product')\n return float(-1).add(float(2).mul(dot_product.sin().mul(43758.5453).fract()))\n}).setLayout({\n name: 'srandomVec4',\n type: 'float',\n inputs: [{ name: 'pos', type: 'vec4' }],\n})\n\nexport const srandom2Vec2 = Fn(([st]: [Vec2]): Vec2 => {\n const k = vec2(0.3183099, 0.3678794).toVar('k')\n st.assign(st.mul(k).add(k.yx))\n return vec2(-1).add(\n vec2(2).mul(\n float(16)\n .mul(k)\n .mul(st.x.mul(st.y).mul(st.x.add(st.y)).fract())\n .fract()\n )\n )\n}).setLayout({\n name: 'srandom2Vec2',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const srandom3Vec3 = Fn(([p]: [Vec3]): Vec3 => {\n p.assign(\n vec3(\n p.dot(vec3(127.1, 311.7, 74.7)),\n p.dot(vec3(269.5, 183.3, 246.1)),\n p.dot(vec3(113.5, 271.9, 124.6))\n )\n )\n return float(-1).add(float(2).mul(p.sin().mul(43758.5453123).fract()))\n}).setLayout({\n name: 'srandom3Vec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const srandom2Vec2Tiled = Fn(([p, tileLength]: [Vec2, Float]): Vec2 => {\n p.assign(p.mod(vec2(tileLength)))\n return srandom2Vec2(p)\n}).setLayout({\n name: 'srandom2Vec2Tiled',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n\nexport const srandom3Vec3Tiled = Fn(([p, tileLength]: [Vec3, Float]): Vec3 => {\n p.assign(p.mod(vec3(tileLength)))\n return srandom3Vec3(p)\n}).setLayout({\n name: 'srandom3Vec3Tiled',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'tileLength', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\n\nexport const cubic = Fn(([v]: [Float]): Float => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicFloat',\n type: 'float',\n inputs: [{ name: 'v', type: 'float' }],\n})\n\nexport const cubicVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const cubicVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const cubicVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return v.mul(v).mul(v.mul(-2).add(3))\n}).setLayout({\n name: 'cubicVec4',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const cubicFloatSlopes = Fn(([v, slope0, slope1]: [Float, Float, Float]): Float => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicFloatSlopes',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec2Slopes = Fn(([v, slope0, slope1]: [Vec2, Float, Float]): Vec2 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec2Slopes',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec3Slopes = Fn(([v, slope0, slope1]: [Vec3, Float, Float]): Vec3 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec3Slopes',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n\nexport const cubicVec4Slopes = Fn(([v, slope0, slope1]: [Vec4, Float, Float]): Vec4 => {\n const a = slope0.add(slope1).sub(2).toVar('a')\n const b = slope0.mul(-2).sub(slope1).add(3).toVar('b')\n const c = slope0.toVar('c')\n const v2 = v.mul(v).toVar('v2')\n const v3 = v.mul(v2).toVar('v3')\n return a.mul(v3).add(b.mul(v2)).add(c.mul(v))\n}).setLayout({\n name: 'cubicVec4Slopes',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'slope0', type: 'float' },\n { name: 'slope1', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec3, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const gerstnerWave = Fn(([_uv, _dir, _steepness, _wavelength, _time]: [Vec2, Vec2, Float, Float, Float]) => {\n const k = PI.mul(2).div(_wavelength).toVar('k')\n const c = float(9.8).div(k).sqrt().toVar('c')\n const d = _dir.normalize().toVar('d')\n const f = k.mul(_uv.dot(d).sub(c.mul(_time))).toVar('f')\n const a = _steepness.div(k).toVar('a')\n return vec3(d.x.mul(a.mul(f.cos())), a.mul(f.sin()), d.y.mul(a.mul(f.cos())))\n}).setLayout({\n name: 'gerstnerWave',\n type: 'vec3',\n inputs: [\n { name: '_uv', type: 'vec2' },\n { name: '_dir', type: 'vec2' },\n { name: '_steepness', type: 'float' },\n { name: '_wavelength', type: 'float' },\n { name: '_time', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec2, vec3, vec4 } from '../../node'\nimport { srandom2Vec2, srandom3Vec3 } from './srandom'\n\nexport const noised = Fn(([p]: [Vec2]) => {\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const u = f\n .mul(f)\n .mul(f)\n .mul(f.mul(f.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = f\n .mul(f)\n .mul(f.mul(f.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom2Vec2(i.add(vec2(0, 0))).toVar('ga')\n const gb = srandom2Vec2(i.add(vec2(1, 0))).toVar('gb')\n const gc = srandom2Vec2(i.add(vec2(0, 1))).toVar('gc')\n const gd = srandom2Vec2(i.add(vec2(1, 1))).toVar('gd')\n\n const va = f.sub(vec2(0, 0)).dot(ga).toVar('va')\n const vb = f.sub(vec2(1, 0)).dot(gb).toVar('vb')\n const vc = f.sub(vec2(0, 1)).dot(gc).toVar('vc')\n const vd = f.sub(vec2(1, 1)).dot(gd).toVar('vd')\n\n return vec3(\n va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd))),\n ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(du.mul(u.yx.mul(va.sub(vb).sub(vc).add(vd)).add(vec2(vb, vc)).sub(va)))\n )\n}).setLayout({\n name: 'noised',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const noisedVec3 = Fn(([pos]: [Vec3]) => {\n const p = pos.floor().toVar('p')\n const w = pos.fract().toVar('w')\n const u = w\n .mul(w)\n .mul(w)\n .mul(w.mul(w.mul(6).sub(15)).add(10))\n .toVar('u')\n const du = w\n .mul(w)\n .mul(w.mul(w.sub(2)).add(1))\n .mul(30)\n .toVar('du')\n\n const ga = srandom3Vec3(p.add(vec3(0, 0, 0))).toVar('ga')\n const gb = srandom3Vec3(p.add(vec3(1, 0, 0))).toVar('gb')\n const gc = srandom3Vec3(p.add(vec3(0, 1, 0))).toVar('gc')\n const gd = srandom3Vec3(p.add(vec3(1, 1, 0))).toVar('gd')\n const ge = srandom3Vec3(p.add(vec3(0, 0, 1))).toVar('ge')\n const gf = srandom3Vec3(p.add(vec3(1, 0, 1))).toVar('gf')\n const gg = srandom3Vec3(p.add(vec3(0, 1, 1))).toVar('gg')\n const gh = srandom3Vec3(p.add(vec3(1, 1, 1))).toVar('gh')\n\n const va = w.sub(vec3(0, 0, 0)).dot(ga).toVar('va')\n const vb = w.sub(vec3(1, 0, 0)).dot(gb).toVar('vb')\n const vc = w.sub(vec3(0, 1, 0)).dot(gc).toVar('vc')\n const vd = w.sub(vec3(1, 1, 0)).dot(gd).toVar('vd')\n const ve = w.sub(vec3(0, 0, 1)).dot(ge).toVar('ve')\n const vf = w.sub(vec3(1, 0, 1)).dot(gf).toVar('vf')\n const vg = w.sub(vec3(0, 1, 1)).dot(gg).toVar('vg')\n const vh = w.sub(vec3(1, 1, 1)).dot(gh).toVar('vh')\n\n const noiseValue = va\n .add(u.x.mul(vb.sub(va)))\n .add(u.y.mul(vc.sub(va)))\n .add(u.z.mul(ve.sub(va)))\n .add(u.x.mul(u.y).mul(va.sub(vb).sub(vc).add(vd)))\n .add(u.y.mul(u.z).mul(va.sub(vc).sub(ve).add(vg)))\n .add(u.z.mul(u.x).mul(va.sub(vb).sub(ve).add(vf)))\n .add(va.negate().add(vb).add(vc).sub(vd).add(ve).sub(vf).sub(vg).add(vh).mul(u.x).mul(u.y).mul(u.z))\n\n const gradientValue = ga\n .add(u.x.mul(gb.sub(ga)))\n .add(u.y.mul(gc.sub(ga)))\n .add(u.z.mul(ge.sub(ga)))\n .add(u.x.mul(u.y).mul(ga.sub(gb).sub(gc).add(gd)))\n .add(u.y.mul(u.z).mul(ga.sub(gc).sub(ge).add(gg)))\n .add(u.z.mul(u.x).mul(ga.sub(gb).sub(ge).add(gf)))\n .add(ga.negate().add(gb).add(gc).sub(gd).add(ge).sub(gf).sub(gg).add(gh).mul(u.x).mul(u.y).mul(u.z))\n .add(\n du.mul(\n vec3(vb, vc, ve)\n .sub(va)\n .add(\n u.yzx.mul(\n vec3(\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg),\n va.sub(vb).sub(ve).add(vf)\n )\n )\n )\n .add(\n u.zxy.mul(\n vec3(\n va.sub(vb).sub(ve).add(vf),\n va.sub(vb).sub(vc).add(vd),\n va.sub(vc).sub(ve).add(vg)\n )\n )\n )\n .add(\n u.yzx\n .mul(u.zxy)\n .mul(\n va\n .negate()\n .add(vb)\n .add(vc)\n .sub(vd)\n .add(ve)\n .sub(vf)\n .sub(vg)\n .add(vh)\n )\n )\n )\n )\n\n return vec4(noiseValue, gradientValue)\n}).setLayout({\n name: 'noisedVec3',\n type: 'vec4',\n inputs: [{ name: 'pos', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4, mix, step } from '../../node'\nimport { mod289Vec4, mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\nimport { taylorInvSqrt } from '../math/taylorInvSqrt'\nimport { quintic } from '../math/quintic'\n\nexport const pnoise = Fn(([P, rep]: [Vec2, Vec2]) => {\n const Pi = P.xyxy.floor().add(vec4(0, 0, 1, 1)).toVar('Pi')\n const Pf = P.xyxy.fract().sub(vec4(0, 0, 1, 1)).toVar('Pf')\n Pi.assign(Pi.mod(rep.xyxy))\n Pi.assign(mod289Vec4(Pi))\n const ix = Pi.xzxz.toVar('ix')\n const iy = Pi.yyww.toVar('iy')\n const fx = Pf.xzxz.toVar('fx')\n const fy = Pf.yyww.toVar('fy')\n const i = permuteVec4(permuteVec4(ix).add(iy)).toVar('i')\n const gx = i.div(41).fract().mul(2).sub(1).toVar('gx')\n const gy = gx.abs().sub(0.5).toVar('gy')\n const tx = gx.add(0.5).floor().toVar('tx')\n gx.assign(gx.sub(tx))\n const g00 = vec2(gx.x, gy.x).toVar('g00')\n const g10 = vec2(gx.y, gy.y).toVar('g10')\n const g01 = vec2(gx.z, gy.z).toVar('g01')\n const g11 = vec2(gx.w, gy.w).toVar('g11')\n const norm = taylorInvSqrt(vec4(g00.dot(g00), g01.dot(g01), g10.dot(g10), g11.dot(g11))).toVar('norm')\n g00.mulAssign(norm.x)\n g01.mulAssign(norm.y)\n g10.mulAssign(norm.z)\n g11.mulAssign(norm.w)\n const n00 = g00.dot(vec2(fx.x, fy.x)).toVar('n00')\n const n10 = g10.dot(vec2(fx.y, fy.y)).toVar('n10')\n const n01 = g01.dot(vec2(fx.z, fy.z)).toVar('n01')\n const n11 = g11.dot(vec2(fx.w, fy.w)).toVar('n11')\n const fade_xy = quintic(Pf.xy).toVar('fade_xy')\n const n_x = vec2(n00, n01).mix(vec2(n10, n11), fade_xy.x).toVar('n_x')\n const n_xy = n_x.x.mix(n_x.y, fade_xy.y).toVar('n_xy')\n return n_xy.mul(2.3)\n}).setLayout({\n name: 'pnoise',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec2' },\n { name: 'rep', type: 'vec2' },\n ],\n})\n\nexport const pnoiseVec3 = Fn(([P, rep]: [Vec3, Vec3]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(vec3(1)).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec3(Pi0))\n Pi1.assign(mod289Vec3(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(vec3(1)).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = Pi0.zzzz.toVar('iz0')\n const iz1 = Pi1.zzzz.toVar('iz1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const gx0 = ixy0.div(7).toVar('gx0')\n const gy0 = gx0.floor().div(7).fract().sub(0.5).toVar('gy0')\n gx0.assign(gx0.fract())\n const gz0 = vec4(0.5).sub(gx0.abs()).sub(gy0.abs()).toVar('gz0')\n const sz0 = gz0.step(vec4(0)).toVar('sz0')\n gx0.subAssign(sz0.mul(gx0.step(vec4(0)).sub(0.5)))\n gy0.subAssign(sz0.mul(gy0.step(vec4(0)).sub(0.5)))\n const gx1 = ixy1.div(7).toVar('gx1')\n const gy1 = gx1.floor().div(7).fract().sub(0.5).toVar('gy1')\n gx1.assign(gx1.fract())\n const gz1 = vec4(0.5).sub(gx1.abs()).sub(gy1.abs()).toVar('gz1')\n const sz1 = gz1.step(vec4(0)).toVar('sz1')\n gx1.subAssign(sz1.mul(gx1.step(vec4(0)).sub(0.5)))\n gy1.subAssign(sz1.mul(gy1.step(vec4(0)).sub(0.5)))\n const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar('g000')\n const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar('g100')\n const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar('g010')\n const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar('g110')\n const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar('g001')\n const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar('g101')\n const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar('g011')\n const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar('g111')\n const norm0 = taylorInvSqrt(vec4(g000.dot(g000), g010.dot(g010), g100.dot(g100), g110.dot(g110))).toVar('norm0')\n g000.mulAssign(norm0.x)\n g010.mulAssign(norm0.y)\n g100.mulAssign(norm0.z)\n g110.mulAssign(norm0.w)\n const norm1 = taylorInvSqrt(vec4(g001.dot(g001), g011.dot(g011), g101.dot(g101), g111.dot(g111))).toVar('norm1')\n g001.mulAssign(norm1.x)\n g011.mulAssign(norm1.y)\n g101.mulAssign(norm1.z)\n g111.mulAssign(norm1.w)\n const n000 = g000.dot(Pf0).toVar('n000')\n const n100 = g100.dot(vec3(Pf1.x, Pf0.yz)).toVar('n100')\n const n010 = g010.dot(vec3(Pf0.x, Pf1.y, Pf0.z)).toVar('n010')\n const n110 = g110.dot(vec3(Pf1.xy, Pf0.z)).toVar('n110')\n const n001 = g001.dot(vec3(Pf0.xy, Pf1.z)).toVar('n001')\n const n101 = g101.dot(vec3(Pf1.x, Pf0.y, Pf1.z)).toVar('n101')\n const n011 = g011.dot(vec3(Pf0.x, Pf1.yz)).toVar('n011')\n const n111 = g111.dot(Pf1).toVar('n111')\n const fade_xyz = quintic(Pf0).toVar('fade_xyz')\n const n_z = vec4(n000, n100, n010, n110).mix(vec4(n001, n101, n011, n111), fade_xyz.z).toVar('n_z')\n const n_yz = n_z.xy.mix(n_z.zw, fade_xyz.y).toVar('n_yz')\n const n_xyz = n_yz.x.mix(n_yz.y, fade_xyz.x).toVar('n_xyz')\n return n_xyz.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec3',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec3' },\n { name: 'rep', type: 'vec3' },\n ],\n})\n\nexport const pnoiseVec4 = Fn(([P, rep]: [Vec4, Vec4]) => {\n const Pi0 = P.floor().mod(rep).toVar('Pi0')\n const Pi1 = Pi0.add(1).mod(rep).toVar('Pi1')\n Pi0.assign(mod289Vec4(Pi0))\n Pi1.assign(mod289Vec4(Pi1))\n const Pf0 = P.fract().toVar('Pf0')\n const Pf1 = Pf0.sub(1).toVar('Pf1')\n const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x).toVar('ix')\n const iy = vec4(Pi0.yy, Pi1.yy).toVar('iy')\n const iz0 = vec4(Pi0.zzzz).toVar('iz0')\n const iz1 = vec4(Pi1.zzzz).toVar('iz1')\n const iw0 = vec4(Pi0.wwww).toVar('iw0')\n const iw1 = vec4(Pi1.wwww).toVar('iw1')\n const ixy = permuteVec4(permuteVec4(ix).add(iy)).toVar('ixy')\n const ixy0 = permuteVec4(ixy.add(iz0)).toVar('ixy0')\n const ixy1 = permuteVec4(ixy.add(iz1)).toVar('ixy1')\n const ixy00 = permuteVec4(ixy0.add(iw0)).toVar('ixy00')\n const ixy01 = permuteVec4(ixy0.add(iw1)).toVar('ixy01')\n const ixy10 = permuteVec4(ixy1.add(iw0)).toVar('ixy10')\n const ixy11 = permuteVec4(ixy1.add(iw1)).toVar('ixy11')\n const gx00 = ixy00.div(7).toVar('gx00')\n const gy00 = gx00.floor().div(7).toVar('gy00')\n const gz00 = gy00.floor().div(6).toVar('gz00')\n gx00.assign(gx00.fract().sub(0.5))\n gy00.assign(gy00.fract().sub(0.5))\n gz00.assign(gz00.fract().sub(0.5))\n const gw00 = vec4(0.75).sub(gx00.abs()).sub(gy00.abs()).sub(gz00.abs()).toVar('gw00')\n const sw00 = gw00.step(vec4(0)).toVar('sw00')\n gx00.subAssign(sw00.mul(vec4(0).step(gx00).sub(0.5)))\n gy00.subAssign(sw00.mul(vec4(0).step(gy00).sub(0.5)))\n const gx01 = ixy01.div(7).toVar('gx01')\n const gy01 = gx01.floor().div(7).toVar('gy01')\n const gz01 = gy01.floor().div(6).toVar('gz01')\n gx01.assign(gx01.fract().sub(0.5))\n gy01.assign(gy01.fract().sub(0.5))\n gz01.assign(gz01.fract().sub(0.5))\n const gw01 = vec4(0.75).sub(gx01.abs()).sub(gy01.abs()).sub(gz01.abs()).toVar('gw01')\n const sw01 = gw01.step(vec4(0)).toVar('sw01')\n gx01.subAssign(sw01.mul(vec4(0).step(gx01).sub(0.5)))\n gy01.subAssign(sw01.mul(vec4(0).step(gy01).sub(0.5)))\n const gx10 = ixy10.div(7).toVar('gx10')\n const gy10 = gx10.floor().div(7).toVar('gy10')\n const gz10 = gy10.floor().div(6).toVar('gz10')\n gx10.assign(gx10.fract().sub(0.5))\n gy10.assign(gy10.fract().sub(0.5))\n gz10.assign(gz10.fract().sub(0.5))\n const gw10 = vec4(0.75).sub(gx10.abs()).sub(gy10.abs()).sub(gz10.abs()).toVar('gw10')\n const sw10 = gw10.step(vec4(0)).toVar('sw10')\n gx10.subAssign(sw10.mul(vec4(0).step(gx10).sub(0.5)))\n gy10.subAssign(sw10.mul(vec4(0).step(gy10).sub(0.5)))\n const gx11 = ixy11.div(7).toVar('gx11')\n const gy11 = gx11.floor().div(7).toVar('gy11')\n const gz11 = gy11.floor().div(6).toVar('gz11')\n gx11.assign(gx11.fract().sub(0.5))\n gy11.assign(gy11.fract().sub(0.5))\n gz11.assign(gz11.fract().sub(0.5))\n const gw11 = vec4(0.75).sub(gx11.abs()).sub(gy11.abs()).sub(gz11.abs()).toVar('gw11')\n const sw11 = gw11.step(vec4(0)).toVar('sw11')\n gx11.subAssign(sw11.mul(vec4(0).step(gx11).sub(0.5)))\n gy11.subAssign(sw11.mul(vec4(0).step(gy11).sub(0.5)))\n const g0000 = vec4(gx00.x, gy00.x, gz00.x, gw00.x).toVar('g0000')\n const g1000 = vec4(gx00.y, gy00.y, gz00.y, gw00.y).toVar('g1000')\n const g0100 = vec4(gx00.z, gy00.z, gz00.z, gw00.z).toVar('g0100')\n const g1100 = vec4(gx00.w, gy00.w, gz00.w, gw00.w).toVar('g1100')\n const g0010 = vec4(gx10.x, gy10.x, gz10.x, gw10.x).toVar('g0010')\n const g1010 = vec4(gx10.y, gy10.y, gz10.y, gw10.y).toVar('g1010')\n const g0110 = vec4(gx10.z, gy10.z, gz10.z, gw10.z).toVar('g0110')\n const g1110 = vec4(gx10.w, gy10.w, gz10.w, gw10.w).toVar('g1110')\n const g0001 = vec4(gx01.x, gy01.x, gz01.x, gw01.x).toVar('g0001')\n const g1001 = vec4(gx01.y, gy01.y, gz01.y, gw01.y).toVar('g1001')\n const g0101 = vec4(gx01.z, gy01.z, gz01.z, gw01.z).toVar('g0101')\n const g1101 = vec4(gx01.w, gy01.w, gz01.w, gw01.w).toVar('g1101')\n const g0011 = vec4(gx11.x, gy11.x, gz11.x, gw11.x).toVar('g0011')\n const g1011 = vec4(gx11.y, gy11.y, gz11.y, gw11.y).toVar('g1011')\n const g0111 = vec4(gx11.z, gy11.z, gz11.z, gw11.z).toVar('g0111')\n const g1111 = vec4(gx11.w, gy11.w, gz11.w, gw11.w).toVar('g1111')\n const norm00 = taylorInvSqrt(\n vec4(g0000.dot(g0000), g0100.dot(g0100), g1000.dot(g1000), g1100.dot(g1100))\n ).toVar('norm00')\n g0000.mulAssign(norm00.x)\n g0100.mulAssign(norm00.y)\n g1000.mulAssign(norm00.z)\n g1100.mulAssign(norm00.w)\n const norm01 = taylorInvSqrt(\n vec4(g0001.dot(g0001), g0101.dot(g0101), g1001.dot(g1001), g1101.dot(g1101))\n ).toVar('norm01')\n g0001.mulAssign(norm01.x)\n g0101.mulAssign(norm01.y)\n g1001.mulAssign(norm01.z)\n g1101.mulAssign(norm01.w)\n const norm10 = taylorInvSqrt(\n vec4(g0010.dot(g0010), g0110.dot(g0110), g1010.dot(g1010), g1110.dot(g1110))\n ).toVar('norm10')\n g0010.mulAssign(norm10.x)\n g0110.mulAssign(norm10.y)\n g1010.mulAssign(norm10.z)\n g1110.mulAssign(norm10.w)\n const norm11 = taylorInvSqrt(\n vec4(g0011.dot(g0011), g0111.dot(g0111), g1011.dot(g1011), g1111.dot(g1111))\n ).toVar('norm11')\n g0011.mulAssign(norm11.x)\n g0111.mulAssign(norm11.y)\n g1011.mulAssign(norm11.z)\n g1111.mulAssign(norm11.w)\n const n0000 = g0000.dot(Pf0).toVar('n0000')\n const n1000 = g1000.dot(vec4(Pf1.x, Pf0.yzw)).toVar('n1000')\n const n0100 = g0100.dot(vec4(Pf0.x, Pf1.y, Pf0.zw)).toVar('n0100')\n const n1100 = g1100.dot(vec4(Pf1.xy, Pf0.zw)).toVar('n1100')\n const n0010 = g0010.dot(vec4(Pf0.xy, Pf1.z, Pf0.w)).toVar('n0010')\n const n1010 = g1010.dot(vec4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)).toVar('n1010')\n const n0110 = g0110.dot(vec4(Pf0.x, Pf1.yz, Pf0.w)).toVar('n0110')\n const n1110 = g1110.dot(vec4(Pf1.xyz, Pf0.w)).toVar('n1110')\n const n0001 = g0001.dot(vec4(Pf0.xyz, Pf1.w)).toVar('n0001')\n const n1001 = g1001.dot(vec4(Pf1.x, Pf0.yz, Pf1.w)).toVar('n1001')\n const n0101 = g0101.dot(vec4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)).toVar('n0101')\n const n1101 = g1101.dot(vec4(Pf1.xy, Pf0.z, Pf1.w)).toVar('n1101')\n const n0011 = g0011.dot(vec4(Pf0.xy, Pf1.zw)).toVar('n0011')\n const n1011 = g1011.dot(vec4(Pf1.x, Pf0.y, Pf1.zw)).toVar('n1011')\n const n0111 = g0111.dot(vec4(Pf0.x, Pf1.yzw)).toVar('n0111')\n const n1111 = g1111.dot(Pf1).toVar('n1111')\n const fade_xyzw = quintic(Pf0).toVar('fade_xyzw')\n const n_0w = vec4(n0000, n1000, n0100, n1100).mix(vec4(n0001, n1001, n0101, n1101), fade_xyzw.w).toVar('n_0w')\n const n_1w = vec4(n0010, n1010, n0110, n1110).mix(vec4(n0011, n1011, n0111, n1111), fade_xyzw.w).toVar('n_1w')\n const n_zw = n_0w.mix(n_1w, fade_xyzw.z).toVar('n_zw')\n const n_yzw = n_zw.xy.mix(n_zw.zw, fade_xyzw.y).toVar('n_yzw')\n const n_xyzw = n_yzw.x.mix(n_yzw.y, fade_xyzw.x).toVar('n_xyzw')\n return n_xyzw.mul(2.2)\n}).setLayout({\n name: 'pnoiseVec4',\n type: 'float',\n inputs: [\n { name: 'P', type: 'vec4' },\n { name: 'rep', type: 'vec4' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, vec4, mat3, step, mix, If, float, any } from '../../node'\nimport { mod289Vec3 } from '../math/mod289'\nimport { permuteVec4 } from '../math/permute'\n\n// Basic psrdnoise 2D implementation\nexport const psrdnoise2D = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Vec2 => {\n const uv = vec2(x.x.add(x.y.div(2)), x.y).toVar('uv')\n const i0 = uv.floor().toVar('i0')\n const f0 = uv.fract().toVar('f0')\n const cmp = f0.x.step(f0.y).toVar('cmp')\n const o1 = vec2(cmp, cmp.oneMinus()).toVar('o1')\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(vec2(1, 1)).toVar('i2')\n\n const v0 = vec2(i0.x.sub(i0.y.div(2)), i0.y).toVar('v0')\n const v1 = vec2(v0.x.add(o1.x).sub(o1.y.div(2)), v0.y.add(o1.y)).toVar('v1')\n const v2 = vec2(v0.x.add(0.5), v0.y.add(1)).toVar('v2')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n\n let iu = vec3(i0.x, i1.x, i2.x).toVar('iu')\n let iv = vec3(i0.y, i1.y, i2.y).toVar('iv')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)), () => {\n const xw = vec3(v0.x, v1.x, v2.x).toVar('xw')\n const yw = vec3(v0.y, v1.y, v2.y).toVar('yw')\n\n If(period.x.greaterThan(0), () => {\n xw.assign(xw.mod(period.x))\n })\n\n If(period.y.greaterThan(0), () => {\n yw.assign(yw.mod(period.y))\n })\n\n iu.assign(xw.add(yw.div(2)).add(0.5).floor())\n iv.assign(yw.add(0.5).floor())\n })\n\n let hash = mod289Vec3(iu).toVar('hash')\n hash.assign(mod289Vec3(hash.mul(51).add(2).mul(hash).add(iv)))\n hash.assign(mod289Vec3(hash.mul(34).add(10).mul(hash)))\n\n const psi = hash.mul(0.07482).add(alpha).toVar('psi')\n const gx = psi.cos().toVar('gx')\n const gy = psi.sin().toVar('gy')\n\n const g0 = vec2(gx.x, gy.x).toVar('g0')\n const g1 = vec2(gx.y, gy.y).toVar('g1')\n const g2 = vec2(gx.z, gy.z).toVar('g2')\n\n const w = vec3(0.8)\n .sub(vec3(x0.dot(x0), x1.dot(x1), x2.dot(x2)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w4 = w2.mul(w2).toVar('w4')\n const gdotx = vec3(g0.dot(x0), g1.dot(x1), g2.dot(x2)).toVar('gdotx')\n const n = w4.dot(gdotx).toVar('n')\n\n const w3 = w2.mul(w).toVar('w3')\n const dw = w3.mul(-8).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w4.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w4.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w4.z).add(x2.mul(dw.z)).toVar('dn2')\n const gradient = dn0.add(dn1).add(dn2).mul(10.9).toVar('gradient')\n\n return vec2(n.mul(10.9), gradient.length())\n}).setLayout({\n name: 'psrdnoise2D',\n type: 'vec2',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Basic psrdnoise 3D implementation\nexport const psrdnoise3D = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Vec3 => {\n const M = mat3(0, 1, 1, 1, 0, 1, 1, 1, 0).toVar('M')\n const Mi = mat3(-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5).toVar('Mi')\n\n const uvw = M.mul(x).toVar('uvw')\n const i0 = uvw.floor().toVar('i0')\n const f0 = uvw.fract().toVar('f0')\n\n const g_ = f0.yzz.step(f0.xyx).toVar('g_')\n const l_ = g_.oneMinus().toVar('l_')\n const g = vec3(l_.z, g_.xy).toVar('g')\n const l = vec3(l_.xy, g_.z).toVar('l')\n\n const o1 = g.min(l).toVar('o1')\n const o2 = g.max(l).toVar('o2')\n\n const i1 = i0.add(o1).toVar('i1')\n const i2 = i0.add(o2).toVar('i2')\n const i3 = i0.add(vec3(1)).toVar('i3')\n\n let v0 = Mi.mul(i0).toVar('v0')\n let v1 = Mi.mul(i1).toVar('v1')\n let v2 = Mi.mul(i2).toVar('v2')\n let v3 = Mi.mul(i3).toVar('v3')\n\n const x0 = x.sub(v0).toVar('x0')\n const x1 = x.sub(v1).toVar('x1')\n const x2 = x.sub(v2).toVar('x2')\n const x3 = x.sub(v3).toVar('x3')\n\n If(period.x.greaterThan(0).or(period.y.greaterThan(0)).or(period.z.greaterThan(0)), () => {\n const vx = vec4(v0.x, v1.x, v2.x, v3.x).toVar('vx')\n const vy = vec4(v0.y, v1.y, v2.y, v3.y).toVar('vy')\n const vz = vec4(v0.z, v1.z, v2.z, v3.z).toVar('vz')\n\n If(period.x.greaterThan(0), () => vx.assign(vx.mod(period.x)))\n If(period.y.greaterThan(0), () => vy.assign(vy.mod(period.y)))\n If(period.z.greaterThan(0), () => vz.assign(vz.mod(period.z)))\n\n i0.assign(M.mul(vec3(vx.x, vy.x, vz.x)))\n i1.assign(M.mul(vec3(vx.y, vy.y, vz.y)))\n i2.assign(M.mul(vec3(vx.z, vy.z, vz.z)))\n i3.assign(M.mul(vec3(vx.w, vy.w, vz.w)))\n\n i0.assign(i0.add(0.5).floor())\n i1.assign(i1.add(0.5).floor())\n i2.assign(i2.add(0.5).floor())\n i3.assign(i3.add(0.5).floor())\n })\n\n const hash = permuteVec4(\n permuteVec4(permuteVec4(vec4(i0.z, i1.z, i2.z, i3.z)).add(vec4(i0.y, i1.y, i2.y, i3.y))).add(\n vec4(i0.x, i1.x, i2.x, i3.x)\n )\n ).toVar('hash')\n\n const theta = hash.mul(3.883222077).toVar('theta')\n const sz = hash.mul(-0.006920415).add(0.996539792).toVar('sz')\n const psi = hash.mul(0.108705628).toVar('psi')\n\n const Ct = theta.cos().toVar('Ct')\n const St = theta.sin().toVar('St')\n const sz_prime = sz.mul(sz).oneMinus().sqrt().toVar('sz_prime')\n\n const gx = Ct.mul(sz_prime).toVar('gx')\n const gy = St.mul(sz_prime).toVar('gy')\n const gz = sz.toVar('gz')\n\n If(alpha.notEqual(0), () => {\n const Sp = psi.sin().toVar('Sp')\n const Cp = psi.cos().toVar('Cp')\n const px = Ct.mul(sz_prime).toVar('px')\n const py = St.mul(sz_prime).toVar('py')\n const pz = sz.toVar('pz')\n\n const Ctp = St.mul(Sp).sub(Ct.mul(Cp)).toVar('Ctp')\n const qx = Ctp.mul(St).mix(Sp, sz).toVar('qx')\n const qy = Ctp.negate().mul(Ct).mix(Cp, sz).toVar('qy')\n const qz = py.mul(Cp).add(px.mul(Sp)).negate().toVar('qz')\n\n const Sa = vec4(alpha.sin()).toVar('Sa')\n const Ca = vec4(alpha.cos()).toVar('Ca')\n\n gx.assign(Ca.mul(px).add(Sa.mul(qx)))\n gy.assign(Ca.mul(py).add(Sa.mul(qy)))\n gz.assign(Ca.mul(pz).add(Sa.mul(qz)))\n })\n\n const g0 = vec3(gx.x, gy.x, gz.x).toVar('g0')\n const g1 = vec3(gx.y, gy.y, gz.y).toVar('g1')\n const g2 = vec3(gx.z, gy.z, gz.z).toVar('g2')\n const g3 = vec3(gx.w, gy.w, gz.w).toVar('g3')\n\n let w = vec4(0.5)\n .sub(vec4(x0.dot(x0), x1.dot(x1), x2.dot(x2), x3.dot(x3)))\n .toVar('w')\n w.assign(w.max(0))\n\n const w2 = w.mul(w).toVar('w2')\n const w3 = w2.mul(w).toVar('w3')\n const gdotx = vec4(g0.dot(x0), g1.dot(x1), g2.dot(x2), g3.dot(x3)).toVar('gdotx')\n const n = w3.dot(gdotx).toVar('n')\n\n const dw = w2.mul(-6).mul(gdotx).toVar('dw')\n const dn0 = g0.mul(w3.x).add(x0.mul(dw.x)).toVar('dn0')\n const dn1 = g1.mul(w3.y).add(x1.mul(dw.y)).toVar('dn1')\n const dn2 = g2.mul(w3.z).add(x2.mul(dw.z)).toVar('dn2')\n const dn3 = g3.mul(w3.w).add(x3.mul(dw.w)).toVar('dn3')\n const gradient = dn0.add(dn1).add(dn2).add(dn3).mul(39.5).toVar('gradient')\n\n return vec3(n.mul(39.5), gradient.xy)\n}).setLayout({\n name: 'psrdnoise3D',\n type: 'vec3',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\n// Simplified overloads\nexport const psrdnoise = Fn(([x]: [Vec2]): Float => {\n return psrdnoise2D(x, vec2(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec2' }],\n})\n\n// Two-parameter overload for compatibility\nexport const psrdnoise2 = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise2',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoisePeriod = Fn(([x, period]: [Vec2, Vec2]): Float => {\n return psrdnoise2D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoisePeriod',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n ],\n})\n\nexport const psrdnoiseAlpha = Fn(([x, period, alpha]: [Vec2, Vec2, Float]): Float => {\n return psrdnoise2D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoiseAlpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec2' },\n { name: 'period', type: 'vec2' },\n { name: 'alpha', type: 'float' },\n ],\n})\n\nexport const psrdnoise3 = Fn(([x]: [Vec3]): Float => {\n return psrdnoise3D(x, vec3(0), float(0)).x\n}).setLayout({\n name: 'psrdnoise3',\n type: 'float',\n inputs: [{ name: 'x', type: 'vec3' }],\n})\n\nexport const psrdnoise3Period = Fn(([x, period]: [Vec3, Vec3]): Float => {\n return psrdnoise3D(x, period, float(0)).x\n}).setLayout({\n name: 'psrdnoise3Period',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n ],\n})\n\nexport const psrdnoise3Alpha = Fn(([x, period, alpha]: [Vec3, Vec3, Float]): Float => {\n return psrdnoise3D(x, period, alpha).x\n}).setLayout({\n name: 'psrdnoise3Alpha',\n type: 'float',\n inputs: [\n { name: 'x', type: 'vec3' },\n { name: 'period', type: 'vec3' },\n { name: 'alpha', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, float, If } from '../../node'\nimport { random2Vec2 } from './random'\nimport { TAU } from '../math/const'\n\nexport const voronoi = Fn(([uv, time]: [Vec2, Float]): Vec3 => {\n const i_uv = uv.floor().toVar('i_uv')\n const f_uv = uv.fract().toVar('f_uv')\n const rta = vec3(0, 0, 10).toVar('rta')\n\n // Unroll nested loop: for j=-1 to 1, for i=-1 to 1\n // j=-1, i=-1\n const neighbor_m1m1 = vec2(-1, -1).toVar('neighbor_m1m1')\n const point_m1m1 = random2Vec2(i_uv.add(neighbor_m1m1)).toVar('point_m1m1')\n point_m1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_m1m1.mul(TAU)).sin())))\n const diff_m1m1 = neighbor_m1m1.add(point_m1m1).sub(f_uv).toVar('diff_m1m1')\n const dist_m1m1 = diff_m1m1.length().toVar('dist_m1m1')\n If(dist_m1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_m1m1)\n rta.z.assign(dist_m1m1)\n })\n\n // j=-1, i=0\n const neighbor_0m1 = vec2(0, -1).toVar('neighbor_0m1')\n const point_0m1 = random2Vec2(i_uv.add(neighbor_0m1)).toVar('point_0m1')\n point_0m1.assign(float(0.5).add(float(0.5).mul(time.add(point_0m1.mul(TAU)).sin())))\n const diff_0m1 = neighbor_0m1.add(point_0m1).sub(f_uv).toVar('diff_0m1')\n const dist_0m1 = diff_0m1.length().toVar('dist_0m1')\n If(dist_0m1.lessThan(rta.z), () => {\n rta.xy.assign(point_0m1)\n rta.z.assign(dist_0m1)\n })\n\n // j=-1, i=1\n const neighbor_1m1 = vec2(1, -1).toVar('neighbor_1m1')\n const point_1m1 = random2Vec2(i_uv.add(neighbor_1m1)).toVar('point_1m1')\n point_1m1.assign(float(0.5).add(float(0.5).mul(time.add(point_1m1.mul(TAU)).sin())))\n const diff_1m1 = neighbor_1m1.add(point_1m1).sub(f_uv).toVar('diff_1m1')\n const dist_1m1 = diff_1m1.length().toVar('dist_1m1')\n If(dist_1m1.lessThan(rta.z), () => {\n rta.xy.assign(point_1m1)\n rta.z.assign(dist_1m1)\n })\n\n // j=0, i=-1\n const neighbor_m10 = vec2(-1, 0).toVar('neighbor_m10')\n const point_m10 = random2Vec2(i_uv.add(neighbor_m10)).toVar('point_m10')\n point_m10.assign(float(0.5).add(float(0.5).mul(time.add(point_m10.mul(TAU)).sin())))\n const diff_m10 = neighbor_m10.add(point_m10).sub(f_uv).toVar('diff_m10')\n const dist_m10 = diff_m10.length().toVar('dist_m10')\n If(dist_m10.lessThan(rta.z), () => {\n rta.xy.assign(point_m10)\n rta.z.assign(dist_m10)\n })\n\n // j=0, i=0\n const neighbor_00 = vec2(0, 0).toVar('neighbor_00')\n const point_00 = random2Vec2(i_uv.add(neighbor_00)).toVar('point_00')\n point_00.assign(float(0.5).add(float(0.5).mul(time.add(point_00.mul(TAU)).sin())))\n const diff_00 = neighbor_00.add(point_00).sub(f_uv).toVar('diff_00')\n const dist_00 = diff_00.length().toVar('dist_00')\n If(dist_00.lessThan(rta.z), () => {\n rta.xy.assign(point_00)\n rta.z.assign(dist_00)\n })\n\n // j=0, i=1\n const neighbor_10 = vec2(1, 0).toVar('neighbor_10')\n const point_10 = random2Vec2(i_uv.add(neighbor_10)).toVar('point_10')\n point_10.assign(float(0.5).add(float(0.5).mul(time.add(point_10.mul(TAU)).sin())))\n const diff_10 = neighbor_10.add(point_10).sub(f_uv).toVar('diff_10')\n const dist_10 = diff_10.length().toVar('dist_10')\n If(dist_10.lessThan(rta.z), () => {\n rta.xy.assign(point_10)\n rta.z.assign(dist_10)\n })\n\n // j=1, i=-1\n const neighbor_m11 = vec2(-1, 1).toVar('neighbor_m11')\n const point_m11 = random2Vec2(i_uv.add(neighbor_m11)).toVar('point_m11')\n point_m11.assign(float(0.5).add(float(0.5).mul(time.add(point_m11.mul(TAU)).sin())))\n const diff_m11 = neighbor_m11.add(point_m11).sub(f_uv).toVar('diff_m11')\n const dist_m11 = diff_m11.length().toVar('dist_m11')\n If(dist_m11.lessThan(rta.z), () => {\n rta.xy.assign(point_m11)\n rta.z.assign(dist_m11)\n })\n\n // j=1, i=0\n const neighbor_01 = vec2(0, 1).toVar('neighbor_01')\n const point_01 = random2Vec2(i_uv.add(neighbor_01)).toVar('point_01')\n point_01.assign(float(0.5).add(float(0.5).mul(time.add(point_01.mul(TAU)).sin())))\n const diff_01 = neighbor_01.add(point_01).sub(f_uv).toVar('diff_01')\n const dist_01 = diff_01.length().toVar('dist_01')\n If(dist_01.lessThan(rta.z), () => {\n rta.xy.assign(point_01)\n rta.z.assign(dist_01)\n })\n\n // j=1, i=1\n const neighbor_11 = vec2(1, 1).toVar('neighbor_11')\n const point_11 = random2Vec2(i_uv.add(neighbor_11)).toVar('point_11')\n point_11.assign(float(0.5).add(float(0.5).mul(time.add(point_11.mul(TAU)).sin())))\n const diff_11 = neighbor_11.add(point_11).sub(f_uv).toVar('diff_11')\n const dist_11 = diff_11.length().toVar('dist_11')\n If(dist_11.lessThan(rta.z), () => {\n rta.xy.assign(point_11)\n rta.z.assign(dist_11)\n })\n\n return rta\n}).setLayout({\n name: 'voronoi',\n type: 'vec3',\n inputs: [\n { name: 'uv', type: 'vec2' },\n { name: 'time', type: 'float' },\n ],\n})\n\nexport const voronoiVec2 = Fn(([p]: [Vec2]): Vec3 => {\n return voronoi(p, float(0))\n}).setLayout({\n name: 'voronoiVec2',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const voronoiVec3 = Fn(([p]: [Vec3]): Vec3 => {\n return voronoi(p.xy, p.z)\n}).setLayout({\n name: 'voronoiVec3',\n type: 'vec3',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Float, Vec2, Vec3, vec2, vec3, int, smoothstep, float, Loop } from '../../node'\nimport { random3Vec2, random3Vec3 } from './random'\n\nexport const voronoise = Fn(([p, u, v]: [Vec2, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec2(xOffset, yOffset).toVar('g')\n const o = random3Vec2(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o.xy).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoise',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n\nexport const voronoiseVec3 = Fn(([p, u, v]: [Vec3, Float, Float]): Float => {\n const k = float(1)\n .add(float(63).mul(float(1).sub(v).pow(float(6))))\n .toVar('k')\n const i = p.floor().toVar('i')\n const f = p.fract().toVar('f')\n const a = vec2(0, 0).toVar('a')\n\n // 5x5x5 grid sampling from -2 to +2\n Loop(int(5), ({ i: zLoop }) => {\n const zOffset = zLoop.sub(int(2)).toFloat().toVar('zOffset')\n Loop(int(5), ({ i: yLoop }) => {\n const yOffset = yLoop.sub(int(2)).toFloat().toVar('yOffset')\n Loop(int(5), ({ i: xLoop }) => {\n const xOffset = xLoop.sub(int(2)).toFloat().toVar('xOffset')\n const g = vec3(xOffset, yOffset, zOffset).toVar('g')\n const o = random3Vec3(i.add(g)).mul(vec3(u, u, 1)).toVar('o')\n const d = g.sub(f).add(o).add(0.5).toVar('d')\n const w = float(1).sub(float(0).smoothstep(1.414, d.length())).pow(k).toVar('w')\n a.addAssign(vec2(o.z.mul(w), w))\n })\n })\n })\n\n return a.x.div(a.y)\n}).setLayout({\n name: 'voronoiseVec3',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'u', type: 'float' },\n { name: 'v', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, mat2 } from '../../node'\nimport { randomVec2 } from './random'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const wavelet = Fn(([p, phase, k]: [Vec2, Float, Float]): Float => {\n const d = float(0).toVar('d')\n const s = float(1).toVar('s')\n const m = float(0).toVar('m')\n\n Loop(int(4), ({ i }) => {\n const q = p.mul(s).toVar('q')\n const a = randomVec2(q.floor()).mul(1000).toVar('a')\n\n q.assign(q.fract().sub(0.5).mul(rotate2d(a)))\n\n d.addAssign(\n q.x\n .mul(10)\n .add(phase)\n .sin()\n .mul(float(0.25).smoothstep(0, q.dot(q)))\n .div(s)\n )\n\n p.assign(p.mul(mat2(0.54, -0.84, 0.84, 0.54)).add(i.toFloat()))\n m.addAssign(float(1).div(s))\n s.mulAssign(k)\n })\n\n return d.div(m)\n}).setLayout({\n name: 'wavelet',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3K = Fn(([p, k]: [Vec3, Float]): Float => {\n return wavelet(p.xy, p.z, k)\n}).setLayout({\n name: 'waveletVec3K',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const waveletVec3 = Fn(([p]: [Vec3]): Float => {\n return waveletVec3K(p, float(1.24))\n}).setLayout({\n name: 'waveletVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const waveletVec2Phase = Fn(([p, phase]: [Vec2, Float]): Float => {\n return wavelet(p, phase, float(1.24))\n}).setLayout({\n name: 'waveletVec2Phase',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const waveletVec2 = Fn(([p]: [Vec2]): Float => {\n return wavelet(p, float(0), float(1.24))\n}).setLayout({\n name: 'waveletVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n","import { Fn, Float, Mat2, mat2 } from '../../node'\n\nexport const rotate2d = Fn(([r]: [Float]): Mat2 => {\n const c = r.cos()\n const s = r.sin()\n return mat2(c, s, s.negate(), c)\n}).setLayout({\n name: 'rotate2d',\n type: 'mat2',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Vec2, Vec3, Loop, int, float, vec2, vec3, If } from '../../node'\nimport { random2Vec2, random3Vec3 } from './random'\nimport { distEuclidean } from '../math/dist'\n\nexport const worley2Vec2 = Fn(([p]: [Vec2]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec2(0).toVar('off1')\n const pos1 = vec2(0).toVar('pos1')\n const off2 = vec2(0).toVar('off2')\n const pos2 = vec2(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n const g = vec2(i.toFloat().sub(1), j.toFloat().sub(1)).toVar('g')\n const o = random2Vec2(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec2',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worleyVec2 = Fn(([p]: [Vec2]): Float => {\n return float(1).sub(worley2Vec2(p).x)\n}).setLayout({\n name: 'worleyVec2',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec2' }],\n})\n\nexport const worley2Vec3 = Fn(([p]: [Vec3]): Vec2 => {\n const n = p.floor().toVar('n')\n const f = p.fract().toVar('f')\n const distF1 = float(1).toVar('distF1')\n const distF2 = float(1).toVar('distF2')\n const off1 = vec3(0).toVar('off1')\n const pos1 = vec3(0).toVar('pos1')\n const off2 = vec3(0).toVar('off2')\n const pos2 = vec3(0).toVar('pos2')\n\n Loop(int(3), ({ i }) => {\n Loop(int(3), ({ i: j }) => {\n Loop(int(3), ({ i: k }) => {\n const g = vec3(i.toFloat().sub(1), j.toFloat().sub(1), k.toFloat().sub(1)).toVar('g')\n const o = random3Vec3(n.add(g)).mul(1).toVar('o')\n const point = g.add(o).toVar('point')\n const d = distEuclidean(point, f).toVar('d')\n\n If(d.lessThan(distF1), () => {\n distF2.assign(distF1)\n distF1.assign(d)\n off2.assign(off1)\n off1.assign(g)\n pos2.assign(pos1)\n pos1.assign(point)\n }).ElseIf(d.lessThan(distF2), () => {\n distF2.assign(d)\n off2.assign(g)\n pos2.assign(point)\n })\n })\n })\n })\n\n return vec2(distF1, distF2)\n}).setLayout({\n name: 'worley2Vec3',\n type: 'vec2',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const worleyVec3 = Fn(([p]: [Vec3]): Float => {\n return float(1).sub(worley2Vec3(p).x)\n}).setLayout({\n name: 'worleyVec3',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, abs, distance, max, pow } from '../../node'\n\nconst DIST_MINKOWSKI_P = 2.0\n\nexport const distEuclidean = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distance(a, b)\n}).setLayout({\n name: 'distEuclidean',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n\nexport const distManhattan = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return abs(a.x.sub(b.x)).add(abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distManhattan3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distManhattan4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return abs(a.x.sub(b.x))\n .add(abs(a.y.sub(b.y)))\n .add(abs(a.z.sub(b.z)))\n .add(abs(a.w.sub(b.w)))\n}).setLayout({\n name: 'distManhattan',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distChebychev = Fn(([a, b]: [Vec2, Vec2]): Float => {\n return max(abs(a.x.sub(b.x)), abs(a.y.sub(b.y)))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distChebychev3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), abs(a.z.sub(b.z))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distChebychev4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n return max(abs(a.x.sub(b.x)), max(abs(a.y.sub(b.y)), max(abs(a.z.sub(b.z)), abs(a.w.sub(b.w)))))\n}).setLayout({\n name: 'distChebychev',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const distMinkowski = Fn(([a, b]: [Vec2, Vec2]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(pow(abs(a.x.sub(b.x)), p).add(pow(abs(a.y.sub(b.y)), p)), 1 / p)\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec2' },\n { name: 'b', type: 'vec2' },\n ],\n})\n\nexport const distMinkowski3 = Fn(([a, b]: [Vec3, Vec3]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n\nexport const distMinkowski4 = Fn(([a, b]: [Vec4, Vec4]): Float => {\n const p = DIST_MINKOWSKI_P\n return pow(\n pow(abs(a.x.sub(b.x)), p)\n .add(pow(abs(a.y.sub(b.y)), p))\n .add(pow(abs(a.z.sub(b.z)), p))\n .add(pow(abs(a.w.sub(b.w)), p)),\n 1 / p\n )\n}).setLayout({\n name: 'distMinkowski',\n type: 'float',\n inputs: [\n { name: 'a', type: 'vec4' },\n { name: 'b', type: 'vec4' },\n ],\n})\n\nexport const dist = Fn(([a, b]: [Vec2 | Vec3 | Vec4, Vec2 | Vec3 | Vec4]): Float => {\n return distEuclidean(a, b)\n}).setLayout({\n name: 'dist',\n type: 'float',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, X, dFdx, dFdy, fract, float, select } from '../../node'\nimport { mapRange } from './map'\n\nexport const aafloor = Fn(([x]: [X]): X => {\n const afwidth = dFdx(x).pow(2).add(dFdy(x).pow(2)).sqrt().mul(2).toVar()\n const fx = fract(x).toVar()\n const idx = afwidth.oneMinus().toVar()\n return select(x.sub(fx), mapRange(fx, idx, float(1), x.sub(fx), x), fx.lessThan(idx))\n}).setLayout({\n name: 'aafloor',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const map = Fn(([v, iMin, iMax]: [X, X, X]): X => {\n return v.sub(iMin).div(iMax.sub(iMin))\n}).setLayout({\n name: 'map',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n ],\n})\n\nexport const mapRange = Fn(([v, iMin, iMax, oMin, oMax]: [X, X, X, X, X]): X => {\n return oMin.add(oMax.sub(oMin).mul(v.sub(iMin).div(iMax.sub(iMin))))\n}).setLayout({\n name: 'mapRange',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'iMin', type: 'auto' },\n { name: 'iMax', type: 'auto' },\n { name: 'oMin', type: 'auto' },\n { name: 'oMax', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec2, X, dFdx, dFdy, fract, length, mix, smoothstep, vec2, select, float } from '../../node'\n\nconst nyquist = Fn(([x, width]: [Float, Float]): Float => {\n const cutoffStart = float(0.25).toVar('cutoffStart') // NYQUIST_FILTER_CENTER - NYQUIST_FILTER_WIDTH\n const cutoffEnd = float(0.75).toVar('cutoffEnd') // NYQUIST_FILTER_CENTER + NYQUIST_FILTER_WIDTH\n const f = smoothstep(cutoffEnd, cutoffStart, width).toVar('f')\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'width', type: 'float' },\n ],\n})\n\nexport const aafract = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n .mul(2)\n .toVar('afwidth')\n const fx = fract(x).toVar('fx')\n const idx = afwidth.oneMinus().toVar('idx')\n const v = select(fx.div(idx as any), fx.oneMinus().div(afwidth as any), fx.lessThan(idx as any)).toVar('v')\n return nyquist(v as any, afwidth as any)\n}).setLayout({\n name: 'aafract',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n\n// Vector overloads\nexport const aafractVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(aafract(v.x), aafract(v.y))\n}).setLayout({\n name: 'aafractVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, X, dFdx, dFdy, length, vec2, floor, abs } from '../../node'\nimport { nyquist } from './nyquist'\n\nexport const aamirror = Fn(([x]: [X]): X => {\n const afwidth = length(vec2(dFdx(x), dFdy(x)))\n const v = abs(x.sub(floor(x.add(0.5)))).mul(2)\n return nyquist(v, afwidth)\n}).setLayout({\n name: 'aamirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, X, mix, smoothstep, float } from '../../node'\n\nexport const nyquist = Fn(([x, width]: [X, Float]): X => {\n const cutoffStart = 0.25\n const cutoffEnd = 0.75\n const f = smoothstep(cutoffEnd, cutoffStart, width)\n return mix(float(0.5), x, f)\n}).setLayout({\n name: 'nyquist',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'width', type: 'float' },\n ],\n})\n","import { Fn, X, select } from '../../node'\n\nexport const absi = Fn(([x]: [X]): X => {\n return select(x.mul(-1), x, x.lessThan(0))\n}).setLayout({\n name: 'absi',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Float, step } from '../../node'\n\nexport const adaptiveThreshold = Fn(([v, blur_v, b]: [Float, Float, Float]): Float => {\n return step(blur_v.add(b), v)\n}).setLayout({\n name: 'adaptiveThreshold',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n\nexport const adaptiveThresholdSimple = Fn(([v, blur_v]: [Float, Float]): Float => {\n return step(blur_v.sub(0.05), v)\n}).setLayout({\n name: 'adaptiveThresholdSimple',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'blur_v', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\nexport const bump = Fn(([x, k]: [X, X]): X => {\n return x.mul(x).sub(1).negate().sub(k).saturate()\n}).setLayout({\n name: 'bump',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n\nexport const bumpSimple = Fn(([x]: [X]): X => {\n return x.mul(x).sub(1).negate().max(0)\n}).setLayout({\n name: 'bumpSimple',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { X, Fn, Float, Vec2, Vec3, Vec4 } from '../../node'\nimport { cubic, cubicVec2, cubicVec3, cubicVec4 } from './cubic'\n\nexport const cubicMix = Fn(([a, b, t]: [Float, Float, Float]): X => {\n return a.add(b.sub(a).mul(cubic(t)))\n}).setLayout({\n name: 'cubicMix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec2 = Fn(([a, b, t]: [Vec2, Vec2, Vec2]): X => {\n return a.add(b.sub(a).mul(cubicVec2(t)))\n}).setLayout({\n name: 'cubicMixVec2',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\nexport const cubicMixVec3 = Fn(([a, b, t]: [Vec3, Vec3, Vec3]): X => {\n return a.add(b.sub(a).mul(cubicVec3(t)))\n}).setLayout({\n name: 'cubicMixVec3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n\nexport const cubicMixVec4 = Fn(([a, b, t]: [Vec4, Vec4, Vec4]): X => {\n return a.add(b.sub(a).mul(cubicVec4(t)))\n}).setLayout({\n name: 'cubicMixVec4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 't', type: 'auto' },\n ],\n})\n","import { X, Fn } from '../../node'\n\nexport const decimate = Fn(([v, p]: [X, X]): X => {\n return v.mul(p).floor().div(p)\n}).setLayout({\n name: 'decimate',\n type: 'auto',\n inputs: [\n { name: 'v', type: 'auto' },\n { name: 'p', type: 'auto' },\n ],\n})","import { Fn, Float, cos, fwidth, smoothstep } from '../../node'\nimport { TWO_PI } from './const'\n\nexport const fcos = Fn(([x]: [Float]): Float => {\n const w = fwidth(x)\n return cos(x).mul(smoothstep(TWO_PI, 0, w))\n}).setLayout({\n name: 'fcos',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const frac = Fn(([x]: [X]): X => {\n return x.fract()\n}).setLayout({\n name: 'frac',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, float, select } from '../../node'\n\nexport const gain = Fn(([x, k]: [X, X]): X => {\n const conditionValue = select(x.oneMinus(), x, x.lessThan(0.5))\n const a = float(0.5).mul(float(2).mul(conditionValue).pow(k)).toVar('a')\n return select(a.oneMinus(), a, x.lessThan(0.5))\n}).setLayout({\n name: 'gain',\n type: 'auto',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'k', type: 'auto' },\n ],\n})\n","import { Fn, X, dot } from '../../node'\n\nexport const gaussian = Fn(([d, s]: [X<'vec2' | 'vec3' | 'vec4' | 'ivec2' | 'ivec3' | 'ivec4'>, X]): X => {\n const dotProduct = dot(d, d)\n const variance = s.mul(s).mul(2)\n return dotProduct.negate().div(variance).exp()\n}).setLayout({\n name: 'gaussian',\n type: 'float',\n inputs: [\n { name: 'd', type: 'auto' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { PI } from './const'\nimport { Fn, Int, Vec2, Vec3, float, vec2, vec3, uint } from '../../node'\n\nexport const hammersley = Fn(([index, numSamples]: [Int, Int]): Vec2 => {\n const tof = float(0.5).div(float(2147483648)).toVar('tof')\n const bits = uint(index).toVar('bits')\n\n bits.assign(bits.shiftLeft(uint(16)).bitOr(bits.shiftRight(uint(16))))\n bits.assign(\n bits\n .bitAnd(uint(0x55555555))\n .shiftLeft(uint(1))\n .bitOr(bits.bitAnd(uint(0xaaaaaaaa)).shiftRight(uint(1)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x33333333))\n .shiftLeft(uint(2))\n .bitOr(bits.bitAnd(uint(0xcccccccc)).shiftRight(uint(2)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x0f0f0f0f))\n .shiftLeft(uint(4))\n .bitOr(bits.bitAnd(uint(0xf0f0f0f0)).shiftRight(uint(4)))\n )\n bits.assign(\n bits\n .bitAnd(uint(0x00ff00ff))\n .shiftLeft(uint(8))\n .bitOr(bits.bitAnd(uint(0xff00ff00)).shiftRight(uint(8)))\n )\n\n return vec2(float(index).div(float(numSamples)), float(bits).mul(tof))\n}).setLayout({\n name: 'hammersley',\n type: 'vec2',\n inputs: [\n { name: 'index', type: 'int' },\n { name: 'numSamples', type: 'int' },\n ],\n})\n\nexport const hemisphereCosSample = Fn(([u]: [Vec2]): Vec3 => {\n const phi = float(2).mul(PI).mul(u.x).toVar('phi')\n const cosTheta2 = float(1).sub(u.y).toVar('cosTheta2')\n const cosTheta = cosTheta2.sqrt().toVar('cosTheta')\n const sinTheta = float(1).sub(cosTheta2).sqrt().toVar('sinTheta')\n return vec3(phi.cos().mul(sinTheta), phi.sin().mul(sinTheta), cosTheta)\n}).setLayout({\n name: 'hemisphereCosSample',\n type: 'vec3',\n inputs: [{ name: 'u', type: 'vec2' }],\n})\n","import { Fn, Float, max, float } from '../../node'\n\nexport const highPass = Fn(([v, b]: [Float, Float]): Float => {\n return max(v.sub(b), 0).div(float(1).sub(b))\n}).setLayout({\n name: 'highPass',\n type: 'float',\n inputs: [\n { name: 'v', type: 'float' },\n { name: 'b', type: 'float' },\n ],\n})\n","import { Fn, all } from '../../node'\nimport type { Bool, Float, Vec2, Vec3, Vec4, X } from '../../node/types'\n\nexport const inside = Fn(([x, min, max]: [X, X, X]): Bool => {\n return all(x.greaterThanEqual(min).and(x.lessThanEqual(max)))\n}).setLayout({\n name: 'inside',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'min', type: 'auto' },\n { name: 'max', type: 'auto' },\n ],\n})\n\nexport const insideFloat = Fn(([x, min, max]: [Float, Float, Float]): Bool => {\n return x.greaterThanEqual(min).and(x.lessThanEqual(max))\n}).setLayout({\n name: 'insideFloat',\n type: 'bool',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'min', type: 'float' },\n { name: 'max', type: 'float' },\n ],\n})\n\nexport const insideVec2 = Fn(([v, min, max]: [Vec2, Vec2, Vec2]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n}).setLayout({\n name: 'insideVec2',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'min', type: 'vec2' },\n { name: 'max', type: 'vec2' },\n ],\n})\n\nexport const insideVec3 = Fn(([v, min, max]: [Vec3, Vec3, Vec3]): Bool => {\n return v.x\n .greaterThanEqual(min.x)\n .and(v.x.lessThanEqual(max.x))\n .and(v.y.greaterThanEqual(min.y).and(v.y.lessThanEqual(max.y)))\n .and(v.z.greaterThanEqual(min.z).and(v.z.lessThanEqual(max.z)))\n}).setLayout({\n name: 'insideVec3',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'min', type: 'vec3' },\n { name: 'max', type: 'vec3' },\n ],\n})\n\nexport const insideAABB = Fn(([v, aabb]: [Vec2, Vec4]): Bool => {\n return insideVec2(v, aabb.xy, aabb.zw)\n}).setLayout({\n name: 'insideAABB',\n type: 'bool',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'aabb', type: 'vec4' },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const invCubic = Fn(([v]: [X]): X => {\n return float(0.5).sub(float(1).sub(float(2).mul(v)).asin().div(3).sin())\n}).setLayout({\n name: 'invCubic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const invQuartic = Fn(([v]: [X]): X => {\n return v.oneMinus().sqrt().oneMinus().sqrt()\n}).setLayout({\n name: 'invQuartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const inverse = Fn(([m]: [X]): X => {\n return float(1).div(m)\n}).setLayout({\n name: 'reciprocal',\n type: 'auto',\n inputs: [{ name: 'm', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const mirror = Fn(([x]: [X]): X => {\n const f = x.fract()\n const m = x.mod(2).floor()\n const fm = f.mul(m)\n return f.add(m).sub(fm.mul(2))\n}).setLayout({\n name: 'mirror',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, Float, max } from '../../node'\n\nexport const mmax2 = Fn(([v]: [Vec2]): Float => {\n return max(v.x, v.y)\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mmax3 = Fn(([v]: [Vec3]): Float => {\n return max(v.x, max(v.y, v.z))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const mmax4 = Fn(([v]: [Vec4]): Float => {\n return max(max(v.x, v.y), max(v.z, v.w))\n}).setLayout({\n name: 'mmax',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const mmax = mmax4\n","import { Fn, X, mix, max, step, clamp } from '../../node'\n\n// Basic mmix function - wrapper around standard mix\nexport const mmix = Fn(([a, b, c]: [X, X, X]): X => {\n return mix(a, b, c)\n}).setLayout({\n name: 'mmix',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n ],\n})\n\n// Three-value interpolation with percentage control\nexport const mmix3 = Fn(([a, b, c, pct]: [X, X, X, X]): X => {\n return mix(mix(a, b, pct.mul(2)), mix(b, c, max(pct, 0.5).sub(0.5).mul(2)), step(0.5, pct))\n}).setLayout({\n name: 'mmix3',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n\n// Four-value interpolation with percentage control\nexport const mmix4 = Fn(([a, b, c, d, pct]: [X, X, X, X, X]): X => {\n return mix(\n mix(a, b, pct.mul(3)),\n mix(b, mix(c, d, max(pct, 0.66).sub(0.66).mul(3)), clamp(pct, 0.33, 0.66).sub(0.33).mul(3)),\n step(0.33, pct)\n )\n}).setLayout({\n name: 'mmix4',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n { name: 'c', type: 'auto' },\n { name: 'd', type: 'auto' },\n { name: 'pct', type: 'auto' },\n ],\n})\n","import { Fn, Vec2, X, vec4 } from '../../node'\n\n// 2D modulo function that returns both cell coordinates and wrapped position\n// Returns vec4(cellX, cellY, wrappedX, wrappedY)\nexport const mod2 = Fn(([p, s]) => {\n const halfS = s.div(2).toVar()\n const pShifted = p.add(halfS).toVar()\n const c = pShifted.div(s).floor().toVar()\n const wrapped = pShifted.mod(s).sub(halfS)\n return vec4(c.x, c.y, wrapped.x, wrapped.y)\n}).setLayout({\n name: 'mod2',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract cell coordinates from mod2 result\nexport const mod2Cell = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.xy\n}).setLayout({\n name: 'mod2Cell',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n\n// Utility function to extract wrapped position from mod2 result\nexport const mod2Wrap = Fn(([p, s]: [Vec2, X]): Vec2 => {\n const result = mod2(p, s)\n return result.zw\n}).setLayout({\n name: 'mod2Wrap',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'auto' },\n ],\n})\n","import { Fn, Float, Vec4, fract, vec3, vec4, float } from '../../node'\n\nconst PackUpscale = float(256.0 / 255.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst ShiftRight8 = float(1 / 256)\n\nexport const pack = Fn(([v]: [Float]): Vec4 => {\n const r = vec4(fract(v.mul(PackFactors)), v).toVar()\n r.yzw.assign(r.yzw.sub(r.xyz.mul(ShiftRight8)))\n return r.mul(PackUpscale)\n}).setLayout({\n name: 'pack',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'float' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const parabola = Fn(([x, k]: [Float, Float]): Float => {\n return x.mul(4).mul(x.oneMinus()).pow(k)\n}).setLayout({\n name: 'parabola',\n type: 'float',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, X } from '../../node'\n\n// Square function - computes x^2 with quadratic energy amplification\nexport const pow2 = Fn(([v]: [X]): X => {\n return v.mul(v)\n}).setLayout({\n name: 'pow2',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow3 = Fn(([x]: [X]): X => {\n return x.mul(x).mul(x)\n}).setLayout({\n name: 'pow3',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow5 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n return v2.mul(v2).mul(x)\n}).setLayout({\n name: 'pow5',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X } from '../../node'\n\nexport const pow7 = Fn(([x]: [X]): X => {\n const v2 = x.mul(x).toVar('v2')\n const v4 = v2.mul(v2).toVar('v4')\n const v6 = v4.mul(v2).toVar('v6')\n return v6.mul(x)\n}).setLayout({\n name: 'pow7',\n type: 'auto',\n inputs: [{ name: 'x', type: 'auto' }],\n})\n","import { Fn, X, Float, float } from '../../node'\n\nexport const powFast = Fn(([a, b]: [X, X]): X => {\n return a.div((float(1) as any).sub(b).mul(a).add(b))\n}).setLayout({\n name: 'powFast',\n type: 'auto',\n inputs: [\n { name: 'a', type: 'auto' },\n { name: 'b', type: 'auto' },\n ],\n})\n","import { Fn, Vec4, Mat3, mat3, vec3, float } from '../../../node'\n\nexport const quat2mat3 = Fn(([q]: [Vec4]): Mat3 => {\n const qxx = q.x.mul(q.x).toVar('qxx')\n const qyy = q.y.mul(q.y).toVar('qyy')\n const qzz = q.z.mul(q.z).toVar('qzz')\n const qxz = q.x.mul(q.z).toVar('qxz')\n const qxy = q.x.mul(q.y).toVar('qxy')\n const qyw = q.y.mul(q.w).toVar('qyw')\n const qzw = q.z.mul(q.w).toVar('qzw')\n const qyz = q.y.mul(q.z).toVar('qyz')\n const qxw = q.x.mul(q.w).toVar('qxw')\n\n return mat3(\n vec3(float(1).sub(float(2).mul(qyy.add(qzz))), float(2).mul(qxy.sub(qzw)), float(2).mul(qxz.add(qyw))),\n vec3(float(2).mul(qxy.add(qzw)), float(1).sub(float(2).mul(qxx.add(qzz))), float(2).mul(qyz.sub(qxw))),\n vec3(float(2).mul(qxz.sub(qyw)), float(2).mul(qyz.add(qxw)), float(1).sub(float(2).mul(qxx.add(qyy))))\n )\n}).setLayout({\n name: 'quat2mat3',\n type: 'mat3',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Mat4 } from '../../../node'\nimport { quat2mat3 } from './quat2mat3'\nimport { toMat4 } from '../toMat4'\n\nexport const quat2mat4 = Fn(([q]: [Vec4]): Mat4 => {\n return toMat4(quat2mat3(q))\n}).setLayout({\n name: 'quat2mat4',\n type: 'mat4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Mat3, Mat4, mat4, vec4 } from '../../node'\n\nexport const toMat4 = Fn(([m]: [Mat3]): Mat4 => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'toMat4',\n type: 'mat4',\n inputs: [{ name: 'm', type: 'mat3' }],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatAdd = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.add(b.xyz), a.w.add(b.w))\n}).setLayout({\n name: 'quatAdd',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatConj = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w)\n}).setLayout({\n name: 'quatConj',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatDiv = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.div(s), q.w.div(s))\n}).setLayout({\n name: 'quatDiv',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatIdentity = Fn(([]): Vec4 => {\n return vec4(0, 0, 0, 1)\n}).setLayout({\n name: 'quatIdentity',\n type: 'vec4',\n inputs: [],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatConj } from './quatConj'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatInverse = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(quatConj(q), quatLengthSq(q))\n}).setLayout({\n name: 'quatInverse',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\n\nexport const quatLengthSq = Fn(([q]: [Vec4]): Float => {\n return q.xyz.dot(q.xyz).add(q.w.mul(q.w))\n}).setLayout({\n name: 'quatLengthSq',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float } from '../../../node'\nimport { quatLengthSq } from './quatLengthSq'\n\nexport const quatLength = Fn(([q]: [Vec4]): Float => {\n return quatLengthSq(q).sqrt()\n}).setLayout({\n name: 'quatLength',\n type: 'float',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, Float, If, float } from '../../../node'\n\nexport const quatLerp = Fn(([qa, qb, t]: [Vec4, Vec4, Float]): Vec4 => {\n const cosHalfTheta = qa.w.mul(qb.w).add(qa.xyz.dot(qb.xyz)).toVar('cosHalfTheta')\n const adjustedQb = qb.negate().select(qb, cosHalfTheta.lessThan(0)).toVar('adjustedQb')\n const absCosHalfTheta = cosHalfTheta.abs().toVar('absCosHalfTheta')\n\n If(absCosHalfTheta.greaterThanEqual(1), () => {\n return qa\n })\n\n const halfTheta = absCosHalfTheta.acos().toVar('halfTheta')\n const sinHalfTheta = float(1).sub(absCosHalfTheta.mul(absCosHalfTheta)).sqrt().toVar('sinHalfTheta')\n\n If(sinHalfTheta.abs().lessThan(0.001), () => {\n return qa.div(2).add(adjustedQb.div(2)).normalize()\n })\n\n const ratioA = float(1).sub(t).mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioA')\n const ratioB = t.mul(halfTheta).sin().div(sinHalfTheta).toVar('ratioB')\n\n return qa.mul(ratioA).add(adjustedQb.mul(ratioB)).normalize()\n}).setLayout({\n name: 'quatLerp',\n type: 'vec4',\n inputs: [\n {\n name: 'qa',\n type: 'vec4',\n },\n {\n name: 'qb',\n type: 'vec4',\n },\n {\n name: 't',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, Float, vec4 } from '../../../node'\n\nexport const quatMul = Fn(([q1, q2]: [Vec4, Vec4]): Vec4 => {\n return vec4(\n q2.xyz.mul(q1.w).add(q1.xyz.mul(q2.w)).add(q1.xyz.cross(q2.xyz)),\n q1.w.mul(q2.w).sub(q1.xyz.dot(q2.xyz))\n )\n}).setLayout({\n name: 'quatMul',\n type: 'vec4',\n inputs: [\n {\n name: 'q1',\n type: 'vec4',\n },\n {\n name: 'q2',\n type: 'vec4',\n },\n ],\n})\n\nexport const quatMulScalar = Fn(([q, s]: [Vec4, Float]): Vec4 => {\n return vec4(q.xyz.mul(s), q.w.mul(s))\n}).setLayout({\n name: 'quatMulScalar',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n {\n name: 's',\n type: 'float',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatNeg = Fn(([q]: [Vec4]): Vec4 => {\n return vec4(q.xyz.negate(), q.w.negate())\n}).setLayout({\n name: 'quatNeg',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4 } from '../../../node'\nimport { quatDiv } from './quatDiv'\nimport { quatLength } from './quatLength'\n\nexport const quatNorm = Fn(([q]: [Vec4]): Vec4 => {\n return quatDiv(q, quatLength(q))\n}).setLayout({\n name: 'quatNorm',\n type: 'vec4',\n inputs: [\n {\n name: 'q',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, Vec4, vec4 } from '../../../node'\n\nexport const quatSub = Fn(([a, b]: [Vec4, Vec4]): Vec4 => {\n return vec4(a.xyz.sub(b.xyz), a.w.sub(b.w))\n}).setLayout({\n name: 'quatSub',\n type: 'vec4',\n inputs: [\n {\n name: 'a',\n type: 'vec4',\n },\n {\n name: 'b',\n type: 'vec4',\n },\n ],\n})\n","import { Fn, X, float } from '../../node'\n\nexport const quartic = Fn(([v]: [X]): X => {\n const v2 = v.mul(v).toVar('v2')\n return v2.mul((float(2) as any).sub(v2))\n}).setLayout({\n name: 'quartic',\n type: 'auto',\n inputs: [{ name: 'v', type: 'auto' }],\n})\n","import { Fn, Float, Mat3, Vec3, float, mat3, vec3 } from '../../node'\n\nexport const rotate3d = Fn(([a, r]: [Vec3, Float]): Mat3 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec3(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s))\n )\n const col2 = vec3(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s))\n )\n const col3 = vec3(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c)\n )\n return mat3(col1, col2, col3)\n}).setLayout({\n name: 'rotate3d',\n type: 'mat3',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dX = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(1, 0, 0), vec3(0, c, s), vec3(0, s.negate(), c))\n}).setLayout({\n name: 'rotate3dX',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dY = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(c, 0, s.negate()), vec3(0, 1, 0), vec3(s, 0, c))\n}).setLayout({\n name: 'rotate3dY',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat3, mat3, vec3 } from '../../node'\n\nexport const rotate3dZ = Fn(([r]: [Float]): Mat3 => {\n const c = r.cos()\n const s = r.sin()\n return mat3(vec3(c, s, 0), vec3(s.negate(), c, 0), vec3(0, 0, 1))\n}).setLayout({\n name: 'rotate3dZ',\n type: 'mat3',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, Vec3, float, mat4, vec4 } from '../../node'\n\nexport const rotate4d = Fn(([a, r]: [Vec3, Float]): Mat4 => {\n const axis = a.normalize().toVar('axis')\n const s = r.sin().toVar('s')\n const c = r.cos().toVar('c')\n const oc = float(1).sub(c).toVar('oc')\n const col1 = vec4(\n oc.mul(axis.x).mul(axis.x).add(c),\n oc.mul(axis.x).mul(axis.y).add(axis.z.mul(s)),\n oc.mul(axis.z).mul(axis.x).sub(axis.y.mul(s)),\n 0\n )\n const col2 = vec4(\n oc.mul(axis.x).mul(axis.y).sub(axis.z.mul(s)),\n oc.mul(axis.y).mul(axis.y).add(c),\n oc.mul(axis.y).mul(axis.z).add(axis.x.mul(s)),\n 0\n )\n const col3 = vec4(\n oc.mul(axis.z).mul(axis.x).add(axis.y.mul(s)),\n oc.mul(axis.y).mul(axis.z).sub(axis.x.mul(s)),\n oc.mul(axis.z).mul(axis.z).add(c),\n 0\n )\n const col4 = vec4(0, 0, 0, 1)\n return mat4(col1, col2, col3, col4)\n}).setLayout({\n name: 'rotate4d',\n type: 'mat4',\n inputs: [\n { name: 'a', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dX = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(1, 0, 0, 0), vec4(0, c, s, 0), vec4(0, s.negate(), c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dX',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dY = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, 0, s.negate(), 0), vec4(0, 1, 0, 0), vec4(s, 0, c, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dY',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const rotate4dZ = Fn(([r]: [Float]): Mat4 => {\n const c = r.cos()\n const s = r.sin()\n return mat4(vec4(c, s, 0, 0), vec4(s.negate(), c, 0, 0), vec4(0, 0, 1, 0), vec4(0, 0, 0, 1))\n}).setLayout({\n name: 'rotate4dZ',\n type: 'mat4',\n inputs: [{ name: 'r', type: 'float' }],\n})\n","import { Fn, X, float } from '../../node'\n\nconst MEDIUMP_FLT_MAX = float(65504.0)\n\nexport const saturateMediump = Fn(([x]: [X]): X => {\n\treturn x.min(MEDIUMP_FLT_MAX)\n}).setLayout({\n\tname: 'saturateMediump',\n\ttype: 'auto',\n\tinputs: [{ name: 'x', type: 'auto' }],\n})","import { Fn, Float, Vec2, mat2, Mat2 } from '../../node'\n\nexport const scale2d = Fn(([s]: [Float]): Mat2 => {\n return mat2(s, 0, 0, s)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [{ name: 's', type: 'float' }],\n})\n\nexport const scale2dVec = Fn(([s]: [Vec2]): Mat2 => {\n return mat2(s.x, 0, 0, s.y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [{ name: 's', type: 'vec2' }],\n})\n\nexport const scale2dXY = Fn(([x, y]: [Float, Float]): Mat2 => {\n return mat2(x, 0, 0, y)\n}).setLayout({\n name: 'scale2d',\n type: 'mat2',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec3, Mat3, mat3 } from '../../node'\n\nexport const scale3d = Fn(([s]: [Float]): Mat3 => {\n return mat3(s, 0, 0, 0, s, 0, 0, 0, s)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale3dVec = Fn(([s]: [Vec3]): Mat3 => {\n return mat3(s.x, 0, 0, 0, s.y, 0, 0, 0, s.z)\n}).setLayout({\n name: 'scale3d',\n type: 'mat3',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n","import { Fn, Float, Vec3, Vec4, Mat4, mat4 } from '../../node'\n\nexport const scale4d = Fn(([s]: [Float]): Mat4 => {\n return mat4(s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'float' }]\n})\n\nexport const scale4dXYZ = Fn(([x, y, z]: [Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' }\n ]\n})\n\nexport const scale4dXYZW = Fn(([x, y, z, w]: [Float, Float, Float, Float]): Mat4 => {\n return mat4(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'float' },\n { name: 'y', type: 'float' },\n { name: 'z', type: 'float' },\n { name: 'w', type: 'float' }\n ]\n})\n\nexport const scale4dVec3 = Fn(([s]: [Vec3]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec3' }]\n})\n\nexport const scale4dVec4 = Fn(([s]: [Vec4]): Mat4 => {\n return mat4(s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, s.w)\n}).setLayout({\n name: 'scale4d',\n type: 'mat4',\n inputs: [{ name: 's', type: 'vec4' }]\n})","import { Fn, X } from '../../node'\nimport { quintic } from './quintic'\n\nexport const smootherstep = Fn(([a, b, v]: [X, X, X]): X => {\n\tconst normalized = v.sub(a).div(b.sub(a)).toVar('normalized')\n\tconst saturated = normalized.saturate().toVar('saturated')\n\treturn quintic(saturated)\n}).setLayout({\n\tname: 'smootherstep',\n\ttype: 'auto',\n\tinputs: [\n\t\t{ name: 'a', type: 'auto' },\n\t\t{ name: 'b', type: 'auto' },\n\t\t{ name: 'v', type: 'auto' }\n\t]\n})","import { Fn, Mat3, Mat4, mat3 } from '../../node'\n\nexport const toMat3 = Fn(([m]: [Mat4]): Mat3 => {\n return mat3(m[0].xyz, m[1].xyz, m[2].xyz)\n}).setLayout({\n name: 'toMat3',\n type: 'mat3',\n inputs: [{ name: 'm', type: 'mat4' }],\n})\n","import { Fn, Float, Mat4, Vec3, X, mat4 } from '../../node'\n\nexport const translate4d = Fn(([x, y, z]: [X, X?, X?]): Mat4 => {\n if (y === undefined && z === undefined) {\n const t = x as Vec3\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n t.x, t.y, t.z, 1\n )\n } else {\n const tx = x as Float\n const ty = y as Float\n const tz = z as Float\n return mat4(\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n tx, ty, tz, 1\n )\n }\n}).setLayout({\n name: 'translate4d',\n type: 'mat4',\n inputs: [\n { name: 'x', type: 'auto' },\n { name: 'y', type: 'auto' },\n { name: 'z', type: 'auto' }\n ]\n})","import { Fn, Float, Vec3, Vec4, dot, vec3, vec4, float } from '../../node'\n\nconst UnpackDownscale = float(255.0 / 256.0)\nconst PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0)\nconst UnpackFactors = UnpackDownscale.div(vec4(PackFactors, 1.0))\n\nexport const unpack8 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(8, 8 * 8, 8 * 8 * 8)\n return dot(v, f).div(512.0)\n}).setLayout({\n name: 'unpack8',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack16 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(16, 16 * 16, 16 * 16 * 16)\n return dot(v, f).div(4096.0)\n}).setLayout({\n name: 'unpack16',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack32 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(32, 32 * 32, 32 * 32 * 32)\n return dot(v, f).div(32768.0)\n}).setLayout({\n name: 'unpack32',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack64 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(64, 64 * 64, 64 * 64 * 64)\n return dot(v, f).div(262144.0)\n}).setLayout({\n name: 'unpack64',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack128 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(128, 128 * 128, 128 * 128 * 128)\n return dot(v, f).div(2097152.0)\n}).setLayout({\n name: 'unpack128',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpack256 = Fn(([v]: [Vec3]): Float => {\n const f = vec3(256, 256 * 256, 256 * 256 * 256)\n return dot(v, f).div(16581375.0)\n}).setLayout({\n name: 'unpack256',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const unpackBase = Fn(([v, base]: [Vec3, Float]): Float => {\n const base3 = base.mul(base).mul(base)\n const f = vec3(base, base.mul(base), base3)\n return dot(v, f).div(base3)\n}).setLayout({\n name: 'unpackBase',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'base', type: 'float' },\n ],\n})\n\nexport const unpack = Fn(([v]: [Vec4]): Float => {\n return dot(v, UnpackFactors)\n}).setLayout({\n name: 'unpack',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n\nexport const unpackDefault = Fn(([v]: [Vec3]): Float => {\n return unpack256(v)\n}).setLayout({\n name: 'unpackDefault',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float, vec3, vec2, mat3, float, If } from '../../node'\n\nexport const arrowSDF = Fn(\n ([v, start, end, baseRadius, tipRadius, tipHeight]: [Vec3, Vec3, Vec3, Float, Float, Float]): Float => {\n const t = start.sub(end).toVar('t')\n const l = t.length().toVar('l')\n t.assign(t.div(l))\n l.assign(l.max(tipHeight))\n v.assign(v.sub(end))\n\n If(t.y.add(1).lessThan(0.0001), () => {\n v.assign(vec3(v.x, v.y.negate(), v.z))\n }).Else(() => {\n const k = float(1).div(float(1).add(t.y)).toVar('k')\n const column1 = vec3(t.z.mul(t.z).mul(k).add(t.y), t.x, t.z.mul(t.x.negate()).mul(k)).toVar(\n 'column1'\n )\n const column2 = vec3(t.x.negate(), t.y, t.z.negate()).toVar('column2')\n const column3 = vec3(t.x.negate().mul(t.z).mul(k), t.z, t.x.mul(t.x).mul(k).add(t.y)).toVar(\n 'column3'\n )\n v.assign(\n mat3(\n column1.x,\n column1.y,\n column1.z,\n column2.x,\n column2.y,\n column2.z,\n column3.x,\n column3.y,\n column3.z\n ).mul(v)\n )\n })\n\n const q = vec2(vec2(v.x, v.z).length(), v.y).toVar('q')\n q.assign(vec2(q.x.abs(), q.y))\n const e = vec2(tipRadius, tipHeight).toVar('e')\n const h = q.dot(e).div(e.dot(e)).clamp(0, 1).toVar('h')\n const d1 = q.sub(e.mul(h)).toVar('d1')\n const d2 = q.sub(vec2(tipRadius, tipHeight)).toVar('d2')\n d2.assign(vec2(d2.x.sub(d2.x.clamp(baseRadius.sub(tipRadius), 0)), d2.y))\n const d3 = q.sub(vec2(baseRadius, tipHeight)).toVar('d3')\n d3.assign(vec2(d3.x, d3.y.sub(d3.y.clamp(0, l.sub(tipHeight)))))\n const d4 = vec2(q.y.sub(l), q.x.sub(baseRadius).max(0)).toVar('d4')\n const s = d1.x.max(d1.y.negate()).max(d4.x).max(d2.y.min(d3.x)).toVar('s')\n return d1.dot(d1).min(d2.dot(d2)).min(d3.dot(d3)).min(d4.dot(d4)).sqrt().mul(s.sign())\n }\n).setLayout({\n name: 'arrowSDF',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'start', type: 'vec3' },\n { name: 'end', type: 'vec3' },\n { name: 'baseRadius', type: 'float' },\n { name: 'tipRadius', type: 'float' },\n { name: 'tipHeight', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nexport const boxFrameSDF = Fn(([p, b, e]: [Vec3, Vec3, Float]): Float => {\n const p_abs = p.abs().sub(b).toVar('p_abs')\n const q = p_abs.add(e).abs().sub(e).toVar('q')\n\n const term1 = vec3(p_abs.x, q.y, q.z)\n .max(vec3(0))\n .length()\n .add(p_abs.x.max(q.y.max(q.z)).min(0))\n\n const term2 = vec3(q.x, p_abs.y, q.z)\n .max(vec3(0))\n .length()\n .add(q.x.max(p_abs.y.max(q.z)).min(0))\n\n const term3 = vec3(q.x, q.y, p_abs.z)\n .max(vec3(0))\n .length()\n .add(q.x.max(q.y.max(p_abs.z)).min(0))\n\n return term1.min(term2).min(term3)\n}).setLayout({\n name: 'boxFrameSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'e', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const capsuleSDF = Fn(([p, a, b, r]: [Vec3, Vec3, Vec3, Float]): Float => {\n const pa = p.sub(a).toVar('pa')\n const ba = b.sub(a).toVar('ba')\n const h = pa.dot(ba).div(ba.dot(ba)).clamp(0, 1).toVar('h')\n return pa.sub(ba.mul(h)).length().sub(r)\n}).setLayout({\n name: 'capsuleSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})","import { Fn, Vec3, Vec2, Float, vec2, If } from '../../node'\n\nexport const coneSDF = Fn(([p, c]: [Vec3, Vec3]): Float => {\n const q = vec2(vec2(p.x, p.z).length(), p.y).toVar('q')\n const d1 = q.y.negate().sub(c.z).toVar('d1')\n const d2 = q.dot(vec2(c.x, c.y)).max(q.y).toVar('d2')\n return vec2(d1, d2).max(0).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'coneSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\nexport const coneSDFVec2Height = Fn(([p, c, h]: [Vec3, Vec2, Float]): Float => {\n const q = h.mul(vec2(c.x, c.y.negate())).div(c.y).toVar('q')\n const w = vec2(vec2(p.x, p.z).length(), p.y).toVar('w')\n const a = w.sub(q.mul(w.dot(q).div(q.dot(q)).clamp(0, 1))).toVar('a')\n const b = w.sub(q.mul(vec2(w.x.div(q.x).clamp(0, 1), 1))).toVar('b')\n const k = q.y.sign().toVar('k')\n const d = a.dot(a).min(b.dot(b)).toVar('d')\n const s = k\n .mul(w.x.mul(q.y).sub(w.y.mul(q.x)))\n .max(k.mul(w.y.sub(q.y)))\n .toVar('s')\n return d.sqrt().mul(s.sign())\n}).setLayout({\n name: 'coneSDFVec2Height',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec2' },\n { name: 'h', type: 'float' },\n ],\n})\n\nexport const coneSDFRadii = Fn(([p, r1, r2, h]: [Vec3, Float, Float, Float]): Float => {\n const q = vec2(vec2(p.x, p.z).length(), p.y).toVar('q')\n const b = r1.sub(r2).div(h).toVar('b')\n const a = b.mul(b).oneMinus().sqrt().toVar('a')\n const k = q.dot(vec2(b.negate(), a)).toVar('k')\n If(k.lessThan(0), () => {\n return q.length().sub(r1)\n })\n If(k.greaterThan(a.mul(h)), () => {\n return q.sub(vec2(0, h)).length().sub(r2)\n })\n return q.dot(vec2(a, b)).sub(r1)\n}).setLayout({\n name: 'coneSDFRadii',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r1', type: 'float' },\n { name: 'r2', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { boxSDFSize } from './boxSDF'\n\nexport const cubeSDF = Fn(([p, s]: [Vec3, Float]): Float => {\n return boxSDFSize(p, vec3(s))\n}).setLayout({\n name: 'cubeSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3 } from '../../node'\n\nexport const boxSDF = Fn(([p]: [Vec3]) => {\n const d = p.abs().toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const boxSDFSize = Fn(([p, b]: [Vec3, Vec3]) => {\n const d = p.abs().sub(b).toVar()\n return d.x.max(d.y.max(d.z)).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'boxSDFSize',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float, vec2, select, float } from '../../node'\n\nexport const cylinderSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const d = vec2(vec2(p.x, p.z).length(), p.y).abs().sub(h).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'cylinderSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n\nexport const cylinderSDFHeight = Fn(([p, h]: [Vec3, Float]): Float => {\n return cylinderSDF(p, vec2(h))\n}).setLayout({\n name: 'cylinderSDFHeight',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n\nexport const cylinderSDFHeightRadius = Fn(([p, h, r]: [Vec3, Float, Float]): Float => {\n const d = vec2(vec2(p.x, p.z).length(), p.y).abs().sub(vec2(h, r)).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'cylinderSDFHeightRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const cylinderSDFCaps = Fn(([p, a, b, r]: [Vec3, Vec3, Vec3, Float]): Float => {\n const pa = p.sub(a).toVar('pa')\n const ba = b.sub(a).toVar('ba')\n const baba = ba.dot(ba).toVar('baba')\n const paba = pa.dot(ba).toVar('paba')\n const x = pa.mul(baba).sub(ba.mul(paba)).length().sub(r.mul(baba)).toVar('x')\n const y = paba.sub(baba.mul(0.5)).abs().sub(baba.mul(0.5)).toVar('y')\n const x2 = x.mul(x).toVar('x2')\n const y2 = y.mul(y).mul(baba).toVar('y2')\n const d = select(\n select(float(0), x2, x.greaterThan(0)).add(select(float(0), y2, y.greaterThan(0))),\n x2.min(y2).negate(),\n x.max(y).lessThan(0)\n )\n .toFloat()\n .toVar('d')\n return d.sign().mul(d.abs().sqrt()).div(baba)\n}).setLayout({\n name: 'cylinderSDFCaps',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'a', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nconst PHI = 1.618033988749894848204586834\n\nexport const dodecahedronSDF = Fn(([p]: [Vec3]): Float => {\n const n = vec3(PHI, 1, 0).normalize().toVar('n')\n const pAbs = p.abs().toVar('pAbs')\n const a = pAbs.dot(vec3(n.x, n.y, n.z)).toVar('a')\n const b = pAbs.dot(vec3(n.z, n.x, n.y)).toVar('b')\n const c = pAbs.dot(vec3(n.y, n.z, n.x)).toVar('c')\n return a.max(b).max(c).sub(n.x)\n}).setLayout({\n name: 'dodecahedronSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const dodecahedronSDFRadius = Fn(([p, radius]: [Vec3, Float]): Float => {\n const n = vec3(PHI, 1, 0).normalize().toVar('n')\n const pScaled = p.abs().div(radius).toVar('pScaled')\n const a = pScaled.dot(vec3(n.x, n.y, n.z)).toVar('a')\n const b = pScaled.dot(vec3(n.z, n.x, n.y)).toVar('b')\n const c = pScaled.dot(vec3(n.y, n.z, n.x)).toVar('c')\n return a.max(b).max(c).sub(n.x).mul(radius)\n}).setLayout({\n name: 'dodecahedronSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const ellipsoidSDF = Fn(([p, r]: [Vec3, Vec3]): Float => {\n const k0 = p.div(r).length().toVar('k0')\n const k1 = p.div(r.mul(r)).length().toVar('k1')\n return k0.mul(k0.sub(1)).div(k1)\n}).setLayout({\n name: 'ellipsoidSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r', type: 'vec3' },\n ],\n})","import { Fn, Vec2, Int, Float, atan2 } from '../../node'\n\nexport const flowerSDF = Fn(([st, N]: [Vec2, Int]): Float => {\n const centered = st.sub(0.5).mul(4).toVar('centered')\n const r = centered.length().mul(2).toVar('r')\n const a = atan2(centered.y, centered.x).toVar('a')\n const v = N.toFloat().mul(0.5).toVar('v')\n return a.mul(v).cos().abs().mul(0.5).add(0.5).div(r).oneMinus()\n}).setLayout({\n name: 'flowerSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, Int, float } from '../../node'\nimport { mapRange } from '../math'\n\nexport const gearSDF = Fn(([st, b, N]: [Vec2, Float, Int]): Float => {\n const e = float(2.71828182845904523536)\n const stCentered = st.sub(0.5).mul(3).toVar('stCentered')\n const s = mapRange(b, float(1), float(15), float(0.066), float(0.5)).toVar('s')\n const d = stCentered.length().sub(s).toVar('d')\n const omega = b.mul(N.toFloat().mul(stCentered.y.atan2(stCentered.x)).sin()).toVar('omega')\n const l = e.pow(omega.mul(2)).toVar('l')\n const hyperTan = l.sub(1).div(l.add(1)).toVar('hyperTan')\n const r = hyperTan.div(b).toVar('r')\n return d.add(d.min(r))\n}).setLayout({\n name: 'gearSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'b', type: 'float' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\n\nexport const heartSDF = Fn(([st]: [Vec2]): Float => {\n const centered = st.sub(0.5).sub(vec2(0, 0.3)).toVar('centered')\n const r = centered.length().mul(5).toVar('r')\n const normalized = centered.normalize().toVar('normalized')\n const shape = normalized.y\n .mul(normalized.x.abs().pow(0.67))\n .div(normalized.y.add(1.5))\n .sub(normalized.y.mul(2))\n .add(1.26)\n return r.sub(shape)\n}).setLayout({\n name: 'heartSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec3, Vec2, Float, vec2 } from '../../node'\n\nexport const hexPrismSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const q = p.abs().toVar('q')\n const d1 = q.z.sub(h.y).toVar('d1')\n const d2 = q.x.mul(0.866025).add(q.y.mul(0.5)).max(q.y).sub(h.x).toVar('d2')\n return vec2(d1, d2).max(0).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'hexPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\n\nexport const icosahedronSDF = Fn(([p, radius]: [Vec3, Float]): Float => {\n const phi = 2.61803398875 // Golden ratio constant (φ + 1)\n const n1 = vec3(phi, 1, 0).normalize().toVar('n1')\n const n2 = vec3(0.57735026919).toVar('n2') // 1/sqrt(3)\n\n const normalizedP = p.abs().div(radius).toVar('normalizedP')\n\n const a = normalizedP.dot(n1).toVar('a')\n const b = normalizedP.dot(vec3(n1.z, n1.x, n1.y)).toVar('b')\n const c = normalizedP.dot(vec3(n1.y, n1.z, n1.x)).toVar('c')\n const d = normalizedP.dot(n2).sub(n1.x).toVar('d')\n\n return a.max(b).max(c).sub(n1.x).max(d).mul(radius)\n}).setLayout({\n name: 'icosahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'radius', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, float, Loop, If, Break } from '../../node'\n\nexport const juliaSDF = Fn(([st, center, c, r]: [Vec2, Vec2, Vec2, Float]): Float => {\n const transformed = st.sub(0.5).mul(2).toVar('transformed')\n const z = vec2(0).sub(transformed).mul(r).toVar('z')\n const n = float(0).toVar('n')\n const maxIter = 500\n\n Loop(maxIter, ({ i }) => {\n If(z.length().greaterThan(4), () => {\n n.assign(i.toFloat().div(maxIter))\n Break()\n })\n z.assign(vec2(z.x.pow(2).sub(z.y.pow(2)).add(c.x), z.x.mul(z.y).mul(2).add(c.y)))\n })\n\n return n\n}).setLayout({\n name: 'juliaSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 'c', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const juliaSDFSimple = Fn(([st, c, r]: [Vec2, Vec2, Float]): Float => {\n return juliaSDF(st, vec2(0.5), c, r)\n}).setLayout({\n name: 'juliaSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'c', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, vec2, mat2, float, Loop, Break, If } from '../../node'\n\nexport const kochSDF = Fn(([st, center, N]: [Vec2, Vec2, Int]): Float => {\n st = st.sub(center).toVar()\n st.assign(st.mul(3))\n const r3 = float(3).sqrt().toVar('r3')\n st.assign(st.abs())\n st.assign(st.add(r3.mul(vec2(st.y.negate(), st.x))))\n st.assign(vec2(st.x, st.y.sub(1)))\n const w = float(0.5).toVar('w')\n const m = mat2(r3, 3, -3, r3).mul(0.5).toVar('m')\n\n Loop(20, ({ i }) => {\n If(i.toFloat().greaterThanEqual(N.toFloat()), () => {\n Break()\n })\n st.assign(\n vec2(r3.negate(), 3)\n .mul(0.5)\n .sub(m.mul(vec2(st.y, st.x.abs())))\n )\n w.assign(w.div(r3))\n })\n\n const d = st.y\n .sign()\n .mul(vec2(st.y, st.x.abs().sub(r3).max(0)).length())\n .toVar('d')\n return d.mul(w)\n}).setLayout({\n name: 'kochSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n\nexport const kochSDFSimple = Fn(([st, N]: [Vec2, Int]): Float => {\n return kochSDF(st, vec2(0.5), N)\n}).setLayout({\n name: 'kochSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, vec2 } from '../../node'\n\nexport const linkSDF = Fn(([p, le, r1, r2]: [Vec3, Float, Float, Float]): Float => {\n const q = vec3(p.x, p.y.abs().sub(le).max(0), p.z).toVar('q')\n return vec2(vec2(q.x, q.y).length().sub(r1), q.z).length().sub(r2)\n}).setLayout({\n name: 'linkSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'le', type: 'float' },\n { name: 'r1', type: 'float' },\n { name: 'r2', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, vec3, float, Loop, If, Break } from '../../node'\nimport { cart2polar3D } from '../space/cart2polar'\n\nexport const mandelbulbSDF = Fn(([st]: [Vec3]): Vec2 => {\n const zeta = st.toVar('zeta')\n const m = st.dot(st).toVar('m')\n const dz = float(1).toVar('dz')\n const n = float(8).toVar('n')\n const maxiterations = 20\n const iterations = float(0).toVar('iterations')\n const r = float(0).toVar('r')\n const dr = float(1).toVar('dr')\n\n Loop(maxiterations, () => {\n dz.assign(n.mul(m.pow(3.5)).mul(dz).add(1))\n const sphericalZ = cart2polar3D(zeta).toVar('sphericalZ')\n const newx = sphericalZ.x\n .pow(n)\n .mul(sphericalZ.y.mul(n).sin())\n .mul(sphericalZ.z.mul(n).cos())\n .toVar('newx')\n const newy = sphericalZ.x\n .pow(n)\n .mul(sphericalZ.y.mul(n).sin())\n .mul(sphericalZ.z.mul(n).sin())\n .toVar('newy')\n const newz = sphericalZ.x.pow(n).mul(sphericalZ.y.mul(n).cos()).toVar('newz')\n zeta.assign(vec3(newx.add(st.x), newy.add(st.y), newz.add(st.z)))\n m.assign(zeta.dot(zeta))\n If(m.greaterThan(2), () => {\n Break()\n })\n iterations.assign(iterations.add(1))\n })\n\n return vec2(float(0.25).mul(m.log()).mul(m.sqrt()).div(dz), iterations)\n}).setLayout({\n name: 'mandelbulbSDF',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, atan2, length, acos, vec2, vec3 } from '../../node'\n\nexport const cart2polar = Fn(([st]: [Vec2]): Vec2 => {\n return vec2(atan2(st.y, st.x), length(st))\n}).setLayout({\n name: 'cart2polar',\n type: 'vec2',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const cart2polar3D = Fn(([st]: [Vec3]): Vec3 => {\n const r = length(st).toVar('r')\n const phi = acos(st.z.div(r)).toVar('phi')\n const theta = atan2(st.y, st.x).toVar('theta')\n return vec3(r, phi, theta)\n}).setLayout({\n name: 'cart2polar3D',\n type: 'vec3',\n inputs: [{ name: 'st', type: 'vec3' }],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const octahedronSDF = Fn(([p, s]: [Vec3, Float]): Float => {\n const pAbs = p.abs().toVar('pAbs')\n const m = pAbs.x.add(pAbs.y).add(pAbs.z).sub(s).toVar('m')\n return m.mul(0.57735027)\n}).setLayout({\n name: 'octahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const octahedronSDFExact = Fn(([p, s]: [Vec3, Float]): Float => {\n const pAbs = p.abs().toVar('pAbs')\n const m = pAbs.x.add(pAbs.y).add(pAbs.z).sub(s).toVar('m')\n const o = pAbs.mul(3).sub(m).min(0).toVar('o')\n o.assign(pAbs.mul(6).sub(m.mul(2)).sub(o.mul(3)).add(o.x.add(o.y).add(o.z)).max(0))\n const oSum = o.x.add(o.y).add(o.z).toVar('oSum')\n return pAbs.sub(s.mul(o).div(oSum)).length()\n}).setLayout({\n name: 'octahedronSDFExact',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, vec2 } from '../../node'\n\nexport const octogonPrismSDF = Fn(([p, r, h]: [Vec3, Float, Float]): Float => {\n const k = vec3(-0.9238795325, 0.3826834323, 0.4142135623).toVar('k')\n p.assign(p.abs())\n p.assign(vec3(p.xy.sub(vec2(k.x, k.y).mul(vec2(k.x, k.y).dot(p.xy).min(0).mul(2))), p.z))\n p.assign(vec3(p.xy.sub(vec2(k.x.negate(), k.y).mul(vec2(k.x.negate(), k.y).dot(p.xy).min(0).mul(2))), p.z))\n p.assign(vec3(p.xy.sub(vec2(p.x.clamp(k.z.negate().mul(r), k.z.mul(r)), r)), p.z))\n const d = vec2(p.xy.length().mul(p.y.sign()), p.z.sub(h)).toVar('d')\n return d.x.max(d.y).min(0).add(d.max(0).length())\n}).setLayout({\n name: 'octogonPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec4 } from '../../node'\n\nexport const opElongateVec2 = Fn(([p, h]: [Vec2, Vec2]): Vec2 => {\n return p.sub(p.clamp(h.negate(), h))\n}).setLayout({\n name: 'opElongateVec2',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'h', type: 'vec2' }\n ]\n})\n\nexport const opElongateVec3 = Fn(([p, h]: [Vec3, Vec3]): Vec3 => {\n return p.sub(p.clamp(h.negate(), h))\n}).setLayout({\n name: 'opElongateVec3',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec3' }\n ]\n})\n\nexport const opElongateVec4 = Fn(([p, h]: [Vec4, Vec4]): Vec4 => {\n const q = p.abs().sub(h).toVar('q')\n return vec4(q.max(0), q.x.max(q.y.max(q.z)).min(0))\n}).setLayout({\n name: 'opElongateVec4',\n type: 'vec4',\n inputs: [\n { name: 'p', type: 'vec4' },\n { name: 'h', type: 'vec4' }\n ]\n})","import { Fn, Vec3, Float, vec2 } from '../../node'\n\nexport const opExtrude = Fn(([p, sdf, h]: [Vec3, Float, Float]): Float => {\n const w = vec2(sdf, p.z.abs().sub(h)).toVar('w')\n return w.x.max(w.y).min(0).add(w.max(0).length())\n}).setLayout({\n name: 'opExtrude',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'sdf', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Float, mix, float } from '../../node'\n\nexport const opIntersection = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.max(d2)\n}).setLayout({\n name: 'opIntersection',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n ],\n})\n\nexport const opIntersectionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = float(0.5).sub(d2.sub(d1).div(k).mul(0.5)).saturate().toVar('h')\n return mix(d2, d1, h).add(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opIntersectionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const opOnion = Fn(([d, h]: [Float, Float]): Float => {\n return d.abs().sub(h)\n}).setLayout({\n name: 'opOnion',\n type: 'float',\n inputs: [\n { name: 'd', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Vec2, Vec3, Float, mod } from '../../node'\n\nexport const opRepeatVec2 = Fn(([p, s]: [Vec2, Float]): Vec2 => {\n return mod(p.add(s.mul(0.5)), s).sub(s.mul(0.5))\n}).setLayout({\n name: 'opRepeatVec2',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 's', type: 'float' }\n ]\n})\n\nexport const opRepeatVec3 = Fn(([p, c]: [Vec3, Vec3]): Vec3 => {\n return mod(p.add(c.mul(0.5)), c).sub(c.mul(0.5))\n}).setLayout({\n name: 'opRepeatVec3',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'c', type: 'vec3' }\n ]\n})\n\nexport const opRepeatVec2Limited = Fn(([p, lima, limb, s]: [Vec2, Vec2, Vec2, Float]): Vec2 => {\n return p.sub(s.mul(p.div(s).floor().clamp(lima, limb)))\n}).setLayout({\n name: 'opRepeatVec2Limited',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec2' },\n { name: 'lima', type: 'vec2' },\n { name: 'limb', type: 'vec2' },\n { name: 's', type: 'float' }\n ]\n})\n\nexport const opRepeatVec3Limited = Fn(([p, lima, limb, s]: [Vec3, Vec3, Vec3, Float]): Vec3 => {\n return p.sub(s.mul(p.div(s).floor().clamp(lima, limb)))\n}).setLayout({\n name: 'opRepeatVec3Limited',\n type: 'vec3',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'lima', type: 'vec3' },\n { name: 'limb', type: 'vec3' },\n { name: 's', type: 'float' }\n ]\n})","import { Fn, Vec3, Vec2, Float, vec2 } from '../../node'\n\nexport const opRevolve = Fn(([p, w]: [Vec3, Float]): Vec2 => {\n return vec2(vec2(p.x, p.z).length().sub(w), p.y)\n}).setLayout({\n name: 'opRevolve',\n type: 'vec2',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'w', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const opRound = Fn(([d, h]: [Float, Float]): Float => {\n return d.sub(h)\n}).setLayout({\n name: 'opRound',\n type: 'float',\n inputs: [\n { name: 'd', type: 'float' },\n { name: 'h', type: 'float' },\n ],\n})","import { Fn, Float, Vec4, vec4, select } from '../../node'\n\nexport const opSubtraction = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.negate().max(d2)\n}).setLayout({\n name: 'opSubtraction',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' }\n ]\n})\n\nexport const opSubtractionVec4 = Fn(([d1, d2]: [Vec4, Vec4]): Vec4 => {\n return d1.negate().select(d2, d1.w.negate().greaterThan(d2.w))\n}).setLayout({\n name: 'opSubtractionVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' }\n ]\n})\n\nexport const opSubtractionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = d2.add(d1).div(k).mul(0.5).sub(0.5).negate().clamp(0, 1).toVar('h')\n return d2.mix(d1.negate(), h).add(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opSubtractionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' }\n ]\n})\n\nexport const opSubtractionSmoothVec4 = Fn(([d1, d2, k]: [Vec4, Vec4, Float]): Vec4 => {\n const h = d2.w.add(d1.w).div(k).mul(0.5).sub(0.5).negate().clamp(0, 1).toVar('h')\n const result = d2.mix(d1.negate(), h).toVar('result')\n return vec4(result.xyz, result.w.add(k.mul(h).mul(h.oneMinus())))\n}).setLayout({\n name: 'opSubtractionSmoothVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' },\n { name: 'k', type: 'float' }\n ]\n})","import { Fn, Float, Vec4, vec4 } from '../../node'\n\nexport const opUnion = Fn(([d1, d2]: [Float, Float]): Float => {\n return d1.min(d2)\n}).setLayout({\n name: 'opUnion',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n ],\n})\n\nexport const opUnionSmooth = Fn(([d1, d2, k]: [Float, Float, Float]): Float => {\n const h = d2.sub(d1).div(k).mul(0.5).add(0.5).clamp(0, 1).toVar('h')\n return d2.mix(d1, h).sub(k.mul(h).mul(h.oneMinus()))\n}).setLayout({\n name: 'opUnionSmooth',\n type: 'float',\n inputs: [\n { name: 'd1', type: 'float' },\n { name: 'd2', type: 'float' },\n { name: 'k', type: 'float' },\n ],\n})\n\nexport const opUnionSmoothVec4 = Fn(([d1, d2, k]: [Vec4, Vec4, Float]): Vec4 => {\n const h = d2.w.sub(d1.w).div(k).mul(0.5).add(0.5).clamp(0, 1).toVar('h')\n const result = d2.mix(d1, h).toVar('result')\n return vec4(result.xyz, result.w.sub(k.mul(h).mul(h.oneMinus())))\n}).setLayout({\n name: 'opUnionSmoothVec4',\n type: 'vec4',\n inputs: [\n { name: 'd1', type: 'vec4' },\n { name: 'd2', type: 'vec4' },\n { name: 'k', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const planeSDF = Fn(([p]: [Vec3]): Float => {\n return p.y\n}).setLayout({\n name: 'planeSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const planeSDFNormal = Fn(([p, planePoint, planeNormal]: [Vec3, Vec3, Vec3]): Float => {\n return planeNormal.dot(p).add(planeNormal.dot(planePoint)).div(planeNormal.length())\n}).setLayout({\n name: 'planeSDFNormal',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'planePoint', type: 'vec3' },\n { name: 'planeNormal', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, Int, atan2 } from '../../node'\nimport { PI, TAU } from '../math/const'\n\nexport const polySDF = Fn(([st, V]: [Vec2, Int]): Float => {\n const p = st.mul(2).sub(1).toVar('p')\n const a = atan2(p.y, p.x).add(PI).toVar('a')\n const r = p.length().toVar('r')\n const v = TAU.div(V.toFloat()).toVar('v')\n return a.div(v).add(0.5).floor().mul(v).sub(a).cos().mul(r)\n}).setLayout({\n name: 'polySDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' }\n ]\n})\n\nexport const polySDFFloat = Fn(([st, V]: [Vec2, Float]): Float => {\n const p = st.mul(2).sub(1).toVar('p')\n const a = atan2(p.y, p.x).add(PI).toVar('a')\n const r = p.length().toVar('r')\n const v = TAU.div(V).toVar('v')\n return a.div(v).add(0.5).floor().mul(v).sub(a).cos().mul(r)\n}).setLayout({\n name: 'polySDFFloat',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'float' }\n ]\n})","import { Fn, Vec3, Float, vec3, vec2, select, float } from '../../node'\n\nexport const pyramidSDF = Fn(([p, h]: [Vec3, Float]): Float => {\n const m2 = h.mul(h).add(0.25).toVar('m2')\n const pxz = vec2(p.x, p.z).abs().toVar('pxz')\n const pxzSwapped = select(vec2(pxz.y, pxz.x), pxz, pxz.y.greaterThan(pxz.x)).toVar('pxzSwapped')\n const pxzFinal = pxzSwapped.sub(0.5).toVar('pxzFinal')\n p.assign(vec3(pxzFinal.x, p.y, pxzFinal.y))\n const q = vec3(p.z, h.mul(p.y).sub(p.x.mul(0.5)), h.mul(p.x).add(p.y.mul(0.5))).toVar('q')\n const s = q.x.negate().max(0).toVar('s')\n const t = q.y.sub(p.z.mul(0.5)).div(m2.add(0.25)).clamp(0, 1).toVar('t')\n const a = m2.mul(q.x.add(s)).mul(q.x.add(s)).add(q.y.mul(q.y)).toVar('a')\n const b = m2\n .mul(q.x.add(t.mul(0.5)))\n .mul(q.x.add(t.mul(0.5)))\n .add(q.y.sub(m2.mul(t)).mul(q.y.sub(m2.mul(t))))\n .toVar('b')\n const d2 = select(float(0), a.min(b), q.y.min(q.x.negate().mul(m2).sub(q.y.mul(0.5))).greaterThan(0))\n .toFloat()\n .toVar('d2')\n return d2.add(q.z.mul(q.z)).div(m2).sqrt().mul(q.z.max(p.y.negate()).sign())\n}).setLayout({\n name: 'pyramidSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, atan2 } from '../../node'\nimport { TAU } from '../math/const'\n\nexport const raysSDF = Fn(([st, N]: [Vec2, Int]): Float => {\n const centered = st.sub(0.5).toVar('centered')\n return atan2(centered.y, centered.x).div(TAU).mul(N.toFloat()).fract()\n}).setLayout({\n name: 'raysSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'N', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { triSDF } from './triSDF'\n\nexport const rhombSDF = Fn(([st]: [Vec2]): Float => {\n return triSDF(st).max(triSDF(vec2(st.x, st.y.oneMinus())))\n}).setLayout({\n name: 'rhombSDF',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, atan2 } from '../../node'\n\nexport const spiralSDF = Fn(([st, t]: [Vec2, Float]): Float => {\n const centeredSt = st.sub(0.5).toVar('centeredSt')\n const r = centeredSt.dot(centeredSt).toVar('r')\n const a = atan2(centeredSt.y, centeredSt.x).toVar('a')\n return r.log().mul(t).add(a.mul(0.159)).fract().sin().abs()\n}).setLayout({\n name: 'spiralSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 't', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Int, Float, vec2, atan2, step, float } from '../../node'\nimport { TAU } from '../math/const'\nimport { scale2dWithCenter } from '../space/scale'\n\nexport function starSDF(st: Vec2, V: Int, s: Float): Float\nexport function starSDF(st: Vec2, V: Int): Float\nexport function starSDF(st: Vec2, V: any, s?: any): any {\n if (s !== undefined) {\n return starSDFWithScale(st, V, s)\n } else {\n return starSDFSimple(st, V)\n }\n}\n\nexport const starSDFWithScale = Fn(([st, V, s]: [Vec2, Int, Float]): Float => {\n const centeredSt = st.sub(0.5).mul(2).toVar('centeredSt')\n const a = atan2(centeredSt.y, centeredSt.x).div(TAU).toVar('a')\n const seg = a.mul(V.toFloat()).toVar('seg')\n const finalA = seg\n .floor()\n .add(0.5)\n .div(V.toFloat())\n .add(s.mix(s.negate(), step(0.5, seg.fract())))\n .mul(TAU)\n .toVar('finalA')\n return vec2(finalA.cos(), finalA.sin()).dot(centeredSt).abs()\n}).setLayout({\n name: 'starSDFWithScale',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const starSDFSimple = Fn(([st, V]: [Vec2, Int]): Float => {\n const scaledSt = scale2dWithCenter(st, V.toFloat().reciprocal().mul(12), vec2(0.5))\n return starSDFWithScale(scaledSt as any, V, float(0.1))\n}).setLayout({\n name: 'starSDFSimple',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'V', type: 'int' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, cos, sin, pow, abs, float } from '../../node'\nimport { cart2polar } from '../space/cart2polar'\n\nexport const superShapeSDFCenter = Fn(\n ([st, center, s, a, b, n1, n2, n3, m]: [\n Vec2,\n Vec2,\n Float,\n Float,\n Float,\n Float,\n Float,\n Float,\n Float\n ]): Float => {\n st.assign(st.sub(center))\n const polar = cart2polar(st).toVar('polar')\n const d = polar.y.mul(5).toVar('d')\n const theta = polar.x.toVar('theta')\n const t1 = abs(\n float(1)\n .div(a)\n .mul(cos(m.mul(theta).mul(0.25)))\n ).toVar('t1')\n t1.assign(pow(t1, n2))\n const t2 = abs(\n float(1)\n .div(b)\n .mul(sin(m.mul(theta).mul(0.25)))\n ).toVar('t2')\n t2.assign(pow(t2, n3))\n const t3 = t1.add(t2).toVar('t3')\n const r = pow(t3, float(-1).div(n1)).toVar('r')\n const q = s\n .mul(r)\n .mul(vec2(cos(theta), sin(theta)))\n .toVar('q')\n return d.sub(q.length())\n }\n).setLayout({\n name: 'superShapeSDFCenter',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'center', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'a', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 'n1', type: 'float' },\n { name: 'n2', type: 'float' },\n { name: 'n3', type: 'float' },\n { name: 'm', type: 'float' },\n ],\n})\n\nexport const superShapeSDF = Fn(\n ([st, s, a, b, n1, n2, n3, m]: [Vec2, Float, Float, Float, Float, Float, Float, Float]): Float => {\n return superShapeSDFCenter(st, vec2(0.5), s, a, b, n1, n2, n3, m)\n }\n).setLayout({\n name: 'superShapeSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n { name: 'a', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 'n1', type: 'float' },\n { name: 'n2', type: 'float' },\n { name: 'n3', type: 'float' },\n { name: 'm', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Float, vec2 } from '../../node'\n\nexport const tetrahedronSDF = Fn(([p, h]: [Vec3, Float]): Float => {\n const q = p.abs().toVar('q')\n const y = p.y.toVar('y')\n const d1 = q.z.sub(y.max(0)).toVar('d1')\n const d2 = q.x\n .mul(0.5)\n .add(y.mul(0.5))\n .max(0)\n .sub(h.min(h.add(y)))\n .toVar('d2')\n return vec2(d1, d2).max(0.005).length().add(d1.max(d2).min(0))\n}).setLayout({\n name: 'tetrahedronSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float } from '../../node'\n\nexport const triPrismSDF = Fn(([p, h]: [Vec3, Vec2]): Float => {\n const q = p.abs().toVar('q')\n return q.z.sub(h.y).max(q.x.mul(0.866025).add(p.y.mul(0.5)).max(p.y.negate()).sub(h.x.mul(0.5)))\n}).setLayout({\n name: 'triPrismSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'h', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float } from '../../node'\n\nexport const sphereSDF = Fn(([p]: [Vec3]) => {\n return p.length()\n}).setLayout({\n name: 'sphereSDF',\n type: 'float',\n inputs: [{ name: 'p', type: 'vec3' }],\n})\n\nexport const sphereSDFRadius = Fn(([p, s]: [Vec3, Float]) => {\n return p.length().sub(s)\n}).setLayout({\n name: 'sphereSDFRadius',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 's', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, Float, vec2, select } from '../../node'\n\nexport const torusSDF = Fn(([p, t]: [Vec3, Vec2]): Float => {\n return vec2(vec2(p.x, p.z).length().sub(t.x), p.y).length().sub(t.y)\n}).setLayout({\n name: 'torusSDF',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 't', type: 'vec2' },\n ],\n})\n\nexport const torusSDFSector = Fn(([p, sc, ra, rb]: [Vec3, Vec2, Float, Float]): Float => {\n const px = p.x.abs().toVar('px')\n const k = select(vec2(px, p.y).length(), vec2(px, p.y).dot(sc), sc.y.mul(px).greaterThan(sc.x.mul(p.y)))\n return p.dot(p).add(ra.mul(ra)).sub(ra.mul(k).mul(2)).sqrt().sub(rb)\n}).setLayout({\n name: 'torusSDFSector',\n type: 'float',\n inputs: [\n { name: 'p', type: 'vec3' },\n { name: 'sc', type: 'vec2' },\n { name: 'ra', type: 'float' },\n { name: 'rb', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, float } from '../../node'\n\nexport const vesicaSDF = Fn(([st, w]: [Vec2, Float]): Float => {\n const offset = vec2(w.mul(0.5), 0)\n const circle1 = st.sub(offset).length().sub(0.5)\n const circle2 = st.add(offset).length().sub(0.5)\n return circle1.max(circle2)\n}).setLayout({\n name: 'vesicaSDF',\n type: 'float',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'w', type: 'float' },\n ],\n})\n\nexport const vesicaSDFDefault = Fn(([st]: [Vec2]): Float => {\n return vesicaSDF(st, float(0.5))\n}).setLayout({\n name: 'vesicaSDFDefault',\n type: 'float',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2 } from '../../node'\n\nexport const aspect = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n const result = st.toVar('result')\n result.x.assign(result.x.mul(s.x.div(s.y)))\n return result\n}).setLayout({\n name: 'aspect',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' }\n ]\n})","import { Fn, Vec2, Float, mat2, atan2, cos, sin, mod, vec2, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nconst BRACKETING_ANGLE_DELTA = PI.div(20.0)\n\nexport const bracketingAxis0 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n return vec2(cos(angle0), sin(angle0))\n}).setLayout({\n name: 'bracketingAxis0',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingAxis1 = Fn(([dir]: [Vec2]): Vec2 => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n const angle0 = angle.sub(fractional)\n const vAxis0 = vec2(cos(angle0), sin(angle0))\n const RotateByAngleDelta = mat2(\n cos(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA),\n sin(BRACKETING_ANGLE_DELTA).negate(),\n cos(BRACKETING_ANGLE_DELTA)\n )\n return RotateByAngleDelta.mul(vAxis0)\n}).setLayout({\n name: 'bracketingAxis1',\n type: 'vec2',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n\nexport const bracketingBlend = Fn(([dir]: [Vec2]): Float => {\n const angle = atan2(dir.y, dir.x).add(TWO_PI)\n const fractional = mod(angle, BRACKETING_ANGLE_DELTA)\n return fractional.div(BRACKETING_ANGLE_DELTA)\n}).setLayout({\n name: 'bracketingBlend',\n type: 'float',\n inputs: [{ name: 'dir', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, floor, fract } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const brickTile = Fn(([t]: [Vec4]): Vec4 => {\n const result = t.toVar('result')\n result.x.assign(result.x.add(mod(result.w, 2).mul(0.5)))\n result.z.assign(floor(result.z.add(result.x)))\n result.x.assign(fract(result.x))\n return result\n}).setLayout({\n name: 'brickTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const brickTileVec2 = Fn(([st]: [Vec2]): Vec4 => {\n return brickTile(sqTile(st))\n}).setLayout({\n name: 'brickTileVec2',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const brickTileFloat = Fn(([st, s]: [Vec2, Float]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const brickTileVec2Scale = Fn(([st, s]: [Vec2, Vec2]): Vec4 => {\n return brickTileVec2(st.mul(s))\n}).setLayout({\n name: 'brickTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4, fract, floor } from '../../node'\n\nexport const sqTile = Fn(([st]: [Vec2]): Vec4 => {\n return vec4(fract(st), floor(st))\n}).setLayout({\n name: 'sqTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const sqTileScale = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return sqTile(st.mul(scale))\n}).setLayout({\n name: 'sqTileScale',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction center(x: Float): Float\nfunction center(v: Vec2): Vec2\nfunction center(v: Vec3): Vec3\nfunction center(v: any): any {\n return v.mul(2).sub(1)\n}\n\nexport const centerFloat = Fn(([x]: [Float]): Float => {\n return center(x)\n}).setLayout({\n name: 'centerFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const centerVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return center(v)\n}).setLayout({\n name: 'centerVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const centerVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return center(v)\n}).setLayout({\n name: 'centerVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs } from '../../node'\nimport { sqTile } from './sqTile'\n\nexport const checkerTile = Fn(([t]: [Vec4]): Float => {\n const c = mod(t.zw, 2).toVar('c')\n return abs(c.x.sub(c.y))\n}).setLayout({\n name: 'checkerTile',\n type: 'float',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const checkerTileVec2 = Fn(([v]: [Vec2]): Float => {\n return checkerTile(sqTile(v))\n}).setLayout({\n name: 'checkerTileVec2',\n type: 'float',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const checkerTileFloat = Fn(([v, s]: [Vec2, Float]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileFloat',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const checkerTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Float => {\n return checkerTileVec2(v.mul(s))\n}).setLayout({\n name: 'checkerTileVec2Scale',\n type: 'float',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, select } from '../../node'\n\n// Perspective projection version\nexport const depth2viewZ = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return near.mul(far).div(far.sub(near).mul(depth).sub(far))\n}).setLayout({\n name: 'depth2viewZ',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Orthographic projection version\nexport const depth2viewZOrthographic = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n return depth.mul(near.sub(far)).sub(near)\n}).setLayout({\n name: 'depth2viewZOrthographic',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\n// Combined version with orthographic flag\nexport const depth2viewZCombined = Fn(([depth, near, far, orthographic]: [Float, Float, Float, Float]): Float => {\n const perspective = near.mul(far).div(far.sub(near).mul(depth).sub(far))\n const ortho = depth.mul(near.sub(far)).sub(near)\n return select(ortho, perspective, orthographic.greaterThan(0.5))\n}).setLayout({\n name: 'depth2viewZCombined',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n { name: 'orthographic', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, X, texture, float, vec3, int, Loop, If } from '../../node'\nimport { lookAtBasic } from './lookAt'\n\nconst DISPLACE_DEPTH = float(1).constant('DISPLACE_DEPTH')\nconst DISPLACE_PRECISION = float(0.01).constant('DISPLACE_PRECISION')\nconst DISPLACE_MAX_ITERATIONS = int(120).constant('DISPLACE_MAX_ITERATIONS')\n\nexport const displace = Fn(([tex, ro, rd]: [X, Vec3, Vec3]): Vec3 => {\n const dz = ro.z.sub(DISPLACE_DEPTH).toVar('dz')\n const t = dz.div(rd.z).toVar('t')\n const prev = vec3(ro.x.sub(rd.x.mul(t)), ro.y.sub(rd.y.mul(t)), ro.z.sub(rd.z.mul(t))).toVar('prev')\n const curr = prev.toVar('curr')\n const lastD = prev.z.toVar('lastD')\n const hmap = float(0).toVar('hmap')\n const df = float(0).toVar('df')\n\n Loop(DISPLACE_MAX_ITERATIONS, () => {\n prev.assign(curr)\n curr.assign(prev.add(rd.mul(DISPLACE_PRECISION)))\n hmap.assign(texture(tex, curr.xy.sub(0.5)).r)\n df.assign(curr.z.sub(hmap.mul(DISPLACE_DEPTH)))\n\n If(df.lessThan(0), () => {\n const t = lastD.div(df.abs().add(lastD)).toVar('t')\n return prev.add(t.mul(curr.sub(prev))).add(vec3(0.5, 0.5, 0))\n })\n\n lastD.assign(df)\n })\n\n return vec3(0, 0, 1)\n}).setLayout({\n name: 'displace',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'rd', type: 'vec3' },\n ],\n})\n\nexport const displaceUV = Fn(([tex, ro, uv]: [X, Vec3, Vec2]): Vec3 => {\n const rd = lookAtBasic(ro.negate())\n .mul(vec3(uv.sub(float(0.5)), 1).normalize())\n .toVar('rd')\n return displace(tex, ro, rd)\n}).setLayout({\n name: 'displaceUV',\n type: 'vec3',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'ro', type: 'vec3' },\n { name: 'uv', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Float, vec3, mat3 } from '../../node'\n\nexport const lookAtForward = Fn(([forward, up]: [Vec3, Vec3]) => {\n const zaxis = forward.normalize().toVar()\n const xaxis = up.cross(zaxis).normalize().toVar()\n const yaxis = zaxis.cross(xaxis).toVar()\n return mat3(xaxis, yaxis, zaxis)\n}).setLayout({\n name: 'lookAtForward',\n type: 'mat3',\n inputs: [\n { name: 'forward', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAt = Fn(([eye, target, up]: [Vec3, Vec3, Vec3]) => {\n const forward = target.sub(eye).normalize().toVar()\n return lookAtForward(forward, up)\n}).setLayout({\n name: 'lookAt',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtRoll = Fn(([eye, target, roll]: [Vec3, Vec3, Float]) => {\n const up = vec3(roll.sin(), roll.cos(), 0).toVar()\n return lookAt(eye, target, up)\n}).setLayout({\n name: 'lookAtRoll',\n type: 'mat3',\n inputs: [\n { name: 'eye', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtBasic = Fn(([forward]: [Vec3]) => {\n return lookAtForward(forward, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtBasic',\n type: 'mat3',\n inputs: [{ name: 'forward', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec3, vec3, cos, sin, sqrt, float } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const equirect2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const phi = PI.sub(uv.y.mul(PI)).toVar('phi')\n const theta = uv.x.mul(TWO_PI).toVar('theta')\n const dir = vec3(cos(theta), 0, sin(theta)).toVar('dir')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'equirect2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec3, Mat4, mat3 } from '../../node'\nimport { rotate3dX, rotate3dY, rotate3dZ } from '../math'\nimport { translateMat3 } from './translate'\n\nexport const eulerView = Fn(([position, euler]: [Vec3, Vec3]): Mat4 => {\n const rotZ = rotate3dZ(euler.z)\n const rotX = rotate3dX(euler.x)\n const rotY = rotate3dY(euler.y)\n const identity = mat3(1).toVar('identity')\n const rotation = rotY.mul(rotX).mul(rotZ).mul(identity).toVar('rotation')\n return translateMat3(rotation, position)\n}).setLayout({\n name: 'eulerView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'euler', type: 'vec3' },\n ],\n})\n","import { Fn, Mat3, Vec3, vec4, mat4 } from '../../node'\n\nexport const translateMat3 = Fn(([m, translation]: [Mat3, Vec3]) => {\n return mat4(vec4(m[0], 0), vec4(m[1], 0), vec4(m[2], 0), vec4(translation, 1))\n}).setLayout({\n name: 'translateMat3',\n type: 'mat4',\n inputs: [\n { name: 'm', type: 'mat3' },\n { name: 'translation', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Vec3, vec3, sqrt, cos, float } from '../../node'\nimport { PI } from '../math/const'\n\nexport const fisheye2xyz = Fn(([uv]: [Vec2]): Vec3 => {\n const ndc = uv.mul(2).sub(1).toVar('ndc')\n const R = sqrt(ndc.x.mul(ndc.x).add(ndc.y.mul(ndc.y))).toVar('R')\n const dir = vec3(ndc.x.div(R), 0, ndc.y.div(R)).toVar('dir')\n const phi = R.mul(PI).mul(0.52).toVar('phi')\n dir.y.assign(cos(phi))\n const multiplier = sqrt(float(1).sub(dir.y.mul(dir.y))).toVar('multiplier')\n dir.x.assign(dir.x.mul(multiplier))\n dir.z.assign(dir.z.mul(multiplier))\n return dir\n}).setLayout({\n name: 'fisheye2xyz',\n type: 'vec3',\n inputs: [{ name: 'uv', type: 'vec2' }],\n})\n","import { Fn, Vec2, Vec3, Vec4, vec2, vec3, vec4 } from '../../node'\n\nexport const flipYVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return vec2(v.x, v.y.oneMinus())\n}).setLayout({\n name: 'flipY',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const flipYVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return vec3(v.x, v.y.oneMinus(), v.z)\n}).setLayout({\n name: 'flipY',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n\nexport const flipYVec4 = Fn(([v]: [Vec4]): Vec4 => {\n return vec4(v.x, v.y.oneMinus(), v.z, v.w)\n}).setLayout({\n name: 'flipY',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec4' }],\n})\n","import { Fn, Vec2, Vec4, vec2, vec4, float, floor, dot, select } from '../../node'\n\nexport const hexTile = Fn(([st]: [Vec2]): Vec4 => {\n const s = vec2(1, 1.7320508).toVar('s')\n const o = vec2(0.5, 1).toVar('o')\n const stYX = vec2(st.y, st.x).toVar('stYX')\n const i = floor(vec4(stYX, stYX.sub(o)).div(vec4(s, s)))\n .add(0.5)\n .toVar('i')\n const f = vec4(stYX.sub(i.xy.mul(s)), stYX.sub(i.zw.add(0.5).mul(s))).toVar('f')\n const dotXY = dot(f.xy, f.xy)\n const dotZW = dot(f.zw, f.zw)\n return select(vec4(f.wz.add(float(0.5)), i.zw.add(o)), vec4(f.yx.add(float(0.5)), i.xy), dotXY.lessThan(dotZW))\n}).setLayout({\n name: 'hexTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n","import { Fn, Vec2, Float, vec2, float, length, atan2, floor, min, max, cos, sin } from '../../node'\nimport { TWO_PI } from '../math/const'\n\nconst kaleidoscopeCore = (coord: Vec2, segmentCount: Float, phase: Float) => {\n const uv = coord.sub(0.5).toVar('uv')\n const radius = length(uv).toVar('radius')\n const angle = atan2(uv.y, uv.x).toVar('angle')\n const segmentAngle = float(TWO_PI).div(segmentCount).toVar('segmentAngle')\n const adjustedAngle = angle.sub(segmentAngle.mul(floor(angle.div(segmentAngle)))).toVar('adjustedAngle')\n const finalAngle = min(adjustedAngle, segmentAngle.sub(adjustedAngle)).toVar('finalAngle')\n const kuv = vec2(cos(finalAngle.add(phase)), sin(finalAngle.add(phase)))\n .mul(radius)\n .add(0.5)\n .toVar('kuv')\n return max(min(kuv, kuv.mul(-1).add(2)), kuv.negate())\n}\n\nexport const kaleidoscope = Fn(([coord, segmentCount, phase]: [Vec2, Float, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, phase)\n}).setLayout({\n name: 'kaleidoscope',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n { name: 'phase', type: 'float' },\n ],\n})\n\nexport const kaleidoscopeDefault = Fn(([coord]: [Vec2]): Vec2 => {\n return kaleidoscopeCore(coord, float(8), float(0))\n}).setLayout({\n name: 'kaleidoscopeDefault',\n type: 'vec2',\n inputs: [{ name: 'coord', type: 'vec2' }],\n})\n\nexport const kaleidoscopeCount = Fn(([coord, segmentCount]: [Vec2, Float]): Vec2 => {\n return kaleidoscopeCore(coord, segmentCount, float(0))\n}).setLayout({\n name: 'kaleidoscopeCount',\n type: 'vec2',\n inputs: [\n { name: 'coord', type: 'vec2' },\n { name: 'segmentCount', type: 'float' },\n ],\n})\n","import { Fn, Float } from '../../node'\n\nexport const linearizeDepth = Fn(([depth, near, far]: [Float, Float, Float]): Float => {\n const normalizedDepth = depth.mul(2).sub(1).toVar('normalizedDepth')\n return near\n .mul(far)\n .mul(2)\n .div(far.add(near).sub(normalizedDepth.mul(far.sub(near))))\n}).setLayout({\n name: 'linearizeDepth',\n type: 'float',\n inputs: [\n { name: 'depth', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, vec4 } from '../../node'\nimport { sqTile } from './sqTile'\nimport { mirror } from '../math/mirror'\n\nexport const mirrorTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.xy.add(t.zw)), t.z, t.w)\n}).setLayout({\n name: 'mirrorTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorTile(sqTile(v))\n}).setLayout({\n name: 'mirrorTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const mirrorTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return mirrorTileVec2(v.mul(s))\n}).setLayout({\n name: 'mirrorTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n\nexport const mirrorXTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(mirror(t.x.add(t.z)), t.y, t.z, t.w)\n}).setLayout({\n name: 'mirrorXTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorXTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorXTile(sqTile(v))\n}).setLayout({\n name: 'mirrorXTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const mirrorYTile = Fn(([t]: [Vec4]): Vec4 => {\n return vec4(t.x, mirror(t.y.add(t.w)), t.z, t.w)\n}).setLayout({\n name: 'mirrorYTile',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const mirrorYTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return mirrorYTile(sqTile(v))\n}).setLayout({\n name: 'mirrorYTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n","import { Fn, Float, Mat4, mat4, vec4 } from '../../node'\n\nexport const orthographic = Fn(([l, r, b, t, n, f]: [Float, Float, Float, Float, Float, Float]): Mat4 => {\n const width = r.sub(l).toVar('width')\n const height = t.sub(b).toVar('height')\n const depth = f.sub(n).toVar('depth')\n\n return mat4(\n vec4(width.reciprocal().mul(2), 0, 0, 0),\n vec4(0, height.reciprocal().mul(2), 0, 0),\n vec4(0, 0, depth.reciprocal().mul(-2), 0),\n vec4(r.add(l).div(width).negate(), t.add(b).div(height).negate(), f.add(n).div(depth).negate(), 1)\n )\n}).setLayout({\n name: 'orthographic',\n type: 'mat4',\n inputs: [\n { name: 'l', type: 'float' },\n { name: 'r', type: 'float' },\n { name: 'b', type: 'float' },\n { name: 't', type: 'float' },\n { name: 'n', type: 'float' },\n { name: 'f', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, X, texture, float, vec2, vec3, int, Loop, If, Break } from '../../node'\n\nconst PARALLAXMAPPING_SCALE = float(0.01).constant('PARALLAXMAPPING_SCALE')\nconst PARALLAXMAPPING_NUMSEARCHES = float(10).constant('PARALLAXMAPPING_NUMSEARCHES')\n\nexport const parallaxMappingSimple = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const initialHeight = texture(tex, T).r.toVar('initialHeight')\n const texCoordOffset = PARALLAXMAPPING_SCALE.mul(V.xy).mul(initialHeight).toVar('texCoordOffset')\n return T.sub(texCoordOffset)\n}).setLayout({\n name: 'parallaxMappingSimple',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingSteep = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.mul(0.5).toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingSteep',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingRelief = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const currentLayerHeight = float(0).toVar('currentLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(currentLayerHeight), () => {\n Break()\n })\n currentLayerHeight.addAssign(layerHeight)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const deltaTexCoord = dtex.mul(0.5).toVar('deltaTexCoord')\n const deltaHeight = layerHeight.mul(0.5).toVar('deltaHeight')\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n\n Loop(int(5), ({ i }) => {\n deltaTexCoord.mulAssign(0.5)\n deltaHeight.mulAssign(0.5)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n\n If(heightFromTexture.greaterThan(currentLayerHeight), () => {\n currentTextureCoords.subAssign(deltaTexCoord)\n currentLayerHeight.addAssign(deltaHeight)\n }).Else(() => {\n currentTextureCoords.addAssign(deltaTexCoord)\n currentLayerHeight.subAssign(deltaHeight)\n })\n })\n\n return currentTextureCoords\n}).setLayout({\n name: 'parallaxMappingRelief',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMappingOcclusion = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n const minLayers = PARALLAXMAPPING_NUMSEARCHES.toVar('minLayers')\n const maxLayers = float(15).toVar('maxLayers')\n const numLayers = minLayers.mix(maxLayers, V.dot(vec3(0, 0, 1)).abs()).toVar('numLayers')\n const layerHeight = float(1).div(numLayers).toVar('layerHeight')\n const curLayerHeight = float(0).toVar('curLayerHeight')\n const dtex = PARALLAXMAPPING_SCALE.mul(V.xy).div(V.z).div(numLayers).toVar('dtex')\n const currentTextureCoords = T.toVar('currentTextureCoords')\n const heightFromTexture = texture(tex, currentTextureCoords).r.toVar('heightFromTexture')\n const prevTCoords = currentTextureCoords.toVar('prevTCoords')\n\n Loop(int(50), ({ i }) => {\n If(heightFromTexture.lessThanEqual(curLayerHeight), () => {\n Break()\n })\n curLayerHeight.addAssign(layerHeight)\n prevTCoords.assign(currentTextureCoords)\n currentTextureCoords.subAssign(dtex)\n heightFromTexture.assign(texture(tex, currentTextureCoords).r)\n })\n\n const nextH = heightFromTexture.sub(curLayerHeight).toVar('nextH')\n const prevH = texture(tex, prevTCoords).r.sub(curLayerHeight).add(layerHeight).toVar('prevH')\n const weight = nextH.div(nextH.sub(prevH)).toVar('weight')\n const finalTexCoords = prevTCoords\n .mul(weight)\n .add(currentTextureCoords.mul(float(1).sub(weight)))\n .toVar('finalTexCoords')\n\n return finalTexCoords\n}).setLayout({\n name: 'parallaxMappingOcclusion',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n\nexport const parallaxMapping = Fn(([tex, V, T]: [X, Vec3, Vec2]): Vec2 => {\n return parallaxMappingOcclusion(tex, V, T)\n}).setLayout({\n name: 'parallaxMapping',\n type: 'vec2',\n inputs: [\n { name: 'tex', type: 'sampler2D' },\n { name: 'V', type: 'vec3' },\n { name: 'T', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Mat4, mat4, tan, float } from '../../node'\n\nexport const perspective = Fn(([fov, aspect, near, far]: [Float, Float, Float, Float]): Mat4 => {\n const f = float(1)\n .div(tan(fov.div(2)))\n .toVar('f')\n const nf = float(1).div(near.sub(far)).toVar('nf')\n // prettier-ignore\n return mat4(\n f.div(aspect), 0, 0, 0,\n 0, f, 0, 0,\n 0, 0, far.add(near).mul(nf), -1,\n 0, 0, float(2).mul(far).mul(near).mul(nf), 0\n )\n}).setLayout({\n name: 'perspective',\n type: 'mat4',\n inputs: [\n { name: 'fov', type: 'float' },\n { name: 'aspect', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec3, Float, cos, sin, vec2, vec3 } from '../../node'\n\nexport const polar2cart = Fn(([polar]: [Vec2]): Vec2 => {\n return vec2(cos(polar.x), sin(polar.x)).mul(polar.y)\n}).setLayout({\n name: 'polar2cart',\n type: 'vec2',\n inputs: [{ name: 'polar', type: 'vec2' }],\n})\n\nexport const polar2cart3D = Fn(([r, phi, theta]: [Float, Float, Float]): Vec3 => {\n const x = r.mul(cos(theta)).mul(sin(phi)).toVar('x')\n const y = r.mul(sin(theta)).mul(sin(phi)).toVar('y')\n const z = r.mul(cos(phi)).toVar('z')\n return vec3(x, y, z)\n}).setLayout({\n name: 'polar2cart3D',\n type: 'vec3',\n inputs: [\n { name: 'r', type: 'float' },\n { name: 'phi', type: 'float' },\n { name: 'theta', type: 'float' },\n ],\n})\n","import { Fn, Vec2, mix, vec2, step } from '../../node'\n\nexport const ratio = Fn(([v, s]: [Vec2, Vec2]): Vec2 => {\n const wideAspect = vec2(v.x.mul(s.x.div(s.y)).sub(s.x.mul(0.5).sub(s.y.mul(0.5)).div(s.y)), v.y)\n const tallAspect = vec2(v.x, v.y.mul(s.y.div(s.x)).sub(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.x)))\n return mix(wideAspect, tallAspect, step(s.x, s.y))\n}).setLayout({\n name: 'ratio',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Vec2, Float, vec2, floor, fract } from '../../node'\n\nexport const sprite = Fn(([st, grid, index]: [Vec2, Vec2, Float]): Vec2 => {\n const adjustedIndex = index.add(grid.x).toVar('adjustedIndex')\n const f = vec2(1).div(grid).toVar('f')\n const cell = vec2(floor(adjustedIndex), grid.y.sub(floor(adjustedIndex.mul(f.x)))).toVar('cell')\n return fract(st.add(cell).mul(f))\n}).setLayout({\n name: 'sprite',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'grid', type: 'vec2' },\n { name: 'index', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Mat3, mat3, normalize, cross } from '../../node'\n\nexport const tbn = Fn(([t, b, n]: [Vec3, Vec3, Vec3]): Mat3 => {\n return mat3(t, b, n)\n}).setLayout({\n name: 'tbn',\n type: 'mat3',\n inputs: [\n { name: 't', type: 'vec3' },\n { name: 'b', type: 'vec3' },\n { name: 'n', type: 'vec3' },\n ],\n})\n\nexport const tbnFromNormal = Fn(([n, up]: [Vec3, Vec3]): Mat3 => {\n const t = normalize(cross(up, n)).toVar('t')\n const b = cross(n, t).toVar('b')\n return tbn(t, b, n)\n}).setLayout({\n name: 'tbnFromNormal',\n type: 'mat3',\n inputs: [\n { name: 'n', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n","import { Fn, Vec3, Float, vec3 } from '../../node'\nimport { lookAt, lookAtRoll } from './lookAt'\nimport { translateMat3 } from './translate'\n\nexport const lookAtView = Fn(([position, target, up]: [Vec3, Vec3, Vec3]) => {\n const m = lookAt(position, target, up).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtView',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'up', type: 'vec3' },\n ],\n})\n\nexport const lookAtViewRoll = Fn(([position, target, roll]: [Vec3, Vec3, Float]) => {\n const m = lookAtRoll(position, target, roll).toVar()\n return translateMat3(m, position)\n}).setLayout({\n name: 'lookAtViewRoll',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n { name: 'roll', type: 'float' },\n ],\n})\n\nexport const lookAtViewBasic = Fn(([position, target]: [Vec3, Vec3]) => {\n return lookAtView(position, target, vec3(0, 1, 0))\n}).setLayout({\n name: 'lookAtViewBasic',\n type: 'mat4',\n inputs: [\n { name: 'position', type: 'vec3' },\n { name: 'target', type: 'vec3' },\n ],\n})\n","import { Fn, Vec2, Float, vec2 } from '../../node'\nimport { rotate2d } from '../math/rotate2d'\n\nexport const rotate2DCenter = Fn(([v, r, c]: [Vec2, Float, Vec2]) => {\n return rotate2d(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotate2DCenter',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec2' },\n ],\n})\n\nexport const rotate2DBasic = Fn(([v, r]: [Vec2, Float]) => {\n return rotate2DCenter(v, r, vec2(0.5))\n}).setLayout({\n name: 'rotate2DBasic',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'r', type: 'float' },\n ],\n})\n\nexport const rotate2DAxis = Fn(([v, xAxis]: [Vec2, Vec2]) => {\n const negYAxis = vec2(xAxis.y.negate(), xAxis.x).toVar()\n return vec2(v.dot(negYAxis), v.dot(xAxis))\n}).setLayout({\n name: 'rotate2DAxis',\n type: 'vec2',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 'xAxis', type: 'vec2' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dX } from '../math/rotate4dX'\n\n// vec4 rotateX(in vec4 v, in float r, in vec4 c)\nexport const rotateXVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dX(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateXVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateX(in vec4 v, in float r)\nexport const rotateXVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dX(r).mul(v)\n}).setLayout({\n name: 'rotateXVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r, in vec3 c)\nexport const rotateXVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dX(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateXVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateX(in vec3 v, in float r)\nexport const rotateXVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dX(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateXVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dY } from '../math/rotate4dY'\n\n// vec4 rotateY(in vec4 v, in float r, in vec4 c)\nexport const rotateYVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dY(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateYVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateY(in vec4 v, in float r)\nexport const rotateYVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dY(r).mul(v)\n}).setLayout({\n name: 'rotateYVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r, in vec3 c)\nexport const rotateYVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dY(r)\n .mul(vec4(v.sub(c), 1))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateYVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateY(in vec3 v, in float r)\nexport const rotateYVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dY(r).mul(vec4(v, 1)).xyz\n}).setLayout({\n name: 'rotateYVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec4, Float, vec4 } from '../../node'\nimport { rotate4dZ } from '../math/rotate4dZ'\n\n// vec4 rotateZ(in vec4 v, in float r, in vec4 c)\nexport const rotateZVec4Center = Fn(([v, r, c]: [Vec4, Float, Vec4]): Vec4 => {\n return rotate4dZ(r).mul(v.sub(c)).add(c)\n}).setLayout({\n name: 'rotateZVec4Center',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec4' },\n ],\n})\n\n// vec4 rotateZ(in vec4 v, in float r)\nexport const rotateZVec4 = Fn(([v, r]: [Vec4, Float]): Vec4 => {\n return rotate4dZ(r).mul(v)\n}).setLayout({\n name: 'rotateZVec4',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec4' },\n { name: 'r', type: 'float' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r, in vec3 c)\nexport const rotateZVec3Center = Fn(([v, r, c]: [Vec3, Float, Vec3]): Vec3 => {\n return rotate4dZ(r)\n .mul(vec4(v.sub(c), 0))\n .xyz.add(c)\n}).setLayout({\n name: 'rotateZVec3Center',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n { name: 'c', type: 'vec3' },\n ],\n})\n\n// vec3 rotateZ(in vec3 v, in float r)\nexport const rotateZVec3 = Fn(([v, r]: [Vec3, Float]): Vec3 => {\n return rotate4dZ(r).mul(vec4(v, 0)).xyz\n}).setLayout({\n name: 'rotateZVec3',\n type: 'vec3',\n inputs: [\n { name: 'v', type: 'vec3' },\n { name: 'r', type: 'float' },\n ],\n})\n","import { Fn, Vec2, vec2 } from '../../node'\n\nexport const unratio = Fn(([st, s]: [Vec2, Vec2]): Vec2 => {\n return vec2(st.x, st.y.mul(s.x.div(s.y)).add(s.y.mul(0.5).sub(s.x.mul(0.5)).div(s.y)))\n}).setLayout({\n name: 'unratio',\n type: 'vec2',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n","import { Fn, Float, Vec2, Vec3 } from '../../node'\n\nfunction uncenter(x: Float): Float\nfunction uncenter(v: Vec2): Vec2\nfunction uncenter(v: Vec3): Vec3\nfunction uncenter(v: any): any {\n return v.mul(0.5).add(0.5)\n}\n\nexport const uncenterFloat = Fn(([x]: [Float]): Float => {\n return uncenter(x)\n}).setLayout({\n name: 'uncenterFloat',\n type: 'float',\n inputs: [{ name: 'x', type: 'float' }],\n})\n\nexport const uncenterVec2 = Fn(([v]: [Vec2]): Vec2 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec2',\n type: 'vec2',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const uncenterVec3 = Fn(([v]: [Vec3]): Vec3 => {\n return uncenter(v)\n}).setLayout({\n name: 'uncenterVec3',\n type: 'vec3',\n inputs: [{ name: 'v', type: 'vec3' }],\n})\n","import { Fn, Float } from '../../node'\n\nexport const viewZ2depth = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).mul(far).div(far.sub(near).mul(viewZ))\n}).setLayout({\n name: 'viewZ2depth',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n\nexport const viewZ2depthOrthographic = Fn(([viewZ, near, far]: [Float, Float, Float]): Float => {\n return viewZ.add(near).div(near.sub(far))\n}).setLayout({\n name: 'viewZ2depthOrthographic',\n type: 'float',\n inputs: [\n { name: 'viewZ', type: 'float' },\n { name: 'near', type: 'float' },\n { name: 'far', type: 'float' },\n ],\n})\n","import { Fn, Vec3, Vec2, vec2, atan2, acos } from '../../node'\nimport { PI, TWO_PI } from '../math/const'\n\nexport const xyz2equirect = Fn(([d]: [Vec3]): Vec2 => {\n return vec2(atan2(d.z, d.x).add(PI), acos(d.y.negate())).div(vec2(TWO_PI, PI))\n}).setLayout({\n name: 'xyz2equirect',\n type: 'vec2',\n inputs: [{ name: 'd', type: 'vec3' }],\n})\n","import { Fn, Vec2, Vec4, Float, mat2, vec2, vec4, floor, fract, dot } from '../../node'\n\nexport const triTile = Fn(([st]: [Vec2]): Vec4 => {\n const transformed = st.mul(mat2(vec2(1, -1 / 1.7320508), vec2(0, 2 / 1.7320508))).toVar()\n const f = vec4(transformed, transformed.negate()).toVar()\n const i = floor(f).toVar()\n const fFractional = fract(f).toVar()\n\n const dotXY = dot(fFractional.xy, fFractional.xy)\n const dotZW = dot(fFractional.zw, fFractional.zw)\n\n const condition = dotXY.lessThan(dotZW)\n const trueValue = vec4(fFractional.xy, vec2(2, 1).mul(i.xy))\n const falseValue = vec4(fFractional.zw, vec2(2, 1).mul(i.zw).add(1).negate())\n\n return falseValue.select(trueValue, condition)\n}).setLayout({\n name: 'triTile',\n type: 'vec4',\n inputs: [{ name: 'st', type: 'vec2' }],\n})\n\nexport const triTileScaled = Fn(([st, scale]: [Vec2, Float]): Vec4 => {\n return triTile(st.mul(scale))\n}).setLayout({\n name: 'triTileScaled',\n type: 'vec4',\n inputs: [\n { name: 'st', type: 'vec2' },\n { name: 'scale', type: 'float' },\n ],\n})\n","import { Fn, Vec2, Vec4, Float, mod, abs, vec4 } from '../../node'\nimport { TWO_PI } from '../math'\nimport { rotate2DBasic } from './rotate'\nimport { sqTile } from './sqTile'\n\nexport const windmillTile = Fn(([t, turn]: [Vec4, Float]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(turn)), t.zw)\n}).setLayout({\n name: 'windmillTile',\n type: 'vec4',\n inputs: [\n { name: 't', type: 'vec4' },\n { name: 'turn', type: 'float' },\n ],\n})\n\nexport const windmillTileDefault = Fn(([t]: [Vec4]): Vec4 => {\n const a = abs(mod(t.z, 2).sub(mod(t.w, 2)))\n .add(mod(t.w, 2).mul(2))\n .mul(0.25)\n return vec4(rotate2DBasic(t.xy, a.mul(TWO_PI)), t.zw)\n}).setLayout({\n name: 'windmillTileDefault',\n type: 'vec4',\n inputs: [{ name: 't', type: 'vec4' }],\n})\n\nexport const windmillTileVec2 = Fn(([v]: [Vec2]): Vec4 => {\n return windmillTileDefault(sqTile(v))\n}).setLayout({\n name: 'windmillTileVec2',\n type: 'vec4',\n inputs: [{ name: 'v', type: 'vec2' }],\n})\n\nexport const windmillTileFloat = Fn(([v, s]: [Vec2, Float]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileFloat',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'float' },\n ],\n})\n\nexport const windmillTileVec2Scale = Fn(([v, s]: [Vec2, Vec2]): Vec4 => {\n return windmillTileVec2(v.mul(s))\n}).setLayout({\n name: 'windmillTileVec2Scale',\n type: 'vec4',\n inputs: [\n { name: 'v', type: 'vec2' },\n { name: 's', type: 'vec2' },\n ],\n})\n"],"mappings":"AAAA,OAAS,MAAAA,GAAW,OAAAC,GAAK,OAAAC,OAAW,kBCApC,OAAS,SAAAC,OAAa,eAGf,IAAMC,GAAYD,GAAM,YAAa,EAC/BE,GAASF,GAAM,YAAa,EAC5BG,GAAUH,GAAM,kBAAiC,EACjDI,EAAKJ,GAAM,iBAAiC,EAC5CK,GAASL,GAAM,iBAAgC,EAC/CM,GAAMN,GAAM,iBAAgC,EAC5CO,GAASP,GAAM,iBAAkC,EACjDQ,GAAeR,GAAM,iBAAkC,EACvDS,GAAeT,GAAM,aAAa,EAClCU,GAAMV,GAAM,iBAA6B,EACzCW,GAAUX,GAAM,IAAO,EACvBY,GAAeZ,GAAM,YAAY,EACjCa,GAAyBb,GAAM,YAAa,EAC5Cc,GAAed,GAAM,UAAU,EAC/Be,GAAUX,EAAG,IAAI,GAAG,EACpBY,GAAUhB,GAAM,GAAG,EAAE,IAAII,CAAE,EDfjC,IAAMa,GAASC,GAAG,CAAC,CAAC,CAAC,IACbC,GAAI,EAAG,CAAC,EAAE,IAAI,EAAE,IAAIC,GAAI,EAAE,IAAIC,CAAE,CAAC,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EETD,OAAS,MAAAC,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAAsB,CAC7C,IAAMC,EAAI,EAAE,IAAI,CAAC,EAAE,OAAOC,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAG,EAAE,SAAS,EAAG,CAAC,EAClEC,EAAIC,GAAOH,CAAC,EAClB,OAAOE,EAAE,IAAI,CAAC,EAAE,OAAOD,GAAM,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAG,EAAG,EAAE,SAAS,EAAG,CAAC,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECXD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAUC,GAAG,CAAC,CAAC,CAAC,IACdC,GAAM,CAAC,EAAE,IAAIC,GAAOD,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECTD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBCAjC,OAAS,MAAAC,GAAW,SAAAC,OAAa,kBAE1B,IAAMC,GAAYF,GAAG,CAAC,CAAC,CAAC,IAAsB,CAC7C,IAAMG,EAAIF,GAAM,kBAAM,EAChBG,EAAIH,GAAM,EAAI,EAAE,EAChBI,EAAIJ,GAAM,EAAI,EAAE,EAChBK,EAAKL,GAAM,KAAS,GAAK,EACzBM,EAAKN,GAAM,MAAU,IAAM,EAC3BO,EAAKP,GAAM,MAAU,IAAM,EAC3BQ,EAAK,EAAE,IAAI,CAAC,EAClB,OAAOA,EAAG,IAAI,MAAM,EAAE,OACdA,EACS,IAAI,KAAK,EACT,IAAI,EAAE,IAAI,GAAG,CAAC,EACd,IAAI,GAAG,EACP,OACOA,EACS,IAAIH,CAAE,EACN,IAAI,EAAE,IAAIC,CAAE,CAAC,EACb,IAAIC,CAAE,EACN,OAAOC,EAAG,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,EAAG,EAAE,SAASJ,CAAC,CAAC,EACxE,EAAE,SAASD,CAAC,CACpB,EACR,EAAE,SAASD,CAAC,CACpB,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ED1BM,IAAMO,GAAWC,GAAG,CAAC,CAAC,CAAC,IACfC,GAAM,CAAC,EAAE,IAAIC,GAAUD,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EETD,OAAS,MAAAE,GAAW,SAAAC,OAAa,kBAG1B,IAAMC,GAAcC,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAM,CAAC,EACL,IAAIC,GAAUD,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,EACL,OAAOC,GAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAG,EAAG,EAAE,SAAS,EAAG,CAAC,CAClF,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECZD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IACjB,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAClD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAgBD,GAAG,CAAC,CAAC,CAAC,IAAc,CACzC,IAAME,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAC1DC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACtE,OAAQD,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,GAAO,SAAAC,OAAa,kBAEtB,IAAMC,GAAcF,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAUD,GAAG,CAAC,CAAC,CAAC,IACd,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IAAc,CACtC,IAAME,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7BC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAChD,OAAQD,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAWD,GAAG,CAAC,CAAC,CAAC,IAAc,CACpC,IAAME,EAAI,EAAE,IAAI,CAAC,EACjB,OAAOA,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAChBC,GAAI,EAAE,IAAI,EAAE,EAAE,IAAIC,EAAO,CAAC,EAAE,IAAIC,GAAIC,GAAM,CAAC,EAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECTD,OAAS,MAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAeC,GAAG,CAAC,CAAC,CAAC,IAAsB,CAChD,IAAMC,EAAK,EAAE,IAAI,CAAC,EACZC,EAAWD,EAAG,IAAI,CAAC,EACzB,OAAOE,GAAIC,GAAQ,IAAI,EAAE,EAAE,IAAIH,CAAE,CAAC,EACzB,IAAII,GAAIC,GAAM,CAAC,EAAGJ,EAAS,IAAI,EAAE,CAAC,CAAC,EACnC,IAAI,CAAC,EACL,OACOC,GAAIC,GAAQ,IAAI,GAAG,EAAE,IAAIF,EAAS,IAAI,CAAC,CAAC,CAAC,EAChC,IAAIG,GAAIC,GAAM,CAAC,EAAGJ,EAAS,IAAI,GAAG,CAAC,CAAC,EACpC,IAAI,CAAC,EACL,IAAI,CAAC,EACd,EAAE,SAAS,EAAG,CACtB,CAChB,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECpBD,OAAS,MAAAK,GAAW,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAGpC,IAAMC,GAAaC,GAAG,CAAC,CAAC,CAAC,IACjBC,GAAIC,GAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIC,EAAO,CAAC,EACvC,IAAIC,GAAIF,GAAM,CAAC,EAAGA,GAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECXD,OAAS,MAAAG,OAAa,kBAEf,IAAMC,GAAgBD,GAAG,CAAC,CAAC,CAAC,IACnB,EAAU,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG,EAAE,MAAM,CAAC,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAmBD,GAAG,CAAC,CAAC,CAAC,IAAc,CAC5C,IAAME,EAAc,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EACtCC,EAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EACtCC,EAAO,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAC9CC,EAAUF,EAAc,OAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,EAC1D,OAAQ,EAAU,OAAOC,EAAQH,CAAW,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECZD,OAAS,MAAAI,OAAa,kBAEf,IAAMC,GAAiBD,GAAG,CAAC,CAAC,CAAC,IACpB,EAAU,OAAO,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAG,EAAE,MAAM,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAWD,GAAG,CAAC,CAAC,CAAC,IACf,CACd,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAcD,GAAG,CAAC,CAAC,CAAC,IAClB,CACd,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,CACd,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAcD,GAAG,CAAC,CAAC,CAAC,IAClB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAiBF,GAAG,CAAC,CAAC,CAAC,IAAc,CAC1C,IAAMG,EAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACxB,OAAOF,GAAOE,EAAGA,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,SAAS,EAAG,CAAC,CACzE,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAeD,GAAG,CAAC,CAAC,CAAC,IACnB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CACrC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAeF,GAAG,CAAC,CAAC,CAAC,IAAc,CACxC,IAAMG,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EACtBC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAC1C,OAAOH,GAAOE,EAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IAAc,CACtC,IAAME,EAAK,EAAE,IAAI,CAAC,EAClB,OAAOA,EAAG,IAAIA,CAAE,EAAE,IAAIA,CAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CACzD,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAYD,GAAG,CAAC,CAAC,CAAC,IAChB,EAAE,IAAI,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,UAAAC,OAAc,kBAEvB,IAAMC,GAAeF,GAAG,CAAC,CAAC,CAAC,IAAc,CACxC,IAAMG,EAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EACvBC,EAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,EACnD,OAAOH,GAAOE,EAAOC,EAAM,EAAE,SAAS,EAAG,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECVD,OAAS,MAAAC,OAAa,kBAEf,IAAMC,GAAaD,GAAG,CAAC,CAAC,CAAC,IACjB,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAE,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAASC,GAAG,CAAC,CAAC,CAAC,IACbC,GAAI,EAAE,IAAI,CAAC,EAAE,IAAIC,EAAc,CAAC,EAAE,IAAI,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAChBC,GAAIC,EAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAC5C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAO,OAAAC,OAAW,kBAGpB,IAAMC,GAAUC,GAAG,CAAC,CAAC,CAAC,IACdC,GAAI,EAAE,IAAIC,EAAc,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAiB,OAAAC,GAAK,QAAAC,OAAY,kBAEpC,IAAMC,GAAWH,GAAG,CAAC,CAACI,EAAMC,CAAK,IACzBJ,GAAIG,EAAK,IAAIC,CAAK,EAAG,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAeN,GAAG,CAAC,CAACI,EAAMC,CAAK,IAC7BJ,GAAIG,EAAK,IAAIC,CAAK,EAAGH,GAAK,CAAC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYK,GAAsBP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IAC7CF,GAAaF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACrF,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,OAAuB,kBAEzB,IAAMC,GAAeD,GAAG,CAAC,CAACE,EAAMC,CAAK,IAC7BD,EAAK,IAAIC,CAAK,EAAE,IAAI,EAAG,CACrC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAmBJ,GAAG,CAAC,CAACE,EAAMC,CAAK,IACjCD,EAAK,IAAIC,CAAK,EAAE,IAAI,EAAG,CACrC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA0BL,GAAG,CAAC,CAACE,EAAMC,EAAOG,CAAO,IACjDF,GAAiBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBCAtC,OAAS,MAAAC,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAE1D,IAAMC,GAAcJ,GAAM,OAAO,EAEpBK,GAAUN,GAAG,CAAC,CAACO,CAAC,IAAoB,CACzC,IAAMC,EAAIL,GAAK,EAAGF,GAAM,EAAE,EAAE,IAAI,CAAC,EAAGA,GAAM,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,EAAE,MAAM,EACzDQ,EAASN,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACxCE,EAAUP,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIP,GAAOK,EAAQC,EAASH,EAAE,EAAE,SAASA,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDK,EAAST,GAAKQ,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGJ,EAAE,CAAC,EAAE,MAAM,EACxCM,EAAUV,GAAKI,EAAE,EAAGI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIV,GAAOQ,EAAQC,EAASN,EAAE,EAAE,SAASI,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDI,EAAID,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,EAChCE,EAAIF,EAAE,EACH,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIb,GAAM,CAAC,EAAE,IAAIc,CAAC,EAAE,IAAIV,EAAW,CAAC,CAAC,EACtD,IAAI,EACJ,MAAM,EACTY,EAAIF,EAAE,IAAID,EAAE,EAAE,IAAIT,EAAW,CAAC,EAAE,MAAM,EACtCa,EAAIJ,EAAE,EAAE,MAAM,EAEpB,OAAOZ,GAAKc,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAcnB,GAAG,CAAC,CAACO,CAAC,IAClBJ,GAAKG,GAAQC,EAAE,GAAG,EAAGA,EAAE,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECnCD,OAAS,MAAAa,GAAgB,QAAAC,OAAY,kBCArC,OAAS,MAAAC,GAAiB,SAAAC,GAAO,QAAAC,OAAY,kBAEtC,IAAMC,GAAUH,GAAG,CAAC,CAACI,CAAG,IAAqB,CAC5C,IAAMC,EAAID,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EACzCE,EAAIL,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAChDG,EAAIN,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EACtD,OAAOF,GAAKG,EAAGC,EAAGC,CAAC,EAAE,SAAS,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,OAAQ,CAAC,CAC/C,CAAC,EDRM,IAAMC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQD,EAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,CAC/D,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYE,GAAcH,GAAG,CAAC,CAACC,CAAG,IACpBG,GAAKL,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EFbM,IAAMI,GAAaC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAA0B,CAC5D,IAAMC,EAAUC,GAAQH,CAAI,EAAE,MAAM,SAAS,EACvCI,EAAWD,GAAQF,CAAK,EAAE,MAAM,UAAU,EAChD,OAAOI,GAAQC,GAAKF,EAAS,EAAGA,EAAS,EAAGF,EAAQ,CAAC,CAAC,CAC9D,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYK,GAAoBR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IAC3CV,GAAWE,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CACnF,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EI3BD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,UAAAC,OAAc,kBAE5C,IAAMC,GAAiBJ,GAAG,CAAC,CAACK,EAAMC,CAAK,IAC/BH,GAAOG,EAAOJ,GAAIG,EAAK,IAAIC,EAAM,SAAS,CAAC,EAAE,SAAS,EAAG,CAAC,EAAGA,EAAM,MAAM,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAqBP,GAAG,CAAC,CAACK,EAAMC,CAAK,IACnCL,GAAKG,GAAeC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAeC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAeC,EAAK,EAAGC,EAAM,CAAC,CAAC,CACpH,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA4BR,GAAG,CAAC,CAACK,EAAMC,EAAOG,CAAO,IACnDF,GAAmBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC3F,EAAE,UAAU,CACL,KAAM,4BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,UAAAC,OAAc,kBAE5C,IAAMC,GAAkBJ,GAAG,CAAC,CAACK,EAAMC,CAAK,IAChCH,GAAOG,EAAOJ,GAAIG,EAAK,IAAIC,EAAM,SAAS,CAAC,EAAG,CAAC,EAAGA,EAAM,MAAM,CAAC,CAAC,CAC9E,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAsBP,GAAG,CAAC,CAACK,EAAMC,CAAK,IACpCL,GACCG,GAAgBC,EAAK,EAAGC,EAAM,CAAC,EAC/BF,GAAgBC,EAAK,EAAGC,EAAM,CAAC,EAC/BF,GAAgBC,EAAK,EAAGC,EAAM,CAAC,CACvC,CACP,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA6BR,GAAG,CAAC,CAACK,EAAMC,EAAOG,CAAO,IACpDF,GAAoBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECtCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,OAAW,kBAEpC,IAAMC,GAAcH,GAAG,CAAC,CAACI,EAAMC,CAAK,IAC5BH,GAAIG,EAAOD,CAAI,CAC7B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYE,GAAkBN,GAAG,CAAC,CAACI,EAAMC,CAAK,IAChCJ,GAAKE,GAAYC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAYC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAYC,EAAK,EAAGC,EAAM,CAAC,CAAC,CAC3G,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAAyBP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IAChDF,GAAgBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACxF,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,OAAAC,OAAW,kBAE9B,IAAMC,GAAkBF,GAAG,CAAC,CAACG,EAAMC,CAAK,IAChCH,GAAIE,EAAK,IAAIC,CAAK,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAsBL,GAAG,CAAC,CAACG,EAAMC,CAAK,IACpCH,GAAIE,EAAK,IAAIC,CAAK,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA6BN,GAAG,CAAC,CAACG,EAAMC,EAAOG,CAAO,IACpDF,GAAoBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,OAAuB,kBAEzB,IAAMC,GAAiBD,GAAG,CAAC,CAACE,EAAMC,CAAK,IAC/BD,EAAK,IAAIC,CAAK,EAAE,IAAID,EAAK,IAAIC,CAAK,EAAE,IAAI,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAqBJ,GAAG,CAAC,CAACE,EAAMC,CAAK,IACnCD,EAAK,IAAIC,CAAK,EAAE,IAAID,EAAK,IAAIC,CAAK,EAAE,IAAI,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA4BL,GAAG,CAAC,CAACE,EAAMC,EAAOG,CAAO,IACnDF,GAAmBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC3F,EAAE,UAAU,CACL,KAAM,4BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,OAAuB,kBCAhC,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,UAAAC,OAAc,kBAE5C,IAAMC,GAAeJ,GAAG,CAAC,CAACK,EAAMC,CAAK,IAC7BH,GAAOG,EAAOJ,GAAIG,EAAK,IAAIA,CAAI,EAAE,IAAIC,EAAM,SAAS,CAAC,EAAG,CAAC,EAAGA,EAAM,MAAM,CAAC,CAAC,CACxF,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAmBP,GAAG,CAAC,CAACK,EAAMC,CAAK,IACjCL,GAAKG,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,CAAC,CAC9G,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA0BR,GAAG,CAAC,CAACK,EAAMC,EAAOG,CAAO,IACjDF,GAAiBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ED/BM,IAAMC,GAAYC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAC1BC,GAAaD,EAAOD,CAAI,CACtC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYG,GAAgBJ,GAAG,CAAC,CAACC,EAAMC,CAAK,IAC9BG,GAAiBH,EAAOD,CAAI,CAC1C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYK,GAAuBN,GAAG,CAAC,CAACC,EAAMC,EAAOK,CAAO,IAC9CH,GAAcH,EAAMC,CAAK,EAAE,IAAIK,CAAO,EAAE,IAAIN,EAAK,IAAIM,EAAQ,SAAS,CAAC,CAAC,CACtF,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EEnCD,OAAS,MAAAC,OAAuB,kBCAhC,OAAS,MAAAC,GAAiB,QAAAC,GAAM,MAAAC,OAAU,kBAEnC,IAAMC,GAAeH,GAAG,CAAC,CAACI,EAAMC,CAAK,KACpCH,GAAGE,EAAK,SAAS,EAAG,EAAG,IACRA,EAAK,IAAIC,CAAK,EAAE,IAAI,CAAC,CACnC,EACMD,EAAK,SAAS,EAAE,IAAIC,EAAM,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EACpE,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAmBN,GAAG,CAAC,CAACI,EAAMC,CAAK,IACjCJ,GAAKE,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,CAAC,CAC9G,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA0BP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IACjDF,GAAiBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EDlCM,IAAMC,GAAiBC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAC/BC,GAAaD,EAAOD,CAAI,CACtC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYG,GAAqBJ,GAAG,CAAC,CAACC,EAAMC,CAAK,IACnCG,GAAiBH,EAAOD,CAAI,CAC1C,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYK,GAA4BN,GAAG,CAAC,CAACC,EAAMC,EAAOK,CAAO,IACnDH,GAAmBH,EAAMC,CAAK,EAAE,IAAIK,CAAO,EAAE,IAAIN,EAAK,IAAIM,EAAQ,SAAS,CAAC,CAAC,CAC3F,EAAE,UAAU,CACL,KAAM,4BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EEnCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,MAAAC,GAAI,SAAAC,OAAa,kBCAjD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,MAAAC,OAAU,kBAInC,IAAMC,GAAkBC,GAAG,CAAC,CAACC,EAAMC,CAAK,KACvCC,GAAGD,EAAM,SAAS,EAAG,EAAG,IACTE,GAAeH,EAAMC,EAAM,IAAI,CAAC,CAAC,CAC/C,EACMG,GAAgBJ,EAAMC,EAAM,IAAI,EAAG,EAAE,IAAI,CAAC,CAAC,EACzD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYI,GAAsBN,GAAG,CAAC,CAACC,EAAMC,CAAK,IACpCK,GACCR,GAAgBE,EAAK,EAAGC,EAAM,CAAC,EAC/BH,GAAgBE,EAAK,EAAGC,EAAM,CAAC,EAC/BH,GAAgBE,EAAK,EAAGC,EAAM,CAAC,CACvC,CACP,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYM,GAA6BR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IACpDH,GAAoBL,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EDxCM,IAAMC,GAAeC,GAAG,CAAC,CAACC,EAAMC,CAAK,KACpCC,GAAGC,GAAgBH,EAAMC,CAAK,EAAE,SAAS,EAAG,EAAG,IAChCG,GAAM,CAAC,CACrB,EACMA,GAAM,CAAC,EACrB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAmBN,GAAG,CAAC,CAACC,EAAMC,CAAK,IACjCK,GAAKR,GAAaE,EAAK,EAAGC,EAAM,CAAC,EAAGH,GAAaE,EAAK,EAAGC,EAAM,CAAC,EAAGH,GAAaE,EAAK,EAAGC,EAAM,CAAC,CAAC,CAC9G,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYM,GAA0BR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IACjDH,GAAiBL,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EEtCD,OAAS,MAAAC,GAAiB,QAAAC,OAAmB,kBAItC,IAAMC,GAAWC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAA0B,CAC1D,IAAMC,EAAUC,GAAQH,CAAI,EACtBI,EAAWD,GAAQF,CAAK,EACxBI,EAASC,GAAKF,EAAS,EAAGF,EAAQ,EAAGA,EAAQ,CAAC,EACpD,OAAOK,GAAQF,CAAM,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYG,GAAsBT,GAAG,CAAC,CAACC,EAAMC,EAAOQ,CAAO,IAC7CX,GAASE,EAAMC,CAAK,EAAE,IAAIQ,CAAO,EAAE,IAAIT,EAAK,IAAIS,EAAQ,SAAS,CAAC,CAAC,CACjF,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EC5BD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,OAAW,kBAEpC,IAAMC,GAAeH,GAAG,CAAC,CAACI,EAAMC,CAAK,IAC7BH,GAAIG,EAAOD,CAAI,CAC7B,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYE,GAAmBN,GAAG,CAAC,CAACI,EAAMC,CAAK,IACjCJ,GAAKE,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,EAAGF,GAAaC,EAAK,EAAGC,EAAM,CAAC,CAAC,CAC9G,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA0BP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IACjDF,GAAiBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,OAAW,kBAEpC,IAAMC,GAAkBH,GAAG,CAAC,CAACI,EAAMC,CAAK,IAChCH,GAAIE,EAAK,IAAIC,CAAK,EAAE,IAAI,CAAC,EAAG,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAsBN,GAAG,CAAC,CAACI,EAAMC,CAAK,IACpCJ,GACCE,GAAgBC,EAAK,EAAGC,EAAM,CAAC,EAC/BF,GAAgBC,EAAK,EAAGC,EAAM,CAAC,EAC/BF,GAAgBC,EAAK,EAAGC,EAAM,CAAC,CACvC,CACP,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA6BP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IACpDF,GAAoBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECtCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAI/B,IAAMC,GAAkBC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAA0B,CACjE,IAAMC,EAAUC,GAAQH,CAAI,EACtBI,EAAWD,GAAQF,CAAK,EAC9B,OAAOI,GAAQC,GAAKJ,EAAQ,EAAGA,EAAQ,EAAGE,EAAS,CAAC,CAAC,CAC7D,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYG,GAAyBR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IAChDV,GAAgBE,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CACxF,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EC3BD,OAAS,MAAAC,OAAuB,kBAEzB,IAAMC,GAAgBD,GAAG,CAAC,CAACE,EAAMC,CAAK,IAC9BD,EAAK,IAAIC,CAAK,CAC5B,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAoBJ,GAAG,CAAC,CAACE,EAAMC,CAAK,IAClCD,EAAK,IAAIC,CAAK,CAC5B,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA2BL,GAAG,CAAC,CAACE,EAAMC,EAAOG,CAAO,IAClDF,GAAkBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC1F,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,OAAW,kBAEpC,IAAMC,GAAmBH,GAAG,CAAC,CAACI,EAAMC,CAAK,IACjCH,GAAIE,EAAK,IAAIC,CAAK,EAAG,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAuBN,GAAG,CAAC,CAACI,EAAMC,CAAK,IACrCJ,GACCE,GAAiBC,EAAK,EAAGC,EAAM,CAAC,EAChCF,GAAiBC,EAAK,EAAGC,EAAM,CAAC,EAChCF,GAAiBC,EAAK,EAAGC,EAAM,CAAC,CACxC,CACP,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA8BP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IACrDF,GAAqBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC7F,EAAE,UAAU,CACL,KAAM,8BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECtCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,MAAAC,OAAU,kBAInC,IAAMC,GAAmBC,GAAG,CAAC,CAACC,EAAMC,CAAK,KACxCC,GAAGD,EAAM,SAAS,EAAG,EAAG,IACTE,GAAgBH,EAAMC,EAAM,IAAI,CAAC,CAAC,CAChD,EACMG,GAAiBJ,EAAMC,EAAM,IAAI,EAAG,EAAE,IAAI,CAAC,CAAC,EAC1D,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYI,GAAuBN,GAAG,CAAC,CAACC,EAAMC,CAAK,IACrCK,GACCR,GAAiBE,EAAK,EAAGC,EAAM,CAAC,EAChCH,GAAiBE,EAAK,EAAGC,EAAM,CAAC,EAChCH,GAAiBE,EAAK,EAAGC,EAAM,CAAC,CACxC,CACP,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYM,GAA8BR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IACrDH,GAAqBL,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CAC7F,EAAE,UAAU,CACL,KAAM,8BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EC3CD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,OAAa,kBAE3C,IAAMC,GAAgBJ,GAAG,CAAC,CAACK,EAAMC,CAAK,IAC9BH,GAAM,CAAC,EAAE,IAAID,GAAIC,GAAM,CAAC,EAAE,IAAIE,CAAI,EAAE,IAAIC,CAAK,CAAC,CAAC,CAC7D,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAoBP,GAAG,CAAC,CAACK,EAAMC,CAAK,IAClCL,GAAK,CAAC,EAAE,IAAIC,GAAID,GAAK,CAAC,EAAE,IAAII,CAAI,EAAE,IAAIC,CAAK,CAAC,CAAC,CAC3D,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAA2BR,GAAG,CAAC,CAACK,EAAMC,EAAOG,CAAO,IAClDF,GAAkBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CAC1F,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,kBAEhD,IAAMC,GAAeL,GAAG,CAAC,CAACM,EAAMC,CAAK,IAC7BL,GAAII,EAAMC,CAAK,EAAE,IAAIJ,GAAIG,EAAMC,CAAK,CAAC,EAAE,IAAIH,GAAM,CAAC,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYI,GAAmBR,GAAG,CAAC,CAACM,EAAMC,CAAK,IACjCL,GAAII,EAAMC,CAAK,EAAE,IAAIJ,GAAIG,EAAMC,CAAK,CAAC,EAAE,IAAIN,GAAK,CAAC,CAAC,CAChE,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYQ,GAA0BT,GAAG,CAAC,CAACM,EAAMC,EAAOG,CAAO,IACjDF,GAAiBF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACzF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,MAAAC,OAAU,kBAInC,IAAMC,GAAgBC,GAAG,CAAC,CAACC,EAAMC,CAAK,KACrCC,GAAGD,EAAM,SAAS,EAAG,EAAG,IACTE,GAAYH,EAAMC,EAAM,IAAI,CAAC,CAAC,CAC5C,EACMG,GAAaJ,EAAMC,EAAM,IAAI,EAAG,EAAE,IAAI,CAAC,CAAC,EACtD,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYI,GAAoBN,GAAG,CAAC,CAACC,EAAMC,CAAK,IAClCK,GAAKR,GAAcE,EAAK,EAAGC,EAAM,CAAC,EAAGH,GAAcE,EAAK,EAAGC,EAAM,CAAC,EAAGH,GAAcE,EAAK,EAAGC,EAAM,CAAC,CAAC,CACjH,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYM,GAA2BR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IAClDH,GAAkBL,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CAC1F,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAI/B,IAAMC,GAAkBC,GAAG,CAAC,CAACC,EAAMC,CAAK,IAA0B,CACjE,IAAMC,EAAUC,GAAQH,CAAI,EACtBI,EAAWD,GAAQF,CAAK,EAC9B,OAAOI,GAAQC,GAAKJ,EAAQ,EAAGE,EAAS,EAAGF,EAAQ,CAAC,CAAC,CAC7D,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYK,GAAyBR,GAAG,CAAC,CAACC,EAAMC,EAAOO,CAAO,IAChDV,GAAgBE,EAAMC,CAAK,EAAE,IAAIO,CAAO,EAAE,IAAIR,EAAK,IAAIQ,EAAQ,SAAS,CAAC,CAAC,CACxF,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EC3BD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,SAAAC,OAAa,kBAEtC,IAAMC,GAAmBH,GAAG,CAAC,CAACI,EAAMC,CAAK,IACjCH,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIE,CAAI,EAAE,IAAIF,GAAM,CAAC,EAAE,IAAIG,CAAK,CAAC,CAAC,CACtE,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACI,EAAMC,CAAK,IAC5BJ,GACCE,GAAiBC,EAAK,EAAGC,EAAM,CAAC,EAChCF,GAAiBC,EAAK,EAAGC,EAAM,CAAC,EAChCF,GAAiBC,EAAK,EAAGC,EAAM,CAAC,CACxC,CACP,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYE,GAAqBP,GAAG,CAAC,CAACI,EAAMC,EAAOG,CAAO,IAC5CF,GAAYF,EAAMC,CAAK,EAAE,IAAIG,CAAO,EAAE,IAAIJ,EAAK,IAAII,EAAQ,SAAS,CAAC,CAAC,CACpF,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECtCD,OAAS,MAAAC,GAAuB,MAAAC,GAAI,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,kBAE5D,IAAMC,GAAsBL,GAAG,CAAC,CAACM,EAAMC,CAAK,KACpCN,GAAGM,EAAM,SAAS,EAAG,EAAG,IACTD,EACE,IAAI,CAAC,EACL,IAAIC,CAAK,EACT,IAAID,EAAK,IAAIA,CAAI,EAAE,IAAIC,EAAM,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAC/D,EACML,GAAKI,CAAI,EAAE,IAAIC,EAAM,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAID,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAM,SAAS,CAAC,CAAC,EACvF,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAiBH,GAEjBI,GAAqBT,GAAG,CAAC,CAACM,EAAMC,CAAK,IACnCJ,GACCE,GAAoBC,EAAK,EAAGC,EAAM,CAAC,EACnCF,GAAoBC,EAAK,EAAGC,EAAM,CAAC,EACnCF,GAAoBC,EAAK,EAAGC,EAAM,CAAC,CAC3C,CACP,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYG,GAAqBV,GAAG,CAAC,CAACM,EAAMC,CAAK,IACnCH,GACCC,GAAoBC,EAAK,EAAGC,EAAM,CAAC,EACnCF,GAAoBC,EAAK,EAAGC,EAAM,CAAC,EACnCF,GAAoBC,EAAK,EAAGC,EAAM,CAAC,EACnCF,GAAoBC,EAAK,EAAGC,EAAM,CAAC,CAC3C,CACP,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYI,GAA4BX,GAAG,CAAC,CAACM,EAAMC,EAAOK,CAAO,IACnDH,GAAmBH,EAAMC,CAAK,EAAE,IAAIK,CAAO,EAAE,IAAIN,EAAK,IAAIM,EAAQ,SAAS,CAAC,CAAC,CAC3F,EAAE,UAAU,CACL,KAAM,4BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,EC9DD,OAAS,MAAAC,GAAiB,OAAAC,GAAK,QAAAC,OAAY,kBAE3C,IAAMC,GAAqBH,GAAG,CAAC,CAACI,EAAMC,CAAK,IAC5BJ,GAAIG,EAAK,IAAIC,CAAK,EAAE,IAAI,CAAC,EAAG,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAgBH,GAEhBI,GAAoBP,GAAG,CAAC,CAACI,EAAMC,CAAK,IAClCJ,GAAIG,EAAK,IAAIC,CAAK,EAAE,IAAIH,GAAK,CAAC,CAAC,EAAGA,GAAK,CAAC,CAAC,CACvD,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EAEYM,GAA2BR,GAAG,CAAC,CAACI,EAAMC,EAAOI,CAAO,IAClDF,GAAkBH,EAAMC,CAAK,EAAE,IAAII,CAAO,EAAE,IAAIL,EAAK,IAAIK,EAAQ,SAAS,CAAC,CAAC,CAC1F,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,UAAW,KAAM,OAAQ,CACzC,CACR,CAAC,ECpCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAAoBF,GAAG,CAAC,CAACG,EAAKC,CAAG,IACxBD,EAAI,IAAIC,EAAI,SAAS,CAAC,EAAE,IAAIA,EAAI,IAAID,EAAI,SAAS,CAAC,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAeH,GAEfI,GAAmBN,GAAG,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IAC5DH,EAAS,IAAIG,EAAS,SAAS,CAAC,EAAE,IAAIF,EAAS,IAAIC,EAAS,SAAS,CAAC,CAAC,CACrF,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYE,GAAmBX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CACzE,IAAMI,EAAYN,GAAiBC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EAC/EK,EAAUX,GAAkBK,EAAS,EAAGC,EAAS,CAAC,EACxD,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAAgCF,GAAG,CAAC,CAACG,EAAKC,CAAG,IACpCA,EAAI,IAAID,CAAG,EAAE,IAAIA,EAAI,IAAIC,EAAI,SAAS,CAAC,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAA2BH,GAE3BI,GAA+BN,GACpC,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACzBF,EAAS,IAAIC,CAAQ,EAAE,IAAIF,EAAS,IAAIG,EAAS,SAAS,CAAC,CAAC,CAEnF,EAAE,UAAU,CACJ,KAAM,+BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYC,GAA+BX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CACrF,IAAMI,EAAYN,GAA6BC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EAC3FK,EAAUX,GAA8BK,EAAS,EAAGC,EAAS,CAAC,EACpE,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,+BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECzCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAA8BF,GAAG,CAAC,CAACG,EAAKC,CAAG,IAClCA,EAAI,IAAID,CAAG,CACzB,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAyBH,GAEzBI,GAA6BN,GAClC,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACzBF,EAAS,IAAIC,CAAQ,CAE5C,EAAE,UAAU,CACJ,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYE,GAA6BX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CACnF,IAAMI,EAAYN,GAA2BC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EACzFK,EAAUX,GAA4BK,EAAS,EAAGC,EAAS,CAAC,EAClE,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,6BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECzCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAA+BF,GAAG,CAAC,CAACG,EAAKC,CAAG,IACnCA,EAAI,IAAID,EAAI,SAAS,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAA0BH,GAE1BI,GAA8BN,GACnC,CAAC,CAACO,EAAWC,EAAUC,EAAUC,CAAS,IAC3BF,EAAS,IAAIC,EAAS,SAAS,CAAC,CAEvD,EAAE,UAAU,CACJ,KAAM,8BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYE,GAA8BX,GAAG,CAAC,CAACY,EAAUJ,CAAQ,IAA0B,CACpF,IAAMK,EAAYP,GAA4BM,EAAS,IAAKJ,EAAS,IAAKI,EAAS,EAAGJ,EAAS,CAAC,EAC1FM,EAAUZ,GAA6BU,EAAS,EAAGJ,EAAS,CAAC,EACnE,OAAOP,GAAKY,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,8BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECzCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAAgCF,GAAG,CAAC,CAACG,EAAKC,CAAG,IACpCA,EAAI,IAAID,EAAI,IAAIC,EAAI,SAAS,CAAC,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAA2BH,GAE3BI,GAA+BN,GACpC,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACzBF,EAAS,IAAID,EAAS,IAAIG,EAAS,SAAS,CAAC,CAAC,CAErE,EAAE,UAAU,CACJ,KAAM,+BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYC,GAA+BX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CACrF,IAAMI,EAAYN,GAA6BC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EAC3FK,EAAUX,GAA8BK,EAAS,EAAGC,EAAS,CAAC,EACpE,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,+BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECzCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAA2BF,GAAG,CAAC,CAACG,EAAKC,CAAG,IAC/BD,EAAI,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,EAAI,SAAS,CAAC,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAsBH,GAEtBI,GAA0BN,GAC/B,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACzBH,EAAS,IAAIG,CAAQ,EAAE,IAAIF,EAAS,IAAIC,EAAS,SAAS,CAAC,CAAC,CAEnF,EAAE,UAAU,CACJ,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYE,GAA0BX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CAChF,IAAMI,EAAYN,GAAwBC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EACtFK,EAAUX,GAAyBK,EAAS,EAAGC,EAAS,CAAC,EAC/D,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECzCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAAyBF,GAAG,CAAC,CAACG,EAAKC,CAAG,IAC7BD,EAAI,IAAIC,CAAG,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAAoBH,GAEpBI,GAAwBN,GAAG,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACjEH,EAAS,IAAIG,CAAQ,CACnC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYC,GAAwBX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CAC9E,IAAMI,EAAYN,GAAsBC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EACpFK,EAAUX,GAAuBK,EAAS,EAAGC,EAAS,CAAC,EAC7D,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAA0BF,GAAG,CAAC,CAACG,EAAKC,CAAG,IAC9BD,EAAI,IAAIC,EAAI,SAAS,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAAqBH,GAErBI,GAAyBN,GAAG,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IAClEH,EAAS,IAAIG,EAAS,SAAS,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYC,GAAyBX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CAC/E,IAAMI,EAAYN,GAAuBC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EACrFK,EAAUX,GAAwBK,EAAS,EAAGC,EAAS,CAAC,EAC9D,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,kBAE5C,IAAMC,GAA2BF,GAAG,CAAC,CAACG,EAAKC,CAAG,IAC/BD,EAAI,IAAIC,EAAI,IAAID,EAAI,SAAS,CAAC,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAsBH,GAEtBI,GAA0BN,GAAG,CAAC,CAACO,EAAUC,EAAUC,EAAUC,CAAQ,IACnEH,EAAS,IAAIE,CAAQ,EAAE,IAAID,EAAS,IAAIE,CAAQ,EAAE,IAAID,EAAS,SAAS,CAAC,CAAC,CACxF,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAQ,EAClC,CAAE,KAAM,WAAY,KAAM,OAAQ,CAC1C,CACR,CAAC,EAEYE,GAA0BX,GAAG,CAAC,CAACO,EAAUC,CAAQ,IAA0B,CAChF,IAAMI,EAAYN,GAAwBC,EAAS,IAAKC,EAAS,IAAKD,EAAS,EAAGC,EAAS,CAAC,EACtFK,EAAUX,GAAyBK,EAAS,EAAGC,EAAS,CAAC,EAC/D,OAAOP,GAAKW,EAAWC,CAAO,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,WAAY,KAAM,MAAO,CACzC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAgB,SAAAC,GAAO,QAAAC,OAAY,kBAErC,IAAMC,GAAWH,GAAG,CAAC,CAACI,CAAI,IAAoB,CAC7C,IAAMC,EAAOJ,GAAM,CAAC,EAAE,IAAIG,EAAK,CAAC,EAAE,MAAM,EACxC,OAAOH,GAAM,CAAC,EACL,IAAIC,GAAK,CAAC,EAAE,IAAIE,EAAK,IAAI,IAAIC,CAAI,EAAE,IAAID,EAAK,CAAC,CAAC,CAAC,EAC/C,SAAS,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,ECXD,OAAS,MAAAE,GAAU,SAAAC,GAAO,QAAAC,OAAe,kBAEzC,IAAMC,GAAQF,GAAM,GAAG,EAEVG,GAAeJ,GAAG,CAAC,CAACK,CAAC,IACnBA,EAAE,IAAIF,EAAK,CACzB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAmBN,GAAG,CAAC,CAACK,CAAC,IACvBH,GAAKE,GAAaC,EAAE,GAAG,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EClBD,OAAS,MAAAE,GAAgB,SAAAC,GAAO,QAAAC,OAAY,kBAGrC,IAAMC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC3C,IAAMC,EAAMC,GAAQF,EAAI,CAAC,EAAE,MAAM,EAC3BG,EAAIC,GAAM,CAAC,EAAE,IAAIJ,EAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,MAAM,EACnE,OAAOC,EAAI,IAAI,EAAG,EAAE,IAAIE,CAAC,EAAE,IAAIH,EAAI,CAAC,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAcN,GAAG,CAAC,CAACC,CAAG,IACpBM,GAAKR,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECnBD,OAAS,MAAAO,GAAI,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAwB,kBAEjD,IAAMC,GAAWL,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAMC,EAASL,GAAKI,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EACpDE,EAAMP,GAAMK,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAI,aAAa,EACjD,OAAOH,GAAKG,EAAI,EAAGC,EAAQC,CAAG,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWT,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAMI,EAAML,GAASC,EAAI,GAAG,EAC5B,OAAOF,GAAKM,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAUN,GCrBvB,OAAS,MAAAO,GAAgB,QAAAC,OAAY,kBCArC,OAAS,MAAAC,GAAgB,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,OAAY,kBAG1D,IAAMC,GAAYF,GAAK,aAAe,EAAG,aAAa,EAEzCG,GAAUN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC3C,IAAMC,EAAKD,EAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,MAAM,EAClCE,EAAKF,EAAI,EAAE,IAAI,GAAG,EAAE,IAAIC,CAAE,EAAE,MAAM,EAClCE,EAAKF,EAAG,IAAID,EAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAElCI,EAAYV,GAAM,OAAQ,EAC1BW,EAAQX,GAAM,EAAE,EAAE,IAAI,GAAG,EACzBY,EAASZ,GAAM,KAAK,EAEpBa,EAAWZ,GAAOO,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAIG,CAAK,EAAE,IAAIC,CAAM,EAAGJ,EAAG,YAAYE,CAAS,CAAC,EACjFI,EAAWb,GAAOM,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAII,CAAK,EAAE,IAAIC,CAAM,EAAGL,EAAG,YAAYG,CAAS,CAAC,EACjFK,EAAWd,GAAOQ,EAAG,IAAI,CAAC,EAAGA,EAAG,IAAIE,CAAK,EAAE,IAAIC,CAAM,EAAGH,EAAG,YAAYC,CAAS,CAAC,EAEvF,OAAON,GAAU,IAAI,GAAG,EAAE,IAAIF,GAAKW,EAAUC,EAAUC,CAAQ,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcjB,GAAG,CAAC,CAACO,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC/BD,OAAS,MAAAW,GAAgB,QAAAC,GAAM,QAAAC,OAAY,kBAG3C,IAAMC,GAAUF,GACR,UACA,WACA,UACA,SACA,UACA,QACA,SACA,UACA,SACR,EAEaG,GAAUJ,GAAG,CAAC,CAACK,CAAG,IAChBF,GAAQ,IAAIE,EAAI,IAAI,GAAI,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EFzBM,IAAME,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcJ,GAAG,CAAC,CAACC,CAAG,IACpBI,GAAKN,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EGlBD,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAEpC,IAAMC,GAAWH,GAAG,CAAC,CAACI,CAAG,IAAoB,CAC5C,IAAMC,EAAUD,EAAI,EAAE,IAAI,YAAa,EACvC,OAAOH,GAAKG,EAAI,EAAGA,EAAI,EAAE,IAAIC,EAAQ,IAAI,CAAC,EAAGD,EAAI,EAAE,IAAIC,EAAQ,IAAI,CAAC,CAAC,CAC7E,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACI,CAAG,IAAoB,CAC5C,IAAMG,EAAMJ,GAASC,EAAI,GAAG,EAC5B,OAAOF,GAAKK,EAAKH,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GCpBvB,OAAS,MAAAM,GAAgB,QAAAC,OAAY,kBAI9B,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAG,IACjBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAWJ,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMI,EAAMN,GAASE,EAAI,GAAG,EAC5B,OAAOK,GAAKD,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYM,GAAUR,GCrBvB,OAAS,MAAAS,GAAU,SAAAC,GAAO,QAAAC,OAAe,kBAEzC,IAAMC,GAAYF,GAAM,CAAC,EAAE,IAAI,GAAG,EAErBG,GAAeJ,GAAG,CAAC,CAACK,CAAC,IACnBA,EAAE,IAAIF,EAAS,CAC7B,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAmBN,GAAG,CAAC,CAACK,CAAC,IACvBH,GAAKE,GAAaC,EAAE,GAAG,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EClBD,OAAS,MAAAE,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAcF,GAAK,EAAG,EAAG,EAAG,YAAc,aAAe,aAAe,YAAc,aAAe,YAAY,EAEjHG,GAAcH,GACZ,aACA,cACA,aACA,cACA,aACA,aACA,YACA,aACA,WACR,EAEaI,GAAaL,GAAG,CAAC,CAACM,CAAK,IAAoB,CAChD,IAAMC,EAAMJ,GAAY,IAAIG,CAAK,EACjC,OAAOF,GAAY,IAAIG,EAAI,IAAIA,CAAG,EAAE,IAAIA,CAAG,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACM,CAAK,IAAoB,CAChD,IAAMG,EAAMJ,GAAWC,EAAM,GAAG,EAChC,OAAOJ,GAAKO,EAAKH,EAAM,CAAC,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYI,GAAYL,GClCzB,OAAS,MAAAM,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,kBCAlD,OAAS,MAAAC,GAA6B,OAAAC,OAAW,eAE1C,IAAMC,GAAQF,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAQJ,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAQL,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIA,GAAIE,EAAE,EAAGA,EAAE,CAAC,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYG,GAAOD,GDxBb,IAAME,GAAWC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMC,EAAIC,GAAMC,GAAM,CAAC,EAAE,IAAIH,CAAG,CAAC,EAAE,MAAM,EACnCI,EAAOD,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,MAAM,EAC7BI,EAAMF,GAAM,CAAC,EAAE,IAAIH,CAAG,EAAE,IAAIC,CAAC,EAAE,IAAIG,CAAI,EAAE,IAAIE,GAAK,EAAGF,CAAI,CAAC,EAAE,MAAM,EACxE,OAAOG,GAAKF,EAAKJ,CAAC,EAAE,SAAS,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EEZD,OAAS,MAAAO,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAE1D,IAAMC,GAAcJ,GAAM,OAAO,EAAE,SAAS,EAE/BK,GAAUN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC3C,IAAMC,EAASL,GAAKI,EAAI,EAAGA,EAAI,EAAG,GAAIN,GAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EACvDQ,EAAUN,GAAKI,EAAI,EAAGA,EAAI,EAAG,EAAGN,GAAM,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EACxDS,EAAUN,GAAOI,EAAQC,EAASF,EAAI,EAAE,SAASA,EAAI,CAAC,CAAC,EAAE,MAAM,EAE/DI,EAASR,GAAKO,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,EAAGH,EAAI,CAAC,EAAE,MAAM,EAC5DK,EAAUT,GAAKI,EAAI,EAAGG,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAAE,MAAM,EAC7DG,EAAUT,GAAOO,EAAQC,EAASL,EAAI,EAAE,SAASG,EAAQ,CAAC,CAAC,EAAE,MAAM,EAEnEI,EAAID,EAAQ,EAAE,IAAIA,EAAQ,EAAE,IAAIA,EAAQ,CAAC,CAAC,EAAE,MAAM,EAClDE,EAAIF,EAAQ,EAAE,IAAIA,EAAQ,CAAC,EAAE,IAAIZ,GAAM,CAAC,EAAE,IAAIa,CAAC,EAAE,IAAIT,EAAW,CAAC,EAAE,IAAIQ,EAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EACpG,OAAOX,GAAKa,EAAGD,EAAGD,EAAQ,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAchB,GAAG,CAAC,CAACO,CAAG,IACpBJ,GAAKG,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC5BD,OAAS,MAAAU,GAAgB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,kBAGlD,IAAMC,GAAcC,GAAM,OAAO,EAEpBC,GAAUC,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC3C,IAAMC,EAAMC,GAAQF,CAAG,EAAE,MAAM,EACzBG,EAAIF,EAAI,EAAE,IAAIA,EAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAClCG,EAAIH,EAAI,EAAE,IAAIJ,GAAM,CAAC,EAAE,IAAIM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIP,EAAW,CAAC,EAAE,MAAM,EAChF,OAAOS,GAAKJ,EAAI,EAAGG,EAAGD,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcP,GAAG,CAAC,CAACC,CAAG,IACpBO,GAAKT,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECtBD,OAAS,MAAAQ,GAAuB,SAAAC,GAAO,QAAAC,GAAM,UAAAC,OAAc,kBAE3D,IAAMC,GAAcH,GAAM,OAAO,EAEpBI,GAAUL,GAAG,CAAC,CAACM,CAAC,IAAqB,CAC1C,IAAMC,EAAIL,GAAK,EAAGD,GAAM,EAAE,EAAE,IAAI,CAAC,EAAGA,GAAM,CAAC,EAAE,IAAI,CAAC,EAAG,EAAE,EAAE,MAAM,EACzDO,EAASN,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACxCE,EAAUP,GAAKI,EAAE,EAAGA,EAAE,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIP,GAAOK,EAAQC,EAASH,EAAE,EAAE,SAASA,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDK,EAAST,GAAKQ,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGJ,EAAE,CAAC,EAAE,MAAM,EACxCM,EAAUV,GAAKI,EAAE,EAAGI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAAE,MAAM,EACzCG,EAAIV,GAAOQ,EAAQC,EAASN,EAAE,EAAE,SAASI,EAAE,CAAC,CAAC,EAAE,MAAM,EAErDI,EAAID,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,EACtC,OAAOA,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIZ,GAAM,CAAC,EAAE,IAAIa,CAAC,EAAE,IAAIV,EAAW,CAAC,CAAC,EAAE,IAAI,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYW,GAAcf,GAAG,CAAC,CAACM,CAAC,IAClBD,GAAQC,EAAE,GAAG,CAC3B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC5BD,OAAS,MAAAU,GAAgB,QAAAC,OAAY,kBCArC,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,kBAG3C,IAAMC,GAAUF,GAAK,SAAW,SAAW,SAAW,SAAW,SAAW,QAAU,SAAW,QAAU,QAAS,EAEvGG,GAAUJ,GAAG,CAAC,CAACK,CAAG,IAChBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,CAAG,IACpBH,GAAKE,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECnBD,OAAS,MAAAE,GAAuB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,kBAEtD,IAAMC,GAAUL,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC3C,IAAMC,EAAID,EAAI,IAAIL,GAAK,OAAQ,IAAK,OAAO,CAAC,EAAE,MAAM,EAC9CO,EAAKD,EAAE,IAAIN,GAAK,EAAI,CAAC,CAAC,EAAE,MAAM,EAC9BQ,EAAKF,EACF,IAAI,KAAK,EACT,IAAI,GAAK,GAAG,EACZ,MAAM,EACTG,EAAIN,GAAII,EAAIC,EAAIN,GAAKI,EAAGN,GAAK,OAAQ,CAAC,CAAC,EAAE,MAAM,EAC/CU,EAAID,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAC/BE,EAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,EAChCG,EAAIH,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,EACtC,OAAOT,GAAKU,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAcd,GAAG,CAAC,CAACM,CAAG,IACpBJ,GAAKG,GAAQC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EFtBM,IAAMS,GAAUC,GAAG,CAAC,CAACC,CAAG,IAChBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcJ,GAAG,CAAC,CAACC,CAAG,IACpBI,GAAKN,GAAQE,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EGlBD,OAAS,MAAAK,GAAgB,QAAAC,OAAY,kBAI9B,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAG,IACjBC,GAAQC,GAAQF,CAAG,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAWJ,GAAG,CAAC,CAACC,CAAG,IAAoB,CAC5C,IAAMI,EAAMN,GAASE,EAAI,GAAG,EAC5B,OAAOK,GAAKD,EAAKJ,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYM,GAAUR,GCrBvB,OAAS,MAAAS,GAAI,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAwB,kBAEjD,IAAMC,GAAcH,GACZ,YACA,aACA,YACA,WACA,aACA,YACA,aACA,YACA,WACR,EAEMI,GAAcJ,GACZ,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACR,EAEaK,GAAaN,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC9C,IAAMC,EAAMH,GAAY,IAAIE,CAAG,EAC/B,OAAOH,GAAY,IAAII,EAAI,KAAK,EAAE,IAAIA,EAAI,IAAI,EAAE,IAAIN,GAAK,cAAe,CAAC,CAAC,CAAC,CACnF,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYO,GAAaT,GAAG,CAAC,CAACO,CAAG,IAAoB,CAC9C,IAAMG,EAAQJ,GAAWC,EAAI,GAAG,EAChC,OAAOJ,GAAKO,EAAOH,EAAI,CAAC,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAYL,GC5CzB,OAAS,MAAAM,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAEjE,IAAMC,GAAeJ,GAAM,OAAO,EAErBK,GAAgBN,GAAG,CAAC,CAACO,CAAC,IACpBH,GAAOG,EAAE,IAAI,KAAK,EAAGN,GAAM,KAAK,EAAE,IAAIM,EAAE,IAAI,iBAAkB,CAAC,EAAE,IAAI,IAAK,EAAGA,EAAE,SAAS,QAAS,CAAC,CAChH,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACS,CAAG,IACrBP,GACCI,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,EACrCC,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,EACrCC,GAAcG,EAAI,EAAE,IAAIJ,EAAY,CAAC,CAC7C,EAAE,SAAS,CAClB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAAeV,GAAG,CAAC,CAACS,CAAG,IACrBN,GAAKK,GAAaC,EAAI,GAAG,EAAGA,EAAI,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAGYE,GAAWH,GCjCxB,OAAS,MAAAI,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAUF,GAAK,GAAK,IAAM,IAAM,KAAO,OAAS,OAAS,KAAO,OAAS,KAAM,EAExEG,GAAWJ,GAAG,CAAC,CAACK,CAAG,IACjBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACK,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOH,GAAKK,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAUJ,GCrBvB,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAeF,GAAK,MAAQ,QAAU,KAAO,MAAQ,QAAU,QAAU,MAAQ,KAAO,OAAQ,EAEhGG,GAAeH,GAAK,KAAO,QAAU,KAAO,KAAO,QAAU,QAAU,KAAO,KAAO,OAAQ,EAEtFI,GAAWL,GAAG,CAAC,CAACM,CAAG,IACjBH,GAAa,IAAIG,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWP,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOJ,GAAKM,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcT,GAAG,CAAC,CAACM,CAAG,IACpBF,GAAa,IAAIE,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GC/BvB,OAAS,MAAAM,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,UAAAC,OAAc,kBAEjE,IAAMC,GAAeJ,GAAM,OAAO,EAErBK,GAAgBN,GAAG,CAAC,CAACO,CAAC,IACpBH,GAAOG,EAAE,IAAI,WAAY,EAAGA,EAAE,IAAI,IAAK,EAAE,IAAI,gBAAiB,EAAE,IAAI,GAAG,EAAGA,EAAE,SAAS,MAAO,CAAC,CAC3G,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACS,CAAI,IACtBP,GACCI,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,EACtCC,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,EACtCC,GAAcG,EAAK,EAAE,IAAIJ,EAAY,CAAC,CAC9C,CACP,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,EAEYK,GAAeV,GAAG,CAAC,CAACS,CAAI,IACtBN,GAAKK,GAAaC,EAAK,GAAG,EAAGA,EAAK,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,OAAQ,KAAM,MAAO,CAAC,CAC/C,CAAC,EAGYE,GAAWH,GCjCxB,OAAS,MAAAI,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAUF,GAAK,EAAG,MAAQ,MAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,KAAK,EAEjEG,GAAWJ,GAAG,CAAC,CAACK,CAAG,IACjBF,GAAQ,IAAIE,CAAG,CAC7B,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWN,GAAG,CAAC,CAACK,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOH,GAAKK,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAUJ,GCrBvB,OAAS,MAAAK,GAAI,QAAAC,GAAM,QAAAC,OAAwB,kBAE3C,IAAMC,GAAeF,GAAK,EAAG,EAAG,EAAG,EAAG,QAAU,QAAS,QAAS,QAAU,CAAC,EAEvEG,GAAeH,GAAK,EAAG,EAAG,EAAG,EAAG,QAAU,QAAS,QAAS,OAAS,CAAC,EAE/DI,GAAWL,GAAG,CAAC,CAACM,CAAG,IACjBH,GAAa,IAAIG,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAWP,GAAG,CAAC,CAACM,CAAG,IAAoB,CAC5C,IAAME,EAAMH,GAASC,EAAI,GAAG,EAC5B,OAAOJ,GAAKM,EAAKF,EAAI,CAAC,CAC9B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYG,GAAcT,GAAG,CAAC,CAACM,CAAG,IACpBF,GAAa,IAAIE,CAAG,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAUL,GC/BvB,OAAS,MAAAM,GAAiB,SAAAC,GAAO,QAAAC,GAAM,UAAAC,GAAQ,SAAAC,GAAO,OAAAC,GAAK,QAAAC,GAAM,MAAAC,OAAU,eCA3E,OAAS,MAAAC,GAAuB,SAAAC,GAAO,OAAAC,GAAK,UAAAC,GAAQ,SAAAC,OAAa,eAG1D,IAAMC,GAAYL,GAAG,CAAC,CAACM,EAAIC,EAAGC,CAAC,IAAiC,CAC/D,IAAMC,EAASD,EAAE,IAAID,CAAC,EAAE,MAAM,QAAQ,EAChCG,EAAOJ,EAAG,IAAIC,CAAC,EAAE,MAAM,MAAM,EAC7BI,EAAIV,GAAMC,GAAIQ,EAAMD,CAAM,EAAE,IAAIP,GAAIO,EAAQA,CAAM,CAAC,EAAG,EAAG,CAAC,EAAE,MAAM,GAAG,EAC3E,OAAON,GAAOO,EAAK,IAAIC,EAAE,IAAIF,CAAM,CAAC,CAAC,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYG,GAAYZ,GAAG,CAAC,CAACa,EAAGN,EAAGC,CAAC,IACtBL,GAAOC,GAAMS,EAAE,IAAIN,CAAC,EAAGM,EAAE,IAAIL,CAAC,CAAC,CAAC,EAAE,IAAIL,GAAOK,EAAE,IAAID,CAAC,CAAC,CAAC,CACpE,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYO,GAAUT,GD7BvB,IAAMU,GAAmBC,GAAM,EAAI,EAEtBC,GAAwBC,GAAG,CAAC,CAACC,CAAG,IACrBA,EAAI,IAAIJ,EAAgB,EAAE,MAAM,EACjC,IAAI,EAAG,EAAE,IAAIA,EAAgB,CACnD,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYK,GAASF,GAAG,CAAC,CAACG,EAAGC,EAAGC,CAAU,IAAiC,CACpE,IAAMC,EAAUH,EAAE,IAAIE,CAAU,EAAE,MAAM,SAAS,EACjDC,EAAQ,UAAUP,GAAsBO,CAAO,CAAC,EAChD,IAAMC,EAAQC,GAAOJ,CAAC,EAAE,MAAM,OAAO,EAErC,OAAAK,GAAGF,EAAM,YAAY,CAAG,EAAG,IAAM,CACzB,IAAMG,EAAQN,EAAE,IAAIG,CAAK,EAAE,MAAM,OAAO,EACxCA,EAAM,OAAOI,GAAMJ,EAAOT,GAAM,CAAG,EAAGD,GAAiB,IAAI,CAAG,CAAC,CAAC,EAChE,IAAMe,EAAUF,EAAM,IAAIH,CAAK,EAAE,MAAM,SAAS,EAE1CM,EAAQC,GAAQR,EAASM,EAASA,EAAQ,OAAO,CAAC,EAAE,MAAM,OAAO,EACjEG,EAAQD,GACNR,EACAM,EACAA,EAAQ,IAAI,EAAG,EAAE,IAAII,GAAKJ,EAAQ,EAAE,OAAO,EAAGA,EAAQ,CAAC,EAAE,IAAI,EAAG,CAAC,CACzE,EAAE,MAAM,OAAO,EACTK,EAAQH,GACNR,EACAM,EACAA,EAAQ,IAAI,EAAG,EAAE,IAAII,GAAKJ,EAAQ,EAAGA,EAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,EAAG,CAAC,CACzE,EAAE,MAAM,OAAO,EACTM,EAAOC,GAAIJ,EAAOE,CAAK,EAAE,MAAM,MAAM,EAE3C,OAAOG,GAAKD,GAAIN,EAAOK,CAAI,EAAGpB,GAAM,CAAG,CAAC,CAChD,CAAC,EAEMA,GAAM,CAAG,CACxB,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,MAAO,CAC3C,CACR,CAAC,EAEYuB,GAAerB,GAAG,CAAC,CAACG,EAAGC,CAAC,IACtBF,GAAOC,EAAGC,EAAGY,GAAK,CAAG,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EE5DD,OAAS,MAAAM,GAAmC,QAAAC,GAAM,QAAAC,OAAY,eCA9D,OAAS,MAAAC,OAAuB,eCAhC,OAAS,MAAAC,GAAW,cAAAC,OAAkB,eCAtC,OAAS,MAAAC,GAAW,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,cAAAC,OAAkB,eAEzD,IAAMC,GAASN,GAAG,CAAC,CAACO,EAAWC,CAAK,IAA6B,CAChE,IAAMC,EAAaP,GAAKC,GAAKK,CAAK,EAAGJ,GAAKI,CAAK,CAAC,EAC1CE,EAAUT,GAAOQ,CAAU,EAAE,IAAI,EAAG,EAC1C,OAAOJ,GAAWE,EAAU,IAAIG,CAAO,EAAGH,EAAU,IAAIG,CAAO,EAAGF,CAAK,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,YAAa,KAAM,OAAQ,EACnC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDVM,IAAMG,GAAeC,GAAG,CAAC,CAACC,EAAGC,EAAMC,CAAI,IAC/BC,GAAWF,EAAK,IAAIC,CAAI,EAAGD,EAAK,IAAIC,CAAI,EAAGF,CAAC,EAAE,SAAS,CACrE,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYI,GAAOL,GAAG,CAAC,CAACC,EAAGC,CAAI,IACjBI,GAAOJ,EAAMD,CAAC,EAAE,SAAS,CACvC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EDpBM,IAAMM,GAAOC,GAAG,CAAC,CAACC,EAAIC,EAAGC,EAAGC,CAAS,IAC7BC,GAAKC,GAAQL,EAAIC,EAAGC,CAAC,EAAGC,CAAS,CAC/C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EDZM,IAAMG,GAAOC,GAAG,CAAC,CAACC,EAAIC,EAAGC,EAAKC,CAAS,IAAuC,CAC7E,IAAMC,EAAMC,GAAK,CAAC,EAAE,MAAM,EAEpBC,EAASL,EAAE,IAAII,GAAKH,EAAK,CAAC,CAAC,EAAE,MAAM,EACzCI,EAAO,GAAG,UAAUA,EAAO,CAAC,EAC5BA,EAAO,GAAG,OAAOA,EAAO,GAAG,IAAI,EAAG,EAAE,IAAI,EAAG,CAAC,EAE5C,IAAMC,EAAQF,GAAK,EAAG,EAAG,EAAG,CAAC,EACvBG,EAAKP,EAAE,IAAII,GAAKH,EAAI,IAAIO,GAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EAAE,MAAM,EACxDD,EAAG,GAAG,UAAUA,EAAG,CAAC,EACpBA,EAAG,GAAG,OAAOA,EAAG,GAAG,IAAI,EAAG,EAAE,IAAI,EAAG,CAAC,EACpCJ,EAAI,UAAUG,EAAM,IAAIG,GAAKV,EAAIM,EAAO,GAAIE,EAAG,GAAIL,CAAS,CAAC,CAAC,EAE9D,IAAMQ,EAAQN,GAAK,EAAG,EAAG,EAAG,CAAC,EACvBO,EAAKX,EAAE,IAAII,GAAKH,EAAI,IAAIO,GAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EAAE,MAAM,EACxDG,EAAG,GAAG,UAAUA,EAAG,CAAC,EACpBA,EAAG,GAAG,OAAOA,EAAG,GAAG,IAAI,EAAG,EAAE,IAAI,EAAG,CAAC,EACpCR,EAAI,UAAUO,EAAM,IAAID,GAAKV,EAAIM,EAAO,GAAIM,EAAG,GAAIT,CAAS,CAAC,CAAC,EAE9D,IAAMU,EAAQR,GAAK,EAAG,EAAG,EAAG,CAAC,EACvBS,EAAKb,EAAE,IAAII,GAAKH,EAAI,IAAIO,GAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EAAE,MAAM,EACxD,OAAAK,EAAG,GAAG,UAAUA,EAAG,CAAC,EACpBA,EAAG,GAAG,OAAOA,EAAG,GAAG,IAAI,EAAG,EAAE,IAAI,EAAG,CAAC,EACpCV,EAAI,UAAUS,EAAM,IAAIH,GAAKV,EAAIM,EAAO,GAAIQ,EAAG,GAAIX,CAAS,CAAC,CAAC,EAEvDC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EItCD,OAAS,MAAAW,GAAgC,SAAAC,OAAa,eCAtD,OAAS,MAAAC,GAAW,cAAAC,GAAY,SAAAC,OAAa,eAGtC,IAAMC,GAAiBC,GAAG,CAAC,CAACC,EAAGC,EAAMC,EAAGC,CAAI,IAA2C,CACtF,IAAMC,EAAIC,GAAWJ,EAAK,IAAIE,CAAI,EAAGF,EAAK,IAAIE,CAAI,EAAGH,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAC9DG,GAAWJ,EAAK,IAAIE,CAAI,EAAGF,EAAK,IAAIE,CAAI,EAAGH,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,CAClE,EACA,OAAOI,GAAMF,EAAG,EAAG,CAAC,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,EAASR,GAAG,CAAC,CAACC,EAAGC,EAAMC,CAAC,IAAoC,CACjE,IAAME,EAAII,GAAOP,EAAMD,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAIM,GAAOP,EAAMD,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EACzE,OAAOI,GAAMF,EAAG,EAAG,CAAC,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ED1BM,IAAMK,GAAcC,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAClBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIC,EAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3C,IAAIE,EAAOJ,EAAGC,EAAGC,CAAC,CAAC,CACzC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYG,GAAaP,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,EAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIF,EAAOJ,EAAGC,EAAGC,CAAC,CAAC,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAaT,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,EAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIF,EAAOJ,EAAGC,EAAGC,CAAC,CAAC,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYM,GAAaV,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAyC,CAC1E,IAAMI,EAAaF,EAAOJ,EAAGC,EAAGC,EAAE,IAAI,CAAC,CAAC,EAExC,OADgBH,EAAE,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EAC/B,IAAIF,EAAOJ,EAAGC,EAAGC,CAAC,CAAC,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYO,GAASX,GAAG,CAAC,CAACC,EAAGC,EAAGC,EAAGC,CAAC,IAAmC,CAChE,IAAMI,EAAaF,EAAOJ,EAAGC,EAAIC,EAAU,IAAI,CAAC,CAAC,EAEjD,OADiBH,EAAU,IAAII,GAAM,CAAC,EAAE,IAAIG,CAAU,CAAC,EACxC,IAAIF,EAAOJ,EAAGC,EAAGC,CAAQ,CAAC,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EEhFD,OAAS,MAAAQ,GAAsB,OAAAC,GAAK,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,SAAAC,GAAO,OAAAC,GAAK,MAAAC,OAAU,eCA9E,OAAS,MAAAC,OAAe,eAEjB,IAAMC,GAAOD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAAuB,CAC5C,IAAMC,EAAKF,EAAE,QAAQ,EACfG,EAAKF,EAAE,QAAQ,EACfG,EAAWF,EAAG,IAAIC,CAAE,EAAE,MAAM,EAClC,OAAOH,EAAE,IAAII,EAAS,IAAID,CAAE,EAAE,MAAM,CAAC,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,MACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,KAAM,EACzB,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,EDVM,IAAME,GAAYC,GAAK,GAAI,EACrBC,GAAa,GAGbC,GAAO,CACZ,MAAO,EACP,YAAa,EACb,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,QAAS,EACT,UAAW,EACX,WAAY,EACZ,WAAY,EACZ,YAAa,EACb,SAAU,GACV,KAAM,GACN,MAAO,GACP,MAAO,GACP,OAAQ,GACR,MAAO,GACP,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,MAAO,GACP,UAAW,GACX,KAAM,GACN,MAAO,GACP,QAAS,GACT,SAAU,GACV,GAAI,GACJ,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,aAAc,GACd,UAAW,GACX,cAAe,GACf,MAAO,GACP,WAAY,GACZ,MAAO,GACP,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,EAAG,GACH,WAAY,GACZ,IAAK,GACL,YAAa,GACb,MAAO,EACf,EAGMC,GAAgD,CAC9C,CAAC,EAAK,EAAK,EAAK,CAAG,EACnB,CAAC,KAAQ,UAAY,KAAQ,CAAG,EAChC,CAAC,QAAU,UAAY,EAAK,CAAG,EAC/B,CAAC,GAAM,UAAY,UAAY,CAAG,EAClC,CAAC,KAAO,UAAY,SAAW,SAAS,EACxC,CAAC,GAAM,WAAY,UAAY,CAAG,EAClC,CAAC,MAAQ,WAAY,WAAY,CAAG,EACpC,CAAC,QAAU,UAAY,EAAK,CAAG,EAC/B,CAAC,KAAO,UAAW,UAAY,SAAS,EACxC,CAAC,KAAQ,UAAY,UAAW,SAAU,EAC1C,CAAC,EAAK,QAAU,UAAY,CAAG,EAC/B,CAAC,EAAK,UAAW,UAAW,CAAG,EAC/B,CAAC,EAAK,EAAK,KAAQ,SAAS,EAC5B,CAAC,EAAK,IAAM,EAAK,CAAG,EACpB,CAAC,EAAK,EAAK,KAAQ,CAAG,EACtB,CAAC,IAAO,SAAW,UAAY,UAAU,EACzC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,EAAK,UAAY,UAAW,CAAG,EAChC,CAAC,GAAM,WAAY,UAAW,CAAG,EACjC,CAAC,IAAM,SAAW,SAAW,CAAG,EAChC,CAAC,EAAK,UAAW,WAAY,CAAG,EAChC,CAAC,IAAM,WAAY,SAAW,CAAG,EACjC,CAAC,GAAM,UAAY,WAAY,CAAG,EAClC,CAAC,IAAM,SAAW,UAAW,CAAG,EAChC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,SAAW,CAAG,EACjC,CAAC,EAAK,QAAU,KAAQ,CAAG,EAC3B,CAAC,EAAK,QAAU,KAAQ,SAAS,EACjC,CAAC,EAAK,UAAW,UAAY,CAAG,EAChC,CAAC,EAAK,MAAQ,QAAU,CAAG,EAC3B,CAAC,GAAM,UAAY,SAAW,CAAG,EACjC,CAAC,MAAQ,SAAW,KAAQ,CAAG,EAC/B,CAAC,KAAQ,WAAY,WAAY,SAAU,EAC3C,CAAC,GAAM,UAAY,WAAY,CAAG,EAClC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,UAAY,WAAY,CAAG,EAClC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,UAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,UAAW,UAAW,CAAG,EAChC,CAAC,EAAK,SAAW,SAAW,CAAG,EAC/B,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,QAAS,EACxC,CAAC,IAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,SAAW,CAAG,EACjC,CAAC,IAAM,UAAW,UAAW,CAAG,EAChC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,UAAY,CAAG,EAClC,CAAC,GAAM,WAAY,WAAY,CAAG,EAClC,CAAC,GAAM,WAAY,UAAY,CAAG,EAClC,CAAC,GAAM,WAAY,UAAW,CAAG,EACjC,CAAC,IAAM,SAAW,UAAY,CAAG,EACjC,CAAC,KAAQ,UAAY,UAAY,SAAU,EAC3C,CAAC,MAAQ,UAAY,UAAW,QAAS,EACzC,CAAC,MAAQ,UAAW,UAAW,SAAS,EACxC,CAAC,KAAQ,WAAY,EAAK,CAAG,EAC7B,CAAC,EAAK,EAAK,EAAK,QAAQ,EACxB,CAAC,QAAU,SAAW,EAAK,CAAG,EAC9B,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,MAAQ,WAAY,WAAY,CAAG,EACpC,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,IAAO,SAAW,WAAY,CAAG,EAClC,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,KAAO,UAAY,UAAY,CAAG,EACnC,CAAC,EAAK,QAAU,WAAY,QAAS,EACrC,CAAC,MAAQ,WAAY,WAAY,CAAG,EACpC,CAAC,KAAO,QAAU,UAAW,CAAG,EAChC,CAAC,KAAO,QAAU,SAAW,QAAS,EACtC,CAAC,MAAQ,WAAY,WAAY,CAAG,EACpC,CAAC,MAAQ,UAAW,UAAW,CAAG,EAClC,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,WAAY,UAAU,EACtC,CAAC,EAAK,QAAU,WAAY,QAAS,EACrC,CAAC,EAAK,QAAU,UAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,UAAY,CAAG,EAC/B,CAAC,GAAM,UAAY,UAAY,CAAG,EAClC,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,UAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,WAAY,CAAG,EAC/B,CAAC,EAAK,QAAU,UAAW,CAAG,EAC9B,CAAC,EAAK,QAAU,WAAY,QAAS,EACrC,CAAC,EAAK,QAAU,UAAY,CAAG,EAC/B,CAAC,OAAS,UAAY,UAAY,SAAU,EAC5C,CAAC,OAAS,UAAW,UAAW,SAAS,EACzC,CAAC,QAAU,UAAW,UAAW,SAAS,EAC1C,CAAC,MAAQ,WAAY,EAAK,CAAG,CACrC,EAEMC,GAAUC,GAAG,CAAC,CAACC,CAAK,IAAa,CAC/B,IAAMC,EAASC,GAAM,CAAC,EAAE,MAAM,QAAQ,EAClCC,EAAUC,GAAGJ,EAAM,MAAMK,GAAI,CAAC,CAAC,EAAG,IAAM,KAAKJ,EAAO,OAAOC,GAAM,GAAGL,GAAU,CAAC,CAAC,CAAC,CAAC,EACtF,QAASS,EAAI,EAAGA,EAAIT,GAAU,OAAQS,IAC9BH,EAAUA,EAAQ,OAAOH,EAAM,MAAMK,GAAIC,CAAC,CAAC,EAAG,IAAM,KAAKL,EAAO,OAAOC,GAAM,GAAGL,GAAUS,CAAC,CAAC,CAAC,CAAC,EACtG,OAAOL,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,KAAM,CAAC,CAC/C,CAAC,EAEYM,GAAOR,GAAG,CAAC,CAACS,EAAIC,CAAQ,IAA0B,CACvD,IAAMC,EAAYC,GAAM,EAAG,EAAE,EACpB,IAAIC,GAAMJ,EAAG,IAAId,GAAK,EAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EACxC,MAAM,WAAW,EACpBmB,EAAMf,GAAQW,CAAQ,EAAE,MAAM,KAAK,EACnCK,EAAYT,GAAI,CAAC,EAAE,MAAM,WAAW,EACpCL,EAAQU,EAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,EAExEN,GAAGJ,EAAM,MAAMK,GAAI,CAAC,CAAC,EAAG,IAAM,KAAKS,EAAU,OAAOD,EAAI,CAAC,CAAC,EACjD,OAAOb,EAAM,MAAMK,GAAI,CAAC,CAAC,EAAG,IAAM,KAAKS,EAAU,OAAOD,EAAI,CAAC,CAAC,EAC9D,OAAOb,EAAM,MAAMK,GAAI,CAAC,CAAC,EAAG,IAAM,KAAKS,EAAU,OAAOD,EAAI,CAAC,CAAC,EAC9D,KAAK,IAAM,KAAKC,EAAU,OAAOD,EAAI,CAAC,CAAC,EAEhD,IAAME,EAAQC,GAAKN,EAAU,EAAqBL,GAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjEY,EAAWZ,GAAI,CAAC,EAAE,IAAIU,CAAK,EAAE,MAAM,UAAU,EAC7CG,EAAUC,GAAId,GAAI,GAAG,EAAE,QAAQ,EAAGY,EAAS,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,SAAS,EAC7EG,EAAcJ,GAAKF,EAAU,IAAII,CAAO,EAAGb,GAAI,GAAG,CAAC,EAAE,MAAM,aAAa,EAExEgB,EAAeF,GAAId,GAAI,CAAC,EAAE,QAAQ,EAAGK,EAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,cAAc,EAG9F,OAFqBM,GAAKI,EAAY,IAAIC,CAAY,EAAGhB,GAAI,CAAC,CAAC,EAAE,MAAM,cAAc,EAEjE,QAAQ,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,WAAY,KAAM,KAAM,CACxC,CACR,CAAC,EEtPD,OAAS,MAAAiB,OAAuB,eCAhC,OAAS,MAAAC,GAAU,QAAAC,OAAY,eAExB,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAGC,CAAM,IACxBD,EAAE,IAAIC,CAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYC,GAAiBL,GAAG,CAAC,CAACG,CAAC,IACrBA,EAAE,IAAIF,GAAK,EAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDdM,IAAMK,GAAaC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACxBC,GAAKC,GAAeH,CAAE,EAAGC,CAAI,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAeL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACvCC,EAAOH,GAAeH,CAAE,EAAGC,EAAMI,CAAW,CAC1D,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAASR,GAAG,CAAC,CAACC,EAAIC,CAAI,IACpBC,GAAKC,GAAeH,CAAE,EAAGC,CAAI,CAC3C,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYO,GAAmBT,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IAC3CC,EAAOH,GAAeH,CAAE,EAAGC,EAAMI,CAAW,CAC1D,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EEjDD,OAAS,MAAAI,GAAqB,QAAAC,GAAM,QAAAC,GAAa,SAAAC,OAAa,eCA9D,OAAS,MAAAC,GAAuB,QAAAC,GAAM,QAAAC,OAAY,eAE3C,IAAMC,GAAUH,GAAG,CAAC,CAACI,EAAIC,CAAC,IAClBD,EAAG,IAAIH,GAAK,EAAG,CAAC,EAAE,IAAII,CAAC,EAAE,IAAIJ,GAAK,EAAG,CAAC,CACpD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYK,GAAoBN,GAAG,CAAC,CAACI,EAAIC,EAAGE,CAAM,IACpCH,EAAG,IAAIG,CAAM,EAAE,IAAIF,CAAC,EAAE,IAAIE,CAAM,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACI,EAAIC,CAAC,IACrBD,EAAG,IAAIH,GAAK,EAAG,CAAC,EAAE,IAAII,CAAC,EAAE,IAAIJ,GAAK,EAAG,CAAC,CACpD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYQ,GAAUT,GAAG,CAAC,CAACI,EAAIC,CAAC,IAClBD,EAAG,IAAIF,GAAK,EAAG,CAAC,EAAE,IAAIG,CAAC,EAAE,IAAIH,GAAK,EAAG,CAAC,CACpD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC7CD,OAAS,MAAAQ,GAAI,QAAAC,GAAiB,MAAAC,GAAI,OAAAC,OAAW,kBAE7C,IAAMC,GAAS,CACP,CAAC,OAAS,OAAS,MAAO,EAC1B,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,IAAM,KAAO,IAAK,EACnB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,GAAI,EACnB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,GAAI,EACnB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,GAAI,EACnB,CAAC,IAAM,KAAO,IAAK,EACnB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,EAAK,KAAO,IAAK,EAClB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,KAAO,KAAO,IAAK,EACpB,CAAC,GAAK,GAAK,IAAK,CACxB,EAEaC,GAAUL,GAAG,CAAC,CAACM,CAAK,IAAmB,CAC5C,IAAMC,EAASN,GAAK,CAAC,EAAE,MAAM,EACzBO,EAAUN,GAAGI,EAAM,MAAMH,GAAI,CAAC,CAAC,EAAG,IAAM,KAAKI,EAAO,OAAON,GAAK,GAAGG,GAAO,CAAC,CAAC,CAAC,CAAC,EAClF,QAASK,EAAI,EAAGA,EAAIL,GAAO,OAAQK,IAC3BD,EAAUA,EAAQ,OAAOF,EAAM,MAAMH,GAAIM,CAAC,CAAC,EAAG,IAAM,KAAKF,EAAO,OAAON,GAAK,GAAGG,GAAOK,CAAC,CAAC,CAAC,CAAC,EAClG,OAAOF,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,KAAM,CAAC,CAC/C,CAAC,ECvCD,OAAS,MAAAG,GAAI,QAAAC,GAAM,OAAAC,OAAwB,eCA3C,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAeF,GAAG,CAAC,CAACG,CAAE,IAAc,CACzC,IAAMC,EAAeD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAC5C,OAAOC,EAAa,EAAE,IAAI,EAAE,IAAIA,EAAa,EAAE,IAAI,CAAC,CAC5D,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAUL,GAAG,CAAC,CAACG,EAAIG,CAAC,IAAoB,CAC7C,IAAMF,EAAeD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,EAC5C,OAAOC,EAAa,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIF,EAAa,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAI,CAAC,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBP,GAAG,CAAC,CAACG,EAAIG,CAAC,IACzBD,GAAQF,EAAIF,GAAKK,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYE,GAAiBR,GAAG,CAAC,CAACS,EAAGC,EAAGC,CAAC,IAA2B,CAC7D,IAAMC,EAAIH,EAAE,IAAI,EAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,IAAIC,CAAC,EAAE,IAAIT,GAAKU,CAAC,CAAC,EAAE,MAAM,EAC9D,OAAOC,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAID,CAAC,CAC/D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ED1CM,IAAME,GAAWC,GAAG,CAAC,CAACC,EAAIC,CAAC,IAA4B,CACtD,IAAMC,EAAOC,GAAK,IAAMF,CAAC,EACzB,OAAOG,GAAIC,GAAQL,EAAIE,CAAI,EAAGG,GAAQL,EAAIE,EAAK,EAAE,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EEbD,OAAS,MAAAI,GAAiB,SAAAC,OAAa,eAKhC,IAAMC,GAAaC,GAAG,CAAC,CAACC,EAAIC,EAAMC,CAAW,IACrCC,EAAOC,GAAQJ,EAAIC,CAAI,EAAGI,GAAM,CAAC,EAAGH,CAAW,CAC7D,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYI,GAAoBP,GAAG,CAAC,CAACC,EAAIC,EAAMC,CAAW,IAC5CC,EAAOI,GAAeP,EAAIC,CAAI,EAAGI,GAAM,CAAC,EAAGH,CAAW,CACpE,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYM,GAAWT,GAAG,CAAC,CAACC,EAAIC,CAAI,IACtBQ,GAAKL,GAAQJ,EAAIC,CAAI,EAAGI,GAAM,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EAEYK,GAAkBX,GAAG,CAAC,CAACC,EAAIC,CAAI,IAC7BQ,GAAKF,GAAeP,EAAIC,CAAI,EAAGI,GAAM,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYM,GAAOH,GL1Cb,IAAMI,GAAmBC,GAAG,CAAC,CAACC,CAAE,IAAoB,CACnD,IAAMC,EAAKC,GAAWF,EAAIG,GAAK,EAAG,GAAG,CAAC,EAAE,IAAIA,GAAK,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAClE,OAAOC,GAAKH,EAAG,MAAM,EAAGA,EAAG,MAAM,CAAC,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYI,GAAsBN,GAAG,CAAC,CAACC,CAAE,IAAoB,CACtD,IAAMM,EAAIR,GAAiBK,GAAKH,EAAG,EAAGA,EAAG,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3DO,EAAQD,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,EAEzDE,EAAQC,GAAQF,CAAK,EAClB,IAAIG,GAASJ,EAAE,GAAIH,GAAK,EAAG,CAAC,CAAC,EAC7B,IAAIQ,GAAKC,GAASZ,EAAIa,GAAM,CAAC,CAAC,EAAGA,GAAM,IAAK,CAAC,CAAC,EAC9C,IACOC,EAAOC,GAAQf,EAAIG,GAAK,MAAO,GAAI,CAAC,EAAGU,GAAM,CAAC,EAAGA,GAAM,GAAI,CAAC,EACnD,IAAIH,GAASV,EAAIG,GAAK,KAAO,CAAC,CAAC,CAAC,EAChC,IAAIO,GAASV,EAAIG,GAAK,IAAK,GAAI,CAAC,CAAC,EACjC,SAAS,CAC1B,EACC,MAAM,OAAO,EAEhBa,EAAQN,GAASV,EAAIG,GAAK,KAAM,GAAI,CAAC,EAAE,MAAM,OAAO,EAC1D,OAAOC,GAAKI,EAAM,SAAS,EAAE,IAAIQ,CAAK,EAAGA,CAAK,CACtD,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAeZ,GMzC5B,OAAS,MAAAa,GAAgB,QAAAC,GAAM,QAAAC,GAAM,WAAAC,GAAS,QAAAC,GAAM,SAAAC,GAAO,QAAAC,OAAY,eCAvE,OAAS,MAAAC,GAAU,SAAAC,OAAa,eAEzB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAG,IAA0B,CACpD,IAAMC,EAASD,EAAI,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAG,EAAE,MAAM,QAAQ,EAC9D,OAAOH,GAAME,EAAE,IAAIC,CAAG,CAAC,EAAE,IAAIA,CAAG,EAAE,IAAIC,CAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EDTD,IAAMC,GAAaC,GAAK,GAAI,EACtBC,GAAgBC,GAAM,IAAK,EAEpBC,GAAoBC,GAAG,CAAC,CAACC,EAAKC,EAAKC,CAAa,IAA+B,CACpF,IAAMC,EAAaC,GAAQH,EAAKC,CAAa,EAC7C,OAAOG,GAAQL,EAAKG,CAAU,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,gBAAiB,KAAM,MAAO,CAC9C,CACR,CAAC,EAEYG,GAAqBP,GAAG,CAAC,CAACQ,EAAIC,EAAWC,CAAW,IAAgC,CACzF,IAAMC,EAAaF,EAAU,IAAIb,GAAK,IAAM,GAAI,CAAC,EAAE,MAAM,YAAY,EAC/DgB,EAAgBJ,EAAG,IAAIG,CAAU,EAAE,IAAI,EAAE,MAAM,eAAe,EAC9DE,EAAUC,GAAKF,EAAc,EAAGjB,GAAW,CAAC,EAAE,IAAImB,GAAKF,EAAc,EAAGjB,GAAW,CAAC,CAAC,EAAE,MAAM,SAAS,EACtGoB,EAAYD,GAAKN,EAAG,IAAIC,CAAS,EAAE,IAAI,EAAE,EAAGZ,EAAa,EACtD,IAAIiB,GAAKN,EAAG,IAAIC,CAAS,EAAE,IAAI,EAAE,EAAGZ,GAAc,IAAI,CAAC,CAAC,CAAC,EACzD,IACOiB,GAAKN,EAAG,IAAIC,CAAS,EAAE,IAAI,EAAE,EAAGZ,EAAa,EAAE,IACvCiB,GAAKN,EAAG,IAAIC,CAAS,EAAE,IAAI,EAAE,EAAGZ,GAAc,IAAI,CAAC,CAAC,CAC5D,CACR,EACC,MAAM,WAAW,EACpBmB,EAAclB,GAAM,IAAK,EAAE,MAAM,aAAa,EAC9CmB,EAAWH,GAAKF,EAAc,EAAGjB,GAAW,EAAE,IAAIqB,CAAW,CAAC,EAC3D,IAAIF,GAAKF,EAAc,EAAGjB,GAAW,EAAE,IAAIqB,CAAW,CAAC,CAAC,EACxD,IAAIH,CAAO,EACX,MAAM,UAAU,EACnBK,EAASC,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,QAAQ,EAC9C,OAAAD,EAAO,IAAI,OAAOR,EAAY,IAAI,IAAIG,CAAO,CAAC,EAC9CK,EAAO,EAAE,OAAOL,CAAO,EACvBK,EAAO,IAAI,OAAOA,EAAO,IAAI,IAAIE,GAAK,EAAG,EAAG,CAAC,EAAE,IAAIL,CAAS,CAAC,CAAC,EAC9DG,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAIH,CAAS,CAAC,EACvCG,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAID,CAAQ,CAAC,EAC/BC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,cAAe,KAAM,MAAO,CAC5C,CACR,CAAC,EAEYG,GAAcrB,GAAG,CAAC,CAACQ,EAAIP,EAAKQ,EAAWN,CAAa,IAAqC,CAC9F,IAAMO,EAAcX,GAAkBE,EAAKQ,EAAWN,CAAa,EACnE,OAAOI,GAAmBC,EAAIC,EAAWC,CAAW,CAC5D,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,gBAAiB,KAAM,MAAO,CAC9C,CACR,CAAC,EEjED,OAAS,MAAAY,GAAwC,MAAAC,GAAI,QAAAC,GAAM,SAAAC,GAAO,SAAAC,EAAO,QAAAC,GAAM,OAAAC,OAAW,eAE1F,IAAMC,GAAcF,GAAK,GAAI,EACvBG,GAAkBJ,EAAM,CAAG,EAC3BK,GAAsBJ,GAAK,GAAM,CAAG,EAEpCK,GAAaV,GAAG,CAAC,CAACW,EAAIC,EAAOC,CAAS,IAAmC,CACvE,IAAMC,EAAaH,EAAG,IAAIJ,EAAW,EAAE,MAAM,YAAY,EACnDQ,EAAWH,EAAM,IAAI,EAAE,MAAM,UAAU,EACvCI,EAAoBD,EAAS,KAAK,EAAE,IAAIX,EAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,mBAAmB,EAClGa,EAAUF,EAAS,MAAM,EAAE,MAAM,SAAS,EAC1CG,EAAad,EAAM,CAAC,EAAE,MAAM,YAAY,EAE9CF,GAAKI,GAAI,CAAC,EAAG,IAAM,CACXW,EAAQ,OAAOA,EAAQ,IAAI,EAAG,EAAE,MAAM,CAAC,EACvCC,EAAW,UAAU,CAAC,EACtBjB,GAAGgB,EAAQ,MAAM,CAAC,EAAG,IAAM,CACnBd,GAAM,CACd,CAAC,CACT,CAAC,EAED,IAAIgB,EAAQf,EAAM,EAAE,EAAE,MAAM,OAAO,EAC7BgB,EAAaF,EAAW,IAAI,CAAC,EAAE,IAAIJ,EAAW,EAAE,MAAM,CAAC,EAAE,MAAM,YAAY,EAEjFb,GAAGmB,EAAW,YAAYP,EAAU,OAAO,EAAE,IAAI,GAAG,CAAC,EAAG,IAAM,CACtDZ,GAAGmB,EAAW,YAAYJ,CAAiB,EAAG,IAAM,CAC5Cf,GAAGW,EAAM,SAAS,CAAC,EAAG,IAAM,CACpBX,GAAGmB,EAAW,SAASJ,EAAkB,IAAI,GAAG,CAAC,EAAG,IAAM,CAClDG,EAAM,OAAO,EAAE,CACvB,CAAC,CACT,CAAC,CACT,CAAC,EAAE,KAAK,IAAM,CACNlB,GAAGmB,EAAW,MAAM,EAAE,EAAG,IAAM,CACvBnB,GAAGY,EAAU,YAAY,CAAC,EAAG,IAAM,CAC3BM,EAAM,OAAO,EAAE,CACvB,CAAC,CACT,CAAC,EAAE,KAAK,IAAM,CACNlB,GAAGmB,EAAW,SAAS,CAAC,EAAG,IAAM,CACzBA,EAAW,UAAU,CAAC,CAC9B,CAAC,EACD,IAAMC,EAAaN,EAAS,IAAIX,EAAM,EAAE,EAAE,IAAIgB,CAAU,CAAC,EAAE,MAAM,YAAY,EAC7ED,EAAM,OAAOE,EAAW,IAAI,IAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC3D,CAAC,CACT,CAAC,CACT,CAAC,EAED,IAAMC,EAAMjB,GAAKS,EAAW,EAAE,MAAM,EAAGA,EAAW,CAAC,EAAE,MAAM,KAAK,EAChEb,GAAGqB,EAAI,EAAE,SAAS,CAAC,EAAG,IACPlB,EAAM,CAAC,CACrB,EACDH,GAAGqB,EAAI,EAAE,SAAS,CAAC,EAAG,IACPlB,EAAM,CAAC,CACrB,EACDH,GAAGqB,EAAI,EAAE,iBAAiB,CAAC,EAAG,IACflB,EAAM,CAAC,CACrB,EACDH,GAAGqB,EAAI,EAAE,iBAAiB,CAAC,EAAG,IACflB,EAAM,CAAC,CACrB,EAED,IAAMmB,EAAMnB,EAAM,CAAC,EAAE,MAAM,KAAK,EAEhCH,GAAGkB,EAAM,SAAS,EAAG,EAAG,IAAM,CACtBI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACQ,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,GAAG,EAAG,IAAM,CAC3BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,IAAI,EAAG,IAAM,CAC5BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EACA,OAAOe,EAAM,SAAS,IAAI,EAAG,IAAM,CAC5BI,EAAI,OACInB,EAAM,CAAC,EACE,IAAIA,EAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EACpB,IAAIA,EAAM,CAAC,EAAE,IAAI,GAAG,CAAC,EACrB,IAAIA,EAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EACtB,IAAIA,EAAM,CAAC,EAAE,IAAI,KAAK,CAAC,CACxC,CACR,CAAC,EAET,IAAMoB,EAAQF,EAAI,IAAIjB,GAAK,EAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,OAAO,EACvD,OAAOkB,EACE,IAAInB,EAAM,CAAC,EAAE,IAAIoB,EAAM,EAAE,IAAIA,EAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7C,MAAM,EACN,IAAI,CAAC,CACtB,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EAEYC,GAAczB,GAAG,CAAC,CAACW,EAAIC,EAAOC,CAAS,IACrCH,GAAWC,EAAIC,EAAOC,CAAS,CAC7C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EAEYa,GAAY1B,GAAG,CAAC,CAACW,EAAIC,CAAK,IACxBF,GAAWC,EAAIC,EAAM,QAAQ,EAAGR,EAAM,CAAC,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,KAAM,CACrC,CACR,CAAC,EAEYuB,GAAS3B,GAAG,CAAC,CAACW,EAAIC,CAAK,IACrBF,GAAWC,EAAIC,EAAOJ,EAAe,CACnD,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYoB,GAAa5B,GAAG,CAAC,CAACW,EAAIkB,CAAC,IAA2B,CACvD,IAAIC,EAAM1B,EAAM,CAAC,EAAE,MAAM,KAAK,EAC9B,OAAAF,GAAKI,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAyB,CAAE,IAAM,CAChB,IAAMT,EAAMX,EAAG,IAAIN,GAAK0B,EAAE,QAAQ,EAAG,CAAC,EAAE,IAAIxB,EAAW,EAAE,IAAIE,EAAmB,CAAC,EAAE,MAAM,KAAK,EAC1FG,EAAQR,EAAM,CAAC,EAAE,MAAM,OAAO,EAClCH,GAAG8B,EAAE,MAAMzB,GAAI,CAAC,CAAC,EAAG,IAAM,CAClBM,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EAAE,KAAK,IAAM,CACNjB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACDC,EAAI,UAAUH,GAAOL,EAAKV,CAAK,CAAC,CACxC,CAAC,EACMkB,CACf,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAahC,GAAG,CAAC,CAACW,EAAIkB,CAAC,IAA2B,CACvD,IAAIC,EAAM1B,EAAM,CAAC,EAAE,MAAM,KAAK,EAC9B,OAAAF,GAAKI,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAyB,CAAE,IAAM,CAChB,IAAMT,EAAMX,EAAG,IAAIN,GAAK0B,EAAE,QAAQ,EAAG,CAAC,EAAE,IAAIxB,EAAW,EAAE,IAAIE,EAAmB,CAAC,EAAE,MAAM,KAAK,EAC1FG,EAAQR,EAAM,CAAC,EAAE,MAAM,OAAO,EAClCH,GAAG8B,EAAE,MAAMzB,GAAI,CAAC,CAAC,EAAG,IAAM,CAClBM,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACQ,OAAOE,EAAE,MAAM,CAAC,EAAG,IAAM,CAClBnB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACA,KAAK,IAAM,CACJjB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACTC,EAAI,UAAUH,GAAOL,EAAKV,CAAK,CAAC,CACxC,CAAC,EACMkB,CACf,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAajC,GAAG,CAAC,CAACW,EAAIkB,CAAC,IAA2B,CACvD,IAAIC,EAAM1B,EAAM,CAAC,EAAE,MAAM,KAAK,EAC9B,OAAAF,GAAKI,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAyB,CAAE,IAAM,CAChB,IAAMT,EAAMX,EAAG,IAAIN,GAAK0B,EAAE,QAAQ,EAAG,CAAC,EAAE,IAAIxB,EAAW,EAAE,IAAIE,EAAmB,CAAC,EAAE,MAAM,KAAK,EAC1FG,EAAQR,EAAM,CAAC,EAAE,MAAM,OAAO,EAClCH,GAAG8B,EAAE,MAAM,CAAC,EAAG,IAAM,CACbnB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACQ,OAAOE,EAAE,MAAM,CAAC,EAAG,IAAM,CAClBnB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACA,OAAOE,EAAE,MAAM,CAAC,EAAG,IAAM,CAClBnB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACA,KAAK,IAAM,CACJjB,EAAM,OAAOiB,EAAE,CAAC,CACxB,CAAC,EACTC,EAAI,UAAUH,GAAOL,EAAKV,CAAK,CAAC,CACxC,CAAC,EACMkB,CACf,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYI,GAAalC,GAAG,CAAC,CAACW,EAAIwB,CAAM,IAA2B,CAC5D,IAAIL,EAAM1B,EAAM,CAAC,EAAE,MAAM,KAAK,EAExBgC,EAAQzB,EACL,IAAIN,GAAK,EAAG,CAAC,EAAE,IAAIE,EAAW,EAAE,IAAIE,EAAmB,CAAC,EACxD,IAAIF,GAAY,IAAIF,GAAK,EAAG,CAAC,CAAC,CAAC,EAC/B,MAAM,OAAO,EAChBgC,EAAQ1B,EACL,IAAIN,GAAK,EAAG,CAAC,EAAE,IAAIE,EAAW,EAAE,IAAIE,EAAmB,CAAC,EACxD,IAAIF,GAAY,IAAIF,GAAK,EAAG,CAAC,CAAC,CAAC,EAC/B,MAAM,OAAO,EAChBiC,EAAQ3B,EACL,IAAIN,GAAK,EAAG,CAAC,EAAE,IAAIE,EAAW,EAAE,IAAIE,EAAmB,CAAC,EACxD,IAAIF,GAAY,IAAIF,GAAK,EAAG,CAAC,CAAC,CAAC,EAC/B,MAAM,OAAO,EAChBkC,EAAQ5B,EACL,IAAIN,GAAK,EAAG,CAAC,EAAE,IAAIE,EAAW,EAAE,IAAIE,EAAmB,CAAC,EACxD,IAAIF,GAAY,IAAIF,GAAK,EAAG,CAAC,CAAC,CAAC,EAC/B,MAAM,OAAO,EAEtB,OAAAyB,EAAI,UAAUH,GAAOS,EAAOD,EAAO,QAAQ7B,GAAI,CAAC,CAAC,EAAE,QAAQA,GAAI,CAAC,CAAC,CAAC,CAAC,EACnEwB,EAAI,UAAUH,GAAOU,EAAOF,EAAO,QAAQ7B,GAAI,CAAC,CAAC,EAAE,QAAQA,GAAI,CAAC,CAAC,CAAC,CAAC,EACnEwB,EAAI,UAAUH,GAAOW,EAAOH,EAAO,QAAQ7B,GAAI,CAAC,CAAC,EAAE,QAAQA,GAAI,CAAC,CAAC,CAAC,CAAC,EACnEwB,EAAI,UAAUH,GAAOY,EAAOJ,EAAO,QAAQ7B,GAAI,CAAC,CAAC,EAAE,QAAQA,GAAI,CAAC,CAAC,CAAC,CAAC,EAE5DwB,CACf,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EC1UD,OAAS,MAAAU,GAA0B,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,eAE1D,IAAMC,GAAYL,GAAG,CAAC,CAACM,EAAGC,CAAG,IACrBH,GAAIE,EAAGL,GAAM,CAAC,EAAE,IAAIK,CAAC,EAAGC,CAAG,CACzC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYC,GAAWR,GAAG,CAAC,CAACM,EAAGC,CAAG,IACpBH,GAAIE,EAAGJ,GAAK,CAAC,EAAE,IAAII,CAAC,EAAGC,CAAG,CACxC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAWT,GAAG,CAAC,CAACM,EAAGC,CAAG,IACpBH,GAAIE,EAAGH,GAAK,CAAC,EAAE,IAAIG,CAAC,EAAGC,CAAG,CACxC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYG,GAAOV,GAAG,CAAC,CAACM,EAAGC,CAAG,IAChBH,GAAIE,EAAGA,EAAE,SAAS,EAAGC,CAAG,CACtC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EC5CD,OAAS,MAAAI,OAAuB,eCAhC,OAAS,MAAAC,OAAuB,eAEzB,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAE,IAAqB,CAC1C,IAAMC,EAAcD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,aAAa,EACxD,OAAAC,EAAY,OAAOA,EAAY,IAAI,CAAC,EAC7BA,EAAY,EAAE,IAAI,EAAE,IAAIA,EAAY,EAAE,IAAI,OAAQ,EAAE,IAAIA,EAAY,EAAE,IAAI,EAAG,CAAC,CAAC,CAC9F,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EDLM,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACrBC,GAAKC,GAAOH,CAAE,EAAGC,CAAI,CACnC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACpCC,EAAOH,GAAOH,CAAE,EAAGC,EAAMI,CAAW,CAClD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAAMT,GE5BnB,OAAS,MAAAU,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAGvD,IAAMC,GAAcC,GAAK,GAAI,EACvBC,GAAsBD,GAAK,GAAM,CAAG,EAE7BE,GAASC,GAAG,CAAC,CAACC,EAAIC,CAAC,IAA0B,CAClD,IAAMC,EAAMC,GAAK,CAAC,EAAE,MAAM,KAAK,EACzBC,EAAOT,GAAY,IAAIE,GAAoB,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7D,OAAAK,EAAI,EAAE,OACEG,GAAKV,GAAY,EAAE,OAAO,EAAGK,EAAG,CAAC,EACxB,IAAIK,GAAKL,EAAG,EAAGI,EAAK,CAAC,CAAC,EACtB,IAAIC,GAAKV,GAAY,EAAE,OAAO,EAAGK,EAAG,CAAC,CAAC,EACtC,IAAIK,GAAKL,EAAG,EAAGI,EAAK,CAAC,CAAC,EACtB,IAAI,EAAG,CACxB,EACAF,EAAI,OAAOA,EAAI,IAAII,GAAWN,EAAIC,CAAC,CAAC,CAAC,EAC9BC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECzBD,OAAS,MAAAK,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,QAAAC,OAAY,eAI3E,IAAMC,GAAcC,GAAK,GAAI,EACvBC,GAAsBD,GAAK,GAAM,CAAG,EAE7BE,GAAiBC,GAAG,CAAC,CAACC,EAAIC,EAAKC,EAAOC,CAAM,IAAuC,CACxF,IAAMC,EAAMC,GAAK,CAAC,EAAE,MAAM,KAAK,EACzBC,EAAON,EAAG,IAAIC,CAAG,EAAE,MAAM,MAAM,EACrCG,EAAI,OAAOA,EAAI,IAAIC,GAAKH,EAAO,CAAC,EAAE,IAAIK,GAAWD,EAAK,IAAI,EAAG,EAAGH,CAAM,CAAC,CAAC,CAAC,EACzEG,EAAK,OAAOA,EAAK,IAAIX,GAAY,IAAIC,GAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACnD,IAAMY,EAAOb,GAAY,IAAIE,GAAoB,IAAI,CAAC,EAAE,IAAID,GAAK,EAAG,EAAG,CAAC,EACxE,OAAAQ,EAAI,EAAE,UACEK,GAAK,EAAGH,EAAK,CAAC,EACL,IAAIG,GAAKH,EAAK,EAAGE,EAAK,CAAC,CAAC,EACxB,IAAIC,GAAKd,GAAY,EAAE,IAAI,GAAI,EAAGW,EAAK,CAAC,CAAC,EACzC,IAAIG,GAAKH,EAAK,EAAGE,EAAK,CAAC,CAAC,EACxB,IAAI,EAAG,CACxB,EACAJ,EAAI,OAAOA,EAAI,IAAIM,GAAWJ,EAAML,CAAG,CAAC,CAAC,EAClCG,CACf,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYO,GAAQZ,GAAG,CAAC,CAACC,EAAIC,CAAG,IAClBH,GAAeE,EAAIC,EAAKW,GAAK,EAAG,EAAG,CAAC,EAAGC,GAAM,GAAI,CAAC,CAChE,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EC1CD,OAAS,MAAAC,OAAuB,eCAhC,OAAS,MAAAC,OAAuB,eAEzB,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAE,IAAqB,CAC1C,IAAMC,EAAWD,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,UAAU,EACpD,OAAOC,EAAS,EAAE,IAAI,EAAE,IAAI,OAAQ,EAAE,IAAIA,EAAS,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAS,EAAE,OAAO,EAAE,IAAI,EAAG,CAAC,CACvG,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAeJ,GAAG,CAAC,CAACE,EAAIG,CAAM,IAA2B,CAC9D,IAAMF,EAAWD,EAAG,IAAIG,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,UAAU,EACvD,OAAOF,EAAS,EAAE,IAAI,EAAE,IAAI,OAAQ,EAAE,IAAIA,EAAS,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAS,EAAE,OAAO,EAAE,IAAI,EAAG,CAAC,CACvG,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EDhBM,IAAMG,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IACrBC,GAAKC,GAAOH,CAAE,EAAGC,CAAI,CACnC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACC,EAAIC,EAAMI,CAAW,IACpCC,EAAOH,GAAOH,CAAE,EAAGC,EAAMI,CAAW,CAClD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,cAAe,KAAM,OAAQ,CAC7C,CACR,CAAC,EAEYE,GAAMT,GE5BnB,OAAS,UAAAU,GAAQ,QAAAC,OAAY,kBAEtB,IAAMC,GAAOF,GAAO,CACnB,UAAWC,GAAK,EAChB,UAAWA,GAAK,CACxB,CAAC,ECLD,OAAS,MAAAE,OAAgB,kBAGlB,IAAMC,GAAeD,GAAG,CAAC,CAACE,CAAG,IACrBA,EAAI,UAAU,IAAIA,EAAI,SAAS,EAAE,IAAI,EAAG,CACtD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,OAAsB,kBAGxB,IAAMC,GAAcD,GAAG,CAAC,CAACE,EAAKC,CAAK,IAC3BA,EAAM,EACJ,YAAYD,EAAI,UAAU,CAAC,EAC3B,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,EAC1C,IAAIC,EAAM,EAAE,YAAYD,EAAI,UAAU,CAAC,CAAC,EACxC,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,EAC1C,IAAIC,EAAM,EAAE,YAAYD,EAAI,UAAU,CAAC,CAAC,EACxC,IAAIC,EAAM,EAAE,cAAcD,EAAI,UAAU,CAAC,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EClBD,OAAS,MAAAE,OAAgB,kBAGlB,IAAMC,GAAWD,GAAG,CAAC,CAACE,CAAG,IACjBA,EAAI,UAAU,IAAIA,EAAI,SAAS,EAAE,IAAI,CACnD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,OAAuB,kBAGzB,IAAMC,GAASC,GAAG,CAAC,CAACC,EAAKC,CAAK,IACtBC,GAAK,CACJ,UAAWF,EAAI,UAAU,IAAIC,CAAK,EAClC,UAAWD,EAAI,UAAU,IAAIC,CAAK,CAC1C,CAAC,CACR,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,OAAY,kBAG9B,IAAMC,GAAgBF,GAAG,CAAC,CAACG,EAAKC,EAAWC,CAAM,IAAoC,CACpF,IAAMC,EAAOH,EAAI,UAAU,IAAIC,CAAS,EAAE,IAAIC,CAAM,EAC9CE,EAAOJ,EAAI,UAAU,IAAIC,CAAS,EAAE,IAAIC,CAAM,EAC9CG,EAAKF,EAAK,IAAIC,CAAI,EAClBE,EAAKH,EAAK,IAAIC,CAAI,EAClBG,EAAQF,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EAC/BG,EAAOF,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EACpC,OAAOR,GAAKS,EAAOC,CAAI,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,ECnBD,OAAS,MAAAC,GAAiB,OAAAC,GAAK,OAAAC,OAAW,kBAInC,IAAMC,GAASC,GAAG,CAAC,CAACC,CAAG,IAA4B,CAClD,IAAMC,EAAOC,GAASF,CAAG,EAAE,IAAI,EAAG,EAAE,MAAM,MAAM,EAC1CG,EAASH,EAAI,UAAU,IAAIC,CAAI,EAAE,MAAM,QAAQ,EAC/CG,EAASC,GAAIC,GAAIL,EAAK,CAAC,EAAGI,GAAIC,GAAIL,EAAK,CAAC,EAAGK,GAAIL,EAAK,CAAC,CAAC,CAAC,EAAE,MAAM,QAAQ,EAC7E,OAAOM,GAAK,CACJ,UAAWJ,EAAO,IAAIC,CAAM,EAC5B,UAAWD,EAAO,IAAIC,CAAM,CACpC,CAAC,CACT,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EChBD,OAAS,MAAAI,GAAW,UAAAC,GAAQ,SAAAC,OAAa,kBAGlC,IAAMC,GAAOH,GAAG,CAAC,CAACI,CAAG,IACbH,GAAOC,GAAME,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAGA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAG,CACvE,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,GAAU,UAAAC,GAAQ,SAAAC,GAAO,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,kBAInD,IAAMC,GAAsBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAgC,CACvE,IAAMC,EAAMC,GAAIJ,EAAGA,CAAC,EAAE,MAAM,KAAK,EAC3BK,EAAMD,GAAIJ,EAAGC,CAAC,EAAE,MAAM,KAAK,EAC3BK,EAAMF,GAAIH,EAAGA,CAAC,EAAE,MAAM,KAAK,EAC3BM,EAAMH,GAAIF,EAAGF,CAAC,EAAE,MAAM,KAAK,EAC3BQ,EAAMJ,GAAIF,EAAGD,CAAC,EAAE,MAAM,KAAK,EAC3BQ,EAAQN,EAAI,IAAIG,CAAG,EAAE,IAAID,EAAI,IAAIA,CAAG,CAAC,EAAE,MAAM,OAAO,EACpDK,EAAIJ,EAAI,IAAIC,CAAG,EAAE,IAAIF,EAAI,IAAIG,CAAG,CAAC,EAAE,IAAIC,CAAK,EAAE,MAAM,GAAG,EACvDE,EAAIR,EAAI,IAAIK,CAAG,EAAE,IAAIH,EAAI,IAAIE,CAAG,CAAC,EAAE,IAAIE,CAAK,EAAE,MAAM,GAAG,EAC7D,OAAOG,GAAKC,GAAM,CAAC,EAAE,IAAIH,CAAC,EAAE,IAAIC,CAAC,EAAGD,EAAGC,CAAC,CAChD,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYG,GAAcf,GAAG,CAAC,CAACgB,CAAG,IACpBjB,GAAoBiB,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAA0BjB,GAAG,CAAC,CAACgB,EAAKE,CAAG,IAAkC,CAC9E,IAAMjB,EAAIe,EAAI,EACRd,EAAIc,EAAI,EACRb,EAAIa,EAAI,EACRG,EAAKlB,EAAE,IAAIiB,CAAG,EAAE,MAAM,IAAI,EAC1BE,EAAKlB,EAAE,IAAIgB,CAAG,EAAE,MAAM,IAAI,EAC1BG,EAAKlB,EAAE,IAAIe,CAAG,EAAE,MAAM,IAAI,EAC1BI,EAAYC,GAAKP,CAAG,EAAE,MAAM,MAAM,EACxC,OAAOH,GAAKW,GAAOC,GAAML,EAAIC,CAAE,CAAC,EAAGG,GAAOC,GAAMJ,EAAIF,CAAE,CAAC,EAAGK,GAAOC,GAAMN,EAAIC,CAAE,CAAC,CAAC,EAAE,IAAIE,CAAS,CACtG,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECjDD,OAAS,MAAAI,OAAgB,kBAGlB,IAAMC,GAAmBD,GAAG,CAAC,CAACE,CAAG,IACzBA,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAI,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,ECTD,OAAS,MAAAC,GAAU,OAAAC,GAAK,UAAAC,GAAQ,SAAAC,GAAO,aAAAC,GAAW,OAAAC,GAAK,OAAAC,GAAW,SAAAC,GAAO,MAAAC,OAAU,kBAI5E,IAAMC,GAAyBC,GAAG,CAAC,CAACC,EAAKC,EAAWC,CAAG,IAAwC,CAC9F,IAAM,EAAIF,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAKF,EAAE,IAAI,CAAC,EACZG,EAAKF,EAAE,IAAI,CAAC,EACZ,EAAIF,EAAI,IAAIK,GAAIN,EAAWC,EAAI,IAAI,CAAC,CAAC,EAAE,IAAID,CAAS,CAAC,EACrDO,EAAK,EAAE,IAAI,CAAC,EACZC,EAAUC,GAAoBL,EAAIC,EAAIE,CAAE,EAE9C,OAAAG,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMG,EAAKR,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAIC,GAAOF,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIK,EAAI,EAAE,IAAIT,CAAC,CAAC,EAAE,IAAIU,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOV,EAAE,IAAIY,EAAE,IAAIF,CAAC,EAAE,IAAID,CAAE,CAAC,CACrC,CAAC,EAEDD,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMU,EAAK,EAAE,IAAIf,CAAC,EAAE,MAAM,IAAI,EACxBS,EAAIC,GAAOK,CAAE,EAAE,MAAM,GAAG,EACxBJ,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIY,EAAI,EAAE,IAAIf,CAAC,CAAC,EAAE,IAAIS,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOT,EAAE,IAAIW,EAAE,IAAIF,CAAC,EAAE,IAAIM,CAAE,CAAC,CACrC,CAAC,EAEDR,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMI,EAAIC,GAAOT,CAAE,EAAE,MAAM,GAAG,EACxBU,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIF,EAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIQ,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAO,EAAE,IAAIE,EAAE,IAAIF,CAAC,EAAE,IAAIR,CAAE,CAAC,CACrC,CAAC,EAEM,EAAE,IAAII,EAAQ,CAAC,EAAE,IAAIN,EAAE,IAAIM,EAAQ,CAAC,CAAC,EAAE,IAAIL,EAAE,IAAIK,EAAQ,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,yBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYW,GAAerB,GAAG,CAAC,CAACC,EAAKE,CAAG,IAAkC,CACnE,IAAMmB,EAAIrB,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAKF,EAAE,IAAIkB,CAAC,EACZf,EAAKF,EAAE,IAAIiB,CAAC,EACZC,EAASC,GAAUC,GAAMlB,EAAID,CAAE,CAAC,EAChC,EAAIH,EAAI,IAAIK,GAAIe,EAAQpB,EAAI,IAAImB,CAAC,CAAC,EAAE,IAAIC,CAAM,CAAC,EAC/Cd,EAAK,EAAE,IAAIa,CAAC,EACZZ,EAAUC,GAAoBL,EAAIC,EAAIE,CAAE,EAE9C,OAAAG,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMG,EAAKR,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAIC,GAAOF,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIK,EAAI,EAAE,IAAIT,CAAC,CAAC,EAAE,IAAIU,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOV,EAAE,IAAIY,EAAE,IAAIF,CAAC,EAAE,IAAID,CAAE,CAAC,CACrC,CAAC,EAEDD,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMU,EAAKE,EAAE,IAAIjB,CAAC,EAAE,MAAM,IAAI,EACxBS,EAAIC,GAAOK,CAAE,EAAE,MAAM,GAAG,EACxBJ,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIY,EAAI,EAAE,IAAIf,CAAC,CAAC,EAAE,IAAIS,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOT,EAAE,IAAIW,EAAE,IAAIF,CAAC,EAAE,IAAIM,CAAE,CAAC,CACrC,CAAC,EAEDR,GAAGF,EAAQ,EAAE,SAAS,CAAC,EAAG,IAAM,CACxB,IAAMI,EAAIC,GAAOT,CAAE,EAAE,MAAM,GAAG,EACxBU,EAAIC,GAAIC,GAAM,CAAC,EAAGC,GAAIX,GAAIF,EAAI,EAAE,IAAIgB,CAAC,CAAC,EAAE,IAAIR,CAAC,EAAGA,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOQ,EAAE,IAAIN,EAAE,IAAIF,CAAC,EAAE,IAAIR,CAAE,CAAC,CACrC,CAAC,EAEMgB,EAAE,IAAIZ,EAAQ,CAAC,EAAE,IAAIN,EAAE,IAAIM,EAAQ,CAAC,CAAC,EAAE,IAAIL,EAAE,IAAIK,EAAQ,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECpFD,OAAS,MAAAgB,GAAgB,SAAAC,GAAO,OAAAC,OAAW,kBAGpC,IAAMC,GAAkBH,GAAG,CAAC,CAACI,EAAKC,CAAG,IAAkC,CACtE,IAAMC,EAASF,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCE,EAASH,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCG,EAASJ,EAAI,EAAE,IAAIC,CAAG,EAAE,MAAM,QAAQ,EACtCI,EAAIR,GAAMM,EAAQC,CAAM,EAAE,MAAM,GAAG,EACnCE,EAAIT,GAAMO,EAAQF,CAAM,EAAE,MAAM,GAAG,EACnCK,EAAIV,GAAMK,EAAQC,CAAM,EAAE,MAAM,GAAG,EACzC,OAAOL,GAAIO,EAAGC,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAIR,GAAIO,EAAGE,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EClBD,OAAS,MAAAC,GAAiB,SAAAC,GAAO,OAAAC,GAAK,QAAAC,GAAM,QAAAC,GAAM,OAAAC,OAAW,kBCA7D,OAAS,MAAAC,OAAU,eAGZ,IAAMC,GAAWD,GAAG,CAAC,CAACE,CAAC,IACdA,EAAW,IAAIA,CAAS,CACvC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDLM,IAAMC,GAAaC,GAAG,CAAC,CAACC,EAAKC,CAAG,IAAmC,CAClE,IAAMC,EAAIF,EAAI,EACRG,EAAIH,EAAI,EACRI,EAAIJ,EAAI,EACRK,EAAMF,EAAE,IAAID,CAAC,EACbI,EAAKL,EAAI,IAAIC,CAAC,EACdK,EAAMH,EAAE,IAAID,CAAC,EACbK,EAAKP,EAAI,IAAIE,CAAC,EACdM,EAAMP,EAAE,IAAIE,CAAC,EACbM,EAAKT,EAAI,IAAIG,CAAC,EACdO,EAAMC,GAAMP,EAAKI,CAAG,EAEpBI,EAAKC,GAAKC,GAAIH,GAAMP,EAAKM,CAAG,EAAGL,CAAE,CAAC,EAClCU,EAAKF,GAAKC,GAAIH,GAAML,EAAKI,CAAG,EAAGH,CAAE,CAAC,EAClCS,EAAKH,GAAKC,GAAIH,GAAMH,EAAKE,CAAG,EAAGD,CAAE,CAAC,EAClCQ,EAAUL,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAE3BE,EAAQC,GAASf,EAAI,IAAIU,GAAIV,EAAKC,CAAE,EAAE,IAAIc,GAASf,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ee,EAAQD,GAASb,EAAI,IAAIQ,GAAIR,EAAKC,CAAE,EAAE,IAAIY,GAASb,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ec,EAAQF,GAASX,EAAI,IAAIM,GAAIN,EAAKC,CAAE,EAAE,IAAIU,GAASX,CAAG,CAAC,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAE,CAAC,EAC5Ea,EAAeC,GAAIA,GAAIL,EAAOE,CAAK,EAAGC,CAAK,EAE3CG,EAAgBV,GAAIJ,EAAKL,CAAE,EAAE,IAAIS,GAAIJ,EAAKL,CAAE,CAAC,EAAE,IAAIc,GAAST,CAAG,CAAC,EAGtE,OAAOe,GAAKH,EAAa,OAAOE,EAAeP,EAAQ,SAAS,CAAC,CAAC,CAAC,CAC3E,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EErCD,OAAS,MAAAS,GAAiB,SAAAC,GAAO,OAAAC,GAAK,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,OAAY,kBAG1D,IAAMC,GAAMF,GAAO,CAClB,OAAQC,GAAK,EACb,UAAWA,GAAK,CACxB,CAAC,EAIYE,GAAoBP,GAAG,CAAC,CAACQ,EAAKC,EAAWC,CAAM,IAAyC,CAC7F,IAAMC,EAAOH,EAAI,EAAE,IAAIA,EAAI,CAAC,EACtBI,EAAOJ,EAAI,EAAE,IAAIA,EAAI,CAAC,EACtBK,EAAOJ,EAAU,IAAID,EAAI,CAAC,EAC1BM,EAAQb,GAAMU,EAAMC,CAAI,EACxBG,EAAId,GAAMY,EAAMH,CAAM,EACtBM,EAAIb,GAAM,CAAC,EAAE,IAAID,GAAIQ,EAAQI,CAAK,CAAC,EACnCG,EAAID,EAAE,IAAId,GAAIa,EAAGH,CAAI,EAAE,OAAO,CAAC,EAC/BM,EAAIF,EAAE,IAAId,GAAIa,EAAGJ,CAAI,CAAC,EACtBQ,EAAIH,EAAE,IAAId,GAAIY,EAAOD,CAAI,EAAE,OAAO,CAAC,EAEnCO,EAAYH,EACT,SAAS,CAAC,EACV,GAAGA,EAAE,YAAY,CAAC,CAAC,EACnB,GAAGC,EAAE,SAAS,CAAC,CAAC,EAChB,GAAGD,EAAE,IAAIC,CAAC,EAAE,YAAY,CAAC,CAAC,EAC1B,GAAGC,EAAE,SAAS,CAAC,CAAC,EAEzB,OAAOhB,GAAM,WAAS,EAAE,OAAOgB,EAAGC,CAAS,CACnD,CAAC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYC,GAAuBrB,GAAG,CAAC,CAACQ,EAAKc,CAAG,IAClCf,GAAkBC,EAAKc,EAAI,OAAQA,EAAI,SAAS,CAC9D,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EChDD,OAAS,MAAAC,GAAU,SAAAC,GAAO,aAAAC,OAAiB,kBAGpC,IAAMC,GAASH,GAAG,CAAC,CAACI,CAAG,IACfF,GAAUD,GAAMG,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAGA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAiB,UAAAC,GAAQ,QAAAC,GAAM,OAAAC,OAAW,kBAK5C,IAAMC,GAA2BC,GAAG,CAAC,CAACC,EAAKC,EAAWC,CAAG,IAAyC,CACjG,IAAMC,EAAUC,GAAuBJ,EAAKC,EAAWC,CAAG,EAAE,MAAM,SAAS,EACrEG,EAAQH,EAAI,IAAIC,CAAO,EAAE,MAAM,OAAO,EACtCG,EAAWC,GAAOF,CAAK,EAAE,MAAM,UAAU,EAC/C,OAAOC,EAAS,IAAIE,GAAKC,GAAIJ,EAAM,IAAIC,CAAQ,EAAGL,CAAS,CAAC,CAAC,CACrE,CAAC,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,YAAa,KAAM,MAAO,EAClC,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYS,GAAiBX,GAAG,CAAC,CAACC,EAAKE,CAAG,IAAmC,CACtE,IAAMD,EAAYU,GAAOX,CAAG,EAAE,MAAM,WAAW,EAC/C,OAAOF,GAAyBE,EAAKC,EAAWC,CAAG,CAC3D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EC9BD,OAAS,UAAAU,GAAQ,QAAAC,OAAY,kBAEtB,IAAMC,GAAWF,GAAO,CACvB,EAAGC,GAAK,EACR,EAAGA,GAAK,EACR,EAAGA,GAAK,CAChB,CAAC,ECND,OAAS,MAAAE,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,MAAY,eCA9D,OAAS,MAAAC,OAAsC,eAM/C,SAASC,GAAIC,EAAS,CACd,OAAOA,EAAE,IAAIA,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,CAChD,CAEO,IAAMC,GAASH,GAAG,CAAC,CAACE,CAAC,IACbD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYE,GAAaJ,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAaL,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAaN,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAIC,CAAC,CACnB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECxCD,OAAS,MAAAK,OAAsC,eAO/C,SAASC,GAAIC,EAAS,CACd,OAAOA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,CAAC,CACrC,CAEO,IAAMC,GAAUC,GAAG,CAAC,CAACF,CAAC,IACdG,GAAOJ,GAAIC,CAAC,CAAC,CAC3B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYI,GAAcF,GAAG,CAAC,CAACF,CAAC,IAClBK,GAAWN,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYM,GAAcJ,GAAG,CAAC,CAACF,CAAC,IAClBO,GAAWR,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,EAAcN,GAAG,CAAC,CAACF,CAAC,IAClBS,GAAWV,GAAIC,CAAC,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECzCD,OAAS,MAAAU,OAAe,eAEjB,IAAMC,EAAgBD,GAAG,CAAC,CAACE,CAAC,IACpBA,EAAE,IAAI,gBAAiB,EAAE,IAAI,gBAAgB,CAC3D,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAUD,GAAG,CAAC,CAACE,CAAC,IAAc,CACnC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAQF,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,OAAO,EAC3D,OAAOC,EAAG,IAAIC,CAAK,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EJJM,IAAMC,GAAaC,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAKD,EAAE,KAAK,MAAM,EAAE,IAAIE,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACpDC,EAAKH,EAAE,KAAK,MAAM,EAAE,IAAIE,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAC1DD,EAAG,OAAOG,GAAWH,CAAE,CAAC,EACxB,IAAMI,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EACvBM,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EAEvBM,EADIC,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,GAAG,EAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC/CK,EAAKF,EAAG,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,IAAI,EACjCG,EAAKH,EAAG,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzCA,EAAG,OAAOA,EAAG,IAAIG,CAAE,CAAC,EACpB,IAAMC,EAAMC,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCI,EAAMD,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCK,EAAMF,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCM,EAAMH,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCO,EAAOC,EAAcjB,EAAKW,EAAI,IAAIA,CAAG,EAAGG,EAAI,IAAIA,CAAG,EAAGD,EAAI,IAAIA,CAAG,EAAGE,EAAI,IAAIA,CAAG,CAAC,CAAC,EAAE,MAAM,MAAM,EACrGJ,EAAI,UAAUK,EAAK,CAAC,EACpBF,EAAI,UAAUE,EAAK,CAAC,EACpBH,EAAI,UAAUG,EAAK,CAAC,EACpBD,EAAI,UAAUC,EAAK,CAAC,EACpB,IAAME,EAAMP,EAAI,IAAIC,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ca,EAAMN,EAAI,IAAID,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Cc,EAAMN,EAAI,IAAIF,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ce,EAAMN,EAAI,IAAIH,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3CgB,EAAUC,GAAQtB,EAAG,EAAE,EAAE,MAAM,SAAS,EACxCuB,EAAMZ,GAAKM,EAAKE,CAAG,EAAE,IAAIR,GAAKO,EAAKE,CAAG,EAAGC,EAAQ,CAAC,EAAE,MAAM,KAAK,EAErE,OADaE,EAAI,EAAE,IAAIA,EAAI,EAAGF,EAAQ,CAAC,EAC3B,IAAI,GAAG,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAa5B,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAM4B,EAAM5B,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3B6B,EAAMD,EAAI,IAAIE,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACxCF,EAAI,OAAOG,GAAWH,CAAG,CAAC,EAC1BC,EAAI,OAAOE,GAAWF,CAAG,CAAC,EAC1B,IAAMG,EAAMhC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BiC,EAAMD,EAAI,IAAIF,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EAClCzB,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAMF,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BG,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAMvC,EAAK,EAAG,EAAE,IAAIqC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAKvC,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCqC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKrC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjDsC,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAKtC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAMyC,EAAML,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BM,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAM3C,EAAK,EAAG,EAAE,IAAIyC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAK3C,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCyC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKzC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD0C,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAK1C,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAM6C,EAAOjB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOlB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOnB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOpB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAOrB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOtB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOvB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOxB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAQpC,EAAcjB,EAAK6C,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUQ,EAAM,CAAC,EACtBN,EAAK,UAAUM,EAAM,CAAC,EACtBP,EAAK,UAAUO,EAAM,CAAC,EACtBL,EAAK,UAAUK,EAAM,CAAC,EACtB,IAAMC,EAAQrC,EAAcjB,EAAKiD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUK,EAAM,CAAC,EACtBH,EAAK,UAAUG,EAAM,CAAC,EACtBJ,EAAK,UAAUI,EAAM,CAAC,EACtBF,EAAK,UAAUE,EAAM,CAAC,EACtB,IAAMC,EAAOV,EAAK,IAAIf,CAAG,EAAE,MAAM,MAAM,EACjC0B,EAAOV,EAAK,IAAIlB,GAAKG,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD2B,EAAOV,EAAK,IAAInB,GAAKE,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD4B,EAAOV,EAAK,IAAIpB,GAAKG,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAIrB,GAAKE,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAItB,GAAKG,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD8B,EAAOV,EAAK,IAAIvB,GAAKE,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD+B,EAAOV,EAAK,IAAIrB,CAAG,EAAE,MAAM,MAAM,EACjCgC,EAAWxC,GAAQO,CAAG,EAAE,MAAM,UAAU,EACxCkC,EAAMhE,EAAKuD,EAAMC,EAAMC,EAAMC,CAAI,EAAE,IAAI1D,EAAK2D,EAAMC,EAAMC,EAAMC,CAAI,EAAGC,EAAS,CAAC,EAAE,MAAM,KAAK,EAC5FE,EAAOD,EAAI,GAAG,IAAIA,EAAI,GAAID,EAAS,CAAC,EAAE,MAAM,MAAM,EAExD,OADcE,EAAK,EAAE,IAAIA,EAAK,EAAGF,EAAS,CAAC,EAC9B,IAAI,GAAG,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAarE,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAM4B,EAAM5B,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3B6B,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAClCA,EAAI,OAAOxB,GAAWwB,CAAG,CAAC,EAC1BC,EAAI,OAAOzB,GAAWyB,CAAG,CAAC,EAC1B,IAAMG,EAAMhC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BiC,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAC5B3B,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMhC,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAMjC,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCwC,EAAMnE,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChC0C,EAAMpE,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CoC,EAAQ7D,EAAY2B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ9D,EAAY2B,EAAK,IAAIiC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ/D,EAAY4B,EAAK,IAAI+B,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAQhE,EAAY4B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAOJ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCK,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO5E,EAAK,GAAI,EAAE,IAAIyE,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK5E,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CyE,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKzE,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD0E,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAK1E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAM8E,EAAOR,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCS,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOjF,EAAK,GAAI,EAAE,IAAI8E,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKjF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5C8E,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAK9E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD+E,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAK/E,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMmF,EAAOZ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCa,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOtF,EAAK,GAAI,EAAE,IAAImF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKtF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CmF,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKnF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDoF,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAKpF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMwF,EAAOhB,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCiB,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO3F,EAAK,GAAI,EAAE,IAAIwF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK3F,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CwF,EAAK,UAAUI,EAAK,IAAIJ,EAAK,KAAKxF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDyF,EAAK,UAAUG,EAAK,IAAIH,EAAK,KAAKzF,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAM6F,EAAQ7F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,EAAQ9F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DmB,EAAQ/F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DoB,GAAQhG,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQjG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DY,GAAQlG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Da,GAAQnG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Dc,GAAQpG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,GAAQrG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQtG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DsB,GAAQvG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DuB,GAAQxG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DwB,EAAQzG,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,EAAQ1G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DgB,GAAQ3G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DiB,GAAQ5G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,GAAS5F,EAAcjB,EAAK6F,EAAM,IAAIA,CAAK,EAAGE,EAAM,IAAIA,CAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CAAC,EAAE,MAAM,QAAQ,EACzHH,EAAM,UAAUgB,GAAO,CAAC,EACxBd,EAAM,UAAUc,GAAO,CAAC,EACxBf,EAAM,UAAUe,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxB,IAAMC,GAAS7F,EAAcjB,EAAKqG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CAAC,EAAE,MAAM,QAAQ,EACzHH,GAAM,UAAUS,GAAO,CAAC,EACxBP,GAAM,UAAUO,GAAO,CAAC,EACxBR,GAAM,UAAUQ,GAAO,CAAC,EACxBN,GAAM,UAAUM,GAAO,CAAC,EACxB,IAAMC,GAAS9F,EAAcjB,EAAKiG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CAAC,EAAE,MAAM,QAAQ,EACzHH,GAAM,UAAUc,GAAO,CAAC,EACxBZ,GAAM,UAAUY,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxBX,GAAM,UAAUW,GAAO,CAAC,EACxB,IAAMC,GAAS/F,EAAcjB,EAAKyG,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CAAC,EAAE,MAAM,QAAQ,EACzHH,EAAM,UAAUO,GAAO,CAAC,EACxBL,GAAM,UAAUK,GAAO,CAAC,EACxBN,EAAM,UAAUM,GAAO,CAAC,EACxBJ,GAAM,UAAUI,GAAO,CAAC,EACxB,IAAMC,GAAQpB,EAAM,IAAI/D,CAAG,EAAE,MAAM,OAAO,EACpCoF,GAAQpB,EAAM,IAAI9F,EAAK+B,EAAI,EAAGD,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDqF,GAAQpB,EAAM,IAAI/F,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DsF,GAAQpB,GAAM,IAAIhG,EAAK+B,EAAI,GAAID,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrDuF,GAAQpB,GAAM,IAAIjG,EAAK8B,EAAI,GAAIC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3DwF,GAAQpB,GAAM,IAAIlG,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjEyF,GAAQpB,GAAM,IAAInG,EAAK8B,EAAI,EAAGC,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D0F,GAAQpB,GAAM,IAAIpG,EAAK+B,EAAI,IAAKD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAIrG,EAAK8B,EAAI,IAAKC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAItG,EAAK+B,EAAI,EAAGD,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D4F,GAAQpB,GAAM,IAAIvG,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjE6F,GAAQpB,GAAM,IAAIxG,EAAK+B,EAAI,GAAID,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D8F,GAAQpB,EAAM,IAAIzG,EAAK8B,EAAI,GAAIC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrD+F,GAAQpB,EAAM,IAAI1G,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DgG,GAAQpB,GAAM,IAAI3G,EAAK8B,EAAI,EAAGC,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDiG,GAAQpB,GAAM,IAAI7E,CAAG,EAAE,MAAM,OAAO,EACpCkG,GAAY1G,GAAQO,CAAG,EAAE,MAAM,WAAW,EAC1CoG,GAAOlI,EAAKiH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIpH,EAAKyH,GAAOC,GAAOC,GAAOC,EAAK,EAAGK,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGE,GAAOnI,EAAKqH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIxH,EAAK6H,GAAOC,GAAOC,GAAOC,EAAK,EAAGC,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGG,GAAOF,GAAK,IAAIC,GAAMF,GAAU,CAAC,EAAE,MAAM,MAAM,EAC/CI,GAAQD,GAAK,GAAG,IAAIA,GAAK,GAAIH,GAAU,CAAC,EAAE,MAAM,OAAO,EAE7D,OADeI,GAAM,EAAE,IAAIA,GAAM,EAAGJ,GAAU,CAAC,EACjC,IAAI,GAAG,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EKtOD,OAAS,MAAAK,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eCA9D,OAAS,MAAAC,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,EAAM,SAAAC,OAAa,eCArE,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE5C,IAAMC,GAAQJ,GAAG,CAAC,CAACK,EAAGC,CAAE,IAA2B,CAClD,IAAMC,EAAON,GAAK,EAAG,EAAG,EAAG,EAAE,EAAE,MAAM,MAAM,EACrCO,EAAIP,GAAK,CAAC,EAAE,MAAM,GAAG,EACrBQ,EAAIR,GAAK,CAAC,EAAE,MAAM,GAAG,EAC3B,OAAAO,EAAE,IAAMN,GAAKG,EAAGA,EAAGA,CAAC,EAAE,IAAIC,EAAG,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAI,CAAC,EACxEE,EAAE,EAAIL,GAAM,GAAG,EAAE,IAAIK,EAAE,IAAI,IAAI,EAAE,IAAID,EAAK,GAAG,CAAC,EAC9CE,EAAE,OAAOR,GAAKO,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,EAAGA,EAAE,EAAE,SAAS,CAAG,CAAC,CAAC,EACzFA,EAAE,IAAMA,EAAE,IAAI,IAAIC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,GAAG,CAAC,EACzCD,CACf,CAAC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EDZM,IAAME,GAAaC,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIC,EAAK,iBAAmB,iBAAmB,kBAAoB,gBAAiB,EAAE,MAAM,GAAG,EAC/FC,EAAIH,EAAE,IAAIA,EAAE,IAAIC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EACxCG,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,EACzCI,EAAKC,GAAK,EAAG,CAAC,EAAE,OAAOA,GAAK,EAAG,CAAC,EAAGF,EAAG,EAAE,YAAYA,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACrEG,EAAMH,EAAG,KAAK,IAAIH,EAAE,IAAI,EAAE,MAAM,KAAK,EAC3CM,EAAI,GAAKA,EAAI,GAAG,IAAIF,CAAE,EACtBF,EAAE,OAAOK,GAAWL,CAAC,CAAC,EACtB,IAAMM,EAAIC,GACFA,GAAYP,EAAE,EAAE,IAAIQ,GAAK,EAAGN,EAAG,EAAG,CAAC,CAAC,CAAC,EAC5B,IAAIF,EAAE,CAAC,EACP,IAAIQ,GAAK,EAAGN,EAAG,EAAG,CAAC,CAAC,CACrC,EAAE,MAAM,GAAG,EACLO,EAAIC,GAAM,EAAG,EACV,IAAIF,GAAKP,EAAG,IAAIA,CAAE,EAAGG,EAAI,GAAG,IAAIA,EAAI,EAAE,EAAGA,EAAI,GAAG,IAAIA,EAAI,EAAE,CAAC,CAAC,EAC5D,IAAI,CAAC,EACL,MAAM,GAAG,EAClBK,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACjBA,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACjB,IAAME,EAAIL,EAAE,IAAIR,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAChDc,EAAID,EAAE,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EAC9BE,EAAKF,EAAE,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAClCG,EAAKH,EAAE,IAAIE,CAAE,EAAE,MAAM,IAAI,EAC/BJ,EAAE,UAAUC,GAAM,gBAAgB,EAAE,IAAIA,GAAM,eAAgB,EAAE,IAAII,EAAG,IAAIA,CAAE,EAAE,IAAIF,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9F,IAAMG,EAAIP,GAAKM,EAAG,EAAE,IAAIb,EAAG,CAAC,EAAE,IAAIW,EAAE,EAAE,IAAIX,EAAG,CAAC,CAAC,EAAGa,EAAG,GAAG,IAAIV,EAAI,EAAE,EAAE,IAAIQ,EAAE,GAAG,IAAIR,EAAI,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EACpG,OAAOM,GAAM,GAAG,EAAE,IAAID,EAAE,IAAIM,CAAC,CAAC,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAapB,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIK,GAAK,mBAAO,iBAAK,EAAE,MAAM,GAAG,EAChCc,EAAIlB,EAAK,EAAG,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAChCC,EAAIH,EAAE,IAAIA,EAAE,IAAIC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EACzCG,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,GAAG,CAAC,EAAE,MAAM,IAAI,EAC1CiB,EAAId,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,GAAG,EACjCiB,EAAIR,GAAM,CAAC,EAAE,IAAIK,CAAC,EAAE,MAAM,GAAG,EAC7Bb,EAAKa,EAAE,IAAI,IAAIG,EAAE,GAAG,EAAE,MAAM,IAAI,EAChCC,EAAKJ,EAAE,IAAI,IAAIG,EAAE,GAAG,EAAE,MAAM,IAAI,EAChCE,EAAKnB,EAAG,IAAIC,CAAE,EAAE,IAAIJ,EAAE,GAAG,EAAE,MAAM,IAAI,EACrCuB,EAAKpB,EAAG,IAAIkB,CAAE,EAAE,IAAIrB,EAAE,GAAG,EAAE,MAAM,IAAI,EACrCwB,EAAKrB,EAAG,IAAIgB,EAAE,GAAG,EAAE,MAAM,IAAI,EACnCjB,EAAE,OAAOuB,GAAWvB,CAAC,CAAC,EACtB,IAAMM,EAAIkB,EACFA,EACQA,EAAYxB,EAAE,EAAE,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAAC,EAClC,IAAInB,EAAE,CAAC,EACP,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAC3C,EACS,IAAInB,EAAE,CAAC,EACP,IAAID,EAAK,EAAGG,EAAG,EAAGiB,EAAG,EAAG,CAAC,CAAC,CAC3C,EAAE,MAAM,GAAG,EAELM,EADKf,GAAM,aAAc,EAAE,MAAM,IAAI,EAC7B,IAAIO,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,MAAM,IAAI,EACxCS,EAAIpB,EAAE,IAAIA,EAAE,IAAImB,EAAG,CAAC,EAAE,IAAIA,EAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,EAC1DE,EAAKD,EAAE,IAAID,EAAG,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EACnCG,EAAKF,EAAE,IAAIC,EAAG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EACxChB,EAAIgB,EAAG,IAAIF,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,GAAG,EACvCI,EAAID,EAAG,IAAIH,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,GAAG,EACvCb,EAAIF,GAAM,CAAC,EAAE,IAAIC,EAAE,IAAI,CAAC,EAAE,IAAIkB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAChDC,EAAK/B,EAAKY,EAAE,GAAIkB,EAAE,EAAE,EAAE,MAAM,IAAI,EAChCE,EAAKhC,EAAKY,EAAE,GAAIkB,EAAE,EAAE,EAAE,MAAM,IAAI,EAChCG,EAAKF,EAAG,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EACxCG,EAAKF,EAAG,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EACxCG,EAAKnC,EAAK,CAAC,EAAE,KAAKa,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EACxCE,EAAKgB,EAAG,KAAK,IAAIE,EAAG,KAAK,IAAIE,EAAG,IAAI,CAAC,EAAE,MAAM,IAAI,EACjDC,EAAKJ,EAAG,KAAK,IAAIE,EAAG,KAAK,IAAIC,EAAG,IAAI,CAAC,EAAE,MAAM,IAAI,EACjDE,EAAK5B,GAAKM,EAAG,GAAIF,EAAE,CAAC,EAAE,MAAM,IAAI,EAChCyB,EAAK7B,GAAKM,EAAG,GAAIF,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC0B,EAAK9B,GAAK2B,EAAG,GAAIvB,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC2B,EAAK/B,GAAK2B,EAAG,GAAIvB,EAAE,CAAC,EAAE,MAAM,IAAI,EAChC4B,EAAOC,EAAc1C,EAAKqC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FF,EAAG,UAAUG,EAAK,CAAC,EACnBF,EAAG,UAAUE,EAAK,CAAC,EACnBD,EAAG,UAAUC,EAAK,CAAC,EACnB,IAAM/B,EAAIC,GAAM,EAAG,EACV,IAAIX,EAAKE,EAAG,IAAIA,CAAE,EAAGmB,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EACxD,IAAI,CAAC,EACL,MAAM,GAAG,EAClB,OAAAb,EAAE,OAAOA,EAAE,IAAIA,CAAC,CAAC,EACVC,GAAM,EAAE,EAAE,IAAID,EAAE,IAAIA,CAAC,EAAE,IAAIV,EAAKqC,EAAG,IAAInC,CAAE,EAAGoC,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,CAAC,CAAC,CAAC,CAC/F,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYoB,GAAa9C,GAAG,CAAC,CAACC,CAAC,IAAqB,CAC7C,IAAMC,EAAIC,EAAK,iBAAmB,iBAAmB,iBAAmB,iBAAkB,EAAE,MAAM,GAAG,EAC/FC,EAAIH,EACD,IAAIA,EAAE,IAAIE,EAAK,kBAAoB,CAAC,CAAC,EACrC,MAAM,EACN,MAAM,GAAG,EACZE,EAAKJ,EAAE,IAAIG,CAAC,EAAE,IAAIA,EAAE,IAAIF,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC3C6C,EAAK5C,EAAK,CAAC,EAAE,MAAM,IAAI,EACvB6C,EAAM3C,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,KAAK,EACrC4C,EAAO5C,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,MAAM,EAC7C0C,EAAG,EAAIC,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,CAAC,EACjCD,EAAG,IAAMjC,GAAM,CAAC,EAAE,IAAIkC,CAAG,EACzBD,EAAG,EAAIA,EAAG,EAAE,IAAIE,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAClCF,EAAG,GAAKA,EAAG,GAAG,IAAIjC,GAAM,CAAC,EAAE,IAAImC,EAAK,EAAE,CAAC,EACvCF,EAAG,EAAIA,EAAG,EAAE,IAAIE,EAAK,CAAC,EACtBF,EAAG,EAAIA,EAAG,EAAE,IAAIjC,GAAM,CAAC,EAAE,IAAImC,EAAK,CAAC,CAAC,EACpC,IAAMC,EAAKH,EAAG,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EAC9BxB,EAAKwB,EAAG,IAAI,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EACrCzC,EAAKyC,EAAG,IAAI,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,IAAI,EACrCvB,EAAKnB,EAAG,IAAIC,CAAE,EAAE,IAAIJ,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCuB,EAAKpB,EAAG,IAAIkB,CAAE,EAAE,IAAIrB,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCwB,EAAKrB,EAAG,IAAI6C,CAAE,EAAE,IAAIhD,EAAE,IAAI,EAAE,MAAM,IAAI,EACtCiD,EAAK9C,EAAG,IAAIH,EAAE,IAAI,EAAE,MAAM,IAAI,EACpCE,EAAE,OAAOgD,GAAWhD,CAAC,CAAC,EACtB,IAAMiD,EAAKC,GAAQA,GAAQA,GAAQA,GAAQlD,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EAClFmD,EAAK3B,EACHA,EACQA,EACQA,EAAYxB,EAAE,EAAE,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAAC,EACrC,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EACS,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EACS,IAAI9C,EAAE,CAAC,EACP,IAAID,EAAKG,EAAG,EAAGiB,EAAG,EAAG2B,EAAG,EAAG,CAAC,CAAC,CAC9C,EAAE,MAAM,IAAI,EACNM,EAAKrD,EAAK,EAAI,IAAK,EAAI,GAAI,EAAI,EAAG,CAAC,EAAE,MAAM,IAAI,EAC/CqC,EAAKiB,GAAMJ,EAAIG,CAAE,EAAE,MAAM,IAAI,EAC7Bf,EAAKgB,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/Bd,EAAKe,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/Bb,EAAKc,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/BE,EAAKD,GAAMF,EAAG,EAAGC,CAAE,EAAE,MAAM,IAAI,EAC/BZ,EAAOC,EAAc1C,EAAKqC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FH,EAAG,UAAUI,EAAK,CAAC,EACnBH,EAAG,UAAUG,EAAK,CAAC,EACnBF,EAAG,UAAUE,EAAK,CAAC,EACnBD,EAAG,UAAUC,EAAK,CAAC,EACnBc,EAAG,UAAUb,EAAca,EAAG,IAAIA,CAAE,CAAC,CAAC,EACtC,IAAMC,EAAK7C,GAAM,EAAG,EACX,IAAIF,GAAKP,EAAG,IAAIA,CAAE,EAAGmB,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAC5C,IAAI,CAAC,EACL,MAAM,IAAI,EACbmC,EAAK9C,GAAM,EAAG,EACX,IAAIP,GAAKmB,EAAG,IAAIA,CAAE,EAAGyB,EAAG,IAAIA,CAAE,CAAC,CAAC,EAChC,IAAI,CAAC,EACL,MAAM,IAAI,EACnB,OAAAQ,EAAG,OAAOA,EAAG,IAAIA,CAAE,CAAC,EACpBC,EAAG,OAAOA,EAAG,IAAIA,CAAE,CAAC,EACb9C,GAAM,EAAE,EAAE,IACT6C,EACS,IAAIA,CAAE,EACN,IAAI/C,GAAK4B,EAAG,IAAInC,CAAE,EAAGoC,EAAG,IAAIjB,CAAE,EAAGkB,EAAG,IAAIjB,CAAE,CAAC,CAAC,EAC5C,IAAImC,EAAG,IAAIA,CAAE,EAAE,IAAIrD,GAAKoC,EAAG,IAAIjB,CAAE,EAAGgC,EAAG,IAAIP,CAAE,CAAC,CAAC,CAAC,CACjE,CACR,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYU,GAAU7D,GAAG,CAAC,CAACe,CAAC,IAAoB,CACzC,IAAM+C,EAAI/D,GAAWgB,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKtC,GAAWQ,GAAKQ,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EACpE,OAAOR,GAAKuD,EAAGzB,CAAE,CACzB,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEY0B,GAAc/D,GAAG,CAAC,CAACe,CAAC,IAAoB,CAC7C,IAAM+C,EAAI1C,GAAWL,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKjB,GAAWR,GAAKG,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EAC7EiD,EAAK5C,GAAWR,GAAKG,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,KAAK,EAAGA,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EACpF,OAAOH,GAAKkD,EAAGzB,EAAI2B,CAAE,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAcjE,GAAG,CAAC,CAACe,CAAC,IAAoB,CAC7C,IAAM+C,EAAIhB,GAAW/B,CAAC,EAAE,MAAM,GAAG,EAC3BsB,EAAKS,GAAW3C,EAAKY,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EAClFiD,EAAKlB,GAAW3C,EAAKY,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,EAAE,IAAI,KAAK,EAAGA,EAAE,EAAE,IAAI,IAAI,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,EACzF,OAAOH,GAAKkD,EAAGzB,EAAI2B,CAAE,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDlMM,IAAME,GAAWC,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKC,GAAK,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BC,EAAKD,GAAK,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BE,EAAOC,GAAQN,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCK,EAAOD,GAAQN,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCM,EAAOF,GAAQN,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCK,EAAOH,GAAQN,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EACtCM,EAAIH,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EAChCM,EAAIF,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EAChCI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOE,GAAKO,EAAGC,CAAC,EAAE,IAAIC,CAAO,EAAE,UAAU,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAWd,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKY,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BV,EAAKU,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BC,EAAKD,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BT,EAAOW,GAAYhB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOS,GAAYhB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CM,EAAOQ,GAAYhB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOO,GAAYhB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1Ca,EAAOD,GAAYhB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CG,EAAOF,GAAYhB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CL,EAAID,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIU,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDN,EAAIO,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIV,EAAK,CAAC,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDc,EAAIZ,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,IAAII,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOa,GAAKJ,EAAGC,EAAGQ,CAAC,EAAE,IAAIP,CAAO,EAAE,UAAU,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAWrB,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC1C,IAAM,EAAIC,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBC,EAAKmB,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCjB,EAAKiB,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCN,EAAKM,GAAK,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,IAAI,EAChChB,EAAOiB,GAAYtB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOe,GAAYtB,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CM,EAAOc,GAAYtB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CK,EAAOa,GAAYtB,EAAE,IAAII,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1Ca,EAAOK,GAAYtB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CG,EAAOI,GAAYtB,EAAE,IAAIe,CAAE,CAAC,EAAE,MAAM,MAAM,EAC1CL,EAAID,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIU,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDN,EAAIO,EAAK,EAAE,IAAID,EAAK,CAAC,EAAE,IAAIV,EAAK,CAAC,EAAE,IAAIF,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDc,EAAIZ,EAAK,EAAE,IAAIF,EAAK,CAAC,EAAE,IAAII,EAAK,CAAC,EAAE,IAAID,EAAK,CAAC,EAAE,MAAM,GAAG,EACxDI,EAAUX,GAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,SAAS,EACtD,OAAOa,GAAKJ,EAAGC,EAAGQ,CAAC,EAAE,IAAIP,CAAO,EAAE,UAAU,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EG/DD,OAAS,MAAAW,GAAuB,SAAAC,GAAO,QAAAC,GAAM,OAAAC,OAAW,eCAxD,OAAS,MAAAC,GAAuB,QAAAC,GAAM,QAAAC,EAAM,SAAAC,OAAa,eCAzD,OAAS,MAAAC,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAA8B,eAEtF,IAAMC,GAAeF,GAAK,QAAS,QAAS,MAAQ,KAAM,EAE7CG,GAASN,GAAG,CAAC,CAACO,CAAC,IACbA,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAC5C,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaR,GAAG,CAAC,CAACS,CAAE,IAClBA,EAAG,IAAIR,GAAK,QAAS,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CACxE,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYS,GAAaV,GAAG,CAAC,CAACW,CAAG,IACnBA,EAAI,IAAIT,GAAK,QAAS,OAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CACrF,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAaZ,GAAG,CAAC,CAACW,CAAG,IACNA,EAAI,IAAIR,GAAK,QAAS,OAAQ,OAAQ,MAAM,CAAC,EAAE,MAAM,aAAa,EACnE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CACtD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAeb,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMC,EAAKb,GAAKY,CAAC,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC3D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAchB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMC,EAAKD,EAAE,IAAI,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzD,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAcjB,GAAG,CAAC,CAACe,CAAE,KAC1BA,EAAG,OAAOA,EAAG,IAAIV,GAAa,GAAG,EAAE,MAAM,CAAC,EAC1CU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,GAAG,IAAIA,EAAG,EAAE,EAAE,IAAIA,EAAG,EAAE,EAAE,MAAM,EAChD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYG,GAAelB,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMC,EAAKb,GAAKY,CAAC,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC3D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,IAAI,IAAIA,EAAG,GAAG,EAAE,IAAIA,EAAG,GAAG,EAAE,MAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYI,GAAcnB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMC,EAAKb,GAAKY,EAAE,GAAG,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EAC/D,OAAAU,EAAG,UAAUA,EAAG,IAAIA,EAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAC/BA,EAAG,IAAI,IAAIA,EAAG,GAAG,EAAE,IAAIA,EAAG,GAAG,EAAE,MAAM,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAcpB,GAAG,CAAC,CAACc,CAAC,KACzBA,EAAE,OAAOA,EAAE,IAAIT,GAAa,GAAG,EAAE,MAAM,CAAC,EACxCS,EAAE,UAAUA,EAAE,IAAIA,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,EAC5BA,EAAE,IAAI,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,MAAM,EAChD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAerB,GAAG,CAAC,CAACc,CAAC,IAAqB,CAC/C,IAAMQ,EAAKlB,GAAMU,CAAC,EAAE,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACxD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAcvB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMQ,EAAKR,EAAE,KAAK,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACtD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAcxB,GAAG,CAAC,CAACc,CAAC,IAAoB,CAC7C,IAAMQ,EAAKR,EAAE,KAAK,IAAIT,EAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EACtD,OAAAiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,CACvD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAczB,GAAG,CAAC,CAACsB,CAAE,KAC1BA,EAAG,OAAOA,EAAG,IAAIjB,EAAY,EAAE,MAAM,CAAC,EACtCiB,EAAG,UAAUA,EAAG,IAAIA,EAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAChCA,EAAG,KAAK,IAAIA,EAAG,IAAI,EAAE,IAAIA,EAAG,IAAI,EAAE,MAAM,EACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECvID,OAAS,MAAAI,GAA6B,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAuB,eAExE,IAAMC,GAAUL,GAAG,CAAC,CAACM,CAAC,IACdF,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIE,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACzE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAcP,GAAG,CAAC,CAACQ,CAAE,IACnBJ,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAII,EAAG,IAAIP,GAAK,QAAS,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACrG,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYQ,GAAcT,GAAG,CAAC,CAACU,CAAG,IACpBN,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIR,GAAK,QAAS,OAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC,CAClH,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYS,GAAcX,GAAG,CAAC,CAACU,CAAG,IAAqB,CAChD,IAAME,EAAcF,EAAI,IAAIP,GAAK,QAAS,OAAQ,OAAQ,MAAM,CAAC,EAAE,MAAM,aAAa,EACtF,OAAOC,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIQ,EAAY,IAAI,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CACpF,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYC,GAAeb,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC/C,IAAMM,EAAIb,GAAK,SAAW,QAAS,EAAE,MAAM,GAAG,EAC9C,OAAAO,EAAG,OAAOA,EAAG,IAAIM,CAAC,EAAE,IAAIA,EAAE,EAAE,CAAC,EACtBb,GAAK,EAAE,EAAE,IACRA,GAAK,CAAC,EAAE,IACAG,GAAM,EAAE,EACC,IAAIU,CAAC,EACL,IAAIN,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAE,IAAIA,EAAG,EAAE,IAAIA,EAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAC9C,MAAM,CACvB,CACR,CACR,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYO,GAAef,GAAG,CAAC,CAACgB,CAAC,KAC1BA,EAAE,OACMd,GACQc,EAAE,IAAId,GAAK,MAAO,MAAO,IAAI,CAAC,EAC9Bc,EAAE,IAAId,GAAK,MAAO,MAAO,KAAK,CAAC,EAC/Bc,EAAE,IAAId,GAAK,MAAO,MAAO,KAAK,CAAC,CACvC,CACR,EACOE,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIY,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,CAAC,CAAC,EAC5E,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAoBjB,GAAG,CAAC,CAACgB,EAAGE,CAAU,KAC3CF,EAAE,OAAOA,EAAE,IAAIf,GAAKiB,CAAU,CAAC,CAAC,EACzBL,GAAaG,CAAC,EAC5B,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYG,GAAoBnB,GAAG,CAAC,CAACgB,EAAGE,CAAU,KAC3CF,EAAE,OAAOA,EAAE,IAAId,GAAKgB,CAAU,CAAC,CAAC,EACzBH,GAAaC,CAAC,EAC5B,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,ECzFD,OAAS,MAAAI,OAAmC,eAErC,IAAMC,GAAQD,GAAG,CAAC,CAACE,CAAC,IACZA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAYH,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAYJ,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAYL,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,IAAIA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAmBN,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAoC,CAClF,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYW,GAAkBb,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYY,GAAkBd,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EAEYa,GAAkBf,GAAG,CAAC,CAACE,EAAGK,EAAQC,CAAM,IAAkC,CAC/E,IAAM,EAAID,EAAO,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACvCC,EAAIF,EAAO,IAAI,EAAE,EAAE,IAAIC,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC/CE,EAAIH,EAAO,MAAM,GAAG,EACpBI,EAAKT,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBU,EAAKV,EAAE,IAAIS,CAAE,EAAE,MAAM,IAAI,EAC/B,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIH,EAAE,IAAIE,CAAE,CAAC,EAAE,IAAID,EAAE,IAAIR,CAAC,CAAC,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EH9FM,IAAMc,GAASC,GAAG,CAAC,CAACC,CAAC,IAAsB,CAC1C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EAC7B,OAAOG,GAAOF,CAAC,EAAE,IAAIE,GAAOF,EAAE,IAAI,CAAC,CAAC,EAAGG,GAAM,CAAC,EAAE,WAAWA,GAAM,CAAC,EAAGF,CAAC,CAAC,CAC/E,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYG,GAAaN,GAAG,CAAC,CAACO,CAAE,IAAqB,CAC9C,IAAML,EAAIK,EAAG,MAAM,EAAE,MAAM,GAAG,EACxBJ,EAAII,EAAG,MAAM,EAAE,MAAM,GAAG,EACxB,EAAIC,GAAWN,CAAC,EAAE,MAAM,GAAG,EAC3BO,EAAID,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CC,EAAIH,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CE,EAAIJ,GAAWN,EAAE,IAAIQ,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CG,EAAIC,GAAUX,CAAC,EAAE,MAAM,GAAG,EAChC,OAAO,EAAE,IAAIM,EAAGI,EAAE,CAAC,EAAE,IAAIF,EAAE,IAAI,CAAC,EAAE,IAAIE,EAAE,CAAC,EAAE,IAAIR,GAAM,CAAC,EAAE,IAAIQ,EAAE,CAAC,CAAC,EAAE,IAAID,EAAE,IAAIH,CAAC,EAAE,IAAII,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,CACzG,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAaf,GAAG,CAAC,CAACgB,CAAC,IAAqB,CAC7C,IAAMd,EAAIc,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBb,EAAIa,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBH,EAAII,GAAQd,CAAC,EAAE,MAAM,GAAG,EAC9B,OAAOE,GAAM,EAAE,EAAE,IACTA,GAAM,CAAC,EAAE,IACDa,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACtB,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACzC,IAAIK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EAAGA,EAAE,CAAC,EACpF,IACOK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACtB,IAAID,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACzC,IACOK,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,IACzBD,GAAWhB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAC/BN,EAAE,CACV,EACAA,EAAE,CACV,EACRA,EAAE,CACV,CAChB,CACR,CACR,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAkBpB,GAAG,CAAC,CAACgB,EAAGK,CAAU,IAA4B,CACrE,IAAMnB,EAAIc,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBb,EAAIa,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBH,EAAII,GAAQd,CAAC,EAAE,MAAM,GAAG,EAC9B,OAAOmB,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAChD,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IAAIG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACtF,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IACOG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAC5EN,EAAE,CACV,EACRA,EAAE,CACV,EACC,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IAAIG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAGN,EAAE,CAAC,EACtF,IACOS,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EACzC,IAAIlB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EACxB,IACOG,GAAkBpB,EAAE,IAAIiB,EAAK,EAAG,EAAG,CAAC,CAAC,EAAGE,CAAU,EAAE,IAC5ClB,EAAE,IAAIgB,EAAK,EAAG,EAAG,CAAC,CAAC,CAC3B,EACAN,EAAE,CACV,EACRA,EAAE,CACV,EACRA,EAAE,CACV,CAChB,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYU,GAAUvB,GAAG,CAAC,CAACC,CAAC,IACdkB,EACCJ,GAAWd,EAAE,IAAIkB,EAAK,QAAS,KAAO,GAAI,CAAC,CAAC,EAC5CJ,GAAWd,EAAE,IAAIkB,EAAK,IAAM,MAAO,KAAK,CAAC,CAAC,EAC1CJ,GAAWd,CAAC,CACpB,CACP,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ED5GD,IAAMuB,GAAcC,GAAI,CAAC,EACnBC,GAAmB,EACnBC,GAAwB,GACxBC,GAAuB,GAEhBC,GAAUC,GAAG,CAAC,CAACC,CAAE,IAAqB,CAC3C,IAAMC,EAAQC,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9BC,EAAYD,GAAMN,EAAqB,EAAE,MAAM,WAAW,EAC1DQ,EAAQJ,EAAG,MAAM,OAAO,EAC9B,OAAAK,GAAKZ,GAAa,IAAM,CAChBQ,EAAM,UAAUE,EAAU,IAAIG,GAAWF,CAAK,CAAC,CAAC,EAChDA,EAAM,UAAUT,EAAgB,EAChCQ,EAAU,UAAUN,EAAoB,CAChD,CAAC,EACMI,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYM,GAAUR,GAAG,CAAC,CAACS,CAAG,IAAqB,CAC5C,IAAMP,EAAQC,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9BC,EAAYD,GAAMN,EAAqB,EAAE,MAAM,WAAW,EAC1Da,EAASD,EAAI,MAAM,QAAQ,EACjC,OAAAH,GAAKZ,GAAa,IAAM,CAChBQ,EAAM,UAAUE,EAAU,IAAIO,GAAWD,CAAM,CAAC,CAAC,EACjDA,EAAO,UAAUd,EAAgB,EACjCQ,EAAU,UAAUN,EAAoB,CAChD,CAAC,EACMI,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYU,GAAeZ,GAAG,CAAC,CAACa,EAAGC,CAAU,IAA4B,CAClE,IAAMC,EAAcZ,GAAM,EAAG,EAAE,MAAM,aAAa,EAC5Ca,EAAab,GAAM,CAAC,EAAE,MAAM,YAAY,EACxCC,EAAYD,GAAM,EAAG,EAAE,MAAM,WAAW,EACxCc,EAAQd,GAAM,CAAC,EAAE,MAAM,OAAO,EAC9Be,EAAgBf,GAAM,CAAC,EAAE,MAAM,eAAe,EAC9CgB,EAAON,EAAE,MAAM,MAAM,EAC3B,OAAAP,GAAKZ,GAAa,IAAM,CAChB,IAAM0B,EAAaC,GAAgBF,EAAML,EAAW,IAAIE,CAAU,EAAE,IAAI,CAAC,CAAC,EACjE,IAAI,CAAC,EACL,IAAI,EAAG,EACP,MAAM,YAAY,EAC3BC,EAAM,UAAUG,EAAW,IAAIhB,CAAS,CAAC,EACzCc,EAAc,UAAUd,CAAS,EACjCA,EAAU,UAAUW,CAAW,EAC/BI,EAAK,OAAOA,EAAK,IAAIH,CAAU,CAAC,CACxC,CAAC,EACMC,EAAM,IAAIC,CAAa,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,OAAQ,CAC5C,CACR,CAAC,EAEYI,GAAMd,GKpEnB,OAAS,MAAAe,GAAiB,QAAAC,GAAM,SAAAC,OAAa,eAGtC,IAAMC,GAAeC,GAAG,CAAC,CAACC,EAAKC,EAAMC,EAAYC,EAAaC,CAAK,IAAyC,CAC3G,IAAMC,EAAIC,EAAG,IAAI,CAAC,EAAE,IAAIH,CAAW,EAAE,MAAM,GAAG,EACxCI,EAAIC,GAAM,GAAG,EAAE,IAAIH,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,EACtCI,EAAIR,EAAK,UAAU,EAAE,MAAM,GAAG,EAC9BS,EAAIL,EAAE,IAAIL,EAAI,IAAIS,CAAC,EAAE,IAAIF,EAAE,IAAIH,CAAK,CAAC,CAAC,EAAE,MAAM,GAAG,EACjDO,EAAIT,EAAW,IAAIG,CAAC,EAAE,MAAM,GAAG,EACrC,OAAOO,GAAKH,EAAE,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAI,CAAC,CAAC,EAAGC,EAAE,IAAID,EAAE,IAAI,CAAC,EAAGD,EAAE,EAAE,IAAIE,EAAE,IAAID,EAAE,IAAI,CAAC,CAAC,CAAC,CACpF,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,aAAc,KAAM,OAAQ,EACpC,CAAE,KAAM,cAAe,KAAM,OAAQ,EACrC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECpBD,OAAS,MAAAG,GAAgB,QAAAC,GAAM,QAAAC,EAAM,QAAAC,OAAY,eAG1C,IAAMC,GAASC,GAAG,CAAC,CAACC,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAAID,EACD,IAAIA,CAAC,EACL,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACnC,MAAM,GAAG,EACZE,EAAKF,EACF,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,EACN,MAAM,IAAI,EAEbG,EAAKC,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CC,EAAKF,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CE,EAAKH,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/CG,EAAKJ,GAAaL,EAAE,IAAIM,GAAK,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAE/CI,EAAKT,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIF,CAAE,EAAE,MAAM,IAAI,EACzCO,EAAKV,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIC,CAAE,EAAE,MAAM,IAAI,EACzCK,EAAKX,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIE,CAAE,EAAE,MAAM,IAAI,EACzCK,EAAKZ,EAAE,IAAIK,GAAK,EAAG,CAAC,CAAC,EAAE,IAAIG,CAAE,EAAE,MAAM,IAAI,EAE/C,OAAOK,EACCJ,EACS,IAAIR,EAAE,EAAE,IAAIS,EAAG,IAAID,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIU,EAAG,IAAIF,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EACzDT,EACS,IAAIF,EAAE,EAAE,IAAIK,EAAG,IAAIH,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIM,EAAG,IAAIJ,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIN,EAAG,IAAID,EAAE,GAAG,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,IAAIP,GAAKK,EAAIC,CAAE,CAAC,EAAE,IAAIF,CAAE,CAAC,CAAC,CAC3F,CACR,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAajB,GAAG,CAAC,CAACkB,CAAG,IAAc,CACxC,IAAMjB,EAAIiB,EAAI,MAAM,EAAE,MAAM,GAAG,EACzBC,EAAID,EAAI,MAAM,EAAE,MAAM,GAAG,EACzBd,EAAIe,EACD,IAAIA,CAAC,EACL,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACnC,MAAM,GAAG,EACZd,EAAKc,EACF,IAAIA,CAAC,EACL,IAAIA,EAAE,IAAIA,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAC1B,IAAI,EAAE,EACN,MAAM,IAAI,EAEbb,EAAKc,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDP,EAAKW,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDN,EAAKU,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDL,EAAKS,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDK,EAAKD,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDM,EAAKF,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDO,EAAKH,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAClDQ,EAAKJ,GAAanB,EAAE,IAAIe,EAAK,EAAG,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAElDJ,EAAKO,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIV,CAAE,EAAE,MAAM,IAAI,EAC5CO,EAAKM,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIP,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKK,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIN,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKI,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIL,CAAE,EAAE,MAAM,IAAI,EAC5Cc,EAAKN,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIK,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKP,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIM,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKR,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIO,CAAE,EAAE,MAAM,IAAI,EAC5CK,EAAKT,EAAE,IAAIH,EAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAIQ,CAAE,EAAE,MAAM,IAAI,EAE5CK,EAAajB,EACV,IAAIR,EAAE,EAAE,IAAIS,EAAG,IAAID,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIU,EAAG,IAAIF,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIqB,EAAG,IAAIb,CAAE,CAAC,CAAC,EACvB,IAAIR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIX,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CAAC,CAAC,EAChD,IAAIvB,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIQ,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAId,EAAG,OAAO,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIU,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIxB,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAErG0B,EAAgBxB,EACb,IAAIF,EAAE,EAAE,IAAIK,EAAG,IAAIH,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIM,EAAG,IAAIJ,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIiB,EAAG,IAAIf,CAAE,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIP,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAII,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CAAC,CAAC,EAChD,IAAInB,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,EAAG,IAAIG,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CAAC,CAAC,EAChD,IAAIhB,EAAG,OAAO,EAAE,IAAIG,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIU,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIpB,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAClG,IACOC,EAAG,IACKW,EAAKH,EAAIC,EAAIW,CAAE,EACN,IAAIb,CAAE,EACN,IACOR,EAAE,IAAI,IACEY,EACQJ,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EACzBH,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,EACzBf,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,CACjC,CACR,CACR,EACC,IACOtB,EAAE,IAAI,IACEY,EACQJ,EAAG,IAAIC,CAAE,EAAE,IAAIY,CAAE,EAAE,IAAIC,CAAE,EACzBd,EAAG,IAAIC,CAAE,EAAE,IAAIC,CAAE,EAAE,IAAIC,CAAE,EACzBH,EAAG,IAAIE,CAAE,EAAE,IAAIW,CAAE,EAAE,IAAIE,CAAE,CACjC,CACR,CACR,EACC,IACOvB,EAAE,IACO,IAAIA,EAAE,GAAG,EACT,IACOQ,EACS,OAAO,EACP,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIU,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,EACN,IAAIC,CAAE,CACvB,CAChB,CAChB,CACR,EAER,OAAOG,GAAKF,EAAYC,CAAa,CAC7C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC1ID,OAAS,MAAAE,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,MAAuB,eAM3D,IAAMC,GAASC,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CAC7C,IAAMC,EAAKF,EAAE,KAAK,MAAM,EAAE,IAAIG,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACpDC,EAAKJ,EAAE,KAAK,MAAM,EAAE,IAAIG,EAAK,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAC1DD,EAAG,OAAOA,EAAG,IAAID,EAAI,IAAI,CAAC,EAC1BC,EAAG,OAAOG,GAAWH,CAAE,CAAC,EACxB,IAAMI,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EACvBM,EAAKJ,EAAG,KAAK,MAAM,IAAI,EACvBK,EAAKL,EAAG,KAAK,MAAM,IAAI,EAEvBM,EADIC,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,GAAG,EAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,EAC/CK,EAAKF,EAAG,IAAI,EAAE,IAAI,EAAG,EAAE,MAAM,IAAI,EACjCG,EAAKH,EAAG,IAAI,EAAG,EAAE,MAAM,EAAE,MAAM,IAAI,EACzCA,EAAG,OAAOA,EAAG,IAAIG,CAAE,CAAC,EACpB,IAAMC,EAAMC,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCI,EAAMD,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCK,EAAMF,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCM,EAAMH,GAAKL,EAAG,EAAGE,EAAG,CAAC,EAAE,MAAM,KAAK,EAClCO,EAAOC,EAAcjB,EAAKW,EAAI,IAAIA,CAAG,EAAGG,EAAI,IAAIA,CAAG,EAAGD,EAAI,IAAIA,CAAG,EAAGE,EAAI,IAAIA,CAAG,CAAC,CAAC,EAAE,MAAM,MAAM,EACrGJ,EAAI,UAAUK,EAAK,CAAC,EACpBF,EAAI,UAAUE,EAAK,CAAC,EACpBH,EAAI,UAAUG,EAAK,CAAC,EACpBD,EAAI,UAAUC,EAAK,CAAC,EACpB,IAAME,EAAMP,EAAI,IAAIC,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ca,EAAMN,EAAI,IAAID,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Cc,EAAMN,EAAI,IAAIF,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3Ce,EAAMN,EAAI,IAAIH,GAAKP,EAAG,EAAGC,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAC3CgB,EAAUC,GAAQtB,EAAG,EAAE,EAAE,MAAM,SAAS,EACxCuB,EAAMZ,GAAKM,EAAKE,CAAG,EAAE,IAAIR,GAAKO,EAAKE,CAAG,EAAGC,EAAQ,CAAC,EAAE,MAAM,KAAK,EAErE,OADaE,EAAI,EAAE,IAAIA,EAAI,EAAGF,EAAQ,CAAC,EAAE,MAAM,MAAM,EACzC,IAAI,GAAG,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYG,GAAa7B,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CACjD,IAAM4B,EAAM7B,EAAE,MAAM,EAAE,IAAIC,CAAG,EAAE,MAAM,KAAK,EACpC6B,EAAMD,EAAI,IAAIE,GAAK,CAAC,CAAC,EAAE,IAAI9B,CAAG,EAAE,MAAM,KAAK,EACjD4B,EAAI,OAAOG,GAAWH,CAAG,CAAC,EAC1BC,EAAI,OAAOE,GAAWF,CAAG,CAAC,EAC1B,IAAMG,EAAMjC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BkC,EAAMD,EAAI,IAAIF,GAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EAClCzB,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAMN,EAAI,KAAK,MAAM,KAAK,EAC1BO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAMF,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BG,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAMvC,EAAK,EAAG,EAAE,IAAIqC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAKvC,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCqC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKrC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjDsC,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAKtC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAMyC,EAAML,EAAK,IAAI,CAAC,EAAE,MAAM,KAAK,EAC7BM,EAAMD,EAAI,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,MAAM,KAAK,EAC3DA,EAAI,OAAOA,EAAI,MAAM,CAAC,EACtB,IAAME,EAAM3C,EAAK,EAAG,EAAE,IAAIyC,EAAI,IAAI,CAAC,EAAE,IAAIC,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EACzDE,EAAMD,EAAI,KAAK3C,EAAK,CAAC,CAAC,EAAE,MAAM,KAAK,EACzCyC,EAAI,UAAUG,EAAI,IAAIH,EAAI,KAAKzC,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD0C,EAAI,UAAUE,EAAI,IAAIF,EAAI,KAAK1C,EAAK,CAAC,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACjD,IAAM6C,EAAOjB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOlB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOnB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOpB,GAAKS,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAOrB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CO,EAAOtB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CQ,EAAOvB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CS,EAAOxB,GAAKa,EAAI,EAAGC,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,MAAM,EAC7CU,EAAQpC,EAAcjB,EAAK6C,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUQ,EAAM,CAAC,EACtBN,EAAK,UAAUM,EAAM,CAAC,EACtBP,EAAK,UAAUO,EAAM,CAAC,EACtBL,EAAK,UAAUK,EAAM,CAAC,EACtB,IAAMC,EAAQrC,EAAcjB,EAAKiD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,EAAGD,EAAK,IAAIA,CAAI,EAAGE,EAAK,IAAIA,CAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC/GH,EAAK,UAAUK,EAAM,CAAC,EACtBH,EAAK,UAAUG,EAAM,CAAC,EACtBJ,EAAK,UAAUI,EAAM,CAAC,EACtBF,EAAK,UAAUE,EAAM,CAAC,EACtB,IAAMC,EAAOV,EAAK,IAAIf,CAAG,EAAE,MAAM,MAAM,EACjC0B,EAAOV,EAAK,IAAIlB,GAAKG,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD2B,EAAOV,EAAK,IAAInB,GAAKE,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD4B,EAAOV,EAAK,IAAIpB,GAAKG,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAIrB,GAAKE,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACjD6B,EAAOV,EAAK,IAAItB,GAAKG,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,MAAM,EACvD8B,EAAOV,EAAK,IAAIvB,GAAKE,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,MAAM,EACjD+B,EAAOV,EAAK,IAAIrB,CAAG,EAAE,MAAM,MAAM,EACjCgC,EAAWxC,GAAQO,CAAG,EAAE,MAAM,UAAU,EACxCkC,EAAMhE,EAAKuD,EAAMC,EAAMC,EAAMC,CAAI,EAAE,IAAI1D,EAAK2D,EAAMC,EAAMC,EAAMC,CAAI,EAAGC,EAAS,CAAC,EAAE,MAAM,KAAK,EAC5FE,GAAOD,EAAI,GAAG,IAAIA,EAAI,GAAID,EAAS,CAAC,EAAE,MAAM,MAAM,EAExD,OADcE,GAAK,EAAE,IAAIA,GAAK,EAAGF,EAAS,CAAC,EAAE,MAAM,OAAO,EAC7C,IAAI,GAAG,CAC5B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYG,GAAatE,GAAG,CAAC,CAACC,EAAGC,CAAG,IAAoB,CACjD,IAAM4B,EAAM7B,EAAE,MAAM,EAAE,IAAIC,CAAG,EAAE,MAAM,KAAK,EACpC6B,EAAMD,EAAI,IAAI,CAAC,EAAE,IAAI5B,CAAG,EAAE,MAAM,KAAK,EAC3C4B,EAAI,OAAOxB,GAAWwB,CAAG,CAAC,EAC1BC,EAAI,OAAOzB,GAAWyB,CAAG,CAAC,EAC1B,IAAMG,EAAMjC,EAAE,MAAM,EAAE,MAAM,KAAK,EAC3BkC,EAAMD,EAAI,IAAI,CAAC,EAAE,MAAM,KAAK,EAC5B3B,EAAKH,EAAK0B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,EAAE,MAAM,IAAI,EAChDvB,EAAKJ,EAAK0B,EAAI,GAAIC,EAAI,EAAE,EAAE,MAAM,IAAI,EACpCK,EAAMhC,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAMjC,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCwC,EAAMnE,EAAK0B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChC0C,EAAMpE,EAAK2B,EAAI,IAAI,EAAE,MAAM,KAAK,EAChCO,EAAM1B,EAAYA,EAAYL,CAAE,EAAE,IAAIC,CAAE,CAAC,EAAE,MAAM,KAAK,EACtD+B,EAAO3B,EAAY0B,EAAI,IAAIF,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CI,EAAO5B,EAAY0B,EAAI,IAAID,CAAG,CAAC,EAAE,MAAM,MAAM,EAC7CoC,EAAQ7D,EAAY2B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ9D,EAAY2B,EAAK,IAAIiC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDG,EAAQ/D,EAAY4B,EAAK,IAAI+B,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAQhE,EAAY4B,EAAK,IAAIgC,CAAG,CAAC,EAAE,MAAM,OAAO,EAChDK,EAAOJ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCK,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO5E,EAAK,GAAI,EAAE,IAAIyE,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK5E,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CyE,EAAK,UAAUI,EAAK,IAAI7E,EAAK,CAAC,EAAE,KAAKyE,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAI7E,EAAK,CAAC,EAAE,KAAK0E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOR,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCS,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOjF,EAAK,GAAI,EAAE,IAAI8E,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKjF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5C8E,EAAK,UAAUI,EAAK,IAAIlF,EAAK,CAAC,EAAE,KAAK8E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAIlF,EAAK,CAAC,EAAE,KAAK+E,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOZ,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCa,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAOtF,EAAK,GAAI,EAAE,IAAImF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAKtF,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CmF,EAAK,UAAUI,EAAK,IAAIvF,EAAK,CAAC,EAAE,KAAKmF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAIvF,EAAK,CAAC,EAAE,KAAKoF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAOhB,EAAM,IAAI,CAAC,EAAE,MAAM,MAAM,EAChCiB,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EACvCE,EAAOD,EAAK,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC7CD,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjCC,EAAK,OAAOA,EAAK,MAAM,EAAE,IAAI,EAAG,CAAC,EACjC,IAAMC,EAAO3F,EAAK,GAAI,EAAE,IAAIwF,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,IAAIC,EAAK,IAAI,CAAC,EAAE,MAAM,MAAM,EAC9EE,EAAOD,EAAK,KAAK3F,EAAK,CAAC,CAAC,EAAE,MAAM,MAAM,EAC5CwF,EAAK,UAAUI,EAAK,IAAI5F,EAAK,CAAC,EAAE,KAAKwF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpDC,EAAK,UAAUG,EAAK,IAAI5F,EAAK,CAAC,EAAE,KAAKyF,CAAI,EAAE,IAAI,EAAG,CAAC,CAAC,EACpD,IAAMI,EAAQ7F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,EAAQ9F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DmB,GAAQ/F,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DoB,GAAQhG,EAAKyE,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQjG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DY,GAAQlG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Da,GAAQnG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1Dc,GAAQpG,EAAKmF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,GAAQrG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DqB,GAAQtG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DsB,GAAQvG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DuB,EAAQxG,EAAK8E,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DwB,EAAQzG,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1De,GAAQ1G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DgB,GAAQ3G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DiB,GAAQ5G,EAAKwF,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,CAAC,EAAE,MAAM,OAAO,EAC1DkB,GAAS5F,EACPjB,EAAK6F,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUgB,GAAO,CAAC,EACxBd,GAAM,UAAUc,GAAO,CAAC,EACxBf,EAAM,UAAUe,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxB,IAAMC,GAAS7F,EACPjB,EAAKqG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,EAAM,IAAIA,CAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUS,GAAO,CAAC,EACxBP,GAAM,UAAUO,GAAO,CAAC,EACxBR,GAAM,UAAUQ,GAAO,CAAC,EACxBN,EAAM,UAAUM,GAAO,CAAC,EACxB,IAAMC,GAAS9F,EACPjB,EAAKiG,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,GAAM,UAAUc,GAAO,CAAC,EACxBZ,GAAM,UAAUY,GAAO,CAAC,EACxBb,GAAM,UAAUa,GAAO,CAAC,EACxBX,GAAM,UAAUW,GAAO,CAAC,EACxB,IAAMC,GAAS/F,EACPjB,EAAKyG,EAAM,IAAIA,CAAK,EAAGE,GAAM,IAAIA,EAAK,EAAGD,GAAM,IAAIA,EAAK,EAAGE,GAAM,IAAIA,EAAK,CAAC,CACnF,EAAE,MAAM,QAAQ,EAChBH,EAAM,UAAUO,GAAO,CAAC,EACxBL,GAAM,UAAUK,GAAO,CAAC,EACxBN,GAAM,UAAUM,GAAO,CAAC,EACxBJ,GAAM,UAAUI,GAAO,CAAC,EACxB,IAAMC,GAAQpB,EAAM,IAAI/D,CAAG,EAAE,MAAM,OAAO,EACpCoF,GAAQpB,EAAM,IAAI9F,EAAK+B,EAAI,EAAGD,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDqF,GAAQpB,GAAM,IAAI/F,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DsF,GAAQpB,GAAM,IAAIhG,EAAK+B,EAAI,GAAID,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrDuF,GAAQpB,GAAM,IAAIjG,EAAK8B,EAAI,GAAIC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3DwF,GAAQpB,GAAM,IAAIlG,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAGD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjEyF,GAAQpB,GAAM,IAAInG,EAAK8B,EAAI,EAAGC,EAAI,GAAID,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D0F,GAAQpB,GAAM,IAAIpG,EAAK+B,EAAI,IAAKD,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAIrG,EAAK8B,EAAI,IAAKC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACrD2F,GAAQpB,GAAM,IAAItG,EAAK+B,EAAI,EAAGD,EAAI,GAAIC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D4F,GAAQpB,GAAM,IAAIvG,EAAK8B,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EACjE6F,GAAQpB,EAAM,IAAIxG,EAAK+B,EAAI,GAAID,EAAI,EAAGC,EAAI,CAAC,CAAC,EAAE,MAAM,OAAO,EAC3D8F,GAAQpB,EAAM,IAAIzG,EAAK8B,EAAI,GAAIC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EACrD+F,GAAQpB,GAAM,IAAI1G,EAAK+B,EAAI,EAAGD,EAAI,EAAGC,EAAI,EAAE,CAAC,EAAE,MAAM,OAAO,EAC3DgG,GAAQpB,GAAM,IAAI3G,EAAK8B,EAAI,EAAGC,EAAI,GAAG,CAAC,EAAE,MAAM,OAAO,EACrDiG,GAAQpB,GAAM,IAAI7E,CAAG,EAAE,MAAM,OAAO,EACpCkG,GAAY1G,GAAQO,CAAG,EAAE,MAAM,WAAW,EAC1CoG,GAAOlI,EAAKiH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIpH,EAAKyH,GAAOC,GAAOC,GAAOC,EAAK,EAAGK,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGE,GAAOnI,EAAKqH,GAAOC,GAAOC,GAAOC,EAAK,EAAE,IAAIxH,EAAK6H,GAAOC,GAAOC,GAAOC,EAAK,EAAGC,GAAU,CAAC,EAAE,MAAM,MAAM,EACvGG,GAAOF,GAAK,IAAIC,GAAMF,GAAU,CAAC,EAAE,MAAM,MAAM,EAC/CI,GAAQD,GAAK,GAAG,IAAIA,GAAK,GAAIH,GAAU,CAAC,EAAE,MAAM,OAAO,EAE7D,OADeI,GAAM,EAAE,IAAIA,GAAM,EAAGJ,GAAU,CAAC,EAAE,MAAM,QAAQ,EACjD,IAAI,GAAG,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,ECxPD,OAAS,MAAAK,GAAuB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAiB,MAAAC,GAAI,SAAAC,OAAkB,eAKlF,IAAMC,GAAcC,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IAAiC,CACzE,IAAMC,EAAKC,GAAKJ,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAE,CAAC,EAAE,MAAM,IAAI,EAC9CK,EAAKF,EAAG,MAAM,EAAE,MAAM,IAAI,EAC1BG,EAAKH,EAAG,MAAM,EAAE,MAAM,IAAI,EAC1BI,EAAMD,EAAG,EAAE,KAAKA,EAAG,CAAC,EAAE,MAAM,KAAK,EACjCE,EAAKJ,GAAKG,EAAKA,EAAI,SAAS,CAAC,EAAE,MAAM,IAAI,EACzCE,EAAKJ,EAAG,IAAIG,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAKL,EAAG,IAAID,GAAK,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAElCO,EAAKP,GAAKC,EAAG,EAAE,IAAIA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAG,CAAC,EAAE,MAAM,IAAI,EACjDO,EAAKR,GAAKO,EAAG,EAAE,IAAIH,EAAG,CAAC,EAAE,IAAIA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGG,EAAG,EAAE,IAAIH,EAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EACrEK,EAAKT,GAAKO,EAAG,EAAE,IAAI,EAAG,EAAGA,EAAG,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EAEhDG,EAAKd,EAAE,IAAIW,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKf,EAAE,IAAIY,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKhB,EAAE,IAAIa,CAAE,EAAE,MAAM,IAAI,EAE3BI,EAAKC,GAAKb,EAAG,EAAGI,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCS,EAAKD,GAAKb,EAAG,EAAGI,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAE1CU,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAG,IAAM,CACtD,IAAMoB,EAAKH,GAAKP,EAAG,EAAGC,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCS,EAAKJ,GAAKP,EAAG,EAAGC,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAE5CO,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAM,CAC1BoB,EAAG,OAAOA,EAAG,IAAIpB,EAAO,CAAC,CAAC,CAClC,CAAC,EAEDmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAM,CAC1BqB,EAAG,OAAOA,EAAG,IAAIrB,EAAO,CAAC,CAAC,CAClC,CAAC,EAEDgB,EAAG,OAAOI,EAAG,IAAIC,EAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,CAAC,EAC5CH,EAAG,OAAOG,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,CACrC,CAAC,EAED,IAAIC,EAAOC,GAAWP,CAAE,EAAE,MAAM,MAAM,EACtCM,EAAK,OAAOC,GAAWD,EAAK,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,CAAI,EAAE,IAAIJ,CAAE,CAAC,CAAC,EAC7DI,EAAK,OAAOC,GAAWD,EAAK,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAIA,CAAI,CAAC,CAAC,EAEtD,IAAME,EAAMF,EAAK,IAAI,MAAO,EAAE,IAAIrB,CAAK,EAAE,MAAM,KAAK,EAC9CwB,EAAKD,EAAI,IAAI,EAAE,MAAM,IAAI,EACzBE,EAAKF,EAAI,IAAI,EAAE,MAAM,IAAI,EAEzBG,EAAKxB,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCE,EAAKzB,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAChCG,EAAK1B,GAAKsB,EAAG,EAAGC,EAAG,CAAC,EAAE,MAAM,IAAI,EAEhCI,EAAIb,GAAK,EAAG,EACT,IAAIA,GAAKJ,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,CAAC,CAAC,EAC5C,MAAM,GAAG,EAClBe,EAAE,OAAOA,EAAE,IAAI,CAAC,CAAC,EAEjB,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBE,EAAKD,EAAG,IAAIA,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAQhB,GAAKU,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,CAAC,EAAE,MAAM,OAAO,EAC9DmB,EAAIF,EAAG,IAAIC,CAAK,EAAE,MAAM,GAAG,EAG3BE,EADKJ,EAAG,IAAID,CAAC,EAAE,MAAM,IAAI,EACjB,IAAI,EAAE,EAAE,IAAIG,CAAK,EAAE,MAAM,IAAI,EACrCG,EAAMT,EAAG,IAAIK,EAAG,CAAC,EAAE,IAAInB,EAAG,IAAIsB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDE,EAAMT,EAAG,IAAII,EAAG,CAAC,EAAE,IAAIlB,EAAG,IAAIqB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDG,EAAMT,EAAG,IAAIG,EAAG,CAAC,EAAE,IAAIjB,EAAG,IAAIoB,EAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDI,EAAWH,EAAI,IAAIC,CAAG,EAAE,IAAIC,CAAG,EAAE,IAAI,IAAI,EAAE,MAAM,UAAU,EAEjE,OAAOnC,GAAK+B,EAAE,IAAI,IAAI,EAAGK,EAAS,OAAO,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAGYC,GAAc1C,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IAAiC,CACzE,IAAMwC,EAAIC,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAE,MAAM,GAAG,EAC7CC,EAAKD,GAAK,IAAM,GAAK,GAAK,GAAK,IAAM,GAAK,GAAK,GAAK,GAAI,EAAE,MAAM,IAAI,EAEpEE,EAAMH,EAAE,IAAI1C,CAAC,EAAE,MAAM,KAAK,EAC1BK,EAAKwC,EAAI,MAAM,EAAE,MAAM,IAAI,EAC3BvC,EAAKuC,EAAI,MAAM,EAAE,MAAM,IAAI,EAE3BC,EAAKxC,EAAG,IAAI,KAAKA,EAAG,GAAG,EAAE,MAAM,IAAI,EACnCyC,EAAKD,EAAG,SAAS,EAAE,MAAM,IAAI,EAC7BE,EAAI9B,GAAK6B,EAAG,EAAGD,EAAG,EAAE,EAAE,MAAM,GAAG,EAC/BG,EAAI/B,GAAK6B,EAAG,GAAID,EAAG,CAAC,EAAE,MAAM,GAAG,EAE/BtC,EAAKwC,EAAE,IAAIC,CAAC,EAAE,MAAM,IAAI,EACxBC,EAAKF,EAAE,IAAIC,CAAC,EAAE,MAAM,IAAI,EAExBxC,EAAKJ,EAAG,IAAIG,CAAE,EAAE,MAAM,IAAI,EAC1BE,EAAKL,EAAG,IAAI6C,CAAE,EAAE,MAAM,IAAI,EAC1BC,EAAK9C,EAAG,IAAIa,GAAK,CAAC,CAAC,EAAE,MAAM,IAAI,EAEjCP,EAAKiC,EAAG,IAAIvC,CAAE,EAAE,MAAM,IAAI,EAC1BO,EAAKgC,EAAG,IAAInC,CAAE,EAAE,MAAM,IAAI,EAC1BI,EAAK+B,EAAG,IAAIlC,CAAE,EAAE,MAAM,IAAI,EAC1B0C,EAAKR,EAAG,IAAIO,CAAE,EAAE,MAAM,IAAI,EAExBrC,EAAKd,EAAE,IAAIW,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKf,EAAE,IAAIY,CAAE,EAAE,MAAM,IAAI,EACzBI,EAAKhB,EAAE,IAAIa,CAAE,EAAE,MAAM,IAAI,EACzBwC,EAAKrD,EAAE,IAAIoD,CAAE,EAAE,MAAM,IAAI,EAE/BhC,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAE,GAAGA,EAAO,EAAE,YAAY,CAAC,CAAC,EAAG,IAAM,CAClF,IAAMqD,EAAKC,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAC5CI,EAAKD,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAC5CK,GAAKF,GAAK5C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGuC,EAAG,CAAC,EAAE,MAAM,IAAI,EAElDhC,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMqD,EAAG,OAAOA,EAAG,IAAIrD,EAAO,CAAC,CAAC,CAAC,EAC7DmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMuD,EAAG,OAAOA,EAAG,IAAIvD,EAAO,CAAC,CAAC,CAAC,EAC7DmB,GAAGnB,EAAO,EAAE,YAAY,CAAC,EAAG,IAAMwD,GAAG,OAAOA,GAAG,IAAIxD,EAAO,CAAC,CAAC,CAAC,EAE7DI,EAAG,OAAOqC,EAAE,IAAIxB,GAAKoC,EAAG,EAAGE,EAAG,EAAGC,GAAG,CAAC,CAAC,CAAC,EACvChD,EAAG,OAAOiC,EAAE,IAAIxB,GAAKoC,EAAG,EAAGE,EAAG,EAAGC,GAAG,CAAC,CAAC,CAAC,EACvC/C,EAAG,OAAOgC,EAAE,IAAIxB,GAAKoC,EAAG,EAAGE,EAAG,EAAGC,GAAG,CAAC,CAAC,CAAC,EACvCN,EAAG,OAAOT,EAAE,IAAIxB,GAAKoC,EAAG,EAAGE,EAAG,EAAGC,GAAG,CAAC,CAAC,CAAC,EAEvCpD,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7BI,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7BC,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,EAC7ByC,EAAG,OAAOA,EAAG,IAAI,EAAG,EAAE,MAAM,CAAC,CACrC,CAAC,EAED,IAAM5B,EAAOmC,EACLA,EAAYA,EAAYH,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CAAC,EAAE,IAAII,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CAAC,CAAC,EAAE,IACjFI,GAAKlD,EAAG,EAAGI,EAAG,EAAGC,EAAG,EAAGyC,EAAG,CAAC,CACnC,CACR,EAAE,MAAM,MAAM,EAERQ,EAAQpC,EAAK,IAAI,WAAW,EAAE,MAAM,OAAO,EAC3CqC,EAAKrC,EAAK,IAAI,WAAY,EAAE,IAAI,UAAW,EAAE,MAAM,IAAI,EACvDE,EAAMF,EAAK,IAAI,UAAW,EAAE,MAAM,KAAK,EAEvCsC,EAAKF,EAAM,IAAI,EAAE,MAAM,IAAI,EAC3BG,EAAKH,EAAM,IAAI,EAAE,MAAM,IAAI,EAC3BI,EAAWH,EAAG,IAAIA,CAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,EAExDlC,EAAKmC,EAAG,IAAIE,CAAQ,EAAE,MAAM,IAAI,EAChCpC,EAAKmC,EAAG,IAAIC,CAAQ,EAAE,MAAM,IAAI,EAChCC,EAAKJ,EAAG,MAAM,IAAI,EAExBxC,GAAGlB,EAAM,SAAS,CAAC,EAAG,IAAM,CACpB,IAAM+D,EAAKxC,EAAI,IAAI,EAAE,MAAM,IAAI,EACzByC,EAAKzC,EAAI,IAAI,EAAE,MAAM,IAAI,EACzB0C,GAAKN,EAAG,IAAIE,CAAQ,EAAE,MAAM,IAAI,EAChCK,GAAKN,EAAG,IAAIC,CAAQ,EAAE,MAAM,IAAI,EAChCM,GAAKT,EAAG,MAAM,IAAI,EAElBU,GAAMR,EAAG,IAAIG,CAAE,EAAE,IAAIJ,EAAG,IAAIK,CAAE,CAAC,EAAE,MAAM,KAAK,EAC5CK,GAAKD,GAAI,IAAIR,CAAE,EAAE,IAAIG,EAAIL,CAAE,EAAE,MAAM,IAAI,EACvCY,GAAKF,GAAI,OAAO,EAAE,IAAIT,CAAE,EAAE,IAAIK,EAAIN,CAAE,EAAE,MAAM,IAAI,EAChDa,GAAKL,GAAG,IAAIF,CAAE,EAAE,IAAIC,GAAG,IAAIF,CAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EAEnDS,GAAKnB,GAAKrD,EAAM,IAAI,CAAC,EAAE,MAAM,IAAI,EACjCyE,GAAKpB,GAAKrD,EAAM,IAAI,CAAC,EAAE,MAAM,IAAI,EAEvCwB,EAAG,OAAOiD,GAAG,IAAIR,EAAE,EAAE,IAAIO,GAAG,IAAIH,EAAE,CAAC,CAAC,EACpC5C,EAAG,OAAOgD,GAAG,IAAIP,EAAE,EAAE,IAAIM,GAAG,IAAIF,EAAE,CAAC,CAAC,EACpCR,EAAG,OAAOW,GAAG,IAAIN,EAAE,EAAE,IAAIK,GAAG,IAAID,EAAE,CAAC,CAAC,CAC5C,CAAC,EAED,IAAM7C,EAAKV,GAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCnC,EAAKX,GAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtClC,EAAKZ,GAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EACtCY,EAAK1D,GAAKQ,EAAG,EAAGC,EAAG,EAAGqC,EAAG,CAAC,EAAE,MAAM,IAAI,EAExCjC,EAAIwB,GAAK,EAAG,EACP,IAAIA,GAAKzC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGC,EAAG,IAAIA,CAAE,EAAGqC,EAAG,IAAIA,CAAE,CAAC,CAAC,EACxD,MAAM,GAAG,EAClBtB,EAAE,OAAOA,EAAE,IAAI,CAAC,CAAC,EAEjB,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxB8C,GAAK7C,EAAG,IAAID,CAAC,EAAE,MAAM,IAAI,EACzBG,GAAQqB,GAAK3B,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAGe,EAAG,IAAId,CAAE,EAAG4D,EAAG,IAAIvB,CAAE,CAAC,EAAE,MAAM,OAAO,EAC1ElB,GAAI0C,GAAG,IAAI3C,EAAK,EAAE,MAAM,GAAG,EAE3BE,GAAKJ,EAAG,IAAI,EAAE,EAAE,IAAIE,EAAK,EAAE,MAAM,IAAI,EACrCG,GAAMT,EAAG,IAAIiD,GAAG,CAAC,EAAE,IAAI/D,EAAG,IAAIsB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDE,GAAMT,EAAG,IAAIgD,GAAG,CAAC,EAAE,IAAI9D,EAAG,IAAIqB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDG,GAAMT,EAAG,IAAI+C,GAAG,CAAC,EAAE,IAAI7D,EAAG,IAAIoB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChD0C,GAAMF,EAAG,IAAIC,GAAG,CAAC,EAAE,IAAIxB,EAAG,IAAIjB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,EAChDI,GAAWH,GAAI,IAAIC,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIuC,EAAG,EAAE,IAAI,IAAI,EAAE,MAAM,UAAU,EAE1E,OAAO5D,GAAKiB,GAAE,IAAI,IAAI,EAAGK,GAAS,EAAE,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAGYuC,GAAYhF,GAAG,CAAC,CAACC,CAAC,IAChBF,GAAYE,EAAGI,GAAK,CAAC,EAAG4E,GAAM,CAAC,CAAC,EAAE,CAChD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYC,GAAalF,GAAG,CAAC,CAACC,EAAGC,CAAM,IACzBH,GAAYE,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYE,GAAkBnF,GAAG,CAAC,CAACC,EAAGC,CAAM,IAC9BH,GAAYE,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYG,GAAiBpF,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IACpCJ,GAAYE,EAAGC,EAAQC,CAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYkF,GAAarF,GAAG,CAAC,CAACC,CAAC,IACjByC,GAAYzC,EAAGkB,GAAK,CAAC,EAAG8D,GAAM,CAAC,CAAC,EAAE,CAChD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAmBtF,GAAG,CAAC,CAACC,EAAGC,CAAM,IAC/BwC,GAAYzC,EAAGC,EAAQ+E,GAAM,CAAC,CAAC,EAAE,CAC/C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,EAEYM,GAAkBvF,GAAG,CAAC,CAACC,EAAGC,EAAQC,CAAK,IACrCuC,GAAYzC,EAAGC,EAAQC,CAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECpRD,OAAS,MAAAqF,GAAuB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,MAAAC,OAAU,eAItD,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAI,IAA2B,CACvD,IAAMC,EAAOF,EAAG,MAAM,EAAE,MAAM,MAAM,EAC9BG,EAAOH,EAAG,MAAM,EAAE,MAAM,MAAM,EAC9BI,EAAMC,GAAK,EAAG,EAAG,EAAE,EAAE,MAAM,KAAK,EAIhCC,EAAgBC,GAAK,GAAI,EAAE,EAAE,MAAM,eAAe,EAClDC,EAAaC,GAAYP,EAAK,IAAII,CAAa,CAAC,EAAE,MAAM,YAAY,EAC1EE,EAAW,OAAOE,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIO,EAAW,IAAIG,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAErF,IAAMC,EADYN,EAAc,IAAIE,CAAU,EAAE,IAAIL,CAAI,EAAE,MAAM,WAAW,EAC/C,OAAO,EAAE,MAAM,WAAW,EACtDU,GAAGD,EAAU,SAASR,EAAI,CAAC,EAAG,IAAM,CAC5BA,EAAI,GAAG,OAAOI,CAAU,EACxBJ,EAAI,EAAE,OAAOQ,CAAS,CAC9B,CAAC,EAGD,IAAME,EAAeP,GAAK,EAAG,EAAE,EAAE,MAAM,cAAc,EAC/CQ,EAAYN,GAAYP,EAAK,IAAIY,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOL,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIc,EAAU,IAAIJ,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMK,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIZ,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGG,EAAS,SAASZ,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOW,CAAS,EACvBX,EAAI,EAAE,OAAOY,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAeV,GAAK,EAAG,EAAE,EAAE,MAAM,cAAc,EAC/CW,EAAYT,GAAYP,EAAK,IAAIe,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOR,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIiB,EAAU,IAAIP,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMQ,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIf,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGM,EAAS,SAASf,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOc,CAAS,EACvBd,EAAI,EAAE,OAAOe,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAeb,GAAK,GAAI,CAAC,EAAE,MAAM,cAAc,EAC/Cc,EAAYZ,GAAYP,EAAK,IAAIkB,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOX,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIoB,EAAU,IAAIV,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMW,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAIlB,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGS,EAAS,SAASlB,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAOiB,CAAS,EACvBjB,EAAI,EAAE,OAAOkB,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAchB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5CiB,EAAWf,GAAYP,EAAK,IAAIqB,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOd,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIuB,EAAS,IAAIb,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMc,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIrB,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGY,EAAQ,SAASrB,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOoB,CAAQ,EACtBpB,EAAI,EAAE,OAAOqB,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAcnB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5CoB,EAAWlB,GAAYP,EAAK,IAAIwB,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOjB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAI0B,EAAS,IAAIhB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMiB,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIxB,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGe,EAAQ,SAASxB,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOuB,CAAQ,EACtBvB,EAAI,EAAE,OAAOwB,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAetB,GAAK,GAAI,CAAC,EAAE,MAAM,cAAc,EAC/CuB,EAAYrB,GAAYP,EAAK,IAAI2B,CAAY,CAAC,EAAE,MAAM,WAAW,EACvEC,EAAU,OAAOpB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAI6B,EAAU,IAAInB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEnF,IAAMoB,EADWF,EAAa,IAAIC,CAAS,EAAE,IAAI3B,CAAI,EAAE,MAAM,UAAU,EAC7C,OAAO,EAAE,MAAM,UAAU,EACnDU,GAAGkB,EAAS,SAAS3B,EAAI,CAAC,EAAG,IAAM,CAC3BA,EAAI,GAAG,OAAO0B,CAAS,EACvB1B,EAAI,EAAE,OAAO2B,CAAQ,CAC7B,CAAC,EAGD,IAAMC,EAAczB,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5C0B,EAAWxB,GAAYP,EAAK,IAAI8B,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAOvB,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAIgC,EAAS,IAAItB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAMuB,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAI9B,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChDU,GAAGqB,EAAQ,SAAS9B,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAO6B,CAAQ,EACtB7B,EAAI,EAAE,OAAO8B,CAAO,CAC5B,CAAC,EAGD,IAAMC,EAAc5B,GAAK,EAAG,CAAC,EAAE,MAAM,aAAa,EAC5C6B,EAAW3B,GAAYP,EAAK,IAAIiC,CAAW,CAAC,EAAE,MAAM,UAAU,EACpEC,EAAS,OAAO1B,GAAM,EAAG,EAAE,IAAIA,GAAM,EAAG,EAAE,IAAIT,EAAK,IAAImC,EAAS,IAAIzB,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAEjF,IAAM0B,EADUF,EAAY,IAAIC,CAAQ,EAAE,IAAIjC,CAAI,EAAE,MAAM,SAAS,EAC3C,OAAO,EAAE,MAAM,SAAS,EAChD,OAAAU,GAAGwB,EAAQ,SAASjC,EAAI,CAAC,EAAG,IAAM,CAC1BA,EAAI,GAAG,OAAOgC,CAAQ,EACtBhC,EAAI,EAAE,OAAOiC,CAAO,CAC5B,CAAC,EAEMjC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYkC,GAAcvC,GAAG,CAAC,CAACwC,CAAC,IAClBzC,GAAQyC,EAAG7B,GAAM,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEY8B,GAAczC,GAAG,CAAC,CAACwC,CAAC,IAClBzC,GAAQyC,EAAE,GAAIA,EAAE,CAAC,CAC/B,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrID,OAAS,MAAAE,GAAuB,QAAAC,GAAM,QAAAC,GAAM,OAAAC,GAAiB,SAAAC,GAAO,QAAAC,OAAY,eAGzE,IAAMC,GAAYC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAmC,CAChE,IAAMC,EAAIC,GAAM,CAAC,EACR,IAAIA,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,IAAIE,GAAM,CAAC,CAAC,CAAC,CAAC,EAChD,MAAM,GAAG,EACZC,EAAIL,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBM,EAAIN,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBO,EAAIC,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAG9B,OAAAC,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGC,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAID,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGG,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIH,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EACrDK,EAAIP,GAAKM,EAASF,CAAO,EAAE,MAAM,GAAG,EACpCI,EAAIC,GAAYZ,EAAE,IAAIU,CAAC,CAAC,EAAE,IAAIG,GAAKjB,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACtDkB,EAAIJ,EAAE,IAAIT,CAAC,EAAE,IAAIU,EAAE,EAAE,EAAE,MAAM,GAAG,EAChCI,EAAIhB,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,WAAW,MAAOe,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIhB,CAAC,EAAE,MAAM,GAAG,EAC/EI,EAAE,UAAUC,GAAKQ,EAAE,EAAE,IAAII,CAAC,EAAGA,CAAC,CAAC,CACvC,CAAC,CACT,CAAC,EAEMb,EAAE,EAAE,IAAIA,EAAE,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYc,GAAgBtB,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAmC,CACpE,IAAMC,EAAIC,GAAM,CAAC,EACR,IAAIA,GAAM,EAAE,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIF,CAAC,EAAE,IAAIE,GAAM,CAAC,CAAC,CAAC,CAAC,EAChD,MAAM,GAAG,EACZC,EAAIL,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBM,EAAIN,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBO,EAAIC,GAAK,EAAG,CAAC,EAAE,MAAM,GAAG,EAG9B,OAAAC,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGY,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIZ,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGC,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAID,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EAC3DD,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGG,CAAM,IAAM,CACvB,IAAMC,EAAUD,EAAM,IAAIH,GAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,EACrDK,EAAIG,GAAKJ,EAASF,EAASW,CAAO,EAAE,MAAM,GAAG,EAC7CP,EAAIQ,GAAYnB,EAAE,IAAIU,CAAC,CAAC,EAAE,IAAIG,GAAKjB,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACtDkB,EAAIJ,EAAE,IAAIT,CAAC,EAAE,IAAIU,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EACtCI,EAAIhB,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,WAAW,MAAOe,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIhB,CAAC,EAAE,MAAM,GAAG,EAC/EI,EAAE,UAAUC,GAAKQ,EAAE,EAAE,IAAII,CAAC,EAAGA,CAAC,CAAC,CACvC,CAAC,CACT,CAAC,CACT,CAAC,EAEMb,EAAE,EAAE,IAAIA,EAAE,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECpED,OAAS,MAAAkB,GAAuB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,GAAO,QAAAC,OAAY,eCA9D,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IAAqB,CAC3C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOF,GAAKG,EAAGC,EAAGA,EAAE,OAAO,EAAGD,CAAC,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EDNM,IAAME,GAAUC,GAAG,CAAC,CAACC,EAAGC,EAAOC,CAAC,IAAmC,CAClE,IAAMC,EAAIC,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBC,EAAID,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBE,EAAIF,GAAM,CAAC,EAAE,MAAM,GAAG,EAE5B,OAAAG,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChB,IAAMC,EAAIV,EAAE,IAAIK,CAAC,EAAE,MAAM,GAAG,EACtBM,EAAIC,GAAWF,EAAE,MAAM,CAAC,EAAE,IAAI,GAAI,EAAE,MAAM,GAAG,EAEnDA,EAAE,OAAOA,EAAE,MAAM,EAAE,IAAI,EAAG,EAAE,IAAIG,GAASF,CAAC,CAAC,CAAC,EAE5CR,EAAE,UACMO,EAAE,EACO,IAAI,EAAE,EACN,IAAIT,CAAK,EACT,IAAI,EACJ,IAAIG,GAAM,GAAI,EAAE,WAAW,EAAGM,EAAE,IAAIA,CAAC,CAAC,CAAC,EACvC,IAAIL,CAAC,CACtB,EAEAL,EAAE,OAAOA,EAAE,IAAIc,GAAK,IAAM,KAAO,IAAM,GAAI,CAAC,EAAE,IAAIL,EAAE,QAAQ,CAAC,CAAC,EAC9DH,EAAE,UAAUF,GAAM,CAAC,EAAE,IAAIC,CAAC,CAAC,EAC3BA,EAAE,UAAUH,CAAC,CACrB,CAAC,EAEMC,EAAE,IAAIG,CAAC,CACtB,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYS,GAAehB,GAAG,CAAC,CAACC,EAAGE,CAAC,IACtBJ,GAAQE,EAAE,GAAIA,EAAE,EAAGE,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYc,GAAcjB,GAAG,CAAC,CAACC,CAAC,IAClBe,GAAaf,EAAGI,GAAM,IAAI,CAAC,CACzC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYa,GAAmBlB,GAAG,CAAC,CAACC,EAAGC,CAAK,IAC9BH,GAAQE,EAAGC,EAAOG,GAAM,IAAI,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYc,GAAcnB,GAAG,CAAC,CAACC,CAAC,IAClBF,GAAQE,EAAGI,GAAM,CAAC,EAAGA,GAAM,IAAI,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EE5ED,OAAS,MAAAe,GAAuB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,MAAAC,OAAU,eCAxE,OAAS,MAAAC,GAA6B,OAAAC,EAAK,YAAAC,GAAU,OAAAC,GAAK,OAAAC,OAAW,eAErE,IAAMC,GAAmB,EAEZC,GAAgBN,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBN,GAASK,EAAGC,CAAC,CAC3B,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAgBT,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAE,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrD,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAiBV,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EACd,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAiBX,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EACd,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAIP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYI,GAAgBZ,GAAG,CAAC,CAACO,EAAGC,CAAC,IACvBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYK,GAAiBb,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9E,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAAiBd,GAAG,CAAC,CAACO,EAAGC,CAAC,IACxBL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGL,GAAIF,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGP,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACtG,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYO,GAAgBf,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CACzD,IAAMQ,EAAIX,GACV,OAAOD,GAAIA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EAAE,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAAG,EAAIA,CAAC,CAClF,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBjB,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CAC1D,IAAMQ,EAAIX,GACV,OAAOD,GACCA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EACf,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EACtC,EAAIA,CACZ,CACR,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAiBlB,GAAG,CAAC,CAACO,EAAGC,CAAC,IAA2B,CAC1D,IAAMQ,EAAIX,GACV,OAAOD,GACCA,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,EACf,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EAC7B,IAAIZ,GAAIH,EAAIM,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAGQ,CAAC,CAAC,EACtC,EAAIA,CACZ,CACR,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAOnB,GAAG,CAAC,CAACO,EAAGC,CAAC,IACdF,GAAcC,EAAGC,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ED1IM,IAAMY,GAAcC,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC7C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAASC,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCC,EAASD,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCE,EAAOC,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BC,EAAOD,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BE,EAAOF,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3BG,EAAOH,GAAK,CAAC,EAAE,MAAM,MAAM,EAEjC,OAAAI,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChBF,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGE,CAAE,IAAM,CACnB,IAAMC,EAAIR,GAAKM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,EAC1DE,EAAIC,GAAYhB,EAAE,IAAIc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC1CG,EAAQH,EAAE,IAAIC,CAAC,EAAE,MAAM,OAAO,EAC9B,EAAIG,GAAcD,EAAOhB,CAAC,EAAE,MAAM,GAAG,EAE3CkB,GAAG,EAAE,SAASjB,CAAM,EAAG,IAAM,CACrBE,EAAO,OAAOF,CAAM,EACpBA,EAAO,OAAO,CAAC,EACfM,EAAK,OAAOH,CAAI,EAChBA,EAAK,OAAOS,CAAC,EACbL,EAAK,OAAOF,CAAI,EAChBA,EAAK,OAAOU,CAAK,CACzB,CAAC,EAAE,OAAO,EAAE,SAASb,CAAM,EAAG,IAAM,CAC5BA,EAAO,OAAO,CAAC,EACfI,EAAK,OAAOM,CAAC,EACbL,EAAK,OAAOQ,CAAK,CACzB,CAAC,CACT,CAAC,CACT,CAAC,EAEMX,GAAKJ,EAAQE,CAAM,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYgB,GAAatB,GAAG,CAAC,CAACC,CAAC,IACjBI,GAAM,CAAC,EAAE,IAAIN,GAAYE,CAAC,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYsB,GAAcvB,GAAG,CAAC,CAACC,CAAC,IAAoB,CAC7C,IAAMC,EAAID,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBE,EAAIF,EAAE,MAAM,EAAE,MAAM,GAAG,EACvBG,EAASC,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCC,EAASD,GAAM,CAAC,EAAE,MAAM,QAAQ,EAChCE,EAAOiB,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bf,EAAOe,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bd,EAAOc,GAAK,CAAC,EAAE,MAAM,MAAM,EAC3Bb,EAAOa,GAAK,CAAC,EAAE,MAAM,MAAM,EAEjC,OAAAZ,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAC,CAAE,IAAM,CAChBF,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGE,CAAE,IAAM,CACnBH,GAAKC,GAAI,CAAC,EAAG,CAAC,CAAE,EAAGY,CAAE,IAAM,CACnB,IAAMT,EAAIQ,GAAKV,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAGU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9ER,EAAIS,GAAYxB,EAAE,IAAIc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC1CG,EAAQH,EAAE,IAAIC,CAAC,EAAE,MAAM,OAAO,EAC9BU,EAAIP,GAAcD,EAAOhB,CAAC,EAAE,MAAM,GAAG,EAE3CkB,GAAGM,EAAE,SAASvB,CAAM,EAAG,IAAM,CACrBE,EAAO,OAAOF,CAAM,EACpBA,EAAO,OAAOuB,CAAC,EACfjB,EAAK,OAAOH,CAAI,EAChBA,EAAK,OAAOS,CAAC,EACbL,EAAK,OAAOF,CAAI,EAChBA,EAAK,OAAOU,CAAK,CACzB,CAAC,EAAE,OAAOQ,EAAE,SAASrB,CAAM,EAAG,IAAM,CAC5BA,EAAO,OAAOqB,CAAC,EACfjB,EAAK,OAAOM,CAAC,EACbL,EAAK,OAAOQ,CAAK,CACzB,CAAC,CACT,CAAC,CACT,CAAC,CACT,CAAC,EAEMX,GAAKJ,EAAQE,CAAM,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYsB,GAAa5B,GAAG,CAAC,CAACC,CAAC,IACjBI,GAAM,CAAC,EAAE,IAAIkB,GAAYtB,CAAC,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EElGD,OAAS,MAAA4B,GAAO,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,UAAAC,OAAc,eCAxD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAMD,GAAG,CAAC,CAACE,EAAGC,EAAMC,CAAI,IACtBF,EAAE,IAAIC,CAAI,EAAE,IAAIC,EAAK,IAAID,CAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,MACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EAEYE,GAAWL,GAAG,CAAC,CAACE,EAAGC,EAAMC,EAAME,EAAMC,CAAI,IACvCD,EAAK,IAAIC,EAAK,IAAID,CAAI,EAAE,IAAIJ,EAAE,IAAIC,CAAI,EAAE,IAAIC,EAAK,IAAID,CAAI,CAAC,CAAC,CAAC,CAC1E,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,EDvBM,IAAMK,GAAUC,GAAG,CAAC,CAACC,CAAC,IAAc,CACnC,IAAMC,EAAUC,GAAKF,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIG,GAAKH,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,EACjEI,EAAKC,GAAML,CAAC,EAAE,MAAM,EACpBM,EAAML,EAAQ,SAAS,EAAE,MAAM,EACrC,OAAOM,GAAOP,EAAE,IAAII,CAAE,EAAGI,GAASJ,EAAIE,EAAKG,GAAM,CAAC,EAAGT,EAAE,IAAII,CAAE,EAAGJ,CAAC,EAAGI,EAAG,SAASE,CAAG,CAAC,CAC5F,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EEZD,OAAS,MAAAI,GAAoB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,UAAAC,GAAQ,OAAAC,GAAK,cAAAC,GAAY,QAAAC,GAAM,UAAAC,GAAQ,SAAAC,OAAa,eAEpG,IAAMC,GAAUV,GAAG,CAAC,CAACW,EAAGC,CAAK,IAA6B,CAClD,IAAMC,EAAcJ,GAAM,GAAI,EAAE,MAAM,aAAa,EAC7CK,EAAYL,GAAM,GAAI,EAAE,MAAM,WAAW,EACzCM,EAAIT,GAAWQ,EAAWD,EAAaD,CAAK,EAAE,MAAM,GAAG,EAC7D,OAAOP,GAAII,GAAM,EAAG,EAAGE,EAAGI,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYC,GAAUhB,GAAG,CAAC,CAACW,CAAC,IAAc,CACnC,IAAMM,EAAUb,GAAOG,GAAKN,GAAKU,CAAC,EAAGT,GAAKS,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EACL,MAAM,SAAS,EAClBO,EAAKf,GAAMQ,CAAC,EAAE,MAAM,IAAI,EACxBQ,EAAMF,EAAQ,SAAS,EAAE,MAAM,KAAK,EACpCG,EAAIZ,GAAOU,EAAG,IAAIC,CAAU,EAAGD,EAAG,SAAS,EAAE,IAAID,CAAc,EAAGC,EAAG,SAASC,CAAU,CAAC,EAAE,MAAM,GAAG,EAC1G,OAAOT,GAAQU,EAAUH,CAAc,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAGYI,GAAcrB,GAAG,CAAC,CAACoB,CAAC,IAClBb,GAAKS,GAAQI,EAAE,CAAC,EAAGJ,GAAQI,EAAE,CAAC,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrCD,OAAS,MAAAE,GAAc,QAAAC,GAAM,QAAAC,GAAM,UAAAC,GAAQ,QAAAC,GAAM,SAAAC,GAAO,OAAAC,OAAW,eCAnE,OAAS,MAAAC,GAAc,OAAAC,GAAK,cAAAC,GAAY,SAAAC,OAAa,eAE9C,IAAMC,GAAUJ,GAAG,CAAC,CAACK,EAAGC,CAAK,IAAqB,CAGjD,IAAMC,EAAIL,GAAW,IAAW,IAAaI,CAAK,EAClD,OAAOL,GAAIE,GAAM,EAAG,EAAGE,EAAGE,CAAC,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDXM,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAC,IAAc,CACpC,IAAMC,EAAUC,GAAOC,GAAKC,GAAKJ,CAAC,EAAGK,GAAKL,CAAC,CAAC,CAAC,EACvCM,EAAIC,GAAIP,EAAE,IAAIQ,GAAMR,EAAE,IAAI,EAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAC7C,OAAOS,GAAQH,EAAGL,CAAO,CACjC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EEXD,OAAS,MAAAS,GAAO,UAAAC,OAAc,eAEvB,IAAMC,GAAOF,GAAG,CAAC,CAACG,CAAC,IACXF,GAAOE,EAAE,IAAI,EAAE,EAAGA,EAAGA,EAAE,SAAS,CAAC,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAW,QAAAC,OAAY,eAEzB,IAAMC,GAAoBF,GAAG,CAAC,CAACG,EAAGC,EAAQC,CAAC,IACnCJ,GAAKG,EAAO,IAAIC,CAAC,EAAGF,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYG,GAA0BN,GAAG,CAAC,CAACG,EAAGC,CAAM,IACtCH,GAAKG,EAAO,IAAI,GAAI,EAAGD,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,ECvBD,OAAS,MAAAI,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,EAAGC,CAAC,IACdD,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAIC,CAAC,EAAE,SAAS,CACvD,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACE,CAAC,IACjBA,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECnBD,OAAY,MAAAG,OAAmC,eAGxC,IAAMC,GAAWC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACrBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIG,GAAMD,CAAC,CAAC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAeL,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIK,GAAUH,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EACYI,GAAeP,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIO,GAAUL,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAAeT,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IACzBF,EAAE,IAAIC,EAAE,IAAID,CAAC,EAAE,IAAIS,GAAUP,CAAC,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EChDD,OAAY,MAAAQ,OAAU,eAEf,IAAMC,GAAWD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAClBD,EAAE,IAAIC,CAAC,EAAE,MAAM,EAAE,IAAIA,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAW,OAAAC,GAAK,UAAAC,GAAQ,cAAAC,OAAkB,eAG5C,IAAMC,GAAOC,GAAG,CAAC,CAACC,CAAC,IAAsB,CACxC,IAAMC,EAAIC,GAAOF,CAAC,EAClB,OAAOG,GAAIH,CAAC,EAAE,IAAII,GAAWC,GAAQ,EAAGJ,CAAC,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,MAAM,CACtB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAO,SAAAC,GAAO,UAAAC,OAAc,eAE9B,IAAMC,GAAOH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAAiB,CACtC,IAAMC,EAAiBJ,GAAOE,EAAE,SAAS,EAAGA,EAAGA,EAAE,SAAS,EAAG,CAAC,EACxD,EAAIH,GAAM,EAAG,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIK,CAAc,EAAE,IAAID,CAAC,CAAC,EAAE,MAAM,GAAG,EACvE,OAAOH,GAAO,EAAE,SAAS,EAAG,EAAGE,EAAE,SAAS,EAAG,CAAC,CACtD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAG,GAAO,OAAAC,OAAW,eAEpB,IAAMC,GAAWF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAAyE,CAClG,IAAMC,EAAaJ,GAAIE,EAAGA,CAAC,EACrBG,EAAWF,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAC/B,OAAOC,EAAW,OAAO,EAAE,IAAIC,CAAQ,EAAE,IAAI,CACrD,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECZD,OAAS,MAAAC,GAAqB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEtD,IAAMC,GAAaL,GAAG,CAAC,CAACM,EAAOC,CAAU,IAAwB,CAChE,IAAMC,EAAMP,GAAM,EAAG,EAAE,IAAIA,GAAM,UAAU,CAAC,EAAE,MAAM,KAAK,EACnDQ,EAAOL,GAAKE,CAAK,EAAE,MAAM,MAAM,EAErC,OAAAG,EAAK,OAAOA,EAAK,UAAUL,GAAK,EAAE,CAAC,EAAE,MAAMK,EAAK,WAAWL,GAAK,EAAE,CAAC,CAAC,CAAC,EACrEK,EAAK,OACGA,EACS,OAAOL,GAAK,UAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,SAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,SAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EACAK,EAAK,OACGA,EACS,OAAOL,GAAK,QAAU,CAAC,EACvB,UAAUA,GAAK,CAAC,CAAC,EACjB,MAAMK,EAAK,OAAOL,GAAK,UAAU,CAAC,EAAE,WAAWA,GAAK,CAAC,CAAC,CAAC,CACxE,EAEOF,GAAKD,GAAMK,CAAK,EAAE,IAAIL,GAAMM,CAAU,CAAC,EAAGN,GAAMQ,CAAI,EAAE,IAAID,CAAG,CAAC,CAC7E,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,KAAM,EAC7B,CAAE,KAAM,aAAc,KAAM,KAAM,CAC1C,CACR,CAAC,EAEYE,GAAsBV,GAAG,CAAC,CAACW,CAAC,IAAoB,CACrD,IAAMC,EAAMX,GAAM,CAAC,EAAE,IAAIY,CAAE,EAAE,IAAIF,EAAE,CAAC,EAAE,MAAM,KAAK,EAC3CG,EAAYb,GAAM,CAAC,EAAE,IAAIU,EAAE,CAAC,EAAE,MAAM,WAAW,EAC/CI,EAAWD,EAAU,KAAK,EAAE,MAAM,UAAU,EAC5CE,EAAWf,GAAM,CAAC,EAAE,IAAIa,CAAS,EAAE,KAAK,EAAE,MAAM,UAAU,EAChE,OAAOX,GAAKS,EAAI,IAAI,EAAE,IAAII,CAAQ,EAAGJ,EAAI,IAAI,EAAE,IAAII,CAAQ,EAAGD,CAAQ,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECrDD,OAAS,MAAAE,GAAW,OAAAC,GAAK,SAAAC,OAAa,eAE/B,IAAMC,GAAWH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAClBJ,GAAIG,EAAE,IAAIC,CAAC,EAAG,CAAC,EAAE,IAAIH,GAAM,CAAC,EAAE,IAAIG,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAI,OAAAC,OAAW,eAGjB,IAAMC,GAASF,GAAG,CAAC,CAACG,EAAGC,EAAKC,CAAG,IACvBJ,GAAIE,EAAE,iBAAiBC,CAAG,EAAE,IAAID,EAAE,cAAcE,CAAG,CAAC,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACG,EAAGC,EAAKC,CAAG,IAC5BF,EAAE,iBAAiBC,CAAG,EAAE,IAAID,EAAE,cAAcE,CAAG,CAAC,CAC9D,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYE,GAAaP,GAAG,CAAC,CAACQ,EAAGJ,EAAKC,CAAG,IAC3BG,EAAE,EACA,iBAAiBJ,EAAI,CAAC,EACtB,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,EAC5B,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYI,GAAaT,GAAG,CAAC,CAACQ,EAAGJ,EAAKC,CAAG,IAC3BG,EAAE,EACA,iBAAiBJ,EAAI,CAAC,EACtB,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,EAC5B,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,EAC7D,IAAIG,EAAE,EAAE,iBAAiBJ,EAAI,CAAC,EAAE,IAAII,EAAE,EAAE,cAAcH,EAAI,CAAC,CAAC,CAAC,CAC7E,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAEYK,GAAaV,GAAG,CAAC,CAACQ,EAAGG,CAAI,IACvBJ,GAAWC,EAAGG,EAAK,GAAIA,EAAK,EAAE,CAC5C,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,CACrC,CACR,CAAC,ECnED,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IACfF,GAAM,EAAG,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC9E,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAaD,GAAG,CAAC,CAACE,CAAC,IACjBA,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAClD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAM,CAAC,EAAE,IAAIE,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,MAAM,EACZE,EAAIF,EAAE,IAAI,CAAC,EAAE,MAAM,EACnBG,EAAKF,EAAE,IAAIC,CAAC,EAClB,OAAOD,EAAE,IAAIC,CAAC,EAAE,IAAIC,EAAG,IAAI,CAAC,CAAC,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECXD,OAAS,MAAAC,GAA6B,OAAAC,OAAW,eAE1C,IAAMC,GAAQF,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAQJ,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIE,EAAE,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAQL,GAAG,CAAC,CAACG,CAAC,IACZF,GAAIA,GAAIE,EAAE,EAAGA,EAAE,CAAC,EAAGF,GAAIE,EAAE,EAAGA,EAAE,CAAC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,OACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAOD,GC1BpB,OAAS,MAAAE,GAAO,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,eAGtC,IAAMC,GAAOL,GAAG,CAAC,CAACM,EAAGC,EAAGC,CAAC,IACjBP,GAAIK,EAAGC,EAAGC,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYC,GAAQT,GAAG,CAAC,CAACM,EAAGC,EAAGC,EAAGE,CAAG,IACvBT,GAAIA,GAAIK,EAAGC,EAAGG,EAAI,IAAI,CAAC,CAAC,EAAGT,GAAIM,EAAGC,EAAGN,GAAIQ,EAAK,EAAG,EAAE,IAAI,EAAG,EAAE,IAAI,CAAC,CAAC,EAAGP,GAAK,GAAKO,CAAG,CAAC,CACjG,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EAGYC,GAAQX,GAAG,CAAC,CAACM,EAAGC,EAAGC,EAAGI,EAAGF,CAAG,IAC1BT,GACCA,GAAIK,EAAGC,EAAGG,EAAI,IAAI,CAAC,CAAC,EACpBT,GAAIM,EAAGN,GAAIO,EAAGI,EAAGV,GAAIQ,EAAK,GAAI,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,CAAC,EAAGN,GAAMM,EAAK,IAAM,GAAI,EAAE,IAAI,GAAI,EAAE,IAAI,CAAC,CAAC,EAC1FP,GAAK,IAAMO,CAAG,CACtB,CACP,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,MAAO,CACpC,CACR,CAAC,EC9CD,OAAS,MAAAG,GAAa,QAAAC,OAAY,eAI3B,IAAMC,GAAOF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAAM,CAC3B,IAAMC,EAAQD,EAAE,IAAI,CAAC,EAAE,MAAM,EACvBE,EAAWH,EAAE,IAAIE,CAAK,EAAE,MAAM,EAC9BE,EAAID,EAAS,IAAIF,CAAC,EAAE,MAAM,EAAE,MAAM,EAClCI,EAAUF,EAAS,IAAIF,CAAC,EAAE,IAAIC,CAAK,EACzC,OAAOJ,GAAKM,EAAE,EAAGA,EAAE,EAAGC,EAAQ,EAAGA,EAAQ,CAAC,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYC,GAAWT,GAAG,CAAC,CAACG,EAAGC,CAAC,IACVF,GAAKC,EAAGC,CAAC,EACV,EACrB,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYM,GAAWV,GAAG,CAAC,CAACG,EAAGC,CAAC,IACVF,GAAKC,EAAGC,CAAC,EACV,EACrB,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EC3CD,OAAS,MAAAO,GAAiB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE1D,IAAMC,GAAcD,GAAM,IAAQ,GAAK,EACjCE,GAAcJ,GAAK,IAAQ,IAAQ,IAAO,IAAQ,IAAO,GAAK,EAC9DK,GAAcH,GAAM,EAAI,GAAG,EAEpBI,GAAOR,GAAG,CAAC,CAACS,CAAC,IAAqB,CACvC,IAAMC,EAAIP,GAAKF,GAAMQ,EAAE,IAAIH,EAAW,CAAC,EAAGG,CAAC,EAAE,MAAM,EACnD,OAAAC,EAAE,IAAI,OAAOA,EAAE,IAAI,IAAIA,EAAE,IAAI,IAAIH,EAAW,CAAC,CAAC,EACvCG,EAAE,IAAIL,EAAW,CAChC,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECdD,OAAS,MAAAM,OAAiB,eAEnB,IAAMC,GAAWD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAClBD,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,EAAE,IAAIC,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,OAAa,eAGf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,IAAIA,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IACXA,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC,CAC5B,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IAAc,CAChC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC9B,OAAOC,EAAG,IAAIA,CAAE,EAAE,IAAID,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAE,OAAa,eAEf,IAAMC,GAAOD,GAAG,CAAC,CAACE,CAAC,IAAc,CAChC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAG9B,OAFWC,EAAG,IAAIA,CAAE,EAAE,MAAM,IAAI,EAClB,IAAIA,CAAE,EAAE,MAAM,IAAI,EACtB,IAAID,CAAC,CACvB,CAAC,EAAE,UAAU,CACL,KAAM,OACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECXD,OAAS,MAAAE,GAAc,SAAAC,OAAa,eAE7B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBD,EAAE,IAAKF,GAAM,CAAC,EAAU,IAAIG,CAAC,EAAE,IAAID,CAAC,EAAE,IAAIC,CAAC,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,kBAE3C,IAAMC,GAAYJ,GAAG,CAAC,CAACK,CAAC,IAAoB,CAC3C,IAAMC,EAAMD,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BE,EAAMF,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BG,EAAMH,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BI,EAAMJ,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BK,EAAML,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BM,EAAMN,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BO,EAAMP,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BQ,EAAMR,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAC9BS,EAAMT,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,KAAK,EAEpC,OAAOJ,GACCC,GAAKC,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAII,EAAI,IAAIC,CAAG,CAAC,CAAC,EAAGL,GAAM,CAAC,EAAE,IAAIO,EAAI,IAAIE,CAAG,CAAC,EAAGT,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIE,CAAG,CAAC,CAAC,EACrGT,GAAKC,GAAM,CAAC,EAAE,IAAIO,EAAI,IAAIE,CAAG,CAAC,EAAGT,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAIE,CAAG,CAAC,CAAC,EAAGL,GAAM,CAAC,EAAE,IAAIU,EAAI,IAAIC,CAAG,CAAC,CAAC,EACrGZ,GAAKC,GAAM,CAAC,EAAE,IAAIM,EAAI,IAAIE,CAAG,CAAC,EAAGR,GAAM,CAAC,EAAE,IAAIU,EAAI,IAAIC,CAAG,CAAC,EAAGX,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIG,EAAI,IAAIC,CAAG,CAAC,CAAC,CAAC,CAC7G,CACR,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EC3BD,OAAS,MAAAQ,OAAsB,kBCA/B,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,eAEpC,IAAMC,GAASH,GAAG,CAAC,CAACI,CAAC,IACbH,GAAKC,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAKE,EAAE,CAAC,EAAG,CAAC,EAAGF,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CAChF,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EDJM,IAAMG,GAAYC,GAAG,CAAC,CAACC,CAAC,IAChBC,GAAOC,GAAUF,CAAC,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EEfD,OAAS,MAAAG,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,EAAE,GAAG,EAAGD,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAC,IACfF,GAAKE,EAAE,IAAI,OAAO,EAAGA,EAAE,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECbD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAE/B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,CAAC,EAAGD,EAAE,EAAE,IAAIC,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAeF,GAAG,CAAC,CAAC,IAClBC,GAAK,EAAG,EAAG,EAAG,CAAC,CAC7B,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CACjB,CAAC,ECRD,OAAS,MAAAE,OAAgB,kBCAzB,OAAS,MAAAC,OAAuB,kBAEzB,IAAMC,GAAeD,GAAG,CAAC,CAACE,CAAC,IACnBA,EAAE,IAAI,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EDRM,IAAMC,GAAcC,GAAG,CAAC,CAACC,CAAC,IAClBC,GAAQC,GAASF,CAAC,EAAGG,GAAaH,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,EEhBD,OAAS,MAAAI,OAAuB,kBAGzB,IAAMC,GAAaC,GAAG,CAAC,CAACC,CAAC,IACjBC,GAAaD,CAAC,EAAE,KAAK,CACnC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECdD,OAAS,MAAAE,GAAiB,MAAAC,GAAI,SAAAC,OAAa,kBAEpC,IAAMC,GAAWH,GAAG,CAAC,CAACI,EAAIC,EAAIC,CAAC,IAAiC,CAC/D,IAAMC,EAAeH,EAAG,EAAE,IAAIC,EAAG,CAAC,EAAE,IAAID,EAAG,IAAI,IAAIC,EAAG,GAAG,CAAC,EAAE,MAAM,cAAc,EAC1EG,EAAaH,EAAG,OAAO,EAAE,OAAOA,EAAIE,EAAa,SAAS,CAAC,CAAC,EAAE,MAAM,YAAY,EAChFE,EAAkBF,EAAa,IAAI,EAAE,MAAM,iBAAiB,EAElEN,GAAGQ,EAAgB,iBAAiB,CAAC,EAAG,IACzBL,CACd,EAED,IAAMM,EAAYD,EAAgB,KAAK,EAAE,MAAM,WAAW,EACpDE,EAAeT,GAAM,CAAC,EAAE,IAAIO,EAAgB,IAAIA,CAAe,CAAC,EAAE,KAAK,EAAE,MAAM,cAAc,EAEnGR,GAAGU,EAAa,IAAI,EAAE,SAAS,IAAK,EAAG,IACxBP,EAAG,IAAI,CAAC,EAAE,IAAII,EAAW,IAAI,CAAC,CAAC,EAAE,UAAU,CACzD,EAED,IAAMI,EAASV,GAAM,CAAC,EAAE,IAAII,CAAC,EAAE,IAAII,CAAS,EAAE,IAAI,EAAE,IAAIC,CAAY,EAAE,MAAM,QAAQ,EAC9EE,EAASP,EAAE,IAAII,CAAS,EAAE,IAAI,EAAE,IAAIC,CAAY,EAAE,MAAM,QAAQ,EAEtE,OAAOP,EAAG,IAAIQ,CAAM,EAAE,IAAIJ,EAAW,IAAIK,CAAM,CAAC,EAAE,UAAU,CACpE,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,kBAE/B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAIC,CAAE,IACnBH,GACCG,EAAG,IAAI,IAAID,EAAG,CAAC,EAAE,IAAIA,EAAG,IAAI,IAAIC,EAAG,CAAC,CAAC,EAAE,IAAID,EAAG,IAAI,MAAMC,EAAG,GAAG,CAAC,EAC/DD,EAAG,EAAE,IAAIC,EAAG,CAAC,EAAE,IAAID,EAAG,IAAI,IAAIC,EAAG,GAAG,CAAC,CAC7C,CACP,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,KACN,KAAM,MACd,EACA,CACQ,KAAM,KACN,KAAM,MACd,CACR,CACR,CAAC,EAEYC,GAAgBL,GAAG,CAAC,CAACM,EAAGC,CAAC,IACvBN,GAAKK,EAAE,IAAI,IAAIC,CAAC,EAAGD,EAAE,EAAE,IAAIC,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,OACd,CACR,CACR,CAAC,ECrCD,OAAS,MAAAC,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAE,IAAI,OAAO,EAAGA,EAAE,EAAE,OAAO,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECbD,OAAS,MAAAC,OAAgB,kBAIlB,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAC,IACfC,GAAQD,EAAGE,GAAWF,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECfD,OAAS,MAAAG,GAAU,QAAAC,OAAY,kBAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACjBH,GAAKE,EAAE,IAAI,IAAIC,EAAE,GAAG,EAAGD,EAAE,EAAE,IAAIC,EAAE,CAAC,CAAC,CACjD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CACQ,KAAM,IACN,KAAM,MACd,EACA,CACQ,KAAM,IACN,KAAM,MACd,CACR,CACR,CAAC,ECjBD,OAAS,MAAAC,GAAO,SAAAC,OAAa,eAEtB,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IAAc,CACnC,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EAC9B,OAAOC,EAAG,IAAKH,GAAM,CAAC,EAAU,IAAIG,CAAE,CAAC,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAC,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,eAElD,IAAMC,GAAWJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA2B,CACpD,IAAMC,EAAOF,EAAE,UAAU,EAAE,MAAM,MAAM,EACjCG,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAIH,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBI,EAAKT,GAAM,CAAC,EAAE,IAAIQ,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAOR,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,CACpD,EACMI,EAAOT,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,CACpD,EACMK,EAAOV,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,CACxC,EACA,OAAOP,GAAKS,EAAMC,EAAMC,CAAI,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC9BD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAK,EAAG,EAAG,CAAC,EAAGA,GAAK,EAAGG,EAAGC,CAAC,EAAGJ,GAAK,EAAGI,EAAE,OAAO,EAAGD,CAAC,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAE,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAKG,EAAG,EAAGC,EAAE,OAAO,CAAC,EAAGJ,GAAK,EAAG,EAAG,CAAC,EAAGA,GAAKI,EAAG,EAAGD,CAAC,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAE,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAKG,EAAGC,EAAG,CAAC,EAAGJ,GAAKI,EAAE,OAAO,EAAGD,EAAG,CAAC,EAAGH,GAAK,EAAG,EAAG,CAAC,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,GAAuB,SAAAC,GAAO,QAAAC,GAAM,QAAAC,OAAY,eAElD,IAAMC,GAAWJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA2B,CACpD,IAAMC,EAAOF,EAAE,UAAU,EAAE,MAAM,MAAM,EACjCG,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAIH,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBI,EAAKT,GAAM,CAAC,EAAE,IAAIQ,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAOR,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5C,CACR,EACMI,EAAOT,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChCC,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5C,CACR,EACMK,EAAOV,GACLO,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,EAAE,IAAIC,CAAC,CAAC,EAC5CE,EAAG,IAAIH,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIE,CAAC,EAChC,CACR,EACMK,EAAOX,GAAK,EAAG,EAAG,EAAG,CAAC,EAC5B,OAAOD,GAAKS,EAAMC,EAAMC,EAAMC,CAAI,CAC1C,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAK,EAAG,EAAG,EAAG,CAAC,EAAGA,GAAK,EAAGG,EAAGC,EAAG,CAAC,EAAGJ,GAAK,EAAGI,EAAE,OAAO,EAAGD,EAAG,CAAC,EAAGH,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CACnG,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAKG,EAAG,EAAGC,EAAE,OAAO,EAAG,CAAC,EAAGJ,GAAK,EAAG,EAAG,EAAG,CAAC,EAAGA,GAAKI,EAAG,EAAGD,EAAG,CAAC,EAAGH,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CACnG,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAYH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAC5C,IAAMC,EAAID,EAAE,IAAI,EACVE,EAAIF,EAAE,IAAI,EAChB,OAAOH,GAAKC,GAAKG,EAAGC,EAAG,EAAG,CAAC,EAAGJ,GAAKI,EAAE,OAAO,EAAGD,EAAG,EAAG,CAAC,EAAGH,GAAK,EAAG,EAAG,EAAG,CAAC,EAAGA,GAAK,EAAG,EAAG,EAAG,CAAC,CAAC,CACnG,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,ECVD,OAAS,MAAAK,GAAO,SAAAC,OAAa,eAE7B,IAAMC,GAAkBD,GAAM,KAAO,EAExBE,GAAkBH,GAAG,CAAC,CAACI,CAAC,IAC7BA,EAAE,IAAIF,EAAe,CAC5B,EAAE,UAAU,CACZ,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CACrC,CAAC,ECVD,OAAS,MAAAG,GAAiB,QAAAC,OAAkB,eAErC,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAG,EAAG,EAAGA,CAAC,CAC7B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACG,CAAC,IACjBF,GAAKE,EAAE,EAAG,EAAG,EAAGA,EAAE,CAAC,CACjC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAYL,GAAG,CAAC,CAACM,EAAGC,CAAC,IACnBN,GAAKK,EAAG,EAAG,EAAGC,CAAC,CAC7B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC3BD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,eAErC,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAGA,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACG,CAAC,IACjBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAGA,EAAE,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EChBD,OAAS,MAAAE,GAA6B,QAAAC,OAAY,eAE3C,IAAMC,GAAUF,GAAG,CAAC,CAACG,CAAC,IACdF,GAAKE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACK,EAAGC,EAAGC,CAAC,IACvBN,GAAKI,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAcR,GAAG,CAAC,CAACK,EAAGC,EAAGC,EAAGE,CAAC,IAC3BR,GAAKI,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAGE,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAcV,GAAG,CAAC,CAACG,CAAC,IAClBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACvE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAcX,GAAG,CAAC,CAACG,CAAC,IAClBF,GAAKE,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAE,CAAC,CACzE,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECjDD,OAAS,MAAAS,OAAa,eAGf,IAAMC,GAAeC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAAoB,CAE3D,IAAMC,EADaD,EAAE,IAAIF,CAAC,EAAE,IAAIC,EAAE,IAAID,CAAC,CAAC,EAAE,MAAM,YAAY,EAC/B,SAAS,EAAE,MAAM,WAAW,EACzD,OAAOI,GAAQD,CAAS,CACzB,CAAC,EAAE,UAAU,CACZ,KAAM,eACN,KAAM,OACN,OAAQ,CACP,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAC3B,CACD,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,OAAY,eAE9B,IAAMC,GAASF,GAAG,CAAC,CAACG,CAAC,IACbF,GAAKE,EAAE,CAAC,EAAE,IAAKA,EAAE,CAAC,EAAE,IAAKA,EAAE,CAAC,EAAE,GAAG,CAC/C,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECRD,OAAS,MAAAC,GAA0B,QAAAC,OAAY,eAExC,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAGC,EAAGC,CAAC,IAAyB,CACxD,GAAID,IAAM,QAAaC,IAAM,OAAW,CAChC,IAAMC,EAAIH,EACV,OAAOF,GACC,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACTK,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAG,CACvB,CACR,KAIQ,QAAOL,GACC,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EANNE,EACAC,EACAC,EAKS,CACpB,CAEhB,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EC9BD,OAAS,MAAAE,GAAuB,OAAAC,GAAK,QAAAC,GAAM,QAAAC,GAAM,SAAAC,OAAa,eAE9D,IAAMC,GAAkBD,GAAM,IAAQ,GAAK,EACrCE,GAAcJ,GAAK,IAAQ,IAAQ,IAAO,IAAQ,IAAO,GAAK,EAC9DK,GAAgBF,GAAgB,IAAIF,GAAKG,GAAa,CAAG,CAAC,EAEnDE,GAAUR,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC1C,IAAMC,EAAIR,GAAK,EAAG,GAAO,GAAS,EAClC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,GAAK,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAWX,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,IAAS,IAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,IAAM,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAWZ,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,KAAS,KAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,KAAO,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAWb,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC3C,IAAMC,EAAIR,GAAK,GAAI,KAAS,MAAY,EACxC,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,MAAQ,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAYd,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC5C,IAAMC,EAAIR,GAAK,IAAK,MAAW,OAAe,EAC9C,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,OAAS,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYK,GAAYf,GAAG,CAAC,CAACS,CAAC,IAAqB,CAC5C,IAAMC,EAAIR,GAAK,IAAK,MAAW,QAAe,EAC9C,OAAOD,GAAIQ,EAAGC,CAAC,EAAE,IAAI,QAAU,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYM,GAAahB,GAAG,CAAC,CAACS,EAAGQ,CAAI,IAA4B,CAC1D,IAAMC,EAAQD,EAAK,IAAIA,CAAI,EAAE,IAAIA,CAAI,EAC/BP,EAAIR,GAAKe,EAAMA,EAAK,IAAIA,CAAI,EAAGC,CAAK,EAC1C,OAAOjB,GAAIQ,EAAGC,CAAC,EAAE,IAAIQ,CAAK,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYC,GAASnB,GAAG,CAAC,CAACS,CAAC,IACbR,GAAIQ,EAAGF,EAAa,CAClC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYa,GAAgBpB,GAAG,CAAC,CAACS,CAAC,IACpBM,GAAUN,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECvFD,OAAS,MAAAY,GAAiB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,MAAAC,OAAU,eAEtD,IAAMC,GAAWN,GAChB,CAAC,CAACO,EAAGC,EAAOC,EAAKC,EAAYC,EAAWC,CAAS,IAAsD,CAC/F,IAAMC,EAAIL,EAAM,IAAIC,CAAG,EAAE,MAAM,GAAG,EAC5BK,EAAID,EAAE,OAAO,EAAE,MAAM,GAAG,EAC9BA,EAAE,OAAOA,EAAE,IAAIC,CAAC,CAAC,EACjBA,EAAE,OAAOA,EAAE,IAAIF,CAAS,CAAC,EACzBL,EAAE,OAAOA,EAAE,IAAIE,CAAG,CAAC,EAEnBJ,GAAGQ,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,IAAM,EAAG,IAAM,CAC9BN,EAAE,OAAON,GAAKM,EAAE,EAAGA,EAAE,EAAE,OAAO,EAAGA,EAAE,CAAC,CAAC,CAC7C,CAAC,EAAE,KAAK,IAAM,CACN,IAAMQ,EAAIX,GAAM,CAAC,EAAE,IAAIA,GAAM,CAAC,EAAE,IAAIS,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC7CG,EAAUf,GAAKY,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,CAAC,EAAE,IAAIF,EAAE,CAAC,EAAGA,EAAE,EAAGA,EAAE,EAAE,IAAIA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIE,CAAC,CAAC,EAAE,MAC9E,SACR,EACME,EAAUhB,GAAKY,EAAE,EAAE,OAAO,EAAGA,EAAE,EAAGA,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,SAAS,EAC/DK,EAAUjB,GAAKY,EAAE,EAAE,OAAO,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,CAAC,EAAGF,EAAE,EAAGA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIE,CAAC,EAAE,IAAIF,EAAE,CAAC,CAAC,EAAE,MAC9E,SACR,EACAN,EAAE,OACMJ,GACQa,EAAQ,EACRA,EAAQ,EACRA,EAAQ,EACRC,EAAQ,EACRA,EAAQ,EACRA,EAAQ,EACRC,EAAQ,EACRA,EAAQ,EACRA,EAAQ,CAChB,EAAE,IAAIX,CAAC,CACf,CACR,CAAC,EAED,IAAMY,EAAIjB,GAAKA,GAAKK,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,MAAM,GAAG,EACtDY,EAAE,OAAOjB,GAAKiB,EAAE,EAAE,IAAI,EAAGA,EAAE,CAAC,CAAC,EAC7B,IAAMC,EAAIlB,GAAKS,EAAWC,CAAS,EAAE,MAAM,GAAG,EACxCS,EAAIF,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,IAAIA,CAAC,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EAChDE,EAAKH,EAAE,IAAIC,EAAE,IAAIC,CAAC,CAAC,EAAE,MAAM,IAAI,EAC/BE,EAAKJ,EAAE,IAAIjB,GAAKS,EAAWC,CAAS,CAAC,EAAE,MAAM,IAAI,EACvDW,EAAG,OAAOrB,GAAKqB,EAAG,EAAE,IAAIA,EAAG,EAAE,MAAMb,EAAW,IAAIC,CAAS,EAAG,CAAC,CAAC,EAAGY,EAAG,CAAC,CAAC,EACxE,IAAMC,EAAKL,EAAE,IAAIjB,GAAKQ,EAAYE,CAAS,CAAC,EAAE,MAAM,IAAI,EACxDY,EAAG,OAAOtB,GAAKsB,EAAG,EAAGA,EAAG,EAAE,IAAIA,EAAG,EAAE,MAAM,EAAGV,EAAE,IAAIF,CAAS,CAAC,CAAC,CAAC,CAAC,EAC/D,IAAMa,EAAKvB,GAAKiB,EAAE,EAAE,IAAIL,CAAC,EAAGK,EAAE,EAAE,IAAIT,CAAU,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EAC5DgB,EAAIJ,EAAG,EAAE,IAAIA,EAAG,EAAE,OAAO,CAAC,EAAE,IAAIG,EAAG,CAAC,EAAE,IAAIF,EAAG,EAAE,IAAIC,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACzE,OAAOF,EAAG,IAAIA,CAAE,EAAE,IAAIC,EAAG,IAAIA,CAAE,CAAC,EAAE,IAAIC,EAAG,IAAIA,CAAE,CAAC,EAAE,IAAIC,EAAG,IAAIA,CAAE,CAAC,EAAE,KAAK,EAAE,IAAIC,EAAE,KAAK,CAAC,CAC7F,CACR,EAAE,UAAU,CACJ,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,aAAc,KAAM,OAAQ,EACpC,CAAE,KAAM,YAAa,KAAM,OAAQ,EACnC,CAAE,KAAM,YAAa,KAAM,OAAQ,CAC3C,CACR,CAAC,EC5DD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAGC,EAAGC,CAAC,IAAkC,CACjE,IAAMC,EAAQH,EAAE,IAAI,EAAE,IAAIC,CAAC,EAAE,MAAM,OAAO,EACpCG,EAAID,EAAM,IAAID,CAAC,EAAE,IAAI,EAAE,IAAIA,CAAC,EAAE,MAAM,GAAG,EAEvCG,EAAQP,GAAKK,EAAM,EAAGC,EAAE,EAAGA,EAAE,CAAC,EAC3B,IAAIN,GAAK,CAAC,CAAC,EACX,OAAO,EACP,IAAIK,EAAM,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAEvCE,EAAQR,GAAKM,EAAE,EAAGD,EAAM,EAAGC,EAAE,CAAC,EAC3B,IAAIN,GAAK,CAAC,CAAC,EACX,OAAO,EACP,IAAIM,EAAE,EAAE,IAAID,EAAM,EAAE,IAAIC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAEvCG,EAAQT,GAAKM,EAAE,EAAGA,EAAE,EAAGD,EAAM,CAAC,EAC3B,IAAIL,GAAK,CAAC,CAAC,EACX,OAAO,EACP,IAAIM,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAID,EAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAE7C,OAAOE,EAAM,IAAIC,CAAK,EAAE,IAAIC,CAAK,CACzC,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC9BD,OAAS,MAAAC,OAAuB,eAEzB,IAAMC,GAAaD,GAAG,CAAC,CAACE,EAAGC,EAAGC,EAAGC,CAAC,IAAwC,CACzE,IAAMC,EAAKJ,EAAE,IAAIC,CAAC,EAAE,MAAM,IAAI,EACxBI,EAAKH,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBK,EAAIF,EAAG,IAAIC,CAAE,EAAE,IAAIA,EAAG,IAAIA,CAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EAC1D,OAAOD,EAAG,IAAIC,EAAG,IAAIC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAIH,CAAC,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EChBD,OAAS,MAAAI,GAAuB,QAAAC,GAAM,MAAAC,OAAU,eAEzC,IAAMC,GAAUH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAA2B,CACnD,IAAMC,EAAIL,GAAKA,GAAKG,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,MAAM,GAAG,EAChDG,EAAKD,EAAE,EAAE,OAAO,EAAE,IAAID,EAAE,CAAC,EAAE,MAAM,IAAI,EACrCG,EAAKF,EAAE,IAAIL,GAAKI,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,IAAIC,EAAE,CAAC,EAAE,MAAM,IAAI,EACpD,OAAOL,GAAKM,EAAIC,CAAE,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAID,EAAG,IAAIC,CAAE,EAAE,IAAI,CAAC,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAoBT,GAAG,CAAC,CAACI,EAAGC,EAAGK,CAAC,IAAkC,CACvE,IAAMJ,EAAII,EAAE,IAAIT,GAAKI,EAAE,EAAGA,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,GAAG,EACrDM,EAAIV,GAAKA,GAAKG,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,MAAM,GAAG,EAChDQ,EAAID,EAAE,IAAIL,EAAE,IAAIK,EAAE,IAAIL,CAAC,EAAE,IAAIA,EAAE,IAAIA,CAAC,CAAC,EAAE,MAAM,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9DO,EAAIF,EAAE,IAAIL,EAAE,IAAIL,GAAKU,EAAE,EAAE,IAAIL,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC7DQ,EAAIR,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,EACxBS,EAAIH,EAAE,IAAIA,CAAC,EAAE,IAAIC,EAAE,IAAIA,CAAC,CAAC,EAAE,MAAM,GAAG,EACpCG,EAAIF,EACD,IAAIH,EAAE,EAAE,IAAIL,EAAE,CAAC,EAAE,IAAIK,EAAE,EAAE,IAAIL,EAAE,CAAC,CAAC,CAAC,EAClC,IAAIQ,EAAE,IAAIH,EAAE,EAAE,IAAIL,EAAE,CAAC,CAAC,CAAC,EACvB,MAAM,GAAG,EAClB,OAAOS,EAAE,KAAK,EAAE,IAAIC,EAAE,KAAK,CAAC,CACpC,CAAC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAejB,GAAG,CAAC,CAACI,EAAGc,EAAIC,EAAIT,CAAC,IAA0C,CAC/E,IAAMJ,EAAIL,GAAKA,GAAKG,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,MAAM,GAAG,EAChDS,EAAIK,EAAG,IAAIC,CAAE,EAAE,IAAIT,CAAC,EAAE,MAAM,GAAG,EAC/BE,EAAIC,EAAE,IAAIA,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,EACxCC,EAAIR,EAAE,IAAIL,GAAKY,EAAE,OAAO,EAAGD,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9C,OAAAV,GAAGY,EAAE,SAAS,CAAC,EAAG,IACHR,EAAE,OAAO,EAAE,IAAIY,CAAE,CAC/B,EACDhB,GAAGY,EAAE,YAAYF,EAAE,IAAIF,CAAC,CAAC,EAAG,IACbJ,EAAE,IAAIL,GAAK,EAAGS,CAAC,CAAC,EAAE,OAAO,EAAE,IAAIS,CAAE,CAC/C,EACMb,EAAE,IAAIL,GAAKW,EAAGC,CAAC,CAAC,EAAE,IAAIK,CAAE,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC3DD,OAAS,MAAAE,GAAiB,QAAAC,OAAY,eCAtC,OAAS,MAAAC,OAAgB,eAElB,IAAMC,GAASD,GAAG,CAAC,CAACE,CAAC,IAAc,CAClC,IAAMC,EAAID,EAAE,IAAI,EAAE,MAAM,EACxB,OAAOC,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAaJ,GAAG,CAAC,CAACE,EAAGG,CAAC,IAAoB,CAC/C,IAAMF,EAAID,EAAE,IAAI,EAAE,IAAIG,CAAC,EAAE,MAAM,EAC/B,OAAOF,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EDlBM,IAAMG,GAAUC,GAAG,CAAC,CAACC,EAAGC,CAAC,IACjBC,GAAWF,EAAGG,GAAKF,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EEZD,OAAS,MAAAG,GAAuB,QAAAC,GAAM,UAAAC,GAAQ,SAAAC,OAAa,eAEpD,IAAMC,GAAcJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA2B,CACvD,IAAMC,EAAIN,GAAKA,GAAKI,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOC,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACxD,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAoBR,GAAG,CAAC,CAACK,EAAGC,CAAC,IAC3BF,GAAYC,EAAGJ,GAAKK,CAAC,CAAC,CACpC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYG,GAA0BT,GAAG,CAAC,CAACK,EAAGC,EAAGI,CAAC,IAAmC,CAC9E,IAAMH,EAAIN,GAAKA,GAAKI,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIJ,GAAKK,EAAGI,CAAC,CAAC,EAAE,MAAM,GAAG,EAC5E,OAAOH,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACxD,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYI,GAAkBX,GAAG,CAAC,CAACK,EAAGO,EAAGC,EAAGH,CAAC,IAAwC,CAC9E,IAAMI,EAAKT,EAAE,IAAIO,CAAC,EAAE,MAAM,IAAI,EACxBG,EAAKF,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,EACxBI,EAAOD,EAAG,IAAIA,CAAE,EAAE,MAAM,MAAM,EAC9BE,EAAOH,EAAG,IAAIC,CAAE,EAAE,MAAM,MAAM,EAC9BG,EAAIJ,EAAG,IAAIE,CAAI,EAAE,IAAID,EAAG,IAAIE,CAAI,CAAC,EAAE,OAAO,EAAE,IAAIP,EAAE,IAAIM,CAAI,CAAC,EAAE,MAAM,GAAG,EACtEG,EAAIF,EAAK,IAAID,EAAK,IAAI,EAAG,CAAC,EAAE,IAAI,EAAE,IAAIA,EAAK,IAAI,EAAG,CAAC,EAAE,MAAM,GAAG,EAC9DI,EAAKF,EAAE,IAAIA,CAAC,EAAE,MAAM,IAAI,EACxBG,EAAKF,EAAE,IAAIA,CAAC,EAAE,IAAIH,CAAI,EAAE,MAAM,IAAI,EAClCT,EAAIL,GACFA,GAAOC,GAAM,CAAC,EAAGiB,EAAIF,EAAE,YAAY,CAAC,CAAC,EAAE,IAAIhB,GAAOC,GAAM,CAAC,EAAGkB,EAAIF,EAAE,YAAY,CAAC,CAAC,CAAC,EACjFC,EAAG,IAAIC,CAAE,EAAE,OAAO,EAClBH,EAAE,IAAIC,CAAC,EAAE,SAAS,CAAC,CAC3B,EACS,QAAQ,EACR,MAAM,GAAG,EAClB,OAAOZ,EAAE,KAAK,EAAE,IAAIA,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAIS,CAAI,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EChED,OAAS,MAAAM,GAAiB,QAAAC,OAAY,eAEtC,IAAMC,GAAM,kBAECC,GAAkBH,GAAG,CAAC,CAACI,CAAC,IAAqB,CAClD,IAAMC,EAAIJ,GAAKC,GAAK,EAAG,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,EACzCI,EAAOF,EAAE,IAAI,EAAE,MAAM,MAAM,EAC3B,EAAIE,EAAK,IAAIL,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CE,EAAID,EAAK,IAAIL,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC3CG,EAAIF,EAAK,IAAIL,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EACjD,OAAO,EAAE,IAAIE,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAIH,EAAE,CAAC,CACtC,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAwBT,GAAG,CAAC,CAACI,EAAGM,CAAM,IAA4B,CACvE,IAAML,EAAIJ,GAAKC,GAAK,EAAG,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,EACzCS,EAAUP,EAAE,IAAI,EAAE,IAAIM,CAAM,EAAE,MAAM,SAAS,EAC7CE,EAAID,EAAQ,IAAIV,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9CE,EAAII,EAAQ,IAAIV,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC9CG,EAAIG,EAAQ,IAAIV,GAAKI,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EACpD,OAAOO,EAAE,IAAIL,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAIH,EAAE,CAAC,EAAE,IAAIK,CAAM,CAClD,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,EC/BD,OAAS,MAAAG,OAAuB,eAEzB,IAAMC,GAAeD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAA2B,CACxD,IAAMC,EAAKF,EAAE,IAAIC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EACjCE,EAAKH,EAAE,IAAIC,EAAE,IAAIA,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EAC9C,OAAOC,EAAG,IAAIA,EAAG,IAAI,CAAC,CAAC,EAAE,IAAIC,CAAE,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAC,GAAsB,SAAAC,OAAa,eAErC,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAIC,CAAC,IAA0B,CACrD,IAAMC,EAAWF,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,UAAU,EAC9CG,EAAID,EAAS,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACtCE,EAAIN,GAAMI,EAAS,EAAGA,EAAS,CAAC,EAAE,MAAM,GAAG,EAC3CG,EAAIJ,EAAE,QAAQ,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EACxC,OAAOG,EAAE,IAAIC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,EAAE,IAAIF,CAAC,EAAE,SAAS,CACtE,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,ECfD,OAAS,MAAAG,GAAsB,SAAAC,OAAa,eAGrC,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,EAAGC,CAAC,IAAiC,CAC7D,IAAMC,EAAIC,GAAM,iBAAsB,EAChCC,EAAaL,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,YAAY,EAClDM,EAAIC,GAASN,EAAGG,GAAM,CAAC,EAAGA,GAAM,EAAE,EAAGA,GAAM,IAAK,EAAGA,GAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EACxEI,EAAIH,EAAW,OAAO,EAAE,IAAIC,CAAC,EAAE,MAAM,GAAG,EACxCG,EAAQR,EAAE,IAAIC,EAAE,QAAQ,EAAE,IAAIG,EAAW,EAAE,MAAMA,EAAW,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,OAAO,EACpFK,EAAIP,EAAE,IAAIM,EAAM,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,EAEjCE,EADWD,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,UAAU,EACrC,IAAIT,CAAC,EAAE,MAAM,GAAG,EACnC,OAAOO,EAAE,IAAIA,EAAE,IAAIG,CAAC,CAAC,CAC7B,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,ECrBD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAWF,GAAG,CAAC,CAACG,CAAE,IAAqB,CAC5C,IAAMC,EAAWD,EAAG,IAAI,EAAG,EAAE,IAAIF,GAAK,EAAG,EAAG,CAAC,EAAE,MAAM,UAAU,EACzDI,EAAID,EAAS,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACtCE,EAAaF,EAAS,UAAU,EAAE,MAAM,YAAY,EACpDG,EAAQD,EAAW,EAChB,IAAIA,EAAW,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC,EAChC,IAAIA,EAAW,EAAE,IAAI,GAAG,CAAC,EACzB,IAAIA,EAAW,EAAE,IAAI,CAAC,CAAC,EACvB,IAAI,IAAI,EACjB,OAAOD,EAAE,IAAIE,CAAK,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EChBD,OAAS,MAAAC,GAAuB,QAAAC,OAAY,eAErC,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAA2B,CACvD,IAAMC,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAKD,EAAE,EAAE,IAAID,EAAE,CAAC,EAAE,MAAM,IAAI,EAC5BG,EAAKF,EAAE,EAAE,IAAI,OAAQ,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAID,EAAE,CAAC,EAAE,MAAM,IAAI,EAC3E,OAAOH,GAAKK,EAAIC,CAAE,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAID,EAAG,IAAIC,CAAE,EAAE,IAAI,CAAC,CAAC,CACjE,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECdD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAiBF,GAAG,CAAC,CAACG,EAAGC,CAAM,IAA4B,CAEhE,IAAMC,EAAKJ,GADC,cACS,EAAG,CAAC,EAAE,UAAU,EAAE,MAAM,IAAI,EAC3CK,EAAKL,GAAK,YAAa,EAAE,MAAM,IAAI,EAEnCM,EAAcJ,EAAE,IAAI,EAAE,IAAIC,CAAM,EAAE,MAAM,aAAa,EAErDI,EAAID,EAAY,IAAIF,CAAE,EAAE,MAAM,GAAG,EACjCI,EAAIF,EAAY,IAAIN,GAAKI,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACrDK,EAAIH,EAAY,IAAIN,GAAKI,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACrDM,EAAIJ,EAAY,IAAID,CAAE,EAAE,IAAID,EAAG,CAAC,EAAE,MAAM,GAAG,EAEjD,OAAOG,EAAE,IAAIC,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAIL,EAAG,CAAC,EAAE,IAAIM,CAAC,EAAE,IAAIP,CAAM,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,SAAU,KAAM,OAAQ,CACxC,CACR,CAAC,ECtBD,OAAS,MAAAQ,GAAiB,QAAAC,GAAM,SAAAC,GAAO,QAAAC,GAAM,MAAAC,GAAI,SAAAC,OAAa,eAEvD,IAAMC,GAAWN,GAAG,CAAC,CAACO,EAAIC,EAAQC,EAAGC,CAAC,IAAwC,CAC7E,IAAMC,EAAcJ,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,aAAa,EACpDK,EAAIX,GAAK,CAAC,EAAE,IAAIU,CAAW,EAAE,IAAID,CAAC,EAAE,MAAM,GAAG,EAC7CG,EAAIX,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBY,EAAU,IAEhB,OAAAX,GAAKW,EAAS,CAAC,CAAE,EAAAC,CAAE,IAAM,CACjBX,GAAGQ,EAAE,OAAO,EAAE,YAAY,CAAC,EAAG,IAAM,CAC5BC,EAAE,OAAOE,EAAE,QAAQ,EAAE,IAAID,CAAO,CAAC,EACjCT,GAAM,CACd,CAAC,EACDO,EAAE,OAAOX,GAAKW,EAAE,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIH,EAAE,CAAC,EAAGG,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIH,EAAE,CAAC,CAAC,CAAC,CACxF,CAAC,EAEMI,CACf,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYG,GAAiBhB,GAAG,CAAC,CAACO,EAAIE,EAAGC,CAAC,IAC5BJ,GAASC,EAAIN,GAAK,EAAG,EAAGQ,EAAGC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECtCD,OAAS,MAAAO,GAAsB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,QAAAC,GAAM,SAAAC,GAAO,MAAAC,OAAU,eAElE,IAAMC,GAAUP,GAAG,CAAC,CAACQ,EAAIC,EAAQC,CAAC,IAAgC,CACjEF,EAAKA,EAAG,IAAIC,CAAM,EAAE,MAAM,EAC1BD,EAAG,OAAOA,EAAG,IAAI,CAAC,CAAC,EACnB,IAAMG,EAAKR,GAAM,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,EACrCK,EAAG,OAAOA,EAAG,IAAI,CAAC,EAClBA,EAAG,OAAOA,EAAG,IAAIG,EAAG,IAAIV,GAAKO,EAAG,EAAE,OAAO,EAAGA,EAAG,CAAC,CAAC,CAAC,CAAC,EACnDA,EAAG,OAAOP,GAAKO,EAAG,EAAGA,EAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACjC,IAAMI,EAAIT,GAAM,EAAG,EAAE,MAAM,GAAG,EACxBU,EAAIX,GAAKS,EAAI,EAAG,GAAIA,CAAE,EAAE,IAAI,EAAG,EAAE,MAAM,GAAG,EAEhD,OAAAP,GAAK,GAAI,CAAC,CAAE,EAAAU,CAAE,IAAM,CACZR,GAAGQ,EAAE,QAAQ,EAAE,iBAAiBJ,EAAE,QAAQ,CAAC,EAAG,IAAM,CAC5CL,GAAM,CACd,CAAC,EACDG,EAAG,OACKP,GAAKU,EAAG,OAAO,EAAG,CAAC,EACV,IAAI,EAAG,EACP,IAAIE,EAAE,IAAIZ,GAAKO,EAAG,EAAGA,EAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAClD,EACAI,EAAE,OAAOA,EAAE,IAAID,CAAE,CAAC,CAC1B,CAAC,EAESH,EAAG,EACJ,KAAK,EACL,IAAIP,GAAKO,EAAG,EAAGA,EAAG,EAAE,IAAI,EAAE,IAAIG,CAAE,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,EAClD,MAAM,GAAG,EACT,IAAIC,CAAC,CACtB,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,EAEYG,GAAgBf,GAAG,CAAC,CAACQ,EAAIE,CAAC,IACxBH,GAAQC,EAAIP,GAAK,EAAG,EAAGS,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,EChDD,OAAS,MAAAM,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAUH,GAAG,CAAC,CAACI,EAAGC,EAAIC,EAAIC,CAAE,IAA0C,CAC3E,IAAMC,EAAIP,GAAKG,EAAE,EAAGA,EAAE,EAAE,IAAI,EAAE,IAAIC,CAAE,EAAE,IAAI,CAAC,EAAGD,EAAE,CAAC,EAAE,MAAM,GAAG,EAC5D,OAAOF,GAAKA,GAAKM,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAE,IAAIF,CAAE,EAAGE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAID,CAAE,CACzE,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,CACpC,CACR,CAAC,ECdD,OAAS,MAAAE,GAAgB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,QAAAC,GAAM,MAAAC,GAAI,SAAAC,OAAa,eCAnE,OAAS,MAAAC,GAAgB,SAAAC,GAAO,UAAAC,GAAQ,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEzD,IAAMC,GAAaN,GAAG,CAAC,CAACO,CAAE,IAClBH,GAAKH,GAAMM,EAAG,EAAGA,EAAG,CAAC,EAAGL,GAAOK,CAAE,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAeR,GAAG,CAAC,CAACO,CAAE,IAAoB,CAC/C,IAAME,EAAIP,GAAOK,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAMP,GAAKI,EAAG,EAAE,IAAIE,CAAC,CAAC,EAAE,MAAM,KAAK,EACnCE,EAAQV,GAAMM,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,OAAO,EAC7C,OAAOF,GAAKI,EAAGC,EAAKC,CAAK,CACjC,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EDhBM,IAAMC,GAAgBC,GAAG,CAAC,CAACC,CAAE,IAAoB,CAChD,IAAMC,EAAOD,EAAG,MAAM,MAAM,EACtBE,EAAIF,EAAG,IAAIA,CAAE,EAAE,MAAM,GAAG,EACxBG,EAAKC,GAAM,CAAC,EAAE,MAAM,IAAI,EACxB,EAAIA,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBC,EAAgB,GAChBC,EAAaF,GAAM,CAAC,EAAE,MAAM,YAAY,EACxCG,EAAIH,GAAM,CAAC,EAAE,MAAM,GAAG,EACtBI,EAAKJ,GAAM,CAAC,EAAE,MAAM,IAAI,EAE9B,OAAAK,GAAKJ,EAAe,IAAM,CAClBF,EAAG,OAAO,EAAE,IAAID,EAAE,IAAI,GAAG,CAAC,EAAE,IAAIC,CAAE,EAAE,IAAI,CAAC,CAAC,EAC1C,IAAMO,EAAaC,GAAaV,CAAI,EAAE,MAAM,YAAY,EAClDW,EAAOF,EAAW,EACf,IAAI,CAAC,EACL,IAAIA,EAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7B,IAAIA,EAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7B,MAAM,MAAM,EACfG,EAAOH,EAAW,EACf,IAAI,CAAC,EACL,IAAIA,EAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7B,IAAIA,EAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAC7B,MAAM,MAAM,EACfI,EAAOJ,EAAW,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,EAC5ET,EAAK,OAAOc,GAAKH,EAAK,IAAIZ,EAAG,CAAC,EAAGa,EAAK,IAAIb,EAAG,CAAC,EAAGc,EAAK,IAAId,EAAG,CAAC,CAAC,CAAC,EAChEE,EAAE,OAAOD,EAAK,IAAIA,CAAI,CAAC,EACvBe,GAAGd,EAAE,YAAY,CAAC,EAAG,IAAM,CACnBe,GAAM,CACd,CAAC,EACDX,EAAW,OAAOA,EAAW,IAAI,CAAC,CAAC,CAC3C,CAAC,EAEMY,GAAKd,GAAM,GAAI,EAAE,IAAIF,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,KAAK,CAAC,EAAE,IAAIC,CAAE,EAAGG,CAAU,CAC9E,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EExCD,OAAS,MAAAa,OAAuB,eAEzB,IAAMC,GAAgBD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAA4B,CAC1D,IAAMC,EAAOF,EAAE,IAAI,EAAE,MAAM,MAAM,EAEjC,OADUE,EAAK,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAID,CAAC,EAAE,MAAM,GAAG,EAChD,IAAI,SAAU,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYE,GAAqBL,GAAG,CAAC,CAACE,EAAGC,CAAC,IAA4B,CAC/D,IAAMC,EAAOF,EAAE,IAAI,EAAE,MAAM,MAAM,EAC3BI,EAAIF,EAAK,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAIA,EAAK,CAAC,EAAE,IAAID,CAAC,EAAE,MAAM,GAAG,EACnDI,EAAIH,EAAK,IAAI,CAAC,EAAE,IAAIE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC7CC,EAAE,OAAOH,EAAK,IAAI,CAAC,EAAE,IAAIE,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAClF,IAAMC,EAAOD,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,MAAM,MAAM,EAC/C,OAAOH,EAAK,IAAID,EAAE,IAAII,CAAC,EAAE,IAAIC,CAAI,CAAC,EAAE,OAAO,CACnD,CAAC,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC7BD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAkBH,GAAG,CAAC,CAACI,EAAGC,EAAGC,CAAC,IAAmC,CACtE,IAAMC,EAAIN,GAAK,aAAe,YAAc,WAAY,EAAE,MAAM,GAAG,EACnEG,EAAE,OAAOA,EAAE,IAAI,CAAC,EAChBA,EAAE,OAAOH,GAAKG,EAAE,GAAG,IAAIF,GAAKK,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIL,GAAKK,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIH,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAGA,EAAE,CAAC,CAAC,EACxFA,EAAE,OAAOH,GAAKG,EAAE,GAAG,IAAIF,GAAKK,EAAE,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,IAAIL,GAAKK,EAAE,EAAE,OAAO,EAAGA,EAAE,CAAC,EAAE,IAAIH,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAGA,EAAE,CAAC,CAAC,EAC1GA,EAAE,OAAOH,GAAKG,EAAE,GAAG,IAAIF,GAAKE,EAAE,EAAE,MAAMG,EAAE,EAAE,OAAO,EAAE,IAAIF,CAAC,EAAGE,EAAE,EAAE,IAAIF,CAAC,CAAC,EAAGA,CAAC,CAAC,EAAGD,EAAE,CAAC,CAAC,EACjF,IAAMI,EAAIN,GAAKE,EAAE,GAAG,OAAO,EAAE,IAAIA,EAAE,EAAE,KAAK,CAAC,EAAGA,EAAE,EAAE,IAAIE,CAAC,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACxD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EClBD,OAAS,MAAAC,GAAsB,QAAAC,OAAY,eAEpC,IAAMC,GAAiBF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACxBD,EAAE,IAAIA,EAAE,MAAMC,EAAE,OAAO,EAAGA,CAAC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBL,GAAG,CAAC,CAACG,EAAGC,CAAC,IACxBD,EAAE,IAAIA,EAAE,MAAMC,EAAE,OAAO,EAAGA,CAAC,CAAC,CAC1C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAiBN,GAAG,CAAC,CAACG,EAAGC,CAAC,IAA0B,CACzD,IAAMG,EAAIJ,EAAE,IAAI,EAAE,IAAIC,CAAC,EAAE,MAAM,GAAG,EAClC,OAAOH,GAAKM,EAAE,IAAI,CAAC,EAAGA,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EClCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAGC,EAAKC,CAAC,IAAmC,CAClE,IAAMC,EAAIL,GAAKG,EAAKD,EAAE,EAAE,IAAI,EAAE,IAAIE,CAAC,CAAC,EAAE,MAAM,GAAG,EAC/C,OAAOC,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAIA,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACxD,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECbD,OAAS,MAAAC,GAAW,OAAAC,GAAK,SAAAC,OAAa,eAE/B,IAAMC,GAAiBH,GAAG,CAAC,CAACI,EAAIC,CAAE,IAC1BD,EAAG,IAAIC,CAAE,CACvB,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,CACpC,CACR,CAAC,EAEYC,GAAuBN,GAAG,CAAC,CAACI,EAAIC,EAAIE,CAAC,IAAoC,CAC9E,IAAMC,EAAIN,GAAM,EAAG,EAAE,IAAIG,EAAG,IAAID,CAAE,EAAE,IAAIG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,EACzE,OAAON,GAAII,EAAID,EAAII,CAAC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,CAAC,CAC5D,CAAC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECxBD,OAAS,MAAAC,OAAiB,eAEnB,IAAMC,GAAUD,GAAG,CAAC,CAACE,EAAGC,CAAC,IACjBD,EAAE,IAAI,EAAE,IAAIC,CAAC,CAC3B,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAuB,OAAAC,OAAW,eAEpC,IAAMC,GAAeF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACtBH,GAAIE,EAAE,IAAIC,EAAE,IAAI,EAAG,CAAC,EAAGA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAG,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAeL,GAAG,CAAC,CAACG,EAAGG,CAAC,IACtBL,GAAIE,EAAE,IAAIG,EAAE,IAAI,EAAG,CAAC,EAAGA,CAAC,EAAE,IAAIA,EAAE,IAAI,EAAG,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAsBP,GAAG,CAAC,CAACG,EAAGK,EAAMC,EAAML,CAAC,IACzCD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAE,MAAM,EAAE,MAAMI,EAAMC,CAAI,CAAC,CAAC,CAC7D,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAsBV,GAAG,CAAC,CAACG,EAAGK,EAAMC,EAAML,CAAC,IACzCD,EAAE,IAAIC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAE,MAAM,EAAE,MAAMI,EAAMC,CAAI,CAAC,CAAC,CAC7D,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EChDD,OAAS,MAAAE,GAAuB,QAAAC,OAAY,eAErC,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAGC,CAAC,IACnBH,GAAKA,GAAKE,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAE,IAAIC,CAAC,EAAGD,EAAE,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAE,OAAiB,eAEnB,IAAMC,GAAUD,GAAG,CAAC,CAACE,EAAGC,CAAC,IACjBD,EAAE,IAAIC,CAAC,CACrB,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECXD,OAAS,MAAAC,GAAiB,QAAAC,OAAoB,eAEvC,IAAMC,GAAgBF,GAAG,CAAC,CAACG,EAAIC,CAAE,IACzBD,EAAG,OAAO,EAAE,IAAIC,CAAE,CAChC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,CACpC,CACR,CAAC,EAEYC,GAAoBL,GAAG,CAAC,CAACG,EAAIC,CAAE,IAC7BD,EAAG,OAAO,EAAE,OAAOC,EAAID,EAAG,EAAE,OAAO,EAAE,YAAYC,EAAG,CAAC,CAAC,CACpE,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYE,GAAsBN,GAAG,CAAC,CAACG,EAAIC,EAAIG,CAAC,IAAoC,CAC7E,IAAMC,EAAIJ,EAAG,IAAID,CAAE,EAAE,IAAII,CAAC,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,EAAE,OAAO,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EAC5E,OAAOH,EAAG,IAAID,EAAG,OAAO,EAAGK,CAAC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,CAAC,CACpE,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAA0BT,GAAG,CAAC,CAACG,EAAIC,EAAIG,CAAC,IAAiC,CAC9E,IAAMC,EAAIJ,EAAG,EAAE,IAAID,EAAG,CAAC,EAAE,IAAII,CAAC,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,EAAE,OAAO,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EAC1EG,EAASN,EAAG,IAAID,EAAG,OAAO,EAAGK,CAAC,EAAE,MAAM,QAAQ,EACpD,OAAOP,GAAKS,EAAO,IAAKA,EAAO,EAAE,IAAIH,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,CAAC,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECjDD,OAAS,MAAAG,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAIC,CAAE,IACnBD,EAAG,IAAIC,CAAE,CACvB,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,CACpC,CACR,CAAC,EAEYC,GAAgBL,GAAG,CAAC,CAACG,EAAIC,EAAIE,CAAC,IAAoC,CACvE,IAAMC,EAAIH,EAAG,IAAID,CAAE,EAAE,IAAIG,CAAC,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EACnE,OAAOF,EAAG,IAAID,EAAII,CAAC,EAAE,IAAID,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,CAAC,CAC3D,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAoBR,GAAG,CAAC,CAACG,EAAIC,EAAIE,CAAC,IAAiC,CACxE,IAAMC,EAAIH,EAAG,EAAE,IAAID,EAAG,CAAC,EAAE,IAAIG,CAAC,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EACjEG,EAASL,EAAG,IAAID,EAAII,CAAC,EAAE,MAAM,QAAQ,EAC3C,OAAON,GAAKQ,EAAO,IAAKA,EAAO,EAAE,IAAIH,EAAE,IAAIC,CAAC,EAAE,IAAIA,EAAE,SAAS,CAAC,CAAC,CAAC,CACxE,CAAC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECtCD,OAAS,MAAAG,OAAuB,eAEzB,IAAMC,GAAWD,GAAG,CAAC,CAACE,CAAC,IACfA,EAAE,CAChB,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAiBH,GAAG,CAAC,CAACE,EAAGE,EAAYC,CAAW,IAC9CA,EAAY,IAAIH,CAAC,EAAE,IAAIG,EAAY,IAAID,CAAU,CAAC,EAAE,IAAIC,EAAY,OAAO,CAAC,CAC1F,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,aAAc,KAAM,MAAO,EACnC,CAAE,KAAM,cAAe,KAAM,MAAO,CAC5C,CACR,CAAC,ECpBD,OAAS,MAAAC,GAAsB,SAAAC,OAAa,eAGrC,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAC,IAA0B,CACnD,IAAMC,EAAIF,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC9B,EAAIG,GAAMD,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIE,CAAE,EAAE,MAAM,GAAG,EACrCC,EAAIH,EAAE,OAAO,EAAE,MAAM,GAAG,EACxBI,EAAIC,GAAI,IAAIN,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,EACxC,OAAO,EAAE,IAAIK,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAID,CAAC,CAClE,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,EAEYG,GAAeT,GAAG,CAAC,CAACC,EAAIC,CAAC,IAA4B,CAC1D,IAAMC,EAAIF,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC9B,EAAIG,GAAMD,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIE,CAAE,EAAE,MAAM,GAAG,EACrCC,EAAIH,EAAE,OAAO,EAAE,MAAM,GAAG,EACxBI,EAAIC,GAAI,IAAIN,CAAC,EAAE,MAAM,GAAG,EAC9B,OAAO,EAAE,IAAIK,CAAC,EAAE,IAAI,EAAG,EAAE,MAAM,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAID,CAAC,CAClE,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC/BD,OAAS,MAAAI,GAAiB,QAAAC,GAAM,QAAAC,GAAM,UAAAC,GAAQ,SAAAC,OAAa,eAEpD,IAAMC,GAAaL,GAAG,CAAC,CAACM,EAAGC,CAAC,IAA4B,CACvD,IAAMC,EAAKD,EAAE,IAAIA,CAAC,EAAE,IAAI,GAAI,EAAE,MAAM,IAAI,EAClCE,EAAMP,GAAKI,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,EAEtCI,EADaP,GAAOD,GAAKO,EAAI,EAAGA,EAAI,CAAC,EAAGA,EAAKA,EAAI,EAAE,YAAYA,EAAI,CAAC,CAAC,EAAE,MAAM,YAAY,EACnE,IAAI,EAAG,EAAE,MAAM,UAAU,EACrDH,EAAE,OAAOL,GAAKS,EAAS,EAAGJ,EAAE,EAAGI,EAAS,CAAC,CAAC,EAC1C,IAAMC,EAAIV,GAAKK,EAAE,EAAGC,EAAE,IAAID,EAAE,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAE,IAAID,EAAE,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EACnFM,EAAID,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EACjCE,EAAIF,EAAE,EAAE,IAAIL,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIE,EAAG,IAAI,GAAI,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,MAAM,GAAG,EACjEM,EAAIN,EAAG,IAAIG,EAAE,EAAE,IAAIC,CAAC,CAAC,EAAE,IAAID,EAAE,EAAE,IAAIC,CAAC,CAAC,EAAE,IAAID,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAClEI,EAAIP,EACD,IAAIG,EAAE,EAAE,IAAIE,EAAE,IAAI,EAAG,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIE,EAAE,IAAI,EAAG,CAAC,CAAC,EACvB,IAAIF,EAAE,EAAE,IAAIH,EAAG,IAAIK,CAAC,CAAC,EAAE,IAAIF,EAAE,EAAE,IAAIH,EAAG,IAAIK,CAAC,CAAC,CAAC,CAAC,EAC9C,MAAM,GAAG,EAIlB,OAHWV,GAAOC,GAAM,CAAC,EAAGU,EAAE,IAAIC,CAAC,EAAGJ,EAAE,EAAE,IAAIA,EAAE,EAAE,OAAO,EAAE,IAAIH,CAAE,EAAE,IAAIG,EAAE,EAAE,IAAI,EAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAC3F,QAAQ,EACR,MAAM,IAAI,EACT,IAAIA,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIH,CAAE,EAAE,KAAK,EAAE,IAAIG,EAAE,EAAE,IAAIL,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CACnF,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EC5BD,OAAS,MAAAU,GAAsB,SAAAC,OAAa,eAGrC,IAAMC,GAAUC,GAAG,CAAC,CAACC,EAAIC,CAAC,IAA0B,CACnD,IAAMC,EAAWF,EAAG,IAAI,EAAG,EAAE,MAAM,UAAU,EAC7C,OAAOG,GAAMD,EAAS,EAAGA,EAAS,CAAC,EAAE,IAAIE,EAAG,EAAE,IAAIH,EAAE,QAAQ,CAAC,EAAE,MAAM,CAC7E,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,ECbD,OAAS,MAAAI,GAAiB,QAAAC,OAAY,eAG/B,IAAMC,GAAWC,GAAG,CAAC,CAACC,CAAE,IAChBC,GAAOD,CAAE,EAAE,IAAIC,GAAOC,GAAKF,EAAG,EAAGA,EAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAChE,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECTD,OAAS,MAAAG,GAAiB,SAAAC,OAAa,eAEhC,IAAMC,GAAYF,GAAG,CAAC,CAACG,EAAIC,CAAC,IAA4B,CACvD,IAAMC,EAAaF,EAAG,IAAI,EAAG,EAAE,MAAM,YAAY,EAC3CG,EAAID,EAAW,IAAIA,CAAU,EAAE,MAAM,GAAG,EACxCE,EAAIN,GAAMI,EAAW,EAAGA,EAAW,CAAC,EAAE,MAAM,GAAG,EACrD,OAAOC,EAAE,IAAI,EAAE,IAAIF,CAAC,EAAE,IAAIG,EAAE,IAAI,IAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAClE,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECdD,OAAS,MAAAC,GAAsB,QAAAC,GAAM,SAAAC,GAAO,QAAAC,GAAM,SAAAC,OAAa,eAMxD,SAASC,GAAQC,EAAUC,EAAQC,EAAc,CAChD,OAAIA,IAAM,OACKC,GAAiBH,EAAIC,EAAGC,CAAC,EAEzBE,GAAcJ,EAAIC,CAAC,CAE1C,CAEO,IAAME,GAAmBE,GAAG,CAAC,CAACL,EAAIC,EAAGC,CAAC,IAAiC,CACtE,IAAMI,EAAaN,EAAG,IAAI,EAAG,EAAE,IAAI,CAAC,EAAE,MAAM,YAAY,EAElDO,EADIC,GAAMF,EAAW,EAAGA,EAAW,CAAC,EAAE,IAAIG,EAAG,EAAE,MAAM,GAAG,EAChD,IAAIR,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,EACpCS,EAASH,EACN,MAAM,EACN,IAAI,EAAG,EACP,IAAIN,EAAE,QAAQ,CAAC,EACf,IAAIC,EAAE,IAAIA,EAAE,OAAO,EAAGS,GAAK,GAAKJ,EAAI,MAAM,CAAC,CAAC,CAAC,EAC7C,IAAIE,EAAG,EACP,MAAM,QAAQ,EACvB,OAAOG,GAAKF,EAAO,IAAI,EAAGA,EAAO,IAAI,CAAC,EAAE,IAAIJ,CAAU,EAAE,IAAI,CACpE,CAAC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,EACzB,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYF,GAAgBC,GAAG,CAAC,CAACL,EAAIC,CAAC,IAA0B,CACzD,IAAMY,EAAWC,GAAkBd,EAAIC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,EAAGW,GAAK,EAAG,CAAC,EAClF,OAAOT,GAAiBU,EAAiBZ,EAAGc,GAAM,EAAG,CAAC,CAC9D,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,KAAM,CACjC,CACR,CAAC,EC9CD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,SAAAC,OAAa,eAG1D,IAAMC,GAAsBC,GAC3B,CAAC,CAACC,EAAIC,EAAQC,EAAG,EAAGC,EAAGC,EAAIC,EAAIC,EAAIC,CAAC,IAUvB,CACLP,EAAG,OAAOA,EAAG,IAAIC,CAAM,CAAC,EACxB,IAAMO,EAAQC,GAAWT,CAAE,EAAE,MAAM,OAAO,EACpCU,EAAIF,EAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,EAC5BG,EAAQH,EAAM,EAAE,MAAM,OAAO,EAC7BI,EAAKC,GACHC,GAAM,CAAC,EACE,IAAI,CAAC,EACL,IAAIC,GAAIR,EAAE,IAAII,CAAK,EAAE,IAAI,GAAI,CAAC,CAAC,CAChD,EAAE,MAAM,IAAI,EACZC,EAAG,OAAOI,GAAIJ,EAAIP,CAAE,CAAC,EACrB,IAAMY,EAAKJ,GACHC,GAAM,CAAC,EACE,IAAIX,CAAC,EACL,IAAIe,GAAIX,EAAE,IAAII,CAAK,EAAE,IAAI,GAAI,CAAC,CAAC,CAChD,EAAE,MAAM,IAAI,EACZM,EAAG,OAAOD,GAAIC,EAAIX,CAAE,CAAC,EACrB,IAAMa,EAAKP,EAAG,IAAIK,CAAE,EAAE,MAAM,IAAI,EAC1BG,EAAIJ,GAAIG,EAAIL,GAAM,EAAE,EAAE,IAAIV,CAAE,CAAC,EAAE,MAAM,GAAG,EACxCiB,EAAInB,EACD,IAAIkB,CAAC,EACL,IAAIE,GAAKP,GAAIJ,CAAK,EAAGO,GAAIP,CAAK,CAAC,CAAC,EAChC,MAAM,GAAG,EAClB,OAAOD,EAAE,IAAIW,EAAE,OAAO,CAAC,CAC/B,CACR,EAAE,UAAU,CACJ,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYE,GAAgBxB,GACrB,CAAC,CAACC,EAAIE,EAAGsB,EAAGrB,EAAGC,EAAIC,EAAIC,EAAIC,CAAC,IACbT,GAAoBE,EAAIsB,GAAK,EAAG,EAAGpB,EAAGsB,EAAGrB,EAAGC,EAAIC,EAAIC,EAAIC,CAAC,CAEhF,EAAE,UAAU,CACJ,KAAM,gBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECxED,OAAS,MAAAkB,GAAiB,QAAAC,OAAY,eAE/B,IAAMC,GAAiBF,GAAG,CAAC,CAACG,EAAGC,CAAC,IAA4B,CAC3D,IAAMC,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EACrBG,EAAIH,EAAE,EAAE,MAAM,GAAG,EACjBI,EAAKF,EAAE,EAAE,IAAIC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,EACjCE,EAAKH,EAAE,EACJ,IAAI,EAAG,EACP,IAAIC,EAAE,IAAI,EAAG,CAAC,EACd,IAAI,CAAC,EACL,IAAIF,EAAE,IAAIA,EAAE,IAAIE,CAAC,CAAC,CAAC,EACnB,MAAM,IAAI,EACnB,OAAOL,GAAKM,EAAIC,CAAE,EAAE,IAAI,IAAK,EAAE,OAAO,EAAE,IAAID,EAAG,IAAIC,CAAE,EAAE,IAAI,CAAC,CAAC,CACrE,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECpBD,OAAS,MAAAC,OAA6B,eAE/B,IAAMC,GAAcD,GAAG,CAAC,CAACE,EAAGC,CAAC,IAA2B,CACvD,IAAMC,EAAIF,EAAE,IAAI,EAAE,MAAM,GAAG,EAC3B,OAAOE,EAAE,EAAE,IAAID,EAAE,CAAC,EAAE,IAAIC,EAAE,EAAE,IAAI,OAAQ,EAAE,IAAIF,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAIC,EAAE,EAAE,IAAI,EAAG,CAAC,CAAC,CACvG,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECZD,OAAS,MAAAE,OAAuB,eAEzB,IAAMC,GAAYD,GAAG,CAAC,CAACE,CAAC,IAChBA,EAAE,OAAO,CACvB,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAkBH,GAAG,CAAC,CAACE,EAAGE,CAAC,IACzBF,EAAE,OAAO,EAAE,IAAIE,CAAC,CAC9B,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECnBD,OAAS,MAAAC,GAAuB,QAAAC,GAAM,UAAAC,OAAc,eAE7C,IAAMC,GAAWH,GAAG,CAAC,CAACI,EAAGC,CAAC,IAClBJ,GAAKA,GAAKG,EAAE,EAAGA,EAAE,CAAC,EAAE,OAAO,EAAE,IAAIC,EAAE,CAAC,EAAGD,EAAE,CAAC,EAAE,OAAO,EAAE,IAAIC,EAAE,CAAC,CAC1E,EAAE,UAAU,CACL,KAAM,WACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAiBN,GAAG,CAAC,CAACI,EAAGG,EAAIC,EAAIC,CAAE,IAAyC,CACjF,IAAMC,EAAKN,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,EACzBO,EAAIT,GAAOD,GAAKS,EAAIN,EAAE,CAAC,EAAE,OAAO,EAAGH,GAAKS,EAAIN,EAAE,CAAC,EAAE,IAAIG,CAAE,EAAGA,EAAG,EAAE,IAAIG,CAAE,EAAE,YAAYH,EAAG,EAAE,IAAIH,EAAE,CAAC,CAAC,CAAC,EACvG,OAAOA,EAAE,IAAIA,CAAC,EAAE,IAAII,EAAG,IAAIA,CAAE,CAAC,EAAE,IAAIA,EAAG,IAAIG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAIF,CAAE,CAC3E,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,OAAQ,EAC5B,CAAE,KAAM,KAAM,KAAM,OAAQ,CACpC,CACR,CAAC,EC1BD,OAAS,MAAAG,GAAiB,QAAAC,GAAM,SAAAC,OAAa,eAEtC,IAAMC,GAAYH,GAAG,CAAC,CAACI,EAAIC,CAAC,IAA4B,CACvD,IAAMC,EAASL,GAAKI,EAAE,IAAI,EAAG,EAAG,CAAC,EAC3BE,EAAUH,EAAG,IAAIE,CAAM,EAAE,OAAO,EAAE,IAAI,EAAG,EACzCE,EAAUJ,EAAG,IAAIE,CAAM,EAAE,OAAO,EAAE,IAAI,EAAG,EAC/C,OAAOC,EAAQ,IAAIC,CAAO,CAClC,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAmBT,GAAG,CAAC,CAACI,CAAE,IACxBD,GAAUC,EAAIF,GAAM,EAAG,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECtBD,OAAS,MAAAQ,OAAgB,eAElB,IAAMC,GAASD,GAAG,CAAC,CAACE,EAAIC,CAAC,IAA0B,CAClD,IAAMC,EAASF,EAAG,MAAM,QAAQ,EAChC,OAAAE,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAID,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,EACnCC,CACf,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,SAAAC,GAAO,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,QAAAC,OAAmB,eAGzE,IAAMC,GAAyBC,EAAG,IAAI,EAAI,EAE7BC,GAAkBC,GAAG,CAAC,CAACC,CAAG,IAAoB,CACnD,IAAMC,EAAQC,GAAMF,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIG,EAAM,EACtCC,EAAaC,GAAIJ,EAAOL,EAAsB,EAC9CU,EAASL,EAAM,IAAIG,CAAU,EACnC,OAAOG,GAAKC,GAAIF,CAAM,EAAGG,GAAIH,CAAM,CAAC,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYI,GAAkBX,GAAG,CAAC,CAACC,CAAG,IAAoB,CACnD,IAAMC,EAAQC,GAAMF,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIG,EAAM,EACtCC,EAAaC,GAAIJ,EAAOL,EAAsB,EAC9CU,EAASL,EAAM,IAAIG,CAAU,EAC7BO,EAASJ,GAAKC,GAAIF,CAAM,EAAGG,GAAIH,CAAM,CAAC,EAO5C,OAN2BM,GACnBJ,GAAIZ,EAAsB,EAC1Ba,GAAIb,EAAsB,EAC1Ba,GAAIb,EAAsB,EAAE,OAAO,EACnCY,GAAIZ,EAAsB,CAClC,EAC0B,IAAIe,CAAM,CAC5C,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EAEYE,GAAkBd,GAAG,CAAC,CAACC,CAAG,IAAqB,CACpD,IAAMC,EAAQC,GAAMF,EAAI,EAAGA,EAAI,CAAC,EAAE,IAAIG,EAAM,EAE5C,OADmBE,GAAIJ,EAAOL,EAAsB,EAClC,IAAIA,EAAsB,CACpD,CAAC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,MAAO,CAAC,CAC9C,CAAC,EC1CD,OAAS,MAAAkB,GAAuB,OAAAC,GAAK,SAAAC,GAAO,SAAAC,OAAa,eCAzD,OAAS,MAAAC,GAAuB,QAAAC,GAAM,SAAAC,GAAO,SAAAC,OAAa,eAEnD,IAAMC,GAASJ,GAAG,CAAC,CAACK,CAAE,IACdJ,GAAKC,GAAMG,CAAE,EAAGF,GAAME,CAAE,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYC,GAAcN,GAAG,CAAC,CAACK,EAAIE,CAAK,IAC1BH,GAAOC,EAAG,IAAIE,CAAK,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EDhBM,IAAMC,GAAYC,GAAG,CAAC,CAAC,CAAC,IAAoB,CAC3C,IAAMC,EAAS,EAAE,MAAM,QAAQ,EAC/B,OAAAA,EAAO,EAAE,OAAOA,EAAO,EAAE,IAAIC,GAAID,EAAO,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,CAAC,EACvDA,EAAO,EAAE,OAAOE,GAAMF,EAAO,EAAE,IAAIA,EAAO,CAAC,CAAC,CAAC,EAC7CA,EAAO,EAAE,OAAOG,GAAMH,EAAO,CAAC,CAAC,EACxBA,CACf,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAgBL,GAAG,CAAC,CAACM,CAAE,IACrBP,GAAUQ,GAAOD,CAAE,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAiBR,GAAG,CAAC,CAACM,EAAIG,CAAC,IACzBJ,GAAcC,EAAG,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAqBV,GAAG,CAAC,CAACM,EAAIG,CAAC,IAC7BJ,GAAcC,EAAG,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,qBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EE3CD,OAAS,MAAAE,OAA6B,eAKtC,SAASC,GAAOC,EAAa,CACrB,OAAOA,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAC7B,CAEO,IAAMC,GAAcH,GAAG,CAAC,CAACI,CAAC,IAClBH,GAAOG,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAaL,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAOC,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAaN,GAAG,CAAC,CAACE,CAAC,IACjBD,GAAOC,CAAC,CACtB,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC/BD,OAAS,MAAAK,GAAuB,OAAAC,GAAK,OAAAC,OAAW,eAGzC,IAAMC,GAAcC,GAAG,CAAC,CAAC,CAAC,IAAqB,CAC9C,IAAMC,EAAIC,GAAI,EAAE,GAAI,CAAC,EAAE,MAAM,GAAG,EAChC,OAAOC,GAAIF,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAC/B,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYG,GAAkBJ,GAAG,CAAC,CAACK,CAAC,IACtBN,GAAYO,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAmBP,GAAG,CAAC,CAACK,EAAGG,CAAC,IAC1BJ,GAAgBC,EAAE,IAAIG,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAuBT,GAAG,CAAC,CAACK,EAAGG,CAAC,IAC9BJ,GAAgBC,EAAE,IAAIG,CAAC,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECxCD,OAAS,MAAAE,GAAW,UAAAC,OAAc,eAG3B,IAAMC,GAAcF,GAAG,CAAC,CAACG,EAAOC,EAAMC,CAAG,IACjCD,EAAK,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,EAAE,IAAIE,CAAG,CAAC,CACjE,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAGYC,GAA0BN,GAAG,CAAC,CAACG,EAAOC,EAAMC,CAAG,IAC7CF,EAAM,IAAIC,EAAK,IAAIC,CAAG,CAAC,EAAE,IAAID,CAAI,CAC/C,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAGYG,GAAsBP,GAAG,CAAC,CAACG,EAAOC,EAAMC,EAAKG,CAAY,IAA2C,CACzG,IAAMC,EAAcL,EAAK,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,EAAE,IAAIE,CAAG,CAAC,EACjEK,EAAQP,EAAM,IAAIC,EAAK,IAAIC,CAAG,CAAC,EAAE,IAAID,CAAI,EAC/C,OAAOH,GAAOS,EAAOD,EAAaD,EAAa,YAAY,EAAG,CAAC,CACvE,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,eAAgB,KAAM,OAAQ,CAC9C,CACR,CAAC,EC1CD,OAAS,MAAAG,GAAmB,WAAAC,GAAS,SAAAC,GAAO,QAAAC,GAAM,OAAAC,GAAK,QAAAC,GAAM,MAAAC,OAAU,eCAvE,OAAS,MAAAC,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAgBH,GAAG,CAAC,CAACI,EAASC,CAAE,IAAoB,CACzD,IAAMC,EAAQF,EAAQ,UAAU,EAAE,MAAM,EAClCG,EAAQF,EAAG,MAAMC,CAAK,EAAE,UAAU,EAAE,MAAM,EAC1CE,EAAQF,EAAM,MAAMC,CAAK,EAAE,MAAM,EACvC,OAAOL,GAAKK,EAAOC,EAAOF,CAAK,CACvC,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,UAAW,KAAM,MAAO,EAChC,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYG,GAAST,GAAG,CAAC,CAACU,EAAKC,EAAQN,CAAE,IAA0B,CAC5D,IAAMD,EAAUO,EAAO,IAAID,CAAG,EAAE,UAAU,EAAE,MAAM,EAClD,OAAOP,GAAcC,EAASC,CAAE,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYO,GAAaZ,GAAG,CAAC,CAACU,EAAKC,EAAQE,CAAI,IAA2B,CACnE,IAAMR,EAAKJ,GAAKY,EAAK,IAAI,EAAGA,EAAK,IAAI,EAAG,CAAC,EAAE,MAAM,EACjD,OAAOJ,GAAOC,EAAKC,EAAQN,CAAE,CACrC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,MAAO,EAC5B,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYS,GAAcd,GAAG,CAAC,CAACI,CAAO,IACxBD,GAAcC,EAASH,GAAK,EAAG,EAAG,CAAC,CAAC,CAClD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,UAAW,KAAM,MAAO,CAAC,CAClD,CAAC,ED7CD,IAAMc,GAAiBC,GAAM,CAAC,EAAE,SAAS,gBAAgB,EACnDC,GAAqBD,GAAM,GAAI,EAAE,SAAS,oBAAoB,EAC9DE,GAA0BC,GAAI,GAAG,EAAE,SAAS,yBAAyB,EAE9DC,GAAWC,GAAG,CAAC,CAACC,EAAKC,EAAIC,CAAE,IAA6B,CAE7D,IAAMC,EADKF,EAAG,EAAE,IAAIR,EAAc,EAAE,MAAM,IAAI,EACjC,IAAIS,EAAG,CAAC,EAAE,MAAM,GAAG,EAC1BE,EAAOC,GAAKJ,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,EAAGF,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,EAAGF,EAAG,EAAE,IAAIC,EAAG,EAAE,IAAIC,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAC7FG,EAAOF,EAAK,MAAM,MAAM,EACxBG,EAAQH,EAAK,EAAE,MAAM,OAAO,EAC5BI,EAAOd,GAAM,CAAC,EAAE,MAAM,MAAM,EAC5Be,EAAKf,GAAM,CAAC,EAAE,MAAM,IAAI,EAE9B,OAAAgB,GAAKd,GAAyB,IAAM,CAC5BQ,EAAK,OAAOE,CAAI,EAChBA,EAAK,OAAOF,EAAK,IAAIF,EAAG,IAAIP,EAAkB,CAAC,CAAC,EAChDa,EAAK,OAAOG,GAAQX,EAAKM,EAAK,GAAG,IAAI,EAAG,CAAC,EAAE,CAAC,EAC5CG,EAAG,OAAOH,EAAK,EAAE,IAAIE,EAAK,IAAIf,EAAc,CAAC,CAAC,EAE9CmB,GAAGH,EAAG,SAAS,CAAC,EAAG,IAAM,CACjB,IAAMN,EAAII,EAAM,IAAIE,EAAG,IAAI,EAAE,IAAIF,CAAK,CAAC,EAAE,MAAM,GAAG,EAClD,OAAOH,EAAK,IAAID,EAAE,IAAIG,EAAK,IAAIF,CAAI,CAAC,CAAC,EAAE,IAAIC,GAAK,GAAK,GAAK,CAAC,CAAC,CACpE,CAAC,EAEDE,EAAM,OAAOE,CAAE,CACvB,CAAC,EAEMJ,GAAK,EAAG,EAAG,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,WACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYQ,GAAad,GAAG,CAAC,CAACC,EAAKC,EAAIa,CAAE,IAA6B,CAC/D,IAAMZ,EAAKa,GAAYd,EAAG,OAAO,CAAC,EACzB,IAAII,GAAKS,EAAG,IAAIpB,GAAM,EAAG,CAAC,EAAG,CAAC,EAAE,UAAU,CAAC,EAC3C,MAAM,IAAI,EACnB,OAAOI,GAASE,EAAKC,EAAIC,CAAE,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EEtDD,OAAS,MAAAc,GAAgB,QAAAC,GAAM,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,SAAAC,OAAa,eAGrD,IAAMC,GAAeC,GAAG,CAAC,CAACC,CAAE,IAAoB,CAC/C,IAAMC,EAAMC,EAAG,IAAIF,EAAG,EAAE,IAAIE,CAAE,CAAC,EAAE,MAAM,KAAK,EACtCC,EAAQH,EAAG,EAAE,IAAII,EAAM,EAAE,MAAM,OAAO,EACtCC,EAAMC,GAAKC,GAAIJ,CAAK,EAAG,EAAGK,GAAIL,CAAK,CAAC,EAAE,MAAM,KAAK,EACvDE,EAAI,EAAE,OAAOE,GAAIN,CAAG,CAAC,EACrB,IAAMQ,EAAaC,GAAKC,GAAM,CAAC,EAAE,IAAIN,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,EAC1E,OAAAA,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAII,CAAU,CAAC,EAClCJ,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAII,CAAU,CAAC,EAC3BJ,CACf,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EChBD,OAAS,MAAAO,GAAgB,QAAAC,OAAY,eCArC,OAAS,MAAAC,GAAgB,QAAAC,GAAM,QAAAC,OAAY,eAEpC,IAAMC,GAAgBH,GAAG,CAAC,CAACI,EAAGC,CAAW,IACjCH,GAAKD,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKG,EAAE,CAAC,EAAG,CAAC,EAAGH,GAAKI,EAAa,CAAC,CAAC,CACpF,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,cAAe,KAAM,MAAO,CAC5C,CACR,CAAC,EDPM,IAAMC,GAAYC,GAAG,CAAC,CAACC,EAAUC,CAAK,IAA0B,CAC/D,IAAMC,EAAOC,GAAUF,EAAM,CAAC,EACxBG,EAAOC,GAAUJ,EAAM,CAAC,EACxBK,EAAOC,GAAUN,EAAM,CAAC,EACxBO,EAAWC,GAAK,CAAC,EAAE,MAAM,UAAU,EACnCC,EAAWJ,EAAK,IAAIF,CAAI,EAAE,IAAIF,CAAI,EAAE,IAAIM,CAAQ,EAAE,MAAM,UAAU,EACxE,OAAOG,GAAcD,EAAUV,CAAQ,CAC/C,CAAC,EAAE,UAAU,CACL,KAAM,YACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,EElBD,OAAS,MAAAY,GAAgB,QAAAC,GAAM,QAAAC,GAAM,OAAAC,GAAK,SAAAC,OAAa,eAGhD,IAAMC,GAAcC,GAAG,CAAC,CAACC,CAAE,IAAoB,CAC9C,IAAMC,EAAMD,EAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,EAClCE,EAAIC,GAAKF,EAAI,EAAE,IAAIA,EAAI,CAAC,EAAE,IAAIA,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAC1DG,EAAMC,GAAKJ,EAAI,EAAE,IAAIC,CAAC,EAAG,EAAGD,EAAI,EAAE,IAAIC,CAAC,CAAC,EAAE,MAAM,KAAK,EACrDI,EAAMJ,EAAE,IAAIK,CAAE,EAAE,IAAI,GAAI,EAAE,MAAM,KAAK,EAC3CH,EAAI,EAAE,OAAOI,GAAIF,CAAG,CAAC,EACrB,IAAMG,EAAaN,GAAKO,GAAM,CAAC,EAAE,IAAIN,EAAI,EAAE,IAAIA,EAAI,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,EAC1E,OAAAA,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAIK,CAAU,CAAC,EAClCL,EAAI,EAAE,OAAOA,EAAI,EAAE,IAAIK,CAAU,CAAC,EAC3BL,CACf,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECjBD,OAAS,MAAAO,GAAsB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,OAAY,eAEhD,IAAMC,GAAYJ,GAAG,CAAC,CAACK,CAAC,IAChBJ,GAAKI,EAAE,EAAGA,EAAE,EAAE,SAAS,CAAC,CACtC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAYN,GAAG,CAAC,CAACK,CAAC,IAChBH,GAAKG,EAAE,EAAGA,EAAE,EAAE,SAAS,EAAGA,EAAE,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAYP,GAAG,CAAC,CAACK,CAAC,IAChBF,GAAKE,EAAE,EAAGA,EAAE,EAAE,SAAS,EAAGA,EAAE,EAAGA,EAAE,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECxBD,OAAS,MAAAG,GAAgB,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,OAAAC,GAAK,UAAAC,OAAc,eAE/D,IAAMC,GAAUP,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC1C,IAAMC,EAAIR,GAAK,EAAG,SAAS,EAAE,MAAM,GAAG,EAChC,EAAIA,GAAK,GAAK,CAAC,EAAE,MAAM,GAAG,EAC1BS,EAAOT,GAAKO,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,MAAM,EACpCG,EAAIP,GAAMF,GAAKQ,EAAMA,EAAK,IAAI,CAAC,CAAC,EAAE,IAAIR,GAAKO,EAAGA,CAAC,CAAC,CAAC,EAC9C,IAAI,EAAG,EACP,MAAM,GAAG,EACZG,EAAIV,GAAKQ,EAAK,IAAIC,EAAE,GAAG,IAAIF,CAAC,CAAC,EAAGC,EAAK,IAAIC,EAAE,GAAG,IAAI,EAAG,EAAE,IAAIF,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EACzEI,EAAQR,GAAIO,EAAE,GAAIA,EAAE,EAAE,EACtBE,EAAQT,GAAIO,EAAE,GAAIA,EAAE,EAAE,EAC5B,OAAON,GAAOJ,GAAKU,EAAE,GAAG,IAAIT,GAAM,EAAG,CAAC,EAAGQ,EAAE,GAAG,IAAI,CAAC,CAAC,EAAGT,GAAKU,EAAE,GAAG,IAAIT,GAAM,EAAG,CAAC,EAAGQ,EAAE,EAAE,EAAGE,EAAM,SAASC,CAAK,CAAC,CACtH,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,ECjBD,OAAS,MAAAC,GAAiB,QAAAC,GAAM,SAAAC,GAAO,UAAAC,GAAQ,SAAAC,GAAO,SAAAC,GAAO,OAAAC,GAAK,OAAAC,GAAK,OAAAC,GAAK,OAAAC,OAAW,eAGvF,IAAMC,GAAmB,CAACC,EAAaC,EAAqBC,IAAiB,CACrE,IAAMC,EAAKH,EAAM,IAAI,EAAG,EAAE,MAAM,IAAI,EAC9BI,EAASC,GAAOF,CAAE,EAAE,MAAM,QAAQ,EAClCG,EAAQC,GAAMJ,EAAG,EAAGA,EAAG,CAAC,EAAE,MAAM,OAAO,EACvCK,EAAeC,GAAMC,EAAM,EAAE,IAAIT,CAAY,EAAE,MAAM,cAAc,EACnEU,EAAgBL,EAAM,IAAIE,EAAa,IAAII,GAAMN,EAAM,IAAIE,CAAY,CAAC,CAAC,CAAC,EAAE,MAAM,eAAe,EACjGK,EAAaC,GAAIH,EAAeH,EAAa,IAAIG,CAAa,CAAC,EAAE,MAAM,YAAY,EACnFI,EAAMC,GAAKC,GAAIJ,EAAW,IAAIX,CAAK,CAAC,EAAGgB,GAAIL,EAAW,IAAIX,CAAK,CAAC,CAAC,EAC9D,IAAIE,CAAM,EACV,IAAI,EAAG,EACP,MAAM,KAAK,EACpB,OAAOe,GAAIL,GAAIC,EAAKA,EAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAGA,EAAI,OAAO,CAAC,CAC7D,EAEaK,GAAeC,GAAG,CAAC,CAACrB,EAAOC,EAAcC,CAAK,IAC5CH,GAAiBC,EAAOC,EAAcC,CAAK,CACzD,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,eAAgB,KAAM,OAAQ,EACtC,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EAEYoB,GAAsBD,GAAG,CAAC,CAACrB,CAAK,IAC9BD,GAAiBC,EAAOS,GAAM,CAAC,EAAGA,GAAM,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYc,GAAoBF,GAAG,CAAC,CAACrB,EAAOC,CAAY,IAC1CF,GAAiBC,EAAOC,EAAcQ,GAAM,CAAC,CAAC,CAC5D,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,MAAO,EAC9B,CAAE,KAAM,eAAgB,KAAM,OAAQ,CAC9C,CACR,CAAC,EC9CD,OAAS,MAAAe,OAAiB,eAEnB,IAAMC,GAAiBD,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IAAoC,CAC/E,IAAMC,EAAkBH,EAAM,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,iBAAiB,EACnE,OAAOC,EACE,IAAIC,CAAG,EACP,IAAI,CAAC,EACL,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAIE,EAAgB,IAAID,EAAI,IAAID,CAAI,CAAC,CAAC,CAAC,CAC1E,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EChBD,OAAS,MAAAG,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAaC,GAAG,CAAC,CAAC,CAAC,IACjBC,GAAKC,GAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAG,EAAE,EAAG,EAAE,CAAC,CACnD,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAiBH,GAAG,CAAC,CAACI,CAAC,IACrBL,GAAWM,GAAOD,CAAC,CAAC,CAClC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAkBN,GAAG,CAAC,CAACI,EAAGG,CAAC,IACzBJ,GAAeC,EAAE,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAsBR,GAAG,CAAC,CAACI,EAAGG,CAAC,IAC7BJ,GAAeC,EAAE,IAAIG,CAAC,CAAC,CACrC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAcT,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAKC,GAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYQ,GAAkBV,GAAG,CAAC,CAACI,CAAC,IACtBK,GAAYJ,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYO,GAAcX,GAAG,CAAC,CAAC,CAAC,IAClBC,GAAK,EAAE,EAAGC,GAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAG,EAAE,EAAG,EAAE,CAAC,CACtD,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYU,GAAkBZ,GAAG,CAAC,CAACI,CAAC,IACtBO,GAAYN,GAAOD,CAAC,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECxED,OAAS,MAAAS,GAAiB,QAAAC,GAAM,QAAAC,OAAY,eAErC,IAAMC,GAAeH,GAAG,CAAC,CAACI,EAAGC,EAAGC,EAAGC,EAAG,EAAGC,CAAC,IAAwD,CACjG,IAAMC,EAAQJ,EAAE,IAAID,CAAC,EAAE,MAAM,OAAO,EAC9BM,EAASH,EAAE,IAAID,CAAC,EAAE,MAAM,QAAQ,EAChCK,EAAQH,EAAE,IAAI,CAAC,EAAE,MAAM,OAAO,EAEpC,OAAOP,GACCC,GAAKO,EAAM,WAAW,EAAE,IAAI,CAAC,EAAG,EAAG,EAAG,CAAC,EACvCP,GAAK,EAAGQ,EAAO,WAAW,EAAE,IAAI,CAAC,EAAG,EAAG,CAAC,EACxCR,GAAK,EAAG,EAAGS,EAAM,WAAW,EAAE,IAAI,EAAE,EAAG,CAAC,EACxCT,GAAKG,EAAE,IAAID,CAAC,EAAE,IAAIK,CAAK,EAAE,OAAO,EAAGF,EAAE,IAAID,CAAC,EAAE,IAAII,CAAM,EAAE,OAAO,EAAGF,EAAE,IAAI,CAAC,EAAE,IAAIG,CAAK,EAAE,OAAO,EAAG,CAAC,CACzG,CACR,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECxBD,OAAS,MAAAC,GAA0B,WAAAC,GAAS,SAAAC,GAAa,QAAAC,GAAM,OAAAC,GAAK,QAAAC,GAAM,MAAAC,GAAI,SAAAC,OAAa,eAE3F,IAAMC,GAAwBN,GAAM,GAAI,EAAE,SAAS,uBAAuB,EACpEO,GAA8BP,GAAM,EAAE,EAAE,SAAS,6BAA6B,EAEvEQ,GAAwBV,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACxE,IAAMC,EAAgBb,GAAQU,EAAKE,CAAC,EAAE,EAAE,MAAM,eAAe,EACvDE,EAAiBP,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIE,CAAa,EAAE,MAAM,gBAAgB,EAChG,OAAOD,EAAE,IAAIE,CAAc,CACnC,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAuBhB,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACvE,IAAMI,EAAYR,GAA4B,IAAI,EAAG,EAAE,MAAM,WAAW,EAClES,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDE,EAAqBnB,GAAM,CAAC,EAAE,MAAM,oBAAoB,EACxDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAExF,OAAAlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcH,CAAkB,EAAG,IAAM,CACtDd,GAAM,CACd,CAAC,EACDc,EAAmB,UAAUD,CAAW,EACxCG,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAEMA,CACf,CAAC,EAAE,UAAU,CACL,KAAM,uBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYG,GAAwB1B,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CACxE,IAAMI,EAAYR,GAA4B,MAAM,WAAW,EACzDS,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDE,EAAqBnB,GAAM,CAAC,EAAE,MAAM,oBAAoB,EACxDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAExFlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcH,CAAkB,EAAG,IAAM,CACtDd,GAAM,CACd,CAAC,EACDc,EAAmB,UAAUD,CAAW,EACxCG,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAED,IAAMI,EAAgBL,EAAK,IAAI,EAAG,EAAE,MAAM,eAAe,EACnDM,EAAcR,EAAY,IAAI,EAAG,EAAE,MAAM,aAAa,EAC5D,OAAAG,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,EAExCvB,GAAKD,GAAI,CAAC,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CAChBE,EAAc,UAAU,EAAG,EAC3BC,EAAY,UAAU,EAAG,EACzBJ,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,EAE7DjB,GAAGkB,EAAkB,YAAYH,CAAkB,EAAG,IAAM,CACpDE,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,CAChD,CAAC,EAAE,KAAK,IAAM,CACNL,EAAqB,UAAUI,CAAa,EAC5CN,EAAmB,UAAUO,CAAW,CAChD,CAAC,CACT,CAAC,EAEML,CACf,CAAC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYM,GAA2B7B,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAA6B,CAC3E,IAAMI,EAAYR,GAA4B,MAAM,WAAW,EACzDS,EAAYhB,GAAM,EAAE,EAAE,MAAM,WAAW,EACvCiB,EAAYF,EAAU,IAAIC,EAAWN,EAAE,IAAIT,GAAK,EAAG,EAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,WAAW,EAClFiB,EAAclB,GAAM,CAAC,EAAE,IAAIiB,CAAS,EAAE,MAAM,aAAa,EACzDW,EAAiB5B,GAAM,CAAC,EAAE,MAAM,gBAAgB,EAChDoB,EAAOd,GAAsB,IAAII,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAIO,CAAS,EAAE,MAAM,MAAM,EAC3EI,EAAuBV,EAAE,MAAM,sBAAsB,EACrDW,EAAoBvB,GAAQU,EAAKY,CAAoB,EAAE,EAAE,MAAM,mBAAmB,EAClFQ,EAAcR,EAAqB,MAAM,aAAa,EAE5DlB,GAAKD,GAAI,EAAE,EAAG,CAAC,CAAE,EAAAqB,CAAE,IAAM,CACjBnB,GAAGkB,EAAkB,cAAcM,CAAc,EAAG,IAAM,CAClDvB,GAAM,CACd,CAAC,EACDuB,EAAe,UAAUV,CAAW,EACpCW,EAAY,OAAOR,CAAoB,EACvCA,EAAqB,UAAUD,CAAI,EACnCE,EAAkB,OAAOvB,GAAQU,EAAKY,CAAoB,EAAE,CAAC,CACrE,CAAC,EAED,IAAMS,EAAQR,EAAkB,IAAIM,CAAc,EAAE,MAAM,OAAO,EAC3DG,EAAQhC,GAAQU,EAAKoB,CAAW,EAAE,EAAE,IAAID,CAAc,EAAE,IAAIV,CAAW,EAAE,MAAM,OAAO,EACtFc,EAASF,EAAM,IAAIA,EAAM,IAAIC,CAAK,CAAC,EAAE,MAAM,QAAQ,EAMzD,OALuBF,EACd,IAAIG,CAAM,EACV,IAAIX,EAAqB,IAAIrB,GAAM,CAAC,EAAE,IAAIgC,CAAM,CAAC,CAAC,EAClD,MAAM,gBAAgB,CAGvC,CAAC,EAAE,UAAU,CACL,KAAM,2BACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAkBnC,GAAG,CAAC,CAACW,EAAKC,EAAGC,CAAC,IAC9BgB,GAAyBlB,EAAKC,EAAGC,CAAC,CAChD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,WAAY,EACjC,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECpJD,OAAS,MAAAuB,GAAiB,QAAAC,GAAM,OAAAC,GAAK,SAAAC,OAAa,eAE3C,IAAMC,GAAcJ,GAAG,CAAC,CAACK,EAAKC,EAAQC,EAAMC,CAAG,IAA0C,CACxF,IAAMC,EAAIN,GAAM,CAAC,EACR,IAAID,GAAIG,EAAI,IAAI,CAAC,CAAC,CAAC,EACnB,MAAM,GAAG,EACZK,EAAKP,GAAM,CAAC,EAAE,IAAII,EAAK,IAAIC,CAAG,CAAC,EAAE,MAAM,IAAI,EAEjD,OAAOP,GACCQ,EAAE,IAAIH,CAAM,EAAG,EAAG,EAAG,EACrB,EAAGG,EAAG,EAAG,EACT,EAAG,EAAGD,EAAI,IAAID,CAAI,EAAE,IAAIG,CAAE,EAAG,GAC7B,EAAG,EAAGP,GAAM,CAAC,EAAE,IAAIK,CAAG,EAAE,IAAID,CAAI,EAAE,IAAIG,CAAE,EAAG,CACnD,CACR,CAAC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,SAAU,KAAM,OAAQ,EAChC,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,ECvBD,OAAS,MAAAC,GAAuB,OAAAC,GAAK,OAAAC,GAAK,QAAAC,GAAM,QAAAC,OAAY,eAErD,IAAMC,GAAaL,GAAG,CAAC,CAACM,CAAK,IACrBH,GAAKF,GAAIK,EAAM,CAAC,EAAGJ,GAAII,EAAM,CAAC,CAAC,EAAE,IAAIA,EAAM,CAAC,CAC1D,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,QAAS,KAAM,MAAO,CAAC,CAChD,CAAC,EAEYC,GAAeP,GAAG,CAAC,CAACQ,EAAGC,EAAKC,CAAK,IAAmC,CACzE,IAAMC,EAAIH,EAAE,IAAIP,GAAIS,CAAK,CAAC,EAAE,IAAIR,GAAIO,CAAG,CAAC,EAAE,MAAM,GAAG,EAC7CG,EAAIJ,EAAE,IAAIN,GAAIQ,CAAK,CAAC,EAAE,IAAIR,GAAIO,CAAG,CAAC,EAAE,MAAM,GAAG,EAC7CI,EAAIL,EAAE,IAAIP,GAAIQ,CAAG,CAAC,EAAE,MAAM,GAAG,EACnC,OAAOL,GAAKO,EAAGC,EAAGC,CAAC,CAC3B,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,MAAO,KAAM,OAAQ,EAC7B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECvBD,OAAS,MAAAC,GAAU,OAAAC,GAAK,QAAAC,GAAM,QAAAC,OAAY,eAEnC,IAAMC,GAAQJ,GAAG,CAAC,CAACK,EAAGC,CAAC,IAA0B,CAChD,IAAMC,EAAaL,GAAKG,EAAE,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAGD,EAAE,CAAC,EACzFG,EAAaN,GAAKG,EAAE,EAAGA,EAAE,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,EAC/F,OAAOL,GAAIM,EAAYC,EAAYL,GAAKG,EAAE,EAAGA,EAAE,CAAC,CAAC,CACzD,CAAC,EAAE,UAAU,CACL,KAAM,QACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECbD,OAAS,MAAAG,GAAiB,QAAAC,GAAM,SAAAC,GAAO,SAAAC,OAAa,eAE7C,IAAMC,GAASJ,GAAG,CAAC,CAACK,EAAIC,EAAMC,CAAK,IAAiC,CACnE,IAAMC,EAAgBD,EAAM,IAAID,EAAK,CAAC,EAAE,MAAM,eAAe,EACvDG,EAAIR,GAAK,CAAC,EAAE,IAAIK,CAAI,EAAE,MAAM,GAAG,EAC/BI,EAAOT,GAAKC,GAAMM,CAAa,EAAGF,EAAK,EAAE,IAAIJ,GAAMM,EAAc,IAAIC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,MAAM,EAC/F,OAAON,GAAME,EAAG,IAAIK,CAAI,EAAE,IAAID,CAAC,CAAC,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,SACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,OAAQ,KAAM,MAAO,EAC7B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,ECfD,OAAS,MAAAE,GAAgB,QAAAC,GAAM,aAAAC,GAAW,SAAAC,OAAa,eAEhD,IAAMC,GAAMJ,GAAG,CAAC,CAAC,EAAGK,EAAGC,CAAC,IAChBL,GAAK,EAAGI,EAAGC,CAAC,CAC1B,EAAE,UAAU,CACL,KAAM,MACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYC,GAAgBP,GAAG,CAAC,CAACM,EAAGE,CAAE,IAA0B,CACzD,IAAMC,EAAIP,GAAUC,GAAMK,EAAIF,CAAC,CAAC,EAAE,MAAM,GAAG,EACrCD,EAAIF,GAAMG,EAAGG,CAAC,EAAE,MAAM,GAAG,EAC/B,OAAOL,GAAIK,EAAGJ,EAAGC,CAAC,CAC1B,CAAC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,ECzBD,OAAS,MAAAI,GAAiB,QAAAC,OAAY,eAI/B,IAAMC,GAAaC,GAAG,CAAC,CAACC,EAAUC,EAAQC,CAAE,IAA0B,CACrE,IAAMC,EAAIC,GAAOJ,EAAUC,EAAQC,CAAE,EAAE,MAAM,EAC7C,OAAOG,GAAcF,EAAGH,CAAQ,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,aACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,KAAM,KAAM,MAAO,CACnC,CACR,CAAC,EAEYM,GAAiBP,GAAG,CAAC,CAACC,EAAUC,EAAQM,CAAI,IAA2B,CAC5E,IAAMJ,EAAIK,GAAWR,EAAUC,EAAQM,CAAI,EAAE,MAAM,EACnD,OAAOF,GAAcF,EAAGH,CAAQ,CACxC,CAAC,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYS,GAAkBV,GAAG,CAAC,CAACC,EAAUC,CAAM,IACrCH,GAAWE,EAAUC,EAAQS,GAAK,EAAG,EAAG,CAAC,CAAC,CACxD,EAAE,UAAU,CACL,KAAM,kBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,WAAY,KAAM,MAAO,EACjC,CAAE,KAAM,SAAU,KAAM,MAAO,CACvC,CACR,CAAC,ECvCD,OAAS,MAAAC,GAAiB,QAAAC,OAAY,eAG/B,IAAMC,GAAiBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC3BC,GAASF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC7C,EAAE,UAAU,CACL,KAAM,iBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAEYE,GAAgBL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACvBH,GAAeE,EAAGC,EAAGI,GAAK,EAAG,CAAC,CAC5C,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAeP,GAAG,CAAC,CAACC,EAAGO,CAAK,IAAoB,CACrD,IAAMC,EAAWH,GAAKE,EAAM,EAAE,OAAO,EAAGA,EAAM,CAAC,EAAE,MAAM,EACvD,OAAOF,GAAKL,EAAE,IAAIQ,CAAQ,EAAGR,EAAE,IAAIO,CAAK,CAAC,CACjD,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,QAAS,KAAM,MAAO,CACtC,CACR,CAAC,ECpCD,OAAS,MAAAE,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAuB,QAAAC,OAAY,eAIrC,IAAMC,GAAoBC,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EAAE,IAAID,EAAE,IAAIE,CAAC,CAAC,EAAE,IAAIA,CAAC,CAC9C,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYE,GAAcL,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAID,CAAC,CAChC,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAGYK,GAAoBN,GAAG,CAAC,CAACC,EAAGC,EAAGC,CAAC,IAC9BC,GAAUF,CAAC,EACT,IAAIK,GAAKN,EAAE,IAAIE,CAAC,EAAG,CAAC,CAAC,EACrB,IAAI,IAAIA,CAAC,CACzB,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,EAGYK,GAAcR,GAAG,CAAC,CAACC,EAAGC,CAAC,IACrBE,GAAUF,CAAC,EAAE,IAAIK,GAAKN,EAAG,CAAC,CAAC,EAAE,GAC3C,EAAE,UAAU,CACL,KAAM,cACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,ECrDD,OAAS,MAAAQ,GAAU,QAAAC,OAAY,eAExB,IAAMC,GAAUF,GAAG,CAAC,CAACG,EAAIC,CAAC,IAClBH,GAAKE,EAAG,EAAGA,EAAG,EAAE,IAAIC,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,EAAE,IAAIA,EAAE,EAAE,IAAI,EAAG,CAAC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,CAC5F,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC,ECXD,OAAS,MAAAC,OAA6B,eAKtC,SAASC,GAASC,EAAa,CACvB,OAAOA,EAAE,IAAI,EAAG,EAAE,IAAI,EAAG,CACjC,CAEO,IAAMC,GAAgBH,GAAG,CAAC,CAACI,CAAC,IACpBH,GAASG,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,QACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,OAAQ,CAAC,CAC7C,CAAC,EAEYC,GAAeL,GAAG,CAAC,CAACE,CAAC,IACnBD,GAASC,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYI,GAAeN,GAAG,CAAC,CAACE,CAAC,IACnBD,GAASC,CAAC,CACxB,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EC/BD,OAAS,MAAAK,OAAiB,eAEnB,IAAMC,GAAcD,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IACjCF,EAAM,IAAIC,CAAI,EAAE,IAAIC,CAAG,EAAE,IAAIA,EAAI,IAAID,CAAI,EAAE,IAAID,CAAK,CAAC,CACnE,EAAE,UAAU,CACL,KAAM,cACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,EAEYG,GAA0BL,GAAG,CAAC,CAACE,EAAOC,EAAMC,CAAG,IAC7CF,EAAM,IAAIC,CAAI,EAAE,IAAIA,EAAK,IAAIC,CAAG,CAAC,CAC/C,EAAE,UAAU,CACL,KAAM,0BACN,KAAM,QACN,OAAQ,CACA,CAAE,KAAM,QAAS,KAAM,OAAQ,EAC/B,CAAE,KAAM,OAAQ,KAAM,OAAQ,EAC9B,CAAE,KAAM,MAAO,KAAM,OAAQ,CACrC,CACR,CAAC,ECxBD,OAAS,MAAAE,GAAgB,QAAAC,GAAM,SAAAC,GAAO,QAAAC,OAAY,eAG3C,IAAMC,GAAeC,GAAG,CAAC,CAACC,CAAC,IACnBC,GAAKC,GAAMF,EAAE,EAAGA,EAAE,CAAC,EAAE,IAAIG,CAAE,EAAGC,GAAKJ,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAIC,GAAKI,GAAQF,CAAE,CAAC,CACpF,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,ECTD,OAAS,MAAAG,GAAuB,QAAAC,GAAM,QAAAC,GAAM,QAAAC,GAAM,SAAAC,GAAO,SAAAC,GAAO,OAAAC,OAAW,eAEpE,IAAMC,GAAUP,GAAG,CAAC,CAACQ,CAAE,IAAoB,CAC1C,IAAMC,EAAcD,EAAG,IAAIP,GAAKC,GAAK,EAAG,kBAAc,EAAGA,GAAK,EAAG,kBAAa,CAAC,CAAC,EAAE,MAAM,EAClFQ,EAAIP,GAAKM,EAAaA,EAAY,OAAO,CAAC,EAAE,MAAM,EAClDE,EAAIP,GAAMM,CAAC,EAAE,MAAM,EACnBE,EAAcP,GAAMK,CAAC,EAAE,MAAM,EAE7BG,EAAQP,GAAIM,EAAY,GAAIA,EAAY,EAAE,EAC1CE,EAAQR,GAAIM,EAAY,GAAIA,EAAY,EAAE,EAE1CG,EAAYF,EAAM,SAASC,CAAK,EAChCE,EAAYb,GAAKS,EAAY,GAAIV,GAAK,EAAG,CAAC,EAAE,IAAIS,EAAE,EAAE,CAAC,EAG3D,OAFmBR,GAAKS,EAAY,GAAIV,GAAK,EAAG,CAAC,EAAE,IAAIS,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAE1D,OAAOK,EAAWD,CAAS,CACrD,CAAC,EAAE,UAAU,CACL,KAAM,UACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,KAAM,KAAM,MAAO,CAAC,CAC7C,CAAC,EAEYE,GAAgBjB,GAAG,CAAC,CAACQ,EAAIU,CAAK,IAC5BX,GAAQC,EAAG,IAAIU,CAAK,CAAC,CACnC,EAAE,UAAU,CACL,KAAM,gBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,KAAM,KAAM,MAAO,EAC3B,CAAE,KAAM,QAAS,KAAM,OAAQ,CACvC,CACR,CAAC,EC/BD,OAAS,MAAAC,GAAuB,OAAAC,GAAK,OAAAC,GAAK,QAAAC,OAAY,eAK/C,IAAMC,GAAeC,GAAG,CAAC,CAAC,EAAGC,CAAI,IAA2B,CAC3D,IAAMC,EAAIC,GAAIC,GAAI,EAAE,EAAG,CAAC,EAAE,IAAIA,GAAI,EAAE,EAAG,CAAC,CAAC,CAAC,EACjC,IAAIA,GAAI,EAAE,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EACtB,IAAI,GAAI,EACjB,OAAOC,GAAKC,GAAc,EAAE,GAAIJ,EAAE,IAAID,CAAI,CAAC,EAAG,EAAE,EAAE,CAC1D,CAAC,EAAE,UAAU,CACL,KAAM,eACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,OAAQ,KAAM,OAAQ,CACtC,CACR,CAAC,EAEYM,GAAsBP,GAAG,CAAC,CAAC,CAAC,IAAoB,CACrD,IAAME,EAAIC,GAAIC,GAAI,EAAE,EAAG,CAAC,EAAE,IAAIA,GAAI,EAAE,EAAG,CAAC,CAAC,CAAC,EACjC,IAAIA,GAAI,EAAE,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EACtB,IAAI,GAAI,EACjB,OAAOC,GAAKC,GAAc,EAAE,GAAIJ,EAAE,IAAIM,EAAM,CAAC,EAAG,EAAE,EAAE,CAC5D,CAAC,EAAE,UAAU,CACL,KAAM,sBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYC,GAAmBT,GAAG,CAAC,CAACU,CAAC,IACvBH,GAAoBI,GAAOD,CAAC,CAAC,CAC3C,EAAE,UAAU,CACL,KAAM,mBACN,KAAM,OACN,OAAQ,CAAC,CAAE,KAAM,IAAK,KAAM,MAAO,CAAC,CAC5C,CAAC,EAEYE,GAAoBZ,GAAG,CAAC,CAACU,EAAGG,CAAC,IAC3BJ,GAAiBC,EAAE,IAAIG,CAAC,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,oBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,OAAQ,CACnC,CACR,CAAC,EAEYC,GAAwBd,GAAG,CAAC,CAACU,EAAGG,CAAC,IAC/BJ,GAAiBC,EAAE,IAAIG,CAAC,CAAC,CACvC,EAAE,UAAU,CACL,KAAM,wBACN,KAAM,OACN,OAAQ,CACA,CAAE,KAAM,IAAK,KAAM,MAAO,EAC1B,CAAE,KAAM,IAAK,KAAM,MAAO,CAClC,CACR,CAAC","names":["Fn","pow","sin","float","EIGHTH_PI","QTR_PI","HALF_PI","PI","TWO_PI","TAU","INV_PI","INV_SQRT_TAU","SQRT_HALF_PI","PHI","EPSILON","GOLDEN_RATIO","GOLDEN_RATIO_CONJUGATE","GOLDEN_ANGLE","DEG2RAD","RAD2DEG","backIn","Fn","pow","sin","PI","Fn","float","backInOut","Fn","f","float","g","backIn","Fn","float","backOut","Fn","float","backIn","Fn","float","Fn","float","bounceOut","a","b","c","ca","cb","cc","t2","bounceIn","Fn","float","bounceOut","Fn","float","bounceInOut","Fn","float","bounceOut","Fn","circularIn","Fn","circularInOut","early","late","Fn","float","circularOut","Fn","cubicIn","Fn","cubicInOut","early","late","Fn","cubicOut","f","Fn","sin","pow","float","elasticIn","Fn","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticInOut","Fn","t2","t2minus1","sin","HALF_PI","pow","float","Fn","sin","pow","float","elasticOut","Fn","sin","float","HALF_PI","pow","Fn","exponentialIn","Fn","exponentialInOut","isZeroOrOne","early","late","result","Fn","exponentialOut","Fn","linearIn","Fn","linearInOut","Fn","linearOut","Fn","quadraticIn","Fn","select","quadraticInOut","p","Fn","quadraticOut","Fn","quarticIn","Fn","select","quarticInOut","early","late","Fn","quarticOut","it","Fn","quinticIn","Fn","select","quinticInOut","early","late","Fn","quinticOut","Fn","sin","sineIn","Fn","sin","HALF_PI","Fn","cos","sineInOut","Fn","cos","PI","Fn","sin","sineOut","Fn","sin","HALF_PI","Fn","min","vec3","blendAdd","base","blend","blendAddVec3","blendAddVec3Opacity","opacity","Fn","blendAverage","base","blend","blendAverageVec3","blendAverageVec3Opacity","opacity","Fn","vec3","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hsv","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","H","S","V","rgb2hsvVec4","Fn","vec4","Fn","float","vec3","hue2rgb","hue","R","G","B","hsv2rgb","Fn","hsv","hue2rgb","hsv2rgbVec4","vec4","blendColor","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendColorOpacity","opacity","Fn","vec3","max","select","blendColorBurn","base","blend","blendColorBurnVec3","blendColorBurnVec3Opacity","opacity","Fn","vec3","min","select","blendColorDodge","base","blend","blendColorDodgeVec3","blendColorDodgeVec3Opacity","opacity","Fn","vec3","min","blendDarken","base","blend","blendDarkenVec3","blendDarkenVec3Opacity","opacity","Fn","abs","blendDifference","base","blend","blendDifferenceVec3","blendDifferenceVec3Opacity","opacity","Fn","blendExclusion","base","blend","blendExclusionVec3","blendExclusionVec3Opacity","opacity","Fn","Fn","vec3","min","select","blendReflect","base","blend","blendReflectVec3","blendReflectVec3Opacity","opacity","blendGlow","Fn","base","blend","blendReflect","blendGlowVec3","blendReflectVec3","blendGlowVec3Opacity","opacity","Fn","Fn","vec3","If","blendOverlay","base","blend","blendOverlayVec3","blendOverlayVec3Opacity","opacity","blendHardLight","Fn","base","blend","blendOverlay","blendHardLightVec3","blendOverlayVec3","blendHardLightVec3Opacity","opacity","Fn","vec3","If","float","Fn","vec3","If","blendVividLight","Fn","base","blend","If","blendColorBurn","blendColorDodge","blendVividLightVec3","vec3","blendVividLightVec3Opacity","opacity","blendHardMix","Fn","base","blend","If","blendVividLight","float","blendHardMixVec3","vec3","blendHardMixVec3Opacity","opacity","Fn","vec3","blendHue","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","result","vec3","hsv2rgb","blendHueVec3Opacity","opacity","Fn","vec3","max","blendLighten","base","blend","blendLightenVec3","blendLightenVec3Opacity","opacity","Fn","vec3","max","blendLinearBurn","base","blend","blendLinearBurnVec3","blendLinearBurnVec3Opacity","opacity","Fn","vec3","blendLuminosity","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendLuminosityOpacity","opacity","Fn","blendMultiply","base","blend","blendMultiplyVec3","blendMultiplyVec3Opacity","opacity","Fn","vec3","min","blendLinearDodge","base","blend","blendLinearDodgeVec3","blendLinearDodgeVec3Opacity","opacity","Fn","vec3","If","blendLinearLight","Fn","base","blend","If","blendLinearBurn","blendLinearDodge","blendLinearLightVec3","vec3","blendLinearLightVec3Opacity","opacity","Fn","vec3","abs","float","blendNegation","base","blend","blendNegationVec3","blendNegationVec3Opacity","opacity","Fn","vec3","min","max","float","blendPhoenix","base","blend","blendPhoenixVec3","blendPhoenixVec3Opacity","opacity","Fn","vec3","If","blendPinLight","Fn","base","blend","If","blendDarken","blendLighten","blendPinLightVec3","vec3","blendPinLightVec3Opacity","opacity","Fn","vec3","blendSaturation","Fn","base","blend","baseHSV","rgb2hsv","blendHSV","hsv2rgb","vec3","blendSaturationOpacity","opacity","Fn","vec3","float","blendScreenFloat","base","blend","blendScreen","blendScreenOpacity","opacity","Fn","If","sqrt","vec3","vec4","blendSoftLightFloat","base","blend","blendSoftLight","blendSoftLightVec3","blendSoftLightVec4","blendSoftLightVec3Opacity","opacity","Fn","max","vec3","blendSubtractFloat","base","blend","blendSubtract","blendSubtractVec3","blendSubtractVec3Opacity","opacity","Fn","vec4","compositeXorFloat","src","dst","compositeXor","compositeXorVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeXorVec4","resultRgb","resultA","Fn","vec4","compositeDestinationAtopFloat","src","dst","compositeDestinationAtop","compositeDestinationAtopVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationAtopVec4","resultRgb","resultA","Fn","vec4","compositeDestinationInFloat","src","dst","compositeDestinationIn","compositeDestinationInVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationInVec4","resultRgb","resultA","Fn","vec4","compositeDestinationOutFloat","src","dst","compositeDestinationOut","compositeDestinationOutVec3","_srcColor","dstColor","srcAlpha","_dstAlpha","compositeDestinationOutVec4","srcColor","resultRgb","resultA","Fn","vec4","compositeDestinationOverFloat","src","dst","compositeDestinationOver","compositeDestinationOverVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeDestinationOverVec4","resultRgb","resultA","Fn","vec4","compositeSourceAtopFloat","src","dst","compositeSourceAtop","compositeSourceAtopVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceAtopVec4","resultRgb","resultA","Fn","vec4","compositeSourceInFloat","src","dst","compositeSourceIn","compositeSourceInVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceInVec4","resultRgb","resultA","Fn","vec4","compositeSourceOutFloat","src","dst","compositeSourceOut","compositeSourceOutVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceOutVec4","resultRgb","resultA","Fn","vec4","compositeSourceOverFloat","src","dst","compositeSourceOver","compositeSourceOverVec3","srcColor","dstColor","srcAlpha","dstAlpha","compositeSourceOverVec4","resultRgb","resultA","Fn","float","vec3","cmyk2rgb","cmyk","invK","Fn","float","vec4","GAMMA","gamma2linear","v","gamma2linearVec4","Fn","float","vec4","hsl2rgb","Fn","hsl","rgb","hue2rgb","C","float","hsl2rgbVec4","vec4","Fn","atan2","sqrt","vec3","vec4","lab2lch3","lab","chroma","hue","lab2lch4","lch","lab2lch","Fn","vec4","Fn","float","select","vec3","vec4","CIE_WHITE","lab2xyz","lab","fy","fx","fz","threshold","delta","factor","convertX","convertY","convertZ","lab2xyzVec4","Fn","mat3","vec4","XYZ2RGB","xyz2rgb","xyz","xyz2rgbVec4","lab2rgb","Fn","lab","xyz2rgb","lab2xyz","lab2rgbVec4","vec4","Fn","vec3","vec4","lch2lab3","lch","radians","lch2lab4","lab","lch2lab","Fn","vec4","lch2rgb3","Fn","lch","lab2rgb","lch2lab","lch2rgb4","rgb","vec4","lch2rgb","Fn","float","vec4","INV_GAMMA","linear2gamma","v","linear2gammaVec4","Fn","mat3","vec4","OKLAB2RGB_A","OKLAB2RGB_B","oklab2rgb3","oklab","lms","oklab2rgb4","rgb","oklab2rgb","Fn","float","vec4","step","Fn","min","mmin2","v","mmin3","mmin4","mmin","rgb2cmyk","Fn","rgb","k","mmin3","float","invK","cmy","step","vec4","Fn","float","vec3","vec4","select","HCV_EPSILON","rgb2hcv","rgb","P_true","P_false","P_final","Q_true","Q_false","Q_final","C","H","rgb2hcvVec4","Fn","float","vec3","vec4","HSL_EPSILON","float","rgb2hsl","Fn","rgb","HCV","rgb2hcv","L","S","vec3","rgb2hslVec4","vec4","Fn","float","vec4","select","HUE_EPSILON","rgb2hue","c","K","P_true","P_false","P","Q_true","Q_false","Q","d","rgb2hueVec4","Fn","vec4","Fn","mat3","vec4","RGB2XYZ","rgb2xyz","rgb","rgb2xyzVec4","Fn","vec3","vec4","step","mix","xyz2lab","xyz","n","c0","c1","v","L","A","B","xyz2labVec4","rgb2lab","Fn","rgb","xyz2lab","rgb2xyz","rgb2labVec4","vec4","Fn","vec4","rgb2lch3","Fn","rgb","lab2lch","rgb2lab","rgb2lch4","lch","vec4","rgb2lch","Fn","mat3","vec3","vec4","RGB2OKLAB_A","RGB2OKLAB_B","rgb2oklab3","rgb","lms","rgb2oklab4","oklab","rgb2oklab","Fn","float","vec3","vec4","select","SRGB_EPSILON","rgb2srgbFloat","c","rgb2srgbVec3","rgb","rgb2srgbVec4","rgb2srgb","Fn","mat3","vec4","RGB2YIQ","rgb2yiq3","rgb","rgb2yiq4","yiq","rgb2yiq","Fn","mat3","vec4","RGB2YUV_HDTV","RGB2YUV_SDTV","rgb2yuv3","rgb","rgb2yuv4","yuv","rgb2yuvSDTV","rgb2yuv","Fn","float","vec3","vec4","select","SRGB_EPSILON","srgb2rgbFloat","v","srgb2rgbVec3","srgb","srgb2rgbVec4","srgb2rgb","Fn","mat3","vec4","YIQ2RGB","yiq2rgb3","yiq","yiq2rgb4","rgb","yiq2rgb","Fn","mat3","vec4","YUV2RGB_HDTV","YUV2RGB_SDTV","yuv2rgb3","yuv","yuv2rgb4","rgb","yuv2rgbSDTV","yuv2rgb","Fn","float","vec2","length","clamp","min","step","If","Fn","clamp","dot","length","cross","lineSDF2D","st","a","b","b_to_a","to_a","h","lineSDF3D","p","lineSDF","ARROWS_TILE_SIZE","float","arrowsTileCenterCoord","Fn","pos","arrows","p","v","resolution","pScaled","mag_v","length","If","dir_v","clamp","vScaled","shaft","lineSDF","head1","vec2","head2","head","min","step","arrowsSimple","Fn","vec3","vec4","Fn","Fn","smoothstep","Fn","length","vec2","dFdx","dFdy","smoothstep","aastep","threshold","value","derivative","afwidth","fillWithEdge","Fn","x","size","edge","smoothstep","fill","aastep","line","Fn","st","a","b","thickness","fill","lineSDF","axis","Fn","st","M","pos","thickness","rta","vec4","center","axisX","aX","vec3","line","axisY","aY","axisZ","aZ","Fn","float","Fn","smoothstep","clamp","strokeWithEdge","Fn","x","size","w","edge","d","smoothstep","clamp","stroke","aastep","bridgeFloat","Fn","c","d","s","w","float","stroke","bridgeVec2","strokeMask","bridgeVec3","bridgeVec4","bridge","Fn","int","vec2","ivec2","ivec4","floor","pow","If","Fn","modi","x","y","xf","yf","quotient","CHAR_SIZE","vec2","CHAR_TOTAL","CHAR","CHAR_DATA","charLUT","Fn","index","result","ivec4","ifChain","If","int","i","char","uv","charCode","charCoord","ivec2","floor","col","fourLines","yMod4","modi","exponent","divisor","pow","currentLine","pixelDivisor","Fn","Fn","vec2","circleSDF","v","center","circleSDFBasic","circleFill","Fn","st","size","fill","circleSDFBasic","circleStroke","strokeWidth","stroke","circle","circleWithStroke","Fn","vec2","vec4","float","Fn","vec2","vec3","scale2d","st","s","scale2dWithCenter","center","scale2dVec","scale3d","Fn","vec3","If","int","colors","macbeth","index","result","ifChain","i","Fn","vec2","min","Fn","vec2","rectSDFBasic","st","normalizedSt","rectSDF","s","rectSDFUniform","rectSDFRounded","p","b","r","d","crossSDF","Fn","st","s","size","vec2","min","rectSDF","Fn","float","rectStroke","Fn","st","size","strokeWidth","stroke","rectSDF","float","rectStrokeUniform","rectSDFUniform","rectFill","fill","rectFillUniform","rect","colorCheckerTile","Fn","uv","st","scale2dVec","vec2","vec4","colorCheckerMacbeth","t","index","color","macbeth","rectFill","fill","crossSDF","float","stroke","rectSDF","alpha","colorChecker","Fn","vec2","vec4","texture","step","float","vec3","Fn","floor","nearest","v","res","offset","pickerSize","vec2","crosshairSize","float","colorPickerSample","Fn","tex","pos","texResolution","nearestPos","nearest","texture","colorPickerDisplay","st","pickerPos","pickedColor","displayPos","distToDisplay","inPatch","step","crosshair","borderWidth","inBorder","result","vec4","vec3","colorPicker","Fn","If","Loop","Break","float","vec2","int","DIGITS_SIZE","DIGITS_DECIMALS","DIGITS_VALUE_OFFSET","digitsCore","st","value","nDecDigit","adjustedSt","absValue","biggestDigitIndex","counter","nIntDigits","digit","digitIndex","digitValue","pos","bin","pixel","digitsFloat","digitsInt","digits","digitsVec2","v","rta","i","digitsVec3","digitsVec4","digitsMat2","matrix","pos00","pos01","pos10","pos11","Fn","float","vec3","vec4","mix","flipFloat","v","pct","flipVec3","flipVec4","flip","Fn","Fn","hexSDF","st","transformed","hexFill","Fn","st","size","fill","hexSDF","hexStroke","strokeWidth","stroke","hex","Fn","vec2","step","vec4","DIGITS_SIZE","vec2","DIGITS_VALUE_OFFSET","matrix","Fn","st","M","rta","vec4","size","step","digitsMat2","Fn","vec2","vec3","vec4","float","step","DIGITS_SIZE","vec2","DIGITS_VALUE_OFFSET","pointWithColor","Fn","st","pos","color","radius","rta","vec4","st_p","circleFill","size","step","digitsVec2","point","vec3","float","Fn","Fn","triSDF","st","centered","triSDFCenter","center","triFill","Fn","st","size","fill","triSDF","triStroke","strokeWidth","stroke","tri","struct","vec3","AABB","Fn","aabbCentroid","box","Fn","aabbContain","box","point","Fn","diagonal","box","Fn","expand","Fn","box","value","AABB","Fn","vec2","aabbIntersect","box","rayOrigin","rayDir","tMin","tMax","t1","t2","tNear","tFar","Fn","max","abs","square","Fn","box","diag","diagonal","center","maxDim","max","abs","AABB","Fn","length","cross","area","tri","Fn","length","cross","dot","vec3","float","barycentricFromVec3","Fn","a","b","c","daa","dot","dab","dbb","dca","dcb","denom","y","z","vec3","float","barycentric","tri","barycentricFromPosition","pos","f0","f1","f2","areaValue","area","length","cross","Fn","triangleCentroid","tri","Fn","dot","length","cross","normalize","max","min","float","If","closestPointWithNormal","Fn","tri","triNormal","pos","b","c","ab","ac","dot","ap","bcoords","barycentricFromVec3","If","bc","n","length","t","max","float","min","ca","closestPoint","a","normal","normalize","cross","Fn","cross","dot","triangleContain","tri","pos","localA","localB","localC","u","v","w","Fn","cross","dot","sign","sqrt","min","Fn","lengthSq","v","distanceSq","Fn","tri","pos","a","b","c","v21","p1","v32","p2","v13","p3","nor","cross","s1","sign","dot","s2","s3","signSum","edge1","lengthSq","edge2","edge3","edgeDistance","min","planeDistance","sqrt","Fn","cross","dot","float","struct","vec3","Ray","triangleIntersect","tri","rayOrigin","rayDir","v1v0","v2v0","rov0","point","q","d","u","v","t","isOutside","triangleIntersectRay","ray","Fn","cross","normalize","normal","tri","Fn","length","sign","dot","signedDistanceWithNormal","Fn","tri","triNormal","pos","nearest","closestPointWithNormal","delta","distance","length","sign","dot","signedDistance","normal","struct","vec3","Triangle","Fn","vec2","vec3","vec4","Fn","fun","x","mod289","mod289Vec2","mod289Vec3","mod289Vec4","Fn","fun","v","permute","Fn","mod289","permuteVec2","mod289Vec2","permuteVec3","mod289Vec3","permuteVec4","mod289Vec4","Fn","taylorInvSqrt","r","Fn","quintic","v","v3","inner","cnoiseVec2","Fn","P","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","cnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","cnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","float","Fn","vec2","vec3","vec4","float","Fn","vec4","vec3","float","grad4","j","ip","ones","p","s","snoiseVec2","Fn","v","C","vec4","i","x0","i1","vec2","x12","mod289Vec2","p","permuteVec3","vec3","m","float","x","h","ox","a0","g","snoiseVec3","D","l","i2","x1","x2","x3","mod289Vec3","permuteVec4","ns","j","x_","y_","y","b0","b1","s0","s1","sh","a1","p0","p1","p2","p3","norm","taylorInvSqrt","snoiseVec4","i0","isX","isYZ","i3","x4","mod289Vec4","j0","permute","j1","ip","grad4","p4","m0","m1","snoise2","s","snoise3Vec3","s2","snoise3Vec4","curlVec2","Fn","p","float","dx","vec2","dy","p_x0","snoise2","p_x1","p_y0","p_y1","x","y","divisor","curlVec3","vec3","dz","snoise3Vec3","p_z0","p_z1","z","curlVec4","vec4","snoise3Vec4","Fn","float","Loop","int","Fn","vec2","vec3","float","Fn","vec2","vec3","vec4","float","RANDOM_SCALE","random","x","randomVec2","st","randomVec3","pos","randomVec4","random2Float","p","p3","random2Vec2","random2Vec3","random3Float","random3Vec2","random3Vec3","random4Float","p4","random4Vec2","random4Vec3","random4Vec4","Fn","vec2","vec3","vec4","float","srandom","x","srandomVec2","st","srandomVec3","pos","srandomVec4","dot_product","srandom2Vec2","k","srandom3Vec3","p","srandom2Vec2Tiled","tileLength","srandom3Vec3Tiled","Fn","cubic","v","cubicVec2","cubicVec3","cubicVec4","cubicFloatSlopes","slope0","slope1","b","c","v2","v3","cubicVec2Slopes","cubicVec3Slopes","cubicVec4Slopes","gnoise","Fn","x","i","f","random","float","gnoiseVec2","st","randomVec2","b","vec2","c","d","u","cubicVec2","gnoiseVec3","p","quintic","randomVec3","vec3","gnoiseVec3Tiled","tileLength","srandom3Vec3Tiled","gnoise3","FBM_OCTAVES","int","FBM_SCALE_SCALAR","FBM_AMPLITUDE_INITIAL","FBM_AMPLITUDE_SCALAR","fbmVec2","Fn","st","value","float","amplitude","coord","Loop","snoiseVec2","fbmVec3","pos","posVar","snoiseVec3","fbmVec3Tiled","p","tileLength","persistence","lacunarity","total","normalization","pVar","noiseValue","gnoiseVec3Tiled","fbm","Fn","vec3","float","gerstnerWave","Fn","_uv","_dir","_steepness","_wavelength","_time","k","PI","c","float","d","f","a","vec3","Fn","vec2","vec3","vec4","noised","Fn","p","i","f","u","du","ga","srandom2Vec2","vec2","gb","gc","gd","va","vb","vc","vd","vec3","noisedVec3","pos","w","srandom3Vec3","ge","gf","gg","gh","ve","vf","vg","vh","noiseValue","gradientValue","vec4","Fn","vec2","vec3","vec4","pnoise","Fn","P","rep","Pi","vec4","Pf","mod289Vec4","ix","iy","fx","fy","gx","permuteVec4","gy","tx","g00","vec2","g10","g01","g11","norm","taylorInvSqrt","n00","n10","n01","n11","fade_xy","quintic","n_x","pnoiseVec3","Pi0","Pi1","vec3","mod289Vec3","Pf0","Pf1","iz0","iz1","ixy","ixy0","ixy1","gx0","gy0","gz0","sz0","gx1","gy1","gz1","sz1","g000","g100","g010","g110","g001","g101","g011","g111","norm0","norm1","n000","n100","n010","n110","n001","n101","n011","n111","fade_xyz","n_z","n_yz","pnoiseVec4","iw0","iw1","ixy00","ixy01","ixy10","ixy11","gx00","gy00","gz00","gw00","sw00","gx01","gy01","gz01","gw01","sw01","gx10","gy10","gz10","gw10","sw10","gx11","gy11","gz11","gw11","sw11","g0000","g1000","g0100","g1100","g0010","g1010","g0110","g1110","g0001","g1001","g0101","g1101","g0011","g1011","g0111","g1111","norm00","norm01","norm10","norm11","n0000","n1000","n0100","n1100","n0010","n1010","n0110","n1110","n0001","n1001","n0101","n1101","n0011","n1011","n0111","n1111","fade_xyzw","n_0w","n_1w","n_zw","n_yzw","Fn","vec2","vec3","vec4","mat3","If","float","psrdnoise2D","Fn","x","period","alpha","uv","vec2","i0","f0","cmp","o1","i1","i2","v0","v1","v2","x0","x1","x2","iu","vec3","iv","If","xw","yw","hash","mod289Vec3","psi","gx","gy","g0","g1","g2","w","w2","w4","gdotx","n","dw","dn0","dn1","dn2","gradient","psrdnoise3D","M","mat3","Mi","uvw","g_","l_","g","l","o2","i3","v3","x3","vx","vec4","vy","vz","permuteVec4","theta","sz","Ct","St","sz_prime","gz","Sp","Cp","px","py","pz","Ctp","qx","qy","qz","Sa","Ca","g3","w3","dn3","psrdnoise","float","psrdnoise2","psrdnoisePeriod","psrdnoiseAlpha","psrdnoise3","psrdnoise3Period","psrdnoise3Alpha","Fn","vec2","vec3","float","If","voronoi","Fn","uv","time","i_uv","f_uv","rta","vec3","neighbor_m1m1","vec2","point_m1m1","random2Vec2","float","TAU","dist_m1m1","If","neighbor_0m1","point_0m1","dist_0m1","neighbor_1m1","point_1m1","dist_1m1","neighbor_m10","point_m10","dist_m10","neighbor_00","point_00","dist_00","neighbor_10","point_10","dist_10","neighbor_m11","point_m11","dist_m11","neighbor_01","point_01","dist_01","neighbor_11","point_11","dist_11","voronoiVec2","p","voronoiVec3","Fn","vec2","vec3","int","float","Loop","voronoise","Fn","p","u","v","k","float","i","f","a","vec2","Loop","int","yLoop","yOffset","xLoop","xOffset","g","o","random3Vec2","vec3","d","w","voronoiseVec3","zLoop","zOffset","random3Vec3","Fn","Loop","int","float","mat2","Fn","mat2","rotate2d","r","c","s","wavelet","Fn","p","phase","k","d","float","s","m","Loop","int","i","q","a","randomVec2","rotate2d","mat2","waveletVec3K","waveletVec3","waveletVec2Phase","waveletVec2","Fn","Loop","int","float","vec2","vec3","If","Fn","abs","distance","max","pow","DIST_MINKOWSKI_P","distEuclidean","a","b","distManhattan","distManhattan3","distManhattan4","distChebychev","distChebychev3","distChebychev4","distMinkowski","p","distMinkowski3","distMinkowski4","dist","worley2Vec2","Fn","p","n","f","distF1","float","distF2","off1","vec2","pos1","off2","pos2","Loop","int","i","j","g","o","random2Vec2","point","distEuclidean","If","worleyVec2","worley2Vec3","vec3","k","random3Vec3","d","worleyVec3","Fn","dFdx","dFdy","fract","float","select","Fn","map","v","iMin","iMax","mapRange","oMin","oMax","aafloor","Fn","x","afwidth","dFdx","dFdy","fx","fract","idx","select","mapRange","float","Fn","dFdx","dFdy","fract","length","mix","smoothstep","vec2","select","float","nyquist","x","width","cutoffStart","cutoffEnd","f","aafract","afwidth","fx","idx","v","aafractVec2","Fn","dFdx","dFdy","length","vec2","floor","abs","Fn","mix","smoothstep","float","nyquist","x","width","f","aamirror","Fn","x","afwidth","length","vec2","dFdx","dFdy","v","abs","floor","nyquist","Fn","select","absi","x","Fn","step","adaptiveThreshold","v","blur_v","b","adaptiveThresholdSimple","Fn","bump","x","k","bumpSimple","Fn","cubicMix","Fn","a","b","t","cubic","cubicMixVec2","cubicVec2","cubicMixVec3","cubicVec3","cubicMixVec4","cubicVec4","Fn","decimate","v","p","Fn","cos","fwidth","smoothstep","fcos","Fn","x","w","fwidth","cos","smoothstep","TWO_PI","Fn","frac","x","Fn","float","select","gain","x","k","conditionValue","Fn","dot","gaussian","d","s","dotProduct","variance","Fn","float","vec2","vec3","uint","hammersley","index","numSamples","tof","bits","hemisphereCosSample","u","phi","PI","cosTheta2","cosTheta","sinTheta","Fn","max","float","highPass","v","b","Fn","all","inside","x","min","max","insideFloat","insideVec2","v","insideVec3","insideAABB","aabb","Fn","float","invCubic","v","Fn","invQuartic","v","Fn","float","inverse","m","Fn","mirror","x","f","m","fm","Fn","max","mmax2","v","mmax3","mmax4","mmax","Fn","mix","max","step","clamp","mmix","a","b","c","mmix3","pct","mmix4","d","Fn","vec4","mod2","p","s","halfS","pShifted","c","wrapped","mod2Cell","mod2Wrap","Fn","fract","vec3","vec4","float","PackUpscale","PackFactors","ShiftRight8","pack","v","r","Fn","parabola","x","k","Fn","pow2","v","Fn","pow3","x","Fn","pow5","x","v2","Fn","pow7","x","v2","Fn","float","powFast","a","b","Fn","mat3","vec3","float","quat2mat3","q","qxx","qyy","qzz","qxz","qxy","qyw","qzw","qyz","qxw","Fn","Fn","mat4","vec4","toMat4","m","quat2mat4","Fn","q","toMat4","quat2mat3","Fn","vec4","quatAdd","a","b","Fn","vec4","quatConj","q","Fn","vec4","quatDiv","q","s","Fn","vec4","quatIdentity","Fn","Fn","quatLengthSq","q","quatInverse","Fn","q","quatDiv","quatConj","quatLengthSq","Fn","quatLength","Fn","q","quatLengthSq","Fn","If","float","quatLerp","qa","qb","t","cosHalfTheta","adjustedQb","absCosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","Fn","vec4","quatMul","q1","q2","quatMulScalar","q","s","Fn","vec4","quatNeg","q","Fn","quatNorm","Fn","q","quatDiv","quatLength","Fn","vec4","quatSub","a","b","Fn","float","quartic","v","v2","Fn","float","mat3","vec3","rotate3d","a","r","axis","s","c","oc","col1","col2","col3","Fn","mat3","vec3","rotate3dX","r","c","s","Fn","mat3","vec3","rotate3dY","r","c","s","Fn","mat3","vec3","rotate3dZ","r","c","s","Fn","float","mat4","vec4","rotate4d","a","r","axis","s","c","oc","col1","col2","col3","col4","Fn","mat4","vec4","rotate4dX","r","c","s","Fn","mat4","vec4","rotate4dY","r","c","s","Fn","mat4","vec4","rotate4dZ","r","c","s","Fn","float","MEDIUMP_FLT_MAX","saturateMediump","x","Fn","mat2","scale2d","s","scale2dVec","scale2dXY","x","y","Fn","mat3","scale3d","s","scale3dVec","Fn","mat4","scale4d","s","scale4dXYZ","x","y","z","scale4dXYZW","w","scale4dVec3","scale4dVec4","Fn","smootherstep","Fn","a","b","v","saturated","quintic","Fn","mat3","toMat3","m","Fn","mat4","translate4d","x","y","z","t","Fn","dot","vec3","vec4","float","UnpackDownscale","PackFactors","UnpackFactors","unpack8","v","f","unpack16","unpack32","unpack64","unpack128","unpack256","unpackBase","base","base3","unpack","unpackDefault","Fn","vec3","vec2","mat3","float","If","arrowSDF","v","start","end","baseRadius","tipRadius","tipHeight","t","l","k","column1","column2","column3","q","e","h","d1","d2","d3","d4","s","Fn","vec3","boxFrameSDF","p","b","e","p_abs","q","term1","term2","term3","Fn","capsuleSDF","p","a","b","r","pa","ba","h","Fn","vec2","If","coneSDF","p","c","q","d1","d2","coneSDFVec2Height","h","w","a","b","k","d","s","coneSDFRadii","r1","r2","Fn","vec3","Fn","boxSDF","p","d","boxSDFSize","b","cubeSDF","Fn","p","s","boxSDFSize","vec3","Fn","vec2","select","float","cylinderSDF","p","h","d","cylinderSDFHeight","cylinderSDFHeightRadius","r","cylinderSDFCaps","a","b","pa","ba","baba","paba","x","y","x2","y2","Fn","vec3","PHI","dodecahedronSDF","p","n","pAbs","b","c","dodecahedronSDFRadius","radius","pScaled","a","Fn","ellipsoidSDF","p","r","k0","k1","Fn","atan2","flowerSDF","st","N","centered","r","a","v","Fn","float","gearSDF","Fn","st","b","N","e","float","stCentered","s","mapRange","d","omega","l","r","Fn","vec2","heartSDF","st","centered","r","normalized","shape","Fn","vec2","hexPrismSDF","p","h","q","d1","d2","Fn","vec3","icosahedronSDF","p","radius","n1","n2","normalizedP","a","b","c","d","Fn","vec2","float","Loop","If","Break","juliaSDF","st","center","c","r","transformed","z","n","maxIter","i","juliaSDFSimple","Fn","vec2","mat2","float","Loop","Break","If","kochSDF","st","center","N","r3","w","m","i","kochSDFSimple","Fn","vec3","vec2","linkSDF","p","le","r1","r2","q","Fn","vec2","vec3","float","Loop","If","Break","Fn","atan2","length","acos","vec2","vec3","cart2polar","st","cart2polar3D","r","phi","theta","mandelbulbSDF","Fn","st","zeta","m","dz","float","maxiterations","iterations","r","dr","Loop","sphericalZ","cart2polar3D","newx","newy","newz","vec3","If","Break","vec2","Fn","octahedronSDF","p","s","pAbs","octahedronSDFExact","m","o","oSum","Fn","vec3","vec2","octogonPrismSDF","p","r","h","k","d","Fn","vec4","opElongateVec2","p","h","opElongateVec3","opElongateVec4","q","Fn","vec2","opExtrude","p","sdf","h","w","Fn","mix","float","opIntersection","d1","d2","opIntersectionSmooth","k","h","Fn","opOnion","d","h","Fn","mod","opRepeatVec2","p","s","opRepeatVec3","c","opRepeatVec2Limited","lima","limb","opRepeatVec3Limited","Fn","vec2","opRevolve","p","w","Fn","opRound","d","h","Fn","vec4","opSubtraction","d1","d2","opSubtractionVec4","opSubtractionSmooth","k","h","opSubtractionSmoothVec4","result","Fn","vec4","opUnion","d1","d2","opUnionSmooth","k","h","opUnionSmoothVec4","result","Fn","planeSDF","p","planeSDFNormal","planePoint","planeNormal","Fn","atan2","polySDF","Fn","st","V","p","atan2","PI","r","v","TAU","polySDFFloat","Fn","vec3","vec2","select","float","pyramidSDF","p","h","m2","pxz","pxzFinal","q","s","t","a","b","Fn","atan2","raysSDF","Fn","st","N","centered","atan2","TAU","Fn","vec2","rhombSDF","Fn","st","triSDF","vec2","Fn","atan2","spiralSDF","st","t","centeredSt","r","a","Fn","vec2","atan2","step","float","starSDF","st","V","s","starSDFWithScale","starSDFSimple","Fn","centeredSt","seg","atan2","TAU","finalA","step","vec2","scaledSt","scale2dWithCenter","float","Fn","vec2","cos","sin","pow","abs","float","superShapeSDFCenter","Fn","st","center","s","b","n1","n2","n3","m","polar","cart2polar","d","theta","t1","abs","float","cos","pow","t2","sin","t3","r","q","vec2","superShapeSDF","a","Fn","vec2","tetrahedronSDF","p","h","q","y","d1","d2","Fn","triPrismSDF","p","h","q","Fn","sphereSDF","p","sphereSDFRadius","s","Fn","vec2","select","torusSDF","p","t","torusSDFSector","sc","ra","rb","px","k","Fn","vec2","float","vesicaSDF","st","w","offset","circle1","circle2","vesicaSDFDefault","Fn","aspect","st","s","result","Fn","mat2","atan2","cos","sin","mod","vec2","BRACKETING_ANGLE_DELTA","PI","bracketingAxis0","Fn","dir","angle","atan2","TWO_PI","fractional","mod","angle0","vec2","cos","sin","bracketingAxis1","vAxis0","mat2","bracketingBlend","Fn","mod","floor","fract","Fn","vec4","fract","floor","sqTile","st","sqTileScale","scale","brickTile","Fn","result","mod","floor","fract","brickTileVec2","st","sqTile","brickTileFloat","s","brickTileVec2Scale","Fn","center","v","centerFloat","x","centerVec2","centerVec3","Fn","mod","abs","checkerTile","Fn","c","mod","abs","checkerTileVec2","v","sqTile","checkerTileFloat","s","checkerTileVec2Scale","Fn","select","depth2viewZ","depth","near","far","depth2viewZOrthographic","depth2viewZCombined","orthographic","perspective","ortho","Fn","texture","float","vec3","int","Loop","If","Fn","vec3","mat3","lookAtForward","forward","up","zaxis","xaxis","yaxis","lookAt","eye","target","lookAtRoll","roll","lookAtBasic","DISPLACE_DEPTH","float","DISPLACE_PRECISION","DISPLACE_MAX_ITERATIONS","int","displace","Fn","tex","ro","rd","t","prev","vec3","curr","lastD","hmap","df","Loop","texture","If","displaceUV","uv","lookAtBasic","Fn","vec3","cos","sin","sqrt","float","equirect2xyz","Fn","uv","phi","PI","theta","TWO_PI","dir","vec3","cos","sin","multiplier","sqrt","float","Fn","mat3","Fn","vec4","mat4","translateMat3","m","translation","eulerView","Fn","position","euler","rotZ","rotate3dZ","rotX","rotate3dX","rotY","rotate3dY","identity","mat3","rotation","translateMat3","Fn","vec3","sqrt","cos","float","fisheye2xyz","Fn","uv","ndc","R","sqrt","dir","vec3","phi","PI","cos","multiplier","float","Fn","vec2","vec3","vec4","flipYVec2","v","flipYVec3","flipYVec4","Fn","vec2","vec4","float","floor","dot","select","hexTile","st","s","stYX","i","f","dotXY","dotZW","Fn","vec2","float","length","atan2","floor","min","max","cos","sin","kaleidoscopeCore","coord","segmentCount","phase","uv","radius","length","angle","atan2","segmentAngle","float","TWO_PI","adjustedAngle","floor","finalAngle","min","kuv","vec2","cos","sin","max","kaleidoscope","Fn","kaleidoscopeDefault","kaleidoscopeCount","Fn","linearizeDepth","depth","near","far","normalizedDepth","Fn","vec4","mirrorTile","Fn","vec4","mirror","mirrorTileVec2","v","sqTile","mirrorTileFloat","s","mirrorTileVec2Scale","mirrorXTile","mirrorXTileVec2","mirrorYTile","mirrorYTileVec2","Fn","mat4","vec4","orthographic","l","r","b","t","f","width","height","depth","Fn","texture","float","vec3","int","Loop","If","Break","PARALLAXMAPPING_SCALE","PARALLAXMAPPING_NUMSEARCHES","parallaxMappingSimple","tex","V","T","initialHeight","texCoordOffset","parallaxMappingSteep","minLayers","maxLayers","numLayers","layerHeight","currentLayerHeight","dtex","currentTextureCoords","heightFromTexture","i","parallaxMappingRelief","deltaTexCoord","deltaHeight","parallaxMappingOcclusion","curLayerHeight","prevTCoords","nextH","prevH","weight","parallaxMapping","Fn","mat4","tan","float","perspective","fov","aspect","near","far","f","nf","Fn","cos","sin","vec2","vec3","polar2cart","polar","polar2cart3D","r","phi","theta","x","y","z","Fn","mix","vec2","step","ratio","v","s","wideAspect","tallAspect","Fn","vec2","floor","fract","sprite","st","grid","index","adjustedIndex","f","cell","Fn","mat3","normalize","cross","tbn","b","n","tbnFromNormal","up","t","Fn","vec3","lookAtView","Fn","position","target","up","m","lookAt","translateMat3","lookAtViewRoll","roll","lookAtRoll","lookAtViewBasic","vec3","Fn","vec2","rotate2DCenter","Fn","v","r","c","rotate2d","rotate2DBasic","vec2","rotate2DAxis","xAxis","negYAxis","Fn","vec4","rotateXVec4Center","Fn","v","r","c","rotate4dX","rotateXVec4","rotateXVec3Center","vec4","rotateXVec3","Fn","vec4","rotateYVec4Center","Fn","v","r","c","rotate4dY","rotateYVec4","rotateYVec3Center","vec4","rotateYVec3","Fn","vec4","rotateZVec4Center","Fn","v","r","c","rotate4dZ","rotateZVec4","rotateZVec3Center","vec4","rotateZVec3","Fn","vec2","unratio","st","s","Fn","uncenter","v","uncenterFloat","x","uncenterVec2","uncenterVec3","Fn","viewZ2depth","viewZ","near","far","viewZ2depthOrthographic","Fn","vec2","atan2","acos","xyz2equirect","Fn","d","vec2","atan2","PI","acos","TWO_PI","Fn","mat2","vec2","vec4","floor","fract","dot","triTile","st","transformed","f","i","fFractional","dotXY","dotZW","condition","trueValue","triTileScaled","scale","Fn","mod","abs","vec4","windmillTile","Fn","turn","a","abs","mod","vec4","rotate2DBasic","windmillTileDefault","TWO_PI","windmillTileVec2","v","sqTile","windmillTileFloat","s","windmillTileVec2Scale"]}
|