@flighthq/geometry 0.3.0 → 0.3.1-next.1041.35b950c

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.
Files changed (125) hide show
  1. package/dist/aabb.d.ts +1 -0
  2. package/dist/aabb.d.ts.map +1 -1
  3. package/dist/aabb.js +58 -38
  4. package/dist/aabb.js.map +1 -1
  5. package/dist/boundingSphere.d.ts.map +1 -1
  6. package/dist/boundingSphere.js +3 -2
  7. package/dist/boundingSphere.js.map +1 -1
  8. package/dist/capsule.d.ts +6 -5
  9. package/dist/capsule.d.ts.map +1 -1
  10. package/dist/capsule.js +38 -15
  11. package/dist/capsule.js.map +1 -1
  12. package/dist/contract.d.ts +1 -0
  13. package/dist/contract.d.ts.map +1 -1
  14. package/dist/contract.js +1 -0
  15. package/dist/contract.js.map +1 -1
  16. package/dist/enableGeometryPoolGuards.d.ts +4 -0
  17. package/dist/enableGeometryPoolGuards.d.ts.map +1 -0
  18. package/dist/enableGeometryPoolGuards.js +32 -0
  19. package/dist/enableGeometryPoolGuards.js.map +1 -0
  20. package/dist/frustum.d.ts +2 -1
  21. package/dist/frustum.d.ts.map +1 -1
  22. package/dist/frustum.js +4 -1
  23. package/dist/frustum.js.map +1 -1
  24. package/dist/geometryPoolGuards.d.ts +6 -0
  25. package/dist/geometryPoolGuards.d.ts.map +1 -0
  26. package/dist/geometryPoolGuards.js +7 -0
  27. package/dist/geometryPoolGuards.js.map +1 -0
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/matrix.d.ts +12 -9
  33. package/dist/matrix.d.ts.map +1 -1
  34. package/dist/matrix.js +103 -106
  35. package/dist/matrix.js.map +1 -1
  36. package/dist/matrix3.d.ts +17 -2
  37. package/dist/matrix3.d.ts.map +1 -1
  38. package/dist/matrix3.js +88 -44
  39. package/dist/matrix3.js.map +1 -1
  40. package/dist/matrix3Pool.d.ts.map +1 -1
  41. package/dist/matrix3Pool.js +6 -0
  42. package/dist/matrix3Pool.js.map +1 -1
  43. package/dist/matrix4.d.ts +23 -10
  44. package/dist/matrix4.d.ts.map +1 -1
  45. package/dist/matrix4.js +74 -53
  46. package/dist/matrix4.js.map +1 -1
  47. package/dist/matrix4Pool.d.ts.map +1 -1
  48. package/dist/matrix4Pool.js +6 -0
  49. package/dist/matrix4Pool.js.map +1 -1
  50. package/dist/matrixPool.d.ts.map +1 -1
  51. package/dist/matrixPool.js +6 -0
  52. package/dist/matrixPool.js.map +1 -1
  53. package/dist/obb.d.ts +4 -2
  54. package/dist/obb.d.ts.map +1 -1
  55. package/dist/obb.js +164 -88
  56. package/dist/obb.js.map +1 -1
  57. package/dist/quaternion.d.ts +7 -4
  58. package/dist/quaternion.d.ts.map +1 -1
  59. package/dist/quaternion.js +40 -25
  60. package/dist/quaternion.js.map +1 -1
  61. package/dist/quaternionPool.d.ts.map +1 -1
  62. package/dist/quaternionPool.js +6 -0
  63. package/dist/quaternionPool.js.map +1 -1
  64. package/dist/ray3d.d.ts +5 -4
  65. package/dist/ray3d.d.ts.map +1 -1
  66. package/dist/ray3d.js +23 -8
  67. package/dist/ray3d.js.map +1 -1
  68. package/dist/rectangle.d.ts.map +1 -1
  69. package/dist/rectangle.js +66 -43
  70. package/dist/rectangle.js.map +1 -1
  71. package/dist/rectanglePool.d.ts.map +1 -1
  72. package/dist/rectanglePool.js +6 -0
  73. package/dist/rectanglePool.js.map +1 -1
  74. package/dist/transform2d.d.ts.map +1 -1
  75. package/dist/transform2d.js +5 -2
  76. package/dist/transform2d.js.map +1 -1
  77. package/dist/typedarray.js +3 -6
  78. package/dist/typedarray.js.map +1 -1
  79. package/dist/vector2.d.ts.map +1 -1
  80. package/dist/vector2.js +44 -26
  81. package/dist/vector2.js.map +1 -1
  82. package/dist/vector2Pool.d.ts.map +1 -1
  83. package/dist/vector2Pool.js +6 -0
  84. package/dist/vector2Pool.js.map +1 -1
  85. package/dist/vector3.d.ts +2 -2
  86. package/dist/vector3.d.ts.map +1 -1
  87. package/dist/vector3.js +55 -37
  88. package/dist/vector3.js.map +1 -1
  89. package/dist/vector3Pool.d.ts.map +1 -1
  90. package/dist/vector3Pool.js +6 -0
  91. package/dist/vector3Pool.js.map +1 -1
  92. package/dist/vector4.d.ts +2 -2
  93. package/dist/vector4.d.ts.map +1 -1
  94. package/dist/vector4.js +66 -48
  95. package/dist/vector4.js.map +1 -1
  96. package/dist/vector4Pool.d.ts.map +1 -1
  97. package/dist/vector4Pool.js +6 -0
  98. package/dist/vector4Pool.js.map +1 -1
  99. package/package.json +4 -3
  100. package/src/aabb.test.ts +18 -0
  101. package/src/boundingSphere.test.ts +39 -0
  102. package/src/capsule.test.ts +158 -0
  103. package/src/enableGeometryPoolGuards.test.ts +121 -0
  104. package/src/frustum.test.ts +38 -0
  105. package/src/geometryPoolGuards.test.ts +16 -0
  106. package/src/matrix.test.ts +52 -6
  107. package/src/matrix3.test.ts +46 -6
  108. package/src/matrix3Pool.test.ts +11 -0
  109. package/src/matrix4.test.ts +553 -135
  110. package/src/matrix4Pool.test.ts +11 -0
  111. package/src/matrixPool.test.ts +11 -0
  112. package/src/obb.test.ts +277 -0
  113. package/src/plane.test.ts +20 -0
  114. package/src/quaternion.test.ts +222 -4
  115. package/src/quaternionPool.test.ts +12 -0
  116. package/src/ray3d.test.ts +204 -0
  117. package/src/rectangle.test.ts +58 -14
  118. package/src/rectanglePool.test.ts +11 -0
  119. package/src/transform2d.test.ts +38 -0
  120. package/src/vector2.test.ts +170 -0
  121. package/src/vector2Pool.test.ts +11 -0
  122. package/src/vector3.test.ts +210 -0
  123. package/src/vector3Pool.test.ts +11 -0
  124. package/src/vector4.test.ts +231 -0
  125. package/src/vector4Pool.test.ts +11 -0
package/dist/matrix4.js CHANGED
@@ -1,13 +1,12 @@
1
1
  import { createEntity } from '@flighthq/entity/contract';
2
2
  import { acquireIdentityMatrix4, acquireMatrix4, releaseMatrix4 } from './matrix4Pool';
3
3
  /**
4
- * Appends a matrix in world space (post-multiply).
4
+ * Appends a matrix in world space: `other` applies AFTER everything already in `source`.
5
5
  *
6
- * out = source · other
6
+ * out = other · source
7
7
  */
8
8
  export function appendMatrix4(out, source, other) {
9
- // world-space append
10
- multiplyMatrix4(out, source, other);
9
+ multiplyMatrix4(out, other, source);
11
10
  }
12
11
  /**
13
12
  * Applies a world-space rotation to the current matrix.
@@ -16,6 +15,7 @@ export function appendMatrix4(out, source, other) {
16
15
  *
17
16
  * @param radians rotation angle in radians (the @flighthq/geometry convention — convert a
18
17
  * designer-facing degree value with `DEG_TO_RAD` from `@flighthq/math`).
18
+ * @param axis assumed unit length; a longer axis scales the basis instead of rotating it.
19
19
  **/
20
20
  export function appendRotationMatrix4(out, source, radians, axis, pivotPoint) {
21
21
  const m = acquireIdentityMatrix4();
@@ -26,8 +26,8 @@ export function appendRotationMatrix4(out, source, radians, axis, pivotPoint) {
26
26
  const t2 = acquireIdentityMatrix4();
27
27
  appendTranslationMatrix4(t1, t1, -p.x, -p.y, -p.z);
28
28
  appendTranslationMatrix4(t2, t2, p.x, p.y, p.z);
29
- multiplyMatrix4(m, t1, m); // R · T(-p)
30
- multiplyMatrix4(m, m, t2); // T(p) · (R · T(-p))
29
+ multiplyMatrix4(m, m, t1); // R · T(-p)
30
+ multiplyMatrix4(m, t2, m); // T(p) · (R · T(-p))
31
31
  releaseMatrix4(t1);
32
32
  releaseMatrix4(t2);
33
33
  }
@@ -422,7 +422,10 @@ export function interpolateMatrix4(out, a, b, t) {
422
422
  }
423
423
  }
424
424
  /**
425
- * Attempts to invert the current matrix, so long as the determinant is greater than zero
425
+ * Writes the inverse of `source` and returns whether it existed. A matrix whose determinant is
426
+ * within 1e-6 of zero is treated as singular: `out` is filled with NaN and the return is `false`,
427
+ * so an ignored result cannot masquerade as a valid transform. A negative determinant is a mirror,
428
+ * not a failure, and inverts normally.
426
429
  **/
427
430
  export function inverseMatrix4(out, source) {
428
431
  const _out = out.m;
@@ -433,8 +436,7 @@ export function inverseMatrix4(out, source) {
433
436
  const EPS = 1e-6;
434
437
  const invertable = Math.abs(d) > EPS;
435
438
  if (!invertable) {
436
- // If the matrix is singular, set output to NaN or Identity
437
- _out.fill(NaN); // Set all elements to NaN (or you could set to the identity matrix, depending on your preference)
439
+ _out.fill(NaN);
438
440
  return false;
439
441
  }
440
442
  // Invertable matrix, proceed with inversion
@@ -534,12 +536,12 @@ export function multiplyMatrix4(out, a, b) {
534
536
  _out[15] = m241 * m114 + m242 * m124 + m243 * m134 + m244 * m144;
535
537
  }
536
538
  /**
537
- * Prepends a matrix in world space (pre-multiply).
539
+ * Prepends a matrix in local space: `other` applies BEFORE everything already in `source`.
538
540
  *
539
- * out = other · source
541
+ * out = source · other
540
542
  */
541
543
  export function prependMatrix4(out, source, other) {
542
- multiplyMatrix4(out, other, source);
544
+ multiplyMatrix4(out, source, other);
543
545
  }
544
546
  /**
545
547
  * Prepends rotation before all local-space transforms.
@@ -549,6 +551,7 @@ export function prependMatrix4(out, source, other) {
549
551
  *
550
552
  * @param radians rotation angle in radians (the @flighthq/geometry convention — convert a
551
553
  * designer-facing degree value with `DEG_TO_RAD` from `@flighthq/math`).
554
+ * @param axis assumed unit length; a longer axis scales the basis instead of rotating it.
552
555
  **/
553
556
  export function prependRotationMatrix4(out, source, radians, axis, pivotPoint) {
554
557
  const m = acquireIdentityMatrix4();
@@ -580,22 +583,25 @@ export function prependScaleMatrix4(out, source, xScale, yScale, zScale) {
580
583
  releaseMatrix4(m);
581
584
  }
582
585
  /**
583
- * Prepends a translation before all local-space transforms.
586
+ * Prepends a translation before all local-space transforms: the offset applies BEFORE everything
587
+ * already in `source`, so `source`'s rotation and scale carry it.
584
588
  *
585
- * This method first applies the translation (tx, ty, tz) and then applies all the transformations
586
- * (e.g., rotation, scaling, etc.) from the source matrix.
589
+ * out = source · T(x, y, z)
587
590
  */
588
591
  export function prependTranslationMatrix4(out, source, x, y, z) {
589
592
  const m = acquireIdentityMatrix4();
590
- translateMatrix4(m, m, x, y, z); // LOCAL translation matrix
591
- multiplyMatrix4(out, m, source);
593
+ translateMatrix4(m, m, x, y, z);
594
+ prependMatrix4(out, source, m);
592
595
  releaseMatrix4(m);
593
596
  }
594
597
  /**
595
598
  * Applies a local-space rotation relative to the matrix's existing orientation.
596
599
  *
600
+ * `out = source · R`
601
+ *
597
602
  * Translation is preserved.
598
603
  *
604
+ * @param axis assumed unit length; a longer axis scales the basis instead of rotating it.
599
605
  * @param radians rotation angle in radians (the @flighthq/geometry convention — convert a
600
606
  * designer-facing degree value with `DEG_TO_RAD` from `@flighthq/math`).
601
607
  */
@@ -608,28 +614,31 @@ export function rotateMatrix4(out, source, axis, radians) {
608
614
  /**
609
615
  * Applies a local-space scale relative to the matrix's existing orientation.
610
616
  *
617
+ * `out = source · S`
618
+ *
611
619
  * Translation is preserved.
612
620
  */
613
621
  export function scaleMatrix4(out, source, sx, sy, sz) {
614
622
  const a = source.m;
615
623
  const o = out.m;
616
- if (out !== source)
617
- out.m.set(source.m);
618
- if (sx !== 1) {
619
- o[0] = a[0] * sx;
620
- o[4] = a[4] * sx;
621
- o[8] = a[8] * sx;
622
- }
623
- if (sy !== 1) {
624
- o[1] = a[1] * sy;
625
- o[5] = a[5] * sy;
626
- o[9] = a[9] * sy;
627
- }
628
- if (sz !== 1) {
629
- o[2] = a[2] * sz;
630
- o[6] = a[6] * sz;
631
- o[10] = a[10] * sz;
632
- }
624
+ // Post-multiply by diag(sx, sy, sz, 1): scale column 0 by sx, column 1 by sy, column 2 by sz,
625
+ // and leave the translation column. Every element reads its own index, so `out` may alias `source`.
626
+ o[0] = a[0] * sx;
627
+ o[1] = a[1] * sx;
628
+ o[2] = a[2] * sx;
629
+ o[3] = a[3] * sx;
630
+ o[4] = a[4] * sy;
631
+ o[5] = a[5] * sy;
632
+ o[6] = a[6] * sy;
633
+ o[7] = a[7] * sy;
634
+ o[8] = a[8] * sz;
635
+ o[9] = a[9] * sz;
636
+ o[10] = a[10] * sz;
637
+ o[11] = a[11] * sz;
638
+ o[12] = a[12];
639
+ o[13] = a[13];
640
+ o[14] = a[14];
641
+ o[15] = a[15];
633
642
  }
634
643
  export function setMatrix4(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
635
644
  const _out = out.m;
@@ -737,6 +746,9 @@ export function setMatrix4Identity(out) {
737
746
  * `target`, with `up` defining the camera roll. The forward axis points from eye to target;
738
747
  * the resulting matrix transforms world-space points into view space.
739
748
  *
749
+ * Degenerate inputs still yield an orthonormal basis: a zero-length view direction (`eye` equals
750
+ * `target`) looks down +Z, and an `up` parallel to the view direction picks an arbitrary roll.
751
+ *
740
752
  * Reads all inputs into locals before writing, so it is safe when `out` is unrelated to the
741
753
  * vector inputs.
742
754
  */
@@ -760,15 +772,24 @@ export function setMatrix4LookAt(out, eye, target, up) {
760
772
  let xz = up.x * zy - up.y * zx;
761
773
  let xl = Math.sqrt(xx * xx + xy * xy + xz * xz);
762
774
  if (xl === 0) {
763
- xx = 0;
764
- xy = 0;
765
- xz = 0;
766
- }
767
- else {
768
- xx /= xl;
769
- xy /= xl;
770
- xz /= xl;
775
+ // `up` is parallel to the view direction — an overhead camera with a +Y up lands here. Reseed
776
+ // from whichever world axis is least aligned with z; zeroing the axis instead would emit a
777
+ // singular view matrix that no caller can invert.
778
+ if (Math.abs(zz) < 0.9) {
779
+ xx = -zy;
780
+ xy = zx;
781
+ xz = 0;
782
+ }
783
+ else {
784
+ xx = 0;
785
+ xy = -zz;
786
+ xz = zy;
787
+ }
788
+ xl = Math.sqrt(xx * xx + xy * xy + xz * xz);
771
789
  }
790
+ xx /= xl;
791
+ xy /= xl;
792
+ xz /= xl;
772
793
  // y axis = cross(z, x) (already orthonormal).
773
794
  const yx = zy * xz - zz * xy;
774
795
  const yy = zz * xx - zx * xz;
@@ -859,7 +880,7 @@ export function setPerspectiveMatrix4(out, fov, aspect, zNear, zFar) {
859
880
  /**
860
881
  * Applies a local-space translation to the matrix, taking into account the source matrix's rotation and scale.
861
882
  *
862
- * Translation is applied respecting using all other transformations of source.
883
+ * `out = source · T`
863
884
  */
864
885
  export function translateMatrix4(out, source, tx, ty, tz) {
865
886
  const a = source.m;
@@ -870,16 +891,6 @@ export function translateMatrix4(out, source, tx, ty, tz) {
870
891
  o[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13];
871
892
  o[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14];
872
893
  }
873
- export function transposeMatrix4(out, source) {
874
- if (out !== source)
875
- out.m.set(source.m);
876
- __swap(out, source, 1, 4);
877
- __swap(out, source, 2, 8);
878
- __swap(out, source, 3, 12);
879
- __swap(out, source, 6, 9);
880
- __swap(out, source, 7, 13);
881
- __swap(out, source, 11, 14);
882
- }
883
894
  /**
884
895
  * Transposes the matrix (swaps rows and columns).
885
896
  *
@@ -891,6 +902,16 @@ export function transposeMatrix4(out, source) {
891
902
  * - Computing inverse-transpose for normals
892
903
  * - Switching between row- and column-vector math conventions
893
904
  */
905
+ export function transposeMatrix4(out, source) {
906
+ if (out !== source)
907
+ out.m.set(source.m);
908
+ __swap(out, source, 1, 4);
909
+ __swap(out, source, 2, 8);
910
+ __swap(out, source, 3, 12);
911
+ __swap(out, source, 6, 9);
912
+ __swap(out, source, 7, 13);
913
+ __swap(out, source, 11, 14);
914
+ }
894
915
  /**
895
916
  * Writes 16 column-major elements of a Matrix4Like into a Float32Array at `offset`.
896
917
  *
@@ -1 +1 @@
1
- {"version":3,"file":"matrix4.js","sourceRoot":"","sources":["../src/matrix4.ts"],"names":[],"mappings":"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,CAAC;IAEpB,oDAAoD;IACpD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAE/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAEhH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAE/G,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC;AAED;;IAEI;AACJ,MAAM,UAAU,qBAAqB,CACnC,GAAgB,EAChB,MAA6B,EAC7B,KAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EACf,CAAC,GAAG,KAAK,CAAC,CAAC,EACX,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACd,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACvE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACvE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;IAEI;AACJ,MAAM,UAAU,sBAAsB,CACpC,GAAgB,EAChB,MAA6B,EAC7B,MAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAChB,CAAC,GAAG,MAAM,CAAC,CAAC,EACZ,CAAC,GAAG,MAAM,CAAC,CAAC,EACZ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACf,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5E,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;IAEI;AACJ,MAAM,UAAU,uBAAuB,CACrC,GAAiB,EACjB,MAA6B,EAC7B,OAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACxE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAE7E,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;AACH,CAAC;AAED;;;;IAII;AACJ,MAAM,UAAU,eAAe,CAAC,GAAgB,EAAE,CAAwB,EAAE,CAAwB;IAClG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAChB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EACZ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EACb,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhB,mDAAmD;IACnD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAA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"}
1
+ {"version":3,"file":"matrix4.js","sourceRoot":"","sources":["../src/matrix4.ts"],"names":[],"mappings":"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CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAE/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAEhH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,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,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAA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"}
@@ -1 +1 @@
1
- {"version":3,"file":"matrix4Pool.d.ts","sourceRoot":"","sources":["../src/matrix4Pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,wBAAgB,sBAAsB,IAAI,OAAO,CAIhD;AAED,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAG/C"}
1
+ {"version":3,"file":"matrix4Pool.d.ts","sourceRoot":"","sources":["../src/matrix4Pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMxD,wBAAgB,sBAAsB,IAAI,OAAO,CAIhD;AAGD,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAK/C"}
@@ -1,9 +1,12 @@
1
+ import { EntityRuntimeKey } from '@flighthq/types/contract';
2
+ import { geometryPoolReleaseGuard } from './geometryPoolGuards';
1
3
  import { createMatrix4, setMatrix4Identity } from './matrix4';
2
4
  export function acquireIdentityMatrix4() {
3
5
  const m = acquireMatrix4();
4
6
  setMatrix4Identity(m);
5
7
  return m;
6
8
  }
9
+ // Acquires without initializing the elements. Use acquireIdentityMatrix4 when a known value is required.
7
10
  export function acquireMatrix4() {
8
11
  let m;
9
12
  if (pool.length > 0) {
@@ -20,6 +23,9 @@ export function clearMatrix4Pool() {
20
23
  export function releaseMatrix4(m) {
21
24
  if (!m)
22
25
  return;
26
+ if (geometryPoolReleaseGuard !== null && pool.includes(m))
27
+ geometryPoolReleaseGuard('releaseMatrix4');
28
+ m[EntityRuntimeKey] = undefined;
23
29
  pool.push(m);
24
30
  }
25
31
  const pool = [];
@@ -1 +1 @@
1
- {"version":3,"file":"matrix4Pool.js","sourceRoot":"","sources":["../src/matrix4Pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IAC3B,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAU,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAa,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAU;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"matrix4Pool.js","sourceRoot":"","sources":["../src/matrix4Pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IAC3B,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAU,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAa,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAU;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,wBAAwB,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IACtG,CAAC,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAc,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"matrixPool.d.ts","sourceRoot":"","sources":["../src/matrixPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAUtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAG7C"}
1
+ {"version":3,"file":"matrixPool.d.ts","sourceRoot":"","sources":["../src/matrixPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMvD,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAGD,wBAAgB,aAAa,IAAI,MAAM,CAUtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAK7C"}
@@ -1,9 +1,12 @@
1
+ import { EntityRuntimeKey } from '@flighthq/types/contract';
2
+ import { geometryPoolReleaseGuard } from './geometryPoolGuards';
1
3
  import { createMatrix, setMatrixIdentity } from './matrix';
2
4
  export function acquireIdentityMatrix() {
3
5
  const m = acquireMatrix();
4
6
  setMatrixIdentity(m);
5
7
  return m;
6
8
  }
9
+ // Acquires without initializing the components. Use acquireIdentityMatrix when a known value is required.
7
10
  export function acquireMatrix() {
8
11
  let m;
9
12
  if (pool.length > 0) {
@@ -20,6 +23,9 @@ export function clearMatrixPool() {
20
23
  export function releaseMatrix(m) {
21
24
  if (!m)
22
25
  return;
26
+ if (geometryPoolReleaseGuard !== null && pool.includes(m))
27
+ geometryPoolReleaseGuard('releaseMatrix');
28
+ m[EntityRuntimeKey] = undefined;
23
29
  pool.push(m);
24
30
  }
25
31
  const pool = [];
@@ -1 +1 @@
1
- {"version":3,"file":"matrixPool.js","sourceRoot":"","sources":["../src/matrixPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAS,CAAC;IAEd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"matrixPool.js","sourceRoot":"","sources":["../src/matrixPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAS,CAAC;IAEd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,wBAAwB,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,wBAAwB,CAAC,eAAe,CAAC,CAAC;IACrG,CAAC,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAa,EAAE,CAAC"}
package/dist/obb.d.ts CHANGED
@@ -16,12 +16,14 @@ export declare function getClosestPointOnObb(out: Vector3Like, obb: Readonly<Obb
16
16
  * space, then applies the slab method against the axis-aligned half-extent box.
17
17
  *
18
18
  * Returns the entry parameter `t` (>= 0) on hit, or `-1` on miss. A ray starting inside the
19
- * OBB returns `t = 0`.
19
+ * OBB returns `t = 0`. Direction need not be normalized. A direction of zero length is not a
20
+ * ray and always returns `-1`.
20
21
  */
21
22
  export declare function intersectRay3DObb(ray: Readonly<Ray3DLike>, obb: Readonly<ObbLike>): number;
22
23
  /**
23
24
  * Returns whether an oriented bounding box overlaps an axis-aligned bounding box using the
24
- * Separating Axis Theorem with 15 candidate axes.
25
+ * Separating Axis Theorem with 15 candidate axes. An empty AABB (min > max on any axis) does
26
+ * not intersect the OBB.
25
27
  */
26
28
  export declare function isObbIntersectingAabb(obb: Readonly<ObbLike>, aabb: Readonly<AabbLike>): boolean;
27
29
  /**
package/dist/obb.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"obb.d.ts","sourceRoot":"","sources":["../src/obb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5G;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,GAAG,CAaL;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAwBjH;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CA0C1F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CA2C/F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAqCxF;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,IAAI,CAWN;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAwE1G"}
1
+ {"version":3,"file":"obb.d.ts","sourceRoot":"","sources":["../src/obb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5G;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,GAAG,CAaL;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA6CjH;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAgG1F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAkE/F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAgFxF;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,IAAI,CAWN;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CA0E1G"}