helixmind 0.2.24 → 0.2.26
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA6gE3D"}
|
|
@@ -593,15 +593,17 @@ const EDGE_COLORS = {
|
|
|
593
593
|
belongs_to: '#ff6600', part_of: '#ff6600', supersedes: '#ff4444',
|
|
594
594
|
default: '#334466',
|
|
595
595
|
};
|
|
596
|
-
//
|
|
597
|
-
//
|
|
596
|
+
// V5: OG Chandelier Brain — iconic shape + modern rendering + 3D spiral spread
|
|
597
|
+
// Shape: small/dim at top (deep archive) → large/bright at bottom (focus)
|
|
598
|
+
// Activity BOOSTS brightness (active = brighter, not dimmer)
|
|
599
|
+
// cx/cz: spiral center offsets for 3D depth
|
|
598
600
|
const SPATIAL = {
|
|
599
|
-
5: { iR:
|
|
600
|
-
4: { iR:
|
|
601
|
-
3: { iR:
|
|
602
|
-
2: { iR:
|
|
603
|
-
1: { iR:
|
|
604
|
-
6: { iR:
|
|
601
|
+
5: { iR: 8, oR: 110, yBase: 420, yS: 70, size: 18, pulse: 0.3, activity: 0.3, cx: 0, cz: 0 },
|
|
602
|
+
4: { iR: 12, oR: 180, yBase: 250, yS: 80, size: 24, pulse: 0.6, activity: 0.5, cx: 30, cz: 20 },
|
|
603
|
+
3: { iR: 18, oR: 260, yBase: 60, yS: 90, size: 30, pulse: 1.0, activity: 0.7, cx: -25, cz: 40 },
|
|
604
|
+
2: { iR: 25, oR: 340, yBase: -140, yS: 100, size: 34, pulse: 1.5, activity: 0.85, cx: -45, cz: -15 },
|
|
605
|
+
1: { iR: 35, oR: 430, yBase: -360, yS: 110, size: 40, pulse: 2.2, activity: 1.0, cx: -15, cz: -40 },
|
|
606
|
+
6: { iR: 40, oR: 470, yBase: -560, yS: 110, size: 34, pulse: 0.8, activity: 0.75, cx: 40, cz: -30 },
|
|
605
607
|
};
|
|
606
608
|
const MAX_RENDERED_EDGES = 8000; // cap for performance + clarity
|
|
607
609
|
|
|
@@ -616,10 +618,10 @@ document.body.prepend(renderer.domElement);
|
|
|
616
618
|
|
|
617
619
|
const scene = new THREE.Scene();
|
|
618
620
|
scene.background = new THREE.Color('#030308');
|
|
619
|
-
scene.fog = new THREE.FogExp2('#030308', 0.
|
|
621
|
+
scene.fog = new THREE.FogExp2('#030308', 0.00015);
|
|
620
622
|
|
|
621
623
|
const camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 12000);
|
|
622
|
-
camera.position.set(500,
|
|
624
|
+
camera.position.set(500, 300, 750);
|
|
623
625
|
|
|
624
626
|
const controls = new OrbitControls(camera, renderer.domElement);
|
|
625
627
|
controls.target.set(0, 0, 0);
|
|
@@ -634,17 +636,24 @@ controls.minPolarAngle = Math.PI * 0.15;
|
|
|
634
636
|
controls.update();
|
|
635
637
|
|
|
636
638
|
// =========== BACKGROUND STARS ===========
|
|
637
|
-
const starCount =
|
|
639
|
+
const starCount = 1200;
|
|
638
640
|
const starPos = new Float32Array(starCount * 3);
|
|
641
|
+
const starCol = new Float32Array(starCount * 3);
|
|
642
|
+
const starTc = new THREE.Color();
|
|
639
643
|
for (let i = 0; i < starCount; i++) {
|
|
640
|
-
starPos[i * 3] = (srand(i * 31) - 0.5) *
|
|
641
|
-
starPos[i * 3 + 1] = (srand(i * 37) - 0.5) *
|
|
642
|
-
starPos[i * 3 + 2] = (srand(i * 41) - 0.5) *
|
|
644
|
+
starPos[i * 3] = (srand(i * 31) - 0.5) * 6000;
|
|
645
|
+
starPos[i * 3 + 1] = (srand(i * 37) - 0.5) * 6000;
|
|
646
|
+
starPos[i * 3 + 2] = (srand(i * 41) - 0.5) * 6000;
|
|
647
|
+
// Subtle color variation in stars
|
|
648
|
+
const hue = srand(i * 53) * 0.15 + 0.55; // blue-ish range
|
|
649
|
+
starTc.setHSL(hue, 0.3 + srand(i * 59) * 0.3, 0.25 + srand(i * 61) * 0.15);
|
|
650
|
+
starCol[i * 3] = starTc.r; starCol[i * 3 + 1] = starTc.g; starCol[i * 3 + 2] = starTc.b;
|
|
643
651
|
}
|
|
644
652
|
const starGeo = new THREE.BufferGeometry();
|
|
645
653
|
starGeo.setAttribute('position', new THREE.BufferAttribute(starPos, 3));
|
|
654
|
+
starGeo.setAttribute('color', new THREE.BufferAttribute(starCol, 3));
|
|
646
655
|
const starMat = new THREE.PointsMaterial({
|
|
647
|
-
size: 1.
|
|
656
|
+
size: 1.5, vertexColors: true, transparent: true, opacity: 0.6,
|
|
648
657
|
blending: THREE.AdditiveBlending, depthWrite: false, sizeAttenuation: true
|
|
649
658
|
});
|
|
650
659
|
scene.add(new THREE.Points(starGeo, starMat));
|
|
@@ -657,14 +666,19 @@ const nodeMat = new THREE.ShaderMaterial({
|
|
|
657
666
|
attribute vec3 aColor;
|
|
658
667
|
attribute float aHighlight;
|
|
659
668
|
attribute float aPulse;
|
|
669
|
+
attribute float aActivity;
|
|
660
670
|
varying vec3 vColor;
|
|
661
671
|
varying float vAlpha;
|
|
672
|
+
varying float vActivity;
|
|
662
673
|
uniform float uTime;
|
|
663
674
|
void main(){
|
|
664
675
|
vColor = aColor;
|
|
665
|
-
|
|
676
|
+
vActivity = aActivity;
|
|
677
|
+
float breath = 1.0 + sin(uTime * aPulse + position.x * .008 + position.z * .006) * (.06 + aActivity * .10);
|
|
666
678
|
vec3 pos = position;
|
|
667
|
-
pos.y += sin(uTime * .3 + position.x * .01 + position.z * .015) * 3.0;
|
|
679
|
+
pos.y += sin(uTime * (.3 + aActivity * .2) + position.x * .01 + position.z * .015) * (2.0 + aActivity * 3.0);
|
|
680
|
+
pos.x += sin(uTime * .08 + position.z * .003) * aActivity * 2.0;
|
|
681
|
+
pos.z += cos(uTime * .06 + position.x * .003) * aActivity * 2.0;
|
|
668
682
|
vAlpha = aHighlight;
|
|
669
683
|
vec4 mv = modelViewMatrix * vec4(pos, 1.0);
|
|
670
684
|
gl_PointSize = aSize * breath * aHighlight * (500.0 / -mv.z);
|
|
@@ -674,16 +688,18 @@ const nodeMat = new THREE.ShaderMaterial({
|
|
|
674
688
|
fragmentShader: \`
|
|
675
689
|
varying vec3 vColor;
|
|
676
690
|
varying float vAlpha;
|
|
691
|
+
varying float vActivity;
|
|
677
692
|
void main(){
|
|
678
693
|
vec2 c = gl_PointCoord - vec2(.5);
|
|
679
694
|
float d = length(c);
|
|
680
695
|
if(d > .5) discard;
|
|
681
|
-
float
|
|
682
|
-
float
|
|
683
|
-
float
|
|
684
|
-
float
|
|
696
|
+
float act = 0.5 + vActivity * 0.5;
|
|
697
|
+
float core = exp(-d*d*120.0) * (0.6 + act * 0.4);
|
|
698
|
+
float g1 = exp(-d*d*20.0) * .4 * act;
|
|
699
|
+
float g2 = exp(-d*d*5.0) * .15 * act;
|
|
700
|
+
float g3 = exp(-d*d*1.5) * .05;
|
|
685
701
|
float i = core + g1 + g2 + g3;
|
|
686
|
-
gl_FragColor = vec4(vColor * (1.0 + core * .
|
|
702
|
+
gl_FragColor = vec4(vColor * (1.0 + core * .4), i * vAlpha);
|
|
687
703
|
}
|
|
688
704
|
\`,
|
|
689
705
|
transparent: true, depthWrite: false, blending: THREE.AdditiveBlending,
|
|
@@ -768,17 +784,17 @@ function rebuildScene() {
|
|
|
768
784
|
const s = SPATIAL[lv] || SPATIAL[3];
|
|
769
785
|
const c = indices.length;
|
|
770
786
|
indices.forEach((ni, j) => {
|
|
771
|
-
const angle = (j / Math.max(c, 1)) * Math.PI * 2 + (srand(ni * 19) - 0.5) *
|
|
787
|
+
const angle = (j / Math.max(c, 1)) * Math.PI * 2 + (srand(ni * 19) - 0.5) * 1.2;
|
|
772
788
|
const r = s.iR + srand(ni * 7) * (s.oR - s.iR);
|
|
773
|
-
const spiral = angle + r * 0.
|
|
789
|
+
const spiral = angle + r * 0.005 + srand(ni * 23) * 0.8;
|
|
774
790
|
const y = (s.yBase || 0) + (srand(ni * 11) - 0.5) * s.yS;
|
|
775
|
-
//
|
|
776
|
-
const jitterX = (srand(ni * 29) - 0.5) * r * 0.
|
|
777
|
-
const jitterZ = (srand(ni * 37) - 0.5) * r * 0.
|
|
791
|
+
// Organic jitter for 3D spread
|
|
792
|
+
const jitterX = (srand(ni * 29) - 0.5) * r * 0.2;
|
|
793
|
+
const jitterZ = (srand(ni * 37) - 0.5) * r * 0.2;
|
|
778
794
|
positions[ni] = new THREE.Vector3(
|
|
779
|
-
Math.cos(spiral) * r + jitterX,
|
|
795
|
+
Math.cos(spiral) * r + jitterX + (s.cx || 0),
|
|
780
796
|
y,
|
|
781
|
-
Math.sin(spiral) * r + jitterZ
|
|
797
|
+
Math.sin(spiral) * r + jitterZ + (s.cz || 0)
|
|
782
798
|
);
|
|
783
799
|
});
|
|
784
800
|
}
|
|
@@ -808,6 +824,7 @@ function rebuildScene() {
|
|
|
808
824
|
const nSize = new Float32Array(nCount);
|
|
809
825
|
const nHighlight = new Float32Array(nCount);
|
|
810
826
|
const nPulse = new Float32Array(nCount);
|
|
827
|
+
const nActivity = new Float32Array(nCount);
|
|
811
828
|
|
|
812
829
|
for (let i = 0; i < nCount; i++) {
|
|
813
830
|
const p = positions[i];
|
|
@@ -819,16 +836,18 @@ function rebuildScene() {
|
|
|
819
836
|
nSize[i] = s.size;
|
|
820
837
|
nHighlight[i] = 1.0;
|
|
821
838
|
nPulse[i] = s.pulse;
|
|
839
|
+
nActivity[i] = s.activity || 0.5;
|
|
822
840
|
}
|
|
823
841
|
nodeGeo.setAttribute('position', new THREE.BufferAttribute(nPos, 3));
|
|
824
842
|
nodeGeo.setAttribute('aColor', new THREE.BufferAttribute(nCol, 3));
|
|
825
843
|
nodeGeo.setAttribute('aSize', new THREE.BufferAttribute(nSize, 1));
|
|
826
844
|
nodeGeo.setAttribute('aHighlight', new THREE.BufferAttribute(nHighlight, 1));
|
|
827
845
|
nodeGeo.setAttribute('aPulse', new THREE.BufferAttribute(nPulse, 1));
|
|
846
|
+
nodeGeo.setAttribute('aActivity', new THREE.BufferAttribute(nActivity, 1));
|
|
828
847
|
nodePoints = new THREE.Points(nodeGeo, nodeMat);
|
|
829
848
|
scene.add(nodePoints);
|
|
830
849
|
|
|
831
|
-
// ---- ORBIT RINGS (one per layer) ----
|
|
850
|
+
// ---- ORBIT RINGS (one per layer, centered at layer's spiral offset) ----
|
|
832
851
|
for (let lv = 1; lv <= 6; lv++) {
|
|
833
852
|
const s = SPATIAL[lv];
|
|
834
853
|
if (!s || !(byLevel[lv] || []).length) continue;
|
|
@@ -836,12 +855,12 @@ function rebuildScene() {
|
|
|
836
855
|
const ringGeo = new THREE.RingGeometry(ringRadius - 0.3, ringRadius + 0.3, 96);
|
|
837
856
|
const ringColor = new THREE.Color(LEVEL_COLORS_HEX[lv] || 0x00FFFF);
|
|
838
857
|
const ringMat = new THREE.MeshBasicMaterial({
|
|
839
|
-
color: ringColor, transparent: true, opacity: 0.
|
|
858
|
+
color: ringColor, transparent: true, opacity: 0.06 + (s.activity || 0.5) * 0.06, side: THREE.DoubleSide,
|
|
840
859
|
blending: THREE.AdditiveBlending, depthWrite: false,
|
|
841
860
|
});
|
|
842
861
|
const ring = new THREE.Mesh(ringGeo, ringMat);
|
|
843
862
|
ring.rotation.x = -Math.PI / 2;
|
|
844
|
-
ring.position.
|
|
863
|
+
ring.position.set(s.cx || 0, s.yBase, s.cz || 0);
|
|
845
864
|
ring.userData.level = lv;
|
|
846
865
|
scene.add(ring);
|
|
847
866
|
orbitRings.push(ring);
|
|
@@ -1148,7 +1167,7 @@ function closeSidebar(evt) {
|
|
|
1148
1167
|
controls.autoRotate = true;
|
|
1149
1168
|
camTween = {
|
|
1150
1169
|
startPos: camera.position.clone(), startLookAt: controls.target.clone(),
|
|
1151
|
-
targetPos: new THREE.Vector3(500,
|
|
1170
|
+
targetPos: new THREE.Vector3(500, 300, 750), targetLookAt: new THREE.Vector3(0, -50, 0),
|
|
1152
1171
|
progress: 0
|
|
1153
1172
|
};
|
|
1154
1173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;;;;;;0CAMiC,IAAI,CAAC,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2ZxB,IAAI,CAAC,IAAI,CAAC,UAAU,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW;;wCAE3L,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;uCACpD,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkKvE,QAAQ
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/cli/brain/template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;;;;;;0CAMiC,IAAI,CAAC,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2ZxB,IAAI,CAAC,IAAI,CAAC,UAAU,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW;;wCAE3L,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;uCACpD,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkKvE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA43BL,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAukBvE,CAAC;AACT,CAAC"}
|