From 39b699ffa9557a77733a3a9cc4707132e390f787 Mon Sep 17 00:00:00 2001 From: Ralph Kuepper Date: Sat, 11 Jul 2026 16:29:24 +0200 Subject: [PATCH 1/4] chore: clean compile, runnable self-tests, Windows bring-up - Declare perry.allow.nativeLibrary so the editor compiles without the PERRY_ALLOW_PERRY_FEATURES escape hatch. - Wire the promised --test flag (Perry does expose process.argv/process.exit). runSelfTests now prints failing assertions plus a summary and exits nonzero. - gitignore the Windows binaries; refresh the README build/status sections. --- .gitignore | 4 +++ README.md | 22 +++++++++--- package.json | 10 ++++++ src/main.ts | 65 +++++++++++++++++++++++++--------- src/tests/self-tests.ts | 78 +++++++++++++++++++++++++++++++++++++++-- 5 files changed, 156 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 60c177b..74bb995 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,11 @@ node_modules/ dist/ /main +/main.exe +/main.pdb /bloom-editor +/bloom-editor.exe +/bloom-editor.pdb .DS_Store *.log .claude/ diff --git a/README.md b/README.md index e11e5f2..5e5063a 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,33 @@ Like everything in the Bloom ecosystem, the editor is written in TypeScript and Core editing works; several planned features are unfinished. **[`PLAN.md`](PLAN.md)** contains a full verified audit (what works, what's broken, with file/line references) and the completion plan, including a definition of done. In short: -- **Working today:** entity placement and selection, move/rotate/scale gizmos, terrain sculpting (raise/lower/smooth/flatten), undo/redo, save/load with autosave, environment panel, fly-camera playtest mode. -- **Not finished yet:** prefab authoring UI, terrain texture painting, water/river editing beyond initial placement, `userData` editing, asset thumbnails, and a handful of bugs listed in the plan. +- **Working today:** opens the shooter project and renders `arena_02` (entities with no model — spawners, pickups, colliders — draw as colored, pickable placeholder boxes); entity placement and selection, move/rotate/scale gizmos, terrain sculpting, undo/redo, save/load with autosave, `userData` key/value editing, environment panel, fly-camera playtest mode. +- **Not finished yet:** prefab authoring UI, terrain texture painting, water/river editing beyond initial placement, asset thumbnails, recent-projects UI. + +Startup blocks for ~20 s while every GLB in the project's models dir is loaded synchronously (26 for the shooter). The window is black until that finishes — it is loading, not hung. + +### Platform notes + +Bringing this up on Windows required fixing three API mismatches in the editor (`Key.*` and `MouseButton.*` are `SCREAMING_SNAKE` in the engine, and `drawLine` takes a `Color`, not four channels) plus one engine gap (`setSceneNodeTransform` / `updateSceneNodeGeometry` couldn't cross the FFI — see `PLAN.md`). Also read [`docs/perry-map-size-av.md`](docs/perry-map-size-av.md) before putting a `Map` in editor state: Perry 0.5.x miscompiles `Map` fields declared on an interface. ## Building Requires [Perry](https://github.com/andrewtdiz/perry) ≥ 0.5 on your `PATH`, and the [engine](https://github.com/Bloom-Engine/engine) checked out as a sibling directory named `../engine` (the `bloom` dependency resolves via `file:../engine/`). ```sh -PERRY_ALLOW_PERRY_FEATURES=1 perry compile src/main.ts +perry compile src/main.ts ./main ``` -The env var is a temporary escape hatch until the `perry.allow.nativeLibrary` grant lands in `package.json` (task A1 in `PLAN.md`). `perry compile` emits the binary as `./main`. +`perry compile` emits the binary as `./main` (`main.exe` on Windows; pass `-o ` to change it). The native-library grant lives in `package.json` under `perry.allow.nativeLibrary`, so no environment variables are needed. + +Run the self-test suite headless with: + +```sh +./main --test +``` + +It prints failing assertions plus a summary and exits nonzero on any failure. ## Usage diff --git a/package.json b/package.json index 17e187b..a1c0686 100644 --- a/package.json +++ b/package.json @@ -4,5 +4,15 @@ "main": "src/main.ts", "dependencies": { "bloom": "file:../engine/" + }, + "perry": { + "allow": { + "nativeLibrary": [ + "bloom", + "bloom/core", + "bloom/world", + "bloom/scene" + ] + } } } diff --git a/src/main.ts b/src/main.ts index 0d8328c..f97beb4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -55,6 +55,20 @@ import { drawAssetPanel } from './ui/layouts/asset-panel'; import { drawInspector } from './ui/layouts/inspector'; import { drawOutliner } from './ui/layouts/outliner'; import { drawStatusBar } from './ui/layouts/status-bar'; +import { runSelfTests } from './tests/self-tests'; + +// ---- self-tests (headless) --------------------------------------------------- + +// `bloom-editor --test` runs the suite without opening a window and exits +// nonzero on any failure, so CI and pre-commit hooks can gate on it. +let selfTestMode = false; +for (let i = 0; i < process.argv.length; i++) { + if (process.argv[i] === '--test') selfTestMode = true; +} +if (selfTestMode) { + const failures = runSelfTests(); + process.exit(failures > 0 ? 1 : 0); +} // ---- init ------------------------------------------------------------------ @@ -73,6 +87,8 @@ const scaleGizmo = createScaleGizmoState(); // Load project + assets. loadProject(state); +// Blocking: loads every GLB in the project's models dir (~20 s for the +// shooter's 26 on a mid Windows box). Worth making async — see PLAN.md. loadAssetCatalog(state); // Open default world if available. @@ -80,6 +96,9 @@ if (state.project && state.project.defaultWorld.length > 0) { const worldPath = state.project.worldsDir + '/' + state.project.defaultWorld; openWorld(state, worldPath); addRecentProject(state.project.name, state.project.filePath); + // Start looking at the level rather than at the default orbit target, which + // on arena_02 puts the camera inside the building. + frameCameraOnWorld(state); } // Mark environment for initial sync. @@ -108,14 +127,15 @@ while (!windowShouldClose()) { // ---- input shortcuts ----------------------------------------------------- // Ctrl+Z / Ctrl+Y (undo/redo). - if (isKeyDown(Key.LeftControl) || isKeyDown(Key.LeftSuper)) { + if (isKeyDown(Key.LEFT_CONTROL) || isKeyDown(Key.LEFT_SUPER)) { if (isKeyPressed(Key.Z)) undo(state); if (isKeyPressed(Key.Y)) redo(state); if (isKeyPressed(Key.S)) saveCurrentWorld(state); } - // Delete selected entity. - if (isKeyPressed(Key.Delete) || isKeyPressed(Key.Backspace)) { + // Delete selected entity. Delete only — Backspace must stay free for text + // widgets — and never while a widget (text field, drag) is active. + if (isKeyPressed(Key.DELETE) && ui.activeId === null) { if (state.selection.primary !== null) { const entity = state.world.entities.find(e => e.id === state.selection.primary); if (entity) { @@ -126,7 +146,7 @@ while (!windowShouldClose()) { } // Duplicate (Ctrl+D). - if ((isKeyDown(Key.LeftControl) || isKeyDown(Key.LeftSuper)) && isKeyPressed(Key.D)) { + if ((isKeyDown(Key.LEFT_CONTROL) || isKeyDown(Key.LEFT_SUPER)) && isKeyPressed(Key.D)) { if (state.selection.primary !== null) { const entity = state.world.entities.find(e => e.id === state.selection.primary); if (entity) { @@ -135,15 +155,20 @@ while (!windowShouldClose()) { } } - // Tool hotkeys. - if (isKeyPressed(Key.Q)) state.activeTool = 'select'; - if (isKeyPressed(Key.W)) state.activeTool = 'place'; - if (isKeyPressed(Key.G)) { state.activeTool = 'transform'; state.transformMode = 'move'; } - if (isKeyPressed(Key.R)) { state.activeTool = 'transform'; state.transformMode = 'rotate'; } - if (isKeyPressed(Key.E)) { state.activeTool = 'transform'; state.transformMode = 'scale'; } - if (isKeyPressed(Key.B)) state.activeTool = 'brush'; - if (isKeyPressed(Key.T)) state.activeTool = 'water'; - if (isKeyPressed(Key.Y)) state.activeTool = 'river'; + // Tool hotkeys — only when no Ctrl/Cmd chord is held (so Ctrl+Y never + // doubles as a tool switch) and no widget is active (so typing "q" into a + // text field doesn't switch tools). + const chordHeld = isKeyDown(Key.LEFT_CONTROL) || isKeyDown(Key.LEFT_SUPER); + if (!chordHeld && ui.activeId === null) { + if (isKeyPressed(Key.Q)) state.activeTool = 'select'; + if (isKeyPressed(Key.W)) state.activeTool = 'place'; + if (isKeyPressed(Key.G)) { state.activeTool = 'transform'; state.transformMode = 'move'; } + if (isKeyPressed(Key.R)) { state.activeTool = 'transform'; state.transformMode = 'rotate'; } + if (isKeyPressed(Key.E)) { state.activeTool = 'transform'; state.transformMode = 'scale'; } + if (isKeyPressed(Key.B)) state.activeTool = 'brush'; + if (isKeyPressed(Key.T)) state.activeTool = 'water'; + if (isKeyPressed(Key.Y)) state.activeTool = 'river'; + } // F key: frame camera on selection (or world bounds if nothing selected). if (isKeyPressed(Key.F)) { @@ -155,7 +180,7 @@ while (!windowShouldClose()) { } // Escape: deselect. - if (isKeyPressed(Key.Escape)) { + if (isKeyPressed(Key.ESCAPE)) { state.selection.ids.clear(); state.selection.primary = null; syncSelectionOutline(state); @@ -176,7 +201,15 @@ while (!windowShouldClose()) { // ---- begin drawing ------------------------------------------------------- beginDrawing(); - clearBackground({ r: 42, g: 46, b: 56, a: 255 }); + // Clear to the world's sky color so the environment panel's sky edits are + // actually visible (the panel used to be a silent no-op here). + const envSky = state.world.environment.skyColor; + clearBackground({ + r: Math.floor(envSky[0] * 255), + g: Math.floor(envSky[1] * 255), + b: Math.floor(envSky[2] * 255), + a: 255, + }); // ---- 3D viewport --------------------------------------------------------- @@ -217,7 +250,7 @@ while (!windowShouldClose()) { // We draw UI panels next and check mouseCaptured afterwards. To avoid // a one-frame delay, we store the click intent here and process it after UI. - const viewportClicked = inViewport && isMouseButtonPressed(MouseButton.Left); + const viewportClicked = inViewport && isMouseButtonPressed(MouseButton.LEFT); // ---- 2D UI (drawn on top of the viewport) -------------------------------- diff --git a/src/tests/self-tests.ts b/src/tests/self-tests.ts index f1c0d23..6fddfdf 100644 --- a/src/tests/self-tests.ts +++ b/src/tests/self-tests.ts @@ -1,14 +1,17 @@ -// Self-tests — run via bloom-editor --test (check for arg in main.ts). -// Prints PASS/FAIL for each test, exits with nonzero on any failure. +// Self-tests — run via `bloom-editor --test` (wired in main.ts, which exits +// nonzero on any failure). Prints each failing assertion by name plus a +// pass/fail summary; runSelfTests returns the failure count. import { WorldData, PrefabData, createEmptyWorld, createEntity } from 'bloom/world'; import { validateWorld, validatePrefab } from 'bloom/world'; import { buildHeightmapMesh, sampleHeight, defaultTerrain } from 'bloom/world'; import { expandPrefab, createPrefabRegistry, registerPrefab, PrefabLeaf } from 'bloom/world'; -import { createEditorState } from '../state/editor-state'; +import { createEditorState, nextCounterId } from '../state/editor-state'; import { runCommand, undo, redo } from '../state/commands'; import { CreateEntityCommand } from '../state/commands/create-entity'; import { TransformEntityCommand } from '../state/commands/transform-entity'; +import { CreateTerrainCommand } from '../state/commands/create-terrain'; +import { SetUserDataCommand } from '../state/commands/set-userdata'; let passed = 0; let failed = 0; @@ -18,17 +21,26 @@ function assert(condition: boolean, name: string): void { passed++; } else { failed++; + console.log('FAIL: ' + name); } } export function runSelfTests(): number { + passed = 0; + failed = 0; + testWorldRoundTrip(); testValidation(); testTerrainBilinearSample(); testPrefabCycleDetection(); testPrefabExpansion(); testCommandUndoRedo(); + testMapSize(); + testCreateTerrainUndo(); + testCounterIds(); + testUserDataCommand(); + console.log('self-tests: ' + passed + ' passed, ' + failed + ' failed'); return failed; } @@ -124,6 +136,66 @@ function testPrefabExpansion(): void { assert(leaves[2].modelRef === 'roof.glb', 'expand: third leaf is roof'); } +function testMapSize(): void { + // Regression probe: Map.size at editor startup coincided with a native + // access violation (0xc0000005) on Perry 0.5.1208 — keep this canary. + const m = new Map(); + assert(m.size === 0, 'map: empty size'); + m.set('a', 1); + m.set('b', 2); + assert(m.size === 2, 'map: size after set'); + m.delete('a'); + assert(m.size === 1, 'map: size after delete'); + // The editor AV'd specifically on string + Map.size concatenation. + const viaLocal = m.size; + assert(('n=' + viaLocal) === 'n=1', 'map: size concat via local'); + assert(('n=' + m.size) === 'n=1', 'map: size concat direct'); + console.log('map-size concat survived: n=' + m.size); +} + +function testCreateTerrainUndo(): void { + const state = createEditorState(); + assert(state.world.terrain === null, 'terrain cmd: starts null'); + + runCommand(state, new CreateTerrainCommand()); + assert(state.world.terrain !== null, 'terrain cmd: created'); + + undo(state); + assert(state.world.terrain === null, 'terrain cmd: undo returns terrain to null'); + + redo(state); + assert(state.world.terrain !== null, 'terrain cmd: redo re-creates'); +} + +function testCounterIds(): void { + const state = createEditorState(); + const a = nextCounterId(state, 'nextWaterId', 'water_'); + const b = nextCounterId(state, 'nextWaterId', 'water_'); + assert(a === 'water_1', 'counter: first id'); + assert(b === 'water_2', 'counter: second id'); + assert(state.world.metadata['nextWaterId'] === '3', 'counter: persists in world metadata'); +} + +function testUserDataCommand(): void { + const state = createEditorState(); + runCommand(state, new CreateEntityCommand(createEntity('ud_ent', 'x.glb', [0, 0, 0]))); + + runCommand(state, new SetUserDataCommand('ud_ent', 'cooldown', null, '5')); + assert(state.world.entities[0].userData['cooldown'] === '5', 'userdata: set'); + + runCommand(state, new SetUserDataCommand('ud_ent', 'cooldown', '5', '8')); + assert(state.world.entities[0].userData['cooldown'] === '8', 'userdata: edit'); + + undo(state); + assert(state.world.entities[0].userData['cooldown'] === '5', 'userdata: undo restores previous value'); + + runCommand(state, new SetUserDataCommand('ud_ent', 'cooldown', '5', null)); + assert(state.world.entities[0].userData['cooldown'] === undefined, 'userdata: remove'); + + undo(state); + assert(state.world.entities[0].userData['cooldown'] === '5', 'userdata: undo restores removed key'); +} + function testCommandUndoRedo(): void { const state = createEditorState(); From 965dc3789aa91ebb07afbf99122e52ec17b7127d Mon Sep 17 00:00:00 2001 From: Ralph Kuepper Date: Sat, 11 Jul 2026 16:29:40 +0200 Subject: [PATCH 2/4] fix: make the editor actually run, and open shooter worlds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The editor had never started on Windows. Four independent causes, each surfacing as `TypeError: Expected number for native f64 parameter` when an `undefined` reached a native call (Perry does not type-check missing members on the engine's const enums, so none of this failed at compile time): - Key constants were camelCase (Key.LeftControl, Escape, Delete, Space, LeftShift/RightShift); the engine spells them LEFT_CONTROL, ESCAPE, DELETE, SPACE, LEFT_SHIFT, RIGHT_SHIFT. Plain letters were correct, which hid it. - MouseButton.Left/Right/Middle -> LEFT/RIGHT/MIDDLE. - widgets.ts:separator() called drawLine with the colour's four channels splatted as loose numbers; the signature takes a Color. - setSceneNodeTransform/updateSceneNodeGeometry were unreachable from TypeScript (fixed engine-side; see engine fix/scene-scalar-ffi). Beyond bring-up: - Entities whose model is missing or is the `_gizmo_box.glb` sentinel now render as colored, pickable placeholder cubes sized from the halfExtents userData convention — without this, ~20 of arena_02's gameplay entities were invisible and unselectable. - userData is editable: key/value rows with add/delete, undoable and coalesced. This is the bridge for game-defined data (spawners, wave plans, colliders). - Ctrl+Y only redoes; tool hotkeys no longer fire under a chord or while a text field has focus. Delete no longer doubles as Backspace. - Terrain creation is explicit and undoable (a stray brush click used to add a 128x128 heightmap to worlds that ship with terrain: null). - Environment edits apply: sky colour and fog were silently ignored, and the sun accumulated a new directional light on every edit. - Water/river ids persist in world.metadata, so reopening a world and adding a volume can no longer mint a duplicate id and make undo delete the wrong one. - Entity tints were passed 0-1 into a 0-255 API; prefab registry is cached. AssetCatalog and HandleMap are classes, not interfaces: Perry 0.5.x miscompiles Map fields on an interface. Full repro table and the rules to work within: docs/perry-map-size-av.md. Self-tests extended to cover the new commands, id counters, and userData semantics: 41 passing. --- PLAN.md | 32 ++ docs/perry-map-size-av.md | 95 ++++++ src/gizmos/move-gizmo.ts | 4 +- src/gizmos/rotate-gizmo.ts | 4 +- src/gizmos/scale-gizmo.ts | 4 +- src/io/asset-catalog.ts | 2 + src/playtest/playtest.ts | 6 +- src/state/commands/create-terrain.ts | 21 ++ src/state/commands/set-userdata.ts | 56 ++++ src/state/editor-state.ts | 61 +++- src/tools/brush-tool.ts | 17 +- src/tools/prefab-tool.ts | 2 +- src/tools/river-tool.ts | 19 +- src/tools/select-tool.ts | 2 +- src/tools/water-tool.ts | 19 +- src/ui/layouts/brush-panel.ts | 17 +- src/ui/layouts/environment-panel.ts | 2 +- src/ui/layouts/inspector.ts | 91 +++++- src/ui/text-input.ts | 2 +- src/ui/ui-context.ts | 8 +- src/ui/widgets.ts | 9 +- src/viewport/orbit-camera.ts | 4 +- src/world-sync/sync.ts | 307 ++++++++++++++---- .../dumps/crash_main_21568_6a51d0e7.dmp | Bin 0 -> 254375 bytes .../dumps/crash_main_24380_6a51cfa4.dmp | Bin 0 -> 261869 bytes .../dumps/crash_main_25908_6a51cf9f.dmp | Bin 0 -> 249754 bytes .../dumps/crash_main_27960_6a51d309.dmp | Bin 0 -> 248361 bytes .../dumps/crash_main_28228_6a51cf98.dmp | Bin 0 -> 254810 bytes .../dumps/crash_main_28608_6a51d089.dmp | Bin 0 -> 252058 bytes .../dumps/crash_main_29408_6a51d2cc.dmp | Bin 0 -> 240586 bytes .../dumps/crash_main_8268_6a51d170.dmp | Bin 0 -> 253735 bytes .../dumps/crash_main_8880_6a524cba.dmp | Bin 0 -> 254619 bytes 32 files changed, 647 insertions(+), 137 deletions(-) create mode 100644 docs/perry-map-size-av.md create mode 100644 src/state/commands/create-terrain.ts create mode 100644 src/state/commands/set-userdata.ts create mode 100644 tools/.testout/dumps/crash_main_21568_6a51d0e7.dmp create mode 100644 tools/.testout/dumps/crash_main_24380_6a51cfa4.dmp create mode 100644 tools/.testout/dumps/crash_main_25908_6a51cf9f.dmp create mode 100644 tools/.testout/dumps/crash_main_27960_6a51d309.dmp create mode 100644 tools/.testout/dumps/crash_main_28228_6a51cf98.dmp create mode 100644 tools/.testout/dumps/crash_main_28608_6a51d089.dmp create mode 100644 tools/.testout/dumps/crash_main_29408_6a51d2cc.dmp create mode 100644 tools/.testout/dumps/crash_main_8268_6a51d170.dmp create mode 100644 tools/.testout/dumps/crash_main_8880_6a524cba.dmp diff --git a/PLAN.md b/PLAN.md index 67bf898..7798fff 100644 --- a/PLAN.md +++ b/PLAN.md @@ -59,6 +59,38 @@ Everything below was verified by reading current source, not from stale docs. Co 4. **Environment edits bypass the undo stack** — `environment-panel.ts` mutates `state.world.environment` directly and only sets dirty flags. 5. **The brush silently creates terrain on flat worlds.** `src/tools/brush-tool.ts:66-68` assigns `defaultTerrain()` when `world.terrain` is null. Both shooter arenas have `terrain: null`; one stray B-keypress + click adds a 128×128 heightmap to a world that shouldn't have one, and the terrain creation itself is not undoable (only the stroke's height deltas are). +### 1.2b Corrections & additional bugs (second audit, 2026-07-11, Windows/Perry 0.5.1208) + +Corrections to the audit above, verified against the actual files: + +- `arena_02` has **1** water volume (id `river`, a box volume standing in for the river), not 6; `rivers[]` is empty. +- `enemy_spawner` entities carry only `userData.kind` — there are no `enemyType`/`waveBits`/`maxAlive`/`cooldown` keys (§1.5 overstates); the whole wave plan lives in `wave_config.userData.waves`. F1 stands, its acceptance example doesn't. +- `loadRecentProjects` is not dead code (called from `addRecentProject`); the missing piece is UI that reads the list. +- Autosave/Ctrl+S live in `main.ts`, not `world-io.ts`. + +Additional bugs found (fixed in the same pass as B1-B4): + +6. **Environment sky & fog edits were silent no-ops** — `syncEnvironment` never applied `skyColor`/`fogStart`/`fogEnd`. Fixed: clear color reads the world's sky each frame; fog maps to `setFog` with a density approximation. +7. **Directional light accumulated** — `addDirectionalLight` per env sync stacked lights. Fixed: `setDirectionalLight` re-applied every frame (begin_frame resets the lighting block anyway — same reason the shooter re-sets sun/ambient per frame). +8. **Water/river id counters reset per launch** → duplicate ids on reopened worlds made `AddWaterCommand.undo` remove the wrong volume. Fixed: counters persist in `world.metadata` (like `nextEntityId`) with a collision guard. +9. **Backspace deleted the selected entity** — latent footgun for text fields. Fixed: Delete only, and only while no widget is active. +10. **Entity with both modelRef and prefabRef double-bound and leaked a node.** Fixed: prefab branch takes precedence, single bind. +11. **Entity tints rendered near-black in the editor** — `sync.ts` passed 0-1 world tints straight into `setSceneNodeColor`, which expects 0-255 (see `applyTint` in the engine loader). Fixed. + +✅ **Why the editor never started on Windows: it was written against an engine API that doesn't exist.** Three separate mismatches, each producing the same `TypeError: Expected number for native f64 parameter` on the first frame — an `undefined` reaching a native `f64` parameter: + +1. **Key constants.** The editor used `Key.LeftControl` / `LeftSuper` / `Escape` / `Delete` / `Space` / `LeftShift` / `RightShift`; the engine (`engine/src/core/keys.ts`) spells them `LEFT_CONTROL`, `LEFT_SUPER`, `ESCAPE`, `DELETE`, `SPACE`, `LEFT_SHIFT`, `RIGHT_SHIFT`. Letters (`Key.Z`) were correct, which hid the pattern. +2. **Mouse buttons.** `MouseButton.Left/Right/Middle` → engine has `LEFT/RIGHT/MIDDLE`. +3. **`drawLine` arity.** `widgets.ts:separator()` called `drawLine(x1,y1,x2,y2, 1, color.r, color.g, color.b, color.a)`, but the engine signature is `(x1, y1, x2, y2, thickness, Color)` — so it read `.r` off the number `1` and got `undefined`. This one only fires on the first panel that draws a separator, which is why it surfaced last. + +4. **`setSceneNodeTransform` / `updateSceneNodeGeometry` were unreachable from TypeScript.** Both take their arrays through `i64` pointer params, and Perry 0.5.x refuses to pass a `number[]` into an `i64` ("Expected safe integer for native i64 parameter"). The engine had already worked around this for meshes (the `bloom_mesh_scratch_*` buffers) but never migrated the scene-graph pair — the shooter uses `setSceneNodeTrs` (all-scalar) so nobody hit it, while the editor needs full matrices (non-uniform scale: a boundary wall is 40×4×0.5). **Fixed in the engine** (additive, nothing else changes): new `bloom_scene_set_transform16` (17 scalars, stateless) and `bloom_scene_update_geometry_scratch` (re-uses the mesh scratch); the TS wrappers now route through them, and the stale "prefer setSceneNodeTrs until the scratch migration lands" note in `engine/src/scene/index.ts` is now true history. + +All fixed. Perry does not type-check missing members on these `const` objects, so none of this failed at compile time. **Perry's reported stack line was flat wrong** (it blamed `sync.ts:383` for a fault in `main.ts`'s input block) — trust `console.error` breadcrumbs, not the line attribution. An engine-API audit of the remaining call sites (`drawRay`/`drawCube`/`drawText`/scene calls) found no further mismatches. + +⚠️ **Separately: Perry 0.5.1208 miscompiles `Map` fields on an interface** — a real bug, found while chasing the above, though it was *not* what broke the editor. Reading `.size` on a `Map` field of an interface access-violates once the program declares more than one such field; `Set.size` and class fields are fine. `AssetCatalog` and `HandleMap` are now classes as a precaution, and no code reads `Map.size` through a property chain. Full repro table + rules: **`docs/perry-map-size-av.md`** — read it before adding a `Map` to editor state, and report upstream. + +Traps recorded so nobody re-pays for them: Perry's **stdout is block-buffered and lost on a native crash** (use `console.error`); a debug line printing `someMap.size` *introduces* an access violation of its own (the instrumentation became the bug for hours); and `loadAssetCatalog` takes ~20 s here for the shooter's 26 GLBs (the "<1 s" comment in that file is macOS-calibrated) — the black window at startup is loading, not a hang. Async/lazy catalog loading deserves a follow-up. + ### 1.3 Dead code — written but unreachable (all verified by grep: zero call sites) | Code | What's missing to reach it | diff --git a/docs/perry-map-size-av.md b/docs/perry-map-size-av.md new file mode 100644 index 0000000..22ab7d5 --- /dev/null +++ b/docs/perry-map-size-av.md @@ -0,0 +1,95 @@ +# Perry bug: `Map` fields on an interface are miscompiled + +**Found:** 2026-07-11, while bringing the editor up on Windows. +**Toolchain:** Perry 0.5.1208, Windows 11, x86_64 (LLVM backend). +**Status:** open upstream; the editor works around it by never reading +`Map.prototype.size` through an interface field. + +## Symptom + +The process dies with an access violation (`0xC0000005`, exit +`-1073741819`). With `--debug-symbols`, `llvm-symbolizer` attributes the +faulting address to `perry_runtime::buffer::dataview::js_data_view_set`, +which is a red herring — the fault address drifts between builds and the +nearest-symbol attribution is not meaningful. The real story is that +`.size` lowers to `js_map_size()` (see +`perry-codegen/src/expr/property_get.rs`), and the pointer it unboxes out +of the field is not a Map. + +## Minimal repro + +```ts +interface Two { a: Map; b: Map; } +const t: Two = { a: new Map(), b: new Map() }; +console.error('size=' + t.a.size); // ← access violation +``` + +No engine, no FFI, no window. `perry compile two.ts -o two && ./two`. + +## What does and doesn't trigger it + +| Shape | Result | +|---|---| +| One interface, one `Map` field, read `.size` | **PASS** | +| One interface, **two** `Map` fields, read `.size` | **CRASH** | +| One interface, three `Map` fields | **CRASH** | +| **Two** interfaces, one `Map` field each | **CRASH** | +| Same one-`Map` interface used for two fields | **PASS** | +| Two `Set` fields, read `.size` | **PASS** | +| One `Map` + one `Set` field | **PASS** | +| **Class** with two `Map` fields, read `.size` | **PASS** | +| Two `Map` fields, only `get`/`set`/`has` (no `.size`) | **PASS** | +| `Record` instead of `Map` | **PASS** | + +So the trigger is: **reading `.size` on a `Map`-typed field of an +interface-typed object, in a program that declares more than one `Map` +field across its interfaces.** `Map` methods are fine; `Set.size` is fine; +class fields are fine (`is_map_expr`'s `PropertyGet` arm resolves class +fields explicitly — interfaces evidently take a different path that +mis-resolves the receiver once more than one candidate field exists). + +Reproduce the whole table with the bisect scripts kept alongside this note +in the scratchpad of the session that found it, or re-derive from the table +above — each row is ~10 lines. + +## It is not only `.size` + +`.size` is the loudest symptom (instant access violation), but the corruption +is in the **field read** itself. The editor never called `Map.size`, yet it +still died on the first frame: + +``` +TypeError: Expected number for native f64 parameter + at src/world-sync/sync.ts:383 +``` + +`HandleMap` was `interface { byEntity: Map; byHandle: Map }` — two `Map` +fields — and `Array.from(state.handles.byEntity.values())` on an *empty* map +returned bogus entries, which were then handed to `destroySceneNode()` and +rejected by the native ABI's number check. So any read of a `Map` field on a +multi-`Map` interface can yield garbage; `.size` merely dereferences it +immediately. + +## Workaround (what the editor does) + +1. **Hold `Map`s in a `class`, never a multi-`Map` interface.** `AssetCatalog` + and `HandleMap` in `src/state/editor-state.ts` are classes for exactly this + reason. With classes, `get` / `set` / `has` / `values()` / `keys()` all + behave correctly (verified against the editor's exact shapes). +2. **Never read `.size` on a `Map` through a property chain** — that still + crashes even when the holder is a class (`state.catalog.models.size` dies; + the class-local `this.models.size` form is fine). Count via + `Array.from(m.keys()).length`, or off a parallel array — the catalog keeps + `modelOrder: string[]` beside `models: Map<...>`, so + `catalog.modelOrder.length` is the count. +3. `Set.size` is safe through chains and is used freely (`pendingRebuild`, + `pendingDestroy`). + +## Debugging notes for the next person + +- Perry's stdout is block-buffered and is **lost** when the process dies on a + native fault. Print breadcrumbs with `console.error`. +- `llvm-symbolizer` attributed the fault to `js_data_view_set`, which is + nearest-symbol noise — don't chase it. +- Instrumenting a crash with `console.log('n=' + someMap.size)` *introduces* + this bug. That is how a debug line became the crash under investigation. diff --git a/src/gizmos/move-gizmo.ts b/src/gizmos/move-gizmo.ts index cea2693..959932d 100644 --- a/src/gizmos/move-gizmo.ts +++ b/src/gizmos/move-gizmo.ts @@ -88,7 +88,7 @@ export function updateMoveGizmo(state: EditorState, gizmo: MoveGizmoState): void // ---- hit test gizmo axes ------------------------------------------------- - if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.Left)) { + if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.LEFT)) { const ray = mouseToWorldRay(state.camera, mx, my, sw, sh, state.viewportLeft, state.viewportTop, vw, vh); const pos = gizmo.anchor; @@ -119,7 +119,7 @@ export function updateMoveGizmo(state: EditorState, gizmo: MoveGizmoState): void // ---- drag in progress ---------------------------------------------------- if (gizmo.dragging) { - if (isMouseButtonDown(MouseButton.Left)) { + if (isMouseButtonDown(MouseButton.LEFT)) { const ray = mouseToWorldRay(state.camera, mx, my, sw, sh, state.viewportLeft, state.viewportTop, vw, vh); const axis = gizmo.dragAxis; const startPos = gizmo.dragStartPos; diff --git a/src/gizmos/rotate-gizmo.ts b/src/gizmos/rotate-gizmo.ts index 32b125e..fa0eaad 100644 --- a/src/gizmos/rotate-gizmo.ts +++ b/src/gizmos/rotate-gizmo.ts @@ -51,7 +51,7 @@ export function updateRotateGizmo(state: EditorState, gizmo: RotateGizmoState): const sh = getScreenHeight(); // Hit test: approximate each circle as 16 line segments, check ray distance. - if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.Left)) { + if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.LEFT)) { const ray = mouseToWorldRay(state.camera, mx, my, sw, sh, state.viewportLeft, state.viewportTop, vw, vh); const pos = gizmo.anchor; const r = GIZMO_LENGTH; @@ -83,7 +83,7 @@ export function updateRotateGizmo(state: EditorState, gizmo: RotateGizmoState): } if (gizmo.dragging) { - if (isMouseButtonDown(MouseButton.Left)) { + if (isMouseButtonDown(MouseButton.LEFT)) { const angle = Math.atan2(my - sh / 2, mx - sw / 2); let delta = angle - gizmo.dragStartAngle; diff --git a/src/gizmos/scale-gizmo.ts b/src/gizmos/scale-gizmo.ts index 044044f..2873d7f 100644 --- a/src/gizmos/scale-gizmo.ts +++ b/src/gizmos/scale-gizmo.ts @@ -51,7 +51,7 @@ export function updateScaleGizmo(state: EditorState, gizmo: ScaleGizmoState): vo const sw = getScreenWidth(); const sh = getScreenHeight(); - if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.Left)) { + if (!gizmo.dragging && inViewport && isMouseButtonPressed(MouseButton.LEFT)) { const ray = mouseToWorldRay(state.camera, mx, my, sw, sh, state.viewportLeft, state.viewportTop, vw, vh); const pos = gizmo.anchor; const len = GIZMO_LENGTH; @@ -81,7 +81,7 @@ export function updateScaleGizmo(state: EditorState, gizmo: ScaleGizmoState): vo } if (gizmo.dragging) { - if (isMouseButtonDown(MouseButton.Left)) { + if (isMouseButtonDown(MouseButton.LEFT)) { const delta = (mx - gizmo.dragStartX) * 0.01; const startScl = (gizmo.dragStartTransform as TransformData).scale; const scl: Vec3Lit = [startScl[0], startScl[1], startScl[2]]; diff --git a/src/io/asset-catalog.ts b/src/io/asset-catalog.ts index 2be8572..bbf0c1a 100644 --- a/src/io/asset-catalog.ts +++ b/src/io/asset-catalog.ts @@ -12,6 +12,7 @@ import { readFile } from 'bloom'; import { PrefabData } from 'bloom/world'; import { EditorState, ModelEntry, Project } from '../state/editor-state'; import { basenameNoExt, categoryFromName, joinPath } from './paths'; +import { invalidatePrefabRegistry } from '../world-sync/sync'; export function loadAssetCatalog(state: EditorState): void { if (!state.project) return; @@ -19,6 +20,7 @@ export function loadAssetCatalog(state: EditorState): void { loadModels(state, project); loadPrefabs(state, project); + invalidatePrefabRegistry(); } function loadModels(state: EditorState, project: Project): void { diff --git a/src/playtest/playtest.ts b/src/playtest/playtest.ts index fc22e63..9286795 100644 --- a/src/playtest/playtest.ts +++ b/src/playtest/playtest.ts @@ -16,7 +16,7 @@ const LOOK_SPEED = 0.003; export function updatePlaytest(state: EditorState): void { // Toggle with Ctrl+P. - if ((isKeyDown(Key.LeftControl) || isKeyDown(Key.LeftSuper)) && isKeyPressed(Key.P)) { + if ((isKeyDown(Key.LEFT_CONTROL) || isKeyDown(Key.LEFT_SUPER)) && isKeyPressed(Key.P)) { state.playtesting = !state.playtesting; if (state.playtesting) { // Enter: set camera to current orbit eye position. @@ -56,8 +56,8 @@ export function updatePlaytest(state: EditorState): void { if (isKeyDown(Key.S)) { mx -= sinYaw; mz -= cosYaw; } if (isKeyDown(Key.A)) { mx += cosYaw; mz -= sinYaw; } if (isKeyDown(Key.D)) { mx -= cosYaw; mz += sinYaw; } - if (isKeyDown(Key.Space)) my += 1; - if (isKeyDown(Key.LeftShift)) my -= 1; + if (isKeyDown(Key.SPACE)) my += 1; + if (isKeyDown(Key.LEFT_SHIFT)) my -= 1; const speed = FLY_SPEED * dt; state.camera.target[0] += mx * speed; diff --git a/src/state/commands/create-terrain.ts b/src/state/commands/create-terrain.ts new file mode 100644 index 0000000..fd650fd --- /dev/null +++ b/src/state/commands/create-terrain.ts @@ -0,0 +1,21 @@ +// Explicit terrain creation. A world without terrain stays without terrain +// until the user asks for one — a stray brush stroke must never add a +// heightmap silently (both shooter arenas ship with terrain: null on purpose). +// Undo returns world.terrain to null; the sync layer then removes the node. + +import { defaultTerrain } from 'bloom/world'; +import { EditorState, Command } from '../editor-state'; + +export class CreateTerrainCommand implements Command { + readonly label = 'Create terrain'; + + do(state: EditorState): void { + state.world.terrain = defaultTerrain(); + state.pendingTerrainRebuild = true; + } + + undo(state: EditorState): void { + state.world.terrain = null; + state.pendingTerrainRebuild = true; + } +} diff --git a/src/state/commands/set-userdata.ts b/src/state/commands/set-userdata.ts new file mode 100644 index 0000000..d915e0e --- /dev/null +++ b/src/state/commands/set-userdata.ts @@ -0,0 +1,56 @@ +// Command: set, add, or remove a single userData key on an entity. userData is +// the game-defined side channel (spawner params, wave plans, collider extents), +// so the editor treats keys and values as opaque strings. Supports mergeWith so +// per-keystroke edits of the same key coalesce into one undo entry. + +import { EditorState, Command, EntityId } from '../editor-state'; + +export class SetUserDataCommand implements Command { + readonly label: string; + readonly entityId: EntityId; + readonly key: string; + private before: string | null; // null = key absent before. + private after: string | null; // null = key removed. + + constructor(entityId: EntityId, key: string, before: string | null, after: string | null) { + this.entityId = entityId; + this.key = key; + this.before = before; + this.after = after; + this.label = 'Edit userData ' + key; + } + + do(state: EditorState): void { + this.apply(state, this.after); + } + + undo(state: EditorState): void { + this.apply(state, this.before); + } + + private apply(state: EditorState, value: string | null): void { + for (let i = 0; i < state.world.entities.length; i++) { + const entity = state.world.entities[i]; + if (entity.id !== this.entityId) continue; + if (value === null) { + delete entity.userData[this.key]; + } else { + entity.userData[this.key] = value; + } + // Placeholder color/size can depend on userData (kind, halfExtents). + state.pendingRebuild.add(this.entityId); + return; + } + } + + // Coalesce consecutive keystroke edits of the same key on the same entity. + // Removals and additions never merge — they should stay separate undo steps. + mergeWith(next: Command): boolean { + if (!(next instanceof SetUserDataCommand)) return false; + const n = next as SetUserDataCommand; + if (n.entityId !== this.entityId || n.key !== this.key) return false; + if (this.after === null || n.after === null || this.before === null) return false; + this.after = n.after; + return true; + } +} diff --git a/src/state/editor-state.ts b/src/state/editor-state.ts index f82f0b1..6034323 100644 --- a/src/state/editor-state.ts +++ b/src/state/editor-state.ts @@ -34,7 +34,16 @@ export interface ModelEntry { loaded: boolean; } -export interface AssetCatalog { +// NB: AssetCatalog and HandleMap are CLASSES, not interfaces, and that is +// load-bearing. Perry 0.5.1208 miscompiles field access on an *interface* +// that declares more than one `Map` field: the field reads back as garbage, +// so `Array.from(handles.byEntity.values())` yielded bogus entries that then +// blew up as `TypeError: Expected number for native f64 parameter` on the +// first frame. Class fields resolve correctly. Full write-up + repro table: +// docs/perry-map-size-av.md. Also: never read `.size` on a Map through a +// property chain (still miscompiled even on classes) — count via keys()/a +// parallel array. `Set.size` is safe. +export class AssetCatalog { models: Map; // Key = relPath. prefabs: Map; // Key = prefab id. modelOrder: string[]; // Stable iteration order for the panel. @@ -42,6 +51,16 @@ export interface AssetCatalog { filter: string; // Substring filter for the asset panel. activeCategory: string; // "all" or a category slug. activeTab: number; // 0 = Models, 1 = Prefabs. + + constructor() { + this.models = new Map(); + this.prefabs = new Map(); + this.modelOrder = []; + this.prefabOrder = []; + this.filter = ''; + this.activeCategory = 'all'; + this.activeTab = 0; + } } export interface Selection { @@ -72,9 +91,15 @@ export interface BrushSettings { activeLayerIdx: number; // Used by paint brush. } -export interface HandleMap { +// Class, not an interface — see the note on AssetCatalog above. +export class HandleMap { byEntity: Map; // SceneNodeHandle. byHandle: Map; + + constructor() { + this.byEntity = new Map(); + this.byHandle = new Map(); + } } // ---- main state object ----------------------------------------------------- @@ -148,15 +173,7 @@ import { createEmptyWorld } from 'bloom/world'; export function createEditorState(): EditorState { return { project: null, - catalog: { - models: new Map(), - prefabs: new Map(), - modelOrder: [], - prefabOrder: [], - filter: '', - activeCategory: 'all', - activeTab: 0, - }, + catalog: new AssetCatalog(), worldPath: null, world: createEmptyWorld('untitled', 'Untitled World'), editingPrefab: null, @@ -184,10 +201,7 @@ export function createEditorState(): EditorState { undoStack: [], redoStack: [], maxHistory: 200, - handles: { - byEntity: new Map(), - byHandle: new Map(), - }, + handles: new HandleMap(), terrainHandle: 0, pendingRebuild: new Set(), pendingDestroy: new Set(), @@ -226,7 +240,22 @@ export function handleOfEntity(map: HandleMap, id: EntityId): number { return h !== undefined ? h : 0; } -// ---- next entity id -------------------------------------------------------- +// ---- id counters ------------------------------------------------------------- + +// All id counters persist in world.metadata so they survive editor restarts. +// A fresh in-memory counter would mint duplicate ids on a reopened world, +// and commands find their targets by id — a duplicate makes undo remove the +// wrong object. +export function nextCounterId(state: EditorState, counterKey: string, prefix: string): string { + const current = state.world.metadata[counterKey]; + let n = 1; + if (current !== undefined) { + n = parseInt(current); + if (n !== n) n = 1; // NaN guard + } + state.world.metadata[counterKey] = (n + 1).toString(); + return prefix + n.toString(); +} export function nextEntityId(state: EditorState): string { const key = 'nextEntityId'; diff --git a/src/tools/brush-tool.ts b/src/tools/brush-tool.ts index 80f4ede..4503a4a 100644 --- a/src/tools/brush-tool.ts +++ b/src/tools/brush-tool.ts @@ -9,7 +9,7 @@ // both the before and after snapshots. Undo restores the before snapshot. import { isMouseButtonDown, isMouseButtonPressed, isMouseButtonReleased, MouseButton, getMouseX, getMouseY, getScreenWidth, getScreenHeight, getDeltaTime } from 'bloom'; -import { raycastTerrain, defaultTerrain, TerrainData } from 'bloom/world'; +import { raycastTerrain, TerrainData } from 'bloom/world'; import { EditorState } from '../state/editor-state'; import { runCommand } from '../state/commands'; import { mouseToWorldRay } from '../viewport/ray'; @@ -63,11 +63,10 @@ export function updateBrushTool(state: EditorState): void { return; } - // Ensure the world has terrain. - if (!state.world.terrain) { - state.world.terrain = defaultTerrain(); - state.pendingTerrainRebuild = true; - } + // No terrain — sculpting requires explicit creation first (the brush + // panel's "Create terrain" button, an undoable command). Silently creating + // one here would corrupt terrain-less worlds on a stray click. + if (!state.world.terrain) return; const terrain = state.world.terrain as TerrainData; const mx = getMouseX(); @@ -88,19 +87,19 @@ export function updateBrushTool(state: EditorState): void { if (!hit.hit) return; // Start stroke. - if (isMouseButtonPressed(MouseButton.Left)) { + if (isMouseButtonPressed(MouseButton.LEFT)) { brushState.stroking = true; brushState.heightsSnapshot = terrain.heights.slice(); } // Apply brush while mouse is held. - if (brushState.stroking && isMouseButtonDown(MouseButton.Left)) { + if (brushState.stroking && isMouseButtonDown(MouseButton.LEFT)) { applyBrush(state, terrain, hit.cellX, hit.cellZ); state.pendingTerrainRebuild = true; } // End stroke. - if (brushState.stroking && isMouseButtonReleased(MouseButton.Left)) { + if (brushState.stroking && isMouseButtonReleased(MouseButton.LEFT)) { endStroke(state); } } diff --git a/src/tools/prefab-tool.ts b/src/tools/prefab-tool.ts index a5c9c2f..1550fd2 100644 --- a/src/tools/prefab-tool.ts +++ b/src/tools/prefab-tool.ts @@ -92,7 +92,7 @@ export function drawPrefabBreadcrumb(state: EditorState, screenW: number): void export function updatePrefabTool(state: EditorState): void { if (!state.editingPrefab) return; - if (isKeyPressed(Key.Escape)) { + if (isKeyPressed(Key.ESCAPE)) { exitPrefabMode(state); } } diff --git a/src/tools/river-tool.ts b/src/tools/river-tool.ts index bb9aad0..67aeebe 100644 --- a/src/tools/river-tool.ts +++ b/src/tools/river-tool.ts @@ -4,7 +4,7 @@ import { isMouseButtonPressed, isKeyPressed, getMouseX, getMouseY, getScreenWidth, getScreenHeight, MouseButton, Key, drawRay } from 'bloom'; import { RiverSpline, Vec3Lit } from 'bloom/world'; -import { EditorState, Command } from '../state/editor-state'; +import { EditorState, Command, nextCounterId } from '../state/editor-state'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, rayPlaneIntersect } from '../viewport/ray'; @@ -28,7 +28,16 @@ interface RiverToolState { } const toolState: RiverToolState = { placing: false, points: [], lastClickTime: 0 }; -let riverIdCounter = 1; + +// Ids come from a world-metadata counter (survives restarts) with a +// collision guard against hand-authored ids. +function nextRiverId(state: EditorState): string { + let id = nextCounterId(state, 'nextRiverId', 'river_'); + while (state.world.rivers.some(r => r.id === id)) { + id = nextCounterId(state, 'nextRiverId', 'river_'); + } + return id; +} export function updateRiverTool(state: EditorState): void { if (state.activeTool !== 'river') { @@ -47,14 +56,14 @@ export function updateRiverTool(state: EditorState): void { if (!inViewport) return; // ESC finishes the river. - if (isKeyPressed(Key.Escape) && toolState.placing && toolState.points.length >= 2) { + if (isKeyPressed(Key.ESCAPE) && toolState.placing && toolState.points.length >= 2) { finishRiver(state); toolState.placing = false; toolState.points = []; return; } - if (isMouseButtonPressed(MouseButton.Left)) { + if (isMouseButtonPressed(MouseButton.LEFT)) { const vw = state.viewportRight - state.viewportLeft; const vh = state.viewportBottom - state.viewportTop; const ray = mouseToWorldRay(state.camera, mx, my, getScreenWidth(), getScreenHeight(), state.viewportLeft, state.viewportTop, vw, vh); @@ -78,7 +87,7 @@ export function updateRiverTool(state: EditorState): void { function finishRiver(state: EditorState): void { const river: RiverSpline = { - id: 'river_' + riverIdCounter++, + id: nextRiverId(state), controlPoints: toolState.points.slice(), widths: toolState.points.map(() => 2.0), depth: 1.0, diff --git a/src/tools/select-tool.ts b/src/tools/select-tool.ts index 69e8790..46e31f0 100644 --- a/src/tools/select-tool.ts +++ b/src/tools/select-tool.ts @@ -11,7 +11,7 @@ export function handleSelectClick(state: EditorState): void { const mx = getMouseX(); const my = getMouseY(); const pickedId = pickEntityAtMouse(state, mx, my); - const shift = isKeyDown(Key.LeftShift) || isKeyDown(Key.RightShift); + const shift = isKeyDown(Key.LEFT_SHIFT) || isKeyDown(Key.RIGHT_SHIFT); if (pickedId !== null) { if (shift) { diff --git a/src/tools/water-tool.ts b/src/tools/water-tool.ts index 85fe3d4..79b769c 100644 --- a/src/tools/water-tool.ts +++ b/src/tools/water-tool.ts @@ -5,7 +5,7 @@ import { isMouseButtonPressed, isMouseButtonDown, isMouseButtonReleased, getMouseX, getMouseY, getScreenWidth, getScreenHeight, MouseButton, drawCube } from 'bloom'; import { WaterVolume, Vec3Lit, Vec4Lit } from 'bloom/world'; -import { EditorState, Command } from '../state/editor-state'; +import { EditorState, Command, nextCounterId } from '../state/editor-state'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, rayPlaneIntersect } from '../viewport/ray'; @@ -28,7 +28,16 @@ interface WaterToolState { } const toolState: WaterToolState = { placing: false, startPoint: null }; -let waterIdCounter = 1; + +// Ids come from a world-metadata counter (survives restarts), with a guard +// against collisions with hand-authored ids like arena_02's "river". +function nextWaterId(state: EditorState): string { + let id = nextCounterId(state, 'nextWaterId', 'water_'); + while (state.world.water.some(w => w.id === id)) { + id = nextCounterId(state, 'nextWaterId', 'water_'); + } + return id; +} export function updateWaterTool(state: EditorState): void { if (state.activeTool !== 'water') { @@ -48,12 +57,12 @@ export function updateWaterTool(state: EditorState): void { const ground = rayPlaneIntersect(ray, [0, 0, 0], [0, 1, 0]); if (!ground) return; - if (isMouseButtonPressed(MouseButton.Left)) { + if (isMouseButtonPressed(MouseButton.LEFT)) { toolState.placing = true; toolState.startPoint = [ground[0], ground[1], ground[2]]; } - if (toolState.placing && isMouseButtonReleased(MouseButton.Left) && toolState.startPoint) { + if (toolState.placing && isMouseButtonReleased(MouseButton.LEFT) && toolState.startPoint) { const sp = toolState.startPoint; const cx = (sp[0] + ground[0]) / 2; const cz = (sp[2] + ground[2]) / 2; @@ -61,7 +70,7 @@ export function updateWaterTool(state: EditorState): void { const sz = Math.abs(ground[2] - sp[2]); if (sx > 0.5 && sz > 0.5) { const volume: WaterVolume = { - id: 'water_' + waterIdCounter++, + id: nextWaterId(state), kind: 'box', center: [cx, 0, cz], size: [sx, 2, sz], diff --git a/src/ui/layouts/brush-panel.ts b/src/ui/layouts/brush-panel.ts index 6355d94..ceb700f 100644 --- a/src/ui/layouts/brush-panel.ts +++ b/src/ui/layouts/brush-panel.ts @@ -2,9 +2,11 @@ // Controls: brush kind radio, radius slider, strength slider, flatten target. import { UiContext } from '../ui-context'; -import { beginPanel, endPanel, label, separator, dragFloat, toggleButton, Ref } from '../widgets'; +import { beginPanel, endPanel, labelSmall, separator, dragFloat, toggleButton, button, Ref } from '../widgets'; import { Theme } from '../theme'; import { EditorState, BrushSettings } from '../../state/editor-state'; +import { runCommand } from '../../state/commands'; +import { CreateTerrainCommand } from '../../state/commands/create-terrain'; export function drawBrushPanel(ui: UiContext, state: EditorState): void { if (state.activeTool !== 'brush') return; @@ -14,6 +16,19 @@ export function drawBrushPanel(ui: UiContext, state: EditorState): void { const pw = 220; const ph = 240; + // Terrain-less world: offer explicit creation instead of sculpting into a + // silently materialized heightmap. + if (!state.world.terrain) { + beginPanel(ui, 'brush_panel', px, py, pw, 110, 'Brush Settings'); + labelSmall(ui, 'This world has no terrain.'); + labelSmall(ui, 'Create one to start sculpting:'); + if (button(ui, 'brush_create_terrain', 'Create terrain')) { + runCommand(state, new CreateTerrainCommand()); + } + endPanel(ui); + return; + } + beginPanel(ui, 'brush_panel', px, py, pw, ph, 'Brush Settings'); const brush = state.brush; diff --git a/src/ui/layouts/environment-panel.ts b/src/ui/layouts/environment-panel.ts index 5e16687..43ef0e5 100644 --- a/src/ui/layouts/environment-panel.ts +++ b/src/ui/layouts/environment-panel.ts @@ -2,7 +2,7 @@ // Changes apply live via the pendingEnvironmentSync flag. import { UiContext } from '../ui-context'; -import { beginPanel, endPanel, label, separator, dragFloat, vec3Field, toggleButton, Ref } from '../widgets'; +import { beginPanel, endPanel, separator, dragFloat, vec3Field, toggleButton, Ref } from '../widgets'; import { Theme } from '../theme'; import { EditorState } from '../../state/editor-state'; import { Vec3Lit } from 'bloom/world'; diff --git a/src/ui/layouts/inspector.ts b/src/ui/layouts/inspector.ts index eedbfc0..01566c1 100644 --- a/src/ui/layouts/inspector.ts +++ b/src/ui/layouts/inspector.ts @@ -1,35 +1,46 @@ -// Right-bottom property inspector: shows transform, name, and tags for the -// selected entity. Transform fields use dragFloat (Blender-style click-drag). +// Right-bottom property inspector: shows transform, name, tags, and the +// userData key/value table for the selected entity. Transform fields use +// dragFloat (Blender-style click-drag); userData values are free-form strings +// edited in place (the editor treats them as opaque — semantics belong to the +// game). All edits go through the undo stack. -import { getScreenWidth, getScreenHeight } from 'bloom'; +import { getScreenWidth, getScreenHeight, drawText } from 'bloom'; import { UiContext } from '../ui-context'; -import { beginPanel, endPanel, label, labelSmall, separator, dragFloat, vec3Field, Ref } from '../widgets'; +import { beginPanel, endPanel, label, labelSmall, separator, vec3Field, toolButton, Ref } from '../widgets'; +import { textInput } from '../text-input'; import { Theme } from '../theme'; import { EditorState } from '../../state/editor-state'; import { TransformEntityCommand } from '../../state/commands/transform-entity'; +import { SetUserDataCommand } from '../../state/commands/set-userdata'; import { runCommand } from '../../state/commands'; -import { Vec3Lit, TransformData } from 'bloom/world'; +import { Vec3Lit, TransformData, EntityData } from 'bloom/world'; + +// Add-row scratch state — survives across frames until '+' commits it. +const newKeyRef: Ref = { value: '' }; +const newValRef: Ref = { value: '' }; export function drawInspector(ui: UiContext, state: EditorState): void { const screenW = getScreenWidth(); const screenH = getScreenHeight(); const pw = Theme.assetPanelWidth; const px = screenW - pw; - // Inspector fills the bottom half of the asset panel column. - const panelH = 260; + + const entity = state.selection.primary !== null + ? state.world.entities.find(e => e.id === state.selection.primary) + : undefined; + + // Panel grows upward with the userData row count (no scrolling yet). + const rowAdvance = Theme.rowHeight + Theme.spacing; + const udRows = entity ? Object.keys(entity.userData).length : 0; + let panelH = 300 + udRows * rowAdvance; + const maxH = Math.floor(screenH * 0.65); + if (panelH > maxH) panelH = maxH; const py = screenH - Theme.statusBarHeight - panelH; beginPanel(ui, 'inspector', px, py, pw, panelH, 'Inspector'); - if (state.selection.primary === null) { - labelSmall(ui, 'No selection'); - endPanel(ui); - return; - } - - const entity = state.world.entities.find(e => e.id === state.selection.primary); if (!entity) { - labelSmall(ui, 'Entity not found'); + labelSmall(ui, state.selection.primary === null ? 'No selection' : 'Entity not found'); endPanel(ui); return; } @@ -68,9 +79,59 @@ export function drawInspector(ui: UiContext, state: EditorState): void { labelSmall(ui, 'Tags: ' + entity.tags.join(', ')); } + separator(ui); + drawUserDataSection(ui, state, entity); + endPanel(ui); } +// ---- userData table ---------------------------------------------------------- + +function drawUserDataSection(ui: UiContext, state: EditorState, entity: EntityData): void { + labelSmall(ui, 'userData'); + + const keyColW = 86; + const delW = 18; + const innerW = ui.panelW - Theme.padding * 2; + const fieldX = ui.cursorX + keyColW; + const fieldW = innerW - keyColW - delW - 6; + + const keys = Object.keys(entity.userData); + for (let k = 0; k < keys.length; k++) { + const key = keys[k]; + const rowY = ui.cursorY; + const oldValue = entity.userData[key]; + + drawText(key, ui.cursorX, rowY + 4, Theme.fontSizeSmall, Theme.textDim); + + const valRef: Ref = { value: oldValue }; + if (textInput(ui, 'ud_' + entity.id + '_' + key, valRef, fieldX, rowY, fieldW)) { + runCommand(state, new SetUserDataCommand(entity.id, key, oldValue, valRef.value)); + } + + if (toolButton(ui, 'ud_del_' + entity.id + '_' + key, 'x', fieldX + fieldW + 4, rowY, delW, false)) { + runCommand(state, new SetUserDataCommand(entity.id, key, oldValue, null)); + } + + ui.cursorY = rowY + Theme.rowHeight + Theme.spacing; + } + + // Add-row: key field, value field, '+' commits (key must be new and non-empty). + const addY = ui.cursorY; + const halfW = Math.floor((innerW - delW - 8) / 2); + textInput(ui, 'ud_newkey_' + entity.id, newKeyRef, ui.cursorX, addY, halfW); + textInput(ui, 'ud_newval_' + entity.id, newValRef, ui.cursorX + halfW + 4, addY, halfW); + if (toolButton(ui, 'ud_add_' + entity.id, '+', ui.cursorX + halfW * 2 + 8, addY, delW, false)) { + const nk = newKeyRef.value.trim(); + if (nk.length > 0 && entity.userData[nk] === undefined) { + runCommand(state, new SetUserDataCommand(entity.id, nk, null, newValRef.value)); + newKeyRef.value = ''; + newValRef.value = ''; + } + } + ui.cursorY = addY + Theme.rowHeight + Theme.spacing; +} + function cloneTransform(t: TransformData): TransformData { return { position: [t.position[0], t.position[1], t.position[2]], diff --git a/src/ui/text-input.ts b/src/ui/text-input.ts index a12d7ee..3a54e1f 100644 --- a/src/ui/text-input.ts +++ b/src/ui/text-input.ts @@ -51,7 +51,7 @@ export function textInput( } // ESC cancels focus. - if (isKeyPressed(Key.Escape)) { + if (isKeyPressed(Key.ESCAPE)) { ui.activeId = null; } } diff --git a/src/ui/ui-context.ts b/src/ui/ui-context.ts index ea0ebb9..4bdefd0 100644 --- a/src/ui/ui-context.ts +++ b/src/ui/ui-context.ts @@ -67,10 +67,10 @@ export function createUiContext(): UiContext { export function uiBeginFrame(ui: UiContext): void { ui.mouseX = getMouseX(); ui.mouseY = getMouseY(); - ui.mouseDownLeft = isMouseButtonDown(MouseButton.Left); - ui.mousePressedLeft = isMouseButtonPressed(MouseButton.Left); - ui.mouseReleasedLeft = isMouseButtonReleased(MouseButton.Left); - ui.mouseDownRight = isMouseButtonDown(MouseButton.Right); + ui.mouseDownLeft = isMouseButtonDown(MouseButton.LEFT); + ui.mousePressedLeft = isMouseButtonPressed(MouseButton.LEFT); + ui.mouseReleasedLeft = isMouseButtonReleased(MouseButton.LEFT); + ui.mouseDownRight = isMouseButtonDown(MouseButton.RIGHT); ui.mouseDeltaX = getMouseDeltaX(); ui.mouseDeltaY = getMouseDeltaY(); ui.mouseWheel = getMouseWheel(); diff --git a/src/ui/widgets.ts b/src/ui/widgets.ts index e9e1425..4e766e5 100644 --- a/src/ui/widgets.ts +++ b/src/ui/widgets.ts @@ -66,10 +66,13 @@ export function labelSmall(ui: UiContext, text: string, color?: UiColor): void { export function separator(ui: UiContext): void { const y = ui.cursorY + Theme.spacing; + // drawLine takes (x1, y1, x2, y2, thickness, Color) — pass the Color object, + // not its four channels. Splatting the channels made the engine read `.r` + // off a number, yielding undefined and a native-ABI TypeError. drawLine( ui.panelX + Theme.padding, y, ui.panelX + ui.panelW - Theme.padding, y, - 1, Theme.border.r, Theme.border.g, Theme.border.b, Theme.border.a, + 1, Theme.border, ); ui.cursorY = y + Theme.spacing * 2; } @@ -269,8 +272,8 @@ export function vec3Field( ui: UiContext, id: string, labelText: string, ref: Ref, ): boolean { - drawText(labelText, ui.cursorX, ui.cursorY + 4, Theme.fontSizeSmall, Theme.textDim); - ui.cursorY += Theme.fontSizeSmall + 2; + drawText(labelText, ui.cursorX, ui.cursorY, Theme.fontSizeSmall, Theme.textDim); + ui.cursorY += Theme.fontSizeSmall + Theme.spacing; const fw = (ui.panelW - Theme.padding * 2 - Theme.spacing * 2) / 3; const baseX = ui.cursorX; diff --git a/src/viewport/orbit-camera.ts b/src/viewport/orbit-camera.ts index afe78c7..12f2bfc 100644 --- a/src/viewport/orbit-camera.ts +++ b/src/viewport/orbit-camera.ts @@ -24,7 +24,7 @@ export function updateOrbitCamera(state: EditorState): void { const wheel = getMouseWheel(); // Rotate (right-mouse drag). - if (isMouseButtonDown(MouseButton.Right)) { + if (isMouseButtonDown(MouseButton.RIGHT)) { cam.yaw -= dx * ROTATE_SPEED; cam.pitch -= dy * ROTATE_SPEED; if (cam.pitch < MIN_PITCH) cam.pitch = MIN_PITCH; @@ -33,7 +33,7 @@ export function updateOrbitCamera(state: EditorState): void { } // Pan (middle-mouse drag). Move the target in the camera's local XY plane. - if (isMouseButtonDown(MouseButton.Middle)) { + if (isMouseButtonDown(MouseButton.MIDDLE)) { const speed = cam.distance * PAN_SPEED; const cosYaw = Math.cos(cam.yaw); const sinYaw = Math.sin(cam.yaw); diff --git a/src/world-sync/sync.ts b/src/world-sync/sync.ts index ddceeb1..99e1c5a 100644 --- a/src/world-sync/sync.ts +++ b/src/world-sync/sync.ts @@ -5,8 +5,9 @@ // ids into pendingRebuild. Each frame, this module: // 1. Processes pendingRebuild: creates or updates scene nodes. // 2. Processes pendingDestroy: destroys scene nodes and unbinds handles. -// 3. If pendingTerrainRebuild: re-uploads the heightmap mesh. -// 4. If pendingEnvironmentSync: re-applies lighting/shadows. +// 3. If pendingTerrainRebuild: re-uploads (or removes) the heightmap mesh. +// 4. Re-applies ambient/sun/fog every frame (the renderer's begin_frame +// resets the lighting block); shadow toggles stay behind the dirty flag. // // This keeps the scene graph always consistent with the data model, while // letting tools batch their mutations without worrying about GPU side-effects. @@ -17,13 +18,15 @@ import { setSceneNodeColor, setSceneNodeVisible, setSceneNodeParent, updateSceneNodeGeometry, enableShadows, disableShadows, - addDirectionalLight, - setAmbientLight, + setAmbientLight, setDirectionalLight, + genMeshCube, vec3, mat4Identity, } from 'bloom'; +import { setFog } from 'bloom/core'; import { trsToMat4 } from 'bloom/world'; import { buildHeightmapMesh } from 'bloom/world'; -import { expandPrefab, PrefabLeaf, createPrefabRegistry, registerPrefab } from 'bloom/world'; +import { expandPrefab, PrefabLeaf, createPrefabRegistry, registerPrefab, PrefabRegistry } from 'bloom/world'; +import { EntityData, Vec3Lit, Mat4Lit } from 'bloom/world'; import { EditorState, bindEntity, unbindEntity, handleOfEntity, } from '../state/editor-state'; @@ -36,8 +39,142 @@ export function syncWorldToScene(state: EditorState): void { syncEnvironment(state); } +// ---- placeholder rendering --------------------------------------------------- +// +// Entities whose model is missing — including sentinel refs like +// `_gizmo_box.glb` that some games use for pure-data marker entities — must +// still be visible and pickable, or they can never be selected or edited. +// They render as a colored cube: a shared unit-cube model, sized by the +// `userData.halfExtents` convention (full extents = 2 × halfExtents, matching +// how games draw these boxes) and then by the entity transform. + +let placeholderCube = 0; + +function getPlaceholderCube(): number { + if (placeholderCube === 0) { + placeholderCube = genMeshCube(1, 1, 1).handle; + } + return placeholderCube; +} + +// Stable display colors for well-known userData.kind values. Unknown kinds +// hash to a stable hue (two kinds never silently share a color); entities with +// no kind at all get "missing model" magenta. +const KIND_COLORS = new Map([ + ['player_spawn', [90, 220, 120]], + ['collider_box', [150, 150, 158]], + ['point_light', [255, 216, 96]], + ['enemy_spawner', [230, 84, 84]], + ['weapon_pickup', [84, 180, 255]], + ['wave_config', [200, 105, 230]], +]); + +// static_mesh placeholders take their color from the first tag — the same +// vocabulary the shooter's baker maps to paint categories. +const MESH_TAG_COLORS = new Map([ + ['building', [208, 178, 140]], + ['terrain', [110, 162, 92]], + ['prop', [165, 122, 82]], +]); + +function hueToRgb(hue: number): Vec3Lit { + // HSV with s=0.6, v=0.85, folded into 0-255. + const h = hue / 60; + const c = 0.85 * 0.6; + const x = c * (1 - Math.abs((h % 2) - 1)); + const m = 0.85 - c; + let r = 0, g = 0, b = 0; + if (h < 1) { r = c; g = x; } + else if (h < 2) { r = x; g = c; } + else if (h < 3) { g = c; b = x; } + else if (h < 4) { g = x; b = c; } + else if (h < 5) { r = x; b = c; } + else { r = c; b = x; } + return [Math.floor((r + m) * 255), Math.floor((g + m) * 255), Math.floor((b + m) * 255)]; +} + +function placeholderColor(entity: EntityData): Vec3Lit { + const kind = entity.userData['kind']; + if (kind === undefined || kind === '') return [255, 0, 255]; + if (kind === 'static_mesh') { + const tag = entity.tags.length > 0 ? entity.tags[0] : ''; + const byTag = MESH_TAG_COLORS.get(tag); + if (byTag) return byTag; + return [172, 172, 172]; + } + const known = KIND_COLORS.get(kind); + if (known) return known; + let h = 0; + for (let i = 0; i < kind.length; i++) h = ((h * 31) + kind.charCodeAt(i)) | 0; + return hueToRgb(((h % 360) + 360) % 360); +} + +// Parse the "x, y, z" userData.halfExtents convention. Null when absent or +// malformed (the placeholder then stays a unit cube). +function parseHalfExtents(entity: EntityData): Vec3Lit | null { + const s = entity.userData['halfExtents']; + if (s === undefined || s === '') return null; + const parts = s.split(','); + if (parts.length !== 3) return null; + const x = parseFloat(parts[0]); + const y = parseFloat(parts[1]); + const z = parseFloat(parts[2]); + if (x !== x || y !== y || z !== z) return null; + return [x, y, z]; +} + +// Entity transform with the box extents folded in as a post-multiplied local +// scale (column-major: scale each basis column). +function placeholderMatrix(entity: EntityData): Mat4Lit { + const m = trsToMat4(entity.transform); + const he = parseHalfExtents(entity); + if (he !== null) { + const ex = he[0] * 2, ey = he[1] * 2, ez = he[2] * 2; + for (let i = 0; i < 4; i++) { + m[i] *= ex; + m[4 + i] *= ey; + m[8 + i] *= ez; + } + } + return m; +} + +// True when this entity renders as a placeholder cube rather than a real model. +function isPlaceholder(state: EditorState, entity: EntityData): boolean { + if (entity.prefabRef !== null && entity.prefabRef.length > 0) return false; + if (entity.modelRef === null || entity.modelRef.length === 0) return true; + const me = state.catalog.models.get(entity.modelRef); + return !(me && me.loaded); +} + +// ---- prefab registry cache --------------------------------------------------- + +// Built lazily from the catalog and reused across frames — rebuilding it per +// prefab entity was pure waste. Invalidate whenever the catalog changes +// (loadAssetCatalog calls this; prefab saves must too). +let prefabRegistryCache: PrefabRegistry | null = null; + +export function invalidatePrefabRegistry(): void { + prefabRegistryCache = null; +} + +function getPrefabRegistry(state: EditorState): PrefabRegistry { + if (prefabRegistryCache === null) { + prefabRegistryCache = createPrefabRegistry(); + for (const [, prefab] of state.catalog.prefabs) { + registerPrefab(prefabRegistryCache, prefab); + } + } + return prefabRegistryCache; +} + // ---- entity creates & updates ---------------------------------------------- +function applyTint(node: number, tint: number[]): void { + // World-format tints are 0-1 floats; the scene API takes 0-255. + setSceneNodeColor(node, tint[0] * 255, tint[1] * 255, tint[2] * 255, tint[3] * 255); +} + function syncRebuilds(state: EditorState): void { if (state.pendingRebuild.size === 0) return; @@ -52,63 +189,73 @@ function syncRebuilds(state: EditorState): void { const existingHandle = handleOfEntity(state.handles, entityId); if (existingHandle !== 0) { - // Update transform (and tint) on an existing scene node. - setSceneNodeTransform(existingHandle, trsToMat4(entity.transform)); + // Update transform (and tint) on an existing scene node. Placeholder + // nodes keep their halfExtents scale folded into the matrix. + const m = isPlaceholder(state, entity) ? placeholderMatrix(entity) : trsToMat4(entity.transform); + setSceneNodeTransform(existingHandle, m); if (entity.tint !== null) { - setSceneNodeColor( - existingHandle, - entity.tint[0], entity.tint[1], entity.tint[2], entity.tint[3], - ); + applyTint(existingHandle, entity.tint); } - } else { - // Create a new scene node. Look up the model handle from the catalog. - if (entity.modelRef !== null) { - const modelEntry = state.catalog.models.get(entity.modelRef); - if (modelEntry && modelEntry.loaded) { - const node = createSceneNode(); - attachModelToNode(node, modelEntry.modelHandle, 0); - setSceneNodeTransform(node, trsToMat4(entity.transform)); - if (entity.tint !== null) { - setSceneNodeColor( - node, - entity.tint[0], entity.tint[1], entity.tint[2], entity.tint[3], - ); - } - setSceneNodeVisible(node, true); - bindEntity(state.handles, entityId, node); + continue; + } + + // Exactly one of modelRef / prefabRef should be set; if both are, the + // prefab wins and the modelRef is ignored (a second node here would leak + // and clobber the pick binding). + if (entity.prefabRef !== null && entity.prefabRef.length > 0) { + const registry = getPrefabRegistry(state); + const root = createSceneNode(); + setSceneNodeTransform(root, trsToMat4(entity.transform)); + setSceneNodeVisible(root, true); + + const leaves: PrefabLeaf[] = []; + const errors: string[] = []; + const visited = new Set(); + expandPrefab(registry, entity.prefabRef, mat4Identity(), entity.tint, entity.tags, leaves, errors, visited, entity.id); + + for (let li = 0; li < leaves.length; li++) { + const leaf = leaves[li]; + const me = state.catalog.models.get(leaf.modelRef); + const leafNode = createSceneNode(); + if (me && me.loaded) { + attachModelToNode(leafNode, me.modelHandle, 0); + if (leaf.tint) applyTint(leafNode, leaf.tint); + } else { + // Missing leaf model — same placeholder treatment as entities. + attachModelToNode(leafNode, getPlaceholderCube(), 0); + if (leaf.tint) applyTint(leafNode, leaf.tint); + else setSceneNodeColor(leafNode, 255, 0, 255, 255); } + setSceneNodeTransform(leafNode, leaf.worldMatrix); + setSceneNodeParent(leafNode, root); + setSceneNodeVisible(leafNode, true); } - // Prefab entities. - if (entity.prefabRef !== null && entity.prefabRef.length > 0) { - const registry = createPrefabRegistry(); - // Populate the registry from the catalog. - for (const [id, prefab] of state.catalog.prefabs) { - registerPrefab(registry, prefab); - } - const root = createSceneNode(); - setSceneNodeTransform(root, trsToMat4(entity.transform)); - setSceneNodeVisible(root, true); - - const leaves: PrefabLeaf[] = []; - const errors: string[] = []; - const visited = new Set(); - expandPrefab(registry, entity.prefabRef, mat4Identity(), entity.tint, entity.tags, leaves, errors, visited, entity.id); - - for (let li = 0; li < leaves.length; li++) { - const leaf = leaves[li]; - const me = state.catalog.models.get(leaf.modelRef); - if (me && me.loaded) { - const leafNode = createSceneNode(); - attachModelToNode(leafNode, me.modelHandle, 0); - setSceneNodeTransform(leafNode, leaf.worldMatrix); - if (leaf.tint) setSceneNodeColor(leafNode, leaf.tint[0], leaf.tint[1], leaf.tint[2], leaf.tint[3]); - setSceneNodeParent(leafNode, root); - setSceneNodeVisible(leafNode, true); - } - } - bindEntity(state.handles, entityId, root); + bindEntity(state.handles, entityId, root); + continue; + } + + // Model entity — real mesh when loaded, colored placeholder cube when the + // ref is missing/sentinel, so every entity is visible and pickable. + const node = createSceneNode(); + const modelEntry = entity.modelRef !== null ? state.catalog.models.get(entity.modelRef) : undefined; + if (modelEntry && modelEntry.loaded) { + attachModelToNode(node, modelEntry.modelHandle, 0); + setSceneNodeTransform(node, trsToMat4(entity.transform)); + if (entity.tint !== null) { + applyTint(node, entity.tint); + } + } else { + attachModelToNode(node, getPlaceholderCube(), 0); + setSceneNodeTransform(node, placeholderMatrix(entity)); + if (entity.tint !== null) { + applyTint(node, entity.tint); + } else { + const c = placeholderColor(entity); + setSceneNodeColor(node, c[0], c[1], c[2], 255); } } + setSceneNodeVisible(node, true); + bindEntity(state.handles, entityId, node); } } @@ -137,7 +284,14 @@ function syncTerrain(state: EditorState): void { if (!state.pendingTerrainRebuild) return; state.pendingTerrainRebuild = false; - if (!state.world.terrain) return; + if (!state.world.terrain) { + // Terrain was removed (e.g. CreateTerrainCommand undo) — drop the node. + if (state.terrainHandle !== 0) { + destroySceneNode(state.terrainHandle); + state.terrainHandle = 0; + } + return; + } const mesh = buildHeightmapMesh(state.world.terrain); @@ -157,22 +311,47 @@ function syncTerrain(state: EditorState): void { // ---- environment ----------------------------------------------------------- function syncEnvironment(state: EditorState): void { - if (!state.pendingEnvironmentSync) return; - state.pendingEnvironmentSync = false; - + // The renderer's begin_frame resets the lighting block every frame + // (immediate-mode convention — the same reason the shooter re-sets + // sun/ambient per frame), so ambient, sun, and fog are re-applied + // unconditionally. setDirectionalLight replaces the sun in place; + // addDirectionalLight here would accumulate one extra light per call. const env = state.world.environment; setAmbientLight( - { r: env.ambientColor[0] * 255, g: env.ambientColor[1] * 255, b: env.ambientColor[2] * 255, a: 255 }, + { + r: Math.floor(env.ambientColor[0] * 255), + g: Math.floor(env.ambientColor[1] * 255), + b: Math.floor(env.ambientColor[2] * 255), + a: 255, + }, env.ambientIntensity, ); - addDirectionalLight( - env.sunDirection[0], env.sunDirection[1], env.sunDirection[2], - env.sunColor[0], env.sunColor[1], env.sunColor[2], + setDirectionalLight( + vec3(env.sunDirection[0], env.sunDirection[1], env.sunDirection[2]), + { + r: Math.floor(env.sunColor[0] * 255), + g: Math.floor(env.sunColor[1] * 255), + b: Math.floor(env.sunColor[2] * 255), + a: 255, + }, env.sunIntensity, ); + // The engine's fog is exponential height fog while the schema stores a + // linear start/end pair — approximate with a density that reaches ~95% + // extinction at fogEnd, near-uniform over height. + if (env.fogEnd > 0.0001) { + setFog(env.fogColor[0], env.fogColor[1], env.fogColor[2], 3.0 / env.fogEnd, 0, 0.02); + } else { + setFog(env.fogColor[0], env.fogColor[1], env.fogColor[2], 0, 0, 0.02); + } + + // Shadow toggling swaps render passes — only on explicit change. + if (!state.pendingEnvironmentSync) return; + state.pendingEnvironmentSync = false; + if (env.shadowsEnabled) { enableShadows(); } else { diff --git a/tools/.testout/dumps/crash_main_21568_6a51d0e7.dmp b/tools/.testout/dumps/crash_main_21568_6a51d0e7.dmp new file mode 100644 index 0000000000000000000000000000000000000000..79b71fa214fd53cfd06741869f11e00696ccdc2a GIT binary patch literal 254375 zcmeD^2VhiX(q9S?nuH>xC|OY?h+ybJK$ad9Fcc*~G<8!XWle!#!38Wq@m#=?vtZXgQ1b^QQR4SyMQeEMCClKCiuT(HxuRdL=%Far` ze|4z8Qo{x))dsG&c2H`^1p%rpTvx&`87?5XiiO{s@Izg5fw5D7Qm4XoCy*a~iBdh` zx(t59<|!415Pm!1+TYM#g{y#~P61$s77{X)0u@Rnzz=jzU-Dt-k#;Ini`4x=n|^}) zS?4PC0r&vz$FK`H<%j+N5t_3w-xyH#*2c!hd1?^&aIz{^1u9?Jl?|{tsz{}%Je3ZA z3*fIs%~jbd7vh==XmJ~bIwUkFa}vl}s&YV1rpf~OEz3k{Z7Bb6g?0{6Bh+9O1OEmA z90byG!LkwH?+mcf29!+ro1|Umz*UMW)Tl#%BSsB{e}mOP_zi=r;bN!>e{&v4SE*3a zX;4?G)IIg!T&;c#(rSplw!}ht4}rMmLnt(a7dt`!p^GkuYy4rOv0_63Xbe_tb3k-p zRRtagv_q|f0bqvTt_LQ@B#(%mN%ljLy7W1DePNFUhp*#)SswxAkA46DSEz-7%#}xD zlGthy<*v^2i{Lu!<*3UL9vnjvSjU}(Ft*Jn+(JO9I^vH#6qSPf+dEPO@?Y!#e)ffh z$nf_RO@7?rC>!!`hH(`G@}F|6QaLzYL9l3l@q+jp4n<`ne~3>0u0JbP4`V0>i}n}( zSc!k%p{QKskJj<8{+m+w8u^onfAbGfS0aBL*nt7I@>lBYpBNsX zzQTzU1dH|;|Mbx8FKcM*h5T7C$$D{3fad?evjY^U(fUoD9{M44 zKU`5*d#ty1Q8KACJp`q{_) zOD}Cf(&wwKe(9ICA?Y7|&A;^0RwVuEb6@e&zaUk-iyY8Dg#PnYeg38GU>y2SCB5dA z9_jj!_|Zq79@F_x+7j|$`VKwbYBBv;q3urB>zB4A>9sNYdYm)w+p8xVIy|g_^ z|7rJkTTHKZUGl!(erb!6{_v^(rI)rT=~wmiFTJ!?N#D7bf9a*|O8Q^g?)*vL{*3h} zG-dc6eg3ClLbY{1j+rXvKCRup4{MaYJVt2Ie*D4axMheYMoX2v+?Y5-YriV_Y}MUy zwt6$#wQ~xLch3iZdkiOWfvT;VcE%y-Q9EdG948NkiJNyzP^u5abs4JDHQuOedmZLg zIXkI42Xt1p;>6ExJV9N3LCoM5brov$N|ldO|GeI+Cj8Q6{Z50f*EnAYTgq2I&~<5x zy5^8BR}Xd1m#3=XSKan8fi|UTGg_p^ zQHKq>T3Zj#23NRb>D5!<*U3r zIiP%@uDe>)^&ZuYsz7x++$_3!{GP%J-pNLhlr+56d>;!dToev!D@odvNA4YY<(N&#Z+D)C(W5Kxh zPEZ$?*V!%V`h|6ctCZ;x>ie6D#`M0-yS!TKLoBapE$XsR-AL}JIxXm=p8vl3r^`=J z7xssXTGW+5x||)<$eA70eZRi&O@&Su-jN)^{UJh6TMmZN%{!nEoh|BW`>fV)xB^t| z`at#RuX(#a)#>u5En^?`M2ot&nZRFRX`ex2Wq}_F-og z@Jna4I=bJ!0)sAJ{f2Q4faUdTi@FXT(0mx$Mm?C_M)i7V_M*)OT~9>O_=QkkUd`$1 zGs2VGrtND!_q}my$FtMal)_QNj~R5ew$5X|rnac-6UtX@ph}w>q~@>AD4vw$U0%zA zDPIU%$`{tdoECLisE;ZSR5vdOQWtiebHj}WU9HU*>bgy*tLYrz^IckbRVj5VlBH#HXk&hbq@ST~zX|S1nG~>GG#7W8KJTQP<$-HC<3QMpOl<{TUm7_?tmjYwHH~ zy|=WeYdO_J7tFUN2B;NFtN-??L04=0L+qnAwx}!RJuP3>V3ir(My(zHvujX_r@UJ7 zp{Ha(2?VT%Z?vduH1$!IAl3b;AQd<5od$a=bs75&^x@$ab^SwI)2sO2%K2k&HNStw zlByHbg+2_6_2jl`o&Wk>&4=;bR7211Ds@lol?^AT>m1N^L5sTDQr)NuP^lq-Dm^y) zr?}MCm6y?n13*_+i@Ih}-GK4y)U=Lj##=KN+@dD*7*=bdxi4=d%HzlQTwQU4N?mh z3{tNwa4jq`=xS}gaIF_Is-=1u`?jX5yr-J*STA)$Nr%&S8+5gHOu_zec#FEusM2)R zpQ@I;ajJUe;x^em(mg&5(q?Ao1_+dX9-U{bhj?3LL5sRFxE^*_TVLp|5;t5tYk^Kz zOMR44*BPK|Q;WKK(YRdKMom51Ry{EK%zSi63DKCF~7z?^0&Tpw6ZlgM1 z-$t$9-&Tz+8@%i06Vx>Xbj@y2*OZU(-m7vRY4h}gui99@oRay4PM1;^)iyZbyg=1n zjpbbi7GQ6#ysiZL^?F^NEJ6&1q&GAlCI_jXHwLL4M_;?_g^UyPA(q#VdR^l+1-d`i zP@S(2RM&nPs9yZ%?v2MzP#2ENy+(U7({%j$oOG#D)&BKWYS7T~FRhv0`D$$+buQ>S zzeQbdQ9qyDMYRtORe|HD#NK{_x-efEE$SM=YlpUK`Mh>&?6M1&?=|RZZGU(c=vvjH zuDyKEAw=yxrMd*uvL6V?Q)`aM%K|C#M6FC3+y`-ec#)6X{@zgVCfBsbBu z?iH=yh!0fj+XtxwBl=wRrzfEd#^=^;dr+3Kp&X+G;9&dpX2$-)AThw(Ut-maN)Y36$s>i2%^T^Cr>N56G*uL7r zen<&T$I8D@`*H@T>aKxm*}Wwl{{*^DB#eYa(JktFN_(!TEN7_&Q_ob{pVzHyFyyPX z_vg`vNiFJnb{o~hAeHoFkP2CU^_64tT3231AEK_6E$XVH`v4B5=I>JK^T(IJmt0|p-x^ARJoz5@_pr>Xr5kRH-O4H+^(3ML^cYu@2#L><-X@ zmx%9-L%eUsNBS(-&6%g|&>f-@VfS$w?Cs2ky~tvB*$DD)1IvvYPk0s6L(52SGSe~t zUjBAGPj)*QGA?$(4Vlgm^5UNM3A+;;m&kNdn6RSNvI!!GGW*p;257Q=pO@ps8^@~^bV zGOou?rb~OQ@>RcM3drA9hK!5d_Rrbh?DvWx#OJo#NBYUy{%za=p03#pI~mkOHQQ~s z(XUcpjC83lP5fS9GdNGkuGW?rrx(swXanRRqQE z&=9g){9dt%;yrdZpI-DEq0w%Mm;Oa?fzrPq?qzpOFRCY2hK!5db)Cs>@q5J(;&a>W zBfaP~Lb1E#0+K835$PD5Oqcd3bd2+|+tHuwb~0pK>@E){`QrDA6~yPZ+edoT(_9d{ zjd9T#-!wbUTXl4AySr2Ub~1Dj6uYf5{<7aIR#3dh?&i}Q?GoIl-8`-fpFkP!5%;n? zc>vjMXUMqNoy_vY?-i-U=eFBN`dsLo`~No))JrFZXfBzUqDJC5uYzgN6Od~Umaq&MmpT~ozqhxUWi zGIS9XyX!`iTr2y%;w6fA+s*vSkY4OGLb2OOkBcQeMtZW2?&a^=p>$uajv?b>w{tAX z6TesNAwIX=KGGZY3odqxoeABk|IQjkdc;mU(;ZC5^j>ybZS>qIo+0C6w}sbD;`fRP z#OJo#M|!c-2*vJ(tEfIl=M$868hSP1R;EikZDP0O0_wkG7&0z)hjM_JN)x-|-=IA$$qX46yDdB)7Qa`_Cce71{QirN z^y-?kwfBc=Z*6lM-XF2#6E1ekxE@@MeeD1NWlM10S! zV}JWdZ?so%vAgmb@^izlZM6GUt7N=kdgw8tKfrWM@6|5L7gD>dV#v7IUC-@9{9dtv z_@Zy$M)x&+q!&AlQ0z9+4|2a{q$^+bq&9)(Cv^-N7rQOFs5%vX%*WWIuQFMm7s(taW*L&n8!=Q6Te{9dtw`2N**JNes3dZT{9ec9cRMS6r! zV5rY}GL!ZTRWU3lD0bK8kv#Ex#RiJMqnPbxeq~56dX3PR-P;w7KSusK9o@^{GU0)}CZ{JVVCC?sBeo;`fRP#OJo#M|z`v!Nu+}p4V^Y@|62k zRZOpCy3hMnwW+k{sg5DzVs~93w-@$%#UA1tRK)efM|!c-2*vIa?xzxl-TEtzr=xg$ zbTZw}^jSUf2`zZWNv^sW?%a#rXoo(C-}N-S7Qf@Qx4)NBf1<7(biD+-8jUVrwtkM!Aj8A&O*=_7_ErKhCW zhNQ)&4!5Na9iAfojy;9eWpQ@$i##WZXL>TzeLg3NIY9lll_BF|cQQZ!tYyDf3?aU& z=CIv9(i{CIxY#YYK);^@I^H6?oeUWlyF+(;^(=gT%Phg z%^}ZuneOv>TFeGoH&_`mE_N$kSBu{(h7h0IZXfB5_6ja`3ocOB4}uGn^#kHw?K1uj z+NYMxka4lw&hs(xd&O+xn>4zX`V$}NMXwQx-3KQheGkXUhJG|&%6d~xA$n*u(Ph2a z#P0eBXitvXz3o`~NozNh#Fscg58^hSFHciYYL`mn1{*{>hx6_3v`O!qm? zSKZ6&ONNY#-4?!oE`G1rM0{?$eWVvVjZo}PV1H+^U!?!GGuH;e zRn%_8?-fIcukuE=+edoQYlOb+_PZanRMP#b7>10C-SGuvxA?uH5Ap4f_=4(*kMx$0 zD4h|C-IXGjGgia>t;<0F$k)2qSwa0@IYY+9ZpG^k@q5Ku;&a>WBfaHwvODw#Zzy&f z%R%}>BVGDKqng*i=|3 zE?SD9&x|Xx^#c#4TyiG}g|P0ui5mRdlq~I}unX7r((wHIw`efrvNtuD{lRKY;imy3 zx{Zc&#D*@f?3WG$-8G|*Ue*`RkV`2k?-B`|w`KHx`OhnV&HVgO-9;!1<)92q|8vx_ z&cjCC8=NfC^JBd?(~al7apK){CR}>65eBYe_R_CY-xk+ zULpRBI~yPEsFVfHWs&Wq$PjwxC+Y^+fBr=qco*VaO7hw>UrxcR(tqLUIZeZqvQe{< z8ad=N_3NC{_80eUr=CBhU+_Jh?+!@o)InV{e5oq@%k5JKuWF+@{qmM3;8?QuQiX~E z<(np!2Yfv%FktbsgWCt+bZ5Y*L05G=*8W`FTCRnL*I!DQ!F#L!o!8+l)CjBP!>9@hemOQYcO_0XARBTs1={ex`p`bZYHS8 zw@jz2F9^B<+H3x@gav6(;vHF3XRKYwKlL$SQua;<1=fFw5h1wmaT=4G@(31xk?YZ>q zy|ns~ei3La04X-e3rh4zndFC*i{PB%*|5)PvYHMhJ|6CZP1Z^B$DU&FU;*SQ6}(I5 z1j~-nct7k()ub$iaw*cv2G2;wJz3dsPtFE%J-NKV52=Mv*61grrzZFzBNwzU2J7r_ zBJvWgbUn7j`5}k)*IoiXp9?$8W`Mu(1ZDjW+%bMgE7p8nV5kB9NT9r64Jy`o*Poi4 z3H3PJV1YlL^`y@L8?cl-p7p1c@dV@CX6m0m-Y9_brFuL}XN5oB$Orpv25(sXC{gTL z7egDeH}R=I`HjU`ijOP@3@svM(O)<>FinOsFzpUW#mOtLcI*fC{3|;!U zes~F=6rmL!ujAJg@VTN5<_%a67U?AWGdB|dUjp+6yv_xG;agrd_~G2ulV5*Y8}$=& zVSb8VsyI<8i=lqyK+fC&fJj zqB$>?YJn~A+ zAv|A}NYboLf%N#cUo6->9IjKLza9=;_%9LqU7Qz>g4mJp58tlC?~^Rn>KT5e#8W>0 zlrNPJ_Nbop{`BYRP{(q?7M!1XB+T@~tIgFA^epzL`d-T)tLCVCoq3Z%^YX^=k#%dS|4reVq)8q2$GdnR2=C)%YjYouSN!+x9OyCe9w&~I9y$KlB6nY~T`tzi@TdNI z>Ym32yusYsRoo2l1ooIXugHf{7JJ=kU=PhW@*szJKV=?3oEgP4E-l5M+|qZVWLDv^ z)_)n;+D?2ugm2gzM=5ZaS7>;8+(P_Df}N>>3|*a$Y46D6<~xKM|}ubD+it$7?qGeIvTj@7a?;B9B5&D3q}t z;gjztT_+h7MuwQj#zr5J2HyW9YRt!&$HG1hyYq_~dYvJNWPAHjAK%h-vgTK9$D+n& z)Ynql|Btu_kA`UVk)8;VMl2P}*d7`kDb1DA!Mm>1_W4THy1soEI#-57wEAzB_Q1&V zlv3n1a?lIX>ejkjX@8tP0Mwq?5&Jd#Ruu;M2Aa?-LnxkN zm8xw=S20KMyISx)P?jSwdLr>}ovi-=^H(rw6b< zD2F}-A%1Jo3fXjWU(uQzTbSuH>X;p^Nn`RfJz#p^zu^H~ zzBmlGV@_oG@+qw=m6J1J-$KjH`mF@zlgyIGy3O=?+VZs&AIcGB{OM+qBQXA}P_N}J zEplLY@0}#)tg$UGUoemV3%6q=|0Xm&V0z&A9>8Twm2UYG4@vx4zWCB$E@yms#-y7b zFg;*;!1RFWf&Y0A{HK;Lb=zoJl3YzN?r@Z?Naqb-%a=;#lVyuQbNQlko_T3{;1A*f zT)sGT%NGmeySe3yxg7a}R0uPhrUy(9m>w`aV0r*P-uEAR`cl7(mMwPvs8++FsO;7( zUlM*KK3TR1G?y=CZ8bgc$MXO#U!1z-OANT6x#f$|Gv;!}=n)e)Jz#pk^nmFB(*wU7 z51j1fOBj2`brGG7ZoQb`zC%&D%`IOX5#F1}Vt*t)kt5JtzWi>goS6~R1FiM|E?@qg zcV9%2xttMCn9%fq=>gLNrUy(9{N_DyvX(Ck*%SNO8+WIa@oL@4krdOlW%G_u>Kb-Iw1>Nt*dEJz#pk^nmFB(*q~X11D?w@)55; zwvRt=ul^)OF*N#@sA61p_=?Y(dG3I2>!a27OBu2pU;On3JzK|^%NOyr2~7|DUOZsF z`|^7!Ni!d&2TTu`9xy#%df=pa;AAgf_ANj1UUSQrgrB39;_}5;{LqKC4#VZk6`KeO zpTH&=Ug53BT)s5%kV!B-@SFF5`R>baz6i|>m>w`aV0ysxfa!sg?SYfMd?{W1YqQIj zl3${(#pR2y_!TcbH3F9}ww(lpPoOd1RR%rg^2O*O6E{8Z+xLL^?#pk#49y&v9xy#% zdcgF6>4B5%fs?&_**EZ5v&)ybqm4n@(-$A{sgq8R#pTP^83aX+z$V!q4B5&fs?&_iCbCM?DD1ZP-8n>zF2-FDER=q zBhrWc^W6(@`SRjR1VxTO;ZJ7yM!LCt5f7Qr^uX`O1LnIgzn`)+b7FeH^nmFB(*vdl zPLc=yzm_li4$(3to|h|Pe)-YH?znuptcsQ`2REC`7x9e=O%MFhJz&23@<*=$X8uhN zm>w`aV0ysxKobxAe=T1^er)W5%M=GgF{GZK$~^S-d)m{NOTHs0PgevAzxnh#|Rq3HqB1EvQ|511bC(*yrs%a;Ux%2LbFXlBjd=&8%{znf2AjJ`2( z(*u80518-1{83BZ%(v+Q(*vdlOb?hI@ach*wS1A!RtB=B`Xi0K@M(+SWetQI4Uu@` zXDfv+P~@4Ptu%Vj#7z(Uem#K87e^ zzrvPQRG65Wlb@fPXiLv7$}b>fAR&Y7>8T2(z5Uh3Gw+`|y4#QK+wQ)nG<+ON%PUIH z$#HZ1^*@ zGNq;!EVUQe3$k;wi?SEn3f&TGvxD~(yf|^$@F7!szj$8vbCJ0)%a)@zuFdPU(;tia zHR-)t%}#(LzMbbew=V$zcQ zf<=jg6TzL?c_{_iw!*}e-1HH{3T#D4AtW(zaauufUQu?gZSb&|K^lWwbm^QIzUWtQ z#;*$>o_=J)?EKSFbTO2d&VhIIFZuNCMd!{Le%J0tQx0Br3$lQ9Lx&W*rJVECwzX4V z7*V?8p6z4KJO86gkR>xcTPGx8*2-2VDG6~F%TGvr7~Uz}ps+g!9XY2dl{f3ohg z=l(Y7)WBYIkO>Q?pvbMM+tHynl5happ1MrLlNzP!S+hdyzI_6j+IQt?VMlX@_dM(1nO7hSRdzSaeU3Z( z^w{>&t`CYUCrq6b-4|I-v|=U=HdM{dOLn`SzQ20a;PakpX?e8Lo))RPD)>ZFxSW^1>59d@lV!QU7`rSoZ9ug+z7kD}z$49^3 z{Of&>HAda{*{rgK!CjCgJ2zLSYR%RsPtBOOe_!veA5CwldZ7+Ev^o~2uRwdZeAl}$ z?1yW5oqb`qb#HyQ5V=s%3|nDgN@jLmrn}VkF8XrsM~@tyJMqTrvrCgYU5A_(Y2D_a z@pgNf-nfa$K^=eWn_raKcU@Y$cZX?ZP+U@!Wy|$spwFDi1xLfqDE+ly-(Mepec@gd zms^-tl;Ku5zWVxa-;Z#;-|Nqtdu}hz`+DeMFOiU?A$+clW=4LN@`P}Ivm)OZ1D2eW~^M3QEl6p^ou6({KTZBCD3_ZTAZ^eC2!#L{FHPX3`ND+Iq8Wxgv_?( z%*!synq*6zmY0#AxR^KxyDj}-=F1yv_dRyq!jT;YWE|O~@rE(e?})tk z?>*-XzU}fWm;MNkcr_DD{kInk(*TN+Y8#@2+zD?^rFPRZPX`)-t1=DVR z`~9z{kMFnj=>xA!cT{mE)AN@U4w_SxQe>NLv*#D$P`cEsZq1q1&xChjEy)<{i5T2HwS6Ea~ zoK}<#SLCC@#LSG6#0(hn5{C>MG$bZ5y#TIZpfAbHVK1f@WT$7^5|_-(Uov7?N@8|e zI*v$-a~6&8^o1KB{$b?(%p4k|Nd?16M^>~`D^CQ zPrs(sukr3sN#Y)pg^0?;M_0-)-xR ziJvF*Sk!YJDlE+Ms`dRkUzIZW>{t7qHR_J_Uw!+blUQ<==vAH<{LeX`UXmFQx{|k?cWu;+Q64SG<~pVQuWBOLzY-&d=)c<91 z=ONF(bu6v?m2%|K6nYg)hql*bg;}p3zy9c)v+9=DW+GQhb+gEpXK(|^OiV9Hvo~Kq zp|#tfMW8=Q^zInFxAUZ`4;#+tQv2$k>L1(vJ?h1po}KTRqV1jA@zu&f&cC#McFR>y zrB2y_Jm8Qy6I0T%JazBWZX;X|e_HwH7cG}M7S0)^^+Pz@vgIvy`{Ie2eReE<=$xQe zm)*JNjTcsasQCgWK^|}26Y%E9*;O<5j6NEeku!Use0u!TaXD zv`}kEz~fa6BTHSGFN}6hIg(C%SMG1TPAROXw@wRCD}IPd z!AAb_gjcexz!J)a#AygTA+E8Y>j z7vO4if+nxFtx}PQ&nFxW_%a>vs?PIKzZ2rW%mVy0Xr)d0I{1U*& z>F}!ql&j-0x4l=x@LATU@?Ej#>XiX%*1{eO4nzJGB)tysvJHLSm-y?TOAXsMMzgmb z^sfZmvY+r+zzbI)|0Xy8Bew!RyU{KG?}+b7trmGtAiiPd+k!t0c=?TIxc&Pq#;;BN zK;oZW12{j@$%5OlF9L4i^8xBQD%B6hsIs+h)(L;Rzd|OIs}alRV31NB0k6Lx?pMSe zVDAr=0V?)%ibsDHZiEQyX_ukD74R3roVYA?fLnjzlYn>o+FhPY5Z~0!jbE+d6W#g0 z4)N4MABsII5ns{YZQo5AzITVj--7r{?Vc606z6`*|JUb@K_gz^&&qp9@g& zKSvd#y;V>@CTQbm#O&+`MZAr_2+;mefLiweLdq~PxsHk{@HK5D)x8(4&s9+y34Z{;I30%*7RE; zs@IPJYQmwYY_$IcD8G4!G5sB{NcvL)1HoT!x&0ZA_)Bx1lK9gR->~pK!Os9Z?4>BJ z{0@#)sxRQtx3sxU+Gl4g@TaD}A^e>u0lu7$&8vd^bp<@(Sr7k~IEbI{uDkrVOb=9* zH}FS}fd3W1OK;KP@qw!0Y(Cu^mmi^XNs=Lb_FI9f{-Lkk{q2so1C=xN8xOue zP*vsV@DBjLo^h~$$0v~f2RgPf6vm$&UqOCv_wc{n0QUD8sMUuapzrOYfWPO7{~9~7 z4+ytl{)2;*{c}%z=Z+A6h;STVI(G?D&Y*AI_T6`Ckctn{;o-nPK!=|mq$)@0@H2u` z+4sxb_4~fQL8^S0$G!&ukD0OBUBCX(KS)^~^rZjCKulk=Puk}{1_!Bt%t2cIK7;!F z4B+;sJn73vf<0GKJl6m6(V*{V`q)@9NYwBH?($9s-0^+XmDpc7I>R(ii_doRe>^8h)!liemcJ0N=OEx~e~hvre_jW$ zXCCOA(9IlaZhxf$KB;4GZM?woHv{80y|7K}%SeOxC{O$qh>syW8ThYA2mg*a zZ!gxzGU$)1ZIFKLD0h8N%>#Tzggd_(fLm3L=3f{1_X@xrqY1wb>_4X{NHtms$M*10 z38YW`*zLcEt_f26)Q|4^vJvpIf>?L_MhBG7dBN`X@i^eguMW}dLwS#15B2L1y&zi! z{r}^okbZWN+rE_B0UuJ}_LmLuJ{P$2lMT522z{Nw3G#9={=?JU{J)j~z9+$LPr#qS z9`&Zye_?%T19);f!s7tHw`aV0z#W>jA^m+wF({1|3&k zFjdil^~dqr%1i9H3aFo5x^0%=%+`AFZL}uu+Ox-vJNMF2lV>+Bxv(Vl@`O_p+YOsv z6f&l9Xk$j7K~asy_|_{hIZY3k9{8r{}Fg%z8*iMBsN?ap^ zB6XT_st}DQVY^cMf(``L13c6}Kz$4kYvG2Q>J%8&cT#MiLW!MJRNox9M!9%B{RYw# z%-6l4GedgCJ#gn7_}ePaN)-FKVLOz%5a1N}?Mu`i^5Km}wE^hy0H?$6D;@oNpd;@D z_^Hc0{PESW3kFD-riYGx5aN_6yLJ3aQS*3rv>F8t*>`iDRt0WyZb?@1j!W*6B$6X@G@^tC|06lj>Q_jGi% z+vCrA9sNQbJ@|5u-)`5@!*uimI{LXfdh}}^`Bojh0O)ATO!&>!(YFE}icc$pEFIla z>!DwxqyGu$7XbhH@N??u2X*uc9sTUrJ>|7oM_&eXEW=p%;T=f%rAHUy7N2u1dA22% zi3K*eo(#J=i(soyZf;6mdNk~Z0<3@k(VaV73+aAuLEE(inUXn%%td0B&{K241;+Fp ztIa6_eK?{6&?Dey;dobvadbDCagk%~PIS>bC!^;=e5wyOnJM^4r+Rp&n_lXj&f2kg zeXgF~=?>Z`9rlG796r*iaPM?Qc1i~iBedW$q_Z+zoprbNl<+LZ58p)TPGQ{D-rG)h zx-jo_DV)DfoX*#~2t91RRzBD#Vz`de$vtMPp&W=y z!HD1;=5RX6pE|``pKu$~jplUluu2P#R;IIXI`NCEowq&<%TuF9YJNGL@mzzQ)==+s zq0HyFi=Ju=-j&mdKOKg2qRyDVQbYb+hIG;%TzAq_7ikZlaeZ;i>*{T%yTOL7*YdZV z4X9v!Qm?JXbj;_L%XqNCPKP0#gZWer)t70Ef6I1CyLI_WHuE%{_U8I*A?S)?euh@T!y|HFdy@6$d79`$XaJ5Ozr@M*L zaWeH24|onCSnk#OL+PJt_n$`PD)9#Bwr3H^757Vex7_+^ntz2Z>0I)(oaG)0_{sYt zr`y(P_Kf5Bt_=GzR2I0v9~MvmJn;vBI{^_z9Sx1pLjoeW)L)3=0Es9d3kJQXWZq5JO!UXW z{|NZ2zLGS<)09+Rdq}rXEdP=AfLIUHE|{kLCdKrC>4D$B2Q1oK8miW?C#<(2=dwqN z$yU6H2|@Nc5vKdgZ(ryr|C^WY0seo}yx*!--N*F&uBT=6X}xc_`jsEIO~G57tqNry z(%w3OIPb-=_sChVtZz<$llhyAL)tNzv6-PI4_LHa)~b&7Ho7^D?O*ZRP|Vc=DhNUpC-p0HsfW1RL=w+xBWA}FZpKs_vIO(TeP>x zVEiX2WMlicG~fPnrH`{;no@uXEplelq;d1S* z%en%Buwv5gPi8~xX(zo@pXeAU~n2Z8KiuvoaL$)))dD(-{EA;jl`Qy{Q+5pYIF3 z>_2jxezUw^%kqu+jd5M*CI5K&ts3Z`e2+dpCBs8F&eea1ANN@uj_Y#K_V2rdb{-O0 zr!u+>+P%0F{H-r;+vS#d@VscSt4nmzS(dn!TVpPNdFRfZ<1f8*-ki9VU&Y4Vu%jp; zZq?qwuDBca6vf9a{~7O56ii)Jz4F6$#n!l6mWIaN&{#A)ZdF6vmV+^I%i$hGfazrE;G$8`+>#a-f7{d}E=;<7{N*o?U$t#4 z-u+k{9e3-cJto~UC3yO(qO+poR$T*Tt@?S|s_zcY+YzW%ZK(=a`Ex+gwl9Nka235U zt#S9@ce_L>;8^v}!HhQHDkHATvMq6|zCZZTnvUvvSMhz*MjeQ|bs_pdP9Z6Klb)xB z@F^wf`58$C@L=Atm*|Csnb}CldXMnjl#-;9rLd=saZ5STGYXS(Q?m2mKrAZutn`AU zB3p?nXE_0F=nd1f{G9v(UCnU5Lg{aZR`ECZIhjA1?b*)u#r=!;qB-7qfN&S{iOB8m z5FJj)(n!%9U&;0+aQb-0V^~h|9!gijr?Vt*I>}cU)1%*KK9-Z7ovZ1|%*kJZ7iFw} z^V`H%%6#>#&jx2?AzujNv8)I0b>VL@`>~GGi~qw|ZWYT@oG$)d(xW)OC?zE+737HB zR;GtCJXlNo@v8~OGQFJTX(x-pSx2$#@6AF_fs@<7r53hpJJVBblyNNY!jxS5;*^|X z%wR@AN*Vwq_Sg$-ixIc8{Z*`YAKN4KE^Ig1RgBCKYMIZ@ddnG)<$Oyzfl2n1^cYBI z<$4p!b|#D8SdN1szWI!P4`I0poNqa`2M$7m(*ldKqFG-Vr^{l#?MzQ#=wdk!!Bg)V z_(A>9DqgUo9zjEgUUZ0`WOsh z?B`n6ThDl@lrQs3eXo~%ak-P1KoIlQaefZIMS2|15fndJIKH0kDrJ3DEKllr2*>YZ zSjRA1vl`klmvaGZ;6+kSaV{3KqFzap7B2VA3>RnH zmL$Q8Kv<5cImHDjaGqdMae+T5om5^r$xXM}i?YCu29_(hUmmDwmk_tHR(@6-R)>`5*|-%=YFlwFm8#yLN=f% zzbGXK><~F{;I3wu*vHLGqv4-LHi{9yq@<-4<47U-%gN7#0kcHg1Bd(~NA!Yxt*VH9 z8b9dF$wY3C94Rl!KgF7VPnHM5L6H8p7zT^=@T-8|!|>Y-zZc>6H2k)~ZwLJF5MDeO zZ6ExQ521tua1DokxkJE$1h0K^vS~{82g!caAWoqz9^kqS<048{X}G>>F2GRa6)>Ir zqTyP$mGpuM@Sy0%t0!MHt8G@h(fy6M=o1KsQc;MfQ>fhdnfGh^%nqKy`}8=Um=5m~ zITG*C;w_w9O)1lGLEZGc`E(i%M{K{CPrG8==)dySbQ+%INBk##5&w!mBp>2G(J%fM zoSM^cS-ddhI^M7iUoi{(yi48u)*Upzd# zzG*7+T%M*rF)5}8es3OtJEK~VNtg3*V@F)i3*=}w5Pq413ZFn>yrt(dZTuFwLU)GE z^%~bDUD6|Syy(L33m!PTlh-+YzW9VbN`(aEO43nV4YrQ%l7 ziM%pzh-F;3%2rVPdkiZF`PZM1zxNcc{0tm>h2{^@(`DT!&*6!iaL}z5{$8@&%U=&2 z%J$+Hy9V+3f8yuz&*&t_yVsCB;S-qkMknp0OUb9uPZpe{hQd4d7I^1^I#;!hD%w}4Kzj@fmIRvv;& zyf0{ux4t}M(oGMT9xy#%dcgF6=>dN|fcMfQtbgtK^Z&9qAmE$EZ?rpUmH<9goKGK@ zQ^?`XVeK^UMowsF96rOL(RTw~KR>MNLSN4iDEgKjcz$Qa;(!o&pFz&Fu7w+znEr#> zSy#xtRgt#~o_ER*@7p4sr@Y$hy7{2?=MO1tEXfIB=ug_#@NWK*^0}R1Ytozy zo@guOE0*EOkcl#)&-eCw!WhE0v!2a9^zHLO&pOOsjX92imCU!<2md~%AM_C)@)PL^ zV`x-Y!t_!f@xoswUjYyT!?j1B3Rm#a47h8qEpzMRCTRElrHz$;IZ4AUUwK1$zJkvr zFw`%cs(saF)zN3e8-w9vPw!-Ck5U{1=<5#)t}4{sz; zs6nur%YlEeBSO=A{n6*b8{4ScC&CF|iE5sj1}BD1QWwM39Kh$mbJ{|9W@}TquvQ!b z6g%K4@Hbm03GJ)muO_WLx;(tGt#XLGY;84(wiLEno>({?D-8`W^2!Iv;)t8-@yeX&!2##1t|~v5odT~ zd$p>L^i^N3 zII=z*jxQ`9Q^1RwV0uzkGg z_ju)T>5=clVX$)+!rc(O6M{843F`79XaRZf&jz$4tv%S`I!B}0fRY2;OSQWxv?E9C zn{ni)@WxP2ejOE*FDYM3J>lgB=qtZ*M;gK#yL!qu`5h`>@$d0q$T;tQTlhF7xg`=7$qDYF01O)lHSEabc(7d@Ff1f1Oeo)TT(JONgwwDH0AMTxFj^c9&Jt zJUQe-!eb{9gdOOCnDHJp4UzCd68Q&&lyf?f2hgFrR$Xg;jZ~*9CzuL5h;waY`<3*w zjGsBlQUu>PKVxjaqJr$qOj|)eNz<+7SfuKyoYQ8`oji5&Z1vjvE#D*PQu9Nk>ZP2p zPrq=GrsQ0Uc8&5uXv}3lc%4%fQgbL$g{f7^Qz>6nH`232(QkxpYCeyIiU#v*3iX^W zW-j@ulA*-6t@$Dn4(N4Gn11mDp|u2qYQBwBk;>_0xvqG!t9};A&zjBa78Y`}rY;g* zXmk7D5+~*3*5Ytq!Nt!tpG3k&x6*j#6F3{zf%DX8?cWSFS@q{cztnshsd{_zYoA8) z?LSieEN3V>eyVvl5)L*;|7-6_2;CQ~uX!(0S=4HYuWM?*L^<%{>zdai)ft}rhO#}v z1kjji~j9YcD6Tf{ALE(S4re7r7`f*mxBtM2uBv@Wc^|-vxNKKEF z*ON72k#N(=U4P1XykmI|kt^`=n$siIaJ5G8kE&mbP*+2H<7fAwmykZ^^HeUD7YGXf zd)2N8b&XnOVSZzOUAwrQ*LeAM^(ztT+SZSk?^JJ#P|H02t>>?6SFvBM|MK?Nzp6(^ zsOyxIhZix^C#0HGWUth%M7=Qwt@6=R}j8H3;)B04j1?K@c z_rRZZ={9X%P`QxGL+sgF9UY;rSF6gIZuEc5O&Lc&|)99ZUtIv#3H+kAmj6ohKa=4Yj#pdd>BB1wm*VklkelK23 z_mArE2wos0ek7 za@5`vqLphWG0-9Hiz&ce6YG>gt|>RLjO$m_W&B&lLas*J7Z~` zA$@suCzuU^jCXYQ1MfBP!(iRSUjrso-B%qD0lkI0e+<3cyS@OMgIP7OzB({Mt@YF& z>!&T(pL?p?MW}Ti`S#<;zrDI70=S*_=c#?E3zN0>72lrbjpa9w)NrwBP4%@A>JGK0 zmgU-`yvMT~VPv?rdRYYA@N)MLbsx5D|83QU5m37B`W%zwtycn+9krAQRd-xs4;a{?2VT8KhV^396 zeiF>})V?DzLX~^u*EQvLNCJepJ7z_w2R!_tDNXY0#h%F%!p8b_1II}l;6w#)EzS;)Zg5X z5#Ui8g_0vt+Ix>@J+(~R+b7S-gwAa0o@XNH+-)Yj9CDM_UQOY%4&CTQ7d^M_U98dV zXHk6BFoHNHVzB-~c8FfFhhpLW!Fc-Gy5Iu0GyRb*?Y;JzCUd^ZSx-F6mvlyaGj^=a zgqX43dinmybz$RL-V5tkRH)@w_|IH5^Hc5n0)n?wA93!9Vkbz2(A z7rMW&^Euw~UC;2>)O`qg!saq4tPx$l?Hx+G0~;g;9qe%x387nsOpN~GHW|^G z*#xEseuo}77;?6D-vHZ$)-JB0_DHAxcrt8XPIQ5u7`iHFIRa(A8`F`V8#Qn{ckrgs zWW#|V@;nZqQ8wbR?^J8*j-R8J76C5ulb@vfPD;I{ zNxVm%MI%Z7bB)|DQ$!bj>0bmFz7p0WbYD>PCo{j*0DYwszd77?`Qr4ZhpwdjdsBU5 z4XwT27g{b5~bf3%4kZ~C&M2>ho~HUB*_7t=96k1dA$INzl2 z@s%@VTx43<{?KnJKXr`DdoJa7kzLA4uwpIAap%W}e7&vuYst^{p=5uwmEb++5v*gn zmFZ6~-JPHEO?3aWiXr2YpL(`GhVxUkk;+HPDgGJChm=#r29o2>j}Q6!Jm{|_KL=kY zxtlw;-Gk33A7VXf57BFxzJ=-T{J1hHKeY@Qm;AWc{`haGd>oHaex#g2U*Y_4IaRzw za?UvPGSxR9^0Q#icOE=2AFRDCF$bR66~LZwySu)XjiB;qV7YPQ39n*$Xc_5EX1Y5+ zj^`;qPKJz2ew=K-^DBPO>hF{vDW~{1NUoGq#R`(+&W{iI10e@P;5Py`NeqXpk=lDC zqulw?ml-1+e# zKOf2>QG0_0-(*RIC$Ks2J=a`!eoBT@c}PD{#_hz(bm<4GjO{0;fXc_pka5Y6_+!PK zSF*sF+Ve{XtbmNKxLq^*)huwb&-i7tw`8eU-|;20U(Qmae8*okdsh~`+u{&=jIe0- zYgw@A%V+%J**mh-7~k*SQ#=d^(lD|`9rJM2r~WdT`^SnQBWtZq(3&sH~iX0>z9r6&|^fOGy9P&Sm~E4M})SY zRXG_lF8PUhgY2%`P0;x*!I+N;hK5mo%2{8<3X+qvwU+YZLq5Krss&qKN@|X6Ae^&W zI5x)j_#YQb?O&1!OlJC&+3T~Qvv3IgMB#jRw{9-%tDM2_)ujVWhkiC6`XYS0E(hKw zDuDNhhCyfGd1p_le+Hiy4*OY~ybpK0_x9+`zPW0)xY zS90Aq+CKG$EP@WEJDDDuP4v~X=VrnC0Hw-V@s2irlrv-;ZNQNHKJ}~CT7r%P+|Ry8 zPz|H^LS0wUzNU(`Bxirb7u4VSkZ<{%_(Om2hLRuB?)e*bHSe49khH59rmvj6FzZHq zU!jWLb5<^fj7xrE_}l<1kB4ErZj^k52~v5Dl2o&5Pv+WOIle1lnT)K`8Ic-(a} z@`au0i)YQug7+y(Rr1HQezY@WT=JtnpmHeRMbPyPLFZcpYi(5C@z)TnNF_N90X)9@ zkdN@e#V`Z*l^`EnHS2uNpU@__@3k~NagvH5BWyB z1ef}9a2eGSt?brTMyrC#4G(-ifn;v~7%7=46Z7*5i&FB6 z3N2S_9LSK7T~Jt*v>3iWV=JL_9x8l21=tPp>_H?iP=b;RSY5d<0|WKfL>3A`ZKnn# zakf3V_7&yl=M|`iu2Nn;M;AM^n#QnQw!kL_w=a++3C^!&$lej&rY{o-5I=3 zaX=jsbFO9ZpqT!nJ9oI2awu{Hy5(i(Wf#R~r!C6P%k&mTHxc9W3yY?dM6;x$?ziPd zj=*SpN>SGN7WkwZ2hP_&|5kY9?j0j9IHuGQhVgfH(4I&OH12nc|0>k$4Uc6zh~H>`-DaYf zucaq-SwGR2>L>hY_+mXL41o9Q@Xb1X2-P7XC*gLICnr7%i+m}leiy~ZF<&y{!dLPq zPA>#L#oUehxDfsBXbXQ?TcA6ll^2rE2z?~C9;PpSSN#-)A9_=29p%F%IH$`=po=E< za{TWR$Ov~Ld9(AAS4^v~Zzm$Fr8EQXrFPa5PjhkR8$8W<#iW@YFg;*;!1RFWf&UE; z7*A(&TLp94C_pZNAFk8^YO~zh9dtq{#`S=o1AZ7It9e9Q6GTq*Du2ak5u^xfd*_qNX{pmZzAzq)cq5U!6ddYE9=UANNCI8Ja6$BTXK;noQT ztCOC{3KTmO(}_!|xxC9EC%l`NKeAqpa<8-W{=7h0wWQ^H$i83}?0S`OtWOfq|JJU@ zv?uLP1`|7@k@*0SP{vuAsROGQ4skOzvB+F$Hn;QUze2fa*N;M92JIq* z`!THcSdXMUYYl#u^sW(94_7%!ldE`x{o*$lGeqyE`sCvLO8TvgU*Eoq=0C@& zf%|U^7~*voMf#H=ur+uv#Kgd!zrpasof_%dDgGJSx7Y^3H`?%Yar`bD?hs6YJZ2?p6F5-tsU`JE4{J2Cvth#0GBz z-nspyXYuQ=Vpn~SUiD(oX6gqkiRZHRVIvm5Yt5;`+Fmq0~1S zeWX6NHZQrO=wz4y<D9KlF<0y!0scv*>fZM}8Hl=(nGslg2Ok=)c+{ zU+O`KeYn?N|h>`fW}XdILD*AJzqvch+8tWiSC zxbQm^eW69TWBH3M7~dB*p-gkNudwSfE#qH8M@nZ*FLFxQzR3YZY2Yu9jd+9dBe?ii z))fN9K1{72&qY3qbIiM%lW;$6aC@~il9^A@s4(h0rfE#mW)KUg+;g&C7( z#IJksP&vNYWZ{_4;Ol+XP{Kan=IzIaUL`!FGnHd$2$v_@$s&}b7hIr=^YPkxbe#WSsO0>J z9)U20(1PSUnfdAtkiRLl|9?@h$acS7=D!#-h3Ns)1EvRlcOHF}xI<9GDZH;(B2L6Q+n+NR|VWU_HQ1I4o8T_<+mN3UCg=>g% z^Wi1#hr%}~WxN-A_VM!%l!Zb1d<$IT?@9Q*2|qls5bfy%0+QiWv`V-R0eNo%5n&AA z@4-FEov_qJSP8GItcIJ#2!{=TNC*h=cc{NoJ1z)NTOo7zO$bo8P7Bb!hTGW+!eGCW ztEWrA^H+e9A0+}g9y-Q& z=R;(7|9K_d7t=Gtwd6nkpvMMedHeO%nm#^|P@R3wjyh}+@|>dlrZcqN^&PC@(N1Ixy^sjBx zY5_TPz2jBmQN?;iMT_^Upr~m6GjHa*``cf3lVG(~o0rdKe($|`GxO%%w^OnK=Shr? z`l4R~oraqZG4?ng37M{Zw`o2BKjck7gae%c=Oyl2{qqSTAHw^T9^?Z)^5Y{1$owtv z5$_mY3VDl_?o5S#g^(Zo6ozitp8g9i2ULxU*)-Xtv+wKy#vRUpy=m9tEd%MbHS3YP zzgRV3KpH(S)U8{Z)%`6=KjewO{PGsf_woI&Twag zT3e%}M25`-56}RhuX!n?&LKE=^bn(K5aOq)pda9&Klwv%?~sm&@0dSjyq&T1-IHKvXnJrZiRo|mZ|~c0 z@T1^)N^Rpm?!5+_t-vK4#n=2Wpn-6reB5pfc-K~ypHU}I-X-X_;DDF zqwL{L-nuUNewmlMCEq7$8bc!T&bzWd(oT=R!P9l6^cy8U@qF#XPi05GhyRf0gdf~n zw0{730KMwIDOdK3!X0#Y->u!~_$c)E)3ra5HtrXUb1MC~%_V49f*(&+96~=%)O?2j zrr~zZOPzPLcTu7jLZd+6Jm$2sKs|tZF6KuL+z$Vz4dmG{O!k}5yh(&*Kz-Pv`5JP$ z^<$I3kXkzpST!7X&R3i;Zm%W~ecR0)&&qh1{TVkz?Ets$$;ttTgPc&kJ8MQl`@}eQ zbB5(NR)m9JD*EsT^x#8b(?`;NcpdH|H9zz88^=3lp2?2A8X9x!#0TQ%I$zT3G^0fd z=;?7i_d7iwiyTsJDKSyb4DHZ3cbrFpIB-Tk^^CGpbo?kjKBXJpBJ_7t$oPEg7nyED zX+I7O=jEYR(kT<580ZuN^keDwiSX<7ZlXLOLghcg-!~1q$jrCE4hTFzm(uI2JD}Za zccv%sNsno!0)ayZ&{==$w5t_W{ejjtwRb=+=G{0adHiDt`q85Cv6f6X`2jaaJMlWQ zBOD;;g+G<__`lZV@{B)E`g5S~vv$6Q^JPfGS(0JJ^k9!FzhDY}QFTW-*{60uf;_Ebl;4-XIW5NT>bCq= zzIDp!Q&x}ps?Xc6p1$e0_b*1j!PA-;1OL{|5XL=(joffzHckJz?|#KG3g|pVdRsd;Ei79@{MTHS4|!bAG>Yl;&?uU)SdSP5y=d8LuaX2j4d~rA=Dk+vkC2 z^Ix7=JN@a);ePweiS(f-?f(GHw3TED4gTz1(RcG~!x!Tmj7u=Sf&Ie=k2d%`Pr@c* z{##aHw=Zww-a7IR(xJIE-IQye>LY8`VBx3XvKIF={xjDL+@j+_^-gQhaG;yDP09zx z2XKd7!)g5Da{I@UitN)^ku_k_y3w)jQ)=Y{f z;5p@o-un}Qvr8X882X1h!VCScbp~|%BFF>2lW&yyhEIDOeJ>^Vy$t1>F+$^jr~c#O z{vpPX`3qj?UVkOmLtiiQrb)dAy#dx%i@&9?rb_Ja|E{3QGtTNRa`?LmOcEcClg5MN zBu3-Qx=?=;-6={B?3(2z;FO(a$|;(%q%&TajgYen$fww@kt} zeku8U-9HlXL+ZY4=Y!2SbMSRPH~pDE%qpB||AGGx8FC-m_3Ol&sC{oH+B=f}ywl$? z`rPb_kGnexWB32Q?@@4nF6(<(j{~&J(DmJ=fi4YnY2drifV8jQ1*LzFMjJWM5w$Kc z{mc>CA&udoqg5mQ-@U;e?hPs2drUF(fRA~C7+ui$o*??wp|nv(4zO|Z_rk+E*x=Fp znK4eh7}~%2f%zGbft;|nf$j^8T#MA>V1-i^ww3cFgOA(zA6A6XG?B@sExx$_ul#q; zKX)eH7^7Ni&Me#egqPCVzz&GS!l%IN$REK{;qBBT?Fh?qTa^z9CT%B4YPes=9u1ES zd!EO*F|;PJTOW=v?nwhX98K{*XQaXRI-mnJW_5RxKI)2CK>dLHaQAI(?QLc*;jn`c zRTv;_|d+oGSsNIh8#v-282pT*Zf5I6Zd`;Ws-QT04^C`^4+>KApE}@XigF zer?*6#`_t5_>kn+W`Q{>#{P<~k(=Sup{X(1m^fA5e>ZHlu3l(2c zyFix)ev%qkGkuWhOLCduU!#^s=jG4t#ZpcIoyu_a7dn7w<2}1(m~y;Q=`NFEXr%`e zDR3VXCecT1&Ap`RYWQ;C`8*~7eg9oqT5s(Bw)9Q29Z-*G#O6VSUid1B4lfLGX7eepK}hm?|7}7LLi43Nz6?(n+}xYUK{%L#`z| zDA&xZC0)R`Bk0{he8{zI2jze`@~R{*SsVYv<_TZ#vcf-=y`1v#oZv z|6899o}H}y-;gaDMbkmn;5HP48Xt>C%8*1Dns0cALwDDHmB%9-Zxf zFk9RK?KJp1tnEJ_+B3BO+q9hDrDKKCqC^U)ml-Ddhz;$3aC>X_@ECkE z4fff}!|H9VyBZ7ZZRdlKgCxIeF{6;QF&qEL(O4LjevIR$pXH^Wx-n!cN}+cGX7R}J z-!Z>A#+ zKjcDwi@ems+^-8e6az_ksf|h>`NVSkhmo}k~#JlCkZcYpgzH)zSr2lZI?OcnA4 z@|pM5#QZ;ma7WN@+t;4k4?py;zr&oi9_O=~Ule@UFCpBk==b`tm&)$__<&>SDjj2x zZ!E1pVSku#AE967wYxuc#C?}!3{rgPui?hT^G=a>Pfb{>g8sQK`q!xsb5S$~^kE15 zZ@6>+nv&EQ@7D1~e#im2VTYWZh96}adgqU8Z5=Y1YtIEIN*&s(_4KNA{+x5*(AL&L zt>ao-PaV}dy>(1Y>+CaT?vp=!n87=W{ts+zb%yUW|1QKX4g7#K@OgdS)azGSX&<(J zXwDd9SYJQQ<K^?vc2ASNOtyR^?trMDB2V4}seznlQd8vU-inn0c@6X#~O34@pcFgKechbXq7j&5{8UFkB{F^|r;E0?~mzVPhFF=-q2s#ZDy_M2R6^ zm)wZ<+7XNzZb^5~>{65NjaQ8|FnCUt*w47Yz~&X_8R*($k+?r}q1Zp4ZlM3ZiQ?Wo z!9eS%N&`Jd%oMva_CI-vvAZYFH_)~746(moW1#Ow;T!adz2)l);~p+wU|{h5zOQik zj&v^)_sa_nY&hd016^Y#8`vhE>fox&P4JHlxGKS(DqN_)=(To#fz4_Me%)dFntQ)s zmrO?YR2>?B56Kh=ASeW$!}&jEy}3Sb&_%1PbROTa!F-8-fW)&#VOU|K!e)i&AL6{7 zP@(>5KMB9)JxL#*z5@#gyi~A{dZ4EDX1A|L(8<|P_yYP5h~E!k*Z=r`K0A0c3GaDt zi>d$96}pws!3sOeH==w2oqTJPR9}#ppUdtp99%3iOJD) z0lc(6Z|s$nzDQ3%1V#D+!X4=i2=@!?^G1hPnQN%vlmOYkewF2FO)(wD`HlSXJc{ME zrE3BqwPa{{15Ad)Ztg2YUsX;((pa z-wm0f7eLRI@%(8oSGDzdM^S!r_1U?>aB3PT;Q&KwM}BU8cK?KW(=Hyjm3!J9l6+%6 zm|;zD$wSaoit^oj#3;OqI8gU^SWiTuF9orj>~StED9g-^Ro4?E&H>2Se^9eC0M zO5_2*_8{}6DFo}~AwqY((jTC9xPu1gBaR0>`)2Y5zL^HoV)ridtt&6`D7geCosRB$d;j+nP%M%jor_ zhsdSa;8Z4rm_zr*@GEd`!s3_W0#+9BJCyAFiW9q+nlFAcj(LlOW%N}-cr05r$rB`+ zA|Jo|G@IUR5=;&s=TJ%Rl_nPR%==M!6oxV9QRw+ZkLBcWEH}ryl)eh-tBU+M7H(?+ z#i4}Uis_p*)scqcu^K`lSVpEVTsd|U=S0p^y7vYzXR+Q`3!GAw^w*wWA8WkPcBu)`md0eF%5*EN353ZS<5UwD zmZgyX_{}bkJEs)uleNHK6(n(D3^;y46PjQ6f}Dft=B}fx!Q>|?#W^A|of+du!Wc^9 z$^X0*<&XimoIxb@0&h{KehQ7vF|ogAo?kEC47P@d!#1Q zI>riLm?7i*ubWC+p8Mj4&yLsdr3!IBQEYxdshs)9d6{&neK>TU@Ci^bK%jh{bK znn{o2hADjR6vzNycfykxc2cP%Yk@Gs3P zeDa;_Gy~%PD6cMboTx)3uij&r=M1OzGbtu)!k0_FD5FxuX1m(GgT>uArufGf&Lcm7 zUg;GQF4Jq0hRRqeQ~oa$>;Ktq=z_h?w&(&tEL$6 zelVxGtv+wSW*U!ky7Ro6J%6#Roc~xe$bW8{4Q0)IcX4t`)MfuMY2a7&dB^>Q@(;g9 zVK+WqkBBUj`XjuX+?x~KSK)pFTaFOuJ6@nmVfcKpUss=(bsfzopk4~w=3DIi@V)UW z;RgtJC-esUrkrnaRaUQct=luYI2Riljc|(3h z`fa>k`1y|$7*Tsr?JcXty;{b0QKR-JZW&_s zwE52cRMy1~lzvN~I{#mg$qu8}2puQ1TXw#oB%{6@_FIphswDfSgyf%s9{COeeAD_wz2vp3uK<^<<5BNLRO@Ie~ zo?oT>xrfw;r&&|1lc~;~M)hzm)xNpZ_r-YaDC(o;TR)>Wf2R}9WE!oo3-|D+(jUwf z^?66q{Azkbz39X83cU4Nxi1}hu)=zOdV@mPLC67lo`Yp?I!g4Ob|5t?}(d7o>;%IgZbK-bs{gILyQisn1{`HL*#4vtLi~RR{Z6hg!gEW9y_|uGV)HL zo1P=@v5(a93pg{p@Ht)|@GG82@%)MhxUuG;+ZYcJ5!`mLNJh{27$>Z=pr0=DK z<-bMk9<4VmEze;kyci4==3FiDKt0sBbzlLv^TE#smLzNM9l@<7>aa{$T-K+b&^*;ORT54oUlRqAb*K#{C}~g6JV%5 z?^vGqM*R`h`YWt>s2@Rr>y4#cud6>G{Lvl&!X5bo5bnAzlXBgK<>Pgk=CzV;KFwFI zx5VB&USOlPpImQ}d@lbQaR&rHtjopf1@-W2yX~wuop{`?QN5WS(RQm*^KrAd+_e*@@~7;FwStEWF2pyPwUMAR;IDnsQrmsvdsM)-U_K#+y_XzHsQRdv=xf9Qm=M^wD;07qn{!Yen5u$W1NZhIA&M8 zm|fdt*ug*gf6||Zo%PbkUwr34jT3}zF_7;I43}iM_k$t0Rjp0GZ>dNKJ|r}2St139FG7G z;dR{P!nmoU`M^}^40@Ok^y_>M#vj;k+tnUIQ(dr21OGc3h-&@pY!5O12)-lrD8?bT z4y#BUe|W@hc@?UCGL1KeQ==B22RW72dZ)+w;Z6;2)A=>0yG!Sx0te;GvuT7l{dj+T z_-WCX>mh-+PI$?*+i3SJuh=c0LbdaLt9)AT=N*N-(}3r)=F=P(#!)p#i(Xe+0+;DJ zPgva}>fWgC+`r=WpW@N7f5@v4y&LR%id-i1>Y-YJ;Y$Si)!p|ivA3vyMEx5s758R^ z9>sTEF7B4%1%apT!HdN|s`!?|hWfnysDI^(jud$tM+rpVz^i&Lg#$8D7yO^pz$Nv0 z<5p3A3I0~{N#quR$lw32Qk-;nKIB^B*LX}w{)J}vWiW8@4w_sSugd-&cF$@-kf0O3E!BT+8cUE{lN3>ycEH5a*<&>`pERz zY2&Hf`Vx{FP0^}>*le*;7x z-kk)pKI}iX*rVbeE%kb6k>J}XCH;h6d~a)gc&&sBUzR+4_!`0E_F~y8%N_Z%#HT@_ zvz-j~6gn8svMyR%(~Qh~4ukc?rcvu>u@TO=W42UhJ$5*clgaRiw_U^emD>yNuEH* z3F`V<%Z~%baTCXkYA?zUJfU)-fIH8MnALGfex})8P`-=L!OzyvJ zOB-bPfAr+-ms?&T&ie(q46t#H7XPMnp$|x23H=+!<-F(8_B(xN!DlznVw~XR;?Cc8 zGhCG@*-`$pe`wl^v3qNn7LUuhp5k)A^_O>w_*=~6$NFLbIL2` zS=PA}_#*l}Lj+n*ZtH(HxrYvGFnqnr-yZ(=6c+yeB>sy?$xG>XH~m6M=$}pDm(Y*t zz_|6k8Ke)#bw^B~qN1RrYE-2Bxg~SU3aY9r0>-Dj zx~jCKEHEor5)7D+(t?HLHco?efi4aFcQw#(ptKu}3Smzn6_+2*{xhqk9nH}G&h5Hh z7gTqTx<8=qd#-;jlPVN!$4Wu{`*Y@ZTkX`-*FTwQ?QGS0^?W_zh5DgB`!lmYAu?Ld z!8iVPTbufr=`|mI^fMi|?sm?}zq_x0IFk;c)HaWk`rEJj32(i>*E*&jYri65x0)5g zo}6rK{JL_O(5>kvZ_|t%Bld{8ht=Ju?q9BN&9rtk7mK8zEY8taWjx+ILg+Q@TVUS( zb-gI|b_4H#=LhRIXVT`fTDP{hZXI{uI{jI*e$leiLuQ|i8_b>b`0H>zQ<5u675a@V%nGw!VL+wMWPDG#)DPi;R}^ zx%HWUy~_FPy`c|^{+h*ZwJ3x=h4j#0ZHdrbspY*!_0*v55p_p@DFwOznsZ%!-eGj! zC_Pdv;{jXO!N}y-`V930`u*Mz^11YnA4?H~#;bvs0zuzo_V*P$@bMih_GSl!eB4J9 zBX48*R!Vuq`bwjwgGcKXKxcT@1mP3iDA3-gWcv5l=bugEKUer{iD%1D!Q;_!q`4)! z`cm+ zj7gIxPMb7&?2&O_%Q}8tIFklpSL94PX|iv8Ue4J38I^&G%KYgCrNLrC^sc)$lPbSh zdlNZNy~6%JyQFRS+_KkI>RZ$AGfYHlRC;*FDNN1DyiTzeWy)1dD67ga+Sfz zbys9kC%SG%?&Rqwk3VVhSO}*6qt`9w_V6k?+&7WV=S`bFYwF}vCr=$ajP6TfGko3E z+&+aPlSPk_`HAw6SQp~<;@WAsV^1Ry$`@45Iyp~*n*W}47jgZaQvPA^{UJ=pEEB@?hm|FaMxQ7HeNZ$e!K9g=)!%^;}0;O;a_|^`ukK% zOEn_5a`UfsQ)+`s33R`yx({ynqh<(b?FR$m({y10D$a!Wyi0dYvr-t!96W0se02$4O3gC-4^($)wh`OkZ+C9jVQD?(i|2+8Vs?y z&t<*?=L4`VTcZKG_2BkCZU(P@)r`kFtDoRCJEougSJV6|&5uQ6B}sVu{BMO#Io5h5 zs{2&JZ|XQ6=ML_W^5*`7K(Cg+sN(In`Z1pG3I}z)5D+oMdDCgyqv<62@!ePjbVHcj zu@&Fp1=$$(T)jP$dT-&)f0KOEa;`w=1-MvG#=Sw|=Mu;DjOWx1yLDgvNhV$D81~E* z{Q$Bb8?0wxf2+7!mit`6ck0K9_r+?OU){^9b?N$H&EMrd)$ni$-@LBX+z$@AorQ?Y z=c_-=qz7=8CfC3Hel|Jp&o>RRzWEjazDK2$?q4XN^F3!#ZNxjYoaTeon=}Fc zE52HhJ2XMS&t^Ftts-v(%$lw$+yfk&%bC`!#rDxKOyq%`!y|I0IkyX2A(gbL@@vl<$J$DMk zTr1>59ngHev>|YJ!h2VB%cSGjot7`$fqZLM^~$sc(w%7TTC*pzX8m(=ra>9s-gi*i zyw>iMe;@tm>z)VQ@iseqX;LwnJNx}*)fm3sD%|JJ-e)|4?)!~_RiG6K+&UVVA$tUMcIeyCI>0@bf zV#ILw@dfirN*B6^9qm4;yeLrWKJv&B?%b+CFj!JH*L~y=_xS3n;y_tdNg<(IH?MMM zS_fNKxPP6`cO=_qm;TtE5tXcHq-fV%RAA8BFDVcNuX)HfSXYFO= z{AJ_@lfRew#cq#Rd*2tYIyuuijOv5D?S{_G2NUDF`LI81*z-42PFlPFt@q#lSjkYP z#pNxTJNsSmw~3k7;Z!~b?zE2A>}o1>4VXQ@g{l4<-LW`?`V<+TnDVx5Vq*M~$-KQp=l8GbXN;pe{w=)W5PDU{+=-Vhe%l)s zsl3+b9YlNDUD5L--$oV+Y*`?%LD$e4^==Tq`iFii{#Ho(j?o*`ev#Ni8a^^#+#A&% zs?xqD)|B+lu!!=pluqaZ!HZN2Y*GF`rDL5Sbc1@ zFgU58svv)Ad0_$f8BM>jrFN1PSvbjRUOdV2o<9lt=XyZu0$$^mb#C@MAidkzL#A9i zmTv1DZ(08FR_Ni0mj7C!QA1%rn8-NsuxyKmW!t_-yfk{$?(5fDp?!$o&f6mQZ) z-meI5A0H0`{V|1j`17v)>-yjBaVCX7hQco%Z#`GX;k}^KQTXbg*RMZvw+ATvObVYh z-fCD*;mIhSj>7+O#>ML?{f@Ij3n@JDb)QaY_c-a|M4~h3ehzP^VQAa_jsMf->%E~x z8!W5re#;x8aC0eKO$2m03cvpA@cJ=-9!ue8-)}|kxX)^+qI6$79&|bi-+$op^?!Y? zFNHsq_`gWuL#)3Epwm(K2adUA{i*&hDg95RywmM|D}DD#R^ui2TcI~8@78u0|3?n$ zyMA-H|Gk#?pQOL%?zLJDru%Av`zQOYTj%4l;OE=KzDE#HK&t8AyipC9AOLyS#$e6c^-b&ERpbJw z-Z21t+;IUsKpU6?%vwEE5|?2HmAor&AC|KlK{PuYKMHwE)xHj6|Njwy+iRCf72cb@yQ-5 zXJNpn_jPZr=l&<}sbur#nhS;gn~OzM#(-nf$NJ*?-TIGbDY~9`jG}aoRh2_h|}$r}KdG67K?pzvrvg)@Tp9>VaT0 z!2{s&UxJ(OmHC)%%D?$q8K1ne;(0S}9(hWh8K=2*?acV8-hc-%o7WDtI;_p1}T%v0TJ^R>+)AtK2 zXl|Uwkum3Uv>&eyPp`P2$Az_XDW{fDo^HmRzW9fpUGX4~^J*gxN&I_ixRy^OK2NTo zxp5k|g?}$||JXwa{XDf|TP7WBt_6ROZEcR+LXWQaGSfQ3TEcffo^bN?lhVv75@1`_ z<11)x++&4Z`N9u(L;~ZX72jmi@!wkOK9LXl^(_(nM^;2L=}M=R@xO1yCz; zh7pU0hJRqimP|UF9g{!mkblF9&-kr_TGwq7|7P_MFBkszuAsT`5ms$e!%ilDG$I3O z1nyq(u6e5f@v$7~vu?%v<}HF${(oCRbK~^Z0Q|!m54DF@uV~@71ZuOEihhE+#sEG2 zWyKr(RzNI#vm^YSD`;+<-U0x9r+hK@6d$+L=k@DD<5aih{L7+jEq_j*WcD0dAZhRK z607ZBBL0O|{Eu&l?aW`C0@{(5S0r7X=P}0wk3N2n7mhvo*LnMg1DWq^1-`39%4_6b zQtoEn@c6YCyt(JkZhgPo5rw-P?IdGOUw%FBU9Ao3+LTAv)R11*BB2x3ate1Z+;y!E z?kSSR+{-B~aN^kp;5X|Vn3I=Z&3k3TjmJvrjtagj z`fJhoW}FERI?4sfwupa_2XM^t%Xn|@70!XG&i_vimK3^AD40htW0=orWqfeTog1hy zo5Awu6_gds4HS*9s4AIL!1JP`M$Rtu44+*%a`>>o@KK%-qedMyr)Wgch!Mkw&zUoO zWKsU)X}Qzp2P)|3)v0GqEm#<+$fiBBBZdz>v$DL5ggRzqoSe9|G;~XYhAh09zkz_$QOX@ZvO@z;L3ZX9ct0NBxuJxUx~XLh$-L! z%WvVm&b6Lia(1LSBN`KVzg;Rn&+J$<=&-`x?~9k^&RR*r~jUh{`To%uiY^1u1)2Cto+@6FQd5o zsuJtR$xRuThfixd`L18gIpfQ{x4o6Xge<>aembwEh9g@vJrr7>iyhGWsn`LX_)fcb ztA^Kb4VvEpt^UoUtOg}y*Pm9>Cs6yD=5Eh42^586=GZ@bDUA%l! z=A{{Q_G+HU(QuB+^UO?B{zt8QSkDfL-D*+Ttk6kV?WyF+nv*;~d)57%Wwg%F&kBd{ zko+9hcFoxkyUMT!NEo7h8&Oa7J?)j*cB6#%-y|?q9ePy#o#w1pmfjIyDFi+sqB*2~ zmD$VEfV)->)O-g72RyW%>igcEm*=qhJIr2_klqag=pY-j4zB+*?;WXiO;>$I1fsmh z5Yzc9&2raMeb0MA6hC^3;G?|9@V)Z2fBgzm-=QzUFot9MKz}5&p7vT%eFXXqc`4{? z*!}9MzNftxolUPk^|aTD%5!J&_pE=~l(){}?^REGt*AV77Qc7>3!Gm&jh|jm8Od$5!j%(-~(`PhuBccTK% zurnN!uuzIilJ)WNkpG@~zDBOYRR&Lgl|wG^lh(a*$w#~ z;UBH9&I#eDfVCFuXGwHMDX z1A-4A@IT3x`E8yzN`{a5b%gV65xTIiBF`th4b>G(3-W(su$Ml#i=GWQI#yOAuUz=YSaXOq|M|!rrA@lJa&95uj z?;PyN{JQ5m=Wbd5e6n@;cR9Zfea1wc<(OYrd(1z@$4_;BJw;U0cl|6co}De6rxMryi~>wjf({GZ~|iu7C(FGaI+pA4a(aQGtU-Ss}OWH9xmgQ zJuPnpZXEv5rCDYlbH)P_u0>%;A#f3%4$miqKV<0;vv0ZPpUPk1wim_j4BwNk`Ggzu zKVT`%htqmD;@{$!pKxuJc)R&+F;6IhD#^VN*r&_@~GC3xPeC`gpy) z!|^JQQxO-t2)i%M#kZ`ry2vZs;n_E>ZHsJADP5gkj zfC*JjD&hNA8P83S^8$YKY0MGyAO6t2eI2ii*44p>>ooi%v}MgHDGl)ccD6Gf-?rP= z_G5Q8v=+hCVpu4I($e8Wnk(x{9lmv?Gc+iRc zEUVFr3JiLD#}a-Vp3T(2oT`cCWmOgBr7^zA=rLYybuiG8o_|g>nV*{=(tsh%>GaW_ zf3Esx5logZCIw0ZRXT5mcpESfO5*6;lT#`3@OZz0~osKm%m$7iU1NbEWO^UnqF4#R8+B3G{>ozxfUI*Za$x zb#I&ReR22e+_ulXy_x4m8}^d67kigt{8N0)M8viUJ)mKaAm0zd_y2k7ML(_s65D*> zJE5l~k)G4vZnu{o=EwK_f7|y3BG02uw{wVp+j+5TxBC3QFh9SpNkrcey>mUnYZ9+C zd~MbwCq#r;Zr^o|wf;BMPM)T|v{#yhUs$)steNa+`mhY0 zHTFCVE+-b&-xa46V?Ie7c8t zrUUZ+JT|A)(H;cav*r4W=rg2e(Vgor*y|&q;{SseOa5=TT++)PmpB&56c+!J>;7o= zWNi!xKlgb85zeRapcFLAF>cKl$WKw-+Yy{A^Z?QKawMO1Lfx%=-%M?1^Lz75i4SB) z{*4Tkd=is$nb@PhQuw0u&BxTy9t66N)0sb=`b0gBa)5m9*D)pdN8Xlra)KtypGVg{ z!}rnbaQ$JurgXum9f&wH%CNde&HXeT)whUW^VOZ><5T{2UhH&u9qmD&`$zv%{M>bq zm_0n3XGp$`D1=-{$2}>-ahfq?*L0YBwqsJJt*wCWvVQr`y_i*hBpA#1dfl(geY=sJr<$>|t1fX2-6mWI4lmcOHT55jq9#!xbeJM2_gTfQR-H^&ip~{(yIJ z{Y~Y6NA>5+lJf1;-<@@|hm6Yim?0mSEZ4N>)21IWC2*~XxVzZFza#jkx+lyY!j;oy zk2&U^NPniZv<#V?Foy+t7>79J8xuBng@oNVuamt?E|CZ6fg;#AQsUR5d#s}a#U9x^ zUav8)W5edIkWSYxku53OBNBjR7!js9OWL#4*}H>$I{reu?U3nZho_h`TdDT^Xft7W zb6C!goN%02+`h1(&zQ*ypKRvTYqgvecTnCu2gti%=zlxYV{q8q6;eC1PWqc(g$-e` zBV91Zx`$(qH71yT92llKOFBc=S$e%Ypw}-fcZGB|J-m9~o>MNib6om_D|k*m+*$p( zPu$XOeYJOZftjQCj*;R2q+?{xjr zc(BCRtNr<$LnK~KIaAqhuFo69?;{}o?(BgHXM~;MvUDB+(CH7m?_+5v@%{kZI}1bo zWt?C0rIi1fcP7rYf3)dBIs2*vk?&g$jmr-=JI`cpcK`3~TNz_MCLaoSF!b8=-=3_E zUx;1+Jy-4$OE-HsPTwo(K31^nD1Fma-+&JBV%Er(?e`Z%LBj#kPV#-k{9fy}-$*$QA0yD7ruMK=U5m53 zeHY&tmpEx%U!OOW?jv?JERr?JjF3Q|+P5jJQRtK#^B-Y7i`&g|Tb7sZz%q>7UT>bf zy$JUkwS#fh!E3w!Y@f!T-E-F^1A3Kzd8l9KO`Y<=-mGVSTO2ShkIYv%&sg}*lycSV zfN1yQ^A!@_qkG=v>{I&bI*-6U@w^eo+tDwU zpY-SQ9WU}nbza^%UkWL`Z%Tf}xCrYCmaa#Hbv*(2PI<8RoZT5m%AsXpp2TyBj7Qmz z(=P0&zi^hGyo}*904#rtW4;|{0J5v!H#5kGD!y0OH#je_QRf)gc#X`ryYx&~vqHqj zsh3zl{cz5QJJ(H~zvkM^0G;W!w4Al*nGI()0YB)qyX7{8xlzx~wc)Gz;)!c&GiTEo zZO_@FM?m0%PmDf16x!EB*~y9b*fn$poX!}eTOXJ`671jIh9p{*|4K3e;OrJ0F+Tzl zk!vn7^FfgU$&U>RAveMSANtwJavS{wXG{JB9w6q~?zx8MbLdR;#x>H8EK|sMOmlzz z#cwRnr<2uuSNVLp6Qhv6==~77^D#)@K6AHo6}|Ef48}_|O;^c$?;1UWjk`NMFG&5z z@#1|Ih#%@J@2kg~akF3dKAn~R^?0W24#>NBZnltV)V&{Kv#k5BGV{H)>5ohN!jB0& zKoOdiUPQ;s_O$@e*b#WoRc5}omcqP2KlhG=wc{>^0@RV$%g!5OS?>pi*lsVgtkqYU z`Cjll&`x7VzMcFy>=N2c@=pi9JFb%XUVomEd8ZhDVdV$9srZ85Emz5WZ%6azz;{CT zaFNUD4m;$8{l=@_=lP=A&AP{Lo5E$f=WOKDl3x)H^9s~Ii?Ew>eg||@!SGdYnlq~n zyNR6MeFQcrv~<3xd6>Aj4A%HSu}T;%#a9PE^lLk>HF^eqiQ;p4as;)b$M!?Z>Zyh^vyay>eqU? zjhr!o!k;kvh3NkyO{D$KmB~rXQ%vj8gXT3Ffd4ijXKhmY6d4e1b2MD@t;Ig$we#q0tKZS$2 zH)u7=+XL!k( z@^W4qIxUY0osBU%R>)2#sP1bNT7MUQ*arrFF`mSxGEf!UCzj0rq=KMPb_U_HKM!*w zyN#oGkewpO{JDtXN1w(x_iHjuLe&$0O@)BC)Fns)X3@9aBG z#t->`(}_Dy_|c~^CY`2L6!FGH=odH)VS*L3@pQIq6a^mkrZR*XDv0I^B;X+rX_akI zm7e*AK2fe1!ju%n<-*=ehA=`$BG4Ycia;s0pT^>uj9yVmWsvT3I+?b!#_-aK8GhjV zr*#kXqdWV%31t1&MI^N@3-qV_HzwtOCP+Pd~R9yLO(v6Z>1e$?$!j{ zlsPAZc{OD9eZ|xT8t^ykp6SQyT+w0k4PW?-Poho`wRsB(shUT<2&o+ z4V`k*{cO^FHEDhp{rL2?oGAzXb?XN8<2&htO5fMC$15Da&^(c&u{2Sh#p@2~M`t<0 zk-p)7LjO!F7SF3MNs#CAb?$z=PUKAARQkVS-MD^yRwFKdF^wlVCvomsNUyYvJ#h`dB_e?Md6k0c`-=%c-VW_91Z)mFIm(aqoM(!S3XnhOBe*W6w{rE0K z)?zvR%_9!{#zBxEzi+_xBG=A-Q$y1{&Dx{-(OHX5=l^rp?$M9WRy3+S4Z8)69MSQj zceg^#Mpo6@-TU!biUyzN^T*~I{6@7OaJSeWB&j(6pS?D{AK#_etp0#=C=UE4163ml zrebZcesosia_bbK-*~CqZ3`sV;@X7tEnnNMA8lF>!T-k!U3wQMkM>d0f!WQ#l-rhY4YZ^yBhUbD(tZ>GQv0&@D>Z-QlMJ7MN!u z+Q{AT1CcvfH&dQ8C@DOP&I<9Ek%uvCxSJL_u;E&6+MVv!LE_HCG)^Bj-+6r|WOwNQ z4^5tKv|Qk)7;ygmnZ|^>?x8XA#P+h{p=P+-sIW=l%o1_;ge1TF6ep#oNzvlj}E#uxl zWliR<-g{@<*<*Kk;dj9g#wC|GI?k}M;xIX0%e{(s?@`7)dv9{Q=(st?d^k?<-fP2G z{NEmT!*Vw7jC=A4Ht&yPJq3vg#~)WP@emJBxo=bbxX%)O37zN1<)}TVQ03HkP4bHU z4DT}am#SaV`G2vTN&H1C-^G95rua~g>Fs{k@AsoEs-emB%}pk!XNZ2>g-bT1+~cmn z{rQ^4n&6U$cqqe$aYMz@<@K)?`oVd-m}e2#kB2dlQnAzLzhzv-GNiPkI~)3`h)KDO z509OAyqv;rUX|BZme^$vsypZe!xFE^fzp+4Rv0`<+`|sYx*MQBrhy>=+{wut$E`Ub zCt+y7?sn6(CNaJ2e*Epf{3tV|hkN>x(PjvK965}l-(mEtrJud?#ByPpWzCU&UNJ-e z5#&f_2_h`kl>Z|s@YtEtTq|fRbhpUwUn>y7I8VU%$dTpYX*kvohlkrF`u-ubt0cw_ z8IB9b=^Og-H=7?qJe>WQ&><=MH-p68-X8iS8YX>QU z*!KRGHMGa|oFAR;-XY@7@@ym8O#c*>XFq}=mB-{g>KAO*{sZjZGLaK@soSx-+CGmnC(5LR-Mvk*o4(|WD3X{tLK8h-JDdlIlZ&d#9|FOZw z#b2A}ew=dGs{8Ht?Ht?s>%?Ju!8*#?oNfjzVDHg+73Y3L>XHM%`0{OQ26xz27@Si84uC+9H=o1Y`RSgr5@ zs|`KALV%sHO$+p^?)$)OKf*Rc(1#png)T71X&SGVZK~jh@J{=e_Xs`U&)QY4l1{U2 zhh{lAzT7uOc=r~GSB64MVY)(>!UqnQHYTL;$8l|pk*3Y>m(b?<(r_)vdslP6j*S_k z$)~k=5BbPZJ8;yx!{878-pXJ2ZbW=`m{M1OpOOaVe0+cX$c2{m`+v!HKW9F}97^MJ z$gdLn+P4HBp&7pK0FADr&sf5p3r@~m_`<$>^cvJTN!0!lxFT!yx!}%BXj>6|D0q6_(h*ys44|-sKd-}ZKiq|s;%g{;B(qn+Hyf5(w z-xsETV){Gahw=}-fF|f6Ua-U8E+4yrPP$w27w9)%pO`)f@B5XcZyzXBJ=o5?Ko9(Z z203E#st4qm`L*P~@OFWCS|;4iaeBza5PZNN{6N3|Kjaz$*x8@cpP@-7eaePu!Px6J zgtI0{{K3bsau+EqRv1(WT26RGiO2&wfY?qBe6)jKO_6Q&z=QvGs`yxbgll+A+F`^$ z{b8}6f17Mu#x($-i>G@)ud{HuOXzhreAgUAXEobC9*@V4qr~0NgRTmlHqpvGb(XKZ zvZShn9thoQ&R+faxj9h4dQbR`{G{tkC^HQ+%M$#NcK~I66jTYS$F6hs>qpOj8GgWJ zEXGHB%W9In#(eq)Ud}|#2<Wqv`)?v}SoSJ#RXVzH-T) zYn@KNJlX^}<@hUOf;(ekLE1sXVLR#?8$XV?Q-D@WTbm{d??;x z8y=HlZ-%|;$0k+&+%)IBe)N1=U4w>S2|5%%<_~!hKd^18kgb^=#jk|6nesEaC=aj9 zncUBE$I}n`^5^6xk}Jd@)YeS{q9 z^%`ILCm%VHu^V~h&Nwi@u*2qFZR9rIBd*W8=GIkv?~K)M_gLW*?fdNJZx+$)y!G|d zOg|i+v5D<13Tt!-e$d7*|J8fe3HMz2bk5d|(YtPAu~|XG=~wmFTl>sCcKL6g8@p+I z!M)eteCNEw_HCN=ycq)K8Sa*K{ItC3{8`)h{GUE{y^`jn$8@^Pe@+9tq+8wYTD3Rr z{FX6y^njh8;q>n^Ni;wieMu7MZ>z4Q8?yJL>CzvhiDM<5(9ct&7)qtD>g-$SpB2kLulX?D<8P0g5d8{ ze2)XB3J1LnceYlk0>FKuwmYzQ05^9s9v}m`M(&_o%Q`I=U#(DSg*uHdl0mL9J1CcD zQfKv5NOy8)TN$0k7r8J7zzJYpVZskOt*#7IjGs&I>``U`9`_^g172xC+1%=axdE=< zfd^U)VSvYPA~K$bAaDA?4|v4|6-5gQDgyL)USV}bMWC#3VT>+#GlZdAS*qrgSIlEO z_;azx4|t{Jg=aBuHfg(9A?DA?!oOe|@8G8kn-n%GY*xs0-Gs;G20!{VhOcyK&wsA! z#Z7n!%MfNZeY6+8fRI^UH{p>O=I81r@{Uy4ZoCU-2Y4ln4e)pc1wZ3K|0tzPsuqfk z`DM{3S3mr#RX&XhH-1liAs^CCt8XI|okb7Sm@m7`MdeD?g+tnx$^x_XGb9)(QTO<_4-;HRX_l|k+K&n3k6{AUxv z_WTQ&C#82Y!3_Pmdy0Hsg~bZP3L6z}RJcu{dnXB(qp(Cz;$6N~>cJsoKjfmkESJ-eCyCMY=uza|qd4A6n)_ zf9oQ*La#! zcQ=-P;KvZgd0`pT<26bAfS2q-HQtGUAMlc0T$W5edN{Yryc$aZIUZc!@Md!SKu;cQ zomfy6m|I?<^*iF7teqD8yn@+8z}fDkAE)J2A@V`8d|y&j*@50l<`q;dG#3jpA20Dk zJi|(Vjlzuzt#Qg2Yp=*-jE1an?q;RFeW`)}n zx+hCGpTdyBMunRdx{nvU9ECLs8x%Gxgg%njJLP8v3VC!IPtRm{$u5pemOqj`Y@ICK zoew*6y~7XI;m7i@2^7(8wz9cCb3ddw#qwRUd_eVMryk(0q=%~M4Qkrg6^}RSTI>a3 zc3O{>)BD?oZz?%Wx!?iBN%Ug-ZCSB;A{9Q3HwpveE9w5s>47++N1$VN@ zaC*84CaVuB%L;->?__$PT~S?GygDvl7STzTj@4yF<+)YVH=%YN^pfFK1lr;y(<5C> znnP8ZX*)nq^BE5#cht-~;@E-KUREd;&i1ZQ%#A+0hwN*%8;wlcdNmI%0qr>U@5tyq z4SwTqw;6o9UuVAYuG3282PhqK%1)z%zN?Qw63Lim+q+I&{nZSRDNjJ)DY_NhGH@Oj zTEL8M5TMA$qRuo(TW)(M8XV zrg4w!L&0^~3eN zk$vSeecQb(#~BWG=zHb65>MzI{@+<n9w-q7NQEvdQRs;4eNSS^J9B%E}TuUsl6r z^Ek0{HOI!AtrvpOH+ONkdQ4@w?7V!>T|Z~~p~K{26DKaG1k*uYX#FK7;uMnI9wwp} zk^momkiYey(gPDHke&HMe&7$Ki(3P9qiBiV);g4KNv)vGtY?yIA-N5uuS(tA8Y_sQd9PzK_PHxz@=Kife z-7LI#Dji`MZ%wD$el*@dh{F(newMqczjZ}SpJ!JGDoO&CsrC73?w$RuE3NRn%7U_N z5;;&&m0egIh)q+)$;;RKx$FB|i&N6qPIf%hJGpoFx2~eg0;%sx#-GAB@3WmN?*86OY$uiV@ETi3+oaps?Lx5OzH zpe46~kF6x7A49TzypsFJ{#Kn8E~}oGO?TE)&%dxL8^R@#=hfUl^|!7~5nowxuu-Qs zyK`^vZ(T=sq2DX%+WeqE*nzyc`c9KypUZu&Kdt@7(yOY1icMJ+Cmnrakb_W`^>psj z{jKY*+LjGMw^3n(@mF}uG`g|() zwfyurDZ<#B0f+AViue`}dlhf5>Jsb}P~*52Gs1KPvzH}F5n zmdhEKPcr-~`(BXH2W;FTbV2X^T>1Kj8fR|rohIkv#ESsoAKEH(UL7R-;qIl6WZM)_ z&kXy699l2d_#wX0Ev>y+{)X+XdozTAd~D~mfjpo$(jnini$va+6|Nkbc%c#Krh?;d z+9TnJM)ue_}Se|9~JRzRDA)DAs;<~x&5X?PhmTzg&Kzc(a7Q3c3Dh5(Bd$1_{(igFo(a+ zqI>VTmsL%NhKejV9T_Vodw~4d#ycU7*B)i_tA#Oo;LQ;646FQhKmJ~$?$;Dnn(*iR zy>(1_lM}0B`(0ttSDMBYsGmdsL4Krm9Vz|&AlHmasnbAQ5mYYx-`Ck85(cs1EiwepbxkRbS>BT?k@gK zinn0c@6X#~O39c+?6}SU)}@Y1HhNf>nSm=^%T2~JMd)_xu^X>Qd)e*3YjhRL?OdHn zl!}GtA8(gpgNv|W7uWcIjxysosk(cLOXyvhEyJ9d)gmeA-z@s$WQm zw_4Jy-NW6i>t6Fu*wEu6nvF`Mxg*XEmt6@sPL;#D=DcG!%|S^&KIYn%FheoZpEbEpQj!!o$tvkoZRWISz?27cAWaf@; zd}_nE+vZ!YU}(d`QV+pj=(9hCclkA6q+bj?@qg{94d*g__;0*a{N0x);t6)!{|HyB z^jU8+&Ayp*ovUmz@n{=T=GtghumildAv@=?_uoYyox=uJWZ~mR-pD^i?&dcIhKGy0 zYtm!JKYFy-{gc&x`xD09RsE!a;dK%&x!gP3(8;jy0W&HusZ39=6|(#J&lS0X3kCj5C#U_Y z-|!I8b2wX|Z?r)7=W_j#{~fsqy7}q-P5LxWko`=Jg9NXohrp0RuhRAGrgU~y|6LS+ z4_xf*Ht7*;JkUV*y#m7-2N}C{h(N!8kl_o6xViR{@}IM}KreX|(=S!~!S%yi_VRy` zl>6U)@5uX+&5nqk|M> z{+a4mw6EcB?l<);UojW3=F?t|LW23UT3bZBIVRD{LO!i9@Wpde>B73nbY-1pyzg25 zF7p2!4diz+y|)dN_8C$-?HTSw|B(*+gr_#Vee8T|XD&x#&I&x?-SBG(OC%?jfb6TVRXXPzPXeVgX{1SFfKM~Zma zP?COf`44>u<^OHTXtCQwgZJqb6%PuG#apFtUT2A!p=GL{u;KwaugS!yAJ=L^&#B5k z$MJum{3lK1AH8Ek??ne4yloV9Zu!@={gcnRZ8q(*XTg|{Xb8f;qDzY|O?K(=k3RZc z5%|^`kgkk77XD*f-{$|wmFG;j>Pn+SKk+J*FU~a==<+4HiohTEGrAv$@Rv*`aZ< z$$i>=*KA{NjN9Gs&g;b_FFJCtDL;UWLndVY6HH5^j+*jTH;bywP8mlq6Xuz!yT9N$ z1n&N&(dOl!T{)=r1@2F0ZOs}`^h(;llrmt5`sLVb*g$^#V|l!sUP%~u3E4|tAr3@1 zA)YRFj6unz%lz0hpz}cxJ52eafi0W|Z27>;Zk#t9Y0mu!Y9fAmCW&4+lGA>AG3|;` zmj-@t8u)nAbD31JEN))&g*o?#YR5C)WAp+DL5Xr}$K5xXCMW7-JrA8mRp zlO79M0=wsK;R8FtknP*ryy>Y-I-?&h3e2vaJGFf76go08w5o=Om`TlBn3Jc~C%ed{b!$ zc_Dq#Y4HT}@}{pcse^Had#%Kik9f0b87%so7noNRuxa$gP1`dqdaNS5vU>L1it_4U zc4f&qfw3coORzTo|M~yz9sO?{)o~0-h$sY4AccC!<<2p|L}|FDiE%y}E`f$LvA{9` zMNt&r**-WoCcfBKn)FLch0q2Fy@Y_nS9R@QU+GftIMPkP8PgD2)tl z35^hR-pB06%bh}nRMhsK<$WJBZ)V=?dwaXHZ)PhWCLjg-Jxkx3m%#t7p}!|TG;EyR zP1iRoA0?nU)X$jh7a{CL$}mwmoq&bx)nU_Q96yGuP+qG{C7=cFZ+za2SKY3tG;y(! zXJBx!81>wFz4F%tTm=tiEWY}wQ^|YFgfPqHOkIx0DyI^#2=*5(zKl1sJkaN|q5PeK z4zE<+Nx;?cK-uEUe4f0+;13TBtB5l}dZ|)La7>r`CM>?3uhO4B*6U%YEuHSw?;lN< zmn+{$z%}gEbkvMj?(JZOq2Je=4`{2xi*;o~|?|Ux z4l_BJjGTL=hTxX0Rg_}zV8->@S6NymAA1Qj9jOC+T2l7z6gMbZ`aG(F<(uhBX#5g8 zj2+@;Z-=QX6qUxM0H)pLoBrf8O~1AObDf)B>S*{jbEz6%IJH3Y-N0|7z87{1#;cz@ zbi2WG`AQf6jNvbJ;k%FGd=`%71*%J#Fd=SEaH(s)K2F$LsBM^(!3=->bMtB$w5 zVE9hm=khmv7je&Oe7#KzHN6uJpYtCh{nFHhug6U$iMP5yOlwfv*RJVYF6cH_@Qf;3 z#Nr>mqxXAtuD(RS-w945s3&BV0*bMkx3fBZjbsnfQ+SFWR21jSmW^HQHukg6^Sjz% z{pMEvsu%e!_jW!;{qYs_i~8$>9sgL*X04xc+htlm^8zcL&`K8C_{&gfCj68vPfmPhDM*h2Oa zLtoZcXai`n7;(x$?SP{nA^a8P@|a&ZvtVD%n|YS)(ufbI5|u+L$MJvW`plaFov^<2 zvX5Vd`BF*vijS!G&p17|p50~o)jA3vfuFUH|3`88_yfZ+`DGt}*81{`kEqa-+;jR# zyPIEZV+n{{Lf6HUdVL?iXri9iHBi?;T?1c@28MSJaNOYTyK=+vP&Yl8AUHq#m?*q$ zVkcNBz3q4f@w)+Eq)s~U9oR%LGlXXx_*R@je1kKpgY2{}zDDRsz71y)Kbr*fJ*WQ` zWb52)IGEqXQLgjduDJ4qA_4ejDGGm`G=X?{k z5gRf6#?7a-zo6&zzY){KTTA=`%W^0GmmT;9Tt~7{bl_`o6~VkvKN$z!jxEH2)&l)y9r!9- zL~uFyav$kA@a32!wio;9IU_nYNZEn6VKcFPIOsp_z|**d*dEN|Yhe8~z@!6ThD(WO zSOAB2!@G!yJ$ovz4%|F0Lh`%yFs^(9%IAs+q5oEycgS~wH>W8u;-+Oq7 zI9QvX{4gqCxPB+`3F1IR(d$$AoeGxWZTtnXvp~)3+n@0W@oOl*^UWV3JAwBQ2RQQ0t{<40b>M%*dkJoWlFaLrrWzjJK#yP}_{#5A zC66yKN8}=7n&4pS*9D$K-q=ak$1L|-kU4kK6sJR|`Ccyv8XP{>6N}9zT9`ZL{*RvwOX#=NdY8`0(WM z7gn;5i!2dohOG6$l^i0z#sSiQyg*O>=G!Wo*5i+vTm+CEs8W~Q-LZPE54%ew*^Q@7 zB;)3Pm|W;dey$I@3!QcwF&Uf>yUT90@y#doonNcP%U);d!smpI*erGPDTJ_At0er7 zklFbQ8T&zY$=!~%+67PGZZ2>qFFj>;V#^2KC!35Mk_-CuZKfphO8ftE?p%QWt)XUa q3FpU`p>r;#$Lu;g7oH2RM`?34Qm@xFP}e|R19c75HSph~fqwyI4;5&^D|!GbYYa3REbS2nXn#wBQTd{#MGy$p%21_Co$f zBrA0<_yFz4@HSA&f&Rb)orU?vfU;j{XlR(J`a$$KRjAx5Pq|bEVAE8AN>RBg9e&;L zYgf}%wwecNO$D^L1-KY;x} z+B~pqF!*~8*q8w^nedye&vW1`Mdj<*0YDL}2Et!|bv7J>;Otzs(*l1y52UM9DCsn) zt5oW~deB$bkAAv__}7*=DDMG~)^xBzL)h3>sjvN#%i$akYUA%|?F5vvxix+C{^BV}zZ)--5RiU~2lS+9 z6#8opu|!|Cw|JVCA4Ty=*6MZGyf1o%`+mG!R0@Ank zf<1W}_2svU=u3Vp&P4hmzQ7{=>u)J_7k4anVpFPy=;QVj&qewzFz&#B^d%oc9%d14 zCjkD>*Zz;HFU~{ydK`2>K>7*006(8_JAj|zI;diqes6KUruXw_%U>bCP%kjp;n4I6 zL|?Y2cmdL9`PuVo1GqaKA|cq}(DW{%2m7xw+rJbBKW|-$)PD4(M8A7qaWT?IV?PK1 z?H_YOn0g_Ha618|VvBTsoznk9U{V%`uITc zpkHmD!Wo5I4))L|w)LAd*@}UYFJt>`KxPP1*YON3OVTXxd+6qcR{s$jynqRb( z+MavOKmXEpg#WoO?{8AS@F#uw<*tK%{*$&O{8`sL*eriv-R7VF@jCIdP1q)t?QW=nO0C;^@fF)~PIDB3^BS{|DBXUQ^K{k8 zbGmvz#{1UzOO<*t@~4A1hznOO)x=Y4GoYu}a3r%w!obbcl2uPg+cZF%tf`!%%(}Kz zV_sEhTebSEb}FMV>Feu{P}gZ7=F4Vvuvq9H%KV8+0$}8=2U0#kNwK#F1T6M?y&#W`)I$R(223^1tdzvM67%tyKcl zweO!DulAU99d1259dtd=tghewrt?)DrrMQ;t5u&lN1s32S6&0u@gU*PHwg6k(06SG z0v&)&z1gg;HB{$a-BrW(?rQ9Jtro2C(-lhl!eQv?gPN;{W66iEaCP?N2vuIXtkYJL zu3+WmlS=tQT@#zt^$FFD%5ZfnEEZigYFm;m$>&4N*WuPf>^E|n)zzQ!RoPKRm2^^@ zZ+QG*f=O2>b>pUHb$!P5Fiw5=WSojSxy|ooN2m+y{8P>9il(~Z>7Y(7>8OtHJZt19 zN2m+SYe%!X_OY%LRLZ0i)h~Z87}4Xh!16j=A7Xj!Z&sI`>V~t8YCEf~dhwSx_FjI3 zy0AYy`CMP^Y}{`olCIL$YRKd^>h9k+{8-_q3s)oubAO1?*OnvU>J}K#hohU-^#l2^ zytT?$-bO8M-PXCwPgiqo*{loeMnJH>B4;NZC2N%+|S3W*PoxL#^(<` z*O7c=<%PPs5BAlV#&zCKeN=h4T0Sd6UC?3Lb=M!EF7)9jKV6N-0N=c=%d1kU8zKLf zbXj`y7C&8bjTGqfVdHBhG!>QZr>k+k#ym}R-ln{FwpY#@7tKG>dE`Fa)U2*8YqTy; zl)CHcD0Nxb{r5ZlbV+^$HkU8Fb+M~iUHxB_IzPBFLVY^t(O>`SrwjXy!>#k!_ntST zxw>%;)p@T{?~DmkOBTNI*Ig!Ehua@wzmeRmu9Q!7z8sM%^Mn@amQlZX`=uOSdHHex zN+4i8yslYY!>Nz5N2pFuN2vITAJw}KQ0B~C&u|ov2k0znCb>xE4!q%Q5StMdDb0As0*)^}GYn^g8t$omG$XyQtHak9fOB+Tr;SLFa>x|$oa znRT5Cy3(7~)s3#p)h*P711;5)Gt(X_GwF(NPvZ@QlCP%LQqYIjHLI%&>2idr-qXX? zEvwVZcbaq^?$`$F{6o#^N_j(U2iq3YctjPnilGw zPg|<<%KE>({0Mao09}#8nyVY*zrwXwRl2{$Gqb*L;rMQR=C^*jl(MUqkzwbAtK-yp z{FH$mWj3+)g-iT{{dM`&LJEfD_p}e45$d-`Bh>2$-nneUoFnrgme=3>b&b*r{C@sK zb-pHCUHu*0CwOk_qX&;r7hacNZ&uegq)U~kbOXo3LiB-?$#sJh53pe?kl9m*RKIQo^PqHnb}I6xA=ly(&z)f{jJZeJ_^R+Gce<0lgoD$}Z|}zjRf%KRO|Em!B?a%bJFN z>;Ri;%Pxq2(_fdbnlLA=*{jkBHF{;Fs@XOn^SNwadEr$Gx_<}+ef@mn>lX_&fU}XV zRj=xPBOzSfb6kYlIk@Mdo38Nb3Z?JGeq;CupMu79e%42HU7n!M+CM>czi!o!TTQwS zw=LuN@Umug-D!+Pr#~95T0L}4XZzeE%NN$el4f=N;{}~B&$;T8o`cn-0iRA!KSEtN zo`0lSUF%Mwe*UBukDb}4#qMh+WIp1jOX?x4WU3zyaZM=#UEBP1`HBuwFm&3gb-~;` z@}w|T{=r>;UJUn+{qH**?z|Fxc)@u-1&!;*9Gb%>9Ix)0*Ir#cr{lvfnRFd)AB8^5 zZC)4m8xg8+R)qSv^VXAF!!r#2`3k1Xmjm>VQkbt>o7Hta&A;qD)xr_I)Dz=>e0cI< z>N59H*uK^`tLuJhU!`H{jSk^z@m)o2ZUS9L5{3ZNN6qSbTHjYx_TFmNgkCE9o9b)p zP5C<9^?CGR2YAj?LgTve{AQ|$5i0qq2o-hDRacIHXDSY-yv#mCUFSBdtD4pUJW5^q zwo>0bvACz_2z6n3UD}MUXh^riQ33}%R-uN%5ebJ5&VF>?)Wwi-^b*pPm!35DB|x0c z(=}a1D$ykl@zDM7ApCKCh>st^Q74l&6#>v!0vrjTzHN7{#}`9qwsyXF4>-9@99{Z8 zjcdvoGH%#?JLy*rf)%$Ao%>3*I|#p7zu;nb;$*U?XbQpSClGXTd@0Aj$MMJ?V0ZaC z8n;w3WL)e{c$VxHzgMgwI>YWD{9>mW8g{=+aIf&oQ@#6PJb~`?%{vm-O<6^hsaudH-j3&C2MeOe&{Nwa<(D)>EIy{jL7d|yZ zjZsq#yVp))e{*|W&-K{L@zNfvg4OR>H~HJaka4lQd@uW({a!JE=nT7q@aIE4nFG&` zC#jiGKXTOsc)}YosV8Q?N_{cM8}$Ve0@|f(1NA2!hKw6_OaH`vuW%EcVRsOIvwp#Y z*)9Ex&o@iJuGu=^A$Pw{)jI-)b|4#F>b&CqOjBKNNka(N29i{m%> z#Ru9whU$rzVI@JaTlHeQ+3ywWDBWjw)BK{}49#{+y7VuC3zYr^@c_GHyHP!HFl1cp zt~rP8X1`YqAUebDApD}&48`uO3rMcCM~uhd;dp6}60g(zua}-aWOpe;#>H-Lf08eL zuUJBKhTTEUX^ypU?4)>@H0uyUQ6eE_T~_d?S9ZxP|BpyMyqH zzsxY0zvVh)rkCqbBfHD@QvI%E$hg>Db1~O%_It$|qBHCc!f)0uxY)h^TB^^{14zF3 zzl!5yIbQtV$Zl^ddOo6xA>(3q6_0bo?-ef*ondznezDUG4ZGPN(FHUfESXOBS8;qS z$Cq<_BfCq7ay?*BM(q^@p9fUqm?pc9-|0@ku2^#>H-@^e621iZw)M*d2u5Y_H&k-K(iS z)bse^VXhZWjm`2HM^ z`~h}5GU&ch0z<~d?gXAUiQg+m6P;^|%+s3Y7dy>R?2i63*(vGI-$r<>DgHf7Qa{YBs#{0stzN(YY(&N*bB*Mk+wR}B{zmfcW1GghD$2&Rx z{$SV3ga%rlbuwgJ>@Mf)gZRB-D$)7uZkpfhXTinpXs)-iZj#93zF4Wxyl&zOHXf{O zwNtN&dKoeQt2*22AhGO@6uD5c%5&Nq+-niZbTlXoSP3^Lh zA>(3qHMbM-d&L@}yLsFlWOopLv%P|g-GU3;;n&|u9KssE_<(j!&|0o(G?&ZKvmnN*Q_xirubavRnLKv4qlBK6WSh zo9UH_->hHoV0KGCE_4E=A4fdE-{q6(d7(;%jEmh)u5aS^iZw*nwf9|IPnzZzy=EB9 z?)a>x$5l?h_&~cCa{XplPEhQwVY|ie6>BKn^}g8MG{4zi!NqQ=&oMl|k#VimX9vg2 zxEA>X?5^%kYWD{9>mWiru?euB6||<4(1l^hx}a5)Tmp zc00O~-3bgC7rVVzlN|AT#b}~4><+>&dd*PmHpj>FIM5s~<3o%Ou)8Xio_VTf$hg>D z$@v$*S8OA?i`(B#^*ac^S-;?7x6CJ_ZXmzNd`IS!c8(7^->G?%o}W^0@pDv!i``D? z2iflxzfk)7OWE!q{3*F9nHlM$+y&WlQql_YlZM8nro|3QO*8CXzxXP=KO*f>#)IV? zFYPhtc+iU7xSq6qGn#KLYSxC4sV zE&dl+!uAR-Q1XFzKs~8hO#O)}CdjzhtvqD6_`Tv6q7PqEPId?3PdM4G$5Uo#wmXsK zKg<1=*z4l>cm3i6>{eHPs>dfbhK!5dPVSGy?-k)h*Wov|I|zRPtg_+$B6v?q&d0-w zo7rx$Q~E=}1xkO2c!1r`ujo4OV#v7IUBh;Z-z!py?w5i0aXo38KX=##g}E8YWD{NgV&6uaYNX?_-0LiJGYlQ=m( zf#ZYTCyCuj{kMZ5<6^gq?|+KlD+UnVjM?n(ApB-~1sA&o7Z~z=K+gwccPT^0#cl_$ zyNKT_mJpp`cMyKD#|*{pEWV$+gUeIyr+GNOhU0_YPm5hc^9Bb)#>MUgo;Qi#D+Ul< z{1WkZ)BI+81sA*PoivWx!s~eZd0u5pq4;W!@5J*K+3)0un_G(j<4(09B zScZ&?-Rd=J*W&kzo<#Rx_D1q|5dITD56Zv;L;kA-#qLCwOR=zz6JKXsrua0DN4fyJ zODm}VD`&{K*d5E`V)1*$EktM79fZH}eOIdQVz<~UQ2Il`1xkO2c!1sZkLWqaScZ&? z-3i?Pi{C4H65WczXK7!SApD}&48`u<+)u6N`IOApR0j25RU9w#wMKSVZlGr-y$l%_ zyXCn-@q5KOqMKaFb_d~4g=drU;Lq%LvD=)VklUqMz%ho0tC33Y4F!9F7N47`+grmI z@Bp`8>uYE@*no2<*)t2D4TU}1I%rq8<}O57@>^22(O3b;a=myOJ=MADlQBr5dc@Ds zJGH%Z0zPR9`)y=z(lBpIm4?}$uRu1H``guJ17RPrTW`MihE&+6>yz3IKlX+_$+El7 zZ+#M^_q?s`%ag9H%j}f!=7lH=<)94YPrv%~cISP5N92?DF7=|UWhcIoaKpR3I}Ypq ztd@;&F>Uv$Rwsn1MNbb_>)}0yA?LSHYwayCDIlC_U)}IX8>Q^9FN-`*iUfn-`iDBL zTbQ~g65fUAODvDH{AxU&z4A8hp3^vFCZ0YOW5Wh?SJn6Z`M4>kwNfvAc6#KU?d}LG zZPQxyJ{R_z*}Y;y|79)IqTfEy0yaAJOBE^>l=m7_9#%0fJgm$1bB_DKy*g}uVo{rj zvQ7B+8lhS8bW3|!Ekko`rt

5!xOke^iO?|nWA#f~(1Rz4Hz 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 literal 0 HcmV?d00001 diff --git a/tools/.testout/dumps/crash_main_25908_6a51cf9f.dmp b/tools/.testout/dumps/crash_main_25908_6a51cf9f.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d18bf8eb1f02be44f7ea5407b62714275995d034 GIT binary patch literal 249754 zcmeEv31C!3(r_o?2$zX~5Cma3)F6l93IP#@J1F2tKoFx$LIQ~dGUkBbs*H#lJl0V> zP*6vVE2wA?KZ&}*!IMjjh%6q!cp)fYyg`oqRb5pxZ(e2sVby=tc`&J0-PKjq)z#N@3u&#qU$SlI^1uDfKM7IRR`|xI7_MJ zO_YNF>c`GX_3olnUA%9o)ISDBsCsa}9Da7Vf#fO)e%s)Ovc>~p;|QhBfcwV4KYoHz zE#Q7J{CZDRDh?t1Hp6{wuLi1>iYRCt0cz-L(ln(&gi@2>2Qo*``7HKGeHE)C4S!Il zUm$j5` z2K>!~zZNxKWviJG7wkff>nfBXS1_K#fY)4=1AL~dEZ|==PvlmYbcQ?Bv!_Z_JyZhx z>khCxaGMF5C4#-DfsUCFG9CU-(f2uUm!|S{XiuO>P`%(^57iBRz2UBpC>n-;Ityf| zbSUYm;Hy;Xen04{{iD0~5TmywL3#ItxZqbTRD@R>EA^Ej+70*k!+K}MiUQDlS;0lE z5a{H}<%D{u8yGWT82?jQpnb#sPanF9RE8q;7?po))cLRdJdfK_V+8mJw*7z9RRJBD zXBPEIqN_!OCv3JQ!+qSk-QyAN9Y_)A!TNl+J4@?x8bu)e#jBO7974E-00a>I@?Ur7ApIn) zw{RhSLyuC|b=9b!f9yNjo`-(f?LhkIXo^Sr4V#r31~$dZqW{951fpMjYvM|HD=FHGe~SEr7vKSq@Sg=qreR$1hcl zkUrj^&(Ky8>fdZ%3ns$Lu~pl1{o$$@q)!6=FSUu(_K7?vLV=l-6@ED0Lf>X{sHh0Y zYuUksA7XdH9bJ3&j?y&r^_RLR=?^TgU3#gTlD^kdwM#E`RnjLvUAy#BcP0Ijf1K94ruq|`)@Q3R z|06J=+Px0zq>6o5*W2f}Tzd6(ZgX_>fAPnDqd9T3uD{BDj%wySM{SGuY#wpBQss5N zJ&uF8NL5dbYX2j&zzsDV#L4Txz)jj2;n)Fg*7ejX>md7Ji4nNoi+NS9#_IkqO;l!K z>Q}d%qO7xl&F3}B%GZ9S+=JB13#@9$uQ88oHpzOI^M$ace4PujqI=bpuN0EyX|9%h zbB5}3?Om_8n0#tB#C)A!qpZ~=%h^y>#5YoLZ9mzQYLZoKq4GjlQ@*-^tnmg}-fHDF z^;2D5)*^Moq`7L*Lj%`5Z<2MgHtYnlZZycM?i*Q@uY`um2EMlcr4j09ldO~V!*f8^ z6E(^@{G`s8H$pXWMXE)+?L!8_7)*S=r@{fzt+xyG+tA;)0)f78=(edwSyNILRq6~l=TVu zMrowF7Z!{DF?efgY^vXen6H!dLu@y4YLwN3@>SYYMHe?yZ{7afahpk2ZG7XOHOkt} zewd^_T%Dwn&T4dQ@hQqepMRl7S#jhW&ePRd#ZA>|%_k4~

FLdF`lC)~_t9l}a0Z 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ΝuPNY}`k63p zKtGsa;9Q%rk=TC%w9I%v6YPa=d1b;6$FBbT)~2@67-Kw)Pw`6?r^;nE_*V|(48L)K z--Ph%l2i-ZWq{?-r~IjFlM}SY9I!8q>5b)AoANKzcFh1E@M|%x7I~oYl#KklgGKSn zALtd>0-%ohkV9H6nj6I5C)Yw2j=PX6`fCx48&FP~Zv;eRUM$r-LteJjg8wi`Nh9w( z{rr$xu~anzLUEKcE=Z12!4nc-w18h0!EZ$1%mnMgG#Eqpzbr9DYnuk?@om2((76xX zr$c+)2dMC0Dzv-!osoVJ+ZX<&a_ZUI&+scH{_?3!`BM2{i|S8boAx{dd~7D@g5xtk zhq1M=YA_E$%VK+KY_)2mRf$|-3(KnYEz$Sy^7iy88g&o6p{gL4z~8x zpHjP)r{_C;4fXrf{5Kz334a?=n=zX|SJLbI`E0I5jr?D1!HcT-aBZxM>p-}Um#xP> zeyh~px+&0N;uP1>~PLzx){My!@2iCSzpAR{7+aB2eg24i=L-$SA-z{-)Xe2{V z;|+Sh_7r%4v#gzhy59x#PTSfLPr6d5{LTbxwsqA0*w7#cOU2vld>xL#!AdFmgYkOb zthm;K1~GK5jDgR|+}^7n82O)43co78j6Ae&ExMET#~CBw{*y?3BBCi2P*^eXhKS!wWY=vZPr|(ish){G0<9eWMM@LWPZBVrR>F{>_C=+f zYx_K*zfTqsarx^=a~b^bSvf$>LF9FTF#T{53NaP#|L7}Ndp07NL!CgeBOG7G{!)3# z$``R+!*6ZjCEq}k@a54IPqFZ5vOe7<9D(m@!6keI#t$X>vLOsvj)cF_uB|Sg|Mm7v z^80(i|Mm9l_sVye?_bjb*dDl{4MB+CTC_qoUEEfjOpYx~^c6MC&XY+KrU_z!tuZeL z2@MB@EfBUq*aBe-ge~y@!vZ*cal%rCaXIExrZ0PFUa4H13CB8`ZdSfQP(H~ldGwai z=V{&d@az8^k^C!tx>@)LwC#@#nBLMP2e!D~PkcIESo8D+^Z38893%M;!>|Ry7C5m5 zaN1I8n7-H`No}Stp(KQ-GodUK4i8%(Y=N)^!WIZy;D6o%zt{97;Vqh$lx`rneF;xT{ysht&S}^JVGD#U z5VpYI-U7eZ^u@N3rY#lk5KKC}+kP_Bm&Hsc(-wi@>C4~VRl^4O8(ILTFD}FMB>`*@ zZ2Dq0O?WzEwn!KcTOe$Kum!>v2wUJUV}aj#`Vz;MaSr=LzbmMc2}b|CJ0sZi#d#)8 zZ(=!J7SjnIf#K=PU&iIa83|k9q%DBcm;dJ77ZDVm&WI(#Fl>Ra1;Q2xTOe$KKfMKh ztLe)XYzck^M!Dzg($g2gcYL=y%Q$@z!%4irP~pN)SvK2(@p+?B_}v$=T^NQf@K>=w z_}!PkN=b(E5w<|s0$~e;EfBWAZ)SntYWngy&p&nyt*5{6XjX9fue)<_+7T*#)4s`7 z8v2wUK{ zx4>^beJOLi6Lk7==$G9NoW6vLzw)_b4K~8`rT1!rLMPCibFWEGc=}?tP#6ze;LmS? z@VhU6{xS^bAZ&rK1;Q2xTOe$K-`E1b_4H+NzjuR9Ult$RU4YY}SU-}Iv zD0BkN+4h*^gr_fN3x)Bp1^)aN2*3OC=P$!>4#E})TOe$Kum!>v_>C>_TTfs1eiVHA zl67o%5l&x1#b-bDP!pWKe7%yO&1m57;^67bKR%;r%ke$o>5JGV48s=qyIUaq?#tiZ1H$v z2wR|<1^%e%%Z^{@DT|GtwwM)3T2IrKn9bqoi`h0|JZyo#s|CXEzWiNFKAi8c1;Q2x zTOe$KumwU|;J2E-$Y(1fS(4>gRSa$l6MX$)!p(|Ey!o@05-w2qg+E(qwqO_!Ti~y2 zf$+O8f8DYT=PYc2um!>v2wNa*0k*)nlwm0!?qAvQ(UBK4{i#8{ElY}94Z^9xtb&Z3 zobHZ{bcGa8{Acc1#~p=}`#-SphmpTldXQp9X5OsKoL)VBM8|i2IH#b~J9k~ud)+%n z>y%abiPF>ZGks)hue$iA4r`xlvVO>0jk;XFV=0mqPR%O_AX?JzygNEHy1Ze%M{j!R zrCYZ-ktls?-dsn4BQJYqc0u;+%zPimitIXD^Ijc#L!X`_+rD~!v#v;-pOu+oRIcuO z6{DYRcWlbTqkq1+#REUIK$@BPv!^a8hvEQxZJalbzy#Hp22|kbuQZT;f$^+eID5IOxoUSZ$}c)u2;`O zAD8p?zje>ZwTZdeR+bvl);_<#Kh9Xsd=G3g*d_SkHja#4Da%zM0e{a2PP{Q%})kp(6 zrxg|$)Gl|f@RUuyc}+~G_b$Kmu8iJDGRv zH4>4t`$!&k-ru45Td%$IY2orABZtMGjU=b)m{WR~T(ilXEuJ-xZd|y^b7cSU!TI%S z%Usu^>K=c`D}63I8b9KS$20Gm|NPr+?Z`IQkvVI+v0fI(BrNIm$l-OHZhCaEbKu#2`ub%$WvJcfaw%8Pg{2+|l;*&qp6BUF$^( z?PJMC2im^wySDjpKU~-HoQs++`rx}OkO~Ej$;{7Bo1Q&uy06r>&-iBh=THAUe&{U= zvWurQo`;kd>t?h2V25L>QMsY^s761Xom(*d>_t=Sf81M_L19rrR_08920Ek+&pR5| zzW7+)jwe>Vcg1#OH#2`~!8D)1!5bHRyZcPf?v@XhwOC)U`8ZOH&nzm?nHZ6mHZv33 zF(3Kj*Sn7HJNM@9V{%qG2dcYvNlqq=8k#%Pkvl7MR)N2jJyMnbVd>#6xoNLQFWU9s zvIR&yF?-hdxeh~9+;i0I#XW9(cg#(9PurNea>}ooWB=4CQ|3V9d0Ao3jI>$ZM(3tw zWag!&7iQ;Vq~;JZE;DChc0ty#%=A&Srsby2CdwW@O+Ov``pSwO&(6D|Z^JIrj%=QZ zd^3us`|Hr`Wdlav*ZPv@TBP*2>#A$!K8OU4+&OuUyj;I|>K&?;5QqE*X?wtJYDFtZ-nd34Yx%t@zxp{K~ zd@JSB=C}60{D)7Lx88T#!;8MzsrAdw%bZ$Jl#y1DhOP=7k|Q(EC+Vwm8zgTnTRObF zbkJk!{Fd6BL;I&r&7GBBkXJahARF$;M)|4Jrxm46gDx+%XYcMk6H+ts;65)uwP<<{ zTQNN^J7aog>YTB;a}s-}rDjjfz#eIK&WuEV+xX;!lHJ3memw7vmY*fR^3d@us3P<( zGiUl#ddPeFbKe%Pj(qsY6Vq>7^RD)$}?{d{R<(>KNp-8ZTEj24SfV18DB*Pq+u+O!_$ynS}3e)m1H|J%=8 zM3OVdDDwO|FQ@FeIHSem%QpV9xlx853V_~VBtxVA!VCNRZh!OB^|AY!ra8uaFbf&! zM#50LdsIHU_L+rsZ{4u`Snum?D_0`T%>1ldo zl&pFy&1ZvrhmU4K=eX#~$7eU`S^mNCsqQ!3NTUS?6idT;*JZ_77Yu&nXi6vVjTO_8 zswUqo$ed*|1Mp1ED4OaB?w?TGGoePHJ&KIxxL|veVWpoPY9CYa_CG71-SR!kMNiMp z^$*duk8kw$^6sw3>%Fq>+85JDY(N??NXpQ(sabyC+tW1B^VFW@558)-%y~shKiv-D zXe)EpY@aPwkL|Ew_KNeO-oD}ft?#eB=`(E$7zFvPwIpI&-*Kg5w_b3x^~$MP*Xa@M znCz)}x%s)%3c8P)RRC>yT2A+gX?YGCKp8E^esJ&B%r$eGJab@SocoD1-3n)C-9^3prUJ$h}$zxO^o@wF>-MFN_DV(44!nZEV{*N7vjFHHVV>(07QaO6wfcn&hY zIP#jERr8cWKg}H#p`1xjAgua>fwvX4~0LTUm zaM_G!GeX7QMtD|zrPgFeDEHlddF`%=Q1cJ%w&O#L8zBBavw`u;6z^`O)Px%%RN2ek zmrx#N_@@UVl+{b|cA)=hNrbZOB^=`?JRYI!v7hMtY5Yk@*qU%V#y<`E4kg?P>HqJ! z2-SYn`LF#9_EbRHXAR`H!}5)X$hXJpgwM+Alh4hEdf&9%T9R06BH^|>lbfST)A=s~1 zq;kJY@mL-kE{s&x4+zKd>O2JU?Rd`PmZzznpO7-|s4rcc-7eUpnS*n^*GJZ(5}CjGps~l+T5LFHY~`%m0N}1K#w2 zuYL>$JZ?u@Ew2*z4+q?`lW_F^KDj{ue0?AN%zVU$`pWYf#M8TfCh`jrpWoT1&s>df z-yreVBmP?bR|LNiaOX`?K7YCyV@(g zd|Ra2k~y z0l&_Gdm3%<(bs zuR;1cXZy-`-X^F|!@KGB7yWtOyOAn-n?L=$_aoKb4-NQ#Fn_yz_L}!G_$Tji^#cE! z0AD=6+~*HdzX1HT={|fq;7YB05$gl?7c&62*C#v~@K^SN{KkaG0UmWAQXT3+IO^B> zJHQ7U@SmVOFEQYU!JfO$_2sYiF_8DU0gs4M-ucI#Iy%|Yp-&lZ-#i!Wj_CE33&V~-}v>_@wC1m#z=t(ztJ@pw z?=Haj=hwa^`d-i%;@kP-2O&Oya68ZsN`ms}5Toti9PIOGKhWplRoZ@NuhkcV{rT(7 z=wGV`M=9qDipTz8(M3_p@h;;)|F|tmd3G7nj|cj18OQXKApW%HHGeC}Uu}o-e#bBW zhqNd)?x)=u$xw>VLjO{K8sz7mem;NyKO7WIkJb9xpgz8YxP$OAkl$c7(9b{9S6=I` zjZziezt!dAg!nfBuUy^7SKh9)SK!Of>rVsTGtcJ_Zv$>sW3@dzV2@20-(jH7Ubn9T`(Hru^MK!7fLB=w$NZf3 zBG7-<#>elpmjT~8$){gaz?C|VqbcQt@@N6Lr`w)#@z?v`fcUDHeg1#{dPx8MW4`g_ z{hJ})`iUNIDY$(Ia2N*uX)p7)FC-)Kt&FGFHK4jE5hm#3Z*fSl886M0nBY+4NNn7o zLS1%(M}NS5g#?)39gX7JVB3(Oh%Tj3^jV0X>eXZr@e{p-Zzz8GvGr>uZ{og<+80Cd zGl#diE;gwBaYF=-=MYu^Y;R8Z7ssKg)fd)gybc|qIc298Z_xe&O|!lvoKdypr8BiX ztsL-r^sNE@CUn+bD+9ts&RyGQ>u^UWiZAU=Q1tQqN_vP~(MR~IVKjE~;e4}WD21Er zo0s$DW;qqiU(%cL${`XH2(5zx6n`ct@`#@6^(J$2Z~^F0TolO*W+%1 z?Kq;68*^34^EgY4&QBcYJ5JT5`Gn9%iamrgLHC^*nyzx#91YhqT|}#Y=Dl#?>Is3= ze#{%cPRiLxJRuhk00VpN249QTQ7JxxfTFyDEhm%mBPCK)EokDf|$2 zZVV3!B!Xe=gdg;sE3Z;RaRcS05_Bb;t;aA}jK-u~tX1#Ur~UShi^z^nCi;(&818NC z@9|MYm&EXBRn?&D3tGX0SD)m7lv3`lk+kknxs~RhmRT|6Z|_{Lp<`}>hThKzFYQ9{ z3B&s7aL?c?HLM))p0U`iB|0Ot+)H}Luj!=qoj9bSPj8GD zKauk3fPq1-WG)whT~;JIuZ8lJ@)RgZrF;cSxRkd*3Gcch@z%6{%3RzMtuTICKNVXA z>+!)Z^f!pdCr|pa7|JymeH_;}fx&1n%yJvqD?Sv#3Bsj*ukS$RApR@KvbqGX-`@Y# z`ppg__JHmy=ykIG?QTnU5twkh-#?`+QNY zey$VoAMCMCHwFZ`$FZPsJorZWYX?-jh=rB>+&F#%J->(_$-&1$KVcWalH0dyJZs{68d7?javgtP(@UQJQ~uro)gi)}ss_QoR5eufhrbh5 zwwk3fRIZw%@&Qj#a{(5pOf^&WQavHW0eBkx%~sukE(iW8H5z`)%eNm;9jo&jrN+Y8 z<`UqXqWN78aJ(9>#xTDOfElU>@b>dVomZBBd_Z;b+pqG+K>MkC2zQ!bDEs}Z+j516{{~&Z8g?V+}gKQvSpNbxw7Dr(!>};lInDI-t(==hyLbV1B(%6K;Pd5QfU{ zs`BR!sCYlWgl_}+IUXXs(gZ{CyRH0%1FCcN{GO2UM5Z>o-;9fsZ@D$MfN@-v@6lzv+PL>esLI2hsz56R-60 zr3X|Gf4t*Rp#C;4uL=_krT_Huw1cW=giGq-iR_x8($#b|6>4f8)Xwfu$42XVNZKh? zR6gyX>gCt3)KvcV`$%7}35L?|`tlhERqqI==yxi9Zfq}RmpcxsKD95eQ2D;Nyzrn( zr2OKL$x#_t9%>=sP7^feH;)ZCy8POMs;}RE37-Y>b3Z`1WpN-h^ON!zTt4rhN{U$M zIgj@tnfsR_?q8B9#fkct$>qZis(ukpS(A2mrsty~uat3#cbpd(FLVN@l#e>7`u}$2 zVJjbdP+f3he&+rKJ$feib{f=2^lR~%3FRpV)qse5#sAFp!^|gGKb3OX6dP`lg-v^^ zd-cSK2XYQ{;^#>ixuRN#*`uRC|KbP3|#xm?JM8A=tjGJ%`#&~6y#qWcK7*}Z)(Qm7B z-J(`IBh{Y%gdb!m^`*TrG2G8A>$*=hSH)vt^kPwiRUz~kS-SPjhP$~iwiyflS^(oF zY>{U`ua^mMHjI;|!X3O>QfAqw&QLzHq)LWOa_k|(Gs`;dQ!V`YKej%{yY28pKab$@ z%VCIXN_d(5V{Td8KGhQPpH2Dw?AteHKXq-~Kx*k>dRAbcQ0NiX9}W~Z(xi`@qU?z>=n@XXv7BQ?$8$WP75nLRUgYGEF1>n%vl$xc^;%hWz~mU@75 zsxum2l$6-nl>Kqg^5wutBukIA^T3;~2LG9=$0w=KF6KZ8wvee1ngQNbp#9Al(=8yT zJ77id!+AfoofCA+ng@SV!Fs=sG}vPcy3K-eC;$lwAZZxrFb(btAqNFwR0C|dBJr_S zFuzCl$94GehB(yqBAEK4uGZVh-z+d2L(BYjc`^tL-~Q<=5WgbvCM)>Qp{oK_xAF50 z&tmc$?|Hm$xg$aQ`2-!q7>*<8PGPu`;J_7$_oc)7gf!1C!}?92M8bC5N%8~+qrot% zqeaMdj8JKe;qH4#PF7vgvyyS4nf*)P-VxE?VF_FpUC--?0)mlp@~c_IFIsObPn0;kdOa^BW!>MUiCLt^(LWvFKQ`7=pb*P*9I?BT%R}N}+ho8cbP|Z`wcwwp zo$UDdVm&J#3x7xJl^F93^4t}PcffjWwEF?Fhq4kZ;eF_02j!xD>B`Mea8b+zaeRfk z$5#=*;==@6e@D>D;cgD^#o_%{B;GR<^zn@gPq6+wiQnH4Xj0>ZsI2S8S?Ill_0N-j zk}z-8wE=sBq&#Z-+$O#^J?ALm=N-vMX&-s~YLeG-#w)S?;dz6N>D)}`U^*MqJ&;oW z3w$miQ1m?1i8PDgCjs)@M#gC}UN1G(e=p+++-@qa&oY3$Lj*8P{wL`x?U4Nl?Kds` zmEM~%kyk_S<&eb;Pj-DdYZ1$3XnuZDO^_*IDdTR2Co9*>@&ul|Tq+Oyb^N{vKX=*r zb6`6y^AIT?@h_A5DvQfWV7C>Cx8ORuv>%n+ez}-V+DGAo?Z$L$*EwFG#7lo5P{PGO z1WGtR=Lz{72ld0}JQXifx!KsStP#`>R}7}`Qtm&o-30w&?PU}$P~^q(jjvr`-1!{w zGq;;&I_%e=-Hi5dzg5b9T*0_UaE4Cq=in_iUH>iPc<-89FZ07VcZAl!#_eVse(GPu z_~vEt(63chmCh#pEbXaZ8}e&R(DeW*KQom4OTQ%j+WKp`KjVHz=)C_X`?*Zvk`HOm z-&os+Ol0L}hdiNvc>x3jxqST^`?dfupPpg~4BUeOt@ZxE+I+(X|5Gocy52Ghmr>mEBh*^XKODT(gjO6b zBL@|*l|}eW;@T{40Z58Qd}G^4-jFPJi4^aI& z5uG_cyhGP)kuV;%z#m}&89z6NhYKgy!o&b&h|6p1K%*C9ys^J?@~BbZUTeHwT_{cE zRRTl8NLa4LuJUwPwnxZ(^xjV#h0cIcrMsNkH7mo)Q6yhRp*ecRGDDrSBJoZfg?gT& zrx$L9^0ZIHx+{pE{au2%LQn;VGoWSKArU{=v0lTYe++}GYEa)F3*$F-!O;?2^C;B+ z7v<;lQ*quGNWSg=2%4XA_*0nfULk#Cv?Y4R76j^{3Qah(!BH~EkM>5AeJXjDUdgyp zTyC$D99ac|ckQ3V+}P{bMdl%Li85BKCM(10lmeCHL3^UY7rb@=F@3K;$2fg-l0cHj;n9Y z@@(;x?@;_tH9TQgX#bvt{=JjzCbPjx#$`4b%YJU*a)f6UdKOrD!5Uf(!q-XRvcZ!T zyqsJP@#;K{FK2u|tZrhNTkj!1^zbY&uI(p#G@Ly6`Z1bVa<(AS9Nc__vemzd)gqcFO!zQvB2G-)1`GUz^pO1^LRN;uWrT;wpfRSFNOeb>Iv<@Ka(BTwOcSYW<1g z#U3Yu%~vG83ag#J=TQ4ZDum<17Wms+z_E_{1MJU?l@Z&EtFXV|rxUi9h^~ZBDUo(m zIqB3A1j4`oiQaI{^Pe)|k zL)tId4H9m@j8+TZhb{2;ut36F!P_sKPeS`;@ou1a9B=6{*Yz|$wl}1wkk0G)RI6@u z`jw2!XqrlYgIThI-#(Px0s@5=$2TyaG&ZRc6^3C8ge~v~SwNlxna4M{+XC8$#+AGa zrqZzfUz2L)dB1fFwJ(y!9Iy72=~DnD{%-)C<~-tVM|}GY-=@v#PwOI9hGH+-l`ZR| z_D(c!cknu*i`VUJe5z#yuj|Eu7B6{Nh*i zouAte-m>7gyAzJn+pyBk3zYRj*)5jPl=PN(374ntvhE`5S$19rbH7J^WVcXy%WlH) zoi*Ig+Hpl{c5#f+TU$Q)IIPI)(bBrT;zJ>2F{Phc3+v~CLE$ur0utV8dNT>M`ALw zTy-!)^BV#FI|}0E5^+vng(5n$T%j-il~1vj07d!j2zY>8Up(D3g;#TAtsx-lG{GW+ z=2v2?Lz3GGA_C;Ho$YhzG~x7!2jL%_#!yMPjcejQWnYGdz)E4$vp>B2FtG+URU$`D547f!E=RWgo|7!io~mwPH|Qq zhJsUUwZG^V$RnvQts^b&K`{C_wa+#VFXeCxhkI8Q?t_G`QZLa7tR~+g_!@oDAV&U(d+ux zBD>=(I%7%QDbEbrnSAq|ADxx(jp}4?6?}Yfsv5n!%C-+WY1gTy|8LX58BSG39&fA~ zwGWO-Dt7bkU@0$oYwV9+uiUw6$Uf*Oij6u3ySMJA-QafKFXwK#Ot;ha1HWx~J+jm{6mDH>3KzyE zNGn|Q*A%5uS?5}{>YRP5VeRc>9Gf7+@8`U-=~&cB z;*X~)??ma$?PL0?AN1SW>Sgj%ffn}XP|(ixK%n;}N-xly&dU4*S~$Hx(fc2(_UpI5 zOD`ZhSq2a^?|+iFw*|`jgv_t8zT-YD>t|ffZu09aZU}OuL14jP`g!;hJp?*deTi?A zyIjwZ9xm3)+}_AOCrKx;avRCFZf8C62-+FC7*_E9nbKm?)4hl3KHzlBaMY?@`t5Wt zuaEryf|9=xtNw#;yBAk}L+xGc7X(ZA6!eRBasN?4r=lw_L&lv;sb1SmFjW7M72^4% zlf$R1^60ncV^hZK{d%IOK&f{EG2D1BbOP6}`b<9$Ep0^ORo6}`kIE&aw?zm;!11eI z!ng5@?VTyT^s^=N=_@8}tPQDubrP;z1bf0e%=iX#j$sE0ia4+(2H&o~L*7!Tc@-g5 zP15TOHdwnF4^MulsNN=iA=EzUU|c`@67~y<4Q+8v^joH-JEDWWZHnuUxF0NTaQSx*Q}=P7%fRR!@bu@}o9SXJRt40?f~wk$m(Myv!`$+j8AL2y?~uVtpA3ovaVa z14Ae8)2+OO=*{bwLMQ2;-jb*1tG0neFHqv8AConV%4DLmUL43@-o}%3YII<{gjb`J zh*O04ycX)S#aT}Mot>e%zmxTB=k-)B&e;T|F5k@w1V34I@U1?4UORHs_$kAOjT(Q+ zxC`Mchq{P03qHNES@I=gh7TJz>ayW*s)dm^$2Y`y+u-rZ7aGsa0Kx$)5+A_R9X(mW z#})Q@WM`i@@;++Y$CN*%2yQeAHQZM&p!9|y(=DCSSIXrnauN;_-%=A4f06ZWSdkfo z3}t*J{_5g!Y%HH@BhZ}Q-iGw6t~@gwpY<1j!R8ik+=xjt7y;v zQF(f}T@@Yz&30Gq0{zAuZ@DXx>?#cYOIUjC)?aa5IN@G`-hUEw+)A+GPJ+%k1YJc0 zz3C10>5d{E_k-O4?L`Bw?+?XAmmyz)3C#lW#+TL6@k<+0xEV)(Z4bW&b%w$rMAfef z{#s%67z)AqkNeZ4pRf-Lu&WdIgWy}iq0)!L!xjiz;PWpbw%G>U_Xd* z^Ye1Y`oQPXI3C3MYrBTpSE=VR9{hUb5j|Mw%vo^o_=-k@)yISBn`k^($>T5Qnbcl5 z7z&M(>y)C^YXaR#-|FzGQIVTK>CbLFdmGA^@H{l?q&Wmp0hL$r2oezc;12Q z`8Eo-v?Q3o^5p#*DWMxSW$E>H#~7j$eeEIWuirES*TY>ht`+?&*iIfEKMQ}yCV1Xa z51zj;KTiviQ_Av0KcSzqDGk??T^K@GCsGO%4_td$$Gui!t_qIx0By@GSd&;bfsR;bTYl{2a){?Vqei` z#3p#&(O9|cT>dgXsaQ#N@^bkJ{qRjGdOh&x3@Z1T-j1$~ki9!g%fHzD~(m;ptom__Rr{t5)i4PJ}6*Rx=K z!5PkZhaw7Nk{2G{d-{-8>Ov%%-58kO^hVMZQ?43()$4;7zI7o4s@d_$cV5a5E5oI35Ow&4Q|Uo4z!R zaX7zo!VhC)%#7&CT*4>*b>fF|NW#gaX1OOvdeT&Q{9JUzEBZ^5lBioVI-^0_s?#5# zwG?d(O+@q-&WB?iZ}0z~a}4 z|H7xAO2acNUiyGw)&qA2j8(HaUi6c(qSZww#R?QX6o-qP@jQviY1LG(DG6QH+y0Zq zjP@L;tU9T?g7mAy2|RBSj{YPUuJ~F{r!T_15J}L!p6C)-4;R=QS=b~IAjspYf=N1` z0}Y2o35gMU-XMNnh8B)2b5GFe6O6=$dr6mU2*Z0RU-)uLl`&4plGFS4JGUjQk8pk^ zTp+C=K|Jdt;T!HFeLS3h3Agz8q-cE?Zl`jVczmXSm*7%AEgLA`5+Bb530o+<;aw!} zEDjerLMP#pU*RuMS&s09?}k#n^pXUzmyP)( zJyNdY_cA}!vp)EdT=2alvc-Rt!g>+S?HEpx(2u0dDol2k^v+Aj51(Ow6gx`1#w#K@{$B_^g-vNK0C1f1uT}-xpM($6qkV->MQ1vZT=*dmyd)m!@sc$w zTl+wM7>9C1?lzH+5wH-Ja^>siEL!f5uWWuJ>w^S-zN=AHxP%Yh|Np$Co_L?7cBNMe zItcKcsXEuKstx_-D#+|Jha2Mj|IS%Q18P_7xeQ(8*{kT2g*gjKAEC z_1hQD@t1rYm|jjO6FSjTaeI$;G3xar%rp@n)jm)&#Kne4Q|WVf(lhqzdE}R(C)-)% zc|Ich2v@Y*FVIN$23`-od+F7(3FDnurR0ZgxE5nku-$+z#NU9vXd<*17C3*i5L%I3 zIPp0XFgh=J7PK{K5SjrYC8~*ES%ol|4F>0yX5kk+ZXBooXpSMZwMbVjPsD* zi?>PtNBx+jU(jpii#W~_y1j$U9BRge-l?9`e1tlwE#Vm7uPj1cyYP%Fz565<_E_+^ zAhr(CnbQkp5$lIzc)Sh`Abk_xr~C*m_LX^sK+zA=8vAp^@q(=DOYAH55dAnBwmH)k z7xk>p=cH|9SFvN+I?_kdNqEuwL>DT5&xrtrV}^~fEqd}tH=br@;jl+x9AJ$l?4#QQ z?fB4bghw|ayA(%rd9t3&LP>hT1$sCiKmFqO4~!FiL#0C+w5QkszO5Ee{*oT)@Tz>I zOz(kr?|e~1`#yrPaho-6J$nuBk*9DR|KPQp^CNNu!Vp4Vl5acHc|Re0Q|j9PMY+N| zs6H>mnGAb6S~O zBR**w{)HZ!JMC9tLtGJr;LzzFptWUgvZgvuQip}O1>soEa`=96Hp3O2*kLkRoPUU?VRE@2rE>G68# zU7SmYzTzkNgka$UF#zjsk_urxV@loezob}GMJ;U!GwIt$+kDIL)`Bo@*W8W?Md!Q`v zvK|hu52nLQ{D3h0OXCo;Jp2++!hW)m^(+5aW8(s{UoU1Lb`rVq6IbeWAgMoMXTe2J z?_uIux8uXF;k(1`FIkpP|5pOe>=HSCz5RDMK9ft`w{52Kp!KTMaly&=sOH)=&yg8Nb91=&$`&{Ho$$pg&so5x$1~eVX+N?VsW= z5#8s%A~wMF8ubOyi(gg@B>qC9CI{jVF<_wg`bz*q^Qb2Jqqf>!CNgKmH$m%Nb-#mzST3R33E?a4W3$%O zo(WERADxHK+v0%OoR2h1VEZTKCVUYFlb>*;s;Ux{Ogz=@;FH zs9%u&qsmtx)bGTa`b{_teLRf=yc$aTEbX=Q2g0A_DqnwLl4s^`G4&IYUZ9LSDqNrI zv(iWV`W-r3+CA|qZpR5vcyLMpzS)FZ-%JgNcU_UeIDHW?rvra6j{9NBpXl>jL8(s* zzvKNeT)%zAkrf-@zh-~(c8t;S_Mga~4_c}JHS2fizR5a&4vt{|P@cxL|6_`;zv}`$ zT?+iDzcceW5ib50VbWXVJAWiSMPJch>W7)X*ulqF6C8yREnh50=wv+kzuw1-9QvfU+4)=#2{)?| z{lR$MpNK!mei<{}iST=QK8JkdhiPOUWlXPqYfkf#@U9%Hdz6(0)+~7d`=dZ6T0m6Uw=^5057z zE`J?qE`uNTxd63Dk%vnaXTuK*H5K81d0{_ig~7Y@ca^};DV+k`2df7<9qTEkcdqCg&_8J!!=I~^oiJ1WLh?7H#oGiEzWxC9A68R%68keQ zzhS<8*VdSqefPDvk^IG8PvtdHTM-Ja`<`+fcP4yGdQiQEaH(fnhI5d`FDpPD36^o{ z*vUCOf20^2^L2es{2Mbwdi+KNT#?;jKaO1J%iZBy<0rbzN(g^n`BjpKlgGk7wM=Y+p4;ak0)=j3#X z{iaUmp#lCSc9V2wST%U8uFwA(m#{Xw@X5p}y!rvm zyGF)Qlw;Dz-`_e}57E=Ii{_1jOT5@C?nBeOlJhD1)@{CVTX1>8=eprvX?utqv9DR4 zoQe49!(@NK1-dxjUB@SreNATyio7vvDSfO2FrCdx0iwqw&i{NaZ(n;T=}b`4-|{N^ z2aof+PwuJpac`k{$_or7`BxWE{v{vl?xpn6JfHdavcUX)yn^tuSLiIrOV4Hh=JJi* zOJ`;;9@&D-+s3)jaMs% z>3Spc9L4hzncoP0)he5|2da~sSacJ}qDql_)|L<>f zy`Qw7;Ey~X3&X4#gjxXXp5DubQOuCwhroGr!`FjkMi`&aA)K{Y=(J>@VSxUi78@@#s9! zN96WdLhB7b)ammojE-JKNcTuV=PKYG#}D$yJCS}6#`!PjtLyWy9XdA88bR%z*iB$% z0mWxA^yU*T@xK)$oj|`R(!(A}P;@oq2lK@Fz&z2#@n{Q<*ZK9uqpbq-9~f`uFZkd^ z^uCbDG2e;MK!+VLR0wDK(yzKxI~IyCMELLhZClGP^n6dA#|aFf zPB=Jhfv^R_76@D5Pi}z-b;+zDxoLSBmeGU9D%H8sxhmpT82n_`lkmZX8QHn;;!=xv z9;_O29FaNex(O-QW#{K6CH3jot%p+c>cD0xxL}^$v|T^gd&Os3$r+lGI95fR-m0H! z5vOqE2;=iq>QAjazY;o&lkQ|)!)2xC|JLb5U(tg0SqPML>W0An+5euvJIipj9?w$i z3TKtX@`8=^^g#NE4(l~tb6L=F2F^@Et*ecJXF8X`cO-23T_^u4jHR5;&R{x~ z^dZ_K_Q(JYm77j>vZ^6k)6yk$Hl~!*4#qdbw`=iD>RA3JvxUEzd~;Dlc{N<8mp^VN z@i9Y*hqv~3pdNBIm_MBE7BA&96aPujz9myXpBNk+n2)G6bY|!K4XfH>N-Q-R%M+g= z&$gr+)88f=?Ra)fv2!Nzv$DNijN2G@=TW@a5uON_qTa4%1mVSA%~|ZHmIm4{p7G5c z=-bwwyEtE2#P_93>SiN@BK2v&zA?x5bk?aEnzG^hwzWCD0e|D#9A3GM z25ar2D5+xqtF;!?YN}S_y?6jxkEm49s4Qr8BU#;6ML@{@XWq>0?)PPvBuHD2y!^h* zzW3(Mo0)ff@A~F-p*fmSe@osX`OI{By*x+T-uG8`;!~=I8#+e+?hP}votp->J1BIetsyjIz#g&t-E~o-*jU&z z8^EqS*u@F*eeHqEh<{m|7EG~IEOwJUeE*WfBNX1^!|FCm7Na#1>gBD1`rL|(@*>MLxg667sd zL2p%uR&MBvcD-*+Y`55aFVQ@>)!YSpB&A^Opc1|+Mmxxp0OqSp;45agwt*1MO8+R` z&|BN-me9H+_g+c7h9V4jvNnL-=o8wn-|$r()9;84>zlx6OpU#c+NG7DxqZrg1_nOc z;W=%?Q%%aMY8?4Q-!q7yl$)7Ecq`elma&PLKd$5i&@tQN(;T+pp(Z$(v@&t|%~n5$ zG07bG#{3*OWjO+Ni6_IC=4ij-9C#|=FAu&6$MReVJ6!Shk)wHRSkt8XE3c3Hbb%5t zdWseq+t-r#w(8%p8y;v<1AzVlDmQ_WUfx5pmMh_2wo7KFZ^rAp;qE55sK@Jca{FN@ zbfkYbmxqPrFw-~V9kt=MreB|=YKHW<{@c{doN3S8Jou5n%$;yQ>I3_&k=+(8dg7Tg zreAZ+-x|MI{mQ7Qo|u6|e$=Ui2iJR>)F9>E-}h5WcabzP+_wJKCN=mw(3efY#N^e- z>u+d+ySBV6k0-T@S%Zdzo@CL^HM9rbg@@u+PB!XJT7zV-XMf}U2bjJ=D)89vCH^~l zU!4nDCGJUMtHnKOv=nhMwB39N!#(K=@WZDkQRm}5nwnc^FGyxC>7}^F4IA66pc=-L z_{edQQzKKm$A&%Z7s8(ViGPdGmpvxlgOT#Jy-NA+bW?um9N)d~Ns;5qyJtuS;%E9E zE7R}VB~7nA*Zk2~u0mhpmBf2TYq^F9VTR}z-Vyp(|I%N@$Kh|Om7I?`T15sF_m4#4 za$&z9dhQ_otb|Rx+u=cYPaO2Z@4vy*2+v-4{sGTnp!_r7DS&4&JS!O92Cy8Sjqr$b z{vXj#jgHJEhM?$Yf8(9^5q%?7>WB1X)D-bKWY{Q5GsVSwWv^AjO4j$o@j#99|ENE< z9zxK6XuNxlo(cbEPn|t` z`pk24r%xF_V$`U7+x(FuGUtzU6=a^~I>VKjmo+LsbM%N&S>SPvKD}U+u%_W<>yN{G zGrWPPuFzG*b9s*^k+1Rff6#s}`wfZq;kkUh1@FDM-ecNBm^>!l0Qx+4dD+FT{K|@X z^NY*MO6Iu=iYm*>$&*Q*p{{E9+*vJJf26**!p7rGFT-T@)^-=^D-nyB=4a~eGf)Wd-?OP+&6#r^{Gv8n9S?t`&{c8io61a7hAV4 z8?n4(KILY7iJ!WDR}(C(cs-N{xxS?dma(Grs!jCnJ8Do$Nu=x4d%|Dr?Ka^4PlR5gaEzP1{>vtHT#TO2L~qR8 z=U&TOe%d)Vy?o!$*LF;MQRpQK$GAD`gH7A#ywGjr zaDfyGXKFcIpoAZ}er=N)0`r%LXxwjmm>_ij1}F8^*I>L?$bbZ%&tHV`^2w^*?aQ1# z-j8kPqZj|!1jo?5M?8F|?%%?>)c!B>-=_Vw&W`m5AHP`Jq)v_1UuCMlBo~^KGBc-VEHBr$GBZD-qEBo+b^$!?~}r`W{2|r`^B4@VBpkl{W>bY~KPn$k<*7%9%Oc`~Wby{9YQSnmih|{g-lohy&t;2_pvd*q_ zx!pyj3$4RXwN9+6EOeDt7UcuFncY@?v;*$SQkHOp_^RWz?Vf1&4 zUpwj#aM!n`;UU)9UkTdk2)aG&=Q*i|@9b{izRrFXt(65<5uSf3`Rf?Z&ve2J{g+X^ z;{6#bLpww7YNF%eyAsvqjL+#EOjpX*%KSEPS$n=_e(xX{7QT5b5*EB~Dc;KT-1n2; zFLyLPNd5rR_v|IVozpoP`u0$`hoO)4=#X>*D@hK|Zo;=Po}cM>Sw6*g<|xrqTv_4I zUTa4^v23*JLJDKjsaJ+ESEMWw4`w$t*F>lG4HIR%6a)E z1(?bhQBYP{>Z(kTV#bW~&zU#BsI+wwpp{)U-#U55be(K&g{!<`-mJW0cj3H>{IW9l zygawNVqS6a;*xp!RpsT-O$eRVs1=1pB^8)OeAGm@drDqq-n?W8ij8HZH z7b$%=Mr-(x(vRK*YpEk+V>!RHOU9e9>4+vU7Ev?loY}K5Z>Nd=_)SMOfdR%EMvnsF zbL1wtqjMC*KSXQCAf5+!@JRgdO)ytDL)B#5O8mKbPebC**mOt}7~iN7{XAvT&*_^E zYf_`*^5;8PnGsLVO{z(aiN#w@@ds_{(xk?!mAod}txr?}`f>Osm@AA^H4^VMr8l9s z@{V3R>L$2jOQx2s;yVL6rU8qO=J1lr;-`IZ*SU1E9Q9oR`j+~mGGlh*B~2&n)Ig^O zep(uM{uH(s&0>2_Y`^^s(<{fIxNP=C`x`@Sr>9c`-%SG#7k_jG+PUwjTXC|nzIQbJ zjJ(s?9_PMO7W078&9HgGpC3A7d+Rj+>GS5TbLTOIT}MRbM&VdsGv!`Qbgnz_ zd%A1Wok{C5W<2p9(WLLdtl4=xtsp9hfy4 z4-y}Wq4akGg`YrB-+|d~`kw|%n~LEM%z&HpDDWaC_|G7m>+YsJLVtIV?!XLG5Wc^h zVA??9FYpAF8=7T>GFi4OSb%4PYut8<57ry?>0iR@;+(;r;6gm>+a~{V#`nvhz5}x+ z{VAgBVQAKi+FrlR!2=Mnu@b1*xlcrG|ypJf$(d~=fEa|Y{za5mclcdjm? ze5KqZe=~d`I8&cB6~09dMAP8r( zk5Dz)KPNde7)t(r_cMAg+WIx|*AN_wXFI$N19*R84~5&#r*ryO$sM)K&^tjmn+<0- zq#lc&s?VqVgl~cO28TDPqub_R@Ye?6Y<4=}SG=tG#AySbnW$&Kvy#HA4EW}jwWIEV^=wNxi{z;rO;FO?8MROXVo5uH{RA~Ie(k7R&l;`L>&8<(@iL6s^JSfM zw7OVdr2aru8s#>tZ zgHfzH=Cg+36wWWZgZWx7C;0@L^Q|2d<1x{%jK}DkA?r%2KQA?t{VX#smJix8L0RJE z5xh0bhn!8Bz!8COB3*IqSfJnw6ny!*Q1Ao_-fxb&QlFU51|R4DX8cK>xM#V-!$->9Zb+U^^3CrmLQ(I2gBdUy&J4>!G4Q%02eq%JbrH zwpE~A6R&L*S;k9iS<9>qI`v~RZX2{14qM5i^4uOvTJU@Su>L(&1 zT^pZ!ty>YBzl*LBXWcef&+n>gf^#W9KSSY3^qK-6+hCa>)NUu$n=TxV5M9IZRFBBl z`v2x_IZY~6c{BK15BF@!*ZhgKZ2;MQ@w~_o^9FJbw*L~P9OV5Rh}8AgRC(XpmW%rr z9WK8B*TZN&`}l!;d3hfMbrg^K>^4}B2HPbatv}&evGR(im*}^Y6~;ZfZ3Nmfso8mG z>>DkNm;DDDuagTMv8!Z#lKQP`h_FCeVwx0X_1Jm6CEEn~e6U)+ZHTsQVlGdqH{G6tBNQ!O!AHE9I&P=Cx8=P;4{iy#|eyutC zZXv_gocUY5A7FZ)3DwWG>Tip^zI*2CZ?0>#Awz%Ej+FAL1-YN$u z2rP@hR{d?U*SduG6TAzcrp|*}8LO>i>!cj&aXy4sB(ZJs&#kb(0^b(b@V;E3X@AaK z{w{cWm$=5LEzw(4(-+byprNOVMwD1^=f^Zs%xeOugK{=6yl?X<#Qc4= zmA)-*U^(mBkhgB&S6be>#Y8XrBx+y6=Sy4Z+hX&#*)sk#>#w0Z@u&D(NVEQ)+e+US zw^v^4&xpTd@^09=4Q&UltQ|mnyBP{!G91AE9^ZZ9Fdq9_kwfI&y!BJG736i>pD>J@ zCBCEZgRSpt+d#@m{P`IQf63kpl8<+Ic`k+{4vzQG z$+*7mH?eU8wrSr+WBmziF#7R*2>Q3!y3+VD%;&Xmp9sHIzWAH9E~GE#wZc4akbVN= z;@zbIn%`}%r}=Fy!<;7)&v%bfc0bDTnwBO;Y1Lk`So%H;(84lEgXqfx8=^yiGzL%gmR2MU{DPqL=H{2$Hy4>Z-o-&{m?L|2323I_>S zaA#|vRL|G^dBnGmp}Cq1Pf{;nT>)OYP@W&h=7%w=@Qcf3QUK0trM92{4Ceo+9=DSr zS|)nOWxdwpPa8}&(`IoXfGGhuuhk94)AO1C8wmzJ8?Eh^ZvOXp4KW4EfLkgEJt>oP zc=|E1`Q?caJ`SE=z_S#dT6i9X=O6HV1y65CI2@jt@RTAEaF@3{r_am4&u#GZ$FTiz zUbDi1NO7i8@BZZ!x$;GmUDEQnwnZZH6@Foq58FAiW_#1F<=Yu2pC-`3f9JN;>GL{} z4CS+SFnJWc#v~t}zYK##*f&k`O>B7#ZJE?q_`F;LLkG_@8ub-# z@Hwvr4)^Y+a9j6SIY*g-A2}^xyW<4?eJje>KR&J_zpdE0nVc2cS@r|Q@|)fACvDph zP`{Ht&G}&^NtEBoEvs=n(`voI+&{_sh?URd`TLN*Y;SS@+?CF6=s_6Di3H%mx`vOq z%$A$=c&FX-%>?H_ke_%97|PFiIHh+>{qG_i5|sDy zY5o0wh>xkCME!@fM_juwC5=Z{I9|o)q_v}NEQR-0vT?G!U!#fBl8n2Lr17(ytC8`z z^XAVRah~JZL3)tzWb+FN_w;2wm~1W$Ts!J_WiZYO^7z)t{eCMxqYTpzS&u`#q(Y_B z?*UItM>)6s{iZ8F>UH+r&0U7&AAEXuSU(1)sgCpnManr$Opi{^0ZBPq|4#DZxhK$P zTHzn4JnRf*eM!m$`#Z4E1bm>QwQi*K(twgW9rPpr=X;#SN#=7;*0}RUiBwQHfa-<7 zL^wLEmgZINn_906B~23-;W?JZ2Wu7+pE)DBKVh6NJ~o~Yk$Mmq68r94!s5sp`keT1 z`CX7vQJGiiI@Mb0T4J4C?t zM0eCaU|g_-?r#&nK-)7e}4#=z=??1So#%C|LKWNW=C|vR#Fn+kcUx%B! zQc2ROBaG?#<{H!4dnV4$f0Qv@{WwZT{Q`77Nz$ofjOnJFMd_sf^PAGyMbLql>-*OS zvVZ+ADV^MB;6KR7XEa^9G2L*MPtGUW4@r{l&7*aGVw-3W=Xbd9W8%{z;pt;_`Q)&F zCg&$M)$FEnkYwgL=m1V9@~Oj&d?riRlher&CQm!lg;_q)i@%34KdWRo@HnlP7(x=CiPO>xWCC4P6-;_?;mH%e4;VJFmG0rbaua}X}XvdcB z(ehoz3{-M{Qm^gibc`3J%l=KAU$h)d={$_5=1_f^#{OqHowQqjvUE;Lm(A%eWj=9y zuU&7Gd>m}%)5YneUfWIStej5WN9B(9*P*L3@#!(8BdpeIE9snHw4B@C(mjz z@~0|}*L(|_873=t!ION%FECI=<(2&b%PkRYK_OT_Sl|D972`|2aTZd&k?F9+NBgyg z$qCb0-IPwU|At?99tr5RO!tSuYkceDcMJ#yV zYZx%vJyX8tX&xZuVjD{H5wj47uN`%FHO#Bc;osHY6${5sMTE4d+`DNQ)jURYy6=?+ z`mG&x{nP~Y;h@wWx(KNpWt3}V{bPv4`@kl{?HkkJOvO2H2ZvS7gliv18abwW(Jldb(T+x7#uDA zwZlCY7a_K1!oPTM=Q)SsOAB&`gXzf%idWJ_DIcdVDs@*?<}RqnEvu?5E-H1YjH@+W zJEu<;A7~@q$MJ64?7R|pv8#M~X@RSHVtIKUuBJm<fkgy{wL0cahtLddV%$TMA(lq(5+SdP%Fs zjfuXSvCh~f!s?x()NkQI7rP7D$?}~F49$dR0X)m#xfPzr;qfs4W5&!`>ULRw!R4or zHagF_B;QyVluv_a0X&P~k$VmN9RGh17JttHrH1;$@ejZo<#BifO1$FyDyJYdtS|{o9grd;yS$OL_7x(6o zwE+p^df{R8XgP`hwSGo=uR)`ILk0?fB=jV#EqY>0$NB+{-D)=xOxsMbplm^Ic_q}7 zx5-~ov9JgO3g0JxNnUksH8e##`>j3-hn}D$uL!t0k{jQnaCaFrTW}d1zlQnE;q(sn z+nA2?O-fhIddcB*B3C+xXKZ0Src+Qk%?I>NV|!z~Ph4TSHwfnXMg`&`2%K{`9v8w>O46umJW55p96fS<;6 zb6D^;f6>7D&ft2L zSDIgl4PDB;j`_p>1M?{+fQFu<@#YYo~lmvcF68emXyRS6a| zoLMAS!~IB*%f-g>1v$T+%!h~R`q?l2Lj&_)QBkh-A7(nWEWhZZ+*MIk3`*F{{Oe8% zSa2|1Y_r9#+)K+AEU0h+p75VvM)k_d%D9tIG4-uJTG4{78PH zM-S&G{>4r_qPQAF&jd-l=(m>jCI0g(X6lqu&-06m z+_})HNq=IAwxh+lcsY-o`?U(wdyBoQf*GhRtIR6~j)V?aRX6a*%}j^kze`+{Q1p_Q zpI?P<3gN%FY$3cbtKl>@IkTKVUso03Pvb+L#R~~v=ty~q{7kMB93TxG19TESi{Yj5 z2YBv==U#Z~;dvIG$KY8H&r9$$!1EV)Hp7E>2*rH}znkLxDHq1(0f>V`VRUkEN7ll- zQm`KH;?HjE7g9JEL3a>=R{v!lAQ6~Oo(%YnV`+3p!y@R=jL2nE&pxkvVUMvx%znvF zpx8*T^7vc)YQR-`UReJLueGt9m=0|Wc;-E+NP*{26-MN zezX2O%e(4vxX2^=6TOIjMIR!E=uha1zQs>4HXoDnk#fL!1v)uPm<$pY{2$v#-+67$ zN9YP)!ms7Cpk6~1IfQ?a)69p+BXlI+iw6`}_je8%9vKiB7s-i4%zk?f=?~Lk-bf#R z?MCA-{1Rg?bSGAoz`Zh#z^xNBrsh8|$Av`*f|3$l2!|-#?@B(y0E}4=CC> zulwJYZ=yayc>AG2|7fz~VCK7)!|z*nkilMu8PC6WOJ#OkpxHk~20d{&@joRW2}_?~ zv?o$OGBJOGe?!mozWQ8KD&fuUnRYz-_tzadf#?Ze9;Ta&UWKJchw|&Rf00;|(x$|2 zUSLqY{vHGS1$4Igk88iPFP$Uu^`Q7dKF?P7uPudG55o*Ix^8_8-!W(E)Jk2*>0#QU zowwg(nqCTgQ-}fby|U1+To=;kg6#w`IS??S?mr`jySPl=vWa-78tcUZ>-$wN8&q%u^ngO;~D-c7a9iv?S z9o#RnU1G^s=p#Pj2_HgV?D%24c5&bFOHe#a5&iJ@QBrP#WA;Dup;3R5zcnts;XNMr zU3PqVNjd3CBAEf4@G$ka@_n~N$#onUSA0COgKG-oDM)j^w+|qkD4t zIJu=BNgnY~lpQ7iQUB>nkPpdt@B|me$jLOOR$(+Z|-$w~;kzf2%{zdg8 z8qWF`d7|NxpbaSbN;>Riu>Oj_jpWL~1Vmp^e3q+_^(T73`1tZ!dSR@eiKc}gt?02G zi4U4de#!TpS^w7K9mV-Y^(^gyi3&ZDOZ<{&JbxG_bkeL`zoPU_^^ggK*)FI>6w2Y~ z$Gn7|owHZ$drZXH%yyHn_%ogJm+xeSuGm!;dhLb3xA1oZOuwyko%5=;G}Ia2sezaV z?Ac@=l|wvbjcy;CMiZ8}>lpZe2bQu(0v95G=Oevar0Y$_*PRyoDz0C|9FD1Rs#Bnl*FAj7bwG zpB;_hAD1;g7Xmx--dF{LZsbbyExB@k}@BucGmZ5ZIBpMel(#|MB@RYJ4iBtf~grKGWdwo6;|7d?uv& zsTHu{j3lSfGK`zqc5aRj>#wQW8vo)jdz9c&U-0e^P2k48}AOmJ;JNt zZsXim$^#;~jrWA`9%13ndA6~9FKVm};T`jmpT`tGyYaRV+!?>Ba(;0_`sX#S4uOf{ zRjz6m98-YpPq-Euj>tsa1&x0Q!JY0mAb+qoxd3i`HdKPSjouL4BfJ9Qi;ME}@R&w! zd>c8X@um=%9KN{F_WqP}j@ z>u17XW@AkV?-4G9R<#fw&kUn}1~gtD!h3{8@3^jyPGG;r8$x)Gu%!2!(hqLDF{JMi zjtifd;@33r-${+05ZohtQ!(@zxv-(?s;F=kL}OtqrSa+z+BL-Xh5IAcbBz3rZoD>x z_Xt}J^an;MOlZ6=1a=8;hz7uqVem*h8sAtQg2lvG`J3pEY`ioCCncltK2!Yg#>+zw z+mrWyXEa_J0;5|d`JRiib9$pY1ZKIS^wqgW`Fb{%hu~mpEIyj@$Nl5e`$nDn%h4wt z)NnEBqwa~*t?}b(|N5i#{(xlz!MnMF4%oc=)5CMmdgeE8WPiOm{K%iBKgnWsb$KIy zY4$(A_5SPa9;ckr|K`_MJTRm3mj1pw4)YR$X*1`{I-PO9>iOXV|FV3LVy21FpZ!i+ z1S5BXP7VABH4sdjd>zgcu}$C;;Pyx->|z2t+|*75#$xD~kLd`M{@2F)e4Cl>O5XIo z{8S?a9Q%ng#*nX}hu)5cdl0s`vmr?6J0Hp5e&bhK4yFENf_yAPHjtROe-X(eQ0T?- z7J614B>hhgZklUnWk^8!7YP)+9L`6=lR?Sf&iGanOqNb`wh~{U9dO}x@+BlUcMxCr z@^+A~nsUSYQL;}8-5taizG^$jm$jl}e5G{|ANNtm?6{@?+ag(Pg1N@7kM&qi?$jvW zL;ebeOYF;<9)>0AsB)6nez2c(wBEx@+fC^OM$?&o_{Z>FGcCrkqzNslS8P92bAAG) z)#i;R`j#UIO5JaWv;BbY_3FN~mL^c}BxB##TMDo*5E$hA1PY$|mgE*_VZXpAUh*G0 z>tEWPO;A2DlSWDOEo7=WAAu5XhSsk?e+tJwYu-Fc-)&-!Z_6+GPVf3pU0>ELC7T

g2i5WU>Jy`b` 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 literal 0 HcmV?d00001 diff --git a/tools/.testout/dumps/crash_main_28608_6a51d089.dmp b/tools/.testout/dumps/crash_main_28608_6a51d089.dmp new file mode 100644 index 0000000000000000000000000000000000000000..1bec6d27a9149a0d0d19d30cdaed4e3fd094c5b5 GIT binary patch literal 252058 zcmeEv2Vhi1^Y~s8Ak-W^fRdvcr5HjBO)ii?P{f0vM963ArAW$=Tp*yrQB+XW6D&~_ zBgRiGXheUXpn^wHg8~LDe?&@b2-XOSG|7KfSqVypq&f7OJsZC4psL%3fJzht<9=qw6;AHk2ynhb=^42-pf`)0sD{CdXP z!F>t*225crltcJ!hkJirW7dHg?9B|IhHwcPjDZNo65t0i$Itr0c)AfYia^zc>+~C> z&y~;E0lw)gv3@K9{`vy! z3*2%+vq50*4A9XEKACV$68AZ9m%<8#ZzNDeu>SDZkM)7y0Js}Sit6xhXMuE<3OSty zWfgPXT@HGS^3hk65OryZg8YtzFz?O?72~aDjD4dDE`@vk;}yxwD-J-dGeZ$IgQr7Q zE(g>@(ZFa4b^LE-fjb(m47T5dDnpjK)XMLgcC6v?d9p242S6F&ZU6tuRYFJR%ELa1 zbTyIi>c&a0!hOQlurv-=55oXn#+`-G|K%cXLco}@iJ)J1IxLgZ$MH@Q9H+m|!C3D} z0)_Tkx(K9CI36}#@P~etJ5Jx?9>y%0h?@|Ahot{CEML&e4vy3Bcm%}9Yv^rAA9^aR zkkcRL^$HxPU;1yx+Kfcpga8tS^cB@%vp9Ve@2J6X`fFZctXfullkkO0xuic8c8j1_ z@o(Z{Y!BFoJCnG=r4s3jPle6n^ov#W+qN?na|05Z5P(3WUwon_kkc3Q4jCNRXYr?y z-WiCS5P(NhVgIO;HH|oZ1&lkmf&Ft3Hv#w=`au?f^uZ@k=}T1hf4hdUoFoms4e3|^TGN`-C#dKb!QiJ@mA^tCC(ca-h)h%X|mFYh$@qDB>;%09*4zuLd} zR2L}z+!y?dPj!Rh4|(kazx1cNLh-*#sH`)-)A;(k>hx3Hq4?v*eO_n$#4o=*bXH|Q zs!J4qMDcfZ#_w)ybg5cC)h&wObodW`#izPP@xOffN5A4z-J|$Py?(7TKHG8qLACx= z7b$*0AOGT0-K6-B_4O}4)m4f=zn_2csqRwzr?U=hRM$W5uXe_ifxFe|A0q;v5`89% zcwE%mn_!Oe37^xPhnoO#HbpAcpC!-NG6@#-mnHXPtsOntN8zsRV{T+@L(orW`5-QU zHDu$u{9q{p zreB@13PrhMr6bwvi_C1)sgRZ1HL^aC>Ef`ibX^9rZm3gMJj!ylVJp6C%LdN5Z%ezW z=VwEnuG{LA^$N;zG+~wDO<8E?eTNb?vKE^#zc{QbU41~-DwV9NTKSdsxyUbbF`Jt( zn=OCzs@K+PWYyP(-9gp|Dp|?3WMyHxBAPG@l(p~Ik736(vg%t7dxETEb;>&Vj7V3N zfi-squ;mAnM_o0|onMix1#r0YZh~$by8Bij5DucT4g=~c^Q*AT+b&@>pIpLXzH2mV zsY;eV^{X4mvezjq25o2yV0|V8vQp=g);l$_eC3xr1(+@_>)|?O?ZdKB9>5-e#iCoH zcPAPX-8SUus&6^u?Z)eM%Ib&dDsRPt7q@2b-2Kv7i$<0|Wn*8RvJT2}7{xw)C5lB| z+VuC5^OVKQe851rWowuDP%Imcmh95StyqgTQ%CMQPgy*_de$lHl$6zhrHt>$j^1e> z-uYji`Bh&V^86ZCrz{hejpU}R+08ma_>PJfSIj{P&GN zmZ@a%70E%eJ><|`mxF38QE(eN>y*{-4bg7646Jfx06X-1-p)fRS^m^z-bTGrr>q|^ zze<}h>s?LR+$PPE`@-11KK-)0#DNfSyc~X7r>x%6hRvDbRCBg8{IWd-8d<*D4ec0! z=hyFb$~t^N*wEO3J(JylwSRWf^mQ6puY_U$#i2UCyvgc1$er5S_3LYtRT;q2#s;z* zmu3{5)ySF~gt9oSOBOF1W9yW4qipBn*tR#uu`z{12AY%VmtWq}b#tAvOxQ-12C%!P z2C}PL#@~L&dCKDHx=$sm_88#E4v}BwjNJqIdVSkP_f@E5Q6EXrZNu7qB~%r*Rwb); zepRdzvK+zevD<>#zYI@3)iK#^Ly|$TE?N9>Ldf8{%EsvbU|lvc*NPC9e9xSj$tqd? z)MZ}gGwPJpZ-bBp<#14WAlsj@=GebAvg%t7dE0w;owDX*nRmf>YqWtanEl?r4{2o8 zw>{)-)S5bFrR)>wG6%8D4h`6{=##F#DenBL%ZBcp0U_XcIsC9rS;Mf6G6k~M{|RJq zeRmM?WwM5#Tr@lO&6c*1rMpK97cUA zWR8IdpNL8SzXG7tm?LG)`xA``s*5Gw@G)~Fi?!ldK(B* zJI{@$Er)zrWNMwVGGsYy&9-iA%@S8#H*u;;R$XnBR#q2~wYE-K?Xh33YQV;xX~pW#ef~-k(${O<( zUwdWF(+ysm`h5fQcVjZYRmoz^#2N+}t_)y}*$BDIzy##p@{2#BSfrNaP9lVGm-L~q zVR9flxh9ZpJM+Q6HfEfk4S9b3s+JWk1gI{zVwtZFV7Gk-&k0`Nx#sM7%HsWU`(f_H z)b78Ipe(kSHQu#^_3dB!of)2YsOKs5ZKHaFtf6(v`WV~!zVFs%?9D zejTq<*2~cPfh%vzo;li%J-lXY<{_0Vs>^~#UQ7VJ)nyy_cNnfJ^X^+26W8pSGmwqC zKZsTD9-H}kwmZLgF9pp%IE3zYzIOj587d&TmaOG(i*~~jz*aU6WCsRyopbNaZdv}c zy}aF6qE1(|B39l^-HZM5Sk~+GSa!+n%YWRdkyYQi%*Th%*C}g-G8Ub@CV(}1Zhjln z^z%y>FNdGhDeLPuMY(e{ALp zDp^zxVI`COaE?Bu7-X47xC=z>ve9~{kOgz|piTx>`tf6T&V^^+>bAGO^Ga^R61A*a zWg`RUu$C6=vD^@LTSlwrH)~|ow~gX9e6wy@vfT(|y|V(@XKi*~+64AssMF<3mfKn& z1RPJ-7j??I1Lt3+u59-3ZtUeTKR!R9p0c!U6t74wMo3(8a!)~5mWp)IO&`SP;XdL=U5@cup%iwhgn|VAC=@h+v#3wzqkn}$M z1@aBw`o?WMKcAIy*q7*Umj0W_U#qt(6ZNi?P~xPw@olNMw0qfRq`R|7?tAeOKMQtq z=7}A;kt`8*AE&|I&TQC=OnR>#g!Vll`G!i|C84ndwGcAlO;V_m~bAdyI!DdTaB6?5_1EyVug&{28_n76~OzdOKx) zlHJQjA>Ehd(%wGe=Q0x;0~Y4{qzl2~|% zCcBpvAf2MOkN6~43w`NL?TeP4+86Hcp?CQKEGI4rB~E%f449u}_p-G}r|9h?zE(cr zTD=ow`+E6@Xdj}pN&je-zo*`#v7ERhEJsLso138CWcRYQ81B~Fdwi0wg<8ESoZ1({ z2~zvQaSy#C+G9B}ODJ*DySxSJO?EGfL^?%pAMr`97Lwj^{gE%#NAAyEvh=6=Nd7#` zLvP3BsJBx>iId*0*2tgiUbX<~EPG^o;v+tncr9GkyA`q?8SlsXX_o%4NdH=TJ5y2b zQVAtadMC^A4cWbH8PX|w`-o5W(n4SMrhZ6EPyJ9Wy-RW#7Xbc5om9Vw0qeq zq*L_v5nn5xaMC+YmfO%a$e-+=Ed3*-KiR*Q-mXTt7o$=_iId*WDCA3aFWZcCirzlr zlb%{gdY>48eAn&3@nDqf-;D#&zf$^Jq<<~FokL_fkx=5Kw@dONyO%9PIz?|E@wNIA zPI?ng(C>0$`~m0WCJ7}@dYgt|`pNEPt&mR9+eduTM+-^s&?VUJt(N0!YR@C2zf1a4 zd(QcIv?rC{px#vyN}TjAmwJ=k%XTB3qPLIuT73y8y$L56^%|BJ!U|R!Ybc)_S;*(r0B)zGhsgUE%)3RNpex^$Lx0dZ9=i{MwX;&PdluIaa z(z{gFAF_MdDx_2N_7PvJFX5zj@f<8Cd*rz7d08%;(!W~zZ}B-#i^u&Sl@huTlHOI) z-emW(%^0reE$NviKIy52q_@`pgluoM{>H1YesO;fdsp_yb-5}DB~E%9rM=1SWxJ8i z)LOn5;Um6QKH;P{>A6_ywf1|plYO;N(OZ^VS~n??y2x0n)8`<3rTjM|_g2g}(Hrc3ewO?Kt=M(7SX3 z?iVVTP~xO_r^bJauXSW|JJj1Ep~Ok=WZ9mQ-OENH-HbwM zZy)hVA1x$%YyD|_sP(7uA@}#NcV#N>d8(37;-t6ZHna=by=*tqO}ta;?IXTcKH;P{ z%_sLr{xsjA`DC^9_c`CGejoQwvF&mn72>3~X$I;|b}u`M;Y(ire^|bK#81gf$+V_N z7ud5iQqt^&i9@1N(;^0>rjg#k_x8-@&qt^}(sj2i1 zO@gzD$lk#rIIdqU$8GeS#3cP)(%^$6)-CH;Sv{yeUSy~`hy^GgXOPI@QHb!f7C*;=Gi^!5>-%kkz& z?~?D(u0%6Tu3wgG{NsJCYdSjOdX-Z`iId)@_tD;D_p${@H}r$Au$=gaPx@#f>8|Qnr>2AvTN!Cm6@wIj%+?U?84n%YWX&s2;9`=sN zmhGT~5+}WFvVM@=%Oa6Z(c4FSlBMl|A|#YJ>216O>pR)K ztSizzwIJk8aZZSj_*(g#A9tj8mgI}Rj7^j6twZBq=xbi=EW`G%R6>c9-sSgT`$~2% zTZVLs-ag{HK7ClUZ(2xtlfDG0JtUkUwTB${wD(@z=NKWO2_flik?lX(y{s#SZ;HIk zh4%IyKNWWRXMxTem?`#L)_egQxWygTx|*7^HGJ+w zXJ&~NtI}Uu3X|BT&*t!8kLlU!4Vye>=)=Gi-12>+1$3IT#7SXKK8OAr2ksL7!TC%%q?bHs)k?tMND&gpV}ymWXEI5TX^=JMz*hce5OcwM z41=$0z-ISoz{x$_O)orH^FmX`OmHp>SV(c3YCdLHhZ)$?w(u@QZ}cu4cw`K}YyUAn zJ*T#taHPLDC9ielB`m%7;>OqYXvEAxmj$h8{-|MavnDKk;B5BfCCkS4Thf5dIr*_* z@KdsQse(m-@b05a4O1or7@io@ukjhjLx$MbXE%+FYRyV4&JmKz!idl^Fm1*C9i7M2-v2r6g^N5+-C+6&IkXVdsuxmw4G`8it+ z6EK9InKe}2^YgFrCdE^0v&1Q( zDFTZCdVk~eJC8X0O+A0*^oKY%!*4Vj3abs*i?eGB#NNzFkg^=u3!4T0Hj%oUVO1gx z)+6}NOd{0(3n+Yi`ROxn=A6yF|ueqJHmKx;;k6e&G z6ST9ziO91=?z$}==Leq~z!sCBJWhZUpvS=u;aIUM!_QzQdky!4TamDJfu;ob!vWL6 zOHh$Y2Y*U(CTO0m(ZCrALawpupzCmmE;d5v_JEPrwZ_di;oq)vtsnglC{Za)6x3U3S2p#J4UNmc9O zk4?~~DNs7>|Al4K;9T=eC?UK@^K3Ewv1~e|XC|a36?zx9Mf^z(w}>6mVw1V-=HibY z>Xy>Yfe$F^+t&JOiIO0{-5mW%8I?L)tv1acE_h~s9^{j@z4otF$^jdD=CeQLpSRLC z!dZipRsCX&c&~#ofAT2?b`p<<@`7ipQycG3N_ZcLqXu`b_>&So60wQ8Q@a*k?MHc` zR9p+?w-EkPAcr{bOjT*|r~Ii$F#PKSHu!U&LQj_Rr>!Z1ahP57_58~UZfp5tZC-}? zSTI8sf3hD|;!ldW7H+HauPN|nURD@4@NzI+#o3>+5!wHG7&q|yT(B2^%gYKsK6Z7d z*Pq&kW3tIGKILDkIA1O^p?u{)%J?@f_%|Wkx+9q@}}D)FDXidk`Mu-1^#6b{*4Ge zGvRe11I7^UFH0l|ZBrmVf7>q#bRG!zsnA{z1S{7S$c!pY}W*%2+Pw!pCQB4io&as<#rtEz8?eb*tr%R`D#(OE2S3+sWrh zIgmDO%FKSJ%noVc^Ah!F&mT?r_#0<{p1rp}_Ta5JpNHmov_*gSvd>$3{%)+g?El@< zlnv!>x+YEj)Ms3;!ghwn4E~Hl(xJ`atv&Xq_y%u*nC}c$)$j8wzlG3BxZ4PS#%%6X zQLpdjv)zvx`B!Ygi))o(f2_;bf%rOJwix@kt>V9RU_) zhd<@lUH05M@CD}j&f=~GOYjzxk1O(_m*uVQIM4@29C?sJzQQ;KARif7Bu+KOpVZ=a zqG(j%*4BR>ytbYHe8?u+cF+Dd04%0KF#B-_)D>hQYmlZ9Qy zjzvMHl~-5XKQruX&*tL%7b-_m7f1VshsAp{;yI7>2cSC+6=w>P(7j0-XEbn^0yqtdP({aEdLq(zlz8FA%Ei2fo>!eWtTBW=frH0 zKL$hRU{1q7WySXd02Cq>c{1LG0^ZuQG2RNuIRuJLXh4%7^S}DK<+FLa#=o7#9eo3h z{8tBKIEKQfy&B_JB;4Z4*u(tG6OtCqKzdiLP3QpQkNdhT%pT5PAkb-AsH4 zTD~`WOjmJ|17Bo*2>Em$QTOzPr}3|_97E~Xp>6@)0_U~>pSF~%rZ0TkhCkC6UlR1` zj4#XR{<;Np3+NWmEudTAFK>ZAYWm{ZhSL)B4ulEE!=}HgvWBne%Q{I%(-wmI^hISn z{Z_ZYKg0rj`r=ScUrdm0Z_^ijI`R)G5PC9o3+NWmEudRKw*Y*+?+<$VQZ1(~wq0`i z@@rUry{0dcj;1XH_34XVT6GKj^DMxpFHY6;B?3&~ZTh0Mj6R*wT13Zn3+NWmEudRK zx4=bXfeSr-36++ySnzE0%6NpKr@{)oOj` z>xhu(2x|E`G;;Lmi`GIqu3O;mZvp+?m%o1=>M77Ipj$wEBtlKpbz-;WyOsMiH@K)*_9eO`t(I> zAsyE(@b|ZX{_e})KM(a3=oZi|pj$w@V}bAWc^wb!lx-!5^B|N)ETEO8+z)~7p-k{T(`hK)dKpvFaOk>*VCHtsEuXTOj^oo7Qm9-`XEJ)@wB>FI>FEkVqSv3kkR^1eTj1iifd1~w z#h=G|3Uv$U7SJuATR^vfpBDIEOLDWc}%jpINAr z>lV0ZEug>qa?xh3o-o}4x&?F#=oZi|aK09}P}3LsY-NB{r26-oPJFsTc*!ZmwR%#x z_Oq4bPmuWOpRLqdP{(x(T)Y<0-+j4w^HxupZUNl_x&?F#=oXL`m=qrqZ-4&9XS%hp zygPn;jL8x+sxO}!j2@bJeWA6WFmX~!jx8(ER*-+QHO*d_n3|KHpPOh+&$j0mAkqhs zzP9vK#<_j^{hDr1j2+hM*TxNZu2|e*BNQLO^{!eGwyYIN~x&fPZoC#W2<0eW?DYPnN8*jR1Vb_f>HLn=;PSaku z?Rkuo6{Qu}J&0BexngP8rZ+Ze_{75X>+k%?!HH7S3TE5vwu0>3YEk_vXZfS=Jo2at(G>j(;)i_oTM3aobS zgGgfH%(Q}{JbQMowcmh-e)WEE~IV(Bf??Du!P<^vmlxNoIPsib=xYN1J~& z{?bvFFK!;(Cvtpeg(9O!m7(8!a9iQFfS)GZe~;-mldY`~m6o6Dkq0+~yAp?_-gQ|{ zlaa|khmCuIb1JYwP7P4hd2p>I=#v@2Pu4`PY!?x|dMYQ$&#|i1X*g!e3n6{)nKSEw zU00O-{`xnZA|-uhicPJveRfix-cNkJ{F^ub9n&_TeLN@PnNwg_B(*xz|MrrdIZ@A? zweEVLW51U^)(VVK#nwFJc=;pM$S*MQe z(;BC~x%-BZ5og0+;WVIgN|9Zq_6EnZu60vye=Vf@t{W%bmp*_KrDbI1W~%dRMN`A* z+=th08#$^hV9%udVosE9otd9{v!ZrrcK=sycD(yj=JSs}arTw5m8g)t$OZ;bh^imH zynl~{mxP|l8Q8A-;cho`A}s6*$>WZPy0&>|^N!DpR*xDR6W)W9oNvKQ>Zd81&1da& zz4pX=OI~)J{ysLku%W-qMLnur;+MWL@P;$tW2QZ2y>G$VcRMF@w)r+|UZ%QUE)I!U z(SPO1P46#!V)qY8ckJRsnK?zOtSFkEo0FP6?YZTTjZYtR&jX)v3eggH6xJnso6K6g z>(~|Lj;NOH#{PVbNJGNt`~r8w~TK@6R(>N6ubgi|pFeNiPFH_02 zPo{tO$(PR`pFH}GMcIp!n$6>s*NA4bZ?w&prdDora$wV6d*s_Qdn`|D^w|KB2Svs9 zENiYi0bS!`3(kagS^Rs!o~K{lHSH75F1Ikvo}mbges9rF2RphBwtr+@y9)dEvz%hG zwb(8aF{U6T*UH;5g}h`-@9~3Y-`@AyoR=L}vHK2CO0FL_IzQKzpJ&apyIa}QHHDv+ zpX`;NvL$%=fk##?;>1(3^Cr)>shZ-*aWhN$&Hv!qh4*K?XI+zYN^l&Sn3OaN8qXVw za;B%`^%Q6!ao)7S zO?qXV-k!_(rWa?r>(IAIKN#rM1KrWvyz;RLq)Sq0Dyy3Nzz$Ja(=egAvm ztP`u6A3JCjt>^XET4F{ka;_S8*QW=67$1Gv*4GZaJ>F3+6PcbrtFUjpJ;iRFWVPiN z@~(8YN7;&>*yhfmHy+!!y3>)n9$)_5exYA>0d&B{=_&RUUR0q&vRMlhN#9)7IBxg4 z$6_~>k9?9{*tZX2JuzU*L3+Gq2Yw*MmTjYrS!>HU>Rb+j=VAbFq@0OLl z{7#BugF>4^v*_~B;OeJlHjmu!@!7P}w@W#V5a^LDO&Z>s6>44-z4A+Y~IT!)OIV>2yTyJwK;};(mba8ixXW!D&M`g`o*0`xm;e-v-90U zv`;2CeRp+V=Ti;e*fi%qsbjWr8Zb!w=#;c9ciB7CYLM%>L#rQo%XEWdTKo{v4)M{J zHE*V3i&rLe-8S>tD+1r0`_S$WH!l1_*a8MYZfmVDd^C7c`GnoW&U9LnmUXKb(O#RK zR*+wqpJDGiF3%2ac}h;-DJcau3qTrA8$W(vxAnDI&0qLoNoeWQDWVllPtD{FfI>68 z^Xl?@COt8y^3B7KPuV<8R3xDB$cDj-U6~t)Imet%e0A#o>vXy36KsW4H(rE<(^9{) zA!BRC8CXfcjQut97~|!3gar~5(j-ajhyssjj$f(5Cj)++3Qqt$Uxg zgzmMZ>*~)a{=|g_R{aaU$YN~D*!6&ytm=A@!mamme650K1I|9kP|}yn!za}!{BoBW zSn>%xUAeRoV>19R*`4|x@oV`g=QrU~!rO9uS?cG6cL2O}!hQqU>r%kkeb)ym_)1Ry zQ5Df&x(dQs(QF=mIFPX}fJa@5IM3k5{|5ThUJC!l&jH@*2gSb40S_OxQ?XA=z!Rpc z@E3u8Z6k%gDZ-V+% z0(i-S)(XGl?EsgLFtfm(rvOjb5+?Fv^>CQcTms<*Pb%f7$&CTbv2T#5|J=SU054hf zn-bpQUx2TDOevqOI9{+(32z5@`7e0hh6VKL2)LQqM1HzJ{>@pye;DHPfd3VF0j$Q1 zIG6Wq0mT0eKlWsS{CIXImv=x(&&j!fFW8{i|96gW&Qx&2JgAsgHdg9y1CDcB0_X+y zY_KqZtsaUvmlv@lfZ6`Zz3KJc=G+g|L9!B-isd$V5M#G8@nb*&r-mP zd&_U`0{sh*f_)=Z_(~rC{XLZ5FRTK*>)zdjmjiCPEJ5hU^?8+tN48h&`Rcy`-`#%$ z(XZops}8~_-z&8*$VyE=OFx`{Kyu_s{p*@YZd+?w+|izS-9 z(Vp@CWAQeiU%T-gO7G(LAUw<+z7+6^*X1euAaCjWps!1Xe*pBuk)C&rOFs-?;qy^m z6wrVF5!mJ~#IvBk=>93>=lyPdmR1EY=TBj?czv=NVGwgDfK{!-aAzmTpW~3evxu93 zUreh&W_kY+acrg&_@%cCWaY-Ul=khHO9Pqha}2M7^#0N%kW~+LhktY##J>)42gLuV zS0FQf(?zlO}`niDL&{W`; z`jt{%Ph|nW8!?=h=d&Dt)6MT}4$v1wDfDM;kp2^Ryl6S3KVU{6GcVkv$X{Cw>AOpX z-wO6!rotV7KaO|==(Bba$g3$+;(u{hAPe1N7W!6$K407$$V~eY=jCDda)^Hz<5xrc zCM6KR+RgveO2AJ`9P~T23iNBUS>b=`S+H+M6}|@O%_{umKvof}!v7EG*Q)UKfvoh7 z9!h?n+5q;MWLNU%)F!|q3zYhHmg8NoQp!WXX28F=Ld-qmC{G(4Q<^I3Qb~dhE-vkphWDf+~JK; zt|>`xS3ce>&DGEmTGbfWtO)*k5%FvP@&Y;{|N8(zxO01hUbl5 z|2^&T55vwLKh%BQt@i}I_f+?cH!pv-xW36RiInwU!gJPtN#~2dUjKbrhWt%pEg1TL zgygNQ{}%7{-;zlYG*GYq8iV|^&`G-v&VP9A-iJOsQBkz7*dQKr*2e-RlVtsu@SOEu z()r@8*MDD@A%By2whR3~Lh{zuf1CIEZ;Yo12rVPt!B0ZT`v0|9{_~{yOJVx>{}0KI zS@&Hz?}3hQUUkny_jh@7?p?RnS4c^Ltp5_8v;IpuU;O_n^&cKh3b*()?#1w>Z|f6x zinVzPw`u4d{pGVlB9Jga`ai#^u~_qlM^D0$+|mJS1mDtAp7OQ$o)p8CNW<2?RsiQLkrp_lMybyXkWGp_s63O(WzU8yD>`D!uuePxFkS?wFU{YQ$%g8Z!QRAAg?2VI{yWns6P}EudTA;;}$pnsrzc6SyMS zuj?bc$9=l0DOVOCOZ zN_JjSWYnODsH8zD1N)^%L=EYio@>LrUjYwApN3x{{QeEU9Qdt<9}Oc{ufS*Vgg@A% z>t(NPx^*Hwqa*(k4c!%OVijLIJ(ZF_ z*C&gVl79XGm(1S_l^>M>a?j@l(yzL~x$Wmqc_vd4%qYr(-Shc*ru2f8Sz`#UdIvU9_@wy9=T_ipf{e}&o#8Aps#-Ty?Q-+*79+5#AnfQXK{}( zL0pxGx4?!Ve`6bjWS`2*-TL!7S9}TbAxLy2uUzgiCb&+@BS>_W(w|_J#0e5z9Z-nA z|GVY~S!=eK+5_gp-oz)aMy6jv^4G%Bdq2f-_Wk?4j%&5_TAb{?E*JMet;>{qp(J6! z%X2*Vk{z}7*77Af@=rL0=~-;35alAAdBWhx*`FMWy?sj4ils5caIN3YlXS4^|o#LIZ zz5l#t%-3CcsBpw6*aY7fA*ICfP!q2$isgIH8Oz*l-s!5=p+8w{@fln(N&y(h?+cT45u7$^T-8N~?SxiL8uwmyiF3 z&$&d0_4ce^=c1=@eMNyRp~FAZ0=$PRVAEM&mdOn<83_%Ik<>!xnYv*my?A#x3ti z3BBF2baUy`Mn_8MM-Oa@Xf`K<5!IAYQm%^506X<>2h-4n6|z8 zovg_1wmG8NQ^u7OLw{-8Epk=(UE#e)r^gIv*EMq0;`i3FF)5*A+QjZMXLe}TZI#_r zRr2}K%f9c@{jGJmZDJM%=NP-McG*6#oos#Fxa_{_hj$zcw>4^cz+3|PHd?)x>W<;T zf8JAj z0V;-YwoMowC+VtOl3s=v-|LCjceG0KB^#)Y@_8&lC7_-+6i*9%M0fp$`@?9|S}Ae1 z+%rA2AGDUfKKNb?-cX^=+f{FM+fO|^I&X$PBG&Z5dgde8r}sZ)w0b-)2O5cd}z-MEM)nn zC8vNOuJPuO2V9FP>}?(MP8fR{Cb2r5;IePfn`wuA;}s4LJ~Z51nev7KQwFF!pBVbh_}J ze8*2eiFdz}XUOS;v3cx) zc)K+v*JQ~yz9r8Va1(jZFAq6%Fg71Xx>rm%#NT?WlJB;;$;W(!Z^NO_Lm{6ZjJ2@` zDBN}q{*Q!we=v3ib55{aZ{o*&6xpq&=(IFAI-?*3&Yv;GSZ8LZS=q~IEXE!S`RQP6 zfjhmG=ivWD$hQY$3)utXVQiYlQeX^kV$m=fwZXVK1;)cEq^N|c!5<%twX^#pWd6EZ zGP9b5n=L6H9z^A&%uedZm^HZaU~Cb4I9bvYlyMyFmJPS@cib#-<3`6rgsk8X55~@9 zPK(T^%H~_e`l2KM9RaEQ@S?$aObA~1ywxn9>bD{|4o34FB=n*9$rD;a+)`PLLnezrHY3VR-&jmJC3VoJv@#* z_}zoCbJ#u6ID-#~;W{UH$HCZJnNvA{#55|UFgwjO$(jepDVbu#p+GDf z?lH=3!4(H%Z(~klMia5V2`vC`1z7SgKjS-@NTyuP!S5f8oy+cz9zXv2_}EGDmPyx* z88<$51RVSVH8K+pkBWhlj1+PxY1dZK*tH^Ytky-V_^ zeme5mc%e_QOdq9}K9Eb0zBontaX#Gkq!00n8;6h`vnu53^VHjsG%tWi@Z=mReYRpC0uvB zQsq(4+gF|5?M3z^HkPk&k5j~s>qUMLPT{`bKV{72EB(5^ZUNl_x&?F#=oa`hEx^ab zf8NUIpP6z`*?f$7Wlha>SJc!52h}tKtdC{Plz{~`H3Q>nYHpiQ)4rw`_a4Lvhx1EK zO^06B&Z@bd1-C@hBfckh9n&rF*S5glxech?B+ok2n0U4Hr}srP!3vsu63@yc4=rw- zK_T8D$)Ql~`yv%@c-N2UmG?!q<6J7fX|P}KZxA1X^u7q`RVDdSxEAW~i)byPKr<*!}FQ>S~6@l5<6Y^))2lv&3BcU$I0`XUmq{deU(e?5F*{x7;c|j zkdjxJkzW939Nhwu7r<{fFsPE}KdZyngTLd7GI1`nS;|+3{~O{`c(Rx9d7$h=@Pp$W znZpbJ84&*g_;EhuO#3|Fh2d%S$5{&s;8mPSR`Cr7xyZ|Tm?e|!l$`82)=ByK_W10~ zycBy;0lwA%FZASO=UJ0%**2@Vfrm5TN6YB`sG!s87We}!kQ~h%BS*uNs8Ng!1c=XV z__G^y4v(_hui2L2@Y?|U;DA1S6VfE{_>xcE@q3J0Hlj;#0K^A+c4iYRT^S?fCzr-B z#`&P*@=*sa->rj;50BGC{AiZ^2*d-uiO)IWOZ_3f&_5c!KrqxKzZ_=DgRfh_<|LFW z8EHU7>057N`g?80^xp&W;TLsx3^Oi?aqF##DADfg?%ROrPv0cc@0u6GTzAGWb9b;q z;5p-`h4g>p$rj(f&e&^P7;CnbmFGkJqobL*0OEgh&ire(^W70CO$UMfyGO$lNYEh* z;vFBY@BuwN)8Mu}PeSm31|ya%4&KPvafn~-67kIYKrZLAXS8QrnP?S&_#0$=kPY!k zZ=Md|bFTQH{|2c)#0UKy)4=}Ap)4i=d5Aq$WIUL2~lXKs@^H9d;^@qog zR?pY3>aafL{bL5hk2OEm1OOA0L4KP+e#3yiWkBC(sF8wf@|z8;dXYG*e<%36Wy2UC z1kd~@Ncw#my#C?s#|*(Pc|Ib&)lv!lHjlrca^lUr3+MO5ZwGArqF*5Rb3NsH4^H{Un}p=!h<#GjJwKvx{FU@xmYaWpQW$Aaw~kK zhxnNG56{x4*dwHh((ewYpmVe$C zQh!J`{$E1s!~d5uy~(Pjhq9S`vDgbYh%bDAQ|N*aXT|vK5dH>_aO7X=!#`-e;79Z{ za!~jZpFar7WH5(egvTB~t$ed0KU~o9H=VfC(xLBvf92ygwIe;%ejfLx1wyZR(zCmS z<0Y)E=R`qYBiDc4kpx5eYh2)J)1&`C<$BSj-#kX-H@!JYpM0QlrA=>m;N^mz^1Hfc zAAuv?nR!}BbmUL*gF9d2!H4KbF5!O{XbHk^g}q+$&QN%1QFj-q1!x?ghRPb4OmiS~ zR^f2Zn^5|ZIplJgKslWW?s(ruKM??z{ORz~=qFjQTzEerN1okSmwtt?qECFt2C_>LtV}9KM91q5{YYNA zH6x`c$37*$ASa#ZNGA@-<-nK1?OBKsU1LD$M|AK->zwq$m~8$mhSQk<^0tY7a4X!E zaHVjvJ%{A-;Op2Vhqqbuqwoy)-mV3XZsItnivrkA_2d5B!57Zc;bf=SyqVbr`FXkU zzDNA*yfh4}i+@gjzRhIMw{gn4=)la`8QIo!H67W6Lvq3{Qeol;FKILS5#4xeh8+%; zvlry&D002=<8<*w@Cj>($oZK7l8reeHx+K`3cv9j;qfv&9H6&y5d&{P(J5J!F3Kwo z$)&(4U^A`bJnY1WJoF`8XuAAZI0m;lCFFDcjLb; zf3t|<*Mh12@H=rzz!tG)39YV3PsBLn8xYit7bCMm_NU#zaRc0$#t9*7D>ytT_wG=80%Wha{pgr9_!U z=6`q~=3kVAZ6tvrmm)|=`A*)ZVDIIF!Y^KU@)=$aBRj0m-F8fLIWno}&#DZpxif$* zKbSmfL(orWd210VO2?gd6C5dHa9hjbqL{1FhWV$wq^pE@-c;uz9YH?+;I8UH^f!%0 z$e%KDH=@J3G#9i#re3%PSuWcx##V_lj{}$?kf+D^FveTgl=3%5yw5bO!}|0OjxnRn zu|a%))!kkqe;y9;jmffH1TQ2y44>Cwy@~Uu@I7~6xM_(e9a7i6QoO~IKerqImLl}} z^8L9AA7?kynbYT@t1YvBKKT9g`q8?nT(jR7`nvX_-j!b>bPhm&V+@`}T|E%-c80l$lDYc0R08-UPZ zM>)w7s{20T&7m)UH%*oJE~(Rq&?cc#LZT}-qCJfgR!eA+uu{SZ2}`Rmou>e|UAgO00n10>nV{u8k*+ETp+iEmR+8_@mWqH zy!C2jGvSSNev(uon*>jS`1|?=a6cK&vKr0C!^u~%aQ4+?H9P(OBC|kZJ@Y%kkBhqB5^{r;;!U~t zl=1p+g!)fsbJ%XIHr$_ylL2mF4jz^UGPiKiqCVOPP?LGp>8Ngk9 zYj)jfc?O&Io3n1t;*RQn!cAC@Xs?roOhMCqq)Q?2al`As;{w$GL$alOK+2)B;OLAm zCEYTdPE@9|(r9HURGv{sdF%gTvqF83G(;zF@{XX}MI$SgDNfxXBFOP`M}9;#2h=^4X*CVGcDP zoAh5NA=`=aXq}kkDKbG!q1CReBYO+KHpRw*ArXAc&cpc-+SP2dcm_%9xZa*qXrI?` zJ$dz~AKVIuk25@C1AJJu{?owsyKej*Oplj;?R z0ioP+l+&rGAGkKu&oP^U|0b|74^t?8@9j&)>y0%`l(XND1 z`@-qvqZ&6edB@v)Scf+RvH(L6^pFjJZ$r2?f@?5b8^g5;T${qR8C;vgwFO*5;A(_x zOSrazYiqc+foog1wu5VXxQ4>D16(`8wG&(~f$ODk?F`p2xSHVF1+HD;+6}JV;o1YP zJ>hy8T*KjdIb5%RYcII=hHD?V_J!+}aE*X#Ke$H1m7mu>0Imb!ItZ?V;Ti?kA#fcE z*I{rS4%ZQIy$Y@);cA9!G+blhIu1^WyB1c)Cc-+|_26?OybbX$IOjWs#lafdI9N-& z8cuq@hRuMrvm&6J4XbCj!O8LSnT0KZSogy!+aoZye-hTzo&^psvm4lYI9GlXOJLi8 z+b%Yheafb>&tXmG2yp(H-Na6^B(QukYiUSfT@0zLpCOG!8`9ZC1Dr}{$Y3)JnQXox zi`{R?W=|S!W-lA2vrUE^w#$&qJ~!mCpAGrU5MX0n0%ox2fC82hP{`&7*x8c-MQl^R zO!j%eEO^3F%(?{5X3>FjSW4h6Y<}Ra?8(5}*rvd_?DN2R%n;;YX45NphGrN-)(W93 zMEV;Mnp;ZPP5Sph=;|zCcZBRRgyx>opYYz&KT7&{LC7R@^pgIQC6s!Yua$KD5jwge zG!K*h!=?XFgsy9(zoxXi`bdAtpMo9X(mw*BWAH0{cvGk2OI^HvJqbTvkNLgYxtbv_ zSNhB1d&QP#wg?-ug4NB2>ruU)~P_VSF6b!hrizv~3URUpXsO^9&uev_-WL z{?#A5@O#YvOXWdUIOxsCZG*v<4Z-@JEhU37KHA?{jQX29Y)1S4kM;B=&H@2^4iF3a zj{~S4gYr0}zpdzuC@w`#NYq6YpL9@#oPN0X>Lk9>SuIP$WTQ!US$(9EOKVPEY`NJL0pFi9E z)%1Z4P|jp93NOFcNaOHo;24hEnM<-F#ZphXgcTAdWTStC1IxQbLdin#gI8p|FA=eE zE~M)&;W!t!OE`Galpe#!nYB=@?{EwhU9M>W>Kk`6>SdFVr%UKjU#QXJczEJ{n}4ku z`TfLoop1l{$jBKZn*6_~Y(I?ju5a~7A%?l3ce<*#B;8y6h5PU=?{w88GlctbB+`9X zOD={V8u{oW+#MOY1HKusef#$#xt(kvgr^_gR~C+UEe>g?6Vg7W>1Z$H^U26KiQ6Q^ zn3SFvGvYUyOJq22`YE6P?)B`i&^~C}F-H#{?ORXuSJwv%W{#*2#%Qb$&Ka1$t0nZe zJ~V@Fk+wOAp;h0;;wT%fzqvR1bA3*L9$d~usZS?>4yg~Y19xWLVcC8VZq7qJ3CCf? znRyk`ze2Vz)e;h&B_HFJOK7wqZj+G7bPKU8+wAhd88a0ieUyYGmmtQ=GYe?G4R z@x^AM)8-qK`Nr*00g<^q(%{EkTlfVp#{3Z;stfV+1y!UTw`3236hE#I)8|2a9*Fn$ zsWzkf(y7ZWtau8?%U5U;+J*GjLP}q_9n(cPL5uW1A3df^J$V0TO!KY>$&sXTx_3rC z2|F`ykCad0I{bTEpxKw5_p>18qz?t+$7J%^Eci%YA}sT0KNM&K{}k9{l?}^M^tr>o zw*_?Vbqk!o1qO6jKmEPm0)ts{U)=g>lThL~9)Yck^0*kw_qYYz_yTTW43)>qlsfVA zWwaHvEEV}gH+>Mdj`-jobvedsC6jQeguGuN+3M5=z{yaVJ9E0>YKN4G- zS*e5)C!Qv$fAx=;o+^pcu{fm)0luwrRm=4OPvQ@}ONskZy>NKeD zDLse3K)&Hy@v}?MN;&LH^fycYP10XUk1G??Qz@auDLpQ!f3-}H<3&sl<&*JknI4%> zWt)-Dokeo1k`Mk_@L`!ec>K^09z*c{Aq_U$WCqs}vaPx++vr+iY&rk=p(P}htBDuNza5MZ|;YQ(nXV=X-Agq zhX!LYvpo2=*!-I;p~R`qvyWt(wGCnA*9eVA5dKjG_5LHH_rsI;zm2_vzz{u;1+r@S zIxxXxxeb5ik@5SDt-#(92V@&7p~T7F5mjhcm$bKSFX9pZ4`JmN978zn*d!hSmPI0; z^s)PK4C#ZvuY5Y+K5+WCH|~cW5{p^&+%rHQ+n9vsCV*Cgys8XdcH#FT!85? z&5-Fiiu~qu+K1`!!9OJrzAKp?U0~17fVbWY6Nf~lrbP@$P1C05u;hRFy~tm&!$QQP zrGN3a&+UWV9*dc2?{1Nv2ni)l>8X_IVLMQNIvO&$8ga{AJ;kGB<0bf7Mp;+nvnld2 zmv}wI2me&)&GX?e7y5H6%(}DTbENq&?xOS*zmNG|EbX-CHq_rK{hiXkTKdO+``SKO zr2EU%pVaRx`&dt~ud{5guy3h^5-0oGq#cuG`FD}M`kVbZ?Kkk3;KLf#bi z^}*lu>BHjDz7~>wm2x3(DkOicf0Yma*&SZ)``*ui#$bl8^_xAXus;|kRWH%JcBsYI zX~Oqt@Dmz5w2S9!j)W)3BYvYa;aWUF6J9LwV0mON;bi#|4ZRj$rwQMq!B1%L(5@Q& zHF%T;Ptf4S8hp<=@K9;LEP1r@It{%R*YZ1|q1WPC`p|Bg^l9)Y4W4igyjT-nat?f* z3@?#K2op~E89G3gQ)!Pq8h$6vfrobYOds+6r@|2()~6mk8Wc$5eu6aqC&-L=6gsQI z7clsm3azVnTZdS>7uG2T`(CHGcQ34SMEMSP?%liJ2oxu)hmmgLC;d>poHFRZf+ z^&S6#y|7L*%y;-hdtsgDzgR~Z)?uCXYJRMWe7(226^@&z9C5qCu?BpY=HZg%Jd2?E zcqvXub|pyTFk%F+4c_u9&~^XMTrnRL`vL$bf6jxu73({SHGi|f7~2wjC(hp_PQcuM zjfX$Ux$l#i!r#^%!^;OCBz>w*p&lfc^dY_x^M3UD>H1*lU+a@}GF_!oPPODu{A%I- zD8v)m=6K4jK{rqPNjlG1uz)okkBcGtZc8Q{It%5DNquW3evP;$BBiHQJkk?RWDzo5 z_odNsG!)_=Y<`6&fAd@0>fB2E{Fh&P)z_C){d45LETjAD7SJv5-&z3sjlbaW3_bBE zWVv}%9J$HU+D9gs`a6P(9h!9)uP;+P>W3pF!LHx4c7O2luXDd_USdBwxU-owwOR?}78 z1xehn^NW8j{w>FJ5hTuO=f}To5$w*SNHB|3jrh`5b z9>Aym^l>PP&)*K=u6hTC$4R_X&veIV|{#s0@*Dau1K(~Ny0o?*_3-A&4mR?03tFrza>Q>hnBTkCZ3}4;C^*h}H z|AhrU7<%He+n)EI!TncwmUn+Sj87SeyPwVxF`)qxBubdk>FVD*^RJ+2oIaM-802C{ zp+O9TG+qTi{sau5Xd;d8;~~a8tPT7e@Z%x$l#HYGal|L<9puO5poIFw{$sXR2SYl7 z4R6SgI-nkXTFb*;P!B~3SGR= z_oddD&lG-EW-Q@UKa(XN3dc2R`0&>*I44e7 zUc@h0l9(iXwPjOLzp`XG((Ww%NYZuCNIN0ZRW9u<$yn2Hlt;K5qJFYjU`{EoL{olS zO!pNZIZc))NI50rk2LWa!!jTenMe&1VyhV-i zqaT**_%7^7j}>HUPa@%UD1Lxn1iUrf4}K}ImpdK&2Cxj+$880lOt>bAd;aED3cS0; zz?ZuSc-xM@Z&$q1v%M98aB)Sr#4ZJDKWl85pJWGu6i)bj$$%i0C9X4fhW5W_aacL# z6z(zsoFC{`%Iu;%5g$&^?Mr;vhD*gRcjCu+a7W?9pURn~izh!$%jJ;VuSh-*fH7rQ z)6gV7{-yBhHuI%EoB$8G;;>ZwyXm;!pXsQcRK1ApN=;)-2h}SoZ`HC~osf{q8$W@A zJEc4#dd_R^5FGc=0okrdw%l&NK_l(TXKX>` z#G85j;B{q((f#9XxDaE)kD>x9@U74nO@a2p1P6K+K`W9EZ{%75i-$KwQs8~vbhsA4 z)dYujW<%Qp>UwcJH4Qw*-QIY{0I%8bMoKocSy{lpZk}A@21?Jt^*o=pkhhTh*i&i? z`#^h$hoE{%#{XyUN#L8Tl79t+QW1hEbiD`&SWqx3Vm*LxNl~DYvuc%;w$N&6V-F~Z z8eNY{VK)jY9xG8{#XBk}UKo$n>UzYZE{ko6u18hWsHhdu{%79IB;WTnp{=X?-=nX; zbiR3S-n@D9?)z7^y6gsX{{5BNcd+ZwK!*l?Lk&p#CqYR2C%C{C?cdu}KWEeuglbru z1~;{z;?D|&&dvUw13>LvH#1Dqh0<& zw^0T_Rz?YMq4!!IlS)6VLO(u>?(+}nq|W%RcSG}YF(%UfIrk$vtAC-aWce;jBAcdD zNZwIzQG5g!{mQsPpvZ^5jqSPcXSPc8EBX-mgiiRScBb9uYyZaWHtTWAGbB&cpV+@c zbcy13zXZT=+QezD)pzdl<0Z>>w!0eo0ZtoXU+psM@tE%kPv*yh7$VuT})1V=Ck@waOzOxKS|QXfF%E}D>}?wgXNKL0}} zm2xI9%Yw0gU%2ESVKH3P9)h_`mu{91qbp231u=fX_bE&yI}QJ#*=Mqzk3E(!B@afwakfj_ zU>}v8Ou#qR91r2$=ZD|ZyqJj^*4;S%7V9XA4|kyaLx#N+MySg?z~Cn&v+y7K_W2wy zaQr6?rcv?-#GlS$zzuMW_a8v>x4wUf&XV;yio`?m%DyY;(ay$~25R?R46ULavYcXc z+z<39x$yDdGFbbIg+o3wINWrOzl0}wQ=s@0K8Gx~X?_y^1CvQU@$ch&C+d&c`g?$GfQF;n~O#Y=N|Nd6;=^+rj_Iuwa zdc7pT>7y7Ifm?%o<#G$Mf49enH$DBwp2tkQH%;`_*7Qp0+Nkx)hq08`f2L0F*3zqm zLjIpDB)(FQix~c^2J3hTj`IhslPDB71N2IN$94+k`^cx151n6|^J8Eq;r&>DFDxk3 zdK7t*j#w|BB*(`@FZnVwhWJOr=5i+Z?tLg-xOo(7FMeQLgpcHBZ~dsa4<{jQJR|W^ z?@@XSO;l*M@MqR1;X0tzSbIUq+npwTGkwB(Lh_x|k9`iN`b=<=W6vdWqww@tywuM^ zFZHzW7jIH;`z_&F`MWLcg!mUI{f@Bj&aU{l{nTi?bBD&aEE$-L_SpYGnDN-*Cj0{n z?)=bha^G}e8sjzkrsAT3d{Z&EM-o4g=huRgA08M(?Ub}flHch?nOJDn{1n!Ys>8Z; z6P3#^oYekWvwG8`hjILfmy;i(dy@By;A7j^790nU1s(}2efS^SyY?FKk)&U~iTRfB zBj1ypBCp6V_`9VNb}+@JbU>h+&a6C9!L!RePj zjJ9q2cI$i*TgkSD*ETNyda9p?Sobe#8NAXyNxO!&n8*F6eiQ9aS@S&7)O0yYwl!lTx32O8Y61kI_h&wrbjsMDdB0 z10(I;zNMT9%~5Ytcw+D3{(;CNFz^+X+Ye?^`iQ;ov7R#K@s#(lZ0=7a9hQtVbKr+< zEo&bwfBjIoSoz8j_d91-neQ33} zv&9Dly^OX4#Lk|gr=X=A7#X3CP?ZQVUtz-7ot!}MZ8UpoX*`VXNb7}m1IJnM$^rV5 za3!hiX<705S4gVOxyr4f_#@lI{KZ|MLp}t)d5nCu3+_DbbzQHR`-eYqv$E$BYdj== zwu@*#(OfAY4tnXyZ|QeCq?~D~ykqS#=`a~u7?ESlB1g2oL!zMY`Hsrx@^1+uJ>KjJ zrqc-6zas|o{sRHKG|MAQp!^5%`<5Y>>G>JK1qz)&FZ1im zJEnb%w@6R+0C^7{UT(Xw*57(w7reVU9N|^Kcw0I9^5e(f>fg1C^rd{W^^0Kg!iJTu zHC+4&6n=`+eZ|l5Qj4i6; zrn(hhev8@A*VK}Gv_2&q(XTZ;)rHdg!52yYf=40u!?PFkp!8;XYj}q?l7E{xFrCXu z79vL$$A89^L?5jW#h(R=|2dx!J={H!i|xp{Mc?W4_P>TNWx^aDL-GD-KE+?+am`lp zU&-U2d%T2;`#oAYvI z9qRm1><%SR?3ThngP5h`zt|~XRPW>a=1I0Zyhqk2jj%? zz&Md%chm*D>-a|9QCH^po87Ja1s}JX&KF5IR{ZY2-K+D5cMs+3;95HGBlKg|l7Bn9 zANhAPedI^-mzvU9&z~Hz`Yhd_xoci-mhmV2{+%KA(SwiDIVX`b+?mdM2;LgpnO&px zS#VHn+})ZVqx)}tPS^fDtq02boj{`u9p4=q_^mZyoe%k~!}~4yZ~Ebg2AGVjs`RX( z7knTvZ2x=%*6NooJiKP(S(NfrY{n7#Dn(}em&$m?urpJ2I~M6~;&0_gZ5_#GbweEM zKZGup*L?)Zk9KHe?Fso{KhFI!twn`%-`8ue5r+2rX)V@ifjH*Iej5IeM{q3h7kjYM z`-#$@rZa7b$1~d+;;(@Tt^4ZZ>_$CT&G|u}slzksC&F(S{Hox`Qgbv~S~!*hHU`t%;2 zu`AH0gLCvLzF#&&x_3!KPiM{iF0^-=c&?j#@%1J8jQaVu^Ptwjf)-5c~%daHyv_6dTrRn+f z=1W`*D;e&MUr`*r#LHhLrG*O%i*vLJ_r@=`sH8aGAfGXRg;<^lLt7V|_iw($!4Ub{ z!Ee0$(Q5tze|z&kA9(N0JqN>u^u}QZ?rXrGeIJs~$*_Q-k70n}Hik_M?On-V2Ezh| zK89Nuh8e1EM4!gc#n8iWEyFDg!wi#?S$_<(7e5HIN6f?89WC^-s{)v~*<`xu| zOFHh2ZhTQr?)l7A!jtlXP|S?{ylA8$I?XS$G%p_tw9xGf zj`9;a;zxu+C+TgJZ$V*EIr2h-bXecueHrpYdo=LecH!du2|4BY3rkA5eiy#++G(Pn zl`|jwTHBrEFoYk6r-aT)ZLP%sHMp1w*;%8AH8 z7f-&j+?*+SmBXXyX9s#nO8s+;qjbt*DB;D^*ZifEqCJnj(`Doo=M`zaVt#3auny*5 z!FUSK$8Zb7FvH{tqWFcrOmhSQL$C8rLqC8hld4Yj0 zUb<^K&5ihBy@Th)7=ejD2D5?k`m~-A-_a&>T-bth-pyaFQfdtH+mRv<%@QJ7Q`K1+Q1%`eC>M@>vDvI+;W|l+W1i})2@#sqP zThhhTyCL+7({M zazP?ZcG!1lphE*48tBjfYCyJmAPkP6BR@DDg(j|LhZF%+!t7(htu=R0|xZ~6c@0?MGu-yQUA>k&3^T0M2jwazTq%y#HQ~hgQ29+#-uwHTj^Hcp8oRmy%M{WVzw+Fz2;&&1$qouNh7*K6X9%4KG7i^; zY5ZO~^5PuA_9NK-1jffQp24__@iQ6EVf;MCVaiVPy^!(WGrp4XHH`m>@ePdM&-f#Z zKh5}yjE5NC#`t@Tf5Q0JjPGW=a}vdSUxLm97(ayZ!Hf@Q9G>#ldV;IZwEUA9&tyD{ zaW~_Ij9@zspq!Z_TNqTTOfd^6))8GnKC*BSpC<6*`d8UKp$9~kdM z=@?Am^z6g`yV@_tPmMG4 z3$G?V?loqZh+k6X^V?NV;-_!6U1;X#VtyeDOvJBi=DXWfuOx3aoQD_-?`lm@C&B-@ zFjU0XWlGc%7#L>5EmTVZmcwvy5$t9^7Hm9#=fM9$7(C{|t1-B>Wh(sk&1~4NY%Tds zQPW`;d?s+7srj7=a2C93GmZJpRY)-n{$l)4kG9O(?Y7=6`TY|4P{so@8@H?d4e2q( ztUudLlny=%jHf>v@H;5;%k8R9k}q&oqdv(KSWWOmaPz_sdidJ7D^Jk*#_c6&b!Rfw zKlAVTMhUYA)u?^Pt9sxrfP@*&R;GJn{v4s5Bv*3u(S&4-f;xsU_s9kYp$x|qJ7 zWbWCn`Wob$VV2MN2a+pjfr;e%BJ-Q=s$YzsI?c?_em(K?TVNu7-(-HbU8Vk#_+nfa zL5_~)Kg=&pnfq;5zf1B;xe&dfZqfKN2X9vcl6+S8MERWbS^y=f$P^ZFgS&t;)3>XE zNmc2O4brD$+`GQlC(6QazNKGNa5NBHU;U283+BGTuPh)3mkQtagkF}y=`S>QXO7*j z4o~uR-M#>4o|N}UdbRVcWn~(7GmdVZ!C;ryINfxA=5Zj8&dNxl9>_d)yBhRM^cz1v zZOWXo-9DJo-wynP>E`s0{E^b%<1@o}>F)*qk7Z8X?i~`#Pr=z{e!**rkCW?1f${hO zJGC`)!gh5;%lQ7%`seqVr*2niG5MU9_QlKbRM(K40u#wsm3hu~H8jT0Yb`&kh>za_ z6Y*P>>DsP_CBb2^B~bo7a8Ajt+XAfnOQB83fqXj@?C1ruh1zW)DvFK!Uh|2{YcuC= zS4SpY?ckG^Yln8#_29OJyga#h22DARA_j5-GSSfShRpM}tD`u+aPzfumN|XhYbm~A z3$(`9&hp-pnX_FD|Mk*0CnImW8WH0s85qhf1%iD5tD^UQTYV z)8c=h4U6j`3q<+5E$-bml-H{Z)D1H-r%oL|Zo=tN#{AKJ!?JqFG(I^gXm#IrLuEa5 zBckrcdIxFu+i-C`bULaQ=MY}?7k&cHL4O25wQhkK7jhiiuh{?!_|_3GNJoEHao_Y9|U9eDhB z(=7tQ7y9X~Ikp!GuH^N+!?*4JxYxYNTdUv5_;y=l)16XM(m4X1-pE~=@!^lYuioi) zJnsAC=QnGiS{>o@saO+i?F^w)!M1PjvqDkLGgCUOGUB2L7uw z(3t$D9xGv)z@L}PV-mfm5{+x*SSqIiqYnJxXFdX@-F5I5yGrJ}2Df&C*(OKG2#wy@ zij(AQWdfmY)F}FQ_rCHSCFQ+Vo%;<*0GNyyqw8&mJWR4V_?_1Vv2zhhIKQ%g3}{ zDa_)YTw!si1W}ga$#bx?VQ7S7Zk&Iep~u}GxGMx_UX5FK(6y~wd+1IaIH_7g`cWVM zRqF?KDX=Ny8cOse_5{5bkbd?zTkH5!{lla7N6h+{7uaHNo0~`Xq91p$MgQOcLwtR@ z34@gWj?jzV+__`4-UU~~CuqDfd5_+XrT8Tj=OJXzy&JD2obZzn!t2cPNBQb^>5P() zBE-Kt$09%9(26_f(S!&n$8+BnpuQx3%6JcElbJ#|5*o!;S@<(`43LHbVdC%nu2F|G zAWCp6A8sJJC|`E>=UMc~_Ex%RLF4#Ix;WEFzcG6H!uVs3lKRIAgw)ut4;mMNg#Yc}63rF{s>j*?kp{bXpJ`ypq$cMN z*)oG|tz9RnyB**zbIe8t!&#_QbCYKzF@59Qz^g9~=^o(YJFU$PRIxzTalFJu<_5-% zd-dCRa|3_MBdKw2;3}5nVDASB=LVKCy-DZ}q(cM$Wg6HrgXRXXOyDob<0-uzLy5)fLfL&D!; zp9tO3PI{4ReLLkUXyo_F7-+K*EfHPUE=fl#Wmjc?A<9G#`(b(@Md)QZo-5_R&v@YPU+aA#65ie* zc0D{hXzem!frwMx@v>}9vQQ9o4r$W* zYOB0v-@hIv=~w_qK+uHFsL^vUgvI{5-g#czdn`~W62&9xE&+)JLrE9=c^l(~OFecZ zrWY`LZ&UsgHm*mWxCq;mkOfM97qz#RuZ3UhbR>s=C*7)(9L^duw8|m$zXgoV zYZ>-1lFwjMKE_5V%(JZ=B#i4bovq7TP&PHiu^)|<<@ z6Y+iaQC`#!*2g-t0dz9G;7A`15IvlF@}fUHS}OW?F}>gjL$<{9?l|3kC^!DXBCp71s_q#r`&Tt&uJmjLoJ7JA@YK412b8g1?^6v9`o}8IJy!nJv zatr&EE}PdCOV3g8GsY88^$a*XtACU)pXQ|toU;фZ^XTPYDzG(hJzfzQ{9@llJ zJxN}KG(%Z0aCT$+$gBE=DCCzUOaX?!Bzu99#zdlP2>m&?`t55Wd@{fs#Q1_SVrOSe z3K@Id{4#s_@~39H5~Ri)1bY(@8aqkv=@ZzW9U`b&Fv>wMT&aliVcU_aD1NDmUq2A~ zPNEOtOwe~Ay&M~wF;<6D!*ql4KAZY!;K>RzbqsSSTlqcA`h*+}#yy_gJ9UAROs{{D z;yptRe;6TdZJGF;q7BWHDWU^>xhC|l9_Bm`%t>L;k+f9 z0B0)qpE&znry-VI{AEBaFd_%ThAo`fF9u`?KrxbM5H5s&lf{8y;N180m+i?q4Wm+q zDFuCw!Fms}PD6uVov83n#-5(jNRM8odEP*apDxbtX`P8Ko#CG58-A|X@^z(AQ%0|n z?v8hR>2!CEKUhP1r%&~|M)=?X8h5TId)F?T#v==dX{c@;s-gFhuQa_H%=u_Dy&7U4 z`I)wNF8Q6N3pDi8(ETFO+g^Lk)JF=X^d-JVA>rHo@sFmyxch}ei0)F_>mSHr`Fj1N z!}H!sub4Pbr*K{KXwR(uY?3d^e#9=4J8H3)52-v1B$ECHEB&eMb4tQ zh}%y7KT4S>7qnj;Q^5=NTQe~}ox}8a)yF*e4TRrdwi6(GROQT$*h5w4Y@Q1L za|;hEZ$6r;zqID&!sd!*M^}vw9g)}EJn8hList6j=H{VCpLIU3>oao23;9-RyQK`40cPmT%55qK~5_A{N-z{Ov!C^ditv9m}7RmdHB0x^^w( zH`@W-{W_$Y{^U=fmvPC@p|=h-<#X+c|6zZ*x6vZb_gt|1uFK%$&Ocw0RMENDKF_^6 z;<;Y^FV~b)tKZm?)r$L>dvX8d$2CpO3l=Oe^24@xZ{cOP;(ksm?&r4Rj%}+kd~Ca{ zac;8ESlxeU#T{;+F@<6E|6?oeds=b-sTFs8Rn8bkYxvl;Ho61)KV@(a!}otVqI>WO zYFk^|!*DN8+P1cb;oCPn7sT7c@Dz76aSy}EtmzLHeUxwy!;Qv{>Hk#9bVT-lNdt|` zXzu}*3H*h)JX-fKIG>?%D$uGUAMarhC~c$cVW?rgK_1N6E--VT0TcZM)-*3hJAFa55(2Dzqt+;>Giu=c{xWnyw3FH6C z%{zW-e#L5HecX(b_v@XNtSW37&pcyW@clE*%@s){#r9L->~{22RoU{H4RG;_&wPu` z3^*rI4(BKeVGd~`d@q8d@A1u&<#QWUy1KztTC%V-XOZTeR+&C(=;#S2WwRxPXxG+O zE*CC8y8)hmu2PjWwh%a9pWMJ3b?{tAY`>^vSDF31Wcj=XxQ53keDgqG@k~Ji`w7b@ zG(d%4m9cF1ySRR1XDH+XebvwCxdr3+2*a7Yd~$<2MO6)i=+1^0+{&_N

=dvf+$8 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.UeQ%{r%rdQ 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 literal 0 HcmV?d00001 diff --git a/tools/.testout/dumps/crash_main_8880_6a524cba.dmp b/tools/.testout/dumps/crash_main_8880_6a524cba.dmp new file mode 100644 index 0000000000000000000000000000000000000000..006881d77e2f6268719689ae353b22d386bb214a GIT binary patch literal 254619 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 literal 0 HcmV?d00001 From 2fd6a94cf83a17172ba4e1698aac4f00beb6946a Mon Sep 17 00:00:00 2001 From: Ralph Kuepper Date: Sat, 11 Jul 2026 16:41:00 +0200 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20water=20and=20rivers=20are=20first-?= =?UTF-8?q?class=20=E2=80=94=20rendered,=20selectable,=20editable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Placed water volumes and rivers used to be undoable-only: drawn as debug cubes and line strips, impossible to select, inspect, edit, or delete once created, with every parameter frozen at whatever the tool hardcoded. - Render through the engine's shared spawnWaterVolume/spawnRiver, the same helpers instantiateWorld uses, so the editor shows what the game will. The tools now draw only the in-progress preview. - Selection carries a kind ('entity' | 'water' | 'river') — ids are only unique within their own array. Entity-only paths (gizmos, entity inspector, duplicate, frame-on-selection, selection outline) go through selectedEntityId(), which returns null for a water/river selection, so a selected river can never reach code that assumes world.entities. - Outliner gets Water and Rivers sections, listed above Entities: the panel does not scroll, and a world with 66 entities would bury them below the fold. - Inspector gets water and river property panels (center, size, surface height, wave amplitude/speed, depth, flow, width, colour, opacity), all undoable and coalesced per drag. - Delete removes the selected volume or river; undo restores it at its original index so ordering round-trips through the file unchanged. - Toolbar gains Water and River buttons (previously hotkey-only), and creation defaults replace the hardcoded parameters. Self-tests cover edit coalescing, index-preserving removal, and the selection guard: 50 passing. --- PLAN.md | 16 +- src/gizmos/move-gizmo.ts | 6 +- src/gizmos/rotate-gizmo.ts | 6 +- src/gizmos/scale-gizmo.ts | 6 +- src/main.ts | 25 ++- src/state/commands/duplicate-entity.ts | 1 + src/state/commands/edit-water.ts | 163 +++++++++++++++++++ src/state/editor-state.ts | 48 +++++- src/tests/self-tests.ts | 52 +++++- src/tools/river-tool.ts | 73 +++++---- src/tools/select-tool.ts | 10 +- src/tools/water-tool.ts | 72 +++++++-- src/ui/layouts/inspector.ts | 210 ++++++++++++++++++++++++- src/ui/layouts/outliner.ts | 52 +++++- src/ui/layouts/toolbar.ts | 4 +- src/viewport/frame.ts | 6 +- src/viewport/picking.ts | 7 +- src/world-sync/sync.ts | 31 ++++ 18 files changed, 693 insertions(+), 95 deletions(-) create mode 100644 src/state/commands/edit-water.ts diff --git a/PLAN.md b/PLAN.md index 7798fff..38e2ac4 100644 --- a/PLAN.md +++ b/PLAN.md @@ -163,7 +163,21 @@ Tasks are grouped, not phased — everything ships. Order within reason: **A → - **B3.** Make terrain creation explicit and undoable: replace the silent `defaultTerrain()` in `brush-tool.ts:66-68` with either (a) a "Create terrain" button in the brush panel issuing a `CreateTerrainCommand`, or (b) folding terrain creation into the stroke command's undo state so Ctrl+Z after a first-stroke removes the terrain entirely. Either way, `world.terrain` must return to `null` on undo. - **B4.** Cache the prefab registry in `syncRebuilds` (currently rebuilt per entity per frame, `sync.ts:83-87`); invalidate on catalog changes. Remove the dead `label` imports. -### C. Water & rivers, end-to-end +### C. Water & rivers, end-to-end — ✅ DONE (2026-07-11) + +Landed. Notes that differ from the plan as written: + +- **`genMeshSplineRibbon` was also unreachable** from TypeScript — same i64-pointer problem as the scene transform (the plan assumed it was ready to use). Added `bloom_gen_mesh_spline_ribbon_scratch`; the wrapper now pushes points then widths through the mesh scratch. +- Shared helpers live in **`engine/src/world/render.ts`** (`spawnWaterVolume`, `spawnRiver`) and are called by both `instantiateWorld` and the editor's sync layer, so a river cannot look different in-game than in the editor. The 0-1 → 0-255 colour conversion happens there, once. The stale "pending Q8/Q9" warnings are gone. +- `InstantiateResult` reports `waterHandles` / `riverHandles` as **arrays, not Maps**, index-aligned with `world.water` / `world.rivers` — it already had one `Map`, and a second would have tripped the Perry interface-Map miscompile documented in `docs/perry-map-size-av.md`. +- Selection is now `{ primary, kind: 'entity' | 'water' | 'river' }`. Entity-only paths (gizmos, entity inspector, duplicate, frame-on-selection, outline) go through `selectedEntityId()`, which returns null for a water/river selection, so a selected river can never be handed to code that assumes `world.entities`. +- Outliner lists **Water and Rivers above Entities** — the panel does not scroll, and a world with 66 entities would otherwise bury them below the fold permanently. +- Delete removes the selected water/river (undo restores it at its original index, so ordering round-trips). Edits coalesce per drag like entity transforms. +- Creation defaults (`WATER_DEFAULTS`, `RIVER_DEFAULTS`) replace the previously hardcoded constants. + +Still open from C: dragging a **gizmo** on a water volume (move/scale writes `center`/`size`) and per-control-point river handles. Both are editable numerically in the inspector today. + +### C. Water & rivers, end-to-end (original plan) - **C1. Engine: real spawning in `instantiateWorld`** (`../engine/src/world/loader.ts:152-160`). Create a shared helper module (e.g. `../engine/src/world/render.ts`) with `spawnWaterVolume(v)` — scene node + box mesh sized to `v.size` at `v.center` (top face at `surfaceHeight`), `setSceneNodeWaterMaterial` with `waveAmplitude`/`waveSpeed` and **color converted 0-1 → 0-255** — and `spawnRiver(r)` — sample the Catmull-Rom spline through `controlPoints` (interpolate per-point `widths`), feed `genMeshSplineRibbon`, offset down by `depth`, water material. Replace the two TODO warnings with actual spawns; return handles in the instantiate result. Delete the stale "Q8/Q9" comments. Acceptance: garden (or a test scene) instantiating a world with water/rivers shows them. - **C2. Editor: render through the same helpers** in `sync.ts` (new `syncWater`/`syncRivers` driven by pending-flags, mirroring entities), replacing the water tool's translucent debug cubes and the river tool's debug lines. Keep an editor-only selected-highlight overlay. diff --git a/src/gizmos/move-gizmo.ts b/src/gizmos/move-gizmo.ts index 959932d..ecde7d5 100644 --- a/src/gizmos/move-gizmo.ts +++ b/src/gizmos/move-gizmo.ts @@ -13,7 +13,7 @@ import { updateSceneNodeGeometry, } from 'bloom/scene'; import { mat4Identity, mat4Translate, mat4Scale } from 'bloom'; -import { EditorState, handleOfEntity } from '../state/editor-state'; +import { EditorState, handleOfEntity, selectedEntityId } from '../state/editor-state'; import { TransformEntityCommand } from '../state/commands/transform-entity'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, raySegmentDistance, Ray3 } from '../viewport/ray'; @@ -60,13 +60,13 @@ export function updateMoveGizmo(state: EditorState, gizmo: MoveGizmoState): void } // Position the gizmo at the selected entity. - if (state.selection.primary === null || state.activeTool !== 'transform' || state.transformMode !== 'move') { + if (selectedEntityId(state) === null || state.activeTool !== 'transform' || state.transformMode !== 'move') { gizmo.visible = false; gizmo.dragging = false; return; } - const entity = state.world.entities.find(e => e.id === state.selection.primary); + const entity = state.world.entities.find(e => e.id === selectedEntityId(state)); if (!entity) { gizmo.visible = false; gizmo.dragging = false; diff --git a/src/gizmos/rotate-gizmo.ts b/src/gizmos/rotate-gizmo.ts index fa0eaad..23c7e37 100644 --- a/src/gizmos/rotate-gizmo.ts +++ b/src/gizmos/rotate-gizmo.ts @@ -3,7 +3,7 @@ import { drawRay, getMouseX, getMouseY, isMouseButtonDown, isMouseButtonPressed, isMouseButtonReleased, getScreenWidth, getScreenHeight, MouseButton } from 'bloom'; import { TransformData, Vec3Lit } from 'bloom/world'; -import { EditorState } from '../state/editor-state'; +import { EditorState, selectedEntityId } from '../state/editor-state'; import { TransformEntityCommand } from '../state/commands/transform-entity'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, raySegmentDistance } from '../viewport/ray'; @@ -28,14 +28,14 @@ export function createRotateGizmoState(): RotateGizmoState { } export function updateRotateGizmo(state: EditorState, gizmo: RotateGizmoState): void { - if (state.playtesting || state.selection.primary === null || + if (state.playtesting || selectedEntityId(state) === null || state.activeTool !== 'transform' || state.transformMode !== 'rotate') { gizmo.visible = false; gizmo.dragging = false; return; } - const entity = state.world.entities.find(e => e.id === state.selection.primary); + const entity = state.world.entities.find(e => e.id === selectedEntityId(state)); if (!entity) { gizmo.visible = false; return; } gizmo.visible = true; diff --git a/src/gizmos/scale-gizmo.ts b/src/gizmos/scale-gizmo.ts index 2873d7f..e4c2ab9 100644 --- a/src/gizmos/scale-gizmo.ts +++ b/src/gizmos/scale-gizmo.ts @@ -4,7 +4,7 @@ import { drawRay, drawCube, getMouseX, getMouseY, isMouseButtonDown, isMouseButtonPressed, getScreenWidth, getScreenHeight, MouseButton } from 'bloom'; import { TransformData, Vec3Lit } from 'bloom/world'; -import { EditorState } from '../state/editor-state'; +import { EditorState, selectedEntityId } from '../state/editor-state'; import { TransformEntityCommand } from '../state/commands/transform-entity'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, raySegmentDistance } from '../viewport/ray'; @@ -29,14 +29,14 @@ export function createScaleGizmoState(): ScaleGizmoState { } export function updateScaleGizmo(state: EditorState, gizmo: ScaleGizmoState): void { - if (state.playtesting || state.selection.primary === null || + if (state.playtesting || selectedEntityId(state) === null || state.activeTool !== 'transform' || state.transformMode !== 'scale') { gizmo.visible = false; gizmo.dragging = false; return; } - const entity = state.world.entities.find(e => e.id === state.selection.primary); + const entity = state.world.entities.find(e => e.id === selectedEntityId(state)); if (!entity) { gizmo.visible = false; return; } gizmo.visible = true; diff --git a/src/main.ts b/src/main.ts index f97beb4..a0a1bbf 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,11 +20,12 @@ import { createEntity, Vec3Lit } from 'bloom/world'; import { handleSelectClick } from './tools/select-tool'; import { handlePlaceClick } from './tools/place-tool'; -import { EditorState, createEditorState, nextEntityId } from './state/editor-state'; +import { EditorState, createEditorState, nextEntityId, selectedEntityId } from './state/editor-state'; import { runCommand, undo, redo } from './state/commands'; import { CreateEntityCommand } from './state/commands/create-entity'; import { DestroyEntityCommand } from './state/commands/destroy-entity'; import { DuplicateEntityCommand } from './state/commands/duplicate-entity'; +import { RemoveWaterCommand, RemoveRiverCommand } from './state/commands/edit-water'; import { loadProject } from './io/project'; import { loadAssetCatalog } from './io/asset-catalog'; @@ -133,22 +134,30 @@ while (!windowShouldClose()) { if (isKeyPressed(Key.S)) saveCurrentWorld(state); } - // Delete selected entity. Delete only — Backspace must stay free for text - // widgets — and never while a widget (text field, drag) is active. - if (isKeyPressed(Key.DELETE) && ui.activeId === null) { - if (state.selection.primary !== null) { + // Delete the selection — entity, water volume, or river. Delete only + // (Backspace must stay free for text widgets), and never while a widget + // (text field, drag) is active. + if (isKeyPressed(Key.DELETE) && ui.activeId === null && state.selection.primary !== null) { + if (state.selection.kind === 'entity') { const entity = state.world.entities.find(e => e.id === state.selection.primary); if (entity) { const idx = state.world.entities.indexOf(entity); runCommand(state, new DestroyEntityCommand(entity, idx)); } + } else if (state.selection.kind === 'water') { + const idx = state.world.water.findIndex(w => w.id === state.selection.primary); + if (idx >= 0) runCommand(state, new RemoveWaterCommand(state.world.water[idx], idx)); + } else if (state.selection.kind === 'river') { + const idx = state.world.rivers.findIndex(r => r.id === state.selection.primary); + if (idx >= 0) runCommand(state, new RemoveRiverCommand(state.world.rivers[idx], idx)); } } - // Duplicate (Ctrl+D). + // Duplicate (Ctrl+D). Entities only. if ((isKeyDown(Key.LEFT_CONTROL) || isKeyDown(Key.LEFT_SUPER)) && isKeyPressed(Key.D)) { - if (state.selection.primary !== null) { - const entity = state.world.entities.find(e => e.id === state.selection.primary); + const dupId = selectedEntityId(state); + if (dupId !== null) { + const entity = state.world.entities.find(e => e.id === dupId); if (entity) { runCommand(state, new DuplicateEntityCommand(entity)); } diff --git a/src/state/commands/duplicate-entity.ts b/src/state/commands/duplicate-entity.ts index 699cf27..3836505 100644 --- a/src/state/commands/duplicate-entity.ts +++ b/src/state/commands/duplicate-entity.ts @@ -42,6 +42,7 @@ export class DuplicateEntityCommand implements Command { state.selection.ids.clear(); state.selection.ids.add(this.clone.id); state.selection.primary = this.clone.id; + state.selection.kind = 'entity'; } undo(state: EditorState): void { diff --git a/src/state/commands/edit-water.ts b/src/state/commands/edit-water.ts new file mode 100644 index 0000000..1339e07 --- /dev/null +++ b/src/state/commands/edit-water.ts @@ -0,0 +1,163 @@ +// Commands for water volumes and rivers: edit a property, or remove one. +// +// Water/river edits are drag-driven (the same dragFloat widgets as the entity +// inspector), so the edit commands coalesce like TransformEntityCommand — one +// undo entry per drag, not one per frame. + +import { WaterVolume, RiverSpline } from 'bloom/world'; +import { EditorState, Command } from '../editor-state'; + +// Snapshot/restore the whole record. Water and river records are small (a +// handful of scalars plus a colour), so storing before/after copies is simpler +// and safer than a per-field command, and it merges trivially. +function cloneWater(w: WaterVolume): WaterVolume { + return { + id: w.id, + kind: w.kind, + center: [w.center[0], w.center[1], w.center[2]], + size: [w.size[0], w.size[1], w.size[2]], + surfaceHeight: w.surfaceHeight, + color: [w.color[0], w.color[1], w.color[2], w.color[3]], + waveAmplitude: w.waveAmplitude, + waveSpeed: w.waveSpeed, + }; +} + +function cloneRiver(r: RiverSpline): RiverSpline { + const points: [number, number, number][] = []; + for (let i = 0; i < r.controlPoints.length; i++) { + const p = r.controlPoints[i]; + points.push([p[0], p[1], p[2]]); + } + return { + id: r.id, + controlPoints: points, + widths: r.widths.slice(), + depth: r.depth, + flowSpeed: r.flowSpeed, + color: [r.color[0], r.color[1], r.color[2], r.color[3]], + }; +} + +export class EditWaterCommand implements Command { + readonly label: string; + readonly waterId: string; + private before: WaterVolume; + private after: WaterVolume; + + constructor(waterId: string, before: WaterVolume, after: WaterVolume) { + this.waterId = waterId; + this.before = cloneWater(before); + this.after = cloneWater(after); + this.label = 'Edit water ' + waterId; + } + + do(state: EditorState): void { this.apply(state, this.after); } + undo(state: EditorState): void { this.apply(state, this.before); } + + private apply(state: EditorState, value: WaterVolume): void { + for (let i = 0; i < state.world.water.length; i++) { + if (state.world.water[i].id !== this.waterId) continue; + state.world.water[i] = cloneWater(value); + state.pendingWaterRebuild = true; + return; + } + } + + mergeWith(next: Command): boolean { + if (!(next instanceof EditWaterCommand)) return false; + const n = next as EditWaterCommand; + if (n.waterId !== this.waterId) return false; + this.after = cloneWater(n.after); + return true; + } +} + +export class EditRiverCommand implements Command { + readonly label: string; + readonly riverId: string; + private before: RiverSpline; + private after: RiverSpline; + + constructor(riverId: string, before: RiverSpline, after: RiverSpline) { + this.riverId = riverId; + this.before = cloneRiver(before); + this.after = cloneRiver(after); + this.label = 'Edit river ' + riverId; + } + + do(state: EditorState): void { this.apply(state, this.after); } + undo(state: EditorState): void { this.apply(state, this.before); } + + private apply(state: EditorState, value: RiverSpline): void { + for (let i = 0; i < state.world.rivers.length; i++) { + if (state.world.rivers[i].id !== this.riverId) continue; + state.world.rivers[i] = cloneRiver(value); + state.pendingWaterRebuild = true; + return; + } + } + + mergeWith(next: Command): boolean { + if (!(next instanceof EditRiverCommand)) return false; + const n = next as EditRiverCommand; + if (n.riverId !== this.riverId) return false; + this.after = cloneRiver(n.after); + return true; + } +} + +export class RemoveWaterCommand implements Command { + readonly label: string; + private volume: WaterVolume; + private index: number; + + constructor(volume: WaterVolume, index: number) { + this.volume = cloneWater(volume); + this.index = index; + this.label = 'Remove water ' + volume.id; + } + + do(state: EditorState): void { + const idx = state.world.water.findIndex(w => w.id === this.volume.id); + if (idx >= 0) state.world.water.splice(idx, 1); + if (state.selection.kind === 'water' && state.selection.primary === this.volume.id) { + state.selection.primary = null; + state.selection.kind = 'entity'; + } + state.pendingWaterRebuild = true; + } + + undo(state: EditorState): void { + // Restore at the original index so ids and ordering round-trip unchanged. + state.world.water.splice(this.index, 0, cloneWater(this.volume)); + state.pendingWaterRebuild = true; + } +} + +export class RemoveRiverCommand implements Command { + readonly label: string; + private river: RiverSpline; + private index: number; + + constructor(river: RiverSpline, index: number) { + this.river = cloneRiver(river); + this.index = index; + this.label = 'Remove river ' + river.id; + } + + do(state: EditorState): void { + const idx = state.world.rivers.findIndex(r => r.id === this.river.id); + if (idx >= 0) state.world.rivers.splice(idx, 1); + if (state.selection.kind === 'river' && state.selection.primary === this.river.id) { + state.selection.primary = null; + state.selection.kind = 'entity'; + } + state.pendingWaterRebuild = true; + } + + undo(state: EditorState): void { + state.world.rivers.splice(this.index, 0, cloneRiver(this.river)); + state.pendingWaterRebuild = true; + } +} diff --git a/src/state/editor-state.ts b/src/state/editor-state.ts index 6034323..3fba0ff 100644 --- a/src/state/editor-state.ts +++ b/src/state/editor-state.ts @@ -63,9 +63,16 @@ export class AssetCatalog { } } +// What kind of thing the selection refers to. Entities, water volumes, and +// rivers are stored in separate arrays in the world file and are not +// interchangeable, so the selection has to say which array `primary` indexes +// into — an id alone is ambiguous. +export type SelectionKind = 'entity' | 'water' | 'river'; + export interface Selection { - ids: Set; - primary: EntityId | null; // The one showing the gizmo + inspector. + ids: Set; // Multi-select; entities only. + primary: string | null; // The one showing the gizmo + inspector. + kind: SelectionKind; // What `primary` is. } export interface OrbitCamera { @@ -142,9 +149,13 @@ export interface EditorState { // Scene sync handles: HandleMap; terrainHandle: number; // 0 if no terrain node exists. + // Water/river scene nodes, index-aligned with world.water / world.rivers. + waterHandles: number[]; + riverHandles: number[]; pendingRebuild: Set; pendingDestroy: Set; // SceneNodeHandles to destroy this frame. pendingTerrainRebuild: boolean; + pendingWaterRebuild: boolean; // Any water/river add, edit, or removal. pendingEnvironmentSync: boolean; // Viewport @@ -178,7 +189,7 @@ export function createEditorState(): EditorState { world: createEmptyWorld('untitled', 'Untitled World'), editingPrefab: null, modified: false, - selection: { ids: new Set(), primary: null }, + selection: { ids: new Set(), primary: null, kind: 'entity' }, activeTool: 'select', transformMode: 'move', placeAssetRef: null, @@ -203,9 +214,12 @@ export function createEditorState(): EditorState { maxHistory: 200, handles: new HandleMap(), terrainHandle: 0, + waterHandles: [], + riverHandles: [], pendingRebuild: new Set(), pendingDestroy: new Set(), pendingTerrainRebuild: false, + pendingWaterRebuild: false, pendingEnvironmentSync: false, viewportLeft: 240, viewportRight: 1000, @@ -215,6 +229,34 @@ export function createEditorState(): EditorState { }; } +// ---- selection helpers ----------------------------------------------------- + +// The selected entity id, or null when nothing is selected *or* the selection +// is a water volume / river. Every entity-only path (gizmos, entity inspector, +// duplicate, delete) goes through this so a selected river can never be fed to +// code that assumes `world.entities`. +export function selectedEntityId(state: EditorState): EntityId | null { + if (state.selection.kind !== 'entity') return null; + return state.selection.primary; +} + +export function selectEntity(state: EditorState, id: EntityId | null): void { + state.selection.primary = id; + state.selection.kind = 'entity'; +} + +export function selectWater(state: EditorState, id: string): void { + state.selection.ids.clear(); + state.selection.primary = id; + state.selection.kind = 'water'; +} + +export function selectRiver(state: EditorState, id: string): void { + state.selection.ids.clear(); + state.selection.primary = id; + state.selection.kind = 'river'; +} + // ---- handle map helpers ---------------------------------------------------- export function bindEntity(map: HandleMap, id: EntityId, handle: number): void { diff --git a/src/tests/self-tests.ts b/src/tests/self-tests.ts index 6fddfdf..f503246 100644 --- a/src/tests/self-tests.ts +++ b/src/tests/self-tests.ts @@ -2,11 +2,15 @@ // nonzero on any failure). Prints each failing assertion by name plus a // pass/fail summary; runSelfTests returns the failure count. -import { WorldData, PrefabData, createEmptyWorld, createEntity } from 'bloom/world'; +import { WorldData, PrefabData, WaterVolume, createEmptyWorld, createEntity } from 'bloom/world'; import { validateWorld, validatePrefab } from 'bloom/world'; import { buildHeightmapMesh, sampleHeight, defaultTerrain } from 'bloom/world'; import { expandPrefab, createPrefabRegistry, registerPrefab, PrefabLeaf } from 'bloom/world'; -import { createEditorState, nextCounterId } from '../state/editor-state'; +import { + createEditorState, nextCounterId, + selectedEntityId, selectEntity, selectRiver, +} from '../state/editor-state'; +import { EditWaterCommand, RemoveWaterCommand } from '../state/commands/edit-water'; import { runCommand, undo, redo } from '../state/commands'; import { CreateEntityCommand } from '../state/commands/create-entity'; import { TransformEntityCommand } from '../state/commands/transform-entity'; @@ -39,6 +43,7 @@ export function runSelfTests(): number { testCreateTerrainUndo(); testCounterIds(); testUserDataCommand(); + testWaterCommands(); console.log('self-tests: ' + passed + ' passed, ' + failed + ' failed'); return failed; @@ -196,6 +201,49 @@ function testUserDataCommand(): void { assert(state.world.entities[0].userData['cooldown'] === '5', 'userdata: undo restores removed key'); } +function testWaterCommands(): void { + const state = createEditorState(); + const volume: WaterVolume = { + id: 'water_1', + kind: 'box', + center: [0, -1, 0], + size: [10, 2, 10], + surfaceHeight: 0.5, + color: [0.2, 0.5, 0.8, 0.6], + waveAmplitude: 0.1, + waveSpeed: 1.0, + }; + state.world.water.push(volume); + + // Edit coalescing: two drags on the same volume are one undo entry. + const before = { ...volume, center: [0, -1, 0] as [number, number, number], size: [10, 2, 10] as [number, number, number], color: [0.2, 0.5, 0.8, 0.6] as [number, number, number, number] }; + const mid = { ...before, waveSpeed: 2.0 }; + runCommand(state, new EditWaterCommand('water_1', before, mid)); + const after = { ...before, waveSpeed: 3.0 }; + runCommand(state, new EditWaterCommand('water_1', mid, after)); + assert(state.world.water[0].waveSpeed === 3.0, 'water: edit applied'); + assert(state.undoStack.length === 1, 'water: consecutive edits coalesce into one undo entry'); + + undo(state); + assert(state.world.water[0].waveSpeed === 1.0, 'water: undo restores the pre-drag value'); + + // Removal restores at the original index, so ordering round-trips. + state.world.water.push({ ...volume, id: 'water_2' }); + runCommand(state, new RemoveWaterCommand(state.world.water[0], 0)); + assert(state.world.water.length === 1, 'water: removed'); + assert(state.world.water[0].id === 'water_2', 'water: the right one was removed'); + + undo(state); + assert(state.world.water.length === 2, 'water: remove undone'); + assert(state.world.water[0].id === 'water_1', 'water: restored at its original index'); + + // Selecting a river must not let entity-only paths act on it. + selectRiver(state, 'river_1'); + assert(selectedEntityId(state) === null, 'selection: a river is not an entity selection'); + selectEntity(state, 'ent_1'); + assert(selectedEntityId(state) === 'ent_1', 'selection: entity selection reads back'); +} + function testCommandUndoRedo(): void { const state = createEditorState(); diff --git a/src/tools/river-tool.ts b/src/tools/river-tool.ts index 67aeebe..f934376 100644 --- a/src/tools/river-tool.ts +++ b/src/tools/river-tool.ts @@ -1,9 +1,10 @@ // River tool — click to add control points along the ground, double-click or -// ESC to finish. Creates a RiverSpline entry. Rendered as a debug line strip -// until the Q9 spline ribbon mesh is wired up for visual rendering. +// ESC to finish. Creates a RiverSpline entry, which the sync layer turns into a +// ribbon mesh with the animated water material (the engine's shared spawnRiver, +// also used by games at load time). Only the in-progress spline is drawn here. import { isMouseButtonPressed, isKeyPressed, getMouseX, getMouseY, getScreenWidth, getScreenHeight, MouseButton, Key, drawRay } from 'bloom'; -import { RiverSpline, Vec3Lit } from 'bloom/world'; +import { RiverSpline, Vec3Lit, Vec4Lit } from 'bloom/world'; import { EditorState, Command, nextCounterId } from '../state/editor-state'; import { runCommand } from '../state/commands'; import { mouseToWorldRay, rayPlaneIntersect } from '../viewport/ray'; @@ -14,13 +15,32 @@ class AddRiverCommand implements Command { constructor(river: RiverSpline) { this.river = river; } - do(state: EditorState): void { state.world.rivers.push(this.river); } + do(state: EditorState): void { + state.world.rivers.push(this.river); + state.pendingWaterRebuild = true; + } undo(state: EditorState): void { const idx = state.world.rivers.findIndex(r => r.id === this.river.id); if (idx >= 0) state.world.rivers.splice(idx, 1); + state.pendingWaterRebuild = true; } } +// Defaults for a newly drawn river; editable in the water/river panel. +export interface RiverDefaults { + width: number; + depth: number; + flowSpeed: number; + color: Vec4Lit; +} + +export const RIVER_DEFAULTS: RiverDefaults = { + width: 2.0, + depth: 1.0, + flowSpeed: 1.0, + color: [0.2, 0.4, 0.7, 0.7], +}; + interface RiverToolState { placing: boolean; points: Vec3Lit[]; @@ -86,42 +106,31 @@ export function updateRiverTool(state: EditorState): void { } function finishRiver(state: EditorState): void { + const d = RIVER_DEFAULTS; const river: RiverSpline = { id: nextRiverId(state), controlPoints: toolState.points.slice(), - widths: toolState.points.map(() => 2.0), - depth: 1.0, - flowSpeed: 1.0, - color: [0.2, 0.4, 0.7, 0.7], + widths: toolState.points.map(() => d.width), + depth: d.depth, + flowSpeed: d.flowSpeed, + color: [d.color[0], d.color[1], d.color[2], d.color[3]], }; runCommand(state, new AddRiverCommand(river)); state.modified = true; } +// Finished rivers are ribbon meshes in the scene graph (see sync.ts). This only +// draws the spline being laid down, plus a handle at each committed point. export function drawRiverSplines(state: EditorState): void { - for (let i = 0; i < state.world.rivers.length; i++) { - const r = state.world.rivers[i]; - const pts = r.controlPoints; - const c = { r: r.color[0] * 255, g: r.color[1] * 255, b: r.color[2] * 255, a: r.color[3] * 255 }; - for (let j = 0; j < pts.length - 1; j++) { - drawRay( - { x: pts[j][0], y: pts[j][1] + 0.1, z: pts[j][2] }, - { x: pts[j + 1][0] - pts[j][0], y: pts[j + 1][1] - pts[j][1], z: pts[j + 1][2] - pts[j][2] }, - c, - ); - } - } - - // Draw in-progress spline. - if (toolState.placing && toolState.points.length >= 2) { - for (let j = 0; j < toolState.points.length - 1; j++) { - const a = toolState.points[j]; - const b = toolState.points[j + 1]; - drawRay( - { x: a[0], y: a[1] + 0.1, z: a[2] }, - { x: b[0] - a[0], y: b[1] - a[1], z: b[2] - a[2] }, - { r: 100, g: 200, b: 255, a: 255 }, - ); - } + if (!toolState.placing || toolState.points.length === 0) return; + + for (let j = 0; j < toolState.points.length - 1; j++) { + const a = toolState.points[j]; + const b = toolState.points[j + 1]; + drawRay( + { x: a[0], y: a[1] + 0.1, z: a[2] }, + { x: b[0] - a[0], y: b[1] - a[1], z: b[2] - a[2] }, + { r: 100, g: 200, b: 255, a: 255 }, + ); } } diff --git a/src/tools/select-tool.ts b/src/tools/select-tool.ts index 46e31f0..ad46066 100644 --- a/src/tools/select-tool.ts +++ b/src/tools/select-tool.ts @@ -2,7 +2,7 @@ // Supports Shift-click for multi-select. import { getMouseX, getMouseY, isMouseButtonPressed, isKeyDown, MouseButton, Key } from 'bloom'; -import { EditorState } from '../state/editor-state'; +import { EditorState, selectEntity } from '../state/editor-state'; import { pickEntityAtMouse, syncSelectionOutline } from '../viewport/picking'; export function handleSelectClick(state: EditorState): void { @@ -21,21 +21,21 @@ export function handleSelectClick(state: EditorState): void { if (state.selection.primary === pickedId) { // Promote another selected entity or clear. const remaining = Array.from(state.selection.ids); - state.selection.primary = remaining.length > 0 ? remaining[0] : null; + selectEntity(state, remaining.length > 0 ? remaining[0] : null); } } else { state.selection.ids.add(pickedId); - state.selection.primary = pickedId; + selectEntity(state, pickedId); } } else { state.selection.ids.clear(); state.selection.ids.add(pickedId); - state.selection.primary = pickedId; + selectEntity(state, pickedId); } } else { if (!shift) { state.selection.ids.clear(); - state.selection.primary = null; + selectEntity(state, null); } } syncSelectionOutline(state); diff --git a/src/tools/water-tool.ts b/src/tools/water-tool.ts index 79b769c..5958497 100644 --- a/src/tools/water-tool.ts +++ b/src/tools/water-tool.ts @@ -15,10 +15,14 @@ class AddWaterCommand implements Command { constructor(volume: WaterVolume) { this.volume = volume; } - do(state: EditorState): void { state.world.water.push(this.volume); } + do(state: EditorState): void { + state.world.water.push(this.volume); + state.pendingWaterRebuild = true; + } undo(state: EditorState): void { const idx = state.world.water.findIndex(w => w.id === this.volume.id); if (idx >= 0) state.world.water.splice(idx, 1); + state.pendingWaterRebuild = true; } } @@ -29,6 +33,25 @@ interface WaterToolState { const toolState: WaterToolState = { placing: false, startPoint: null }; +// Defaults for a newly dragged-out volume. Exported so the water panel can +// edit them before placement — previously these were frozen constants inline, +// so every volume came out the same shade of blue at the same height. +export interface WaterDefaults { + surfaceHeight: number; + depth: number; // Box height below the surface. + color: Vec4Lit; + waveAmplitude: number; + waveSpeed: number; +} + +export const WATER_DEFAULTS: WaterDefaults = { + surfaceHeight: 0.5, + depth: 2, + color: [0.2, 0.5, 0.8, 0.6], + waveAmplitude: 0.1, + waveSpeed: 1.0, +}; + // Ids come from a world-metadata counter (survives restarts), with a guard // against collisions with hand-authored ids like arena_02's "river". function nextWaterId(state: EditorState): string { @@ -69,15 +92,16 @@ export function updateWaterTool(state: EditorState): void { const sx = Math.abs(ground[0] - sp[0]); const sz = Math.abs(ground[2] - sp[2]); if (sx > 0.5 && sz > 0.5) { + const d = WATER_DEFAULTS; const volume: WaterVolume = { id: nextWaterId(state), kind: 'box', - center: [cx, 0, cz], - size: [sx, 2, sz], - surfaceHeight: 0.5, - color: [0.2, 0.5, 0.8, 0.6], - waveAmplitude: 0.1, - waveSpeed: 1.0, + center: [cx, d.surfaceHeight - d.depth / 2, cz], + size: [sx, d.depth, sz], + surfaceHeight: d.surfaceHeight, + color: [d.color[0], d.color[1], d.color[2], d.color[3]], + waveAmplitude: d.waveAmplitude, + waveSpeed: d.waveSpeed, }; runCommand(state, new AddWaterCommand(volume)); state.modified = true; @@ -87,14 +111,30 @@ export function updateWaterTool(state: EditorState): void { } } +// Placed volumes are real scene nodes with the animated water material (see +// world-sync/sync.ts → the engine's shared spawnWaterVolume). All this draws is +// the rubber-band preview while the user is dragging one out. export function drawWaterVolumes(state: EditorState): void { - for (let i = 0; i < state.world.water.length; i++) { - const w = state.world.water[i]; - const c = w.color; - drawCube( - { x: w.center[0], y: w.surfaceHeight, z: w.center[2] }, - w.size[0], w.size[1], w.size[2], - { r: c[0] * 255, g: c[1] * 255, b: c[2] * 255, a: c[3] * 255 }, - ); - } + if (!toolState.placing || !toolState.startPoint) return; + + const mx = getMouseX(); + const my = getMouseY(); + const vw = state.viewportRight - state.viewportLeft; + const vh = state.viewportBottom - state.viewportTop; + const ray = mouseToWorldRay(state.camera, mx, my, getScreenWidth(), getScreenHeight(), state.viewportLeft, state.viewportTop, vw, vh); + const ground = rayPlaneIntersect(ray, [0, 0, 0], [0, 1, 0]); + if (!ground) return; + + const sp = toolState.startPoint; + const cx = (sp[0] + ground[0]) / 2; + const cz = (sp[2] + ground[2]) / 2; + const sx = Math.abs(ground[0] - sp[0]); + const sz = Math.abs(ground[2] - sp[2]); + if (sx < 0.01 || sz < 0.01) return; + + drawCube( + { x: cx, y: WATER_DEFAULTS.surfaceHeight, z: cz }, + sx, 0.05, sz, + { r: 90, g: 170, b: 230, a: 140 }, + ); } diff --git a/src/ui/layouts/inspector.ts b/src/ui/layouts/inspector.ts index 01566c1..2622559 100644 --- a/src/ui/layouts/inspector.ts +++ b/src/ui/layouts/inspector.ts @@ -6,14 +6,20 @@ import { getScreenWidth, getScreenHeight, drawText } from 'bloom'; import { UiContext } from '../ui-context'; -import { beginPanel, endPanel, label, labelSmall, separator, vec3Field, toolButton, Ref } from '../widgets'; +import { + beginPanel, endPanel, label, labelSmall, separator, vec3Field, dragFloat, + toolButton, button, Ref, +} from '../widgets'; import { textInput } from '../text-input'; import { Theme } from '../theme'; -import { EditorState } from '../../state/editor-state'; +import { EditorState, selectedEntityId } from '../../state/editor-state'; import { TransformEntityCommand } from '../../state/commands/transform-entity'; import { SetUserDataCommand } from '../../state/commands/set-userdata'; +import { + EditWaterCommand, EditRiverCommand, RemoveWaterCommand, RemoveRiverCommand, +} from '../../state/commands/edit-water'; import { runCommand } from '../../state/commands'; -import { Vec3Lit, TransformData, EntityData } from 'bloom/world'; +import { Vec3Lit, TransformData, EntityData, WaterVolume, RiverSpline } from 'bloom/world'; // Add-row scratch state — survives across frames until '+' commits it. const newKeyRef: Ref = { value: '' }; @@ -25,8 +31,19 @@ export function drawInspector(ui: UiContext, state: EditorState): void { const pw = Theme.assetPanelWidth; const px = screenW - pw; - const entity = state.selection.primary !== null - ? state.world.entities.find(e => e.id === state.selection.primary) + // Water and rivers get their own property panels — they are not entities and + // have no transform, model, tags, or userData. + if (state.selection.kind === 'water' && state.selection.primary !== null) { + drawWaterInspector(ui, state, px, screenH, pw); + return; + } + if (state.selection.kind === 'river' && state.selection.primary !== null) { + drawRiverInspector(ui, state, px, screenH, pw); + return; + } + + const entity = selectedEntityId(state) !== null + ? state.world.entities.find(e => e.id === selectedEntityId(state)) : undefined; // Panel grows upward with the userData row count (no scrolling yet). @@ -139,3 +156,186 @@ function cloneTransform(t: TransformData): TransformData { scale: [t.scale[0], t.scale[1], t.scale[2]], }; } + +// ---- water inspector --------------------------------------------------------- + +function cloneWater(w: WaterVolume): WaterVolume { + return { + id: w.id, kind: w.kind, + center: [w.center[0], w.center[1], w.center[2]], + size: [w.size[0], w.size[1], w.size[2]], + surfaceHeight: w.surfaceHeight, + color: [w.color[0], w.color[1], w.color[2], w.color[3]], + waveAmplitude: w.waveAmplitude, + waveSpeed: w.waveSpeed, + }; +} + +function drawWaterInspector( + ui: UiContext, state: EditorState, + px: number, screenH: number, pw: number, +): void { + const panelH = 330; + const py = screenH - Theme.statusBarHeight - panelH; + beginPanel(ui, 'inspector', px, py, pw, panelH, 'Water'); + + const idx = state.world.water.findIndex(w => w.id === state.selection.primary); + if (idx < 0) { + labelSmall(ui, 'Water volume not found'); + endPanel(ui); + return; + } + + const w = state.world.water[idx]; + const before = cloneWater(w); + let changed = false; + + label(ui, w.id); + separator(ui); + + const centerRef: Ref = { value: [w.center[0], w.center[1], w.center[2]] }; + if (vec3Field(ui, 'wat_center', 'Center', centerRef)) { + w.center = centerRef.value; + changed = true; + } + + const sizeRef: Ref = { value: [w.size[0], w.size[1], w.size[2]] }; + if (vec3Field(ui, 'wat_size', 'Size', sizeRef)) { + w.size = sizeRef.value; + changed = true; + } + + const surfRef: Ref = { value: w.surfaceHeight }; + if (dragFloat(ui, 'wat_surf', 'Surface Y', surfRef, 0.05, -100, 100)) { + w.surfaceHeight = surfRef.value; + changed = true; + } + + const ampRef: Ref = { value: w.waveAmplitude }; + if (dragFloat(ui, 'wat_amp', 'Wave Amp', ampRef, 0.01, 0, 2)) { + w.waveAmplitude = ampRef.value; + changed = true; + } + + const spdRef: Ref = { value: w.waveSpeed }; + if (dragFloat(ui, 'wat_spd', 'Wave Spd', spdRef, 0.01, 0, 10)) { + w.waveSpeed = spdRef.value; + changed = true; + } + + separator(ui); + changed = drawColorFields(ui, 'wat', w.color) || changed; + + if (changed) { + runCommand(state, new EditWaterCommand(w.id, before, w)); + } + + separator(ui); + if (button(ui, 'wat_delete', 'Delete volume')) { + runCommand(state, new RemoveWaterCommand(state.world.water[idx], idx)); + } + + endPanel(ui); +} + +// ---- river inspector --------------------------------------------------------- + +function cloneRiver(r: RiverSpline): RiverSpline { + const pts: [number, number, number][] = []; + for (let i = 0; i < r.controlPoints.length; i++) { + const p = r.controlPoints[i]; + pts.push([p[0], p[1], p[2]]); + } + return { + id: r.id, + controlPoints: pts, + widths: r.widths.slice(), + depth: r.depth, + flowSpeed: r.flowSpeed, + color: [r.color[0], r.color[1], r.color[2], r.color[3]], + }; +} + +function drawRiverInspector( + ui: UiContext, state: EditorState, + px: number, screenH: number, pw: number, +): void { + const panelH = 300; + const py = screenH - Theme.statusBarHeight - panelH; + beginPanel(ui, 'inspector', px, py, pw, panelH, 'River'); + + const idx = state.world.rivers.findIndex(r => r.id === state.selection.primary); + if (idx < 0) { + labelSmall(ui, 'River not found'); + endPanel(ui); + return; + } + + const r = state.world.rivers[idx]; + const before = cloneRiver(r); + let changed = false; + + label(ui, r.id); + labelSmall(ui, r.controlPoints.length + ' control points'); + separator(ui); + + const depthRef: Ref = { value: r.depth }; + if (dragFloat(ui, 'riv_depth', 'Depth', depthRef, 0.05, 0, 20)) { + r.depth = depthRef.value; + changed = true; + } + + const flowRef: Ref = { value: r.flowSpeed }; + if (dragFloat(ui, 'riv_flow', 'Flow Spd', flowRef, 0.01, 0, 10)) { + r.flowSpeed = flowRef.value; + changed = true; + } + + // One width for the whole river: per-point widths are in the format, but a + // single slider covers the common case without a per-point UI. Editing it + // sets every point's width; the file keeps the array. + const widthRef: Ref = { value: r.widths.length > 0 ? r.widths[0] : 1 }; + if (dragFloat(ui, 'riv_width', 'Width', widthRef, 0.05, 0.1, 50)) { + for (let i = 0; i < r.widths.length; i++) r.widths[i] = widthRef.value; + changed = true; + } + + separator(ui); + changed = drawColorFields(ui, 'riv', r.color) || changed; + + if (changed) { + runCommand(state, new EditRiverCommand(r.id, before, r)); + } + + separator(ui); + if (button(ui, 'riv_delete', 'Delete river')) { + runCommand(state, new RemoveRiverCommand(state.world.rivers[idx], idx)); + } + + endPanel(ui); +} + +// RGBA in 0-1, edited in place. Shared by both panels. +function drawColorFields(ui: UiContext, idPrefix: string, color: number[]): boolean { + let changed = false; + + const rgbRef: Ref = { value: [color[0], color[1], color[2]] }; + if (vec3Field(ui, idPrefix + '_rgb', 'Color RGB', rgbRef)) { + color[0] = clamp01(rgbRef.value[0]); + color[1] = clamp01(rgbRef.value[1]); + color[2] = clamp01(rgbRef.value[2]); + changed = true; + } + + const alphaRef: Ref = { value: color[3] }; + if (dragFloat(ui, idPrefix + '_a', 'Opacity', alphaRef, 0.01, 0, 1)) { + color[3] = clamp01(alphaRef.value); + changed = true; + } + + return changed; +} + +function clamp01(v: number): number { + return v < 0 ? 0 : (v > 1 ? 1 : v); +} diff --git a/src/ui/layouts/outliner.ts b/src/ui/layouts/outliner.ts index d678ee1..5743f48 100644 --- a/src/ui/layouts/outliner.ts +++ b/src/ui/layouts/outliner.ts @@ -1,10 +1,14 @@ -// Left-side outliner: flat list of all entities in the world. Clicking selects. +// Left-side outliner: everything in the world, in three sections — entities, +// water volumes, rivers. Clicking selects; the selection carries which section +// it came from, because ids are only unique within their own array. import { getScreenHeight } from 'bloom'; import { UiContext } from '../ui-context'; import { beginPanel, endPanel, labelSmall, listRow } from '../widgets'; import { Theme } from '../theme'; -import { EditorState } from '../../state/editor-state'; +import { + EditorState, selectEntity, selectWater, selectRiver, +} from '../../state/editor-state'; import { syncSelectionOutline } from '../../viewport/picking'; export function drawOutliner(ui: UiContext, state: EditorState): void { @@ -16,22 +20,56 @@ export function drawOutliner(ui: UiContext, state: EditorState): void { beginPanel(ui, 'outliner', 0, py, pw, ph, 'Outliner'); const entities = state.world.entities; - if (entities.length === 0) { - labelSmall(ui, 'No entities'); + const water = state.world.water; + const rivers = state.world.rivers; + + if (entities.length === 0 && water.length === 0 && rivers.length === 0) { + labelSmall(ui, 'Empty world'); endPanel(ui); state.viewportLeft = pw; return; } + // Water and rivers first: there are only ever a handful, while a world can + // have hundreds of entities, and this panel does not scroll yet. Listing them + // last would put them permanently below the fold and make them unselectable. + if (water.length > 0) { + labelSmall(ui, 'Water'); + for (let i = 0; i < water.length; i++) { + const w = water[i]; + const selected = state.selection.kind === 'water' && state.selection.primary === w.id; + if (listRow(ui, 'out_water_' + i, w.id, selected, 1)) { + selectWater(state, w.id); + syncSelectionOutline(state); + } + } + } + + if (rivers.length > 0) { + labelSmall(ui, 'Rivers'); + for (let i = 0; i < rivers.length; i++) { + const r = rivers[i]; + const selected = state.selection.kind === 'river' && state.selection.primary === r.id; + if (listRow(ui, 'out_river_' + i, r.id, selected, 1)) { + selectRiver(state, r.id); + syncSelectionOutline(state); + } + } + } + + if (water.length > 0 || rivers.length > 0) { + labelSmall(ui, 'Entities'); + } + for (let i = 0; i < entities.length; i++) { const entity = entities[i]; - const selected = state.selection.primary === entity.id; + const selected = state.selection.kind === 'entity' && state.selection.primary === entity.id; const indent = entity.prefabRef !== null ? 1 : 0; - if (listRow(ui, 'out_' + i, entity.name, selected, indent)) { + if (listRow(ui, 'out_ent_' + i, entity.name, selected, indent)) { state.selection.ids.clear(); state.selection.ids.add(entity.id); - state.selection.primary = entity.id; + selectEntity(state, entity.id); syncSelectionOutline(state); } } diff --git a/src/ui/layouts/toolbar.ts b/src/ui/layouts/toolbar.ts index 335e930..c3a98ab 100644 --- a/src/ui/layouts/toolbar.ts +++ b/src/ui/layouts/toolbar.ts @@ -42,12 +42,14 @@ export function drawToolbar(ui: UiContext, state: EditorState): void { drawRect(x, y + 2, 1, Theme.buttonHeight - 4, Theme.border); x += 8; - // Tool buttons. + // Tool buttons. Water/river were reachable only by hotkey (T/Y) before. const tools: [ToolId, string][] = [ ['select', 'Sel'], ['place', 'Place'], ['transform', 'Move'], ['brush', 'Brush'], + ['water', 'Water'], + ['river', 'River'], ]; for (let i = 0; i < tools.length; i++) { const [tid, lbl] = tools[i]; diff --git a/src/viewport/frame.ts b/src/viewport/frame.ts index 9b4374c..dd25e1b 100644 --- a/src/viewport/frame.ts +++ b/src/viewport/frame.ts @@ -2,7 +2,7 @@ // selected entity fills the viewport. Triggered by pressing F with an entity // selected, or automatically after opening a world. -import { EditorState, handleOfEntity } from '../state/editor-state'; +import { EditorState, handleOfEntity, selectedEntityId } from '../state/editor-state'; import { Vec3Lit } from 'bloom/world'; // Frame the camera on a world-space bounding box. Sets the orbit target to @@ -34,9 +34,9 @@ export function frameCameraOnBounds( // Frame the camera on the currently selected entity's model bounds. export function frameCameraOnSelection(state: EditorState): void { - if (state.selection.primary === null) return; + if (selectedEntityId(state) === null) return; - const entity = state.world.entities.find(e => e.id === state.selection.primary); + const entity = state.world.entities.find(e => e.id === selectedEntityId(state)); if (!entity) return; // Look up model bounds from the catalog. diff --git a/src/viewport/picking.ts b/src/viewport/picking.ts index d049a51..47a6e37 100644 --- a/src/viewport/picking.ts +++ b/src/viewport/picking.ts @@ -6,7 +6,7 @@ import { pickScene, setPostFxSelected, setPostFxHovered, enablePostFx, } from 'bloom/scene'; import { - EditorState, entityOfHandle, handleOfEntity, + EditorState, entityOfHandle, handleOfEntity, selectedEntityId, } from '../state/editor-state'; // Call once at startup to enable the outline post-FX pipeline. @@ -41,8 +41,9 @@ export function updateHover( // Update the outline to match the current selection. export function syncSelectionOutline(state: EditorState): void { - if (state.selection.primary !== null) { - const h = handleOfEntity(state.handles, state.selection.primary); + const entityId = selectedEntityId(state); + if (entityId !== null) { + const h = handleOfEntity(state.handles, entityId); setPostFxSelected(h); } else { setPostFxSelected(0); diff --git a/src/world-sync/sync.ts b/src/world-sync/sync.ts index 99e1c5a..c9d061e 100644 --- a/src/world-sync/sync.ts +++ b/src/world-sync/sync.ts @@ -26,6 +26,7 @@ import { setFog } from 'bloom/core'; import { trsToMat4 } from 'bloom/world'; import { buildHeightmapMesh } from 'bloom/world'; import { expandPrefab, PrefabLeaf, createPrefabRegistry, registerPrefab, PrefabRegistry } from 'bloom/world'; +import { spawnWaterVolume, spawnRiver } from 'bloom/world'; import { EntityData, Vec3Lit, Mat4Lit } from 'bloom/world'; import { EditorState, bindEntity, unbindEntity, handleOfEntity, @@ -36,9 +37,38 @@ export function syncWorldToScene(state: EditorState): void { syncDestroys(state); syncRebuilds(state); syncTerrain(state); + syncWaterAndRivers(state); syncEnvironment(state); } +// ---- water & rivers ---------------------------------------------------------- +// +// Rendered through the engine's shared spawn helpers (bloom/world's render.ts), +// the same ones `instantiateWorld` uses, so what you see here is what the game +// shows. Tools set `pendingWaterRebuild` after any add/edit/remove; we tear the +// nodes down and respawn them, which is cheap at authoring-time volumes and +// avoids a per-property update API for every water knob. +function syncWaterAndRivers(state: EditorState): void { + if (!state.pendingWaterRebuild) return; + state.pendingWaterRebuild = false; + + for (let i = 0; i < state.waterHandles.length; i++) { + if (state.waterHandles[i] !== 0) destroySceneNode(state.waterHandles[i]); + } + for (let i = 0; i < state.riverHandles.length; i++) { + if (state.riverHandles[i] !== 0) destroySceneNode(state.riverHandles[i]); + } + state.waterHandles = []; + state.riverHandles = []; + + for (let i = 0; i < state.world.water.length; i++) { + state.waterHandles.push(spawnWaterVolume(state.world.water[i])); + } + for (let i = 0; i < state.world.rivers.length; i++) { + state.riverHandles.push(spawnRiver(state.world.rivers[i])); + } +} + // ---- placeholder rendering --------------------------------------------------- // // Entities whose model is missing — including sentinel refs like @@ -385,5 +415,6 @@ export function rebuildAllSceneNodes(state: EditorState): void { if (state.world.terrain !== null) { state.pendingTerrainRebuild = true; } + state.pendingWaterRebuild = true; state.pendingEnvironmentSync = true; } From f5358deaa5d93ec5dd4dbaf299bf67fe506275f7 Mon Sep 17 00:00:00 2001 From: Ralph Kuepper Date: Sat, 11 Jul 2026 16:55:59 +0200 Subject: [PATCH 4/4] feat: lights are placeable, selectable, and light the preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follows the engine's schema v2, where point lights moved out of userData and into world.lights. - Light tool: click the ground to place a point light. - Lights section in the outliner; inspector for position, colour, intensity and range; delete with index-preserving undo; edits coalesce per drag. - applyWorldLights runs every frame alongside sun/ambient/fog, so the editor previews a world's actual lighting instead of guessing at it. - A light has no mesh, so draw a marker at each one, plus a wire sphere at its range when selected — otherwise you cannot see or click a light, and "how far does this reach" needs arithmetic on the inspector numbers. Self-tests cover the v1 -> v2 migration end to end (light lifted out of entities, colour/range/intensity parsed from the old userData strings, non-light entities untouched, v2 worlds left alone, migrated world validates): 62 passing. --- PLAN.md | 13 +++ src/main.ts | 9 +- src/state/editor-state.ts | 10 +- src/tests/self-tests.ts | 52 ++++++++++ src/tools/light-tool.ts | 186 ++++++++++++++++++++++++++++++++++++ src/ui/layouts/inspector.ts | 66 +++++++++++++ src/ui/layouts/outliner.ts | 19 +++- src/ui/layouts/toolbar.ts | 1 + src/world-sync/sync.ts | 7 +- 9 files changed, 356 insertions(+), 7 deletions(-) create mode 100644 src/tools/light-tool.ts diff --git a/PLAN.md b/PLAN.md index 38e2ac4..70267c3 100644 --- a/PLAN.md +++ b/PLAN.md @@ -185,6 +185,19 @@ Still open from C: dragging a **gizmo** on a water volume (move/scale writes `ce - **C4. Inspector sections**: water (`surfaceHeight`, color, `waveAmplitude`, `waveSpeed`) and river (`depth`, `flowSpeed`, color, per-point width), editable, undoable (coalesced drag commands like `TransformEntityCommand`). - **C5. Toolbar buttons** for water and river next to the existing four (`toolbar.ts:46-51`), plus creation-defaults fields (e.g. in the brush-panel pattern) so new volumes/splines aren't hardcoded. +### Schema v2 — first-class point lights — ✅ DONE (2026-07-11) + +Not in the original plan; added because the editor could not light its own preview. + +In v1, a light was an *entity* carrying `userData.kind = "point_light"` plus `range` / `color` / `intensity` strings — a private convention between one game and its baker. The editor saw an entity with no model (an invisible, unlit marker), and every new game would have re-invented the same convention. Sun, ambient, and fog were already first-class in `environment`; point lights now sit beside them in a top-level `lights: LightData[]`. + +The dividing line, for future schema questions: **lights are engine-universal — every renderer knows what a point light is — so they are schema. A spawner or a wave plan means nothing without the game, so it stays `userData`.** The editor stays game-agnostic either way. + +- `WORLD_SCHEMA_VERSION = 2`; `migrateWorldData` lifts v1 `point_light` entities into `world.lights` on load, so old worlds keep working untouched. Covered by self-tests (id/position/colour/range/intensity carried over, non-light entities untouched, v2 worlds left alone, result validates). +- `applyWorldLights(world)` in `world/render.ts` must be called **every frame** — the renderer clears its lighting block in `begin_frame`, the same reason games re-apply sun and ambient. Calling it once at load lights the world for exactly one frame. +- Editor: Light tool (click to place), Lights section in the outliner, inspector (position / colour / intensity / range), delete with index-preserving undo, and a wire marker at each light plus a range sphere when selected — a light has no mesh, so without markers you cannot see or click one. +- Shooter: `arena_02` migrated to v2 (5 lights lifted out of `entities`); its baker reads `world.lights` and still falls back to the v1 entity form. **The generated runtime data is byte-identical apart from one comment** — the migration is semantically a no-op for the game. + ### D. Terrain paint & layers - **D1. UI:** layer list in the brush panel — add/remove `TerrainLayer` (pick `textureRef` via the asset catalog; ⚠ the catalog currently only scans models/prefabs — extend it to a textures dir, adding a `texturesDir` key to `editor.project.json` with a sensible default), set `tileScale`, select active layer (`state.brush.activeLayerIdx` already exists), and expose the `'paint'` kind button (`brush-panel.ts:22`). diff --git a/src/main.ts b/src/main.ts index a0a1bbf..9579b24 100644 --- a/src/main.ts +++ b/src/main.ts @@ -45,6 +45,7 @@ import { createScaleGizmoState, updateScaleGizmo, drawScaleGizmo } from './gizmo import { updateBrushTool } from './tools/brush-tool'; import { updateWaterTool, drawWaterVolumes } from './tools/water-tool'; import { updateRiverTool, drawRiverSplines } from './tools/river-tool'; +import { updateLightTool, drawLightMarkers, RemoveLightCommand } from './tools/light-tool'; import { updatePrefabTool, drawPrefabBreadcrumb } from './tools/prefab-tool'; import { drawEnvironmentPanel } from './ui/layouts/environment-panel'; import { drawBrushPanel } from './ui/layouts/brush-panel'; @@ -150,6 +151,9 @@ while (!windowShouldClose()) { } else if (state.selection.kind === 'river') { const idx = state.world.rivers.findIndex(r => r.id === state.selection.primary); if (idx >= 0) runCommand(state, new RemoveRiverCommand(state.world.rivers[idx], idx)); + } else if (state.selection.kind === 'light') { + const idx = state.world.lights.findIndex(l => l.id === state.selection.primary); + if (idx >= 0) runCommand(state, new RemoveLightCommand(state.world.lights[idx], idx)); } } @@ -236,9 +240,11 @@ while (!windowShouldClose()) { drawRotateGizmo(rotateGizmo); drawScaleGizmo(scaleGizmo); - // Draw water volumes and river splines as immediate-mode overlays. + // In-progress previews for the water/river tools, plus light markers (a light + // has no mesh, so without these you cannot see or click one). drawWaterVolumes(state); drawRiverSplines(state); + drawLightMarkers(state); // Note: scene graph nodes are drawn automatically by the engine's retained- // mode renderer. We don't need to call drawModel for scene-graph entities. @@ -299,6 +305,7 @@ while (!windowShouldClose()) { updateBrushTool(state); updateWaterTool(state); updateRiverTool(state); + updateLightTool(state); // ---- world sync (at the end of the frame) -------------------------------- diff --git a/src/state/editor-state.ts b/src/state/editor-state.ts index 3fba0ff..b6e1224 100644 --- a/src/state/editor-state.ts +++ b/src/state/editor-state.ts @@ -11,7 +11,7 @@ import { // ---- sub-state types ------------------------------------------------------- export type EntityId = string; -export type ToolId = 'select' | 'place' | 'transform' | 'brush' | 'prefab' | 'water' | 'river'; +export type ToolId = 'select' | 'place' | 'transform' | 'brush' | 'prefab' | 'water' | 'river' | 'light'; export type TransformMode = 'move' | 'rotate' | 'scale'; export interface Project { @@ -67,7 +67,7 @@ export class AssetCatalog { // rivers are stored in separate arrays in the world file and are not // interchangeable, so the selection has to say which array `primary` indexes // into — an id alone is ambiguous. -export type SelectionKind = 'entity' | 'water' | 'river'; +export type SelectionKind = 'entity' | 'water' | 'river' | 'light'; export interface Selection { ids: Set; // Multi-select; entities only. @@ -257,6 +257,12 @@ export function selectRiver(state: EditorState, id: string): void { state.selection.kind = 'river'; } +export function selectLight(state: EditorState, id: string): void { + state.selection.ids.clear(); + state.selection.primary = id; + state.selection.kind = 'light'; +} + // ---- handle map helpers ---------------------------------------------------- export function bindEntity(map: HandleMap, id: EntityId, handle: number): void { diff --git a/src/tests/self-tests.ts b/src/tests/self-tests.ts index f503246..dea7416 100644 --- a/src/tests/self-tests.ts +++ b/src/tests/self-tests.ts @@ -4,6 +4,7 @@ import { WorldData, PrefabData, WaterVolume, createEmptyWorld, createEntity } from 'bloom/world'; import { validateWorld, validatePrefab } from 'bloom/world'; +import { migrateWorldData } from 'bloom/world'; import { buildHeightmapMesh, sampleHeight, defaultTerrain } from 'bloom/world'; import { expandPrefab, createPrefabRegistry, registerPrefab, PrefabLeaf } from 'bloom/world'; import { @@ -44,6 +45,7 @@ export function runSelfTests(): number { testCounterIds(); testUserDataCommand(); testWaterCommands(); + testLightMigration(); console.log('self-tests: ' + passed + ' passed, ' + failed + ' failed'); return failed; @@ -244,6 +246,56 @@ function testWaterCommands(): void { assert(selectedEntityId(state) === 'ent_1', 'selection: entity selection reads back'); } +// Schema v1 carried point lights as entities with userData.kind='point_light'. +// migrateWorldData must lift them into world.lights and drop them from +// entities, without touching anything else — this runs on every load of an old +// world, so a bug here silently mangles worlds. +function testLightMigration(): void { + const world = createEmptyWorld('t', 'T') as any; + world.schemaVersion = 1; + world.lights = undefined; + + const lightEnt = createEntity('light_a', '', [3, 4, 5]); + lightEnt.userData = { + kind: 'point_light', + range: '18', + color: '1.0, 0.5, 0.25', + intensity: '2.5', + }; + const propEnt = createEntity('prop_a', 'models/crate.glb', [1, 0, 1]); + + world.entities.push(lightEnt); + world.entities.push(propEnt); + + const migrated = migrateWorldData(world as WorldData); + + assert(migrated.schemaVersion === 2, 'migration: schemaVersion bumped to 2'); + assert(migrated.lights.length === 1, 'migration: one light lifted'); + assert(migrated.entities.length === 1, 'migration: light removed from entities'); + assert(migrated.entities[0].id === 'prop_a', 'migration: non-light entity untouched'); + + const l = migrated.lights[0]; + assert(l.id === 'light_a', 'migration: light id preserved'); + assert(l.kind === 'point', 'migration: light kind'); + assert(l.position[0] === 3 && l.position[1] === 4 && l.position[2] === 5, 'migration: position carried over'); + assert(l.range === 18, 'migration: range parsed from userData'); + assert(l.intensity === 2.5, 'migration: intensity parsed from userData'); + assert(Math.abs(l.color[0] - 1.0) < 0.001 && Math.abs(l.color[1] - 0.5) < 0.001, + 'migration: color parsed from "r, g, b" string'); + + // A v2 world must pass through untouched (migration is not re-run). + const already = createEmptyWorld('t2', 'T2'); + already.lights.push({ + id: 'l1', name: 'l1', kind: 'point', + position: [0, 1, 0], color: [1, 1, 1], intensity: 1, range: 5, + }); + const again = migrateWorldData(already); + assert(again.lights.length === 1, 'migration: v2 world is left alone'); + + const v = validateWorld(again); + assert(v.ok === true, 'migration: migrated world validates'); +} + function testCommandUndoRedo(): void { const state = createEditorState(); diff --git a/src/tools/light-tool.ts b/src/tools/light-tool.ts new file mode 100644 index 0000000..5bd6845 --- /dev/null +++ b/src/tools/light-tool.ts @@ -0,0 +1,186 @@ +// Light tool — click on the ground to drop a point light. +// +// Lights are schema, not entities (world.lights), so they get their own tool +// rather than riding on the place tool's model catalog. Placed lights are lit +// for real in the viewport (see sync.ts → applyWorldLights); the wire marker +// drawn here is just so you can find and click one, since a light has no mesh. + +import { + isMouseButtonPressed, getMouseX, getMouseY, getScreenWidth, getScreenHeight, + MouseButton, drawSphereWires, +} from 'bloom'; +import { LightData, Vec3Lit } from 'bloom/world'; +import { EditorState, Command, nextCounterId, selectLight } from '../state/editor-state'; +import { runCommand } from '../state/commands'; +import { mouseToWorldRay, rayPlaneIntersect } from '../viewport/ray'; + +// Defaults for a freshly placed light. A light at ground level is useless, so +// new ones start at head height. +export interface LightDefaults { + height: number; + color: Vec3Lit; + intensity: number; + range: number; +} + +export const LIGHT_DEFAULTS: LightDefaults = { + height: 3, + color: [1.0, 0.9, 0.75], + intensity: 1.0, + range: 12, +}; + +export class AddLightCommand implements Command { + readonly label = 'Add light'; + private light: LightData; + + constructor(light: LightData) { this.light = light; } + + do(state: EditorState): void { + state.world.lights.push(this.light); + selectLight(state, this.light.id); + } + + undo(state: EditorState): void { + const idx = state.world.lights.findIndex(l => l.id === this.light.id); + if (idx >= 0) state.world.lights.splice(idx, 1); + if (state.selection.kind === 'light' && state.selection.primary === this.light.id) { + state.selection.primary = null; + state.selection.kind = 'entity'; + } + } +} + +export class EditLightCommand implements Command { + readonly label: string; + readonly lightId: string; + private before: LightData; + private after: LightData; + + constructor(lightId: string, before: LightData, after: LightData) { + this.lightId = lightId; + this.before = cloneLight(before); + this.after = cloneLight(after); + this.label = 'Edit light ' + lightId; + } + + do(state: EditorState): void { this.apply(state, this.after); } + undo(state: EditorState): void { this.apply(state, this.before); } + + private apply(state: EditorState, value: LightData): void { + for (let i = 0; i < state.world.lights.length; i++) { + if (state.world.lights[i].id !== this.lightId) continue; + state.world.lights[i] = cloneLight(value); + return; + } + } + + // Coalesce a drag on the same light into one undo entry. + mergeWith(next: Command): boolean { + if (!(next instanceof EditLightCommand)) return false; + const n = next as EditLightCommand; + if (n.lightId !== this.lightId) return false; + this.after = cloneLight(n.after); + return true; + } +} + +export class RemoveLightCommand implements Command { + readonly label: string; + private light: LightData; + private index: number; + + constructor(light: LightData, index: number) { + this.light = cloneLight(light); + this.index = index; + this.label = 'Remove light ' + light.id; + } + + do(state: EditorState): void { + const idx = state.world.lights.findIndex(l => l.id === this.light.id); + if (idx >= 0) state.world.lights.splice(idx, 1); + if (state.selection.kind === 'light' && state.selection.primary === this.light.id) { + state.selection.primary = null; + state.selection.kind = 'entity'; + } + } + + undo(state: EditorState): void { + // Restore at the original index so the file's ordering round-trips. + state.world.lights.splice(this.index, 0, cloneLight(this.light)); + } +} + +export function cloneLight(l: LightData): LightData { + return { + id: l.id, + name: l.name, + kind: l.kind, + position: [l.position[0], l.position[1], l.position[2]], + color: [l.color[0], l.color[1], l.color[2]], + intensity: l.intensity, + range: l.range, + }; +} + +export function updateLightTool(state: EditorState): void { + if (state.activeTool !== 'light') return; + + const mx = getMouseX(); + const my = getMouseY(); + const inViewport = mx > state.viewportLeft && mx < state.viewportRight && + my > state.viewportTop && my < state.viewportBottom; + if (!inViewport) return; + if (!isMouseButtonPressed(MouseButton.LEFT)) return; + + const vw = state.viewportRight - state.viewportLeft; + const vh = state.viewportBottom - state.viewportTop; + const ray = mouseToWorldRay(state.camera, mx, my, getScreenWidth(), getScreenHeight(), state.viewportLeft, state.viewportTop, vw, vh); + const ground = rayPlaneIntersect(ray, [0, 0, 0], [0, 1, 0]); + if (!ground) return; + + const d = LIGHT_DEFAULTS; + const id = nextLightId(state); + const light: LightData = { + id: id, + name: id, + kind: 'point', + position: [ground[0], ground[1] + d.height, ground[2]], + color: [d.color[0], d.color[1], d.color[2]], + intensity: d.intensity, + range: d.range, + }; + + runCommand(state, new AddLightCommand(light)); + state.modified = true; +} + +function nextLightId(state: EditorState): string { + let id = nextCounterId(state, 'nextLightId', 'light_'); + while (state.world.lights.some(l => l.id === id)) { + id = nextCounterId(state, 'nextLightId', 'light_'); + } + return id; +} + +// A light has no geometry, so draw a marker: a small sphere at the light, and a +// wire sphere at its range when selected, so "how far does this reach" is +// answerable without doing arithmetic on the inspector numbers. +export function drawLightMarkers(state: EditorState): void { + for (let i = 0; i < state.world.lights.length; i++) { + const l = state.world.lights[i]; + const selected = state.selection.kind === 'light' && state.selection.primary === l.id; + const pos = { x: l.position[0], y: l.position[1], z: l.position[2] }; + const tint = { + r: Math.floor(l.color[0] * 255), + g: Math.floor(l.color[1] * 255), + b: Math.floor(l.color[2] * 255), + a: 255, + }; + + drawSphereWires(pos, 0.25, tint); + if (selected) { + drawSphereWires(pos, l.range, { r: tint.r, g: tint.g, b: tint.b, a: 90 }); + } + } +} diff --git a/src/ui/layouts/inspector.ts b/src/ui/layouts/inspector.ts index 2622559..3b0c396 100644 --- a/src/ui/layouts/inspector.ts +++ b/src/ui/layouts/inspector.ts @@ -18,6 +18,7 @@ import { SetUserDataCommand } from '../../state/commands/set-userdata'; import { EditWaterCommand, EditRiverCommand, RemoveWaterCommand, RemoveRiverCommand, } from '../../state/commands/edit-water'; +import { EditLightCommand, RemoveLightCommand, cloneLight } from '../../tools/light-tool'; import { runCommand } from '../../state/commands'; import { Vec3Lit, TransformData, EntityData, WaterVolume, RiverSpline } from 'bloom/world'; @@ -41,6 +42,10 @@ export function drawInspector(ui: UiContext, state: EditorState): void { drawRiverInspector(ui, state, px, screenH, pw); return; } + if (state.selection.kind === 'light' && state.selection.primary !== null) { + drawLightInspector(ui, state, px, screenH, pw); + return; + } const entity = selectedEntityId(state) !== null ? state.world.entities.find(e => e.id === selectedEntityId(state)) @@ -315,6 +320,67 @@ function drawRiverInspector( endPanel(ui); } +// ---- light inspector --------------------------------------------------------- + +function drawLightInspector( + ui: UiContext, state: EditorState, + px: number, screenH: number, pw: number, +): void { + const panelH = 300; + const py = screenH - Theme.statusBarHeight - panelH; + beginPanel(ui, 'inspector', px, py, pw, panelH, 'Light'); + + const idx = state.world.lights.findIndex(l => l.id === state.selection.primary); + if (idx < 0) { + labelSmall(ui, 'Light not found'); + endPanel(ui); + return; + } + + const l = state.world.lights[idx]; + const before = cloneLight(l); + let changed = false; + + label(ui, l.name); + labelSmall(ui, l.id); + separator(ui); + + const posRef: Ref = { value: [l.position[0], l.position[1], l.position[2]] }; + if (vec3Field(ui, 'lit_pos', 'Position', posRef)) { + l.position = posRef.value; + changed = true; + } + + const colorRef: Ref = { value: [l.color[0], l.color[1], l.color[2]] }; + if (vec3Field(ui, 'lit_col', 'Color RGB', colorRef)) { + l.color = [clamp01(colorRef.value[0]), clamp01(colorRef.value[1]), clamp01(colorRef.value[2])]; + changed = true; + } + + const intRef: Ref = { value: l.intensity }; + if (dragFloat(ui, 'lit_int', 'Intensity', intRef, 0.02, 0, 20)) { + l.intensity = intRef.value; + changed = true; + } + + const rangeRef: Ref = { value: l.range }; + if (dragFloat(ui, 'lit_range', 'Range', rangeRef, 0.1, 0.1, 200)) { + l.range = rangeRef.value; + changed = true; + } + + if (changed) { + runCommand(state, new EditLightCommand(l.id, before, l)); + } + + separator(ui); + if (button(ui, 'lit_delete', 'Delete light')) { + runCommand(state, new RemoveLightCommand(state.world.lights[idx], idx)); + } + + endPanel(ui); +} + // RGBA in 0-1, edited in place. Shared by both panels. function drawColorFields(ui: UiContext, idPrefix: string, color: number[]): boolean { let changed = false; diff --git a/src/ui/layouts/outliner.ts b/src/ui/layouts/outliner.ts index 5743f48..ce0abc1 100644 --- a/src/ui/layouts/outliner.ts +++ b/src/ui/layouts/outliner.ts @@ -7,7 +7,7 @@ import { UiContext } from '../ui-context'; import { beginPanel, endPanel, labelSmall, listRow } from '../widgets'; import { Theme } from '../theme'; import { - EditorState, selectEntity, selectWater, selectRiver, + EditorState, selectEntity, selectWater, selectRiver, selectLight, } from '../../state/editor-state'; import { syncSelectionOutline } from '../../viewport/picking'; @@ -22,8 +22,9 @@ export function drawOutliner(ui: UiContext, state: EditorState): void { const entities = state.world.entities; const water = state.world.water; const rivers = state.world.rivers; + const lights = state.world.lights; - if (entities.length === 0 && water.length === 0 && rivers.length === 0) { + if (entities.length === 0 && water.length === 0 && rivers.length === 0 && lights.length === 0) { labelSmall(ui, 'Empty world'); endPanel(ui); state.viewportLeft = pw; @@ -57,7 +58,19 @@ export function drawOutliner(ui: UiContext, state: EditorState): void { } } - if (water.length > 0 || rivers.length > 0) { + if (lights.length > 0) { + labelSmall(ui, 'Lights'); + for (let i = 0; i < lights.length; i++) { + const l = lights[i]; + const selected = state.selection.kind === 'light' && state.selection.primary === l.id; + if (listRow(ui, 'out_light_' + i, l.name, selected, 1)) { + selectLight(state, l.id); + syncSelectionOutline(state); + } + } + } + + if (water.length > 0 || rivers.length > 0 || lights.length > 0) { labelSmall(ui, 'Entities'); } diff --git a/src/ui/layouts/toolbar.ts b/src/ui/layouts/toolbar.ts index c3a98ab..b03afd4 100644 --- a/src/ui/layouts/toolbar.ts +++ b/src/ui/layouts/toolbar.ts @@ -50,6 +50,7 @@ export function drawToolbar(ui: UiContext, state: EditorState): void { ['brush', 'Brush'], ['water', 'Water'], ['river', 'River'], + ['light', 'Light'], ]; for (let i = 0; i < tools.length; i++) { const [tid, lbl] = tools[i]; diff --git a/src/world-sync/sync.ts b/src/world-sync/sync.ts index c9d061e..7fb174d 100644 --- a/src/world-sync/sync.ts +++ b/src/world-sync/sync.ts @@ -26,7 +26,7 @@ import { setFog } from 'bloom/core'; import { trsToMat4 } from 'bloom/world'; import { buildHeightmapMesh } from 'bloom/world'; import { expandPrefab, PrefabLeaf, createPrefabRegistry, registerPrefab, PrefabRegistry } from 'bloom/world'; -import { spawnWaterVolume, spawnRiver } from 'bloom/world'; +import { spawnWaterVolume, spawnRiver, applyWorldLights } from 'bloom/world'; import { EntityData, Vec3Lit, Mat4Lit } from 'bloom/world'; import { EditorState, bindEntity, unbindEntity, handleOfEntity, @@ -369,6 +369,11 @@ function syncEnvironment(state: EditorState): void { env.sunIntensity, ); + // The world's point lights, re-submitted for the same reason as the sun: the + // renderer clears its lighting block every frame. This is what lets the editor + // preview a world's lighting rather than guessing at it. + applyWorldLights(state.world); + // The engine's fog is exponential height fog while the schema stores a // linear start/end pair — approximate with a density that reaches ~95% // extinction at fogEnd, near-uniform over height.